Θ Metarouting

The Vision

Can we do for routing protocols what YACC did for parsers? That is, can we define a high-level declarative language that can be used to specify routing protocols in such a way that implementations can be generated automatically? This is the goal of metarouting. Like YACC, metarouting is based on a solid theoretical foundation. Whereas YACC is based on context-free grammars, metarouting is based on algebraic structures related to semirings (Sobrinho's Routing Algebras are an example). Routing algebras provide an abstract formalism which captures the policy component of routing protocols --- how routes are described, how best routes are selected, and how routing policies are defined and applied.

A routing protocol is an algebra together with a mechanism (such as link-state or path-vector) for computing routing solutions. For correctness, each mechanism requires specific algebraic properties to hold in the associated algebra. The main innovation of metarouting centers around the definition of a metalanguage for the specification new routing algebras. The language is designed so that the algebraic properties required by mechanisms can be automatically derived in much the same way that type information is derived in programming languages.

We envision a world in which routers do not implement any routing protocols but rather come with a routing metalanguage compiler. The network operator community could then take on the task of standardizing and developing routing protocols, leaving the definition and implementation of the metalanguage to the IETF and the vendors.

Progress Report (July 2011)

Beta-release of metarouting prototype: mre_beta.tgz. Implementation is in Coq (by Vilius Naudziunas), with extracted code in Ocaml. A simple interface is provided, writting in Ocaml. Note: this is a very preliminary version.

In the process of implementing a prototype system based on the ideas of the SIGCOMM 2005 paper, we encountered the following issues.