Nothing Special   »   [go: up one dir, main page]

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

Frenetic: a network programming language

Published: 19 September 2011 Publication 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.

Supplementary Material

MP4 File (_talk2.mp4)

References

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

Cited By

View all
  • (2024)KATch: A Fast Symbolic Verifier for NetKATProceedings of the ACM on Programming Languages10.1145/36564548:PLDI(1905-1928)Online publication date: 20-Jun-2024
  • (2023)INDIANA—In-Network Distributed Infrastructure for Advanced Network ApplicationsInternational Journal of High Performance Computing Applications10.1177/1094342023117966237:3-4(442-461)Online publication date: 1-Jul-2023
  • (2023)Automation for Network Security Configuration: State of the Art and Research TrendsACM Computing Surveys10.1145/361640156:3(1-37)Online publication date: 5-Oct-2023
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

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
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]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 19 September 2011

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. domain-specific languages
  2. functional reactive programming
  3. network programming languages
  4. openflow

Qualifiers

  • Research-article

Conference

ICFP '11
Sponsor:

Acceptance Rates

ICFP '11 Paper Acceptance Rate 33 of 92 submissions, 36%;
Overall Acceptance Rate 333 of 1,064 submissions, 31%

Upcoming Conference

ICFP '25
ACM SIGPLAN International Conference on Functional Programming
October 12 - 18, 2025
Singapore , Singapore

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)179
  • Downloads (Last 6 weeks)43
Reflects downloads up to 22 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)KATch: A Fast Symbolic Verifier for NetKATProceedings of the ACM on Programming Languages10.1145/36564548:PLDI(1905-1928)Online publication date: 20-Jun-2024
  • (2023)INDIANA—In-Network Distributed Infrastructure for Advanced Network ApplicationsInternational Journal of High Performance Computing Applications10.1177/1094342023117966237:3-4(442-461)Online publication date: 1-Jul-2023
  • (2023)Automation for Network Security Configuration: State of the Art and Research TrendsACM Computing Surveys10.1145/361640156:3(1-37)Online publication date: 5-Oct-2023
  • (2023)Detection of Security and Privacy Attacks Disrupting User Immersive Experience in Virtual Reality Learning EnvironmentsIEEE Transactions on Services Computing10.1109/TSC.2022.321653916:4(2559-2574)Online publication date: 1-Jul-2023
  • (2023)Automatic Synthesis of Network Security Services: A First Step2023 32nd International Conference on Computer Communications and Networks (ICCCN)10.1109/ICCCN58024.2023.10230115(1-10)Online publication date: Jul-2023
  • (2022)Kleene algebra modulo theories: a framework for concrete KATsProceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3519939.3523722(594-608)Online publication date: 9-Jun-2022
  • (2022)Forwarding and Routing With Packet SubscriptionsIEEE/ACM Transactions on Networking10.1109/TNET.2022.317206630:6(2464-2479)Online publication date: Dec-2022
  • (2022)Compiling Cross-Language Network Programs Into Hybrid Data PlaneIEEE/ACM Transactions on Networking10.1109/TNET.2021.313230330:3(1088-1103)Online publication date: Jun-2022
  • (2022)Misconfiguration-Free Compositional SDN for Cloud NetworksIEEE Transactions on Dependable and Secure Computing10.1109/TDSC.2022.3185096(1-17)Online publication date: 2022
  • (2022)ReferencesSoftware‐Defined Networking10.1002/9781394186181.refs(121-137)Online publication date: 16-Dec-2022
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media