Nettle

A Domain-Specific Language for Routing Configuration

Interdomain routing is the task of establishing connectivity among the independently administered networks, or autonomous systems (ASes), 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 policy-based route preferences. Unfortunately, current router platforms force operators to codify these policies into a small set of variables used by BGP's route-decision process, programmed at individual routers using low-level, vendor-specific configuration languages. Inconsistency among routers or even simple typing mistakes can propagate throughout the Internet in damaging ways, and few tools exist to simplify the configuration process. Furthermore, the interaction of seemingly consistent and correct local policies can produce global anomalies (such as persistent route oscillation).

This is the homepage of Nettle, a DSL for network router configuration, that alleviates many of these problems. It is type-safe (eliminating many common sources of errors), declarative (able to capture many network properties simply and abstractly), centralized (able to specify the configuration of all routers in a local network), platform neutral (able to work with multiple specific routers, although our focus has been on XORP), and robust (using theoretical networking results, we can eliminate certain kinds of network anomalies). Perhaps most importantly, using Nettle it is possible to express new network routing policy languages that can be translated into lower-level protocols such as BGP.

We have implemented Nettle as a DSEL embedded in Haskell that compiles into the configuration scripts for XORP routers. We have also written a simulator that allows operators to develop and test their network configurations before deployment.

Documentation

Currently, the best documentation of Nettle is our paper, to appear in LNCS proceedings of the 2009 IFIP Working Conference on Domain Specific Languages (DSL WC). There are also example configurations available in the source directory.

Download

The Nettle source, along with example configurations is available for download:Nettle.tar.gz.

Feedback

We are very interested in hearing from users. Please contact the contributors below with Nettle-related comments or questions.

Contributors

Nettle was developed in the Yale Haskell Group. The main contributors in this release are:

This research was supported in part by NSF grant number CCF-0728443 and by DARPA STTR grant ST061-002.

Nettle (last edited 2009-05-13 14:39:56 by AndreasVoellmy)