Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

UPDATE: SPRING-OPEN has not been supported since 2016. Please refer to docs.trellisfabric.org for a similar offering. Links on this page may no longer work


SPRING-OPEN is not built on the latest version of ONOS (Avocet). It is built on the previous (internal) release of ONOS (Sept 2014). The source code for this project is available from the url below. To try out the prototype, you will need this version of ONOS, and you will also need the CLI that works with this version of the controller. For the switches, you have the choice of using software or hardware segment-routers. The software routers are built from a version of the CPqD OF 1.3 software switch. The hardware routers are built with Dell 4810 switches.

To get started we recommend downloading the pre-built VM from the link below. This VM has the specific version of ONOS (and its dependencies), the specific CLI, and the specific version of the CPqD OF1.3 software switch required for this project. It includes the Mininet network emulator required to run the software switches in a network topology of your choice. It also includes the recommended Wireshark dissector for OF1.3.4 protocol messages from the loxigen project.

If you do not wish to use this pre-built VM, you can download from source, and follow the installation directions below.

...

Note that ONOS needs to be configured to run a segment routed network. See Configuring ONOS (spring-open) for more details.

To stop the controller 

...

Code Block
languagetext
sudo apt-get install unzip python-dev python-virtualenv \
git openjdk-7-jdk ant build-essential

Download the source code

...

Code Block
languagetext
cd spring-open-cli
./setup.sh
make

To run the CLI, make sure you have the latest code. From the spring-open-cli folder

Code Block
$ git pull
$ source ./workspace/ve/bin/activate
(ve)$ sudo make start-sdncon
(ve)$ cd cli/
(ve)$ ./cli.py
version200
default controller: 127.0.0.1:8000, SDN OS 1.0 - custom version
> enable
#

...

Code Block
./cli.py --controller <ip-addr-of-controller-host>:<port>

...


To see what you can do with the CLI, consider the Using the CLI section of the User Guide. You could also watch the Prototype demo videos which make heavy use of the CLI.

...

  • We needed the software switch to support the TTP - part of the TTP required the use of an OpenFlow feature called 'group-chaining', where one group points to another group which in turn could point to a third group or an outgoing-port. Support for this feature is optional as per the OF 1.3.4 specification. OVS v2.3.0 does not support this optional feature. The CPqD switch does.
  • Performance of the software switch dataplane (eg. packets switched per second) was not an issue for us in this project. The job of the software switch was to help in controller development for which switching performance is not critical. OVS is a production quality switch; CPqD is not. But this did not matter as ultimately we work on hardware switches which forwards packets at wire-speed.
  • Because of the tight timelines in this project, if we found bugs in the switch, we wanted to quickly fix the bugs ourselves instead of depending on a third party to fix the bugs for us. The CPqD switch is a simpler switch than OVS and so its easier to fix bugs.

 


Having said that, we do have to jump through some hoops to get the switch to work from source. Again this is only necessary if you did not download the pre-built VM above (the VM has the CPqD switch ready to run).

 


  1. Download the source code. If you already have Mininet installed in your system, run the following script - it will download the CPqD software switch and try to install it.

    Code Block
    mininet/util/install.sh -3f
  2. Or you can download from the CPqD github repo. Check if you can compile it. It may fail ... 

    Code Block
    git clone https://github.com/CPqD/ofsoftswitch13.git
    cd ~/ofsoftswitch13
    ./boot.sh
    ./configure
    make
    sudo make install
  3. If your compile step failed go to this page fix this issue. Once you can successfully compile, go to the next step.

     


  4. Once the switch compiles, we are unfortunately not done yet. There are some bugs in the switch, which we have fixed. So we need to patch the code with these fixes. Why patch? Why did we not just submit our fixes upstream so everyone can benefit from our fixes? Well the answer is that while we have made fixes, we have made them in a hacky way - we have taken shortcuts just to make things work and move on because of the tight deadlines in this project. Hopefully these issues will be fixed in a clean way by the switch maintainers. For now, we need to patch the code. To start with we need to go back to the specific checkin on which the patch applies. In the ofsoftswitch13 folder, enter

    Code Block
    languagetext
    git checkout -b cpqd-spring 36738aeb3501f66fb382e7b59138c88e8843b19c
  5. Now when you do 'git log' you should see this

    Code Block
    mininet@mininet-vm:~/ofsoftswitch13$ git log
    
    commit 36738aeb3501f66fb382e7b59138c88e8843b19c
    Author: Jean Tourrilhes <jean.tourrilhes@hp.com>
    Date:   Mon Aug 25 17:00:13 2014 -0700
    
        Fix a few more warnings.
    
    commit bd8e7b68951c5ef2293d0a0e45c89b265a2eba17
    Author: Jean Tourrilhes <jean.tourrilhes@hp.com>
    Date:   Mon Aug 25 16:50:09 2014 -0700
    
    
        Finish reverting EXT-192/EXT-276 Role Status (1.4 feature).
    
    ...
    
    
  6. Download the following patch: patchfile-cpqd

    You can apply the patch with the command

    Code Block
    languagetext
    patch -p0 < patchfile-cpqd 
  7. Now if you do 'git status', you should see something like

    Code Block
    mininet@mininet-vm:~/ofsoftswitch13$ git status
    On branch cpqd-spring
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
    
    	modified:   oflib/oxm-match.c
    	modified:   secchan/port-watcher.c
    
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
    	.deps/
    	patchfile
    	utilities/ofp-read
    	utilities/ofp-read.o
    
    no changes added to commit (use "git add" and/or "git commit -a")
    mininet@mininet-vm:~/ofsoftswitch13$ 
  8. Finally, compile again

    Code Block
    mininet@mininet-vm:~/ofsoftswitch13$ make
    mininet@mininet-vm:~/ofsoftswitch13$ sudo make install

Now you are ready to use the switch in Mininet. See Configuring CPqD Software Switches.