Changes between Version 6 and Version 7 of Tutorials/m0SDN/aHowTo


Ignore:
Timestamp:
Aug 13, 2009, 11:48:31 PM (15 years ago)
Author:
akoshibe
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Tutorials/m0SDN/aHowTo

    v6 v7  
    33
    44
    5 === !OpenFlow Protocol ===
     5== !OpenFlow Protocol ==
    66!OpenFlow is a protocol that allows for the creation of overlay networks over pre-existing network infrastructure. This allows a researcher to run experiments on production networks without the fear of affecting any of the legacy installations or setups, while having control over how data is handled across the network.
    77[[BR]] 
     
    1212
    1313
    14 === The Testbed ===
    15 Sandbox 9 consists of three nodes connected to the SB9 Console through a !OpenFlow enabled switch. The network topology is shown below:
     14== The Testbed ==
     15Sandbox 9 consists of three nodes connected to the SB9 Console through a !OpenFlow enabled switch. The !OpenFlow enabled NEC IP8800/S3640-48T2XW switch currently runs firmware supporting !OpenFlow v0.8.9. The switch is pre-configured so that ports 25-36 (the data VLAN, in green) is an !OpenFlow virtual switch that listens for a controller running on the SB9 Console. The network topology is shown below:
    1616[[BR]]
    1717[[BR]]
    1818[[Image(wiki:Documentation/OpenFlow/OFHowTo:OFSetup.jpg, 450)]] 
     19   
    1920
    20 === The switch ===
    21 One of the centerpieces to the setup is the !OpenFlow enabled NEC IP8800/S3640-48T2XW switch running firmware supporting !OpenFlow v0.8.9. The switch is pre-configured so that ports 25-36 (the data VLAN) is an !OpenFlow virtual switch that listens to a controller running on the Console. The configurations can be altered by using the `setvsi` command in the switch's command-line interface.
    22 The details behind configuring the virtual switch(es) on the IP8800 can be found [wiki:Documentation/OpenFlow/VirtualSwitch here].
    23    
    24 === The Controller ===
    25 ''' Installing the controller ''' [[BR]]
    26 The !OpenFlow reference System (v0.8.9r2) and NOX-core (v0.5.0) have been successfully installed and tested on the Console. These can be downloaded from the following places:
     21== Installing the controller ==
     22Two 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:
    2723
    2824 * !OpenFlow reference system: http://www.openflowswitch.org/wp/downloads/
     
    3127The former is a simple implementation that comes with a few tests; latter is a full-blown network operating system/ development tool that comes with a Network API that can be used to write and develop your own controller in C++ or Python.
    3228
    33 ''' Starting the controller ''' [[BR]]
     29Both can also be installed using Git. Git can be installed with the following command:   
     30{{{
     31apt-get install git-core   
     32}}}
     33
     34=== Installing the !OpenFlow Reference System ===
     35While presented, it is not recommended to install from tarball.
     36The detailed instructions may be found here: http://www.openflowswitch.org/wp/getstarted/
     37
     381. Download software and required packages. If using git:
     39{{{
     40sudo apt-get install git-core automake m4 pkg-config libtool
     41git clone http://openflowswitch.org/openflow
     42cd openflow
     43./boot.sh
     44}}}
     45if installing from tarball:
     46{{{
     47mkdir openflow
     48cd openflow
     49wget http://openflowswitch.org/downloads/openflow-0.9.0.tar.gz
     50tar xzf openflow-0.9.0.tar.gz
     51cd openflow-0.9.0
     52sudo apt-get install gcc linux-headers-`uname -r`
     53}}}
     542. Make and install.
     55{{{
     56./configure --with-l26=/lib/modules/`uname -r`/build
     57make
     58make install
     59}}}
     60
     61=== Installing NOX  ===
     62It 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]]
     63
     64''' Dependencies ''' [[BR]]
     65NOX requires the following packages to be installed on the Console:
     66 * GNU Libtool (libtool)
     67 * Boost C++ libraries (libboost1.35-dev)
     68 * Apache HTTP Server (apache2)
     69 * Xerces C++ parser (libxerces-c28)
     70 * Xerces development files (libxerces-c2-dev)
     71 * SSL development libraries (libssl-dev)
     72 * SQLite 3 development files (libsqlite3-dev)
     73 * Simple JSON for Python (python-simplejson)
     74
     75If all dependencies are taken care of, NOX will install with the following steps.
     76{{{
     77cd
     78git clone git://noxrepo.org/noxcore
     79cd noxcore/
     80./boot.sh
     81mkdir build/
     82cd build/
     83../configure --with-python=yes
     84make
     85make check
     86}}}
     87
     88== Starting the controller ==
    3489Both commands start the controller and establish a connection with the !OpenFlow switch. The -v is for verbose. -h for both will give you the help files for the controllers. In the reference system, the controller is found under .../openflow/controller/
    3590{{{
     
    4196}}}
    4297
     98=== Development ===
     99The files defining !OpenFlow Protocol can be found in the following locations:
     100 * !OpenFlow reference system:  openflow/include/openflow/openflow.h
     101 * NOX: noxcore/src/include/openflow.hh
    43102
    44 
    45 
     103In addition, NOX provides a [http://noxrepo.org/manual/app.html Web API] that allows you to do development in C++ or Python.
    46104