Skip to main content

Frenetic: a network programming language

Author(s): Foster, Nate; Harrison, Rob; Freedman, Michael J; Monsanto, Christopher; Rexford, Jennifer; et al

Download
To refer to this page use: http://arks.princeton.edu/ark:/88435/pr17r8s
Full metadata record
DC FieldValueLanguage
dc.contributor.authorFoster, Nate-
dc.contributor.authorHarrison, Rob-
dc.contributor.authorFreedman, Michael J-
dc.contributor.authorMonsanto, Christopher-
dc.contributor.authorRexford, Jennifer-
dc.contributor.authorStory, Alec-
dc.contributor.authorWalker, David-
dc.date.accessioned2021-10-08T19:49:09Z-
dc.date.available2021-10-08T19:49:09Z-
dc.date.issued2011-09en_US
dc.identifier.citationFoster, Nate, Rob Harrison, Michael J. Freedman, Christopher Monsanto, Jennifer Rexford, Alec Story, and David Walker. "Frenetic: a network programming language." ACM SIGPLAN Notices 46, no. 9 (2011): pp. 279-291. doi:10.1145/2034574.2034812en_US
dc.identifier.issn0362-1340-
dc.identifier.urihttps://www.cs.princeton.edu/~dpw/papers/frenetic-draft-0411.pdf-
dc.identifier.urihttp://arks.princeton.edu/ark:/88435/pr17r8s-
dc.description.abstractModern 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.en_US
dc.format.extent279 - 291en_US
dc.language.isoen_USen_US
dc.relation.ispartofACM SIGPLAN Noticesen_US
dc.rightsAuthor's manuscripten_US
dc.titleFrenetic: a network programming languageen_US
dc.typeConference Articleen_US
dc.identifier.doi10.1145/2034574.2034812-
pu.type.symplectichttp://www.symplectic.co.uk/publications/atom-terms/1.0/conference-proceedingen_US

Files in This Item:
File Description SizeFormat 
FreneticNetworkProgrammingLang.pdf330.39 kBAdobe PDFView/Download


Items in OAR@Princeton are protected by copyright, with all rights reserved, unless otherwise indicated.