User login

Joe Stringer's blog

23

Jul

2012

Refactored my metadata support patch this week, to try to handle the commandline parsing of the option such that it enforces the correct ordering on instructions to be executed. Hit a bit of a hurdle in that the instruction seems to be ignored after these changes. Haven't managed to figure this out yet - hoping to systematically go through the expected sequence of events this week and figure out where it gets dropped.

Got confirmation on the LXC mailinglist that SCTP doesn't work at the moment, the sctp kernel module needs some modification for this. Made some small steps in the direction of setting up kvm for testing, when not running into trouble with the -no-graphics option or broken serial cables.

16

Jul

2012

Had the first round of review for my write-metadata patch this week. There's two parts to this, support on OpenFlow 1.0 via vendor extensions, and support on 1.1 with the official instruction type. The instruction side just needs minimal changes but on the vendor side, my patch had a few unintended consequences - allowing for multiple metadata instructions to be executed in a single table. More rigorous protocol decode functions--and tests to verify they work--should prevent some of these issues.

For SCTP this week, I got a copy of the CRC32c checksum code from Linux and made use of it for the userspace implementation. I tried setting up my emulation network machine to use Linux Containers as hosts which connect to Open vSwitch, the idea being that I could run some basic SCTP example applications and test that the switch is forwarding/modifying as expected. Unfortunately I came across an issue with LXC where creating a socket fails when using the parameters AF_INET, SOCK_SEQPACKET and IPPROTO_SCTP. It reports back that the address family is not supported. The impression I got from a quick googling was that LXC hasn't really been tried with anything other than TCP/UDP. I'll probably just switch to qemu next week.

09

Jul

2012

My time this week was split between more metadata support and starting on SCTP support. On the metadata side, I made strides towards the write-metadata instruction from OF1.1 atop Ben's Open vSwitch branch, but stopped short of getting it review-ready, as there was still a bit of instability in that branch. The code got pushed upstream at the end of the week, so I'll look at tidying up write-metadata this week.

On the SCTP side, I started reading some material on how SCTP works, and made some basic adjustments to the code -- finding references to UDP/TCP and adding clauses for SCTP support. Spoke to Brendan about an emulation network machine that I could use to tinker on/test the SCTP stuff, and prepared the machine.

02

Jul

2012

Last week's work on metadata was an interesting look into how to use Nicira's actions alongside the extensible matches introduced in OpenFlow 1.1 (OXM). Nicira already has a similar functionality implemented as a set of registers. There's an NXM action to load data into registers, which was able to load into not just the general purpose registers, but also into any field that NXM (and now OXM) matches against. I made use of this to implement metadata matches, and have now upstreamed this code.

The last thing left for the code to be accepted upstream was to create a new test for the new functionality. One of the main ways that the tests are performed is by specifying the hex dump of a packet as an argument to ovs-ofctl, then checking the log output. Ended up spending quite a bit of time this week cross-referencing some of these hex dumps with the OpenFlow specifications to get familiar with them and write my own tests.

26

Jun

2012

Started on metadata support this week. I'm really starting to get a feel for how the protocol has been influenced by Nicira's work on Open vSwitch. Although it doesn't yet support much of the 1.1 and 1.2 specifications, they use the constants from 1.2 to define matches. I've submitted a patch for review, parsing metadata messages. With the feedback come back I'm looking at how I can use NXAST (Nicira's action type extensions) to test and verify that the patch works. When the 1.1 instruction support goes through, I'll be able to get OpenFlow to control the metadata rather than just NXAST.

18

Jun

2012

As expected, I spent this week on my last 513 and 553 assignments. Synced in with Ben regarding my plans to implement Metadata support, so going to focus on digging into the code this week, and do a bit of research on what other features are still needed for OF1.1+ support.

12

Jun

2012

This week, I worked on my interim report, although ended up skimping on the background as I didn't allocate enough time to properly cover it. As it turns out, the OF1.1 actions features I was considering as possible future work in the report are currently being written by other developers, so I may end up focusing on some OF1.2 stuff for the rest of the year. This week though, I'll be finishing up my other courses and perhaps taking an initial look at OF1.1 Metadata.

05

Jun

2012

The latest version of my arbitrary ethernet patch was upstreamed on wednesday, which is exciting:) Been spending the rest of the week reading up OpenFlow literature for 513, which conveniently doubles as more background info for my honours report. I don't expect to get started on my next patch for another week, as I'll be focusing on the interim report and other courses this week.

29

May

2012

Fixed up my arbitrary ethernet patch based on all the feedback from the first round of review. I've just got two tests left to satisfy, so I've re-posted the patch for review. Should be able to get this patch pushed upstream this week, then I'll start on my next patch. With interim reports due next week, I'll be working on that too.

21

May

2012

Finally cleaned up my initial version of the arbitrary ethernet patchset and got it to satisfy the testsuite. Put it up for review on the mailinglist and I've got a bunch of helpful feedback. Next step is to fix up a new version now that I've got a clearer picture of what the OVS devs are looking for in this patch.

Brad and I also spent a bit of time last week tinkering with various Openflow things, primarily POX and RouteFlow. POX was reasonably successful, with a L2 learning switch fairly easy to get running. We also tried the pox-gui and, seperately, RouteFlow's new development branch. Had less success in these areas though - there's a lot more moving parts there. The code is still pretty experimental.