5. RIP动态路由协议
5.1 RIP协议(Routing Information Protocol)
(1)是一个距离矢量路由选择协议。选择最佳路径的标准是跳数,如果到达目标网络经过的路由器最少,则该路径是最佳路径。其允许的最大跳数为15跳,也就是16跳的距离将被认为是不可到达的。
(2)在小型网络中RIP运转良好,但对于使用慢速的WLAN连接的大型网络或安装有大量路由器的网络来说,它的效率很低。因为即便网络没有变化,它也要每30秒发送路由表到所有激活的接口,会占用网络带宽。当某个路由器A意外down机时,需要由它的邻居路由器B将down的信息通告出去。当路由器B在180秒没有收到关于A的更新,就认为路由器A路由失效。所以这个周期性的更新是必须的。
(3)RIP有两个版本RIPv1和RIPv2,其中RIPv1使用类路由选择。其通告路由的信息中不包含子网掩码(采用各类地址默认的子网掩码,只支持等长子网),而且该协议是通过广播包通告路由信息。RIPv2是无类路由选择,可以传送子网掩码信息(支持变长子网),并且使用多播地址通告路由信息。
(4)RIP只使用跳数来决定到达某个网络的最佳路径。如果到达某个网络存在不止一条路径,并且都具有相同的跳数,则路由器会自动执行循环负载均衡。(最多对6个路径实现负载均衡)
(5)RIP协议让网络中所有路由器都和自己相邻路由器定期交换路由信息,并周期性更新路由表,使得从每一个路由器到每一个目标网络的路由都是最短的(跳数最少)。由于RIP协议是根据跳数而不是带宽来选择最短路径,因此RIP协议选择出来的路径不一定是最佳的。
5.2 RIP协议工作原理(以RIPv2版本为例)
(1)由于路由器A的E0直接连接192.168.10.0/24网段。因此在路由器A上就有一条到该网段的路由信息,距离为0,下一跳是E0接口。表示从E0接口出去,可以到达192.168.10.0/24网段。
(2)路由器A每隔30秒将自己的路由表通过多播地址通告出去,通过S0接口通告的数据包源地址是2.0.0.1,路由器B接到路由器通告会,就会把到192.168.10.0/24网段的路由添加到路由表,距离加1,下一跳路由器指向2.0.0.1。
(3)路由器B同样地将自己的路由表通过S1接口通告出去,通过S1接口通告的数据包源地址为3.0.0.1,路由器C收到通告后,会把到192.168.10.0/24网段的路由添加到路由表,距离加1变为2,下一跳路由器指向3.0.0.1。
(4)同理,到192.168.10.0/24网段的路由,还可以通过E路由器和D路由器传递到C,C路由器收到后,距离加1变为3,比通过路由器B的距离(跳数)大,因此路由器C忽略这条路由。这就是计算最短路径的距离矢量路由算法。
(5)如果路由器A和B之间连接断开了,路由器B就收不到路由器A发过来的路由信息,经过3分钟后,路由器B将到192.168.10.0/24网段的路由跳数设置为16。这意味着该网段不可到达,然后通过S1接口将这条路由信息通告给C,路由器C也将到该网段的跳数设置为16。
(6)这时路由器D向路由器C通告到192.168.10.0/24网段的路由,路由器C更新到该网段的路由下一跳指向6.0.0.1,跳数为3。接着路由器C向B通告到该网段的路由,B更新到该网段的路由,下一跳指向3.0.0.2,跳数为4.这样网络的路由器都有了到达192.168.10.0/24网段的路由。
5.3 配置和测试RIP协议
(1)在路由器上配置RIP协议
R1#config t R1(config)#router rip R1(config-router)#network 192.168.0.0 //采用默认子网掩码 R1(config-router)#network 192.168.1.0 R1(config-router)#network 192.168.4.0 R1(config-router)#version 2 R1(config-router)#no network 192.168.4.0 //取消到192.168.4.0/24网段的路由
(2)查看路由表
①R1#show ip route
②R1#show ip route rip //只显示通过RIP协议学到的路由信息
③R1#show ip protocols //查看RIP协议配置
(3)观察RIP协议路由更新活动
①R1#debug ip rip //启用RIP协议诊断,观察路由更新
②R1#undebug all //关闭诊断输出
(4)测试RIP协议的健壮性
①在路由器R2上,启用RIP协议诊断
②在路由器R3上,启用RIP协议诊断
③删除R1和R2链路,然后观察R2、R3到192.168.0.0/24网段的跳数(先设置为16),再重构建通过路由器D、E到该网段的路由。
5.4 RIP协议数据包报文格式
(1)Wireshark抓包:在R1→R2链路上,点击Start Capture。注意,如果接口使用的协议是PPP还是HDLC,如果没有配置使用,默认就是HDLC。
(2)RIP协议数据包
(3)RIP报文首部和路由部分
RIP报文首部和路由部分
①RIP首部占4个字节,其中的命令字段指出报文的意义。如1表示请求路由信息,2表示对请求路由信息的响应或未被请求而发出的路由更新报文。首部后面的“必为0”是为了4字节的对齐。
②RIPv2报文的路由部分由若干条路由信息组成。每条路由信息需要用20字节。地址族字段用来标志所使用的地址协议。(RIP可用于非TCP/IP协议,当使用IP地址时该字段为2)。路由标记填入自治系统号,这是考虑使RIP有可能收到本自治系统以外的路由选择信息。
③一个RIP报文最多可包括25条路由,因而RIP报文的最大长度是4+20×25=504字节。如果超过,必须再使用一个RIP报文来传送。