rip协议

rip协议
TheStoneFishrip协议
一、分类
rip属于动态路由协议、IGP(内部网关协议)使用dv算法
rip只关心距离和矢量, 当rip包经过一个路由器后距离+1
二、rip协议的原理
1、ripV1
特点
功能 | 描述 |
---|---|
支持 | - 支持 IPv4 -不支持 VLSM(可变长子网掩码)和 CIDR |
自动汇总 | - 无法关闭自动汇总 |
发送数据包 | - 目标地址:255.255.255.255 - 端口:520 - 数据包不包含子网掩码 |
工作过程
失效计时器, 刷新计时器在同一时刻生成 失效计时器过60秒后刷新计时器执行
状态 | 描述 |
---|---|
启动状态 | 路由器启动 RIP 协议后,会在配置的接口上发送请求报文,请求邻居路由器发送其路由信息,同时收集直连网络的路由信息,初始化路由表。 |
路由发现 | 路由器通过接收到的 RIP 更新报文学习到其他路由器的路由信息,根据跳数和其他度量值来选择最佳路径,构建或更新路由表。 |
路由更新 | 每隔 30 秒,路由器会发送包含其路由表的更新报文给邻居路由器,同时也接收来自邻居的更新报文,以保持路由表的同步。 |
路由老化(失效计时器) | 对于每个动态路由条目,路由器会启动一个180秒的失效计时器。如果在这段时间内没有收到该路由的更新报文,路由器将该路由标记为无效,并将跳数设置为16,表示不可达。 |
垃圾回收(抑制计时器) | 失效计时器到时,立马进入180s的抑制计时器,用于防止路由环路, 如果在抑制期间从任何相邻路由器接收到少量的路由更新包,则恢复该网络并删除抑制计时器。 |
删除路由表项(刷新计时器) | 如果240秒后依然没更新则删除路由项。 |
计时器 | 描述 |
---|---|
周期更新计时器 | 默认30秒执行一次,路由器会发送包含其路由表的更新报文给邻居路由器,同时接收来自邻居的更新报文,以保持路由表的同步。 |
无效计时器 | 默认180秒,如果在该时间内没有收到该路由的更新报文,路由器会将该路由标记为无效(跳数设置为16,表示不可达, 状态设置为is possibly down)。此时,不会立即删除路由,但会启动抑制计时器。 |
刷新计时器 | 默认240秒,如果在该时间内没有收到该路由的更新报文,路由器会彻底删除该路由项。 |
触发更新计时器 | 更新可以自动触发,不需要等30秒的周期更新计时器。当以下条件之一发生时触发: - 接口的状态改变 - 某条路由被标记为不可达(跳数为16)触发毒化逆转 - 路由表中增加或删除路由 |
抑制计时器 | 当路由器的中收到跳数为16的条目或者无效计时器结束后,该路由会启动抑制计时器(默认180秒),如果在抑制期间从任何相邻路由器接收到路由更新包,则恢复该网络并删除抑制计时器。(抑制计时器工作的时间只有60秒后面就执行刷新计时器了) |
show ip protocols可以查看计时器
配置
配置接口信息
1 | R1(config)#int fa0/0 |
1 | R2(config)#int fa0/0 |
1 | R3(config-if)#int fa0/0 |
配置rip
1 | R1(config)#router rip |
1 | R1(config-router)#do show ip rip database |
1 | R2(config)#router rip |
1 | R2#show ip rip database |
1 | R3(config)#router rip |
1 | R3#show ip rip database |
宣告了对应的接口网络 然后查看rip数据库已经有了对应接口直连的路由信息
发送和接收规则
主网
主网(Major Network)的概念源于传统的IP地址分类方式,在这种方式中,IP地址被分为A类B类和C类网络
比如:
192.168.1.4/30和192.168.1.0/30属于同一主网192.168.1.0/24
192.168.1.0/24和192.168.2.0/24不属于同一主网
主网边界
主网边界是指A类、B类和C类网络之间的边界。当网络地址从一个主类网络范围跨越到另一个主类网络范围时,即形成了主网边界也就是两个网络不是同一个主网
比如:
192.168.1.4/30和192.168.1.0/30不是主网边界
192.168.1.0/24和10.0.0.1/8就属于主网边界
自动汇总
自动汇总会在跨越主网边界的时候执行ripV1是无法关闭的因为ripV1只支持有类网络需要在跨越主网边界的时候进行汇总处理, 会把网段汇总为有类网段, ripV2支持关闭自动汇总
部分 | 字段 | 位范围 | 长度 | 说明 |
---|---|---|---|---|
Header | Command | 0-7 | 8位 | 表示RIP包的命令类型,1为请求(Request),2为响应(Response)。 |
Header | Version | 8-15 | 8位 | 表示RIP协议的版本号,1表示RIPv1,2表示RIPv2。 |
Header | Must be zero | 16-31 | 16位 | 此字段必须为零,确保RIP包的兼容性。 |
Route Entries | AFI | 0-15 | 16位 | 地址族标识符,指示地址类型,IP地址的值为2。 |
Route Entries | Must be zero | 16-31 | 16位 | 必须为零,通常用于填充或保留。 |
Route Entries | IP address | 32-63 | 32位 | 表示路由条目中的目标IP地址。 |
Route Entries | Must be zero | 64-95 | 32位 | 必须为零,通常用于填充或保留。 |
Route Entries | Must be zero | 96-127 | 32位 | 必须为零,通常用于填充或保留。 |
Route Entries | Metric | 128-159 | 32位 | 表示到达该路由的跳数,范围为1到16,16表示不可达。 |
路由器ripv1启动后会通过请求和响应获取rip数据库路由信息
show ip rip database 可以查看rip数据库
在开启rip的路由器开机后发送了四个包
前三个包是r1和r2和r3发送的免费arp包, 用于通告mac地址和检测地址冲突和刷新arp缓存
请求数据包
下面是一个R1发送给R2的广播ripv1的请求rip数据包, 这是一个广播包R2收到后应该进行转发, 但是R2到R3是另一个网络, 不会进行转发广播包
所有被宣告的接口会发送一个广播请求来请求rip表
响应(更新)数据包
下面是一个R2响应R1请求的数据包, 这里show ip rip database可以查看rip路由表项, R2会发送自己的所有rip路由项
下面有两项路由条目
1 | 启用了自动汇总 |
这里R2响应了R1一个路由条目192.168.1.4
另一条192.168.1.0/30因为水平分割所以没有发送给R1
发送接口192.168.1.2/30和192.168.1.4/30是同一有类主网(192.168.1.0/24), 掩码也相同直接发送
R1接收R2的响应192.168.1.4, 这不是一个主网络号,和接口接口192.168.1.1/30在同一主网, 用接口掩码进行掩码操作后192.168.1.4 & 255.255.255.252 = 192.168.1.4这是一个网络地址掩码等于接口掩码放入路由表
路由更新
R1接收到R2响应的数据包后会更新自己的表因为表里面没有对应的路由
然后R3发送给R1的请求被响应后这个网络就成功收敛了, 全部路由器都成功了获取到了所有路由
1 | R1#show ip rip database |
1 | R2#show ip rip database |
1 | R3#show ip rip database |
接下来R2会定时发送更新报文, R1和R3不会发送更新报文因为水平分割
2、ripV2
特点
功能 | 描述 |
---|---|
支持 | - 支持 IPv4 - 支持 VLSM(可变长子网掩码)和 CIDR(无类域间路由) - 支持路由更新的认证功能,允许配置明文或MD5加密认证 - 支持外部tag - 支持指定下一跳。 |
自动汇总 | - 默认启用自动路由汇总,但可以手动关闭<br / |
发送数据包 | - 目标地址:224.0.0.9(多播地址) - 端口:520 - 数据包包含子网掩码 |
工作原理
同上
发送和接收规则
由于ripV2携带子网掩码发送的规则和接受规则不需要那么麻烦直接发送就行了
三、rip特性
水平反转和毒性逆转
水平分割是一种简单的防环策略, 规则是:路由器不会通过接收到某个路由信息的接口重新发送该信息。这个策略基于以下逻辑:如果路由器A从路由器B得知到达某网络的路径,它就不会将该路径信息再通过同一个接口发回给路由器B。这样可以减少错误路由信息的传播,避免路由环路的形成。
直连本地路由也不会通过学习到的接口重新发送信息
比如本地接口192.168.1.5/30不会发送192.168.1.4/30路由出去
毒性逆转是一种增强型的防环机制, 毒性逆转的规则是:当一条路径信息变为无效之后,路由器并不立即将它从路由表中删除,会把跳数设置为16跳(不可达), 利用这种方式,可以快速清除对方路由表中的无用路由。
断开R2和R3的链路后, R2向R1发送数据包
当R1收到包后192.168.1.4/30条目马上进入了is possibly down
1 | R1#show ip rip database |
然后在240秒刷新计时器触发后删除。