Changes between Version 16 and Version 17 of Tutorials/m0SDN/aHowTo


Ignore:
Timestamp:
Aug 27, 2009, 4:49:14 PM (15 years ago)
Author:
akoshibe
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Tutorials/m0SDN/aHowTo

    v16 v17  
    33covers the following:
    44 * The network topology of the testbed
    5  * The !OpenFlow components of the testbed
    65 * Installation of the !OpenFlow Reference System and NOX
     6 * Operating the controller
    77 * Performance analysis tools
    88
     
    1818
    1919=== The Testbed ===
    20 Sandbox 9 consists of three nodes connected to the SB9 Console through a !OpenFlow enabled gigabit switch. The network topology is shown below:
     20Sandbox 9 consists of eight nodes (currently three are available) connected to the SB9 Console through a !OpenFlow enabled gigabit switch. The network topology is shown below:
    2121[[BR]]
    2222[[BR]]
    2323[[Image(wiki:Documentation/OpenFlow/OFHowTo:OFSetup.jpg, 450)]] 
    2424
    25 The dotted box (labeled sw_sb09) represents the !OpenFlow enabled NEC IP8800/S3640-48T2XW switch, currently running firmware supporting !OpenFlow v0.8.9. The switch is pre-configured so that ports 25-36 (the data VLAN, in red) is an !OpenFlow virtual switch that listens for a controller running on the SB9 Console. There exists a virtual connection between the controller and virtual switch, represented by the dotted red line. Two trunked connections exist - one connects the setup with the ORBIT network (through sw_sb_top), and  the other not only allows the console to communicate with the nodes, but also provides the secure controller-switch VLAN needed for the !OpenFlow setup. The experimenter would be able to monitor and manipulate the setup from the Console.         
     25The dotted box (labeled sw_sb09) represents the !OpenFlow enabled NEC IP8800/S3640-48T2XW switch, currently running firmware supporting !OpenFlow v0.8.9. The switch is pre-configured so that ports 25-36 (the data VLAN, in red) is an !OpenFlow virtual switch that listens for a controller running on the SB9 Console. There exists a virtual connection between the controller and virtual switch, represented by the dotted red line. Two trunked connections exist on the sw_sb09 - one connects the setup with the ORBIT network (through sw_sb_top), and  the other not only allows the console to communicate with the nodes, but also provides the secure controller-switch VLAN needed for the !OpenFlow setup. The experimenter would be able to monitor and manipulate the setup from the Console.         
    2626
    2727----
    28 == The Console ==
    29 We can run the controller on the console or on one of the nodes as they each can have equal access the the openflow controling vlan.
    30 
    31 === Installing the controller (on a node) ===
    32 
    33 Two distinct controllers, one from the !OpenFlow reference System (v0.8.9r2) and another from NOX-core (v0.5.0), have been successfully installed and tested on the Console. These can be downloaded from the following places:
     28== The Controller ==
     29We can run the controller on the Console or on one of the nodes as they each can have equal access the the !OpenFlow Control VLAN. Two distinct controllers, one from the !OpenFlow reference System (v0.8.9r2) and another from NOX-core (v0.5.0), have been successfully installed and tested on the Console. These may be installed in your userspace if you wish to run one of these controllers from the Console. 
     30
     31=== Installing the controller on a node ===
     32The software can be downloaded from the following places:
    3433
    3534 * !OpenFlow reference system: http://www.openflowswitch.org/wp/downloads/
     
    4342}}}
    4443
    45 === Installing the !OpenFlow Reference System ===
     44==== Installing the !OpenFlow Reference System ====
    4645While presented, it is not recommended to install from tarball.
    4746The detailed instructions may be found here: http://www.openflowswitch.org/wp/getstarted/
     
    7069}}}
    7170
    72 === Installing NOX (on a node) ===
     71==== Installing NOX  ====
    7372It is not only recommended but also much simpler to use git to install NOX. Therefore the following instructions assume you are using git. The full instructions are found at noxrepo.org:  http://noxrepo.org/manual/installation.html [[BR]]
    7473
     
    8382 * SQLite 3 development files (libsqlite3-dev)
    8483 * Simple JSON for Python (python-simplejson)
     84Note, this is with respect to the Console, not the node - you may need to install additional packages before NOX can be installed properly.
    8585
    8686If all dependencies are taken care of, NOX will install with the following steps.
    8787{{{
    88 cd
    8988git clone git://noxrepo.org/noxcore
    9089cd noxcore/
     
    10099== Controllers on the Console ==
    101100
    102 A sub-set of these instructions can be used to install a "custom" controller in userspace on the console. Most of the requsite libraries should already be installed.
    103 
    104 ''TODO'' list subset.
     101A sub-set of these instructions can be used to install a "custom" controller in userspace on the console. Most of the requisite libraries should already be installed. Use the following commands to install the Reference system in your userspace:
     102
     103'''for the !OpenFlow Reference System :'''[[BR]]
     104{{{
     105cd
     106git clone http://openflowswitch.org/openflow
     107cd openflow
     108./boot.sh
     109./configure --with-l26=/lib/modules/`uname -r`/build
     110make
     111make install
     112}}}
     113
     114'''for NOX :'''[[BR]]
     115{{{
     116cd
     117git clone git://noxrepo.org/noxcore
     118cd noxcore/
     119./boot.sh
     120mkdir build/
     121cd build/
     122../configure --with-python=yes
     123make
     124make check
     125}}}
     126
    105127
    106128=== Starting the controller ===
     
    115137`ptcp:6633` refers to a passive connection to TCP 6633, the default !OpenFlow port. An active connection method using standard TCP exists, however this does not work on this setup. In the !OpenFlow reference system, a log of the verbose output can be saved by appending `--log-file [filename]`.   
    116138
     139[[BR]]
     140[[BR]]
    117141
    118142----
    119143== Available Tools ==
    120144
    121 Some of these tools require root privlages and will thus require a custom installation on a node. Otherse can be run from the console directly in an unprivlaged mode.
    122 
    123 ''TODO'' indicate what credentails are required for each tool.
    124 
    125 === the Wireshark plugin ===
    126 The !OpenFlow Reference system comes with an !OpenFlow wireshark dissector. glib is required for the plugin to work:
     145Some of these tools require root privileges and will thus require a custom installation on a node. Others can be run from the console directly in an unprivileged mode.
     146
     147=== the Wireshark plugin ===
     148The !OpenFlow Reference system comes with an !OpenFlow wireshark dissector.
     149
     150'''Permissions:''' [[BR]]
     151You must be root in order to use Wireshark; Therefore you must install it on a node. [[BR]]
     152
     153'''Prerequisites:''' [[BR]]
     154glib (and of course, wireshark) is required for the plugin to work:
    127155{{{
    128156apt-get install wireshark libgtk2.0-dev
     157}}}
     158
     159'''Installation:'''[[BR]]
     160The patch is located under the utilities directory:
     161{{{
    129162cd utilities/wireshark_dissectors/openflow
    130163make
    131164sudo make install
    132165}}} 
     166
     167'''Usage:'''[[BR]]
     168To use wireshark, you need to do some X11 tunneling. To do this, add the -X option when using SSH to access the Console and the nodes.   
     169
    133170tcpdump pcap files can also be opened using wireshark - once the plugin has been installed, !OpenFlow packets can be interpreted from these files as well. 
    134171
    135172=== Iperf ===
    136173For performance testing, you may want to run some bandwidth tests. iperf is a tool that measures maximum network performance using TCP for throughput and UDP for jitter and datagram loss. The standard image used for the Sandbox nodes when booted with command `omf tell on` comes with iperf. To take measurements, you need at least two nodes. One node becomes the server, the other(s), clients.
     174
     175'''Permissions:''' [[BR]]
     176Iperf does not require root access.
     177
     178'''Usage:'''[[BR]]
     179Initially, eth0 (the !OpenFlow interface for the nodes) will be disabled. Additionally, there is no DHCP service on that VLAN - you need to enable the interface and statically set the IP address (i.e. using ifconfig). 192.168.x.y is the block associated with the !OpenFlow VLAN. 
    137180
    138181To start the server:
     
    144187iperf -c 192.168.x.y
    145188}}}
    146 192.168.x.y is the IP address block associated with the !OpenFlow VLAN. When setting the node IP addresses (i.e. using ifconfig), x.y should be made unique to each node. A caveat is that iperf cannot take real-time bandwidth measurements. Real-time bandwidth use can be monitored using BWM-ng.
    147 
     189
     190Where 192.168.x.y is the IP address of the iperf server. A caveat is that iperf cannot take real-time bandwidth measurements. Real-time bandwidth use can be monitored using BWM-ng.
     191
     192'''On the Console'''[[BR]]
     193Iperf is also installed on the Console. The interfaces available on the Console are the following:
     194 * eth1 - 192.168.100.28
     195 * eth1.27 / Control - 10.19.0.10
     196 * eth1.28 / OF virtual switch - 192.168.1.28
     197 * eth1.100 / OFP interface - 172.16.100.1
     198 
    148199=== BWM-ng ===
    149 By default, the tool will monitor all interfaces on the Console. To monitor just the !OpenFlow interface, you must specify `eth1.100`. To output this to a csv, use the following command (-t specifies a sampling rate of 1000 msec, or 1 sample/sec):
    150 
     200BWM-ng is a tool capable of taking real-time throughput measurements of different interfaces of a host. 
     201
     202'''Permissions:''' [[BR]]
     203BWM-ng does not require root access, and is installed on the Console. 
     204
     205'''Usage:'''[[BR]]
     206By default, the tool will monitor all interfaces on the Console. To monitor just the !OpenFlow interface, you must specify `eth1.100`. To output this to a csv, use the following command:
    151207{{{
    152208bwm-ng -I eth1.100 -o csv -t 1000 -F <file-name>
    153209}}} 
    154 
     210 * -I : interface
     211 * -o : output, either in csv or html
     212 * -t : specifies sampling rate in msec. Here, it is 1000 msec, or 1 sample/sec
     213 * -F : Filename of output
     214
     215'''Installation on a node'''[[BR]]
     216The following command will install BWM-ng:
     217{{{
     218apt-get install bwm-ng
     219}}}
     220
     221----
    155222=== Development ===
    156223The files defining !OpenFlow Protocol can be found in the following locations: