[dev] Babel Admin Distance

Russ White russ at riw.us
Wed Sep 13 16:45:58 EDT 2017


> > I agree that both OSPF and ISIS have better loop prevention techniques
> > for external routes,
> 
> Could you please explain that?

I was sitting here trying to think of a specific example, but what it mostly comes down to is if I know the route is external or not, and hence whether I can prefer internals over externals. I can't really "remove" this information in a link state protocol other than passing through a flooding domain boundary, but I can remove this information in a distance vector pretty easily. When I'm setting up redistribution routing loops as examples, I always end up taking the information out of the D-V to create the loop. Perhaps more formally --

Routing loops form with multiple points of mutual redistribution because you lose the metric at the redistribution point, which means you can no longer compute loop free paths by assuming the shortest path will be loop free. If you replace the lost metric with a flag of some sort, you "can be" generally okay, except in some specific corner cases with timing (that I can't explain, I just have to think them through as examples). If you drop the "flag" in some way (aggregation is the prime example), then you lose all the information preventing the routing loop from forming. This is easier to do in a D-V than a link state. 

This goes back to "removing state _generally_ causes some form of suboptimization" -- in the case of mutual redistribution, the suboptimization can reach the point of a permanently formed routing loop (it's a double suboptimization in effect). State/Optimization/Surface -- removing the state introduces suboptimization. You can fix the problem by increasing the interaction surface between the two protocols and introducing a new flag and route preferences -- which increases protocol complexity and injects new state (of a different kind) as well. But if the added state is somehow lost (the interaction surface is flattened, in effect, and the newly created state is removed), the optimization (potentially) drops to null, and the network goes haywire.

Some professor someplace needs to codify this better, as I can just barely and roughly outline this stuff (I did write a book on it, but it's mostly examples, rather than math!). I didn't do that well at math in school.

I hope all that made sense.

😊

Russ 




More information about the dev mailing list