Abstract
Modern networks provide a variety of interrelated services including routing, traffic monitoring, load balancing, and access control. Unfortunately, the languages used to program today's networks lack modern features - they are usually defined at the low level of abstraction supplied by the underlying hardware and they fail to provide even rudimentary support for modular programming. As a result, network programs tend to be complicated, error-prone, and difficult to maintain.
This paper presents Frenetic, a high-level language for programming distributed collections of network switches. Frenetic provides a declarative query language for classifying and aggregating network traffic as well as a functional reactive combinator library for describing high-level packet-forwarding policies. Unlike prior work in this domain, these constructs are - by design - fully compositional, which facilitates modular reasoning and enables code reuse. This important property is enabled by Frenetic's novel run-time system which manages all of the details related to installing, uninstalling, and querying low-level packet-processing rules on physical switches.
Overall, this paper makes three main contributions: (1) We analyze the state-of-the art in languages for programming networks and identify the key limitations; (2) We present a language design that addresses these limitations, using a series of examples to motivate and validate our choices; (3) We describe an implementation of the language and evaluate its performance on several benchmarks.
Supplemental Material
- Beacon: A java-based OpenFlow control platform. See http://www.beaconcontroller.net, Nov 2010.Google Scholar
- The Frenetic language. See http://www.frenetic-lang.org/, Nov 2010.Google Scholar
- OpenFlow. See http://www.openflowswitch.org, Nov 2010.Google Scholar
- SNAC. See http://snacsource.org/, 2010.Google Scholar
- Umut A. Acar, Guy E. Blelloch, and Robert Harper. Adaptive functional programming. TOPLAS, 28:990--1034, November 2006. Google ScholarDigital Library
- Arvind Arasu, Shivanth Babu, and Jennifer Widom. The CQL continuous query language: Semantic foundations and query execution. The VLDB Journal, 15:121--142, Jun 2006. Google ScholarDigital Library
- Gérard Berry and Georges Gonthier. The Esterel synchronous programming language: Design, semantics, implementation. Science of Computer Programming, (2):87--152, 1992. Google ScholarDigital Library
- Zheng Cai, Alan L. Cox, and T. S. Eugene Ng. Maestro: A system for scalable OpenFlow control. Technical Report TR10-08, Rice University, Dec 2010.Google Scholar
- Martin Casado, Michael J. Freedman, Justin Pettit, Jianying Luo, Natasha Gude, Nick McKeown, and Scott Shenker. Rethinking enterprise network control. Trans. on Networking., 17(4), Aug 2009. Google ScholarDigital Library
- Michael K. Chen, Xiao Feng Li, Ruiqi Lian, Jason H. Lin, Lixia Liu, Tao Liu, and Roy Ju. Shangri-la: Achieving high performance from compiled network applications while enabling ease of programming. In PLDI, pages 224--236, Jun 2005. Google ScholarDigital Library
- Gregory H. Cooper and Shriram Krishnamurthi. Embedding dynamic dataflow in a call-by-value language. In ESOP, pages 294--308, 2006. Google ScholarDigital Library
- Antony Courtney, Henrik Nilsson, and John Peterson. The Yampa arcade. In Haskell Workshop, pages 7--18, Aug 2003. Google ScholarDigital Library
- Chuck Cranor, Theodore Johnson, Oliver Spataschek, and Vladislav Shkapenyuk. Gigascope: A stream database for network applications. In SIGMOD, pages 647--651, 2003. Google ScholarDigital Library
- Mihai Lucian Cristea, Claudiu Zissulescu, Ed Deprettere, and Herbert Bos. FPL-3E: Towards language support for reconfigurable packet processing. In SAMOS, pages 201--212. Jul 2005.Google Scholar
- Mihai Dobrescu, Norbert Egi, Katerina Argyraki, Byung-Gon Chun, Kevin Fall, Gianluca Iannaccone, Allan Knies, Maziar Manesh, and Sylvia Ratnasamy. RouteBricks: Exploiting parallelism to scale software routers. In SOSP, Oct 2009. Google ScholarDigital Library
- Sergei Egorov and Gene Savchuk. SNORTRAN: An Optimizing Compiler for Snort Rules. Fidelis Security Systems, 2002.Google Scholar
- Conal Elliott and Paul Hudak. Functional reactive animation. In ICFP, pages 163--173, Jun 1997. Google ScholarDigital Library
- David Erickson et al. A demonstration of virtual machine mobility in an OpenFlow network, Aug 2008. Demo at ACM SIGCOMM.Google Scholar
- Nate Foster, Rob Harrison, Matthew L. Meola, Michael J. Freedman, Jennifer Rexford, and David Walker. Frenetic: A high-level langauge for OpenFlow networks. In PRESTO, Nov 2010. Google ScholarDigital Library
- Natasha Gude, Teemu Koponen, Justin Pettit, Ben Pfaff, Martín Casado, Nick McKeown, and Scott Shenker. NOX: Towards an operating system for networks. SIGCOMM CCR, 38(3), 2008. Google ScholarDigital Library
- Nikhil Handigol, Srinivasan Seetharaman, Mario Flajslik, Nick McKeown, and Ramesh Johari. Plug-n-Serve: Load-balancing web traffic using OpenFlow, Aug 2009. Demo at ACM SIGCOMM.Google Scholar
- Brandon Heller, Srini Seetharaman, Priya Mahadevan, Yiannis Yiakoumis, Puneet Sharma, Sujata Banerjee, and Nick McKeown. ElasticTree: Saving energy in data center networks. In NSDI, Apr 2010. Google ScholarDigital Library
- Timothy L. Hinrichs, Natasha S. Gude, Martin Casado, John C. Mitchell, and Scott Shenker. Practical declarative network management. In WREN, pages 1--10, 2009. Google ScholarDigital Library
- Eddie Kohler, Robert Morris, Benjie Chen, John Jannotti, and M. Frans Kaashoek. The Click modular router. ACM Transactions on Computer Systems, 18(3):263--297, Aug 2000. Google ScholarDigital Library
- Teemu Koponen, Martin Casado, Natasha Gude, Jeremy Stribling, Leon Poutievski, Min Zhu, Rajiv Ramanathan, Yuichiro Iwata, Hiroaki Inoue, Takayuki Hama, and Scott Shenker. Onix: A distributed control platform for large-scale production networks. In OSDI, Oct 2010. Google ScholarDigital Library
- Bob Lantz, Brandon Heller, and Nick McKeown. A network in a laptop: Rapid prototyping for software-defined networks. In HotNets, pages 1--6, 2010. Google ScholarDigital Library
- Boon Thau Loo, Tyson Condie, Joseph M. Hellerstein, Petros Maniatis, Timothy Roscoe, and Ion Stoica. Implementing declarative overlays. SIGOPS, 39(5):75--90, 2005. Google ScholarDigital Library
- Boon Thau Loo, Joseph M. Hellerstein, Ion Stoica, and Raghu Ramakrishnan. Declarative routing: Extensible routing with declarative queries. In SIGCOMM, pages 289--300, 2005. Google ScholarDigital Library
- Geoffrey Mainland, Greg Morrisett, and Matt Welsh. Flask: Staged functional programming for sensor networks. In ICFP, pages 335--346, 2008. Google ScholarDigital Library
- John Markoff. Open networking foundation pursues new standards. The New York Times, Mar 2011. See http://nyti.ms/eK3CCK.Google Scholar
- Nick McKeown, Tom Anderson, Hari Balakrishnan, Guru Parulkar, Larry Peterson, Jennifer Rexford, Scott Shenker, and Jonathan Turner. Openflow: Enabling innovation in campus networks. SIGCOMM CCR, 38(2):69--74, 2008. Google ScholarDigital Library
- Leo A. Meyerovich, Arjun Guha, Jacob Baskin, Gregory H. Cooper, Michael Greenberg, Aleks Bromfield, and Shriram Krishnamurthi. Flapjax: A programming language for Ajax applications. In OOPSLA, pages 1--20, 2009. Google ScholarDigital Library
- Ankur Nayak, Alex Reimers, Nick Feamster, and Russ Clark. Resonance: Dynamic access control in enterprise networks. In WREN, Aug 2009. Google ScholarDigital Library
- Henrik Nilsson, Antony Courtney, and John Peterson. Functional reactive programming, continued. In Haskell Workshop, pages 51--64, Oct 2002. Google ScholarDigital Library
- Vern Paxson. Bro: A system for detecting network intruders in real-time. Computer Networks, 31(23-24):2435--2463, Dec 1999. Google ScholarDigital Library
- John Peterson, Paul Hudak, and Conal Elliott. Lambda in motion: Controlling robots with Haskell. In PADL, Jan 1999. Google ScholarDigital Library
- Robert Soulé, Martin Hirzel, Robert Grimm, Buǧra Gedik, Henrique Andrade, Vibhore Kumar, and Kun-Lung Wu. A universal calculus for stream processing languages. In ESOP, pages 507--528, 2010. Google ScholarDigital Library
- William Thies, Michal Karczmarek, and Saman Amarasinghe. Streamit: A language for streaming applications. In International Conference on Compiler Construction, pages 179--196, Apr 2002. Google ScholarDigital Library
- Andreas Voellmy and Paul Hudak. Nettle: Functional reactive programming of OpenFlow networks. In PADL, Jan 2011.Google Scholar
- Richard Wang, Dana Butnariu, and Jennifer Rexford. OpenFlow-based server load balancing gone wild. In Hot-ICE, Mar 2011. Google ScholarDigital Library
Index Terms
- Frenetic: a network programming language
Recommendations
NetKAT: semantic foundations for networks
POPL '14Recent years have seen growing interest in high-level languages for programming networks. But the design of these languages has been largely ad hoc, driven more by the needs of applications and the capabilities of network hardware than by foundational ...
Frenetic: a network programming language
ICFP '11: Proceedings of the 16th ACM SIGPLAN international conference on Functional programmingModern networks provide a variety of interrelated services including routing, traffic monitoring, load balancing, and access control. Unfortunately, the languages used to program today's networks lack modern features - they are usually defined at the ...
Language support for verifiable SDNs
SPLASH Companion 2016: Companion Proceedings of the 2016 ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for HumanityProgramming languages for Software-Defined Networks (SDNs) provide higher abstractions on top of hardware-based APIs like OpenFlow. Researchers started to develop SDN programming languages based on mathematical foundations, which makes these languages ...
Comments