1. RIP路由协议
    1. 属于距离矢量协议
      1. “周期性”的以“广播或者组播”的方式给“邻居”发送自己所知道的所有路由信息
    2. 属于内部网关协议IGP
    3. RIPv1是有类路由协议、RIPv2是无类路由协议
    4. 更新地址 自动方式v1:255.255.255.255; v2:224.0.0.9 手动方式:单播指neighbor
    5. 更新方式:触发+周期
    6. 管理距离AD=120
    7. 度量值:hop(跳数)
  2. RIP的消息
    1. RIP消息类型
      1. 请求消息(request)
        1. RIP的接口启动都会发送请求,要求邻居发送完整的路由表
      2. 响应消息(response)
        1. 回应请求消息,包含整个路由表
    2. RIP的消息格式
      1. Request
        1. RIPv1
        2. RIPv2
      2. Response
        1. RIPv1
        2. RIPv2
    3. RIPv1和RIPv2封装
      1. L2(Type:IPv4(0x0800))→IP(Protocol:17-UDP)→Src&Dst Port (520-RIP)
  3. RIP路由信息更新规则
    1. 1、收到路由信息
    2. 2、查看路由表中是否存在
      1. 存在-3
      2. 不存在-更新路由表
    3. 3、接收的条目是否优于路由表中已有条目
      1. 优-更新路由表
      2. 不优-4
    4. 4、收到的路由条目是不是来自同一源地址
      1. 是-更新路由表
      2. 不是-丢弃
  4. RIP路由信息收发规则
    1. RIPv1
      1. 发送子网规则
        1. 拿发送的子网和发送子网的接口的IP地址作比较
          1. 如果不是同一主网络号,就按照ABC三类汇总
          2. 如果是同一主网络号,就看掩码是否一致
          3. 掩码一致就发送子网
          4. 掩码不一致就丢弃。除非支持是主机路由,且路由器支持主机路由
      2. 接收子网规则
        1. 拿接收的到的路由和接收该路由的接口的IP地址作比较
          1. 如果不是同一主网络号,就按照ABC三类默认子网掩码增加
          2. 如果是同一主网络号
          3. 按照接收接口中所有IP地址中的最长的掩码增加
          4. 增加失败就增加/32位的掩码
    2. RIPv2
      1. 发送子网规则
        1. 拿发送子网和发送子网的接口的IP地址作比较
          1. 如果不是同一网络号,就按照ABC三类汇总
          2. 如果是同一主网络号,就发送子网
      2. 接收子网规则
        1. 拿接收的到的路由和接收该路由的接口的IP地址作比较
          1. 直接按照接收到的路由存入路由表,掩码不变
  5. RIP计时器
    1. 周期更新计时器
      1. 默认时间是30秒,因为RIP是DV路由协议,传闻路由的特性,每30秒就给邻居发送自己所知道的所有路由信息。
    2. 无效计时器
      1. 默认时间是180秒,这段时间内,路由器会一直保持着这一路由,并给邻居发送路由更新。
    3. 抑制计时器
      1. 默认时间是180秒,但是只有60有用,其余120秒做其他用途,当一条路由条目过了180秒后,将把这一路由状态设置为possibly down状态,并且不给它的邻居再发送该路由,即使接收到更好的路由也不会接收,如此可防止路由抖动。
    4. 刷新计时器
      1. 默认时间是240秒,一条路由条目到了240秒的时候,就会自动被删除,在这之后,如果接收到新的路由,就会接收。
    5. 触发更新计时器
      1. 当网络的拓扑结构发生改变,为了加速网络的收敛,RIP引进了触发更新的机制,这样就不需要等到周期30秒就可以更新。
      2. 触发更新的条件
        1. 接口状态的改变(up&down)
        2. 某一条路由进入不可达状态
        3. 路由表中增加或者删除一条路由
  6. RIP的环路问题
    1. 产生原因
      1. 1、静态路由配置错误
      2. 2、路由重发布配置错误
      3. 3、发生了改变的网络收敛速度缓慢,不一致的路由表未能得到更新
    2. 有何影响
      1. 产生环路的路由器占用带宽反复收发环路流量
      2. 路由器的CPU因不断循环的环路数据流量负担加重
      3. 影响网络的收敛
      4. 路由更新不能得到及时的处理或者可能丢失
    3. RIP防环机制
      1. 定义度量16跳以防止计数到无穷大(缓解环路影响,未从根本解决)
      2. 抑制计时器(有60秒的时间不对该路由更新,对网络的稳定也起到了一定的作用)
      3. 水平分割(路由器不在接收到该路由的接口发送该路由信息)
      4. 路由毒化和毒性逆转
        1. 路由毒化是将一条路由做上标记,发送给其他路由器标记为16跳不可达
        2. 毒性逆转是控制周期更新和触发更新成环的机制,当路由器收到一条16跳的路由时,立即从接收到该路由的接口发送该16跳路由,如此可以回杀存在可能的周期更新路由信息
      5. 触发更新
        1. 触发发送整个路由表,刷新了全网的路由,环路的根本是路由成环,如此触发更新从根本上让环路得到了有效的控制
  7. RIP的高级特性
    1. RIP认证
      1. 无认证
        1. RIP路由协议默认是没有开启认证的
      2. 明文认证
        1. 原则
          1. 发送方只是发送Key ID最小的Key,但是不携带Key ID
          2. 接收方数据库只需要有该Key就可以通过认证
          3. 最多携带24跳路由
      3. 密文认证
        1. 原则
          1. 发送方需要发送最小的Key ID和Key
          2. 接收方收到后首先匹配Key ID相同的Key,若没有该Key ID就往后查找一次较大的Key ID,如果Key匹配就认证通过,如果Key不匹配就认证失败
      4. 注意:认证都是相互的,认证的模式不一致将会导致认证失败
    2. 被动接口
      1. 优点
        1. 减少不必要的RIP更新对网络性能的影响
          1. 不必要的更新浪费带宽。如组播和广播都会默认都会全广播域泛洪
          2. LAN中的所有设备都需要处理更新
          3. 组播或者广播的更新的风险较大,万一被攻击者中途截取,伪造更新流量重新发回路由器,造成路由表的错误
      2. 作用
        1. 防止从接口发送组播或者广播的更新
      3. 表现形式
        1. “只收不发”
      4. 操作
        1. R1(config)#router rip R1(config-router)#passive-interface Ethernet2/0
      5. 单播更新
        1. 例如弥补NBMA网络下无法更新的情况,或者特定情况需要单播更新
        2. 单播更新可以穿越被动接口
        3. 操作
          1. R1(config)#router rip R1(config-router)#neighbor 12.1.1.2
    3. 路由过滤
      1. 优点
        1. 对控制路由更新有极大的帮助,比如需要哪些路由更新或者不需要哪些路由更新
      2. 作用
        1. 对不需要的流量进行更新控制
      3. 表现形式
        1. 遵照ACL或者前缀列表的意思执行(即行为permit或者deny取决于列表)
      4. 操作
        1. R1(config)#access-list 1 deny 1.1.1.1 0.0.0.0 R1(config)#access-list 1 permit any R1(config)#router rip R1(config-router)#distribute-list 1 out Ethernet2/0
    4. 偏移列表
      1. 优点
        1. 可以为路由选路提供一定的帮助,在路由器发送更新的时候
      2. 作用
        1. 增加ACL匹配的更新消息的Metric
      3. 表现形式
        1. 匹配ACL流量进行开销的增加,若不调用特定的ACL匹配(即调用ACL 0),默认增加所有流量的开销
      4. 操作
        1. R1(config)#access-list 2 permit 1.1.1.1 0.0.0.0 R1(config)#router rip R1(config-router)#offset-list 2 out 5 serial 2/0 <假如这个offset-list的号和ACL的号无可对应的,那么就针对所有通告的条目>
    5. 路由汇总
      1. 优点
        1. 可以使得发送和接收的路由更新更小
        2. 使用汇总后的单条路由可以加快查找路由表的速度
        3. 可以减少路由抖动对网络的影响
      2. RIP自动汇总引发的问题
        1. 引发问题的原因
          1. RIP的自动汇总不支持不连续子网
          2. 说明:连续的子网(可以理解为由同一子网划分出的更小的子网)被其他网络号的网络隔断,导致两个连续的子网之间不能实现通信
        2. 路由黑洞
          1. R3#sho ip route Gateway of last resort is not set R 1.0.0.0/8 [120/1] via 10.1.1.2, 00:00:02, Ethernet0/0 R 2.0.0.0/8 [120/1] via 10.1.1.2, 00:00:02, Ethernet0/0 3.0.0.0/32 is subnetted, 1 subnets C 3.3.3.3 is directly connected, Loopback0 R 4.0.0.0/8 [120/1] via 10.1.1.130, 00:00:18, Ethernet0/1 R 5.0.0.0/8 [120/1] via 10.1.1.130, 00:00:18, Ethernet0/1 10.0.0.0/25 is subnetted, 2 subnets C 10.1.1.0 is directly connected, Ethernet0/0 C 10.1.1.128 is directly connected, Ethernet0/1 R 12.0.0.0/8 [120/1] via 10.1.1.130, 00:00:21, Ethernet0/1 [120/1] via 10.1.1.2, 00:00:05, Ethernet0/0
          2. 如此导致R1和R5两端根本没有到达对方子网的路由,当双方子网更新到R3上之后,不能再从R3发送回去
        3. 路由环路
      3. RIP汇总的特点
        1. 汇总针对于出方向进行
        2. 本地必须有明细的路由存在才能从汇总的接口发送汇总路由
        3. 取明细路由中Metric最小的值作为开销
        4. 对自身的路由和学习来的RIP路由都汇总
        5. 如果手动和自动汇总都存在,自动汇总优先
        6. 对于RIPv1,即使配置了手动汇总,也会被汇总称为主类
      4. 操作
        1. interface Loopback0 ip address 1.1.1.2 255.255.255.0 secondary ip address 1.1.1.4 255.255.255.0 secondary ip address 1.1.1.3 255.255.255.0 secondary ip address 1.1.1.1 255.255.255.0 R1(config-if)#ip summary-address rip 1.1.1.0 255.255.252.0
    6. 下发缺省
      1. 操作1:下发默认路由
        1. R1(config-router)#default-information originate
      2. 操作2:重发布静态
        1. R1(config)#ip route 0.0.0.0 0.0.0.0 Ethernet0/0 R1(config)#router rip R1(config-router)#redistribute static
      3. 操作3:Network 0.0.0.0
        1. R4(config)#ip route 0.0.0.0 0.0.0.0 ethernet0/1(只能配置逃出接口) R4(config)#router rip R4(config-router)#net 0.0.0.0
      4. 操作4:ip default-network +主类(本地存在一个相关主类网络)
        1. R1(config)#int e0/0 R1(config-if)#ip add 192.168.1.1 255.255.255.0 secondary R1(config-if)#exit R1(config)#ip default-network 192.168.1.0