c(目的网络)----router A------router B
在正常情况下,对于目标网络,A路由器的metric值为1,B路由器的metric值为2 。当目标网络与A路由器之间的链路发生故障而断掉以后:
c(目的网络)----router A------router B
A路由器会将针对目标网络C的路由表项的metric值置为16,即标记为目标网络不可达,并预备在每30秒进行一次的路由表更新中发送出去,假如在这条信息还未发出的时候,A路由器收到了来自B的路由更新报文,而B中包含着关于C的metric为2的路由信息,根据前面提到的路由更新方法,路由器A会错误的认为有一条通过B路由器的路径可以到达目标网络C,从而更新其路由表,将对于目标网络C的路由表项的metric值由16改为3,而对于的端口变为与B路由器相连接的端口 。很明显,A会将该条信息发给B,B将无条件更新其路由表,将metric改为4;该条信息又从B发向A,A将metric改为5……最后双发的路由表关于目标网络C的metric值都变为16,此时,才真正得到了正确的路由信息 。这种现象称为“计数到无穷大”现象,虽然最终完成了收敛,但是收敛速度很慢,而且浪费了网络资源来发送这些循环的分组 。
另外,从这里我们也可以看出,metric值的最大值的选择实际上存在着矛盾,假如选得太小,那么适用的网络规模太小;假如选得过大,那么在出现计数到无穷大现象的时候收敛时间会变得很长 。
3.3. 为了提高RIP性能的两项措施
3.3.1. 水平分割
在上面的“计数到无穷大”现象中,产生的原因是A、B之间互相传送了“欺骗信息”,那么针对这种情况,我们自然会想到假如能将这些“欺骗信息”去掉,那么不就可以在一定程度上避免“计数到无穷大”了吗 。水平分割正是这样一种解决手段 。
“普通的水平分割”是:假如一条路由信息是从X端口学习到的,那么从该端口发出的路由更新报文中将不再包含该条路由信息 。
“带毒化逆转的水平分割”是:假如一条路由信息是从X端口学习到的,那么从该端口发出的路由更新报文中将继续包含该条路由信息,而且将这条信息的metric置为16 。
“普通的水平分割”能避免欺骗信息的发送,而且减小了路由更新报文的大小,节约了网络带宽;“带毒化逆转的水平分割”能够更快的消除路由信息的环路,但是增加了路由更新的负担 。这两种措施的选择可根据实际情况进行选择 。
3.3.2. 触发更新
上面的“水平分割”能够消除两台路由器间的欺骗信息的相互循环,但是当牵涉到三台或者以上的路由器时,效果就有限了 。考察下面的网络:
【rip协议理解】 ------------/-----
C------- D----- E
A----------
- -------- ------/
--
--
--
----
B-----------------------
----
E是目标网络
针对目标网络,各路由器的路由信息分别如下:
A:3 C
B:2 D
C:2 D
D:1 直连
当D与目标网络之间发生故障中断以后,B和C都能正确的从D得到网络不可达的信息,但是,从上面的路由信息中可以看出,A虽然不会给C发送错误信息,但是A可能在未收到网络不可达信息之前就给B发送了路由信息,让B错误的认为可以通过A到达目标网络,继而又会出现“计数到无穷大”的现象 。
触发更新就是为了针对上述情况进行的一种改善,它的具体实现措施是:路由器一旦察觉到网络变化,就尽快甚至是立即发送更新报文,而不等待更新周期结束 。只要触发更新的速度足够快,就可以大大的防止“计数到无穷大”的发生,但是这一现象还是有可能发生的 。
推荐阅读
- MDLC协议
- 802.11协议族简介
- 1 TCP/IP协议栈在嵌入式异构网络中的应用
- 网络协议X档案全集
- 协议分析和分析器
- 九 网络沟通的桥梁-协议X档案
- Internet面临协议升级
- 单位犯罪怎么理解
- SIP协议全方位概要介绍
- HTTP协议的结构
