The languages used to program networks today lack modern features.
Programming them is a complicated and error-prone task, and outages
and infiltrations are frequent. We believe it is time to develop
network programming languages with the following essential
- 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
- 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 Family of Languages
Addresses these challenges in the context
of Software Defined Networks. Languages within the Frenetic family provide
a domain specific sub-language for specifying dataplane packet processing
in terms of packet functions and combinators inside of a general purpose
programming language - thereby realizing many of the features listed
Two languages in the Frenetic family are currently under active development
whose development are centered at Cornell and Princeton respectively.
Both handle many low-level packet-processing details and keep traffic in the "fast path" (i.e., dataplane) whenever possible.
Developed to support or extend Frenetic include:
- Ox: a platform for writing OpenFlow controllers
- Merlin: A network management framework that allows administrators to express policies in a high-level, declarative language based on regular expressions
- Kinetic: a state-machine based network control platform