协议分析10 RIP
更好的阅读体验:
- https://type.dayiyi.top/index.php/archives/248/
- https://blog.dayi.ink/?p=98
- https://cnblogs.cn/rabbit-dayi
- https://cmd.dayi.ink/nKnLEJJuQACUW2qAPCjbAQ
让我R.I.P,吧,11个作业。
插电,开机
步骤和要求
1)选择样例中的RIPv1&v2,打开网络拓扑;(可以自己设计拓扑或在样例的基础上修改)
2)启动设备;
3)从任意路由器端口启动wireshark,捕获报文。
4)将其中的路由器端口shutdown,过一段时间再undo shutdown,观察RIP报文的变化。
2、分析其中的RIP报文。
四、实验报告
分别针对RIPv1和RIPv2,回答下面的问题:
1、验证RIP协议的版本、使用的传输层协议及端口号、各种定时器的设置时间等。
2、给出协议报文截图并进行分析RIP协议工作过程。
1)RIP定时更新过程
2)RIP发现拓扑结构变化后的更新过程
3)RIP慢收敛的过程
附华为相关配置命令:
rip split-horizon 配置水平分割 (RIP 2 默认打开)
rip poison-reverse 配置毒性逆转
实验过程:
好有目的性,好评
我这里找了AR1抓包
跟交换机的那个接口
开始抓包后
停止设备:
开机:
RIPV1
40多个估计差不多了
WOW
它把包,发到了FF:FF:FF:FF:FF:FF
然后就不管了。
请求包
Routing Information Protocol
Command: Request (1) # 命令:请求(1),表示这个RIP消息是一个请求,用于从其他路由器获取路由信息。
Version: RIPv1 (1) # 版本:RIPv1(1)
Address not specified, Metric: 16 # 地址未指定,度量值为16,估计可以拿全部的包
Address Family: Unspecified (0) # 地址族:未指定(0),表示这个请求不是针对特定类型的地址(如IP地址)。
Metric: 16 # 度量值:16,距离无穷大
回应包
#udp包
User Datagram Protocol, Src Port: 520, Dst Port: 520
Source Port: 520 #源端口
Destination Port: 520 #目的端口
Length: 52 #长度
Checksum: 0x515f [unverified] #checksum
[Checksum Status: Unverified]
[Stream index: 0]
[Timestamps]
UDP payload (44 bytes)
Routing Information Protocol
Command: Response (2) # 命令类型:回应(2)
Version: RIPv1 (1) # 版本:RIPv1(1)
IP Address: 10.0.1.0, Metric: 1
Address Family: IP (2) # 地址族:IP(2)
IP Address: 10.0.1.0 # IP地址:10.0.1.0,具体的网络地址。
Metric: 1 # 度量值:1
IP Address: 10.0.14.0, Metric: 16
Address Family: IP (2) # 地址族:IP(2)
IP Address: 10.0.14.0 # IP地址:10.0.14.0,具体的网络地址。
Metric: 16 # 度量值:16
1、验证RIP协议的版本、使用的传输层协议及端口号、各种定时器的设置时间等。
- 版本:RIPV1
- 传输层协议:UDP
- 端口号:520
- 计时器:差不多30s
如果想了解更多关于华为路由器的RIP协议配置和定时器设置,建议查阅华为路由器的官方文档或咨询华为技术支持。
sys
display rip
- Update time(更新时间):30秒,表示每30秒发送一次更新的路由信息。
- Age time(老化时间):180秒,表示当一条路由信息在180秒内没有收到更新时,将被视为过时并从路由表中删除。
- Garbage-collect time(垃圾回收时间):120秒,表示在路由信息过时后,等待120秒后将其从路由表中删除。
- Triggered updates sent(触发更新发送次数):2次,表示在发生路由变化时,会立即发送更新的路由信息。
2、给出协议报文截图并进行分析RIP协议工作过程。
已经分析啦
2、1)RIP定时更新过程
按时间推断差不多是30s一个。
-
定期更新:RIP路由器每隔30秒向它的所有邻居发送完整的路由表。这被称为定时更新。这样做是为了维护网络中所有路由器的路由信息的最新状态。
-
跳数计算:在更新的过程中,每经过一个路由器,跳数加一。RIP规定路由的最大跳数为15,超过15则认为目的地不可达。
-
路由信息整合:当一个路由器接收到邻居路由器的路由表时,它会将这些信息与自己的路由表进行比较和整合,更新自己的路由表。
路由表
sys
dis ip routing-table
可以看到这4个是RIP更新的。
2、2)RIP发现拓扑结构变化后的更新过程
发现路由器寄了的时候,会直接广播相关的路由信息
当路由器又好了的时候,又广播可以了。目前距离是1:
-
触发更新:当路由器发现拓扑变化(如某个路由变得不可达或有更好的路径)时,它会立即生成一个触发更新消息,而不是等待下一个定期更新。
-
更新邻居:这个触发更新消息被发送给所有邻居路由器,通知他们有关这些变化。
-
邻居路由器处理:接收到触发更新的路由器会立即更新其路由表,并可能触发它们自己的触发更新。
rip split-horizon 配置水平分割 (RIP 2 默认打开)
rip poison-reverse 配置毒性逆转
这两个命令没成功用上
2、3)RIP慢收敛的过程
计数到无穷:RIP使用计数到无穷的方法来解决路由环路问题。当路由器无法到达某个网络时,它会将该网络的跳数设置为16(认为是无穷大)。
慢速更新:由于RIP使用定期更新和触发更新,当网络拓扑发生变化时,这些信息需要一定时间才能传播到所有路由器。这导致RIP在适应网络变化方面相比较其他协议(如OSPF或EIGRP)较慢,这种现象被称为慢收敛。
霍尔定律:这种慢收敛可能导致临时的路由环路和不稳定,直到所有路由器的路由表都收敛到新的稳定状态。这个收敛过程可能需要几分钟的时间。
分割水平(Split Horizon)
定义:分割水平规则指出,路由器不应该将任何路由信息发送回它原来学习到该信息的接口。简而言之,就是“不要将信息发送回源头”。
毒性逆转(Poison Reverse)
定义:毒性逆转是分割水平的一个增强。当路由器通过一个接口学习到某个路由,且该路由变得不可达时,路由器会通过同一个接口宣告这个路由为“毒性”(即设置度量值为无穷大,通常为16)。
比如寄了就会直接拉到16:
而且速度蛮快的。
启动差不多40s
差不多重新建树大概20s,也挺慢
RIPV2
调到version2
4个都要
sys
rip
version 2
让R3寄掉
先看现在的路由表
然后让他寄掉(关机)
消失了。
再开机:
又回来了。
包:
这里还是1
下一个就是16了。
请求
Routing Information Protocol
Command: Request (1)
Version: RIPv2 (2)
Address not specified, Metric: 16
Address Family: Unspecified (0)
Route Tag: 0
Netmask: 0.0.0.0
Next Hop: 0.0.0.0
Metric: 16 #这个还是16,剩下的都是0
回应
Routing Information Protocol
Command: Response (2) # 命令:响应(2)
Version: RIPv2 (2) # 版本:RIPv2(2)
IP Address: 10.0.3.0, Metric: 1 # IP地址:10.0.3.0,度量值:1。
Address Family: IP (2) # 地址族:IP(2),表示该路由条目用于IP网络。
Route Tag: 0 # 路由标签:0,通常用于区分不同来源的路由信息。
IP Address: 10.0.3.0 # IP地址:10.0.3.0,标识目的网络的IP地址。
Netmask: 255.255.255.0 # 网络掩码:255.255.255.0,用于确定网络地址的范围。
Next Hop: 0.0.0.0 # 下一跳:0.0.0.0,表示直接连接的网络,不需要通过其他路由器。
Metric: 1 # 度量值:1,表示到达该网络的跳数或成本,这里是最低成本。
IP Address: 10.0.123.0, Metric: 16
Address Family: IP (2) # 地址族:IP(2),同上。
Route Tag: 0 # 路由标签:0,同上。
IP Address: 10.0.123.0 # IP地址:10.0.123.0,标识另一个目的网络。
Netmask: 255.255.255.0 # 网络掩码:255.255.255.0,同上。
Next Hop: 0.0.0.0 # 下一跳:0.0.0.0
Metric: 16 # 度量值:16,不可达的标志。
Routing Information Protocol
Command: Response (2)
Version: RIPv2 (2)
IP Address: 10.0.3.0, Metric: 1
Address Family: IP (2)
Route Tag: 0
IP Address: 10.0.3.0
Netmask: 255.255.255.0
Next Hop: 0.0.0.0
Metric: 1
IP Address: 10.0.123.0, Metric: 1
Address Family: IP (2)
Route Tag: 0
IP Address: 10.0.123.0
Netmask: 255.255.255.0
Next Hop: 0.0.0.0
Metric: 1 #度量值
UDP部分:
User Datagram Protocol, Src Port: 520, Dst Port: 520
Source Port: 520
Destination Port: 520
Length: 52
Checksum: 0x0551 [unverified]
[Checksum Status: Unverified]
[Stream index: 4]
[Timestamps]
UDP payload (44 bytes)
1、验证RIP协议的版本、使用的传输层协议及端口号、各种定时器的设置时间等。
根据上面的信息:
- 版本:2
- 传输:UDP
- 端口:520
sys
dis rip
- 定时器设置时间:
- 更新时间(Update time):30秒,
- 老化时间(Age time):180秒
- 垃圾收集时间(Garbage-collect time):120秒
2、给出协议报文截图并进行分析RIP协议工作过程。
已经分析啦
2、1)RIP定时更新过程
RIP使用周期性更新来维护其路由表。每隔30秒(更新时间),RIP路由器会向所有RIP邻居发送整个路由表。
从提供的数据包中可以看到,RIP响应(Response)消息被定期发送到多播地址224.0.0.9。
RIP拓扑变化后的更新过程:
2、2)RIP发现拓扑结构变化后的更新过程
当RIP路由器检测到路由信息变化时(例如,链路故障或新路由的添加),它会立即发送触发更新(triggered update)。
这些更新不遵循正常的30秒周期,而是立即发送,以快速传播拓扑变化信息。
2、3)RIP慢收敛的过程
RIP是一种距离向量路由协议,其收敛过程相对较慢。这是因为更新是周期性的,且每次只传播到相邻路由器。
在某些情况下,例如“计数到无穷”问题,这可能导致路由环路和不稳定。
ripv1 ripv2
-
子网掩码支持:RIPv1不支持子网掩码,它假设所有网络都在相同的子网上。RIPv2增加了对子网掩码的支持,这允许更有效地处理不同大小的子网和超网
-
多播更新:RIPv1使用广播来发送整个路由表到所有网络设备,这可能会导致网络上不必要的流量。RIPv2改进了这一点,采用多播地址224.0.0.9发送更新,减少了不必要的网络流量和负载。
-
路由认证:RIPv2引入了简单的密码认证机制,这可以提高路由更新的安全性。
-
路由标记(Route Tagging):RIPv2支持路由标记,这使得它可以与其他不同类型的路由协议(如OSPF或BGP)更好地集成。路由标记可以用来表示路由信息的来源。
-
更好的可扩展性和灵活性:由于支持子网掩码和路由标记
-
支持可变长度子网掩码(VLSM):与RIPv1只支持固定长度子网掩码(FLSM)相比,RIPv2的支持可变长度子网掩码对于IP地址的有效使用和网络规划非常重要。