Nettle: Taking the Sting Out of Programming Network Routers

We describe a language-centric approach to solving the complex, low-level, and error-prone problem of network control. Specifically, we have designed a domain-specific language called Nettle, embedded in Haskell, that allows programming OpenFlow networks in an elegant, declarative style. Nettle is based on the principles of functional reactive programming (FRP), and as such has both continuous and discrete abstractions, each of which is leveraged in the design. We have implemented Nettle and tested it on real OpenFlow switches. We demonstrate our methodology by writing several non-trivial OpenFlow controllers.

[1]  Jennifer Rexford,et al.  BGP routing policies in ISP networks , 2005, IEEE Network.

[2]  Philip Wadler XQuery: A Typed Functional Language for Querying XML , 2002, Advanced Functional Programming.

[3]  Ross Paterson,et al.  A new notation for arrows , 2001, ICFP '01.

[4]  Martin Fowler,et al.  Domain-Specific Languages , 2010, The Addison-Wesley signature series.

[5]  Paul Hudak,et al.  Nettle: A Language for Configuring Routing Networks , 2009, DSL.

[6]  Ion Stoica,et al.  Declarative routing: extensible routing with declarative queries , 2005, SIGCOMM '05.

[7]  Joan Feigenbaum Foundations of inter-domain routing , 2005 .

[8]  Paul Hudak,et al.  A language for declarative robotic programming , 1999, Proceedings 1999 IEEE International Conference on Robotics and Automation (Cat. No.99CH36288C).

[9]  Vijay Ramachandran,et al.  Design principles of policy languages for path vector protocols , 2003, SIGCOMM '03.

[10]  Paul Hudak,et al.  Don't Configure the Network, Program It! Domain-Specific Programming Languages for Network Systems , 2010 .

[11]  Paul Hudak,et al.  Arrows, Robots, and Functional Reactive Programming , 2002, Advanced Functional Programming.

[12]  Martín Casado,et al.  Practical declarative network management , 2009, WREN '09.

[13]  David Walker,et al.  Frenetic: a high-level language for OpenFlow networks , 2010, PRESTO '10.

[14]  Paul Hudak,et al.  Functional reactive animation , 1997, ICFP '97.

[15]  Ratul Mahajan,et al.  Understanding BGP misconfiguration , 2002, SIGCOMM 2002.

[16]  John Hughes,et al.  Generalising monads to arrows , 2000, Sci. Comput. Program..