Rip
路由信息协议RIP(Routing information Protocol)的简称,它是一种较为简单的内部网关协议IGP(Interior Gateway Protocol),主要应用于规模较小的网络中。
协议优先级为100,它是一种基于距离矢量(Distance-Vector)算法的协议,传言机制,使用跳数作为度量,它通过UDP报文进行路由信息的交换,使用的端口号为520。
RIP主要应用于规模较小的网络中,路由器有效跳数为15跳,最大跳数不能超过16跳,否则路由信息不可达。RIP路由协议设置最大跳数为15跳是因为可能形成环路,因此才定义16跳为不可达。毒性逆转主要是为了尽快扩散不可达链路信息:当一个链路不可达的时候就直接把该链路置为16跳并实现触发更新,这样所有的对端设备就可以很快知道该链路不可达了。缺省情况下,设备到与它直接相连网络的跳数为0,通过一个设备可达的网络的跳数为1,其余依此类推。也就是说,度量值等于从本网络到达目的网络间的设备数量。为限制收敛时间,RIP规定度量值取0~15之间的整数,大于或等于16的跳数被定义为无穷大,即目的网络或主机不可达。由于这个限制,使得RIP不可能在大型网络中得到应用。
为提高性能,防止产生路由循环,RIP支持水平分割(Split Horizon)和毒性逆转(Poison Reverse)功能。
路由器从邻居那获得非直连网络的路由信息,路由器每经过特定时间周期向邻居发送自己的路由表。
一. RIP工作原理:
① 路由器运行RIP后,会首先发送路由更新请求,收到请求的路由器会发送自己的RIP路由进行响应。
② 网络稳定后,路由器会周期性(30S)发送路由更新信息。
二. RIP-v1:
有类别路由协议(Classful Routing Protocol),不支持无类路由,在传递过程中不携带子网掩码。
RIP是一个基于UDP协议的,并且RIP-1的数据包不能超过512字节,并且RIP的路由最多只能存在25条路由条目,RIP-1的协议报文中没有携带掩码信息,它只能识别A、B、C类这样的自然网段的路由,因此RIP-1无法支持路由聚合,也不支持不连续子网(Discontiguous Subnet)。
1. RIP-v1特点:
① RIPv1在发送请求报文和响应报文的时候,目的地址都是广播地址,即:255.255.255.255。这样的报文发送方式,网络中的所有设备都会收到
② RIPv1是有类路由协议,因此它在传递路由的时候不携带子网掩码,所以无法支持可变长度的子网掩码(VLSM)和无类域间路由(CIDR)。
③ 因为RIPv1是有类路由协议,所以会自动汇总,且无法关闭
④ RIPv1还无法支持链路之间的认证
⑤ RIPv1对路由没有标记的功能
⑥ RIPv1发送的response的报文里面没有next-hop属性
2. RIP-v1报文:
(1)RIP-v1报文特点:
① 使用广播地址进行路由更新
② 基于UDP进行传递,源端口号和目标端口号都为520
③ 每30S泛洪一次广播路由表,180S路由条目失效。
注:只有首次配置完RIP后会发送Request请求信息,在收敛后,两端会每隔三十秒自动发送Response刷新邻居的路由表
(2)RIP-v1报文格式:
RIP报文为4Byte的头部+20Byte的路由信息,由于历史原因,一个RIP报文不能超过512Byte,中最多可以存放25条路由信息,所有RIP报文的总长度为:25*20+4=504(Byte)
- 头部(4Byte):
① Command:1Byte,命令类型:
a) 1为Request
b) 2为Response
② Version:1Byte,版本,用于标识RIP版本
③ Must be Zero:2Byte,保留
- 路由信息(20Byte):
① Address Family Identifier:地址协议簇,V1中总为2(IP)
⑤ IP Address:路由前缀
⑥ Metric:开销值
(3)RRIP-v1报文类型:
① Request请求报文:
路由器会在以下情况发送Request报文:
① 运行RIP的路由器重启
② RIP进程重启
③ 当一个down又UP的时候,接口会发送Request报文
注:Request报文中,AFI、IP前缀都为0,Metric为16
② Response回复报文:
3. . RIP-v1转发规则:
(1)发送更新规则:
① 发送路由与发送接口不为同一主类网络,将发送的路由条目汇总成主类网络,广播出去(自动汇总)
② 发送路由与发送接口为同一主类网络,路由条目与发送接口的掩码一致,不做任何汇总直接发送该路由
③ 发送路由与发送接口为同一主类网络,路由条目与发送接口的掩码不一致,生成一条主类路由通告出去
(2)接收更新规则:
① 接收到的路由与接收接口地址不为同一主网,直接匹配主网掩码
② 接收到的路由与接收接口地址属于同一主网
- 匹配主网掩码,主机位如果为全零,放入路由表
- 匹配接口掩码,主机位如果为全零,放入路由表
- 匹配32位主机地址,放入路由表
三. RIP-v2:
1. RIP-v2特点:
① RIP-v2支持无类网络
② 支持VLSM和CIDR,同时支持路由汇总
③ 支持对端明文认证和MD5认证
④ 支持Tag标签
⑤ 支持Next-Hop属性
⑥ 以组播的形式发送报文,组播地址为224.0.0.9/00-01-5E-00-00-09
注:可以使用命令将组播变为单播和广播
2. RIP-v2报文:
(1)RIP-v2报文特点:
① 使用组播地址进行路由更新,目标地址为224.0.0.9/00-01-5E-00-00-09
② 基于UDP进行传递,源端口号和目标端口号都为520
③ 每30S泛洪一次广播路由表,180S路由条目失效
注:只有首次配置完RIP后会发送Request请求信息,在收敛后,两端会每隔三十秒自动发送Response刷新邻居的路由表
(2)RIP-v2报文格式:
RIP-v2报文为4Byte的头部+20Byte的路由信息,一个RIP报文中最多可以存放25条路由信息,所有RIP报文的总长度为:25*20+4=504(Byte)
- 头部:
① Command:命令类型:
a) 1为Request
b) 2为Response
② Version:版本,用于标识RIP版本
③ Unused:保留
- 路由信息:
④ Address Family Identifier:地址协议簇,表示下面承载的信息,IP路由或认证字段
⑤ Route Tag:路由标签
⑤ IP Address:路由前缀
⑥ Subnet Mask:子网掩码
⑦ Next Hop:下一跳
⑧ Metric:开销值
注:V2报文在V1报文增加了以下选项:
① 增加了掩码
② 增加了Next Hop
③ 增加了验证
注:增加了验证的报文,所以直接将使用路由空间进行认证
(3)RIP-v2报文类型:
① Request请求报文:
② Response回复报文:
2. 路由汇总:
RIP-v2路由默认会对vlsm路由进行主类网络汇总,也可以使用手工方式进行路由汇总。
[Huawei-GigabitEthernet0/0/1]rip summary-address 192.168.0.0 255.255.0.0
注:如果汇总中的明细路由开销值(跳数)不一致,则选择明细路由跳数最小的开销值作为汇总路由的开销值
汇总路由特点:
① 抑制明细路由,只通告一条汇总粗路由
② 明细路由全部消失,汇总路由消失
③ 汇总路由的开销值为明细路由中开销值最好的
汇总路由优点:
汇总路由的优点: |
汇总路由的缺点: |
1.减少路由表的路由条目 |
1.汇总度过大,造成路由黑洞 |
2.减小发送的路由条目 |
2.可能造成环路 |
3.减少路由抖动对网络的影响 |
|
- 汇总路由造成环路场景1:
当AR1访问10.1.1.1、10.1.2.1以外的网段时,造成环路
注:解决路由汇总可能出现环路的方法:
为写一条静态路由,路由条目与汇总路由一致,将目标端口指向Null口,没有匹配到的路
由最终送入Null0
- 汇总路由造成环路场景2:
如果两端的聚合路由相同,汇总条目后加入参数avoid-feedback命令,本接口将不再学习到和已发布的聚合IP地址相同的聚合路由,从而起到防止产生环路的作用,相当于汇总路由无意义
3. 验证:
验证对密码加密,可以防止攻击者的非法设备接入当前网络,但验证无法对报文进行加密。
RIP-v2版本支持对端对端的验证:
① 明文认证
② MD5认证
注:RIP-v1不支持密码认证,在端口上配置密码,也不会进行验证
(1)明文认证:
在传输报文时,密码会明文显示传输,最多可以配置16个字母,也就是16Byte,占用了4Byte的IP地址+4Byte的掩码+4Byte的开销值
注:默认如果不配置RIP认证,RIP路由报文可以存在25条路由条目,如果启用明文认证,认证字段为20Byte,所以占用了一条路由条目,所以如果配置了认证的UDP数据包,最多可以存放24条路由条目
配置命令:
[Huawei-GigabitEthernet0/0/1]rip authentication-mode simple Huawei
注:ensp验证密码需要重新启动接口
(2)MD5认证:
使用MD5认证会将密码生成密文
注:默认如果不配置RIP认证,RIP路由报文可以存在25条路由条目,如果启用MD5认证,认证头会占用第一个路由空间20Byte,认证字段会占用最后一个路由空间为20Byte,所以占用了两条路由条目,所以如果配置了MD5认证的UDP数据包,最多可以存放23条路由条目
MD5认证过程(IETF模式):
① 本端通过使用管理员手工配置的Key ID对应的密钥对密码进行加密,生成哈希值
② RIP路由通过携带哈希值和Key ID送往对端,对端使用相应的Ked ID对应的密钥对密码
进行解密
注:华为私有Key ID为随机设置
4. 支持Tag标签:
RIP-v2支持路由表tag标签的携带,用于解决路由环路的问题:
拓扑中RIP和OSPF相互引入,如果192.168.5.0/24的网段断掉,OSPF没有及时发送路由信息给RIP,RIP会从R8将192.168.5.0/24的网段在传回来,造成网络环路。
配置Tag标签解决环路问题:
[Huawei]ip ip-prefix 1 index 5 permit 192.168.5.0 24
[Huawei]route-policy tag permit node 5
[Huawei-route-policy]if-match ip-prefix 1
[Huawei-route-policy]apply tag 100
[Huawei]route-policy tag permit node 10
5. Next-Hop Feature:
RIP-v2在V1的基础上在报文中增加了Next-Hop属性,用于防止次优路径的发生。
AR1与AR3之间运行OSPF,AR1与AR2之间运行RIPv2,在AR1上OSPF路由引入RIP中
- 如果没有Next-Hop属性时,此时AR2会将数据包交给AR1,在由AR1交给AR3
- 当存在Next-Hop属性时,此时在路由信息前将AR3的IP地址放入Next-Hop列表中,此时AR2会直接将数据交给AR3
此时,路由表中的下一跳地址为192.168.1.3,AR2去往AR3方向的数据时,二层地址就直接封装AR3接口的MAC地址,交换机直接将数据转发给AR3,防止了次优路径的发生。
注:如果Next-Hop的IP地址和当前接收到此RIP条目的地址不在同网段,路由器将拒绝此路由
四. 单播RIP:
RIPv1和RIPv2都支持单播建立邻居,提供更加灵活的组网
三台都启用RIP的路由器,如果只想要AR1和AR2之间传递RIP路由信息,存在两种方法
① AR1和AR2配置相同的密码认证
② AR1和AR2单播指路由表目标地址
配置:
AR1:
注:如果直接使用Peer命令,则组播报文和单播报文同时都发,所以首先将端口设置为Silent端口停止组播报文的发送
[Huawei-rip-1]silent-interface all
[Huawei-rip-1]peer 192.168.1.2
五. RIP计时器:
RIP协议在更新和维护路由信息时主要使用四个定时器:
① Update timer更新定时器
② Age timer老化定时器
③ Garbage-collect timer垃圾收集定时器
④ Suppress timer 抑制定时器
使用一下命令修改各个参数:
[Huawei-rip-1]timers rip 10 15 1----修改Update时间为10S,Age time为15s,垃圾收集定时器为1S
(1)Update timer:
更新定时器,档次定时器超时时,立即发送更新报文。默认时间为30S
(2)Age timer:
老化定时器,RIP设备如果在老化时间内没有收到邻居发送过来的路有更新报文,则认为路由不可达,路由表删除此条路由条目,数据库中保留此路由条目并开启垃圾收集器时间。默认Age timer为180S。
(3)Garbage-collect timer:
垃圾收集定时器,如果在垃圾收集时间内不可达路由没有收到来自同一邻居的更新,则该路由将从数据库中彻底删除。所以当一条路由条目从失效到删除时间为300S(180+120),默认Garbage-collect时间为120S。
六. 链路故障收敛:
1. 非直连链路故障收敛:
① 当AR2与LSW1的链路故障down掉
② AR3收不到AR2的RIP路由,启用Age timer定时器
注:在Age timer没超时前,依旧每隔30S向AR4发送RIP路由更新,路由条目中依旧包含192.168.1.0/24的有效路由条目
③ 当AR3的Age timer超时后,路由表将192.168.1.0/24路由条目删除,并启用garbage-collect timer定时器
④ 在garbage-collect timer定时器期间,AR3每30S向AR4发送Update 报文,将192.168.1.0/24的路由条目开销值设置为16,毒化此路由条目
⑤ AR4收到此毒化路由后,删除路由表象,并启用Garbage-collect timer
③ 当AR3的garbage-collect timer在120S超时后,192.168.1.0/24的路由条目将从AR3的Database中消失
2. 直连链路故障:
① 当AR2与LSW1的链路故障down掉
② AR3直接将从该接口接收到的所有路由全部从路由表中删除,并启用garbage-collect定时器
③ 在garbage-collect timer定时器期间,AR3每30S向AR4发送Update 报文,将192.168.1.0/24的路由条目开销值设置为16,毒化此路由条目
④ AR4收到此毒化路由后,删除路由表象,并启用Garbage-collect timer
⑤ 当AR3的garbage-collect timer在120S超时后,192.168.1.0/24的路由条目将从AR3的Database中消失
七. RIP防环机制:
1. RIP环路:
RIP的路由更新可能导致路由环路,通常一条路由条目的失效,如果没有防环机制,RIP会经历两个阶段:
① 路由失效,路由互指,环路出现
② 跳数递增,路由失效,环路解除
(1)路由失效,路由互指,环路出现:
① RTB更新自己的网段10.0.0/8的路由信息给RTA。
② 由于是距离矢量,RTA每隔30S将自己的路由表信息(包含10.0.0.0/8)发送给RTB,但是RTB认为10.0.0.0/8的路由条目为自身网段,不会接受此路由条目
③ RTB的10.0.0.5/24的网段断掉,在180S内处于不激活状态,但是没有到达30S,不发送更新的路由表项给RTA
④ RTA由于没有收到RTB的更新路由信息,依旧认为10.0.0.0/8处于激活状态,并在30S后发送给RTB(度量值为2)
⑤ RTB收到RTA发送过来的路由表,发现10.0.0.0/8的路由条目为激活状态,并认为去往10.0.0.0/8的目标地址通过RTA,度量值为2,刷新自己的路由表,形成环路
⑥ 此时RTB每隔30S将10.0.0.8/24的路由条目传递给RTA,RTA依旧将此路由条目传递给RTB,每次传递,开销值都加1,在跳数有效期内,路由环路
(2)跳数递增,路由失效,环路解除:
两端互指,跳数不断增加,最终增加到16跳时,当其中一台路由器接收到16跳的路由条目,
认为此路由不可达,将其删除,环路解除
2. RIP防环机制:
为了防止RIP环路,可以使用防环机制避免环路的产生:
① Split horizon水平分割
② Poison reverse毒性反转
③ Trigger update触发更新
(1)Split horizon:
水平分割,路由器从某个接口学到的路由,不会从该接口在发送给邻居路由器
注1:huawei设备默认开启水平分割,使用以下命令关闭水平分割,使用以下命令关闭:
[Huawei-GigabitEthernet0/0/0]undo rip split-horizon
注2:在帧中继Hub-Spoke模式中,HUB端要关闭水平分割
(2)Poison reverse:
毒性反转是指路由器从某个接口学到路由后将该路由的跳数设置为16,并从原接口发送给邻居路由器。
注1:水平分割与毒性反转互斥,默认只能配置一种,如果两种都配置,默认使用毒性反转。
注2:使用以下命令开启毒性反转:
[Huawei-GigabitEthernet0/0/0]rip poison-reverse
(3)Trigger update:
触发更新是指当路由信息发生变化时,立即向邻居设备发送触发更新报文(只发送失效路由条目),将故障网段设置为16跳(路由毒化),当邻居收到毒化路由时,将此路由条目删除。
注:Route poisoning:
路由毒化,当一台路由器直连的网段出现问题后,路由器会发送一条RIP路由信息给邻居,将此路由条目的跳数设置为16跳不可达,当网络中的路由器收到此条路由条目后,会删除此条无效的RIP路由,路由毒化只会删除从接口上收到的毒化信息对应的路由条目,如果两个接口收到相同的路由,而只从一个接口收到毒化信息,只删除此接口的,不会删除其他接口上收到的此路由信息。
八. RIP特殊接口:
(1)undo Input接口:
在接口上配置rip input接口后,该接口将禁止接收RIP报文。
配置命令(接口下):undo rip input
(2)undo output接口:
在接口上配置rip output接口后,该接口将禁止发送RIP报文(包括Request和Response)。
配置命令(接口下):undo rip output
(3)被动接口:
配置接口为rip被动接口,默认只接收RIP报文,不发送Response报文,但是发送Request报文。
注:被动接口不会发送组播的Response报文,但是发送组播的Request报文,并且如果配置了单播邻居,也会发送单播的Response
配置命令(rip视图下):silent-interface g0/0/1
九. 版本兼容:
(1)RIP-V1:
使用命令[Huawei-rip-1]version 1将RIP版本设置为版本1
- 发送版本1格式的广播报文
- 接收版本1格式的广播报文
(2)RIP-v2:
使用命令[Huawei-rip-1]version 2将RIP版本设置为版本2
- 发送版本2格式的组播报文
- 接收版本2格式的组播、广播报文
(3)RIP-v1兼容模式:
默认模式
- 发送版本1的广播报文
- 接收版本1的广播报文;接收版本2的组播、广播报文
(4)接口版本:
接口下配置[Huawei-GigabitEthernet0/0/0]rip version 2 broadcast调整此接口的RIP类型,优于全局配置
- 发送RIP-v2格式的广播报文
- 接收RIP-v1格式的广播报文;接收RIP-v2的组播、广播报文
(5)版本差异举例:
路由器A |
路由器B |
现象 |
v1 |
v1 |
两边路由正常 |
v1 |
V2 |
两边路由都不正常 |
v1 |
兼容模式 |
两边路由正常 |
v1 |
v2广播 |
左侧路由不正常 |
v2 |
v2 |
两边路由正常 |
v2 |
兼容模式 |
左侧路由不正常 |
v2 |
v2广播 |
两边路由正常 |
兼容模式 |
兼容模式 |
两边路由正常 |
兼容模式 |
V2广播 |
两边路由正常 |
举例:
① 针对AR10--RIP-v1的19.2168.10.0/24网段:
- RIP-v1发送RIP-v1格式的广播报文给AR11,AR11为兼容模式,接收此路由条目
- AR11发送RIP-v1格式的广播报文给AR12,AR12为v2,不接收v1格式的广播报文
② 针对AR11--RIP-v1兼容模式的19.2168.20.0/24网段:
- RIP-v1兼容模式发送RIP-v1格式的广播报文给AR10,AR10为RIP-v1版本,接收RIP-v1格式的广播报文
- RIP-v1兼容模式发送RIP-v1格式的广播报文给AR12,AR12为RIP-v2版本,不接受RIP-v1格式的广播报文
② 针对AR11--RIP-v1兼容模式的19.2168.20.0/24网段:
- RIP-v2模式发送RIP-v2模式的组播报文,RIP-v1兼容模式接收所有的报文,所以接收此报文
- RIP-v1兼容模式发送RIP-v1模式的广播报文,所以RIP-v1路由器接收此RIP-v1模式的广播报文
十. RIP常见配置:
(1)Metric值修改:
① 在AR2上修改,针对1.1.1.1/24的路由条目在传递给AR4时开销值加4
[Huawei]ip ip-prefix 1 index 5 permit 1.1.1.1 32
[Huawei]inter g0/0/1
[Huawei-GigabitEthernet0/0/1]rip metricout ip-prefix 1 4
② 将AR2上所有从G0/0/1端口收到的路由全部加3
[Huawei]inter g0/0/1
[Huawei-GigabitEthernet0/0/1]rip metricin 3
十一. 面试:
1. Distance-Vector特点:
(1)优点:
① 报文直接传递路由,可以在任何位置做汇总、路由过滤
(2)缺点:
① 容易产生环路
2. RIP版本的共同点:
① RIPv1和RIPv2都是距离矢量型的路由协议
② RIPv1和RIPv2都是通过UDP的520端口来操作的,因此RIP是封装在UDP的报文中的,需要注意的是源和目的端口都是520。
③ RIPv1和RIPv2都定义了两种报文类型:请求报文(request message)和响应报文(response message)。
④ RIPv1和RIPv2都是使用“跳”数(hop count)作为度量值,1“跳”表示该路由始发于它直接相连的网络,有效“跳”数是15跳。如果达到了16“跳“,RIP就会认为该目标是不可达的,因此RIP只能适用于小型网络中。
⑤ RIPv1和RIPv2都使用相同的定时器,水分分割机制,触发更新机制,路由毒化机制。
3. RIP版本区区别: