How will we talk to programmable networks?

The buzz around OpenFlow is increasing, with a few case studies out last month, a funding and a beta product from a vendor pushing a software-defined network controller. But still there’s a lot of confusion out there when it comes to programmable networks, OpenFlow and the use cases and rationale for virtualized networks.

For a better understanding on the topic, I pulled together several experts on OpenFlow to understand where it will fit in and what companies can do with it, in a research note over at our GigaOM Pro site (sub. req’d). What I discovered was that there’s a lot of hype, but OpenFlow itself is just a protocol, and the real excitement is around programmable networks that will let companies let their switches move packets, while a commodity server running software actually tells the switches where to send those packets. This separation of the movement of the packets from the intelligence required to move them represents an opportunity for companies large and small.

In the note, I go into how this is a double-edged sword for Cisco (s csco) and Juniper (s jnpr) while it appears to be a chance to make it big for startups. I didn’t spend time thinking about how one would program such a network once OpenFlow enabled the network intelligence to live on a server. But thanks to a quick perusal of the agenda for the Open Networking Summit happening next month in Stanford, I learned Jennifer Rexford, a professor in the computer science department at Princeton University, is already building out such a language.

Rexford is speaking on Frenetic, which is a developing programming language for networks. Once you no longer control a network by plugging cables into ports (yes the ports are still there) one has to consider how to communicate with these machines that run the show. From the Frenetic web site:

The languages used to program networks today lack modern features. Programming a network is a complicated, error-prone task and simple bugs frequently cause outages and infiltrations. We believe it is time to develop a network programming language with the following essential features:

  • High-level abstractions that give programmers direct control over the network, allowing them to specify what they want the network to do without worrying about how to implement it.
  • Modular constructs that facilitate compositional reasoning about programs.
  • Portability, allowing programs written for one platform to be reused with different devices.
  • Rigorous semantic foundations that precisely document the meaning of the language and provide a solid platform for mechanical program analysis tools.

The Frenetic language is designed to work on OpenFlow-based networks, and I’m curious if there are other efforts out there seeking a more modern way to program networks. Is this necessary?