skip to main content
10.1145/2034773.2034812acmconferencesArticle/Chapter ViewAbstractPublication PagesicfpConference Proceedingsconference-collections
research-article

Frenetic: a network programming language

Published:19 September 2011Publication History

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.

Skip Supplemental Material Section

Supplemental Material

_talk2.mp4

mp4

61.5 MB

References

  1. Beacon: A java-based OpenFlow control platform. See http://www.beaconcontroller.net, Nov 2010.Google ScholarGoogle Scholar
  2. The Frenetic language. See http://www.frenetic-lang.org/, Nov 2010.Google ScholarGoogle Scholar
  3. OpenFlow. See http://www.openflowswitch.org, Nov 2010.Google ScholarGoogle Scholar
  4. SNAC. See http://snacsource.org/, 2010.Google ScholarGoogle Scholar
  5. Umut A. Acar, Guy E. Blelloch, and Robert Harper. Adaptive functional programming. TOPLAS, 28:990--1034, November 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. Gérard Berry and Georges Gonthier. The Esterel synchronous programming language: Design, semantics, implementation. Science of Computer Programming, (2):87--152, 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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 ScholarGoogle Scholar
  9. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  10. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  11. Gregory H. Cooper and Shriram Krishnamurthi. Embedding dynamic dataflow in a call-by-value language. In ESOP, pages 294--308, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Antony Courtney, Henrik Nilsson, and John Peterson. The Yampa arcade. In Haskell Workshop, pages 7--18, Aug 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Chuck Cranor, Theodore Johnson, Oliver Spataschek, and Vladislav Shkapenyuk. Gigascope: A stream database for network applications. In SIGMOD, pages 647--651, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle Scholar
  15. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. Sergei Egorov and Gene Savchuk. SNORTRAN: An Optimizing Compiler for Snort Rules. Fidelis Security Systems, 2002.Google ScholarGoogle Scholar
  17. Conal Elliott and Paul Hudak. Functional reactive animation. In ICFP, pages 163--173, Jun 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. David Erickson et al. A demonstration of virtual machine mobility in an OpenFlow network, Aug 2008. Demo at ACM SIGCOMM.Google ScholarGoogle Scholar
  19. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  21. 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 ScholarGoogle Scholar
  22. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  23. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  24. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  25. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  26. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  27. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  28. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  29. Geoffrey Mainland, Greg Morrisett, and Matt Welsh. Flask: Staged functional programming for sensor networks. In ICFP, pages 335--346, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. John Markoff. Open networking foundation pursues new standards. The New York Times, Mar 2011. See http://nyti.ms/eK3CCK.Google ScholarGoogle Scholar
  31. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  32. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  33. Ankur Nayak, Alex Reimers, Nick Feamster, and Russ Clark. Resonance: Dynamic access control in enterprise networks. In WREN, Aug 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Henrik Nilsson, Antony Courtney, and John Peterson. Functional reactive programming, continued. In Haskell Workshop, pages 51--64, Oct 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Vern Paxson. Bro: A system for detecting network intruders in real-time. Computer Networks, 31(23-24):2435--2463, Dec 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. John Peterson, Paul Hudak, and Conal Elliott. Lambda in motion: Controlling robots with Haskell. In PADL, Jan 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  38. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  39. Andreas Voellmy and Paul Hudak. Nettle: Functional reactive programming of OpenFlow networks. In PADL, Jan 2011.Google ScholarGoogle Scholar
  40. Richard Wang, Dana Butnariu, and Jennifer Rexford. OpenFlow-based server load balancing gone wild. In Hot-ICE, Mar 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Frenetic: a network programming language

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in
    • Published in

      cover image ACM Conferences
      ICFP '11: Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
      September 2011
      470 pages
      ISBN:9781450308656
      DOI:10.1145/2034773
      • cover image ACM SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 46, Issue 9
        ICFP '11
        September 2011
        456 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/2034574
        Issue’s Table of Contents

      Copyright © 2011 ACM

      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 19 September 2011

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article

      Acceptance Rates

      ICFP '11 Paper Acceptance Rate33of92submissions,36%Overall Acceptance Rate333of1,064submissions,31%

      Upcoming Conference

      ICFP '24

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader