这个是思维导图直接转换的MD格式,看起来有点奇怪,不过我懒得改了
RIP基本知识
基本原理
基于距离矢量算法
- 路由器泛洪自己整个路由表给邻居路由器
通用属性
邻居(直连路由器)
周期更新(30s)
Metric(度量值)
- RIP协议以跳数作为度量值,每经过一台设备即被视为1跳,RIP协议的最大跳数为15跳,若为16跳即表示该路由不可达
广播更新
路由器向255.255.255.255(广播地址)发送报文,网络中所有设备都会监听该地址,RIPv1默认使用广播更新
- 所有设备收到报文都需要处理,对设备负担较大
组播更新
路由器向224.0.0.9发送报文,只有RIP路由器监听该组播地址,RIPv2默认使用组播更新
- 大大节省设备性能开销
泛洪路由表
- 路由器将从邻居学来的路由放进自己的路由表,然后通告本地路由表中全部路由信息给邻居路由器,直至整个网络全部学习到
RIP的定时器
更新定时器(Upadte Timer)
- 时间为30s
- 若定时器超时,则会发送一次Reponse报文
- 每当学到一条新路由并添加到路由表时,会启动一个老化定时器
老化定时器(Age Timer)
- 时间为180s
- RIP设备在老化时间内若没有收到邻居发送来的Reponse报文,则认为该路由不可达
- 超时后,该路由度量值被置为16(表示不可达),将从路由表中删除,但仍在RIP数据库存在,此时启动垃圾收集定时器
垃圾收集定时器(Garbage-collect Timer)
- 时间为120s
- 如果在垃圾收集时间内仍没有从同一邻居收到该不可达邻居更新,则该路由从RIP数据库中彻底删除
RIP的报文
使用UDP作为传输协议,端口520
报文类型
请求报文(Request)
发送场景
- 接口重置后
- 接口初次加入RIP
- 进程初次启动后
响应报文(Response)
发送场景
- 收到Request报文后立即回应
- 每隔30s发送一次
报文格式
RIPv1
字段名 | 长度 | 含义 |
---|---|---|
Command | 8比特 | 标识报文的类型:1:Request报文,向邻居请求全部或部分路由信息;2:Response报文,发送自己全部或部分路由信息,一个Response报文中最多包含25个路由表项。 |
Version | 8比特 | RIP的版本号:1:RIP-12:RIP-2 |
Must be zero | 16/32比特 | 必须为零字段。 |
Address family identifier | 16比特 | 地址族标识,其值为2时表示IP协议。对于Request报文,此字段值为0。 |
IP Address | 32比特 | 该路由的目的IP地址,可以是自然网段的地址,也可以是子网地址或主机地址。 |
Metric | 32比特 | 路由的开销值。对于Request报文,此字段值为16。 |
RIPv2
字段名 | 长度 | 含义 |
---|---|---|
Command | 8比特 | 标识报文的类型:1:Request报文,向邻居请求全部或部分路由信息;2:Reponse报文,发送自己全部或部分路由信息,一个Response报文中最多包含25个路由表项。 |
Version | 8比特 | RIP的版本号:1:RIP-12:RIP-2 |
Must be zero | 16比特 | 必须为零字段。 |
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。 |
RIP-2的验证报文格式
字段名 | 长度 | 含义 |
---|---|---|
Command | 8比特 | 标识报文的类型:1:Request报文,向邻居请求全部或部分路由信息;2:Reponse报文,发送自己全部或部分路由信息,一个Response报文中最多包含25个路由表项。 |
Version | 8比特 | RIP的版本号:1:RIP-12:RIP-2 |
Unused | 16比特 | 保留未使用。 |
0xFFFF | 16比特 | 验证项标识,表示整个路由报文需要验证。 |
Authentication Type | 16比特 | 验证类型:2:明文验证;3:MD5验证。 |
Authentication | 16字节 | 验证口令,当使用明文验证时该字段才会包含密码信息。若使用的是MD5认证,后面的路由信息都会被hash值替代,无法看到 |
RIP防环
水平分割(Split Horizon)
- RIP从某个接口学到的路由,不会从该接口再发回给邻居路由器
毒性逆转(Poison Reverse)
- RIP从某个接口学到路由后,从原接口发回邻居路由器,并将该路由的开销设置为16(即指明该路由不可达)
- 利用这种方式,可以清除对方路由表中的无用路由。
最大计数器
- RIP协议的最大跳数设置为15跳,即使环路了,也不会无休止的传递
触发更新
- 路由信息变化时,立即向邻居路由器发送更新报文
- 路由下一跳不可达时,立即把此路由跳数改为16跳,并通告给邻居