User login

Richard Sanger's blog

06

Dec

2016

Over the last two weeks I've been making the final modifications to the TTP validator. Thanks to Brad for having a look and making and number of suggestions and setting up the hosting for this. This process involved turning of a couple of features that were unsafe and removing dependency on the ryu library as well as a number of other consistency fixes. It is now available online at http://wand.nz/ttp-validator/.

I've taken some time to fix an number of issues in libtrace. Including modifying the behaviour of trace_interrupt to stop all traces, not only live ones, this is more consistent. Updating DPDK in libtrace to support the newest versions; Richard Cziva provided an initial patch for DPDK. I extended this to include packaged versions of the DPDK which will be included in future releases of Debian/Ubuntu. I also started initial work into fixing an issue with pstop() and the ring format on older kernel versions which is related to stopping non-parallel formats, that are being split internally within libtrace.

22

Nov

2016

Continued working on getting the Table Type Pattern Validator together. This is mostly done now, just html cosmetics left now.

I've gone through and removed most of the asserts in the code and either replaced them with error messages or proper exception handling, which reduces the chance of no result being returned. I've added a simple cache so that common patterns won't need to be recomputed. I've added a number of simple tests to check some code paths I fixed. Added proper unicode detection allowing for UTF-8, 16 and 32 as per the JSON spec. Added rate limiting, and fixed an issue with undefined variable names persisting globally.

15

Nov

2016

Worked on getting together a talk for the Internal CS PhD conference. Presented this on Friday, I think it went well. The slides were based on the slides I made for a COMP514 lecture.

I've made initial steps towards getting a TTP validator online. Brad suggested I use Flask, so I've been working on integrating my existing code into Flask. I'm working through the basics of getting a simple web page together and getting input into the program while updating error handling to save errors directly against the TTP-object rather than just logging.

I've still got a number of issues to work through, replacing any asserts left in the TTP code with warning messages. And other abuse considerations such as rate limiting, client validation and correct handling of input errors JSON.

07

Nov

2016

Final week working on the paper, a week of fixing all the mistakes everyone found. I'm hugely thankful to Shane, Matthew, Brad and Richard all taking time to give feedback. I've submitted the paper to SOSR this week.

Next week(s) is getting a presentation together for the CS PhD conference, and working on getting a TTP validator released online and getting back into getting a first basic working algorithm together to translate OpenFlow rules to different pipelines.

11

Oct

2016

Continued writing the paper this week. Merging sections, rewriting sections, reading over it and repeating - all those fun things.

05

Oct

2016

Continuing working on the paper. From feedback I've added some graphs showing the traits of individual switches, as this was something I only briefly mentioned but people have found interesting. I've also been working through updating the written results to include the x930 and I've been replacing any references to a vendor with the switch model within the text as performance characteristics are going to be linked to individual products.

Submitted my 6 monthly PhD report this week, spent a bit of time reviewing how far I have got, and revising the best next steps. I have a relatively naive algorithm currently on paper to begin implementing, but I expect it to be pluggable to some degree. Allowing me to turn on and off features and compare the results of them.

20

Sep

2016

I'm working on the packet in and out paper to submit to SOSR.

I've been working through a number of Matthew's suggestions, focusing on tidying up the things I don't expect to change first. I've tidied up the graphs a little more and re-arranged the key to better fit within the graph and not overlap other bars. I've also tweaked the colour of the target rate lines to ensure this is the same across graphs. Removed underscores from some words. I've tidied up some tables to make them clearer. I've also started rewriting/reorganising parts as needed.

14

Sep

2016

Finished up the merging algorithm for now. Most cases are handled correctly, including more complex cases such as when the flow rule is modified and then matched on the new value in a latter table. The only case that will need better handling is the case that a single OpenFlow rule cannot be used to represent the multiple rules. For instance this occurs when matching QinQ, only one vlan can be matched per table making it impossible to match both QinQ tags in a single table.

I've started looking at getting my recent AT results into the packet in and out paper and looking for a conference to submit to. SOSR seems to be a good choice and gives me just over a month to get it ready. So I will be putting my main focus back into that. I also have my 6 monthly PhD report due this month so I'll be getting that together also.

06

Sep

2016

Spent the Monday and part of Tuesday this week getting slides together for the COMP514 lecture I gave on Tuesday. This went well, and I'll be able to reuse some slides in the internal PhD conference.

I then looked at the problem of checking for dependencies beyond pairs - such as triples etc until an entire dependency chain is considered. One realisation I came to was that my simulation when expanded beyond two tables would consider all combinations of the rules - with some situations possibly being detected as unreachable. Something which seems very similar to merging rules into a single table, and just as bad in terms of rule expansion issues. Merging rules into a single table is a procedure I will need in the future anyway to manipulate rules to fit. I've approached this by merging one table with another allowing me to check portions, and the entire pipeline simply by merging the result of the tables prior with the next in the pipeline. This work is still ongoing.

As part of this I have also been adding many set features (intersect, union etc) and other useful operations to the FlowMatch and FlowActions classes. I've also added some more unit testing for adding ActionSets and/or ActionLists together, after finding and fixing a couple of bugs in this.

31

Aug

2016

I reworked all of the action classes used to store flow actions. They now maintain a normalised ordering at all times, updating incrementally when items are added. This has improved performance by reducing the time spent resorting the lists before checking equality etc. I've also added another equality check to see if actions are equivalent, this detects cases such as [output:4, pop_vlan, output:1, output:2] being equivalent to [output:4, group(pop_vlan, output:1), group(pop_vlan, output:2)] - this is useful for checking for equivalences.

I fixed a handful of bugs with the placement algorithm so far.

I also looked into the priorities included in the OFDPA Table Type Pattern, these were causing rule sets that I except would fit to fail. Rules in the ACL table had priorities assigned, implying that they have to be added at those priorities. This makes it impossible to put a rule at a higher priority than another. However testing this on the hardware seemed to allow these to be placed at any priority with the expected function. For now I'm ignoring all priority values listed in the TTP (in most tables there cannot be any rule overlap so this does not matter).

I started writing slides for a COMP514 lecture, some of which will also be reusable for PhD presentations.