OpenFlowMPLS NetFPGA Switch

From OpenFlow Wiki

Jump to: navigation, search

This page is no longer maintained. For up to date information on the OpenFlow MPLS Extension, please visit the main page and the pages linked from there: OpenFlowMPLS.

Contents

NetFPGA implemenattion

We modified the Openflow NetFPGA implementation to support MPLS. This is based on OpenFlow v0.89. The modified Verilog code and bitfiles for NetFPGA can be obtained from the project's NetFPGA wiki page

We also modified the kernel space switch to support MPLS in NetFPGA by changing the hardware table (hwtable_nf2 directory) and several of the files in the datapath directory. The code can be Downloaded from here.


Note that this code can be used for both the kernel space software switch as well as when running the openflow-mpls switch on NetFPGA.

For more information about the NetFPGA design and its limitations, please see the NetPGA wiki page for this project here

Download

Bitfile and Verilog code: NetFPGA wiki

Kernel Module: here (21/05/2010)

Running The Code

Please follow these steps:

0 - Download the Verilog code and the bit file for the NetFPGA design from netFPGA wiki page. Or you can just download the bit file from this link. Download the kernel module code from here.

1- Make the OpenFlow-MPLS Kernel module like the normal OpenFlow kernel module (e.g. as described here)

Actually the easiest thing to do for this step is the following for linux-2.6.x

a) unpack openflow-mpls.tgz that you downloaded above b) cd into the directory c) ./configure --with-l26=/lib/modules/`uname -r`/build --enable-hw-tables=nf2 d) make e) make install

2- Load the bitfile into the NetFPGA

  sudo nf2_download openflow_MPLS_switch2.bit

3- insmode the openflow kernel module and the hardware table from datapath/linux-2.6/

  sudo /sbin/insmod openflow_mod.ko
  sudo /sbin/insmod hwtable_nf2_mod.ko

4- setup the openflow switch with 4 ports (nf2cX ports) on the machine using dptcl. a sample script can be found at utilities/setup.sh.

Make sure that you have at least a two port NIC in the host, and nf2c0 connected to eth1, and nf2c1 connected to eth2.

5- run controller from the controller directory:

  sudo ./controller -v ptcp:2525

6- run secchan from the secchan directory

  sudo ./secchan --fail=closed nl:0 tcp:hostaddr:2525

correction: might want to replace hostaddr with "localhost" if you are running everything on one box?

7- now the controller will ask for its input fib file. provide a file like simple_nf2.xml from the controller directory.


8- Now the controller has loaded the NetFPGA with entries (Flow table and Virtual port table entries) to do the actions specified at the fib xml file. You can generate MPLS packets using a simple program available at utilities/mpls_pkt_gen.

Contact

For questions and comments, please contact me (Peyman Kazemian): kazemian at stanford.edu