a family of network programming languages

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 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 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 above.

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.

Additional Projects

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

Cornell Cornell

Princeton Princeton

UMass Amherst UMass Amherst

UCL UCL

Alumni

Overview Papers

Nikolaj Bjorner, Nate Foster, Philip Brighten Godfrey, and Pamela Zave. Formal Foundations for Networking (Dagstuhl Seminar 15071). Dagstuhl Reports, 5(2):44--63, 2015. [ DOI | http ]

Martin Casado, Nate Foster, and Arjun Guha. Abstractions for Software-Defined Networks. CACM, 57(10):86--95, October 2014. [ full version ]

Nate Foster, Michael J. Freedman, Arjun Guha, Rob Harrison, Naga Praveen Katta, Christopher Monsanto, Joshua Reich, Mark Reitblatt, Jennifer Rexford, Cole Schlesinger, Alec Story, and David Walker. Languages for software-defined networks. IEEE Communications Magazine, 51(2):128--134, 2013. [ pdf | official version ]

Joshua Reich, Christopher Monsanto, Nate Foster, Jennifer Rexford, and David Walker. Modular SDN Programming with Pyretic. ;login Magazine, 38(5):128--134, 2013. [ pdf | official version ]

Conference Papers

Jedidiah McClurg, Hossein Hojjat, Nate Foster, and Pavol Cerny. Event-Driven Network Programming. In ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), Santa Barbara, CA, June 2016. [ conference version ]

Nate Foster, Dexter Kozen, Konstantinos Mamouras, Mark Reitblatt, and Alexandra Silva. Probabilistic NetKAT. In European Symposium on Programming (ESOP), Eindhoven, Netherlands, April 2016. [ conference version ]

Karla Saur, Joseph Collard, Nate Foster, Arjun Guha, Laurent Vanbever, and Michael Hicks. Safe and Flexible Controller Upgrades for SDNs. In ACM SIGCOMM Symposium on Software-Defined Networking Research (SOSR), Santa Clara, CA, March 2016. [ conference version ]

Haoxian Chen, Nate Foster, Jake Silverman, Michael Whittaker, Brandon Zhang, and Rene Zhang. Felix: Implementing Traffic Measurement on End Hoses Using Program Analysis. In ACM SIGCOMM Symposium on Software-Defined Networking Research (SOSR), Santa Clara, CA, March 2016. [ conference version ]

Steffen Smolka, Spiridon Eliopoulos, Nate Foster, and Arjun Guha. A Fast Compiler for NetKAT. In ACM SIGPLAN International Conference on Functional Programming (ICFP), Vancouver, Canada, September 2015. [ video | conference version | slides ]

Jedidiah McClurg, Hossein Hojjat, Pavol Cerny, and Nate Foster. Efficient Synthesis of Network Updates. In ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), Portland, OR, June 2015. [ conference version ]

Nate Foster, Dexter Kozen, Matthew Milano, Alexandra Silva, and Laure Thompson. A Coalgebraic Decision Procedure for NetKAT. In ACM SIGPLAN--SIGACT Symposium on Principles of Programming Languages (POPL), Mumbai, India, January 2015. [ conference version ]

Robert Soulé, Shrutarshi Basu, Parisa Jalili Marandi, Fernando Pedone, Robert Kleinberg, Emin Gün Sirer, and Nate Foster. Merlin: A Language for Provisioning Network Resources. In ACM SIGCOMM Conference on emerging Networking EXperiments and Technologies (CoNEXT), Sydney, Australia, December 2014. [ conference version ]

Carolyn Jane Anderson, Nate Foster, Arjun Guha, Jean-Baptiste Jeannin, Dexter Kozen, Cole Schlesinger, and David Walker. NetKAT: Semantic Foundations for Networks. In ACM SIGPLAN--SIGACT Symposium on Principles of Programming Languages (POPL), San Diego, CA, January 2014. [ tech report | conference version ]

Robert Soulé, Shrutarshi Basu, Robert Kleinberg, Emin Gün Sirer, and Nate Foster. Managing the Network with Merlin. In ACM SIGCOMM Workshop on Hot Topics in Networks (HotNets), College Park, MD, November 2013. [ conference version ]

Laurent Vanbever, Joshua Reich, Theophilus Benson, Nate Foster, and Jennifer Rexford. HotSwap: Correct and Efficient Controller Upgrades for Software-Defined Networks. In ACM SIGCOMM Workshop on Hot Topics in Software Defined Networking (HotSDN), Hong Kong, China, August 2013. [ conference version ]

Mark Reitblatt, Marco Canini, Arjun Guha, and Nate Foster. FatTire: Declarative Fault Tolerance for Software-Defined Networks. In ACM SIGCOMM Workshop on Hot Topics in Software Defined Networking (HotSDN), Hong Kong, China, August 2013. [ conference version ]

Arjun Guha, Mark Reitblatt, and Nate Foster. Machine-Verified Network Controllers. In ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), Seattle, WA, June 2013. To appear. [ conference version ]

Christopher Monsanto, Joshua Reich, Nate Foster, Jennifer Rexford, and David Walker. Composing Software Defined Networks. In USENIX Symposium on Networked Systems Design and Implementation (NSDI), Lombard, IL, April 2013. [ conference version ]

Naga Praveen Katta, Jennifer Rexford, and David Walker. Logic Programming for Software-Defined Networks. In Workshop on Cross-model Language Design and Implementation (XLDI), Copenhagen, Denmark, September 2012. [ conference version | slides ]

Mark Reitblatt, Nate Foster, Jennifer Rexford, Cole Schlesinger, and David Walker. Abstractions for Network Update. In ACM SIGCOMM Conference on Communications Architectures, Protocols and Applications (SIGCOMM) , Helsinki, Finland, pages 323--334, August 2012. [ conference version | slides ]

Stephen Gutz, Alec Story, Cole Schlesinger, and Nate Foster. Splendid Isolation: A Slice Abstraction for Software-Defined Networks. In ACM SIGCOMM Workshop on Hot Topics in Software Defined Networking (HotSDN), Helsinki, Finland, pages 79--84, August 2012. [ conference version | slides ]

Christopher Monsanto, Nate Foster, Rob Harrison, and David Walker. A Compiler and Run-time System for Network Programming Languages. In ACM SIGPLAN--SIGACT Symposium on Principles of Programming Languages (POPL), Philadelphia, PA, pages 217--230, January 2012. [ conference version | slides ]

Nate Foster, Michael J. Freedman, Rob Harrison, Christopher Monsanto, Mark Reitblatt, Jennifer Rexford, Alec Story, and David Walker. Language Abstractions for Software-Defined Networks. In Workshop on Languages for Distributed Algorithms (LADA), Philadelphia, PA, January 2012. [ conference version | slides ]

Mark Reitblatt, Nate Foster, Jennifer Rexford, and David Walker. Consistent Updates for Software-Defined Networks: Change You Can Believe in! In ACM Workshop on ACM Workshop on Hot Topics in Networks (HotNets), Cambridge, MA, November 2011. [ conference version | slides ]

Nate Foster, Rob Harrison, Michael J. Freedman, Christopher Monsanto, Jennifer Rexford, Alec Story, and David Walker. Frenetic: A Network Programming Language. In ACM SIGPLAN International Conference on Functional Programming (ICFP), Tokyo, Japan, September 2011. [ conference version | slides ]

Nate Foster, Rob Harrison, Matthew L. Meola, Michael J. Freedman, Jennifer Rexford, and David Walker. Frenetic: A High-Level Langauge for OpenFlow Networks. In ACM Workshop on Programmable Routers for Extensible Services of Tomorrow (PRESTO), Philadelphia, PA, November 2010. [ conference version | slides ]

Technical Reports

Nate Foster, Rob Harrison, Michael J. Freedman, Jennifer Rexford, and David Walker. Frenetic: A High-Level Langauge for OpenFlow Networks. Technical report, Cornell University, December 2010. [ tech report ]

Theses

Walter Robert J. Harrison. Frenetic: A Network Programming Language. Master's thesis, Princeton University, May 2011.

Frenetic is supported by the National Science Foundation under Grant Numbers CNS-1111698 and CNS-1111520, by the Office of Naval Research under grants N00014-09-1-0770, N00014-12-1-0757, by Google under a Faculty Research Award, and by gifts from Intel and Dell. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of these organizations.

  • NSF
  • ONR
  • Google
  • Intel
  • Dell