How did Flowgrammable get started?
I founded the Flowgrammable organization in May of 2013. Around this time the Open Networking Foundation (ONF) announced a competition for an open source implementation of the OpenFlow protocol. I had worked in high performance networking since 1999, had some familiarity with OpenFlow, and was looking for an excuse to get my hands dirty. It was easy to recruit a small team from my industry and research colleagues. The argument went something like this ... "Let's spend time building a version-agnostic OpenFlow stack, bring ourselves up to speed on active research, and learn about the SDN design space". After a few meetings we sketched out an initial course of work, and decided `Flowgrammable' was a good name for the project.
We kicked off the project by trying to develop a detailed understanding of the OpenFlow protocol stack. It took the entire team approximately 4 weeks to scour the standards specifications of the five versions of the OpenFlow protocol: 1.0, 1.1, 1.2, 1.3.0, and 1.3.1. The competition was asking for a version independent protocol stack that could function with any combination of deployed switches. This analysis resulted in the bulk of the OpenFlow Protocol section of this site. It includes drawings, tables, and descriptions of every message, state machine, and system interface behavior required by the standard.
By mid-June we had progressed through several software architectures and were able to start the main development activity. The bulk of the summer, and code base, is primarily message layer handling. The majority of the complexity in the five different versions comes from complex message structures and constraints. By the beginning of August the deadline (8/15/13) for the competition was looming. We had just gotten our cross compiles to ARM and RISC functional, and were still working on development of the state machine and system interface layers.
Ultimately, the deadline was pushed from August 15th to September 15th, which turned out to be a mixed blessing. This is the time when most universities begin their fall semester. Due to some of the team members being students or researchers, having four additional weeks at this particular time wasn't terribly helpful. However, we were able to use the time to wrap things up, produce documentation, and make our submission. The submission was comprised of approximately 80k lines of C++11 code, and accompanied by custom appliance with our development tool chain installed. For a more detailed description of our submission please see the Flowgrammable Stack page.
Through the competition we produced quite a bit of technical information, pertaining to both OpenFlow and SDN in general. In the course of discussing our project we received many requests to make this information publicly available. We shared access to our internal knowledge base as requested, but this process did not scale well. As a result the Flowgrammable team spent most of their winter break cleaning up the material and migrating it to a new site. The two best places to begin exploring this information are: OpenFlow Protocol, and Message Layer.
Our continued focus is on elevating the discourse of SDN for students, engineers, and researchers. We have several ongoing projects supporting this goal. Some of the activities include:
- Expanding the knowledge base to cover more OpenFlow versions and SDN protocols
- Posting our internal videos explaining aspects of OpenFlow
- Releasing specifications of the OpenFlow message layer in the Steve programming language
- Releasing our OpenFlow torture test messages
- Sharing research on our own version of a protocol agnostic SDN controller
Finally, we continue to update our site with corrections, if you find any area requiring correction, let us know. Please bear with us if our response is not immediate, we are a non-profit organization that relies on the time of our all-volunteer team.
-JassonShare on Twitter Share on Facebook