RIP
文章目录
思维导图:
1. 路由协议基础
1.1 自治系统(AS)
自治系统(Autonomous System,AS):在网络中一个自治系统指的是若干个二层网络及若干路由器组成的集合
,集合中的这些网络和这些路由器属于同一个管理机构。规模大小不同,一个 internet 可以包含一个或多个AS。
1.2 路由协议分类
- 路由协议分为两大类,一类是
IGP(Interior Gateway Protocol,内部网关协议)
,一类是EGP(Exterior Gateway Protocol ,外部网关协议 )
。 - IGP成员有
RIP(Routing Information Protocol)
,OSPF(Open Shortest Path First)
,IS-IS(Intermediate System to Intermediate System)
等; - EGP成员虽然也有若干个协议,但是目前使用的就只有一个
BGP(Border Gateway Protocol)
。
2. RIP协议基本原理
-
RIP是一种基于
距离矢量(Distance Vector,简称DV)
算法的IGP协议,其协议的优先级为100(华为),120(思科); -
以“跳数”作为开销,所谓“跳数”就是到达目的地需要经过的路由器个数,跳数>=16时视为不可达路由,使得RIP只能应用于小规模的网络;
-
周期性更新路由表,即使在稳定状态下,路由交换过程仍然会继续进行;
3. RIP路由表形成
一台路由器在创建RIP路由表初期,RIP路由表中只包含直连路由。随后路由器会不断接收从邻居发来的路由信息,并根据这些路由信息来完善自己的路由表。同时路由器会每隔30s
向邻居路由器发起更新请求。
4. RIP消息格式
-
RIP的消息格式有两种:一种是RIP请求消息(Request),另一种是RIP响应消息(Response);
-
RIP路由器发送请求消息给邻居路由器,邻居路由器收到后就会立即发送响应消息给邻居路由器;
-
RIP路由器可以随时向邻居发出请求消息;
-
RIP路由器总是会
每隔30s周期性
向邻居路由器发送响应消息;RIP请求消息有两种:
- 请求消息用来请求关于某一些指定的路由信息;
- 请求关于整个RIP网络的路由信息,
RIP刚刚启动的时候应该是采用第二种RIP请求消息
;
5. RIP-1与RIP-2
RIP协议有两个版本,RIP-1和RIP-2,基于UDP协议,使用的端口号为520
。
5 .1RIP-1的报文格式
RIP-1报文由头部(Header)和多个路由表项(Route Entries)部分组成。在一个RIP报文中,最多可以有25个路由表项
。RIP是一个基于UDP协议
的,并且RIP-1的数据包不能超过512字节。
字段名 | 长度 | 含义 |
---|---|---|
Command(命令) | 8比特 | 标识报文的类型: 1:Request报文,向邻居请求全部或部分路由信息; 2:Reponse报文,发送自己全部或部分路由信息,一个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地址,可以是自然网段的地址,也可以是子网地址或主机地址。 |
Metric | 32比特 | 路由的开销值。对于Request报文,此字段为16。 |
5.2 RIP-2的报文格式
字段名 | 长度 | 含义 |
---|---|---|
Command(命令) | 8比特 | 标识报文的类型: 1:Request报文 ,向邻居请求全部或部分路由信息; 2:Reponse报文 ,发送自己全部或部分路由信息,一个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。 |
5.3 运行RIP-1和RIP-2版本的不同
5.3.1 运行RIP-1的时候
-
对于请求消息或周期性的响应消息(情况1),IP报文的
目的地址为广播地址255.255.255.255
,源地址为发送该请求消息或响应消息的接口的IP地址,协议字段的值为0x11
。 -
为了回应请求消息而发送的响应消息(情况2),IP报文的目的地址为发送请求消息
接口的IP地址
,源地址为发送响应消息的接口的IP地址,协议字段0x11
。- 接下来,IP报文又是封装在以太网帧中(假设路由器的接口都是以太网接口):
-
对于情况1,以太网帧的
目的MAC地址是ff-ff-ff-ff-ff-ff
,源地址是发送请求消息或响应消息的接口的MAC地址,类型字段为0x0800。 -
对于情况2,以太网帧的目的MAC地址是发送请求消息的接口的MAC地址,源地址为发送该响应消息的接口的MAC地址,类型字段为0x0800。
5.3.2 运行RIP-2的时候
-
对于请求消息或周期性的相应消息(情况1),IP报文的
目的地址为组播地址224.0.0.9
,也可以为广播地址255.255.255.255
,源地址为发送该请求消息或响应消息的接口的IP地址,协议字段的值为0x11。 -
为了回应请求消息而发送的响应消息(情况2),IP报文的目的地址为发送请求消息接口的IP地址,源地址为发送响应消息的接口的IP地址,协议字段0x11。
-
接下来,IP报文又是封装在以太网帧中(假设路由器的接口都是以太网接口):
-
对于情况1,以太网帧的
目的MAC地址是ff-ff-ff-ff-ff-ff
,源地址是发送请求消息或响应消息的接口的MAC地址,类型字段为0x0800。 -
对于情况2,以太网帧的目的MAC地址是发送请求消息的接口的MAC地址,源地址为发送该响应消息的接口的MAC地址,类型字段为0x0800。
-
-
5.3.3 RIP-1与RIP-2的不同
- RIP-1只支持有类路由;RIP-2支持无类路由,支持VLSM,CIDP等特性;
- RIP-1不支持认证功能;RIP-2可以支持认证功能,因此安全性得到提高;
- RIP-1不能采用组播方式发布消息;RIP-2可以采用组播方式发布消息,因此RIP-2比RIP-1占用更少的设备处理资源;
6. RIP定时器
RIP协议有三种定时器:分别是更新定时器(Update Timer)
,无效定时器(Invalid Timer)
,垃圾收集定时器(Carbage Collection Timer)
。
6.1 更新定时器
更新定时器也可以称为周期定时器(Periodic Timer),每台RIP路由器都有一个属于自己的RIP更新定时器。缺省情况下,周期值为30s
。每当更新定时器倒计时值为0时,路由器就会向所有邻居发送RIP响应消息,当路由器收到RIP请求消息时候,会立即发送RIP响应消息,但是不影响基于更新定时器的周期性RIP响应消息的发送
。
6.2 无效定时器
每个路由器都建立并维护一个无效定时器。缺省情况下,无效定时器值为180s(更新定时器周期的6倍)
。当一个路由项的无效定时器的值倒计时为0时,就说明该路由表项已经有180s的时间没有别更新,此时路由表会认为该路由项已经变为一个无效的路由项,也就是认为该路由项所指的所指的目的地已经变为不可达,于是路由器会将该路由的cost值设置为16
.
6.3 垃圾收集定时器
-
当无效定时器值倒计时为0时,该路由项是一个无效路由项,其cost值就会被设置为16。此时路由器不会立即将这个无效的路由项删除掉,而是会为该路由项启用一个被称为垃圾收集定时器的倒数计时器。垃圾收集定时器的缺省值为120s。
-
在垃圾收集定时器倒计时为0之前,该路由器仍然会周期性在RIP响应消息中携带这条无效的路由信息,其目的是为了告诉他的所有邻居这条路由项对于自己来说已经无效,以便路由器能够及时对各自的RIP路由表中的相应的路由项进行更新。
-
一旦垃圾收集定时器的值倒计时为0时,路由器就会将这条无效路由项删除。(注意:在垃圾收集定时器为0前的某一时刻,该无效路由被更新,即Cost的值更新为小于16,则该路由项的的无效定时器会被复位成初始值,然后重新计时,相应的垃圾收集定时器则会被删除掉)
7. RIP环路问题
假设路由器C发生故障(E0接口down掉),RC监测到该故障后会立即向RB发送故障信息(跳数设置为16)表示10.4.0.0为无效路由。然而,在RC准备将这条无效路由周期性响应消息发给RB的时候,收到RB周期性的相应消息,其中包含10.4.0.0 网段的路由信息,那么这个时候RC就会认为通过RB可以到达10.4.0.0网段,所以RC就在10.4.0.0路由项的跳数上+1,RB又会从RC学习到这条路由并且会通告给自己的邻居,那么不断往复,就产生了环路。
8. 环路解决
华为的环路解决方案提供了触发更新
,水平分割
,毒性逆转
三种
8.1 触发更新
-
所谓触发更新,就是指RIP路由表中的某些路由项的内容发生改变时,路由器应立即向它的所有邻居发布响应消息,而不用等待更新定时器所规定的下一个响应消息的发送时刻。(立即更新)
-
另外,触发更新响应消息中只需要包含路由信息发生了改变的路由项,减少带宽及路由器处理资源的消耗
注意如果对方未收到触发更新的消息,本端就收到一个周期性响应消息,这种情况下仍然会产生路由。但是触发更新在一定程度上降低了环路产生的概率。
8.2 水平分割
水平分割的原理是:如果一台路由器的RIP路由表中目的地/掩码为z/y的路由信息是通过该路由器的Interface-x接口学习来的,那么该路由器在通过Interface-x接口向外发送响应消息时,响应消息一定不要包含关于z/y这个路由项的信息。(从哪里学到就不发回哪里
)
8.3 毒性逆转
毒性逆转的原理是:如果一台路由器的RIP路由表中目的地/掩码为z/y的路由信息是通过该路由器的Interface-x接口学习来的,那么该路由通过Interface-x接口向外发送消息时,响应消息中仍然需要包含z/y这个路由项,但是这个路由项的Cost值总是16。
里`)
8.3 毒性逆转
毒性逆转的原理是:如果一台路由器的RIP路由表中目的地/掩码为z/y的路由信息是通过该路由器的Interface-x接口学习来的,那么该路由通过Interface-x接口向外发送消息时,响应消息中仍然需要包含z/y这个路由项,但是这个路由项的Cost值总是16。