动态路由协议
概述
动态路由协议是路由器之间用来交换信息的语言,通过度量值来选择路由,所有配置动态路由的设备必须使用同一种协议。
动态路由的特点
- 减少了管理任务(不再需要手动配置路由)
- 额外占用网络带宽
度量值
- 跳数、带宽、负载、时延、可靠性、成本
收敛
- 使所有路由表都达到一致状态的过程
按照路由执行的算法分类
- 距离矢量路由协议
- 依据从源网络到目标网络所经过的路由器的个数选择路由
- RIP、IGRP
- 链路状态路由协议
- 综合考虑从源网络到目标网络的各条路径的情况选择路由
- OSPF、IS-IS
一般不太复杂并且拓扑不经常变动的网络可以使用静态路由,稳定且不会额外占用网络带宽,反之则使用动态路由(运营商就是使用的动态路由协议)
动态路由协议
RIP协议
- RIP协议的基本概念
- 定期更新(默认每30秒,端口号520,使用UDP协议)
- 邻居
- RIP度量值为跳数,最大跳数为15跳,16跳为unreachable
- 广播更新(是指通过路由器端口发送数据包,而不是狭义上的数据帧广播)
- 全路由表更新

在上图中,Metric字段表示跳数,直连路由C为0,R表示动态路由(RIP协议的简称)。当R2学习R1的路由表时,R1通过20.0.0.1这个端口发送的数据包,R2会将学习到的路由表中的条目的Next hop字段设置为此数据包的源IP,并且将Metric字段加1。(学习任何条目都要加1,因为是从相邻的路由器学习到的)
在RIP协议中,每次更新周期不会发送将要学习的路由表,在第一次更新周期时,R1无法学习到R3的路由表,因为R2还没有学习完成,R1只能学习到R2的路由表,在下一次更新周期中才会学习到R2已经学习到的R3的路由条目

上图为第二次更新周期(60秒)完成后的路由表状态。黑色部分新加入条目为第一次更新后加入的,蓝色的则为第二次更新周期后加入的。R1中学习到的R3的路由表Metric为2,是先由R2学习R3后将Metric字段加1,然后R1又学习到再加1得到的
全路由表更新会造成路由环路,RIP协议默认使用水平分割阻止路由环路的发生。从一个接口学习到的路由信息,不再从这个接口发送出去。同时也能减少路由更新信息占用的链路带宽资源。
命令
1 | Router>en |
v1版本在传输路由表时是不带子网掩码的,假设R1从R2学习到一个10.1.1.0/24的路由条目,由于没有子网掩码,R1会将这个IP地址作为10.0.0.0/8的默认A类地址。如果同时有2个条目分别来自10.1.1.1/24和10.2.2.0/24,并且他们的管理距离值和度量值都一样,这时会出现冲突,同时存在2个路由条目,指向不同的方向。
v2版本是携带子网掩码的,可以解决以上的问题,但学习到路由条目时会自动将其汇总为默认的A类IP地址(或者其他类型),此时可以使用no auto-summary命令取消汇总
关于RIP配置网络号不带子网掩码
由于RIP协议具有有类别路由选择的特性,从而在网络边界上会出现子网屏蔽的情形,这意味着network命令中不需要指定子网,仅仅需要指定相应的A类、B类、C类主网络地址。任何一个接口,只要它的配置地址属于network命令指定网络,都会运行RIP。
RIP只支持classful网络宣告。这个意思是RIP以主类网络来发布网段,不管你network后面跟的是什么,它都给你划到主类网络中去的。例如network 1.1.1.1 ,实际有效的show run 中会显示1.0.0.0 ;再如network 172.16.18.0 实际有效的是172.16.0.0
