RIP——距离矢量型路由协议
RIP的邻居——直连对端的路由器
RIP 优先级:100——>直连:0 静态:60 ospf: 10
- 跳数——经过路由器的数量——15跳的工作半径
- cost——开销值——同一种动态路由协议选路比较开销值
接收到的数据包中开销值+1=本地加载进路由表中的开销值
不同路由协议之间选路靠优先级,同种路由协议之间选路靠开销
- 直连的优先级:0
- 静态的优先级:60
- RIP的优先级:100
- OSPF的优先级:10 (体系不同,优先级不同)
1.RIP算法—贝尔曼福特算法
- 当接收到数据包中含有本地路由表中没有的路由项时,则直接加载到本地路由表
- 当接收到数据包中的路由项在本地路由表中存在时,且下一跳地址不同,比较开销值,如果本地路由表中开销值小,则不更新
- 当接收到数据包中的路由项在本地路由表中存在时,且下一跳地址不同,比较开销值,如果本地路由表中开销值大,则将新接收到的路由项加载进路由表
- 当接收到数据包汇总的路由项在本地路由表存在时,且下一跳地址相同,将接收到的路由项覆盖进本地路由表中。
2.版本
-
RIPv1 ——是有类别的动态路由协议
有类别:传递路由信息过程中不携带子网掩码,只靠主类(A、B、C类地址)进行区分
不支持手工认证;
采用广播发送自己的数据包
-
RIPv2 ——是无类别的动态路由协议
无类别:传递路由信息过程中会携带子网掩码
支持手工认证:可以加密,保证了安全序
组播更新—224.0.0.9
应用层 UDP 端口号:520
-
RIPng——在IPv6网络使用
端口号:521
3.RIP v2的数据包
- request 请求包
- response 应答包(更新包)
4.工作过程
启动RIP协议,RIP会向每一个运行了RIP协议的接口发送rip的请求包,用来请求邻居的路由表
RIP的邻居接收到请求包之后进行回复,会将自己本地的路由表信息打包发送给对端(通过应答包)
RIP 会依然进行每30s发送一个应答包——周期更新
RIP 没有确认机制、保活机制
异步更新:防止瞬间对资源占用过大
原因:
①RIP没有确认机制(不能发送ACK确认包)
②RIP没有保活机制 RIP只能在中小型网络环境中使用,因为无法取消周期更新,会占用资源
-
初始化
- 在初始化阶段,RIP会从每一个运行了RIP协议的接口上发出RIP的请求报文,用于请求一份完 整的路由表。使用广播/组播方式
-
接收请求
- 启动了RIP协议的路由器在接收到请求数据包以后,会将路由表打包装进RIP应答报文中,通 过广播/组播的方式发送。
-
接收应答
-
路由器接收到RIP应答报文以后,会将接收到的路由表与本地路由表进行对比,将本地没有的 路由项加载到本地路由表中
-
RIP完成收敛
-
-
30s发送一次请求报文,周期更新
-
触发更新
-
当某个路由器的表项发生改变时,路由器使用RIP应答报文进行发送,通告全网RIP路由器,自 身路由表项的改变。
-
此时,RIP应答报文中仅具备改变的路由项内容
-
5.RIP 计时器
-
周期更新计时器 —— 30s
- 每台路由器启动RIP协议后,都有一个 ,只针对自身
- 为什么要进行周期更新
- UDP传输是不可靠的
- RIP协议本身不具备可靠性
- RIP本身没有确认机制和保活机制
- 当接收到请求报文时,必须立马回复应答报文
-
无效计时器
- 每台路由器通过RIP学习到的路由项,都会有一个无效计时器
- 时间:更新计时器的6倍—180s
- 当无效计时器为0时,路由器会认为该路由项不可达,但是不会立刻删除该路由项,而是将该路由项的COST值设置为16.
-
垃圾收集计时器
- 垃圾收集计时器—120s
- 当无效计时器为0时,路由器会给该路由项设置一个垃圾收集计时器,并删除无效计时器
- 当在垃圾计时器为0前,接收到该路由条目的更新信息时,会将垃圾回收计时器删除,并启动无效计时器
6.RIP的环路问题
原因:异步更新
举例:
- R1和R2都运行RIP协议,假定路由已经收敛,R1的路由表中会存在一条目的网络为1.0.0.0/8的路由,COST值为1(直连),R2的路由表中也会存在一条目的网络为1.0.0.0/8的路由,COST值为2(本地开销+1)
- 假设R1去往1.0.0.0/8的路由断开,R1检测到故障之后会立即将自己RIP路由表中去往1.0.0.0/8的路由项的COST设为16,表示1.0.0.0/8对于R1已经不可达
- 当R1等待将这条失效路由随着周期更新告知给R2时,却先收到了R2发送的关于1.0.0.0/8的路由信息,根据贝尔曼·福特算法,R1收到一条本地路由表没有的路由信息,会直接将该路由信息刷新到自己的本地路由表中,路由信息为目的网络为1.0.0.0/8的路由,COST值为3。即R1会认为自己虽然无法直达1.0.0.0/8,但是可以通过R2间接到达1.0.0.0/8
- 此时,R1和R2都各自存在一条去往1.0.0.0/8的路由,且下一跳都是指向对方的,这样就产生了路由环路
-
触发更新
-
仅更新改变的路由项
-
但触发更新不能完全避免环路的产生
-
当RIP路由表中的某些路由项的内容发送改变时,路由器应立即向它的所有邻居发布响应消息,而不要等待更新定时器所规定的下一个响应消息的发送时刻
-
水平分割
- 从此口进,不从此口出
-
毒性逆转
- 从此口进,从此口出,但是会将从此口接收到的路由项的COST值设置为16
-
水平分割和毒性逆转原理相同,但做法相反,所以,路由器仅执行一种操作
-
华为默认开启水平分割
-
当水平分割和毒性逆转同时开启时,则执行毒性逆转机制。
-
-
问题:能不能光使用水平分割或毒性逆转,不使用触发更新?
答:理论上可以,实际不行,因为触发更新不止降低环路产生的可能,还可以加快路由收敛
7.RIP的配置
[r1]rip 1 #进程id 1-65535 进入rip进程,id不同代表的协议则也不同
[r1-rip-1]version 2 #版本,华为默认是RIP V2
[r1-rip-1]network 1.0.0.0 #主类进行宣告,则指看网络位 1.0.0.0 是A类地址,掩码默认是8,只需要关注前8位
[r1-rip-1]network 12.0.0.0
宣告目的:
①激活接口 —— 只有激活的接口才能正常收发RIP数据包
②发布路由——
8.RIP的拓展配置
- 手工认证
在连接邻居的接口上配置密码;使得邻居间需要进行身份的核实
- 验证的两端都需要配置,且要选择同种加密方式
- 使用对象:RIP接口
进入相应接口
[R1]int g0/0/0 [R1-GigabitEthernet0/0/0]
进行手工认证
[R1-GigabitEthernet0/0/0]rip authentication-mode ?
hmac-sha256
md5 MD5 authentication #采用哈希值的算法,过程不可逆
simple Simple authentication #以明文进行认证
[R1-GigabitEthernet0/0/0]rip authentication-mode md5 usual cipher 123456
[R1-GigabitEthernet0/0/0]rip authentication-mode md5 usual ?
STRING<1-16>/<24,32> Plain text/Encrypted text
cipher Encryption type (Cryptogram) #明文存储
plain Encryption type (Plain text) #密文存储
-
手工汇总
- 使用对象:RIP接口
进入汇总网段发出的接口,进行手工汇总
[R1-GigabitEthernet0/0/0]rip summary-address 192.168.1.0 255.255.255 0
- 沉默接口:
用于连接PC终端的接口,这种接口将不再发送路由协议的信息;
不得用于连接邻居的接口,否则将导致协议无法正常收敛
- 只接收RIP数据包而不发送;
- 使用场景:另一端连的是PC 使用对象:RIP进程
- 不能对环回接口进行配置,只能对物理接口进行配置
进入RIP进程,配置沉默接口:
[R1-rip-1]silent-interface g0/0/1
加快收敛——使计时器时间变短,减少完成收敛时间
- 收敛:当网络结构发生变化一直到网络稳定经过的时间
- 针对整个RIP网络,一台路由器加快收敛,RIP网络中的其他路由器也要进行修改
- 使用对象:RIP进程
进入RIP进程,加快收敛:
[R1-rip-1]timers rip 30 180 120
- 缺省路由
边界路由器通过RIP向内部网络发布缺省信息;使得内部网络设备,自动产生缺省路由,且下一跳指向边界路由的方向
**使用对象:**边界路由器的RIP进程
进入边界路由器RIP进程,配置缺省路由:
[R3-rip-1]default-route originate
—缺省和汇总相遇会成环,使用空接口防环 :
[R1]ip route-static 192.168.1.0 24 NULL 0