Very cool! Seems like a good first step. I'll take a closer look when I have more time.
There are still some changes pending in libopenflow_01, which you might want to at least be aware of. The two big (related) ones are: Finally eliminating all vestiges of the length field and only using it for validation. Using the new-style unpack (using the helper methods up top), which are more structured, fail more noticeably, and allow unpacking from arbitrary offsets in a buffer (reducing the number of copies the OF loop has to do). -- Murphy On Nov 2, 2012, at 9:34 PM, Sam Russell wrote: > Here's my POX fork that does enough OpenFlow 1.1 to pass a basic unit test > with an MPLS packet https://github.com/samrussell/pox/tree/of11 > > It breaks wildcarding in the process, and the rest of the spec needs to be > implemented to make it work properly (e.g. pack/unpack fails on most classes, > probably due to the new 32-bit ports), as well as other messages, but my goal > here is just to get it up and running so that there's a python controller > that speaks OpenFlow 1.1 > > Here's the main functionality that I'm aiming for: > > - Can auto-generate matches based on compatible packets (done) > - Implements actions for MPLS stuff > > This should really be all that it needs for it to be integrated into a > label-switched router. The rest will come, as well as ways to make the > 1.0/1.1 split more pretty, but I'm really after a reference MPLS spec in POX. > > I've found some other stuff on the way: > - the mpls class stores its payload as raw data rather than parsing it as > IP(v4) > - the wildcarding is heavily tied to fields that can be matched - new IP and > ethernet masks will either need more special cases like IP currently has in > 1.0, or a new approach to wildcarding >
