User login

Richard Sanger's blog

14

Oct

2015

Continued working on the oflops tests I've been updating the add flows test and seeing how this performs on the hardware and if it will be suitable for use as part of a reactive test. Rules are added quickly; the entire table can be filled in a couple of seconds, however this should be long enough to show any difference when running an reactive test.

I've been running the packet in and out tests on the switches to check that things are stable, as well as tweaking the script to output results that are easier to deal with.

I've been working a little with the Accton and have loaded on Open Network Linux, however it is very loud because it fans are running at full-speed this is something that needs to be fixed before I can run this during work hours. I have not had the chance to try load anything onto it yet.

07

Oct

2015

I had my PhD proposal presentation at the start of the week, this went well and I've been given the green light to continue with my research. The weeks prior were spent focused on preparing the proposal and presentation.

In the next couple of months I will finish up the packet-in and packet-out benchmarks. After that I will work on the main topic. I plan to investigate a translation layer between existing OpenFlow applications and the OpenFlow switches/their OpenFlow pipeline. The idea here being to allow existing applications to run on incompatible hardware pipelines and make better use of the all the tables available; such as putting rules into the specialised MAC and Routing tables present on some devices.

I've spent sometime this week reading over the libtrace 4 documentation which Shane wrote which looks good. And making some minor improvements to the oflops-turbo tests, I fixed an issue with loading libraries which turned out to be an auto-tools issues.

15

Sep

2015

I have been spent the week writing my PhD proposal, there is still more to be done.

03

Sep

2015

I have moved my focus almost solely to that of getting ready for my proposal which is this month. As such I've attempting to select a single idea for my proposal. I've mainly been spending my time searching for and reading papers related to a list of possible topics. I've also been looking at the papers in the most recent conferences.
Currently their are a couple of promising areas which are looking interesting - Hardware abstractions, combining multiple applications.

I also spent sometime on a couple of libtrace related usability issues and bugs etc. Now that Shane is using the new parallel API for WDCap he has encountered a couple of issues.

19

Aug

2015

I made some changes to the reporting of the oflops module that I'm using to log to a separate file. This also now happens at run time rather than being saved in memory and printed at the end of the test. I've also fixed a couple of bugs and consistency issues.

I looked into issues with queuing within libfluid and as a result I've exposed the socket file descriptor and will no longer send packet-outs if the descriptor is full.

I've explored the implications of adding extra rules at a higher priority above the match, given that OpenFlow 1.3 expects the cookie from the matching rule to be included in the packet-in message. However initial testing seems to show almost no overhead added to OVS and that some switches do not actually include the cookie. As such it seems to be a somewhat unfair and insightful test.

Brad set me up with access to patch ports allowing me to plugin different switches into different machines. I've written a python script to run my testing and done some initial trail runs, this seems to be functioning well. I've also moved my testing to a more powerful machine, to ensure this is not a factor in results.

11

Aug

2015

I moved my focus back to oflops this week. I've worked through converting the packet_out test and creating a packet_in and out test. As part of this I fixed the handling of timer events adding basic thread safety and allowing more recent timers to fire when another is waiting.

I've also added some barriers into the tests so that they will only start traffic generation once the switch reports the rules are ready. Despite this, I'm likely to still rely on a timeout since some switches seem to treat barriers like echoes. I've been pushing all these oflops changes into my github this week, including earlier ones now I'm relatively happy there will not be any more significant changes.

Josh is now working merging Chris's libnl and my fastpath changes into upstream RouteFlow. I think he is planning on releasing a new Vandervecken ISO.

04

Aug

2015

This week I continued work on oflops, primarily I spent the time on getting TLS working. Creating certificates was a relatively painless part, particularly after Brad explained that we were creating a CA switches and another for controllers. This allows switches to talk controllers, but no switches to talk to other switches or controllers to other controllers.

Once this was working I was hitting a deadlock all the time, this turned out to be a bug in libevent which is fixed in the next release, so I switched to using 2.1.5 beta. With some small modifications to libfluid this appears to be working correctly now.

This week I also got Vandervecken deployed on the WAND production SDN network - with Brad's help of course. The initial attempt on Wednesday failed due to the timing issues on start up - which I was aware of but did not expect to be a problem. I fixed these by adding some caching to delay some rules until they could be installed. On Friday we successfully deployed this however with broken IPv6. This IPv6 issue is due to a hardware bug, for now we are fastpathing all IPv6 traffic which is working well.

I was hoping to be ready to test this week with oflops. However invested a lot of time in RouteFlow/Vandervecken instead. As such I will be spending next week writing my oflops tests and then after that hopefully should be able to move onto preparing my full proposal.

22

Jul

2015

Continued to work on oflops this week. I've worked through the code fixing many issues shown by valgrind. Such as correcting the order when stopping threads so that memory is no longer free'd by one thread while another is still accessing it. Along with many other memory leaks etc.

I've also looked at the kernel module packet generator (pktgen) which can be used to produce packets instead of using userspace pcap, and as expected it can produce higher packet rates than the userspace. Pktgen uses a delay between packets for rate limiting and will insert the current timestamp into a packet. However was applying the delay after the timestamping of the packet, this resulted in an offset in the timestamp similar to the delay however this is not guaranteed as the length of the delay varies depending upon how long tx and creating the next packet takes. I've rebuilt the module with the ordering fixed. When I get the time I would like submit my fix for this to the kernel.

14

Jul

2015

I've been working on getting a openflow switch testing platform ready this week, the plan is to have this complete by the end of the month ready to run some tests.

I've decided to use OFLOPS-turbo as a starting point and add support for the newer versions of OpenFlow. I've opted to replace the openflow connection handling with libfluid-base, which will handle the OpenFlow handshake and echo's as required regardless of the OpenFlow version in use. The modules can then use their library of choice such as rofl or libfluid to construct and parse OpenFlow messages. I've also been fixing other issues with the code such as high CPU usage due to polling on gettimeofday.

07

Jul

2015

I continued fixing/improving RouteFlow. I moved my mutlitable fastpath into the multitable RouteMod rather than having a separate option for it. With Brad's help we got this working on the Pica8, turns out we needed to turn on combinated mode otherwise VLAN tagging can be overzealous. I found and corrected a bug with the inter-switch link (ISL) implementation for the multitable case. I also found an issue with ARP neighbourhood entries being added before the interface is properly up (has received a mapping packet) which results in the flow not being installed. This requires some retry system, which RouteFlow currently does not have.

I also looked at OFLOPS-turbo this week. It appears some fixes/improvements have been made over the original OFLOPS in addition to support for 10Gbit netfpgas. However, there are still some aspects that need work such as supporting newer versions of OpenFlow, reducing CPU usage, some places in the code spins on gettimeofday() rather than sleeping etc. It appears I might have to make some large changes to add the functionality that I want.