Nettle: A Language for Configuring Routing Networks


Andreas Voellmy and Paul Hudak


Interdomain routing is the task of establishing connectivity among the independently administered networks (called autonomous systems) that constitute the Internet. The protocol used for this task is the Border Gateway Protocol(BGP), which allows autonomous systems to independently define their own route preferences and route advertisement policies. By careful design of these BGP policies, autonomous systems can achieve a variety of objectives.

Currently available configuration and policy languages are low-level and provide only a few basic constructs for abstraction, thus preventing network operators from expressing their intentions naturally.

To alleviate this problem, we have designed Nettle , a domain-specific embedded language (DSEL) for configuring BGP networks, using Haskell as the host language. The embedding in Haskell gives users comprehensive abstraction and calculation constructs, allowing them to clearly describe the ideas generating their BGP policies and router configurations. Furthermore, unlike previous router configuration and policy languages, Nettle allows users to both specify BGP policies at an abstract, network-wide level, and specify vendor-specific router details in a single uniform language.

We have built a compiler that translates Nettle programs into configuration scripts for XORP routers and a simulator that allows operators to test their network configurations before deployment.



 author = {Voellmy, Andreas and Hudak, Paul},
 title = {Nettle: A Language for Configuring Routing Networks},
 booktitle = {Proceedings of the IFIP TC 2 Working Conference on Domain-Specific Languages},
 series = {DSL '09},
 year = {2009},
 isbn = {978-3-642-03033-8},
 location = {Oxford, UK},
 pages = {211--235},
 numpages = {25},
 url = {},
 doi = {},
 acmid = {1575965},
 publisher = {Springer-Verlag},
 address = {Berlin, Heidelberg},