Nettle: A Language for Configuring Routing Networks
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.
KeywordsPolicy Language Community Attribute Border Gateway Protocol Route Network Open Short Path First
- 1.Rekhter, Y., Li, T., Hares, S.: A Border Gateway Protocol 4. Internet Engineering Task Force (2006)Google Scholar
- 2.Alaettinoglu, C., Villamizar, C., Gerich, E., Kessens, D., Meyer, D., Bates, T., Karrenberg, D., Terpstra, M.: Routing Policy Specification Language (RPSL). Internet Engineering Task Force (June 1999)Google Scholar
- 3.Peyton Jones, S., et al.: The Haskell 98 language and libraries: The revised report. Journal of Functional Programming 13(1), 0–255 (2003)Google Scholar
- 4.XORP, Inc.: Extensible Open Routing Platform, XORP User Manual, Version 1.6 (January 2009)Google Scholar
- 7.Hudak, P.: Building domain specific embedded languages. ACM Computing Surveys 28A (December 1996) (electronic)Google Scholar
- 8.Hudak, P.: Modular domain specific languages and tools. In: Proceedings of Fifth International Conference on Software Reuse, pp. 134–142. IEEE Computer Society, Los Alamitos (1998)Google Scholar
- 9.Griffin, T.G., Jaggard, A.D., Ramachandran, V.: Design principles of policy languages for path vector protocols. In: SIGCOMM 2003: Proceedings of the 2003 conference on Applications, technologies, architectures, and protocols for computer communications, pp. 61–72. ACM, New York (2003)CrossRefGoogle Scholar
- 10.Zhang, R., Bartell, M.: BGP Design and Implementation. Cisco Press (2003)Google Scholar
- 13.Ramachandran, V.: Foundations of Inter-Domain Routing. PhD thesis, Yale University (May 2005)Google Scholar
- 16.Thau, B., Joseph, L., Hellerstein, M., Stoica, I., Ramakrishnan, R.: Declarative routing: Extensible routing with declarative queries. In: Proceedings of ACM SIGCOMM 2005 (2005)Google Scholar
- 17.Meyers, D., Schmitz, J., Orange, C., Prior, M., Alaettinoglu, C.: Using RPSL in Practice. Internet Engineering Task Force (August 1999)Google Scholar