How Brocade’s Colin Dixon learned to stop worrying and love interactions among networking industry organizations.
Recently, there has been a lot of discussion about the role of standards, and standards organizations like ONF, given the rise of software (especially open source software like OpenDaylight). A tight loop between open standards and open source provides a model for how we can make rapid progress in networking, while still encouraging interoperability and deliberate design, capturing much of the Internet Engineering Task Force motto of rough consensus and running code.
During much of 2012, I spent time in ONF’s Forwarding Abstraction Working Group (FAWG) helping to define what would become the Table Type Patterns (TTP) specification. I was trying to build SDN controllers (then based on Floodlight) that made better use of the real capabilities of switches. Later that year, I got involved in the beginnings of OpenDaylight, and since then, it has occupied most of my time. However, I've been able to get back to TTPs by starting an OpenDaylight project to support them. What I thought would be a relatively simple process of implementing a spec has turned into something a lot more exciting.
Since TTPs specify a JSON format, YANG allows you to define a schema for JSON, and OpenDaylight has significant tooling to support YANG modeled data, I started off by trying to model TTPs in YANG. The process was easier than I'd thought, but I found several places where the TTP spec could be made a lot easier to consume and a few places where YANG could be better adapted to this kind of purpose.
In both cases, we were taking the standards and using them for things slightly beyond their intent. TTPs were released with more of a focus on being human readable (and writable) to act as a precise way for controller writers and switch vendors to agree on a set of features. Instead, we were trying to make it easily machine parsable.
Similarly, YANG is supposed to model abstract state rather than provide JSON schemas, and in the process of using to provide a schema for an already-existing specification, we found there were a few places where the differences couldn't be reconciled without a bit of hand (and hopefully in the future, machine) translation.
The cool part is the next set of interactions. I'm in the process of taking my newfound understanding of TTPs back to the FAWG where we can figure out how we can better support machine readability and toolchains around editing and verifying TTPs. I've already used the OpenDaylight TTP toolchain to find bugs in some of the TTPs that the FAWG is developing. You can see examples and a summary of the ODL TTP toolchains that are available now in this video, or just check out the code.
I'm also starting to reach out to the IETF Netmod Working Group to figure out if we can extend and/or modify YANG so that it's useful for a broader purpose of data modeling and providing schemas to enable toolchains like this.
Open source efforts can provide real-world testing and validation of standards as well as trying out new ideas before they can be fully standardized. At the same time, standards do an excellent job of precisely documenting things for interoperability beyond the open source code base and interactions with organizations that move at slower speeds, notably networking hardware vendors.
ONF has already taken steps in this direction, in particular with this year’s OpenFlow® Driver Competition. The competition was a call to action for the worldwide development community to create an interoperable open-source implementation of the latest OpenFlow® standard. ONF is dipping its toes into open source software, and I am looking forward to what is coming down the pipeline.
I think this model of interaction between people trying to do real things with standards in open source projects (often using the standards at the edge or beyond their original intent) and those who are writing the standard has the potential to enhance both sides of the interaction and drive the future of networking.
- Colin Dixon, Principal Engineer at Brocade