The Case for Separating Routing from Routers

Nick Feamster, Hari Balakrishnan, Jennifer Rexford, Aman Shaikh, Kobus van der Merwe
ACM SIGCOMM Workshop on Future Directions in Network Architecture (FDNA), Portland, OR, September 2004

Over the past decade, the complexity of the Internet's routing infrastructure has increased dramatically. This complexity and the problems it causes stem not just from various new demands made of the routing infrastructure, but also from fundamental limitations in the ability of today's distributed infrastructure to scalably cope with new requirements.

The limitations in today's routing system arise in large part from the fully distributed path-selection computation that the IP routers in an autonomous system (AS) must perform. To overcome this weakness, interdomain routing should be separated from today's IP routers, which should simply forward packets (for the most part). Instead, a separate Routing Control Platform (RCP) should select routes on behalf of the IP routers in each AS and exchange reachability information with other domains.

Our position is that an approach like RCP is a good way of coping with complexity while being responsive to new demands and can lead to a routing system that is substantially easier to manage than today. We present a design overview of RCP based on three architectural principles---path computation based on a consistent view of network state, controlled interactions between routing protocol layers, and expressive specification of routing policies---and discuss the architectural strengths and weaknesses of our proposal.

[PDF (119KB)] [PostScript (1140KB)] [Gzipped PostScript (259KB)]

Bibtex Entry:

@inproceedings{feamster2004separating,
   author =       "Nick Feamster and Hari Balakrishnan and Jennifer Rexford and Aman Shaikh and Kobus van der Merwe",
   title =        "{The Case for Separating Routing from Routers}",
   booktitle =    {ACM SIGCOMM Workshop on Future Directions in Network Architecture (FDNA)},
   year =         {2004},
   month =        {September},
   address =      {Portland, OR}
}