出于各种原因,很多网络都采用多路由协议。这种现象通常是由于合并和收购活动造成的,或者是在迁移期间临时出现的。
也许有许多路由器硬件厂商使用多种专有的协议与标准的协议连接在一起。一些路由器无论如何都将运行一个以上的协议,并且不可避免地从两个协议收到同样的路由,必须在转发这个数据包的过程中在这两个路由之间做出决策。这里的潜在问题是,这些协议也许有不同的“下一跳”,很轻易导致路由循环或者黑洞通信的问题。当你进行修改之后并且一切都正常工作之后,出现这类问题是非凡伤脑筋的。但是,随后在网络的另一部分做一些修改会对其中的一个协议产生级联效应,改变它的下一跳。这个故障是很难排除的,因为这个“问题”很可能出现在距离你进行修改地方数百英里远的地方,而且那个区域没有包含在你进行修改的测试计划中。
经常阅读SearchNetworking.com网站内容的读者毫无疑问都知道思科路由器。这个决定是采用治理距离(Administrative Distance)做出的。在这里,协议被分配一个8位的数值,这个数字越低,这个协议就越“可信”。例如,一个通过外部边界网关协议(E-BGP)(AD = 20)收到的路由将优先于通过OSPF(开放式最短路径优先协议)(AD = 110)收到的路由被选择。
然而,当设计多协议环境和排除多协议环境中的故障的时候,非凡是在规划具体的迁移步骤的时候,经常轻易忘记的问题是治理距离并不是这个过程中的第一个决策。
例如,假如你在计划把你的网络从一个协议转移到另一种协议,对于你来说最重要的是熟悉到前缀的长度比治理距离更重要。例如,考虑下面的路由:
192.168.1.0 /24 via RIP (AD = 120)
192.168.1.0 /20 via BGP (AD = 20)
在这个例子中,你的路由器将把这个数据包发送到RIP路由识别的下一跳,而不是BGP路由识别的下一跳,尽管BGP的AD是20。这是因为较长的前缀总是被优先选择的。当路由的长度一致的时候,AD才会起作用。
这件事为什么非常重要?这是当你在一个子网中正在从一个有类协议向无类协议转移时最轻易出现的陷阱。收到长度不一致的路由是很平常的。当然,只要你熟悉到将会发生什么事情并且为此做好预备,就没有问题。
你解决有关的问题可采取的策略是通过总结较小的路由让这些路由的长度都完全一致。显然,这在每一种情况下都是不轻易办到的,但是,这是一种选择。另一个选择是在你的路由选择域之间做出更明显的边界。你在这些路由选择域中不答应在这个网络中的所有的路由器同时运行两种协议,仅答应运行连接这些路由选择域的协议。一定要认真过滤路由选择域之间的广播。