0% found this document useful (0 votes)
104 views

Mininet and Openflow Labs

This document provides instructions for several labs using Mininet and OpenFlow: 1. The first lab walks through using Mininet to understand its basic functions and customize topologies. 2. The second lab uses the dpctl command to manually configure OpenFlow switches without a controller by adding and removing flows. 3. The third lab introduces using the POX controller to dynamically configure switches by connecting to them and sending OpenFlow messages when hosts communicate.

Uploaded by

phuongct
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
104 views

Mininet and Openflow Labs

This document provides instructions for several labs using Mininet and OpenFlow: 1. The first lab walks through using Mininet to understand its basic functions and customize topologies. 2. The second lab uses the dpctl command to manually configure OpenFlow switches without a controller by adding and removing flows. 3. The third lab introduces using the POX controller to dynamically configure switches by connecting to them and sending OpenFlow messages when hosts communicate.

Uploaded by

phuongct
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 13

Mininet and Openflow Labs

Install Mininet (do not do this in class)


• Download VirtualBox
• Download Xming for windows (X11)
• Download Mininet VM for linux-ubuntu
• Start VirtualBox
• Create a new VM for linux-ubuntu and the Mininet VM as the disk
image
• Start the VM
• Set network device forwarding 127.0.0.1:2222 to virtual machine
port 22.
– This allows you to ssh to 127.0.0.1:2222 to login to the Mininet VM
• Login with mininet:mininet – this is just like any other Linux
machine.
Lab 1: Mininet Walkthrough
• Perform the steps at http://mininet.org/walkthrough
• Objective:
– Understand how to use mininet
– How to run a command on each host
– Learn how to change network parameters in mininet
• Link bandwidth, latency, topology, etc
– Learn how to write python code for new topologies
• Make sure that you understand the custom topology example
Lab 1: Mininet Walkthrough
• Login to crux (enable X11 forwarding).
• crux>ssh mininet@localhost –p 2222 (3333,
4444, …)
• password: mininet
• Follow the walk through.
Lab 2: Manually configure Openflow switches
with dpctl
• Objectives
• Understand how an Openflow switch behaves
• Understand what an Openflow controller supposes to do to enable
communication.

• Dpctl: a command-line utility that sends openflow messages to a switch


• View switch configuration and capability
• View flow table entries
• Add, delete, and modify flow table entries

– Useful tool for learning and debugging


• Human faking an openflow controller
– ‘man dpctl’ for more details
Lab 2: Manually configure Openflow switches
with dpctl
• $ sudo mn --topo single,3 --mac --switch ovsk --controller remote
• This creates a simple host with 3 switches, the mac addresses are assigned in a certain
way, the switch is an Open vSwitch (software OpenFlow switch), controller is supposed to
be at local host with port number 6633.
• Mininet> net
• Mininet> h1 ifconfig
• Mininet> h2 ifconfig
• The switch can be controlled at tcp:127.0.0.1:6634
• Mininet>pingall
• This fails as the switch has nothing in its flow table
– Start another window do ‘man dpctl’ and ‘man ovs-dpctl’
– $ dpctl show tcp:127.0.0.1:6634
• Tcp:127.0.0.1:6634 is the switch port for control
– $dpctl dump-flows tcp:127.0.0.1:6634
• The flow table is empty
Lab 2: Manually configure Openflow switches
with dpctl
• $dpctl add-flow tcp:127.0.0.1:6634 in_port=1,idle_timeout=1000,actions=output:2
• $dpctl add-flow tcp:127.0.0.1:6634 in_port=2,idle_timeout=1000,actions=output:1
• $dpctl dump-flows tcp:127.0.0.1:6634
• Mininet> pingall
• H1 and h2 are now connected.
– $dpctl dump-flows tcp:127.0.0.1:6634
• Check the statistics
– Mininet> s1 dpctl dump-flows tcp:127.0.0.1:6634

– Continue the exercise to completely install flow table for all hosts.
– Try the following:
• $dpctl add-flow tcp:127.0.0.1:6634 dl_dst=0:0:0:0:0:1,idle_timeout=1000,actions=output:1
• $dpctl add-flow tcp:127.0.0.1:6634 dl_dst=0:0:0:0:0:2,idle_timeout=1000,actions=output:2
• $dpctl add-flow tcp:127.0.0.1:6634 dl_dst=0:0:0:0:0:3,idle_timeout=1000,actions=output:3
• $dpctl dump-flows tcp:127.0.0.1:6634
• Mininet> pingall
Lab 2: Manually configure Openflow switches
with dpctl
– Try the following:
– $dpctl add-flow tcp:127.0.0.1:6634 idle_timeout=1000,actions=flood
– Mininet> pingall

• $dpctl add-flow tcp:127.0.0.1:6634 dl_dst=ff:ff:ff:ff:ff:ff,idle_timeout=1000,actions=flood


• Mininet>pingall

• dpctl del-flows tcp:127:0.0.1:6634


• dpctl dump-flows tcp:127.0.0.1:6634
• $dpctl add-flow tcp:127.0.0.1:6634 dl_dst=ff:ff:ff:ff:ff:ff,idle_timeout=1000,actions=flood
• $dpctl add-flow tcp:127.0.0.1:6634 dl_dst=0:0:0:0:0:1,idle_timeout=1000,actions=output:1
• Mininet>pingall
• how to make the ping successful for one pair of hosts?
Lab 2: manually setup openflow switches
with dpctl
• Set up a network with the following topology
such that all communication can be realized
between each pair of hosts: using destination
based routing.

h1 h3

s1 s2 s3
h2 h4
Lab 3: a naïve POX controller
• Objectives
– Moving commands from dpctl to a POX controller
– Understand how the POX controller interacts with switches

• POX document
– https://openflow.stanford.edu/display/ONL/POX+Wiki
• See POX controller examples forwarding/hub.py at pox/forwarding/hub.py
– See the flow_mod message that add one flow table entry to flood all packets – turning each connected
switch to a hub.
– To use the controller:
• $ sudo mn --topo linear,4 --mac --switch ovsk --controller remote
– The default controller is at the same machine with port number 6633.
– Different switches are at tcp:127.0.0.1:6634{6635, 6636,…}
• $./pox.py forwarding.hub
– Create a controller running on local machine port 6633, will connect with the openflow switches.
– Pay attention to how the flow table entries are created
– Pay attention to the connectionup event
• $dpctl dump-flows tcp:127.0.01:6634
• $dpctl dump-flows tcp:127.0.01:6635
• Mininet> pingall
Lab3: A naïve POX controller
• See lab3.py and lab3_controller.py
• Put lab3_controller.py under pox/ext
• Run lab3.py with ‘$sudo ./lab3.py’
• Use dpctl to see the flow-table on each switch.

h1 h2

s1 s2 s3

h3
Lab3: A naïve POX controller
• Modify lab3.py and lab3_controller.py to
setup the network with the following topology

H5(10.0.0.5)
H1 (10.0.0.1) H3(10.0.0.3)

s1 s2 s3
H2(10.0.0.2)
H4 (10.0.0.4)
s4

H5(10.0.0.6)
Lab4: Shortest path forwarding
• Try my_lab4.py (‘sudo ./my_lab4.py’)

• Read the code for topology discovery and path calculation in


forwarding/l2_multi.py

• Homework: Write a topology-oblivious code with shortest path


forwarding for the following topology:

h1 h2

s1 s2 s3

h3

You might also like