Routing design is widely considered as one of the most challenging parts of enterprise network design. The challenges come from the typical large scale of such networks, the diverse objectives to meet through design, and a wide variety of protocols and mechanisms to choose from. As a result network operators often find it difficult to understand and trouble-shoot the routing design of their networks. Furthermore, today's common practice of focusing on one router or one protocol at a time makes it a onerous task to reason about the network-wide routing behavior.