VRRP2协议(rfc3768)

文章目录

  • Status of this Memo
  • 摘要
  • 目录
  • 1.介绍
    • 1.1.贡献者
    • 1.2.范围
    • 1.3.定义
  • 2.所需的功能特性
    • 2.1.IP地址备份
    • 2.2.首选路径指示
    • 2.3.尽量减少不必要的服务中断
    • 2.4.在扩展的局域网上进行有效的操作
  • 3.VRRP概述
  • 4.配置样本
    • 4.1.配置样本1
    • 4.2.配置样本2
  • 5.协议
    • 5.1.VRRP包格式
    • 5.2.IP报文描述
      • 5.2.1.源地址
      • 5.2.2.目的地址
      • 5.2.3.TTL
      • 5.2.4.协议
    • 5.3.VRRP字段描述
      • 5.3.1.版本
      • 5.3.2.类型
      • 5.3.3.虚拟路由ID (VRID)
      • 5.3.4.优先级
      • 5.3.5.IP的个数
      • 5.3.6.认证类型
        • 5.3.6.1.身份验证类型0-无身份验证
        • 5.3.6.2.身份验证类型1-保留
        • 5.3.6.3.身份验证类型2-保留
      • 5.3.7.通告间隔(Adver Int)
      • 5.3.8.校验和
      • 5.3.9.IP地址
      • 5.3.10.身份验证数据
  • 6.协议状态机
    • 6.1.每个虚拟路由器的参数
    • 6.2.定时器
    • 6.3.状态转换图
    • 6.4.状态描述
    • 6.4.1.Initialize(初始化)
    • 6.4.2.Backup(备份状态)
    • 6.4.3.Master(主机状态)
  • 7.发送和接收VRRP数据包
    • 7.1.接收VRRP数据包
    • 7.2.发送VRRP包
    • 7.3.虚拟路由器MAC地址
  • 8. 操作问题
    • 8.1.ICMP重定向
    • 8.2.主机的ARP请求
    • 8.3.代理ARP
    • 8.4.潜在的转发环路
  • 9.通过FDDI、令牌环和ATM通道进行操作
    • 9.1.通过FDDI操作
    • 9.2.通过令牌环操作
    • 9.3.通过ATM通道操作
  • 10.安全注意事项

Status of this Memo

  • 本文档为Internet社区指定了一个Internet标准跟踪协议,并要求讨论和改进建议。
    有关本协议的标准化状态和状态,请参阅当前版本的《互联网官方协议标准》(STD 1)。
    这份备忘录的分发是无限制的。

摘要

  • 本文定义了虚拟路由器冗余协议(VRRP)。VRRP指定一个选举协议,动态地将虚拟路由器的责任分配给LAN上的一个VRRP路由器。控制与虚拟路由器相关联的IP地址们的VRRP路由器称为主机,并转发发送到这些IP地址的数据包。如果主服务器不可用,则选择过程在转发责任中提供动态故障转移。这允许终端主机将LAN上的任何虚拟路由器IP地址用作默认的第一跳路由器。使用VRRP的优点是无需在每个终端主机上配置动态路由或路由器发现协议,就可以获得更高的可用性默认路径。

目录

  • 介绍
    • 贡献者
    • 范围
    • 定义
  • 要求特点
    • ip地址备份
    • 首选路径指示
    • 尽量减少不必要的服务中断
    • 在扩展的局域网上进行有效的操作
  • VRRP概述
  • 样例配置
    • 配置样本1
    • 配置样本2
  • 协议
    • VRRP包格式
    • ip包字段描述
    • VRRP包字段描述
  • 协议状态机
    • 每个虚拟路由器的参数
    • 定时器
    • 状态转换图
    • 状态描述
  • 操作问题
    • icmp重定向
    • 主机arp请求
    • 代理arp
    • 潜在的转发循环
  • 通过FDDI、令牌环和ATM通道进行操作
    • 通过FDDI操作
    • 通过令牌环操作
    • 通过ATM通道操作
  • 安全注意事项
  • 确认
  • 参考文献
    • 引用标准
    • 有益的参考
  • 来自RFC2338的变化

1.介绍

  • 终端主机可以使用许多方法来确定其指向特定IP目的地的第一个跃点路由器。这些包括运行(或监视)动态路由协议,如路由信息协议[RIP]或OSPF version 2 [OSPF],运行ICMP路由器发现客户机[DISC]或使用静态配置的默认路由。
  • 在每个终端主机上运行动态路由协议可能不可行,原因有很多,包括管理开销、处理开销、安全问题,或者某些平台缺乏协议实现。邻居或路由器发现协议可能需要网络上所有主机的积极参与,从而导致较大的定时器值,从而在面对大量主机时减少协议开销。这可能导致在检测丢失(即这可能会引入长得让人无法接受的“黑洞”周期。
  • 使用静态配置的默认路由非常流行;它最小化了终端主机上的配置和处理开销,并且几乎每个IP实现都支持它。当部署了动态主机配置协议(DHCP)时,这种操作模式可能会持续存在,该协议通常为终端主机IP地址和默认网关提供配置。然而,这将创建一个单点故障。丢失缺省路由器将导致灾难性事件,隔离所有无法检测任何可用替代路径的终端主机。
  • 虚拟路由器冗余协议(VRRP)旨在消除静态缺省路由环境中固有的单点故障。VRRP指定一个选举协议,动态地将虚拟路由器的责任分配给LAN上的一个VRRP路由器。控制与虚拟路由器相关联的IP地址们的VRRP路由器称为主机,并转发发送到这些IP地址的数据包。如果主服务器不可用,则选择过程在转发责任中提供动态故障转移。然后,终端主机可以使用LAN上虚拟路由器的任何IP地址作为默认的第一跳路由器。使用VRRP的优点是无需在每个终端主机上配置动态路由或路由器发现协议,就可以获得更高的可用性默认路径。
  • VRRP提供了一个类似于专有协议“热备用路由器协议(HSRP)”的功能。[HSRP]和《IP备用协议》[IPSTB]。
  • 本文件中“必须”、“必须”、“必须”、“必须”、“不应该”、“应该”、“不应该”、“建议”、“可能”和“可选”等关键字的解释见[RFC2119]。

1.1.贡献者

  • 以下人员是本文档基于并替换的RFC 2338的作者,他们为本文档中的文本做出了贡献。他们是P.希金森,R.欣登,P.亨特,S.奈特,A。林登、米泽尔、尚德、韦弗和惠普尔。由于当前的RFC-Editor策略,它们没有被列为文档的作者。

1.2.范围

  • 本文档的其余部分描述了VRRP的特性、设计目标和操作理论。给出了保证收敛到单个虚拟路由器主机的消息格式、协议处理规则和状态机。最后,讨论了与MAC地址映射、处理ARP请求、生成ICMP重定向消息和安全问题相关的操作问题。
  • 此协议仅适用于IPv4路由器。如果确定在IPv6环境中需要类似的功能,将生成一个单独的规范。

1.3.定义

  • VRRP路由器:运行虚拟路由器冗余协议的路由器。它可以参与一个或多个虚拟路由器。
  • 虚拟路由器:由VRRP管理的抽象对象,用作共享LAN上主机的默认路由器。它由一个虚拟路由器标识符和一组跨公共LAN的相关IP地址组成。一个VRRP路由器可以备份一个或多个虚拟路由器。
  • IP地址的主人:将虚拟路由器的IP地址作为实际接口地址的VRRP路由器。这些路由器当up时,它将响应到这些IP地址之一的数据包,用于ICMP ping、TCP连接等。
  • 主IP地址:从一组实际接口地址中选择的IP地址。一种可能的选择算法是始终选择第一个地址。VRRP广告总是使用主IP地址作为IP包的源来发送。
  • 虚拟路由器主:VRRP路由器负责转发发送到与虚拟路由器相关联的IP地址的数据包,并响应这些IP地址的ARP请求。注意,如果IP地址所有者可用,那么它将始终成为主人。
  • 虚拟路由器备份:一组VRRP路由器,可用来承担虚拟路由器的转发责任,如果当前主机发生故障。

2.所需的功能特性

  • 本节概述了一组被认为是强制性的特性,这些特性指导了VRRP的设计。

2.1.IP地址备份

  • IP地址备份是虚拟路由器冗余协议的主要功能。在提供虚拟路由器主机的选择和下面描述的附加功能时,协议应该努力做到这一点
    • 尽量缩短黑洞的持续时间。
    • 最小化稳态带宽开销和处理复杂度。
    • 功能超过多种多样的多址局域网技术,能够支持IP流量。
    • 提供在网络上选择多个虚拟路由器以实现负载平衡。
    • 在一个局域网段上支持多个逻辑IP子网。

2.2.首选路径指示

  • 在一组冗余路由器之间进行主机选择的一个简单模型是对每台路由器都以同等的优先级来对待,并在汇聚到任意一台路由器作为主机后宣告胜利。然而,在许多环境中,冗余路由器集合之间可能存在明显的首选项(或首选项范围)。例如,此首选项可能基于访问链路成本或速度、路由器性能或可靠性或其他策略考虑。协议应该允许以一种直观的方式表达这种相对路径首选项,并保证主节点收敛到当前可用的最优路由器。

2.3.尽量减少不必要的服务中断

  • 一旦执行了主选择,那么在主路由器和备份路由器之间的任何不必要的转换都可能导致服务中断。该协议应确保在主程序具有相同或较低的优先级后,只要主程序继续正常运行。有些环境可能会发现,避免在路由器可用时触发的状态转换是有益的,而路由器是当前主机的首选。支持对立即收敛到首选路径的覆盖可能是有用的。

2.4.在扩展的局域网上进行有效的操作

  • 在多址LAN上发送IP数据包需要从IP地址映射到MAC地址。在使用学习桥接的扩展LAN中使用虚拟路由器MAC地址会对发送到虚拟路由器的数据包的带宽开销产生显著影响。如果虚拟路由器MAC地址在链路级帧中从来没有用作源地址,那么站点位置就永远不会知道,从而导致发送到虚拟路由器的所有数据包泛滥。为了提高这种环境下的效率,协议应该:1)使用虚拟路由器MAC作为主机发送数据包的源,触发学习;2)切换到Master后立即触发消息,更新学习情况;3)从主站定时触发消息,维护学习缓存。

3.VRRP概述

  • VRRP指定一个选举协议来提供前面描述的虚拟路由器功能。所有协议消息都使用IP组播数据报执行,因此协议可以在支持IP组播的多种多址LAN技术上运行。每个VRRP虚拟路由器都有一个众所周知的MAC地址分配给它。本文档目前只详细介绍了使用IEEE 802 48位MAC地址到网络的映射。虚拟路由器MAC地址被用作所有由主路由器发送的周期性VRRP消息的源,以便在扩展局域网中启用桥接学习。
  • 虚拟路由器由它的虚拟路由器标识符(VRID)和一组IP地址定义。VRRP路由器可以将虚拟路由器与其在接口上的真实地址相关联,还可以配置附加的虚拟路由器映射和它愿意备份的虚拟路由器的优先级。VRID和地址之间的映射必须在LAN上的所有VRRP路由器之间协调。但是,在不同的lan上重用具有不同地址映射的VRID没有限制。每个虚拟路由器的范围被限制在一个局域网内。
  • 为了最小化网络流量,每个虚拟路由器只有主路由器定期发送VRRP广告消息。备份路由器不会试图抢占主路由器,除非它有更高的优先级。这就消除了服务中断,除非有更理想的路径可用。还可以通过管理禁止所有抢占尝试。唯一的例外是VRRP路由器将始终成为与其拥有的地址相关联的任何虚拟路由器的主路由器。如果主路由器不可用,那么在短暂的延迟之后,最高优先级的备份路由器将转移为主路由器,以最小的服务中断提供虚拟路由器职责的受控转移。
  • VRRP协议设计提供了从备份到主服务器的快速转换,以最小化服务中断,并包含了一些优化,这些优化在保证典型操作场景的受控主转换的同时降低了协议的复杂性。优化的结果是产生一个具有最小运行时状态要求、最小活动协议状态和单个消息类型和发送方的选举协议。典型的操作场景定义为两个冗余路由器和/或每个路由器之间不同的路径首选项。如果违反了这些假设(两个以上的冗余路径都具有相同的优先级),那么在主选择期间,重复的包可能会被转发一小段时间。然而,典型的场景假设很可能涵盖绝大多数部署,主路由器的丢失并不频繁,并且主路由器选举收敛的预期持续时间非常短(<< 1秒)。因此,VRRP优化代表了协议设计中的重要简化,同时不会导致短暂的网络退化。

4.配置样本

4.1.配置样本1

  • 下图显示了一个简单的网络,其中两个VRRP路由器实现了一个虚拟路由器。请注意,提供此示例是为了帮助理解协议,但在实际操作中不希望出现这种情况。
            +-----------+      +-----------+
            |   Rtr1    |      |   Rtr2    |
            |(MR VRID=1)|      |(BR VRID=1)|
            |           |      |           |
    VRID=1  +-----------+      +-----------+
    IP A ---------->*            *<--------- IP B
                    |            |
                    |            |
  ------------------+------------+-----+--------+--------+--------+--
                                       ^        ^        ^        ^
                                       |        |        |        |
                                     (IP A)   (IP A)   (IP A)   (IP A)
                                       |        |        |        |
                                    +--+--+  +--+--+  +--+--+  +--+--+
                                    |  H1 |  |  H2 |  |  H3 |  |  H4 |
                                    +-----+  +-----+  +--+--+  +--+--+
     Legend:
              ---+---+---+--  =  Ethernet, Token Ring, or FDDI
                           H  =  主机电脑
                          MR  =  主路由器
                          BR  =  备份路由器
                           *  =  IP地址
                        (IP)  =  主机电脑的默认路由
  • 从上面的图中去掉对VRRP (VRID=1)的所有提及,使其成为典型的IP部署。每个路由器在LAN接口上被永久分配一个IP地址(Rtr1分配IP A, Rtr2分配IP B),每个主机通过其中一个路由器安装一个静态默认路由(在本例中,它们都使用Rtr1的IP A)。
  • 移到VRRP环境中,每个路由器都有完全相同的永久分配的IP地址。Rtr1是IP A的IP地址所有者,Rtr2是IP B的IP地址所有者。然后,通过将唯一标识符(虚拟路由器ID)与路由器拥有的地址关联来定义虚拟路由器。最后,VRRP协议管理虚拟路由器故障转移到备份路由器。
  • 上面的示例显示了一个虚拟路由器,它被配置为覆盖Rtr1拥有的IP地址(VRID=1,IP_Address= A)。当VRRP在Rtr1上为VRID=1启用时,它将把自己声明为Master,优先级为255,因为它是虚拟路由器IP地址的IP地址所有者。当Rtr2上为VRID=1启用VRRP时,它将转换到Backup,优先级为100,因为它不是IP地址所有者。如果Rtr1失败,那么VRRP协议将把Rtr2转移到Master,暂时接管IP A的转发责任,为主机提供不间断的服务。
  • 注意,在这个示例中,IP B没有备份,它只被Rtr2用作接口地址。为了备份IP B,必须配置第二个虚拟路由器。这将在下一节中显示。

4.2.配置样本2

  • 下图显示了两个虚拟路由器的配置,其中主机分散它们之间的流量。这个例子在实际操作中很常见
            +-----------+      +-----------+
            |   Rtr1    |      |   Rtr2    |
            |(MR VRID=1)|      |(BR VRID=1)|
            |(BR VRID=2)|      |(MR VRID=2)|
    VRID=1  +-----------+      +-----------+  VRID=2
    IP A ---------->*            *<---------- IP B
                    |            |
                    |            |
  ------------------+------------+-----+--------+--------+--------+--
                                       ^        ^        ^        ^
                                       |        |        |        |
                                     (IP A)   (IP A)   (IP B)   (IP B)
                                       |        |        |        |
                                    +--+--+  +--+--+  +--+--+  +--+--+
                                    |  H1 |  |  H2 |  |  H3 |  |  H4 |
                                    +-----+  +-----+  +--+--+  +--+--+
     Legend:
              ---+---+---+--  =  Ethernet, Token Ring, or FDDI
                           H  =  主机电脑
                          MR  =  主路由器
                          BR  =  备份路由器
                           *  =  IP地址
                        (IP)  =  主机电脑的默认路由
  • 在上面的示例中,一半的主机配置了一个通过Rtr1 IP A的静态路由,一半使用Rtr2的IP B作为静态路由。虚拟路由器VRID=1的配置与第一个示例完全相同(参见4.1节),并且添加了第二个虚拟路由器来覆盖Rtr2拥有的IP地址(VRID=2, IP_Address=B)。在本例中,Rtr2将自己声明为VRID=2的Master,而Rtr1将充当备份。这个场景演示了一个部署,当两个路由器都可用时提供负载分割,同时为健壮性提供完全冗余。

5.协议

  • VRRP包的目的是和所有VRRP路由器通告与虚拟路由器ID相关联的主路由器的优先级和状态。
  • VRRP包被封装在IP包中发送。它们被发送到分配给VRRP的IPv4组播地址。

5.1.VRRP包格式

  • 本节定义了VRRP包的格式和IP头中的相关字段。
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Version| Type  | Virtual Rtr ID|   Priority    | Count IP Addrs|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Auth Type   |   Adver Int   |          Checksum             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         IP Address (1)                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                            .                                  |
   |                            .                                  |
   |                            .                                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         IP Address (n)                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Authentication Data (1)                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Authentication Data (2)                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

5.2.IP报文描述

5.2.1.源地址

  • 使用接口的主IP地址发送数据包。

5.2.2.目的地址

  • IANA为VRRP分配的IP组播地址为: 224.0.0.18
  • 这是一个链接本地范围组播地址。无论其TTL是多少,路由器都不能转发具有此目标地址的数据报。

5.2.3.TTL

  • TTL必须设置为255。接收TTL不等于255的数据包的VRRP路由器必须丢弃该数据包。

5.2.4.协议

  • IANA为VRRP分配的IP协议号是112(十进制)。

5.3.VRRP字段描述

5.3.1.版本

  • version字段指定此包的VRRP协议版本。这个文档定义了版本2。

5.3.2.类型

  • type字段指定此VRRP包的类型。本协议版本中唯一定义的数据包类型为: 1 ADVERTISEMENT
  • 必须丢弃类型未知的包。

5.3.3.虚拟路由ID (VRID)

  • 虚拟路由器标识符(VRID)字段标识此包报告状态的虚拟路由器。范围为1-255(十进制)的可配置项。没有默认值。

5.3.4.优先级

  • priority字段指定发送VRRP路由器对虚拟路由器的优先级。更高的值等于更高的优先级。该字段是一个8位无符号整数字段。拥有与虚拟路由器相关联的IP地址的VRRP路由器的优先级值必须是255(十进制)。
  • 备份虚拟路由器的VRRP路由器必须使用1-254(十进制)之间的优先级值。备份虚拟路由器的VRRP路由器的默认优先级值是100(十进制)。
  • 优先级值0(0)具有特殊意义,表示当主路由器已经停止参与VRRP。这用于触发备份路由器快速转换到主路由器,而不必等待当前主路由器超时。

5.3.5.IP的个数

  • 此VRRP广告中包含的IP地址(VIP)的数量。

5.3.6.认证类型

  • authentication type字段标识使用的身份验证方法。身份验证类型在虚拟路由器上是唯一的。身份验证类型字段是一个8位无符号整数。必须丢弃身份验证类型未知或与本地配置的身份验证方法不匹配的包。
  • 注意:VRRP规范的早期版本有几个定义的身份验证类型[RFC2338]。这些在本规范中被删除,因为操作经验表明它们没有提供任何真正的安全性,只会导致创建多个主路由器。
  • 目前定义的认证方法有:
    • 0 -没有身份验证
    • 1 -保留
    • 2 -保留

5.3.6.1.身份验证类型0-无身份验证

  • 使用这种身份验证类型意味着不验证VRRP协议交换。身份验证数据字段的内容在传输时应设置为零,在接收时应忽略。

5.3.6.2.身份验证类型1-保留

  • 保留此身份验证类型是为了维护与RFC 2338的向后兼容性。

5.3.6.3.身份验证类型2-保留

  • 保留此身份验证类型是为了维护与RFC 2338的向后兼容性。

5.3.7.通告间隔(Adver Int)

  • 通告间隔表示发送VRRP报文之间的时间间隔(以秒为单位)。默认值是1秒。此字段用于排除配置错误的路由器。

5.3.8.校验和

  • checksum字段用于检测VRRP消息中的数据损坏。
  • 为了计算校验和,校验和字段被设置为零。更多细节见RFC1071 [CKSM]。

5.3.9.IP地址

  • 与虚拟路由器关联的一个或多个IP地址。包含的地址数在“Count IP Addrs”字段中指定。这些字段用于排除配置错误的路由器。

5.3.10.身份验证数据

  • 身份验证字符串目前仅用于维护与RFC 2338的向后兼容性。它应该设置为零在传输和忽略接收

6.协议状态机

6.1.每个虚拟路由器的参数

  • VRID(虚拟路由ID):虚拟路由器标识符。范围为1-255(十进制)的可配置项。没有默认值
  • Priority(优先级):此VRRP路由器在此虚拟路由器的主选择中使用的优先级值。255 (decimal)的值保留给拥有与虚拟路由器关联的IP地址的路由器。值0保留给主路由器,表示它正在释放对虚拟路由器的责任。范围1-254(十进制)可用于支持虚拟路由器的VRRP路由器。默认值是100(十进制)。
  • ip地址:与此虚拟路由器关联的一个或多个IP地址。配置项。没有默认值。
  • Advertisement_Interval(通告间隔):广告之间的时间间隔(秒)。默认值是1秒。
  • Skew_Time(偏离时间): 偏离Master_Down_Interval的时间(以秒为单位)。((256 - Priority) * Advertisement_Interval / 256)
  • Master_Down_Interval:备份声明主路由器宕机的时间间隔(秒)。计算公式为:(3 * Advertisement_Interval) + Skew_time
  • Preempt_Mode(抢占模式):控制高优先级备份路由器是否抢占低优先级主路由器。值为True以允许抢占,值为False以禁止抢占。默认是True。
  • Authentication_Type(认证类型):正在使用的身份验证类型。值在第5.3.6节中定义。
  • Authentication_Data(认证数据):特定于正在使用的Authentication_Type的身份验证数据。

6.2.定时器

  • Master_Down_Timer:当Master_Down_Interval时没有听到广告时触发的定时器。
  • Adver_Timer:触发基于Advertisement_Interval发送广告的定时器。

6.3.状态转换图

                      +---------------+
           +--------->|               |<-------------+
           |          |  Initialize   |              |
           |   +------|               |----------+   |
           |   |      +---------------+          |   |
           |   |                                 |   |
           |   V                                 V   |
   +---------------+                       +---------------+
   |               |---------------------->|               |
   |    Master     |                       |    Backup     |
   |               |<----------------------|               |
   +---------------+                       +---------------+

6.4.状态描述

  • 在下面的状态描述中,状态名由{state-name}标识,数据包由所有大写字母标识。
  • VRRP路由器为它所参与的每个虚拟路由器的选举实现状态机的实例。

6.4.1.Initialize(初始化)

  • 此状态的目的是等待启动事件。如果收到启动事件,则:
if (优先级==255(路由器拥有与虚拟路由器相关联的IP地址)) {
    1.发送一个VRRP通告(ADVERTISEMENT)
    2.广播一个免费ARP请求,其中包含与虚拟路由器关联的每个IP地址的虚拟路由器MAC地址。
    3.将Adver_Timer设置为Advertisement_Interval
    4.转换到主机状态(Master)
} else {
    1.将Master_Down_Timer设置为Master_Down_Interval
    2.转换到备份路由器状态
}

6.4.2.Backup(备份状态)

  • 备份状态的目的是监视主路由器的可用性和状态。
  • 在这种状态下,VRRP路由器必须完成以下操作:
    • 不能响应与虚拟路由器关联的IP地址的ARP请求。
    • 必须丢弃目标链路层MAC地址等于虚拟路由器MAC地址的数据包。
    • 不能接受发送到与虚拟路由器关联的IP地址的数据包。
    • 场景:
    if (收到shutdown事件) {
        1.取消Master_Down_Timer
        2.转换到初始化状态(Initialize)
    }
    if (Master_Down_Timer触发) {
        1.发送一个ADVERTISEMENT通告
        2.广播一个免费的ARP请求,其中包含与虚拟路由器关联的每个IP地址的虚拟路由器MAC地址
        3.将Adver_Timer设置为Advertisement_Interval
        4.转换到主机路由器状态(Master)
    }
    if (如果收到VRRP ADVERTISEMENT通告) {
        if(VRRP通告中的priority(优先级)==0) {
            1.将Master_Down_Timer设置为Skew_Time
        } else {
            if (Preempt_Mode为False || VRRP通告中的priority(优先级)>= 本地priority(优先级)) {
                1.将Master_Down_Timer重置为Master_Down_Interval
            } else {
                1.丢弃VRRP通告
            }
        }
    }

6.4.3.Master(主机状态)

  • 当处于主机状态(Master)时,路由器作为与虚拟路由器相关联的IP地址的转发路由器。
  • 在这种状态下,VRRP路由器必须完成以下操作:
    • 必须响应与虚拟路由器关联的IP地址的ARP请求。
    • 必须转发具有与虚拟路由器MAC地址相等的目标链路层MAC地址的数据包。
    • 如果不是虚拟路由器的IP地址所有者,不接受发送到与虚拟路由器关联的IP地址的数据包
    • 如果是IP地址所有者,则必须接受发送到与虚拟路由器关联的IP地址的数据包。
    • 场景:
    if (收到shutdown事件) {
        1.取消Adver_Timer
        2.发送priority(优先级)为0的VRRP通告
        3.转换到初始化(Initialize)状态
    }
    if (Adver_Timer定时器触发) {
        1.发送一个VRRP通告。将Adver_Timer定时器重置为Advertisement_Interval
    }
    if (收到VRRP通告) {
        if (VRRP报文中通告的priority(优先级) == 0) {
            1.发送一个VRRP通告
            2.将Adver_Timer重置为Advertisement_Interval
        } else {
            if (VRRP通告中的priority(优先级) > 本地priority(优先级) || VRRP通告中的priority(优先级)==本地priority(优先级),发送方的主IP地址 > 本地主IP地址) 
                1.取消Adver_Timer
                2.将Master_Down_Timer设置为Master_Down_Interval
                3.转换到备份路由器状态
            } else {
                1.丢弃VRRP通告报文(ADVERTISEMENT)
            }
        }
    }

7.发送和接收VRRP数据包

7.1.接收VRRP数据包

  • 在接收到VRRP包时执行以下功能:
    • 必须验证IP包TTL是否为255
    • 必须验证VRRP版本为2。
    • 必须校验完整的VRRP包(包括固定字段、IP地址和身份验证数据)。
    • 必须校验VRRP的校验和
    • 必须验证VRID为在接收接口上配置的VRID,本地路由器不是IP地址所有者(优先级等于255)。
    • 必须验证Auth类型是否匹配虚拟路由器的本地配置身份验证方法,并执行该身份验证方法。
  • 如果上述任何一个检查失败,接收方必须丢弃数据包,应该记录事件,并可能通过网络管理指出发生了错误。
    • 可以验证VRRP报文中的IP地址个数(Count IP Addr)和IP地址列表是否匹配为本地VRID配置的ip地址
  • 如果上述检查失败,则接收方应记录事件,并可能通过网络管理指示检测到错误配置。如果数据包不是由地址所有者生成的(优先级不等于255),则接收方必须丢弃数据包,否则继续处理。
  • 如果上述检查失败,接收方必须丢弃数据包,应该记录事件,并可能通过网络管理指示检测到错误配置

7.2.发送VRRP包

  • 发送VRRP包时必须执行以下操作。
    • 用适当的虚拟路由器配置状态填充VRRP包字段
    • 计算VRRP校验和
    • 将源MAC地址设置为虚拟路由器MAC地址
    • 将源IP地址设置为接口主IP地址
    • 将IP协议设置为VRRP
    • 将VRRP包发送到VRRP IP组播组
  • 注意:VRRP数据包以虚拟路由器MAC地址作为源MAC地址进行传输,以确保学习桥接器正确地确定虚拟路由器所连接的LAN段。

7.3.虚拟路由器MAC地址

  • 与虚拟路由器关联的虚拟路由器MAC地址是IEEE 802 MAC地址,格式如下:
    • 00-00-5E-00-01- (VRID) (十六进制互联网标准位命令)
  • 前三个八位元来自IANA的OUI。接下来的两个八位(00-01)表示分配给VRRP协议的地址块。{VRID}是VRRP虚拟路由器标识符。该映射提供了网络上最多255个VRRP路由器。

8. 操作问题

8.1.ICMP重定向

  • 当VRRP在一组路由器之间运行时,ICMP重定向可以正常使用。这允许在拓扑不对称的环境中使用VRRP。
  • ICMP重定向的IP源地址应该是做出下一个跃点路由决策时使用的终端主机地址。如果VRRP路由器充当包含它不拥有的地址的主路由器,则在选择重定向源地址时,它必须确定数据包发送到哪个虚拟路由器。一种方法推断虚拟路由器是检查触发重定向的数据包中的目标MAC地址。
  • 对于特定的VRRP情况,如当VRRP用于在对称拓扑中加载多个路由器之间的共享通信。,禁用重定向可能是有用的

8.2.主机的ARP请求

  • 当主机向一个虚拟路由器IP地址发送ARP请求时,主虚拟路由器必须使用虚拟路由器的虚拟MAC地址响应ARP请求。主虚拟路由器不能用它的物理MAC地址响应。这允许客户端始终使用相同的MAC地址,而不管当前的主路由器是什么。
  • 当一个VRRP路由器重新启动或引导时,它不应该为它所拥有的IP地址发送任何带有它的物理MAC地址的ARP消息,它应该只发送包含虚拟MAC地址的ARP消息
    • 当配置一个接口时,VRRP路由器应该广播一个包含该接口上每个IP地址的虚拟路由器MAC地址的ARP请求。
    • 在系统启动时,为VRRP操作初始化接口;推迟不必要的ARP请求和ARP响应,直到配置好IP地址和虚拟路由器MAC地址。

8.3.代理ARP

  • 如果要在VRRP路由器上使用代理ARP,那么VRRP路由器必须在代理ARP消息中声明虚拟路由器MAC地址。否则,主机可能会知道VRRP路由器的真实MAC地址。

8.4.潜在的转发环路

  • 如果一个VRRP主路由器不是目的ip地址的拥有者,则不应该转发数据包。转发这些数据包会导致不必要的流量。同样,对于接收它们传输的数据包的lan(例如令牌环),这可能导致转发循环,只有当TTL过期时才终止。
  • VRRP路由器的一种这样的机制是,当从主状态转换到或离开主状态时,会为每个使用的IP地址,添加/删除一个主机路由。

9.通过FDDI、令牌环和ATM通道进行操作

9.1.通过FDDI操作

  • 从具有与设备硬件地址匹配的源MAC地址的FDDI环帧中删除FDDI接口。在某些情况下,如路由器隔离、环失效、协议转换等,VRRP可能会导致出现多个主路由器。如果主路由器将虚拟路由器MAC地址作为硬件地址安装在FDDI设备上,那么在主路由器收敛过程中,其他主路由器的广告将被从环中删除,收敛失败。
  • 为了避免这种情况,一个实现应该通过在FDDI设备中添加一个单播MAC过滤器来配置虚拟路由器MAC地址,而不是改变它的硬件MAC地址。这将防止主路由器删除它不是起源的任何广告。

9.2.通过令牌环操作

  • 令牌环的一些特点会导致运行VRRP困难
    • 在使用源路由桥接器时,为了切换到位于与前一个主节点不同的桥接令牌环段上的新主节点,需要一种机制来更新缓存的源路由信息。
    • 不支持跨新旧令牌环适配器实现的通用组播机制。虽然许多较新的令牌环适配器支持组地址,但令牌环功能地址支持是唯一普遍可用的多播机制。由于令牌环功能地址的数量有限,它们可能会与相同令牌环功能地址的其他用法发生冲突。
    • 由于这些困难,令牌环之上的首选操作模式将是为VRID虚拟MAC地址使用令牌环功能地址。令牌环功能地址将第一个MAC地址八位组中的两个高阶位设置为B’1’。它们的范围从 03-00-00-00-00-80到03-00-02-00-00-00(标准格式)。然而,与多播地址不同,每个位位置只有一个惟一的功能地址。令牌环体系结构[TKARCH]为用户定义的应用程序保留了从03-00-00-10-00-00到03-00-02-00-00-00的功能地址。但是,由于只有12个用户定义的令牌环功能地址,因此可能有其他非ip协议使用相同的功能地址。由于Novell IPX [IPX]协议使用03-00-00-10-00-00函数地址,VRRP在令牌环上的操作将避免使用该函数地址。通常,令牌环VRRP用户将负责解决其他用户定义的令牌环功能地址冲突。
    • vrid直接映射到令牌环功能地址。为了减少功能地址冲突的可能性,分配将从最大的功能地址开始。大多数非ip协议使用前一对或前一对用户定义的函数地址,预期VRRP用户会将从1开始顺序选择vrid。
      VRID      Token Ring Functional Address
      ----      -----------------------------

         1             03-00-02-00-00-00

         2             03-00-04-00-00-00

         3             03-00-08-00-00-00

         4             03-00-10-00-00-00

         5             03-00-20-00-00-00

         6             03-00-40-00-00-00

         7             03-00-80-00-00-00

         8             03-00-00-01-00-00

         9             03-00-00-02-00-00

        10             03-00-00-04-00-00

        11             03-00-00-08-00-00
- 或者更简洁地说,函数地址的8位中的3和4位在非规范格式中等于(0x4000 >> (VRID - 1))。
- 由于函数地址不能用作MAC级源地址,所以在VRRP广告中使用实际MAC地址作为MAC源地址。这对于网桥来说不是问题,因为指向函数地址的数据包将在生成树资源管理器路径[802.1D]上发送。
- 功能地址操作模式必须由支持VRRP的路由器在令牌环上实现。
- 此外,路由器可能支持单播操作模式,以利用较新的令牌环适配器实现,该实现支持对多个单播MAC地址的非混杂接收,并避免与使用令牌环功能地址相关的多播流量和使用冲突。单播模式使用与以太网相同的vrid到虚拟MAC地址的映射。然而,存在一个重要的区别。ARP请求/应答包包含作为源MAC地址的虚拟MAC地址。原因是一些令牌环驱动程序实现保留了一个独立于ARP缓存的MAC地址/源路由信息缓存。因此,这些实现需要接收一个以虚拟MAC地址作为源地址的数据包,以便在源路由桥接网络中传输到该MAC地址。
- 令牌环上的单播模式有一个必须考虑的限制。如果在不同的源路由桥段上有VRID路由器,并且主机实现将它们的源路由信息保存在ARP缓存中,并且不侦听不必要的ARP,那么当切换发生时,这些主机将不会正确更新它们的ARP源路由信息。唯一可能的解决方案是将所有具有相同VRID的路由器放在相同的源桥段上,并使用技术来防止桥段成为单一故障点。这些技术超出了本文的范围。
- 无论是组播还是单播的操作模式,发送到224.0.0.18的VRRP广告都应该封装成[RFC1469]中描述的那样。

9.3.通过ATM通道操作

  • 操作超出了本文的范围。

10.安全注意事项

  • VRRP目前不包含任何类型的身份验证。VRRP规范的早期版本包括几种类型的身份验证,从none到strong。操作经验和进一步的分析确定,这些并没有提供任何真正的安全措施。由于VRRP协议的性质,即使VRRP消息是加密保护的,它也不能阻止恶意路由器表现得好像它们是一个VRRP主机,从而创建多个主机。VRRP消息的身份验证可以防止恶意路由器导致所有正常运行的路由器进入备份状态。然而,拥有多个主机与没有路由器一样会造成破坏,而身份验证无法防止这种情况。此外,即使恶意路由器不能中断VRRP,它也可以中断ARP,并产生与所有路由器进入备份相同的效果。
  • 应该注意的是,这些攻击并不比VRRP更糟,而且是附加到LAN上的任何节点都可以独立于VRRP进行的攻击的子集。所有这些都可以独立于实现VRRP来完成。VRRP不会增加这些漏洞。
  • 独立于任何身份验证类型的VRRP包含一种机制(设置TTL=255,接收时检查),它可以防止VRRP数据包被从另一个远程网络注入。这限制了对本地攻击的大多数漏洞。
  • VRRP不提供任何保密信息。VRRP的正确操作不需要保密性,而且VRRP消息中没有任何信息必须对LAN上的其他节点保密。

你可能感兴趣的:(高可用性,Linux运维,计算机网络)