RIP协议使用一种专门用于小型网络中的的路由协议,该协议是基于Bellman-Ford算法的内部网关协议(IGP),为最早出现距离向量的路由协议。它使用跳数(Hop Count)来抉择最佳路径,RIP通过UDP协议转发路由信息,使用的端口号为520,计算机网络经过快速发展后,RIP诞生了RIP-1和RIP-2两个版本,RIP-2(对RIP-1进行了多项重要的扩充和改进,使得其在灵活性、功能性和安全性上都有了显著提升。
1. RIP版本1(RIPv1)
RIP的第一个版本是RIPv1,它是一个基于类的协议,支持的网络地址是类A、B、C。虽然RIPv1在当时工作良好,但由于未能支持变长子网掩码(VLSM)和CIDR,它的适用范围受到了限制。
2. RIP版本2(RIPv2)
为了弥补RIPv1的不足,RIPv2在1994年被提出,相比于其前身,RIPv2增加了对多播更新的支持,使得路由更新更加高效。此外,RIPv2引入了身份验证机制,提升了安全性。它允许使用变长子网掩码,使路由选择更加灵活。
3. RIPng(RIP新一代)
随着IPv6的普及,RIP协议也进行了相应的升级,形成了RIPng(RIP next generation)。RIPng专为IPv6网络设计,支持更大的地址空间和更复杂的网络结构,为新一代网络环境提供了良好的支持。
RIP发展中的重要里程碑:
- 1988年:RIP-1首次实现
- 1994年:RIP-2发布
- 1995年:RIPng针对IPv6推出
- 2000年后:开始逐渐被其他路由协议取代/(ToT)/~~
虽然RIP路由被后续路由协议取代,但是RIP协议作为先驱者为后续的路由协议设计提供了宝贵的经验
1.RIPV1报文
RIP-1的报文整体结构整个数据结构由一个头部和多个路由条目组成,头部包含协议的基本信息,而路由条目则描述具体的路由信息。因为是UDP协议进行转发,所以整个报文长度不能超过512个字节。
RIP-1报文格式
每个字段具体作用:
字段名 | 长度 | 含义 |
---|---|---|
Command | 8比特 | 标识报文的类型:1:请求报文,向邻居请求全部或部分路由信息;2:响应报文,发送自身全部或部分路由信息,每个响应报文最多包含25个路由表项。 |
Version | 8比特 | RIP的版本号:1:RIP-1;2:RIP-2 |
Must be zero | 16/32比特 | 必须为零字段。 |
AFI(地址族标识符) | 16比特 | 地址族标识,其值为2时表示IP协议。对于请求报文,此字段值为0。 |
IP Address | 32比特 | 路由的目的IP地址,可以是自然网段地址、子网地址或主机地址。 |
Metric | 32比特 | 路由的开销值。对于请求报文,此字段值为16。 |
RIP路由表建立
RIP路由表形成过程如上图所示
- RIP协议启动之后,R1会向相邻的路由器广播一个Request报文。
- 当Rr2从接口接收到R1发送的Request报文后,把自己的RIP路由表封装在Response报文内,然后向该接口对应的网络广播。
- R1根据R2发送的Response报文,形成自己的路由表。
RIP协议在更新和维护路由信息时主要使用四个定时器
- 更新定时器(Update timer):当此定时器超时时,立即发送更新报文,默认为每30秒发送一次。
- 老化定时器(Age timer):RIP设备如果在老化时间内没有收到邻居发来的路由更新报文,则把该路由的度量值置为16(表示路由不可达)。
- 垃圾收集定时器(Garbage-collect timer):如果在垃圾收集时间内不可达路由没有收到来自同一邻居的更新,则该路由将被从RIP路由表中彻底删除。
- 抑制定时器(Suppress timer):当RIP设备收到对端的路由更新,其cost为16,对应路由进入抑制状态,并启动抑制定时器。为了防止路由震荡,在抑制定时器超时之前,即使再收到对端路由cost小于16的更新,也不接受。当抑制定时器超时后,就重新允许接受对端发送的路由更新报文。
注意事项
- 如果设备不具有触发更新功能,一个路由表项最多需要300秒才能被删除(老化时间+垃圾收集时间)。
- 如果存在触发更新,那么一个路由条目最多需要120秒才能被删除(即为垃圾收集时间),触发更新可以缩短网络收敛时间,在路由表项变化时立即向其他设备发送该广播。
1. 网络支持方面
- 支持无类别域间路由(CIDR)
- 可以携带子网掩码信息
- 支持可变长度子网掩码(VLSM)
2. 路由信息扩展
- 可以传递下一跳路由器地址
- 支持路由标记(Route Tags)
- 路由信息更加丰富和精确
3. 安全性改进
- 增加了明文和MD5两种认证方式
- 可以对路由更新进行身份验证
- 防止未授权的路由信息注入
4. 性能优化
- 使用组播地址(224.0.0.9)替代广播
5. 其他增强
- 支持多协议路由
- 路由条目信息更加详细
- 可扩展性更强
RIPv2的报文结构
每个字段的作用
| 字段名 | 长度 | 含义 ||-----------------------------------|---------|-----------------------------------------------------------------------------------------------------------------------------------------|
| Command | 8比特 | 标识报文的类型: 1:Request报文,向邻居请求全部或部分路由信息; 2:Response报文,发送自己全部或部分路由信息,一个Response报文中最多包含25个路由表项。 |
| Version | 8比特 | RIP的版本号: 1:RIP-1; 2:RIP-2 || Must be zero | 16比特 | 必须为零字段。 |
| AFI(Address Family Identifier) | 16比特 | 地址族标识,其值为2时表示IP协议。对于Request报文,此字段值为0。 || Route Tag | 16比特 | 外部路由标记。 |
| IP Address | 32比特 | 该路由的目的IP地址,可以是自然网段的地址,也可以是子网地址或主机地址。 |
| Subnet Mask | 32比特 | 目的地址的掩码。 |
| Next Hop | 32比特 | 提供一个更好的下一跳地址。如果为0.0.0.0,则表示发布此路由的路由器地址就是最优下一跳地址。 |
| Metric | 32比特 | 路由的开销值。对于Request报文,此字段为16。 |
1. 路由聚合的定义
路由聚合(Route Aggregation)是将多个连续的IP地址或路由合并为一个单一的路由条目的过程。它的主要目的是减少路由表的大小,降低路由更新的复杂性,并提高网络的可扩展性。
2. RIPv2中的路由聚合
在RIPv2中,路由聚合的实现允许网络管理员通过将多个子网地址汇总为一个网络地址,从而减少在路由更新中传递的条目数量。RIPv2可以通过CIDR来实现聚合。
3. 路由聚合的优点
- 减小路由表大小:聚合能够显著减少路由表的条目数,从而优化存储和处理能力。
- 简化路由更新:网络中的路由器只需通告聚合后的汇总路由,而不是每个子网的路由,减少了带宽消耗和更新频率。
- 提高路由稳定性:减少了路由条目的数量可以降低网络的复杂性,提高收敛速度。
4. 配置示例
在Cisco设备中,可以通过以下命令配置RIPv2路由聚合:
c
router rip
version 2 //ripv2
network 192.168.0.0 //聚合的路由条目
aggregate-address 192.168.0.0 255.255.252.0 //aggregate-address命令用来定义聚合地址。这里,192.168.0.0和255.255.252.0代表了我们希望聚合的网络范围。
假设在一个网络中有以下几个子网:
- 192.168.1.0/24
- 192.168.2.0/24
- 192.168.3.0/24
在RIPv2中,可以将上述三个子网聚合为一个路由条目:
- 聚合为:192.168.0.0/22
这意味着在路由更新时,网络管理员只需传播一个聚合路由,而不是传播三个单独的子网路由。
为了提高网络的稳定性和效率,RIP实现了几种机制来防止环路并促进快速收敛。下面带大家了解一下RIP协议中的防环和快速收敛机制。
1. 水平分割
水平分割在rip中的原理十分简单,就是rip从哪个接口学习到的路由项,就不会再从接口发送从该接口学习到的路由项了,水平分割是为了防止两个路由器之间不停传递无效路由浪费资源,
2.毒性反转
毒性翻转的原理是将R1收到的路由返回,并将开销值设置为16(不可达状态)。这样如果R2收到有毒路由,而且正好R2中有从其他路由学习到的无用路由项就会将其删除
3.触发更新
触发更新的原理是,当路由信息发生变化时,运行RIP的设备会立即向邻居设备发送更新报文,而不必等待定时更新,从而缩短了网络的收敛时间。
注:鼎星安全有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
原文始发于微信公众号(鼎新安全):RIP协议学习
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论