热心市民の知识库

2-路由信息协议(RIP)

这个是思维导图直接转换的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

image-20200315182148119
image-20200315182148119

字段名 长度 含义
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

image-20200315182254895
image-20200315182254895

字段名 长度 含义
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的验证报文格式

image-20200315182944369
image-20200315182944369

字段名 长度 含义
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跳,并通告给邻居