Ten years ago, computer networks were often built from proprietary hardware and software components, controlled by vendors and therefore closed to innovation. As John Markoff noted in a New York Times article, computer programmers worried about the negative impact on future advances in networking and began to push for increased programmability, open standards, and open source software platforms. In a similar vein, around the same time, Nate Foster and his fellow researchers began to design a network programming language to meet the prevailing constraints in the emerging field of software-defined networks (SDN). A decade later, their work is celebrated as one of the most influential in the field.
At this year’s International Conference on Functional Programming (ICFP 2021), the article that announced the network programming language, called Frenetic, at the 2011 meeting was hailed as its “most influential article”. The lead author of the article, Nate Foster, is an Associate Professor in the Department of Computer Science at the Ann S. Bowers College of Computing and Information Science. In addition to a team of researchers at Princeton, the authors also include former CS undergraduate Alec Story ’13, now senior software engineer at Google, and CS Ph.D. alumnus, David Walker ’01, now professor of computer science at Princeton University.
The awards committee noted that “Frenetic: A Network Programming Language” was “the first conference paper in a very influential line of work bridging programming languages and networking.” In their research, the authors of “Frenetic” accomplished several things: they analyzed the gaps in the state of the art of network programming languages; addressed these limitations in a new language design and described its implementation and performance on a suite of microbenchmarks.
As the authors explain, “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 functionality – they are typically defined at the low level of abstraction provided by the underlying hardware, and they fail to provide even rudimentary support for programming. modular. As a result, network programs tend to be complicated, error-prone, and difficult to maintain. The Frenetic network programming language is their answer to these problems.
Frenetic is “a high level language for programming distributed collections of network switches”. In this way, Frenetic “provides a declarative query language for classifying and aggregating network traffic as well as a library of functional reactive combiners to describe high level packet forwarding policies.” Unlike previous work in this area, these constructs are, by design, fully compositional, which facilitates modular reasoning and allows code reuse. Among other results, Frenetic “offers an exciting opportunity to apply guarantees of safety, reliability and performance using language-based techniques”.
As the award committee assessed the impact of the article, it highlighted how “this article inspired a mountain of follow-up work by these authors and others. The practical value of improving network programming and the influence of this article on subsequent state-of-the-art advancements make it a deserving recipient of the award.
In the decade since “Frenetic,” Foster and his fellow researchers at Cornell, Princeton, and elsewhere have developed a whole “family” of high-level languages for programming distributed collections of network switches, including Pyretic and NetKAT.