RIP协议中路由环路抑制研究

2014-11-19 19:00张国防
电脑知识与技术 2014年30期

张国防

摘要:该文论述了RIP协议路由环路形成的过程,并提出了解决环路的几种方法,并在Cisco Packet Tracer 平台上对水平分割和路由毒化进行了验证,解决了在运行RIP协议的网络中的路由环路问题。

关键词:RIP;路由环路;水平分割

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2014)30-7048-02

RIP路由协议作为一种距离矢量路由协议,由于它自身开销少、易于管理维护及配置简单使它成为使用最多的内部网关协议。但是由于RIP路由协议采用跳数来计算路由开销,路由器之间在相互学习路由时以学习到的容易形成环路。环路问题一直是导致网络质量下降甚至瘫痪的主要问题之一,并由此造成的信息不流畅带给企业或单位经济损失。如何解决RIP协议中的路由环路成为网络管理人员所关心的问题之一,该文提出了几种解决路由环路的机制,能很好地解决RIP协议中路由环路问题。

1 RIP协议

RIP协议是最被广泛使用的内部网关协议之一。RIP衡量一个路由的好坏是看它包含有多少个路由跳数,因此RIP协议是一种距离矢量路由协议。RIP允许一个通路最多由15个路由跳数组成,大于15的路由跳数相当于不可到达[1]。可见RIP协议只适用于中小规模的互联网。

1.1 距离-矢量算法

RIP是V-D算法(距离—矢量算法)在局域网上的直接实现。V-D算法的思想是这样的:网关周期性地向外广播路径刷新报文,主要内容是由若干(V,D)序偶组成的序偶表;(V,D)序偶中,V代表“向量”,标识该网关可以达到的信宿(网络或主机),D代表距离,指出该网关去往信宿V的距离;距离D按照路径上的路由跳数计数。其它网关收到某网关(V,D)报文后,据此按照最短路径原则对各自的路由表进行刷新[2]。

1.2 RIP报文的收发

RIP将协议的参加者分为主动方和被动两种。主动方主动地向外广播路劲刷新报文,被动方被动地接受路径刷新报文;主动方同时也接受来自其他主动方的V-D报文,并进行路径刷新。一般情况下,网关作为主动方,主机作为被动方,RIP规定,网关每30秒钟向外广播一个V-D报文,报文信息来自本地路由表。如果3分钟还没接受到相邻相邻网关的RIP报文,就认为它不可到达[3]。

1.3 故障的延迟

RIP协议存在的一个问题是当网络出现故障时,要经过较长的时间才能将此信息传递到所有的网关。

设四个网络由两个网关互连在一起,它们的连接和路由表的内容如图所示。现在假设网络4出现了故障,因此R3的路由表中,网络4是不可达的。但是R2收到R1发过来的广播路由表可经过2跳到达网络4,于是R2认为:R2到达网络4的距离=R2到R1的距离+R1到达网络4的距离=1+2=3,而R3发现R2广播过来路由表可经过3跳到达网络4,于是R3认为:R3到网络4的距离=R3到R2的距离+R2到网络4的距离=3+1=4。因此R3用此数据更新路由表。更新后的路由表通过网络3传递到R2,使R2也更新路由表,把到网络4的距离改为5。R2又将路由表广播给R1,把到网络4的距离改为6。这样经过一段时间后,R1、R2和R3的路由表中到达网络4的距离最终会超过15,即“网络4不可达”。像这种网络故障的传播往往需要较长的时间。在这期间路由表形成路由环路,由于环路的存在造成网络瘫痪。

2 路由环路

RIP协议默认情况下每30秒发送一次路由广播包,这种长时间间隔发送路由广播包的机制虽然节约了路由器资源和网络带宽,但是由此也造成了路由更新延迟,容易形成环路。例如,当路由器R1连接网络A和网络B网络,并且R1和R2、R3、R4全连接,如果网络A突然出现了故障,此时R1最先知道这一信息,此时R1做的工作是立即将自己路由表中到达网络A这一网络的路由条目的跳数改为16,即意味着此网络路由不可达,同时将这一信息引发R1触发路由更新,形成路由更新广播包发送给其的邻居,当R2在收到R1发过来的广播包之前的时刻,R2刚刚接受邻居R3的路由广播包,其中到达网络A的路由条目是1,也即是R2认为经过2跳可以到达网络A,由于R1发过来的路由更新包中包含到达网络A条目为16,R2将忽略次路由更新包。同时R1也收到了R2发过来的路由广播包,里面含有到达网络A的路由条目为2,根据最优路径优先原理,此时R1将接受R2广播包的路由更新条目,将到达网络A网络的路由跳数改写为3,即R1认为经过R2可以到达网络A,但事实上网络A已经变得不可达了,此时在网络中便形成了路由环路。路由环路一旦形成,数据包在环路上兜圈子,网络性能严重下降。

3 环路的解决方法

在三层路由RIP协议中,解决路由环路问题有六种方法。

3.1 定义最大跳数

RIP允许的最大跳计数为15,任何需要经过16跳到达的网络都被认为是不可达的。不管网络有没有出现环路,都认为路由不可达,将不再接受来自访问该网络的任何路由更新信息。

3.2 水平分割

水平分割采用路由信息不能在路由器之间进行往返发送的原理解决环路路由问题。B路由器从A路由器学习到的路由信息后,添加到自己的路由表里,在B路由器向外广播自己的路由信息时,B路由器不能将从A路由器那里学习的路由信息再发送给A路由器,同样道理,A路由器也不能将从B路由器那里学习到的路由信息再发送给B路由器。

3.3 路由中毒

路由中毒通过将故障网络设置成最大跳数加1来暗示网络不可达,比如网络1连接A路由器,当网络1出现故障时,A路由器通过将去往网络1的跳数设置为16跳,暗示网络1不可达,A路由器再将这个路由信息发给B路由器,这样B路由器就知道了网络1不可达。

3.4 毒性反转endprint

毒性反转是避免环路的另一种方法,当A路由器学习到B路由器发过来的网络2不可达的路由信息,首先它将网络2的跳数改为16跳,并根据毒性反转,它将向B路由器送回一条网络2不可达的路由更新。此时,水平分割对毒化路由是不起作用的。

3.5 触发更新

正常情况下,路由器会定期将路由表发送给邻居路由器。作为一种动态路由协议,RIP协议是周期性发送路由更新的,默认是每隔30秒发送一次路由更新,不管网络是否发生变化。而触发更新就是立刻发送路由更新,以响应某些变化,RIP协议采用触发更新机制实时对全网路由器路由信息进行管理,一旦发生网络变化,不等呼叫,立即发送更新信息,迅速通知相邻路由器,防止误传。

3.6 抑制定时器

路由器的抑制时间又称为是死亡时间,当路由器R1通过接口S1/0连接R2,而R2通过S1/1连接R3,当R1的接口S1/0发生了故

障,R2与R1相连的接口收不到R1发送过来的路由,处于Invalid状态,在R2路由表中前往R1的路由条目被标记为失效状态,经过180秒之后进入抑制状态,此时R3发过来的从R2学习过来的前往R1的路由被忽略,由于RIP的广播包的周期是30秒,在抑制期间,R3路由表中的前往R1的路由条目已经失效,因此,R3就不会广播前往R1的路由了,阻止了路由环路的形成。

4 实验验证

为分析验证理论,该文中实验在Packet Tracer模拟器上进行。Packet Tracer是由Cisco公司发布的一个辅助学习工具,为学习Cisco网络课程的人员提供了设计、配置、排除网络故障提供了网络模拟环境。用户可以在软件的图形用户界面上直接使用拖拽的方法建立网络拓扑,并可提供数据包在网络中行进的详细处理过程,观察网络实际运行情况。该文实验采用3台2811路由器连接4个子网:Vlan1、Vlan2、Vlan3和Vlan4.整个网络运行RIP路由协议,切在R1、R2和R3上关闭水平分割,关闭毒化路由,当网络达到收敛之后,Vlan4突然发生故障,R1继续向R2转发到达Vlan4的路由,R2向R3转发到达Vlan4的路由, 在R1、R2和R3之间形成环路。之后一次打开水平分割和毒化路由功能,路由环路得到抑制。

5 结束语

RIP协议是基于D-V算法的内部动态路由协议。它是第一个为所有厂商支持的标准IP选路协议,RIP协议以自身的优势:所占带宽比较小,容易配置、管理和实现,所以大多数的校园网和速率变化不大的连续的地区性网络使用RIP路由协议。针对RIP路由协议中产生环路的机制,在RIP协议采用开启水平分割、路由毒化功能的打开,解决了由于环路造成的网络拥挤问题。

参考文献:

[1] RIP协议详解[DB/OL.]http://wenku.baidu.com/view/fa518773f242336c1eb95e7f.html?re=view.

[2] 孙砚峰,李成忠,RIP协议的应用[J].计算机工程与应用,1999(4).endprint

毒性反转是避免环路的另一种方法,当A路由器学习到B路由器发过来的网络2不可达的路由信息,首先它将网络2的跳数改为16跳,并根据毒性反转,它将向B路由器送回一条网络2不可达的路由更新。此时,水平分割对毒化路由是不起作用的。

3.5 触发更新

正常情况下,路由器会定期将路由表发送给邻居路由器。作为一种动态路由协议,RIP协议是周期性发送路由更新的,默认是每隔30秒发送一次路由更新,不管网络是否发生变化。而触发更新就是立刻发送路由更新,以响应某些变化,RIP协议采用触发更新机制实时对全网路由器路由信息进行管理,一旦发生网络变化,不等呼叫,立即发送更新信息,迅速通知相邻路由器,防止误传。

3.6 抑制定时器

路由器的抑制时间又称为是死亡时间,当路由器R1通过接口S1/0连接R2,而R2通过S1/1连接R3,当R1的接口S1/0发生了故

障,R2与R1相连的接口收不到R1发送过来的路由,处于Invalid状态,在R2路由表中前往R1的路由条目被标记为失效状态,经过180秒之后进入抑制状态,此时R3发过来的从R2学习过来的前往R1的路由被忽略,由于RIP的广播包的周期是30秒,在抑制期间,R3路由表中的前往R1的路由条目已经失效,因此,R3就不会广播前往R1的路由了,阻止了路由环路的形成。

4 实验验证

为分析验证理论,该文中实验在Packet Tracer模拟器上进行。Packet Tracer是由Cisco公司发布的一个辅助学习工具,为学习Cisco网络课程的人员提供了设计、配置、排除网络故障提供了网络模拟环境。用户可以在软件的图形用户界面上直接使用拖拽的方法建立网络拓扑,并可提供数据包在网络中行进的详细处理过程,观察网络实际运行情况。该文实验采用3台2811路由器连接4个子网:Vlan1、Vlan2、Vlan3和Vlan4.整个网络运行RIP路由协议,切在R1、R2和R3上关闭水平分割,关闭毒化路由,当网络达到收敛之后,Vlan4突然发生故障,R1继续向R2转发到达Vlan4的路由,R2向R3转发到达Vlan4的路由, 在R1、R2和R3之间形成环路。之后一次打开水平分割和毒化路由功能,路由环路得到抑制。

5 结束语

RIP协议是基于D-V算法的内部动态路由协议。它是第一个为所有厂商支持的标准IP选路协议,RIP协议以自身的优势:所占带宽比较小,容易配置、管理和实现,所以大多数的校园网和速率变化不大的连续的地区性网络使用RIP路由协议。针对RIP路由协议中产生环路的机制,在RIP协议采用开启水平分割、路由毒化功能的打开,解决了由于环路造成的网络拥挤问题。

参考文献:

[1] RIP协议详解[DB/OL.]http://wenku.baidu.com/view/fa518773f242336c1eb95e7f.html?re=view.

[2] 孙砚峰,李成忠,RIP协议的应用[J].计算机工程与应用,1999(4).endprint

毒性反转是避免环路的另一种方法,当A路由器学习到B路由器发过来的网络2不可达的路由信息,首先它将网络2的跳数改为16跳,并根据毒性反转,它将向B路由器送回一条网络2不可达的路由更新。此时,水平分割对毒化路由是不起作用的。

3.5 触发更新

正常情况下,路由器会定期将路由表发送给邻居路由器。作为一种动态路由协议,RIP协议是周期性发送路由更新的,默认是每隔30秒发送一次路由更新,不管网络是否发生变化。而触发更新就是立刻发送路由更新,以响应某些变化,RIP协议采用触发更新机制实时对全网路由器路由信息进行管理,一旦发生网络变化,不等呼叫,立即发送更新信息,迅速通知相邻路由器,防止误传。

3.6 抑制定时器

路由器的抑制时间又称为是死亡时间,当路由器R1通过接口S1/0连接R2,而R2通过S1/1连接R3,当R1的接口S1/0发生了故

障,R2与R1相连的接口收不到R1发送过来的路由,处于Invalid状态,在R2路由表中前往R1的路由条目被标记为失效状态,经过180秒之后进入抑制状态,此时R3发过来的从R2学习过来的前往R1的路由被忽略,由于RIP的广播包的周期是30秒,在抑制期间,R3路由表中的前往R1的路由条目已经失效,因此,R3就不会广播前往R1的路由了,阻止了路由环路的形成。

4 实验验证

为分析验证理论,该文中实验在Packet Tracer模拟器上进行。Packet Tracer是由Cisco公司发布的一个辅助学习工具,为学习Cisco网络课程的人员提供了设计、配置、排除网络故障提供了网络模拟环境。用户可以在软件的图形用户界面上直接使用拖拽的方法建立网络拓扑,并可提供数据包在网络中行进的详细处理过程,观察网络实际运行情况。该文实验采用3台2811路由器连接4个子网:Vlan1、Vlan2、Vlan3和Vlan4.整个网络运行RIP路由协议,切在R1、R2和R3上关闭水平分割,关闭毒化路由,当网络达到收敛之后,Vlan4突然发生故障,R1继续向R2转发到达Vlan4的路由,R2向R3转发到达Vlan4的路由, 在R1、R2和R3之间形成环路。之后一次打开水平分割和毒化路由功能,路由环路得到抑制。

5 结束语

RIP协议是基于D-V算法的内部动态路由协议。它是第一个为所有厂商支持的标准IP选路协议,RIP协议以自身的优势:所占带宽比较小,容易配置、管理和实现,所以大多数的校园网和速率变化不大的连续的地区性网络使用RIP路由协议。针对RIP路由协议中产生环路的机制,在RIP协议采用开启水平分割、路由毒化功能的打开,解决了由于环路造成的网络拥挤问题。

参考文献:

[1] RIP协议详解[DB/OL.]http://wenku.baidu.com/view/fa518773f242336c1eb95e7f.html?re=view.

[2] 孙砚峰,李成忠,RIP协议的应用[J].计算机工程与应用,1999(4).endprint