14
APNIC SDN Workshop Lab 1 ©APNIC Created: 4 Sept 2017 Updated: 13 July 2018 OpenFlow Configuration Lab Objective: As part of this hands-on module, you will configure a standalone OpenFlow network using Mininet and analyse the flow entries created by the inbuilt controller. Next, you will configure the Mininet network to use an external OpenDayLight (ODL) controller - observe the exchange of OF messages between the contoller and the virtual switches, along with new flows being added into the flow table. The following base topology will be used for Part-1. Note that the IP addresses are examples only. When working on your lab, use the actual IP addresses of your VMs (or as indicated by your instructors). For the purpose of this guide, we use the IP address of 192.168.1.X to refer to the Mininet VM.

OpenFlow Configuration Lab · • To log out of OpenDaylight (for your information only): opendaylight-user@root> system:shutdown 6. Build a Mininet network using the OpenDaylight

  • Upload
    others

  • View
    18

  • Download
    0

Embed Size (px)

Citation preview

Page 1: OpenFlow Configuration Lab · • To log out of OpenDaylight (for your information only): opendaylight-user@root> system:shutdown 6. Build a Mininet network using the OpenDaylight

APNIC SDN Workshop Lab

1

©APNIC Created: 4 Sept 2017 Updated: 13 July 2018

OpenFlow Configuration Lab

Objective: As part of this hands-on module, you will configure a standalone OpenFlow network using Mininet and analyse the flow entries created by the inbuilt controller. Next, you will configure the Mininet network to use an external OpenDayLight (ODL) controller - observe the exchange of OF messages between the contoller and the virtual switches, along with new flows being added into the flow table. The following base topology will be used for Part-1. Note that the IP addresses are examples only. When working on your lab, use the actual IP addresses of your VMs (or as indicated by your instructors). For the purpose of this guide, we use the IP address of 192.168.1.X to refer to the Mininet VM.

Page 2: OpenFlow Configuration Lab · • To log out of OpenDaylight (for your information only): opendaylight-user@root> system:shutdown 6. Build a Mininet network using the OpenDaylight

Monday, July 16, 2018

2

For Part-2, the following topology will be used. For the purpose of this guide, we use the IP address of `192.168.1.X` to refer to the Mininet VM and the IP address of `192.168.1.Y` to refer to the OpenDayLight VM.

Lab Notes As a minimum, we recommend the following hardware specifications:

• Intel i5 or i7 processor • 6GB of RAM • 25GB of free hard disk space

Basic steps:

1. Install VirtualBox 2. Install Wireshark 3. Import and configure Mininet VM to VirtualBox 4. Build and test a simple standalone Mininet network 5. Import ODL VM to VirtualBox 6. Build and test a simple Mininet network using an external ODL controller.

Page 3: OpenFlow Configuration Lab · • To log out of OpenDaylight (for your information only): opendaylight-user@root> system:shutdown 6. Build a Mininet network using the OpenDaylight

APNIC SDN Workshop Lab

3

©APNIC Created: 4 Sept 2017 Updated: 13 July 2018

Lab Exercise 1. Install VirtualBox

Installation steps: • Either, download the appropriate install package for your operating system from:

https://www.virtualbox.org/wiki/Downloads, OR

• Use the supplied installer to install using default parameters.

2. Install Wireshark

Installation steps: • Either, download the appropriate install package for your operating system from:

https://www.wireshark.org/download.html OR

• Use the supplied installer to install using default parameters.

3. Import (and configure) Mininet VM on VirtualBox

• Download Mininet VM In order to save time, your instructor will provide you a mininet OVA virtual appliance locally to create an Ubuntu virtual machine on VirtualBox. Simply double-click the file mininet.ova to import it into VirtualBox. Ensure that you select the option to re-initialise all MAC addresses.

• Network settings of the Mininet VM Within VirtualBox, go into the Settings for the VM and ensure that the first network adapter is attached to ‘Bridged Adapter’ as shown below (the interface name depends on your host OS; the following is an example on OS X):

Page 4: OpenFlow Configuration Lab · • To log out of OpenDaylight (for your information only): opendaylight-user@root> system:shutdown 6. Build a Mininet network using the OpenDaylight

Monday, July 16, 2018

4

• Start the Mininet VM from VirtualBox Log in using the following credentials:

Username: mininet Password: mininet

• Check the IP address configuration of the Mininet VM: mininet@mininet-vm:~$ ip addr show Verify that the interface eth0 has been assigned an address from the same range as your host machine (LAN) interface.

• SSH to the Mininet virtual machine:

ssh [email protected]

Page 5: OpenFlow Configuration Lab · • To log out of OpenDaylight (for your information only): opendaylight-user@root> system:shutdown 6. Build a Mininet network using the OpenDaylight

APNIC SDN Workshop Lab

5

©APNIC Created: 4 Sept 2017 Updated: 13 July 2018

4. Build a standalone Mininet network

• Create a simple network on the Mininet VM: mininet@mininet-vm:~$ sudo mn --mac --controller="none" The above command creates a network with:   1 switch, s1   2 hosts, h1 and h2   h1 eth0 connected to s1 eth0   h2 eth0 connected to s1 eth1   no OpenFlow controller

The above command will put you into the Mininet shell: mininet>

• Try the following commands in the Mininet CLI to get an understanding of the network:

mininet> nodes mininet> net mininet> dump

• Attempt pings between the hosts mininet> h1 ping h2 mininet> h2 ping h1 Do the pings succeed? Why?

• Check the flow table of the switch: mininet> dpctl dump-flows Can you explain what you see?

h2h1

s1eth0

eth0 eth1

eth0

Page 6: OpenFlow Configuration Lab · • To log out of OpenDaylight (for your information only): opendaylight-user@root> system:shutdown 6. Build a Mininet network using the OpenDaylight

Monday, July 16, 2018

6

• Exit the Mininet CLI:

mininet> exit

• Create another simple network on the Mininet VM but this time use the default controller. mininet@mininet-vm:~$ sudo mn --mac The above command creates a network with:   1 switch, s1   2 hosts, h1 and h2   h1 eth0 connected to s1 eth0   h2 eth0 connected to s1 eth1   the default OpenFlow controller for Mininet

The above command will put you back into the Mininet shell: mininet>

• Try the following commands in the Mininet CLI to get an understanding of the network:

mininet> nodes mininet> net mininet> dump

• Check the flow table of the switch:

mininet> dpctl dump-flows Can you explain what you see?

h2h1

s1eth0

eth0 eth1

eth0

Controller, c0

Page 7: OpenFlow Configuration Lab · • To log out of OpenDaylight (for your information only): opendaylight-user@root> system:shutdown 6. Build a Mininet network using the OpenDaylight

APNIC SDN Workshop Lab

7

©APNIC Created: 4 Sept 2017 Updated: 13 July 2018

• Attempt pings between the hosts mininet> h1 ping h2 mininet> h2 ping h1 Do the pings succeed? Why?

• Check the flow table of the switch again:

mininet> dpctl dump-flows What do you see now? Analyse the entries in the table.

• Wait for the flows to timeout (until the output of the following command is again empty)

mininet> dpctl dump-flows

• Enable snooping to see the message flow between the switch and controller.

mininet> dpctl snoop &

• Wait for the flows to timeout (until the output of the following command is again empty)

mininet> dpctl dump-flows

• Check the flow table again.

mininet> dpctl dump-flows What do you see now?

• Ping between the hosts again

mininet> h1 ping h2 mininet> h2 ping h1

• Check the flow table now. mininet> dpctl dump-flows What do you see now?

• Exit from the Mininet CLI:

mininet> exit

Page 8: OpenFlow Configuration Lab · • To log out of OpenDaylight (for your information only): opendaylight-user@root> system:shutdown 6. Build a Mininet network using the OpenDaylight

Monday, July 16, 2018

8

5. Install and configure OpenDayLight on Ubuntu VM ** For those who want to download and compile your own ODL in Ubuntu VM, follow the following, else jump to next step. Installation and configuration steps: • Verify the network settings of the ubuntu-odl VM

Within VirtualBox, go into the Settings for the VM and ensure that the first network adapter is attached to ‘Bridged Adapter’ as shown below (the interface name depends on your host OS; the following is an example on OS X):

  Adapter 1:

• Start the Ubuntu virtual machine from VirtualBox

• Log in using the following credentials:

  Username: apnic   Password: apnic

• Verify the version of Ubuntu:

apnic@ubuntu:~$ lsb_release -a

Page 9: OpenFlow Configuration Lab · • To log out of OpenDaylight (for your information only): opendaylight-user@root> system:shutdown 6. Build a Mininet network using the OpenDaylight

APNIC SDN Workshop Lab

9

©APNIC Created: 4 Sept 2017 Updated: 13 July 2018

• Check the IP address configuration of the Ubuntu server:

apnic@ubuntu:~$ ip addr show

There should be a total of 2 interfaces: lo and enp0s3.

Verify that the enp0s3 interface has been assigned an address from the same address range as your LAN interface.

• You may now SSH to the Ubuntu virtual machine:

ssh [email protected]

• Update repositories:

apnic@ubuntu:~$ sudo apt-get update

• Install Java runtime environment:

apnic@ubuntu:~$ sudo apt-get install default-jre-headless Set the JAVA_HOME environment variable

apnic@ubuntu:~$ vi ~/.bashrc Add the following line:

JAVA_HOME=/usr/lib/jvm/default-java Run the file:

apnic@ubuntu:~$ source ~/.bashrc

apnic@ubuntu:~$ ip addr show1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft foreverinet6 ::1/128 scope host

valid_lft forever preferred_lft forever2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_faststate UP group default qlen 1000

link/ether 08:00:27:10:d9:e9 brd ff:ff:ff:ff:ff:ffinet 61.45.252.20/24 brd 61.45.252.255 scope global enp0s3

valid_lft forever preferred_lft foreverinet6 fe80::a00:27ff:fe43:9b6e/64 scope link

valid_lft forever preferred_lft foreverapnic@ubuntu :~$

Page 10: OpenFlow Configuration Lab · • To log out of OpenDaylight (for your information only): opendaylight-user@root> system:shutdown 6. Build a Mininet network using the OpenDaylight

Monday, July 16, 2018

10

• Download and install OpenDaylight:

Downlight OpenDaylight Boron-SR4 (it may be easier to do a web search for ‘OpenDaylight download’ and then copy the download link from there):

apnic@ubuntu:~$ wget https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.5.4-Boron-SR4/distribution-karaf-0.5.4-Boron-SR4.tar.gz

Extract the tar file: apnic@ubuntu:~$ tar xvf distribution-karaf-0.5.4-Boron-SR4.tar.gz

A new directory distribution-karaf-0.5.4-Boron-SR4 will be created in the current directory. Note that Opendaylight uses Apache Karaf technology (http://karaf.apache.org) which allows the entire distribution to be contained in a single folder.

OR In order to save time, your instructor will provide you a ubuntu-odl.ova (precompiled ODL) virtual appliance.

Simply double-click the file ubuntu-odl.ova and import it into VirtualBox. Ensure that you select the option to re-initialise all MAC addresses. ** Note that OpenDayLight uses Apache Karaf technology (http://karaf.apache.org/) which allows the entire distribution to be contained in a single folder.

• Run OpenDaylight: apnic@ubuntu:~$ cd distribution-karaf-0.5.4-Boron-SR4

apnic@ubuntu:~$ ./bin/karaf

The above command will take you to the OpenDayLight shell as shown below:

Page 11: OpenFlow Configuration Lab · • To log out of OpenDaylight (for your information only): opendaylight-user@root> system:shutdown 6. Build a Mininet network using the OpenDaylight

APNIC SDN Workshop Lab

11

©APNIC Created: 4 Sept 2017 Updated: 13 July 2018

• Open the OpenDayLight GUI. Browse to the following URL on any browser (use your IP address in place of Y):

http://192.168.1.y:8181/index.html

Login using the following credentials: Username: admin Password: admin

• To log out of OpenDaylight (for your information only):

opendaylight-user@root> system:shutdown

6. Build a Mininet network using the OpenDaylight OpenFlow controller

For this part of the lab, you will need to work with a partner to capture packets/messages exchanged between the ODL controller and the mininet switch.

Page 12: OpenFlow Configuration Lab · • To log out of OpenDaylight (for your information only): opendaylight-user@root> system:shutdown 6. Build a Mininet network using the OpenDaylight

Monday, July 16, 2018

12

One of you will use your Mininet setup while the other will use their ODL setup - connect a Mininet network running on one machine to an ODL controller running on another physical machine.

Installation and configuration steps: • Start Wireshark and select interface corresponding to your LAN or WiFi interface to capture • Create a display filter within Wireshark for openflow_v4 • Create a simple network on the Mininet VM that connects to the ODL controller (replace Y

with the controller VM address): mininet@mininet-vm:~$ sudo mn --mac

--controller=remote,ip=192.168.1.y,port=6633 --switch ovs,protocols=OpenFlow13

The above command creates a network with:

o 1 switch, s1 o 2 hosts, h1 and h2 o h1 eth0 connected to s1 eth0 o h2 eth0 connected to s1 eth1 o Remote OpenFlow controller @192.168.1.y

Page 13: OpenFlow Configuration Lab · • To log out of OpenDaylight (for your information only): opendaylight-user@root> system:shutdown 6. Build a Mininet network using the OpenDaylight

APNIC SDN Workshop Lab

13

©APNIC Created: 4 Sept 2017 Updated: 13 July 2018

The above command will put you into the mininet CLI: mininet>

• Check the flow table of the switch:

mininet> dpctl dump-flows --protocols=OpenFlow13 Can you explain what you see? • Open the OpenDayLight GUI to view the topology

http://192.168.1.y:8181/index.html (use your IP address in place of Y)

• At this point, stop the Wireshark capture and analyse the OpenFlow messages that have

been sniffed. In particular, attempt to relate the FLOW_MOD messages with the contents of the flow table that you displayed earlier (refer the slides where necessary).

• Re-start the Wireshark capture.

• Attempt pinging between h1 and h2

mininet> h1 ping h2

Do the pings succeed? Why? • Check the flow table of the switch again:

mininet> dpctl dump-flows

What do you see now? Analyse the entries in the table.

• Open up OpenDayLight GUI again:

h2h1

s1eth0

eth0 eth1

eth0

OpenDaylightcontroller, c0

Attendee2

Attendee1

Page 14: OpenFlow Configuration Lab · • To log out of OpenDaylight (for your information only): opendaylight-user@root> system:shutdown 6. Build a Mininet network using the OpenDaylight

Monday, July 16, 2018

14

http://192.168.1.y:8181/index.html

Reload the topology. Has anything changed?

• At this point, stop the Wireshark capture and analyse the OpenFlow messages that have

been sniffed. In particular, pay attention to the Packet-In and Flow_Mod messages.

• Exit from the Mininet CLI:

mininet> exit • If time permits, repeat the above steps for the following topologies:

sudo mn --mac --topo=tree,3 --controller=remote,ip=192.168.1.y,port=6633 --switch ovs,protocols=OpenFlow13

sudo mn --mac --topo=linear,4 --controller=remote,ip=192.168.1.y,port=6633 --switch ovs,protocols=OpenFlow13