TY - GEN
T1 - Frenetic
T2 - 16th ACM SIGPLAN International Conference on Functional Programming, ICFP'11
AU - Foster, Nate
AU - Harrison, Rob
AU - Freedman, Michael Joseph
AU - Monsanto, Christopher
AU - Rexford, Jennifer L.
AU - Story, Alec
AU - Walker, David P.
PY - 2011
Y1 - 2011
N2 - 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 runtime 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.
AB - 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 runtime 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.
KW - Domain-specific languages
KW - Functional reactive programming
KW - Network programming languages
KW - OpenFlow
UR - http://www.scopus.com/inward/record.url?scp=80054087519&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=80054087519&partnerID=8YFLogxK
U2 - 10.1145/2034773.2034812
DO - 10.1145/2034773.2034812
M3 - Conference contribution
AN - SCOPUS:80054087519
SN - 9781450308656
T3 - Proceedings of the ACM SIGPLAN International Conference on Functional Programming, ICFP
SP - 279
EP - 291
BT - ICFP'11 - Proceedings of the 2011 ACM SIGPLAN International Conference on Functional Programming
Y2 - 19 September 2011 through 21 September 2011
ER -