User login

Weekly Report

03

Aug

2016

This week I have been looking at the header space analysis code and it's suitability to be used to build dependency tree's and possibly model the pipeline and use it for verification. In header space a packet header can be modelled as a series of bits of a fixed with, with each carrying a value of 0, 1 or both wildcarded (an x). A header space is a description of the values a packet header could carry and it is made up of a union of fixed width header space bits (or none in the case it is empty). Header space defines as set of logic operators that can be applied to header spaces, such as subtraction, addition, detecting subsets, inversion etc. Beyond this the research also explorers using it to model networks and detect loops etc, something that could be useful in a verification capacity.

As such I have looked through some of the examples included and implemented some simple wrappers to put all the OpenFlow fields into header space. Including a friendly way to read these fields back. I've also started initial testing of header space with some real data. I've found that subtracting is a not a feasible option due to the expansion issue it causes, this occurs due to representing a solution as a series of unions, applying subtraction essentially requires all other possible values to be explicitly listed in the union (but not the one subtracted). The solution discussed by the header space paper, lazy subtraction, is required for my usage. However it does not seem that this works well with detecting when a set has become empty or when terms cancel each other out etc. More investigation is required to see how necessary this is and if it can be worked around.

I also spent sometime reading over Dimeji's masters thesis and give him my feedback for a final time before he handed it in at the end of the week.