- Simplicity versus Flexibility versus Optimality
- Knowing the Problem You're Trying to Solve
- Overhead and Scaling
- Operation Above Capacity
- Compact IDs versus Object Identifiers
- Optimizing for the Most Common or Important Case
- Forward Compatibility
- Migration: Routing Algorithms and Addressing
- Making Multiprotocol Operation Possible
- Running over Layer 3 versus Layer 2
- Determinism versus Stability
- Performance for Correctness
- In Closing
The Designated Router election protocols in IS-IS and OSPF differ in an interesting way. In IS-IS the protocol is deterministic, which is considered by some people to be a desirable property. "Determinism" means that the behavior at this moment does not depend on past events. So the protocol was designed so that given a particular set of routers that are up, the same one would always be DR. In contrast, OSPF went for stability to cause minimal disruption to the network if routers go up or down. In OSPF, after a node is elected DR it remains DR unless it crashes, whereas in IS-IS the router with a "better" configured priority will usurp the role when it comes up.
A good compromise is reached in NLSP. Nodes change their priority by some constant (say, 20) after being DR for some time (say, a minute). Then if you configure all the routers with the same priority, the protocol acts like OSPF. If you configure all the routers with priorities more than 20 apart, it acts like IS-IS. To allow OSPF-like behavior among a particular subset of the routers (such as higher-capacity routers), set them all with a priority 20 greater than any of the other routers. In that way, if any of the high priority set is alive, a high-priority router will become DR, but no other router will usurp the role.