Versions Compared

Key

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

...

Once the upgrade is done, reload the box. You will of course lose your ssh session. But once it is back, login again to configure the OpenFlow instance.

CPqD Software Switch

A little history: The goal of this project was to demonstrate SDN control of segment routing on switching hardware that exists today. We did that with the Dell 4810 switches. However, during controller development we mostly relied on a software switch that could emulate the Hardware Abstraction Layer that the Dell team was building the FTOS to support. In other words, we needed a software switch that we could put in Mininet, and point to the controller as part of to pretend to be a segment routed network. But more importantly the software switch had to emulate the hardware pipeline, so that when we actually moved to hardware switches, there would be minimal changes in the controller. 

In reality the hardware switching ASIC has tens of tables. The controller does not need to know all the tables, registers etc. Many of the tables can be  abstracted away by creating the right Hardware Abstraction Layer. Think of it as the contract between the controller and the switch – the switch supports the HAL and the controller programs the switch according to the HAL. In OpenFlow terms such a HAL is known as a Typed Table Pipeline (TTP). The ONF's Forwarding Abstractions WG is working on this topic. For more our project we developed our own TTP known as the SPRING-OPEN TTP

And so, in our project we needed a switch we could use to support the SPRING-OPEN TTP. At the time we started the project (May 2014) the only software switch that supported OF 1.3 was the CPqD software switch. Around the August timeframe OVS released v2.3.0 which also supported OF1.3. However we chose to continue to use the CPqD switch for the following reasons:

  • 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

    Code Block
    languagetext
    git clone https://github.com/CPqD/ofsoftswitch13.git
  2. Go back to the specific version of Cpqd

    Code Block
    languagetext
    git checkout f308c28242de57502f06d3dee80ce47ac17b6603
  3. Download the following patch: patchfile-cpqd

    You can apply the patch with the command

    Code Block
    languagetext
    patch -p0 < patchfile_cpqd 
  4. Build it following the README.md file in the directory

...