VRRP协议个人理解+报文示例+典型配置-RFC2338/RFC3768/RFC5798/RFC9568

个人认为,理解报文就理解了协议。通过报文中的字段可以理解协议在交互过程中相关传递的信息,更加便于理解协议。

因此本文将在VRRP协议报文的基础上进行介绍。

在这里插入图片描述VRRP协议发展

  • 关于VRRPv2基本原理,可重点参考2004年发布的RFC3768-Virtual Router Redundancy Protocol
  • 关于VRRPv3基本原理,可重点参考2024年发布的RFC9568-VRRP Version 3 for IPv4 and IPv6

历史RFC

  • 关于VRRPv2的历史版本RFC,可查看1998年发布的RFC2338
  • 关于VRRPv3的历史版本RFC,可查看2010年发布的RFC5798
  • 关于VRRP所使用的协议号,可查看IANA发布的Assigned Internet Protocol Numbers
  • 关于VRRPv2的RFC2338版本资料,可查看博客VRRP协议RFC2338文档翻译
  • 关于VRRPv3的RFC5798版本资料,可查看博客VRRP协议RFC5798文档翻译
  • 关于VRRPv3所涉及的ICMPv6协议,可查看博客IPv6/ICMPv6-原理介绍+报文分析+配置示例
  • 关于单播VRRP的相关内容,可参考Keepalived Configuration Manual Page


相比于VRRPv2支持IPv4网络,VRRPv3主要用于支持IPv6网络。同时允许VRRPv3兼容VRRPv2标准。不同版本之间除部分字段有所不同外,相关内容无较大差别。

Note:不同版本RFC之间略有差异,这里以其中一版VRRP协议进行说明。个人能力有限,敬请各位指导。

目录

Virtual Router Redundancy Protocol

  • 目录

  • 1.VRRP原理
    • 1.1.VRRP相关概念
    • 1.2.VRRP报文格式
      • 1.2.1.VRRP的包格式
      • 1.2.2.VRRP的帧格式
    • 1.3.VRRP状态机切换
  • 2.VRRP的实际应用
    • 2.1.VRRP的典型配置
    • 2.2.VRRP的其他应用
      • 2.2.1.VRRP与路由协议
      • 2.2.2.单播VRRP
  • 更新

1.VRRP原理

VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)主要用于消除静态路由下固有的单点故障导致的业务转发异常故障。VRRP 通过定义选举机制,将虚拟路由器的责任分配给 LAN 上的 VRRP 路由器之一。控制与虚拟路由器关联的 IP 地址的 VRRP 路由器称为 Master 路由器,它会响应并转发发送到这些虚拟 IP 地址的数据包。如果 Master 路由器故障,选举过程会在转发责任中提供动态故障转移。然后,终端主机可以使用 LAN 上的任何虚拟路由器 IP 地址作为默认的第一跳路由器。使用 VRRP 的优势在于,默认路径可用性更高,无需在每个终端主机上配置动态路由或路由器发现协议。VRRP 提供的功能类似于专有协议“热备用路由器协议 (HSRP)”[HSRP] (《RFC2281-Cisco Hot Standby Router Protocol》) 和“IP 备用协议”[IPSTB] (《Development of router clusters to provide fast failover in IP networks》

其基本原理在于:通过一次竞争选举出承担虚拟 IP 及其虚拟 MAC 功能的路由器角色。

1.1.VRRP相关概念

基本概念
VRRP Router:VRRP 路由器,也即参与 VRRP 选举的路由器。
Virtual Router:一个由 VRRP 管理的虚拟对象。对外以 IP/MAC 的形式存在,用于作为主机的虚拟网关。

虚拟路由器的 Virtual IP 由管理员定义,同时其 MAC 为单播 MAC 由 IANA 所分配。
IPv4 网络下取 00-00-5E-00-01-{VRID}IPv6 网络下取 00-00-5E-00-02-{VRID}
该 00-00-5E 及其组播 01-00-5E 形式的 OUI,由 IANA 向 IEEE 所注册使用。相关地址分配可查看IANA发布的IANA OUI Ethernet Numbers

IP Address Owner:真实IP地址与 VRRP 虚拟路由器 IP相同的路由器。
Primary IP Address:真实路由器上被选出用于发送 VRRP advertisements 报文源地址的接口地址。

在 IPv4 网络中通常选择为接口主地址,在 IPv6 网络中通常选择为接口 link-local 地址。

Virtual Router Master:VRRP 路由器中被选举出来用于承载虚拟路由器角色的路由器。Master 路由器应当转发数据包 DMAC 为虚拟路由器的数据包,并响应虚拟路由器相关的 ARP/ND 报文。
Virtual Router Backup:VRRP 路由器中 Master 路由器的备选路由器。并且可以有多个。

在 RFC9568 中舍弃了 Master 路由器的概念,用以 ACTIVE 路由器替代。但保留了 Backup 路由器的相关概念。并且通常 Backup 路由器不转发数据包 DMAC 为虚拟路由器的数据包。
在这里插入图片描述vrrp vrid backup-forward 用于设置 Backup 路由器转发数据包 DMAC 为虚拟路由器的数据包。该功能主要用于防止 VRRP 状态切换过程中的流量中断问题,但同时有可能引入多包问题。

Drop Route:RFC9568 中新提出的概念。该路由用于防止 VRRP 状态切换中的流量微环。

状态机相关参数

virtual router IPv4_Addresses:虚拟路由器的 IPv4 地址。虚拟路由器可能有多个 IPv4 地址,参与选举的路由器应当相同。
virtual router IPv6_Addresses:虚拟路由器的 IPv6 地址。虚拟路由器可能有多个 IPv4 地址,参与选举的路由器应当相同。
Virtual_Router_MAC_Address:虚拟路由器的 MAC。在 RFC5798/RFC9568 中明确定义 VRRP advertisements 和 ARP/ND messages 的 SMAC 应当选择该 MAC。

IPv4 网络下取 00-00-5E-00-01-{VRID}IPv6 网络下取 00-00-5E-00-02-{VRID}
该 00-00-5E 及其组播 01-00-5E 形式的 OUI,由 IANA 向 IEEE 所注册使用。相关地址分配可查看IANA发布的IANA OUI Ethernet Numbers

Advertisement_Interval:VRRP advertisements 报文的发送间隔。VRRPv2 和 VRRPv3 都默认 1s。
Master_Adver_Interval:RFC5798/RFC9568 中明确定义由 Backup 路由器记录用于计算 Skew_Time 和 Master_Down_Interval。

在这里插入图片描述vrrp vrid timer advertise用于设置 VRRPv2 虚拟路由器的通告间隔。
在这里插入图片描述vrrp vrid timer advertise用于设置 VRRPv3 虚拟路由器的通告间隔。
在这里插入图片描述vrrp6 vrid timer advertise用于设置 VRRPv3 虚拟路由器的通告间隔。

Skew_Time:Master_Down 后的额外等待时间。

在 RFC2338/RFC3768 中该时间定义为:
( 256 − P r i o r i t y ) / 256 (256 - Priority) / 256 (256Priority)/256
在 RFC5798/RFC9568 中该时间定义为:
( ( 256 − p r i o r i t y ) ∗ M a s t e r _ A d v e r _ I n t e r v a l ) / 256 ((256 - priority) * Master\_Adver\_Interval) / 256 ((256priority)Master_Adver_Interval)/256

Master_Down_Interval:从 Backup 过渡到 Master/Active 状态的时间。

( 3 ∗ M a s t e r _ A d v e r _ I n t e r v a l ) + S k e w t i m e (3 * Master\_Adver\_Interval) + Skew_time (3Master_Adver_Interval)+Skewtime

Preempt_Mode/Accept_Mode:用于控制优先级较高的 Backup 路由器是否抢占优先级较低的 Master。默认抢占。RFC5798/RFC9568 中明确定义 Accept_Mode 用于控制是否响应发往虚拟路由器所在真实路由器的接口地址的报文。

在这里插入图片描述vrrp vrid preempt-mode 用于设置 vrrp 的抢占模式。

Master_Down_Timer:该定时器用于监听没有收到 VRRP ADVERTISEMENT 报文的时间。
Adver_Timer:该定时器用于触发 VRRP ADVERTISEMENT 报文的发送。

点击此处回到目录

1.2.VRRP报文格式

1.2.1.VRRP的包格式

VRRPv2 for IPv4:RFC2338/RFC3768
在这里插入图片描述在 RFC2338/RFC3768 中定义了相同格式的 VRRPv2 报文。

在这里插入图片描述VRRPv2 报文示例。

VRRPv3 for IPv4/IPv6:RFC5798/RFC9568
在这里插入图片描述在 RFC5798/RFC9568 中定义了相同格式的 VRRPv3 报文。其内容与 VRRPv2 格式基本相同,因此 VRRPv3 可以兼容 VRRPv2。

在这里插入图片描述VRRPv3 报文示例。

由于 VRRPv2 和 VRRPv3 格式基本相同,在此统一介绍各个字段含义
Version:4-bits,用于表示 VRRP 协议版本。取 2 时表示 VRRPv2,取 3 时表示 VRRPv3。

在这里插入图片描述vrrp version 用于设置 VRRP 的版本。

Type:4-bits,用于表示 VRRP 协议报文类型。目前 VRRPv2 和 VRRPv3 都只定义了一种 ADVERTISEMENT 报文,取值 1。
Virtual Rtr ID:8-bits,虚拟路由器 ID,用于区分所报告的虚拟路由器。取值 1-255。

在这里插入图片描述vrrp vrid 用于配置 VRID,该参数是 VRRP 选举相关参数之一

Priority:8-bits,用于表示发送 VRRP 虚拟路由器的优先级。Priority 越大,越优先。取值 1-255。

在这里插入图片描述vrrp vrid priority 用于配置特定虚拟路由器的优先级。VRID 取 0 时表示 VRRP Master/ACTIVE 主动退出 VRRP 选举,以便快速完成 VRRP 状态切换。VRID 取 255 时表示 IP 拥有者,IP 拥有者不参与 VRRP 选举直接过渡到 Master/ACTIVE 状态。该参数是 VRRP 选举相关参数之一

Count IPvX Addr:8-bits,用于表示后文携带 IP address 的个数。RFC5798/RFC9568 明确规定其值最小为 1,并忽略取值为 0 的 VRRP 通告报文。
Auth Type仅在 RFC2338/RFC3768 所定义的 VRRPv2 版本中存在。8-bits,用于表示 VRRP 所使用的认证类型。

RFC2338 仅提供了 VRRP 认证的三种模式:取 0 的不认证;取 1 的简单文本认证;取 2 的 IP 认证头。RFC3768 则只定义取 0 的不认证,实际上已取消了 VRRPv2 的认证。这是因为 VRRP 的认证并不能带来所预想的安全保护,并往往导致网络的多 Master 状态。
因此从 RFC3768 后不在定义 VRRP 的认证。在这里插入图片描述vrrp vrid authentication-mode 用于定义 VRRPv2 的认证模式。

rsvd仅在 RFC5798/RFC9568 所定义的 VRRPv3 版本中存在。4-bits,保留字段,要求置 0 并在接收时忽略该字段以便兼容之前版本。
Adver Int仅在 RFC2338/RFC3768 所定义的 VRRPv2 版本中存在。8-bits,VRRP ADVERTISEMENTS 通告间隔。取值 1-255,默认 1s。

在这里插入图片描述vrrp vrid timer advertise用于设置 VRRPv2 虚拟路由器的通告间隔。

Max Adver Int仅在 RFC5798/RFC9568 所定义的 VRRPv3 版本中存在。12-bits,VRRP ADVERTISEMENTS 通告间隔。取值 1-40,默认 1s。在 VRRPv3 中该字段单位为 100 centiseconds厘秒(1s)。

在这里插入图片描述vrrp vrid timer advertise用于设置 VRRPv3 虚拟路由器的通告间隔。由于仅占据 12-bits,也即 0-4095 因此取值 40s。
在这里插入图片描述vrrp6 vrid timer advertise用于设置 VRRPv3 虚拟路由器的通告间隔。由于仅占据 12-bits,也即 0-4095 因此取值 100-4095 centisecond。
自动换行
在最新的《RFC9568-1.1.Differences from RFC 5798 》中对该字段说明:
在这里插入图片描述应当检查该字段是否匹配。并在《RFC9568-7.1.Receiving VRRP Packets》中详细说明。
在这里插入图片描述当收到的 VRRP Advertisement 中该字段与本地不匹配时将有可能造成网络的不稳定。

Checksum:16-bits,用于校验整个 VRRP message 消息。
IPvX Address:不定长,用于携带一个或多个与虚拟路由器相关的 IP address 信息。

该字段为 VRRP 虚拟路由器的 IP address,并且参与路由器所填充的该字段应当在IP 数量和 IP address 上都保持一致。该参数是 VRRP 选举相关参数之一
在这里插入图片描述vrrp vrid virtual-ip 用于设置虚拟路由器的 ipv4 addres。
在这里插入图片描述vrrp vrid virtual-ip 用于设置虚拟路由器的 ipv6 addres。

Authentication Data仅在 RFC2338/RFC3768 所定义的 VRRPv2 版本中存在。认证数据信息。

1.2.2.VRRP的帧格式

除上述所介绍的 VRRP 包格式外,还应注意的是 VRRP 的 Ethernet Header 和 IP Header
SMAC:VRRP 通告报文的 SMAC 应使用协议规定 MAC。

IPv4 网络下取 00-00-5E-00-01-{VRID}IPv6 网络下取 00-00-5E-00-02-{VRID}。该 00-00-5E 及其组播 01-00-5E 形式的 OUI,由 IANA 向 IEEE 所注册使用。相关地址分配可查看IANA发布的IANA OUI Ethernet Numbers

DMAC:VRRP 通告报文为组播报文,因此其 DMAC 应由 DIP 映射而来。

IPv4 网络下固定取 01-00-5E-00-00-12IPv6 网络下固定取 33-33-00-00-00-12

SIP:协议规定 SIP 使用 primary IP Address 也即接口地址作为 VRRP 通告报文的源地址。

IPv4 网络下往往取接口主地址IPv6 网络下固定link-local地址

DIP:协议规定 VRRP 通告报文为组播报文。

IPv4 网络下固定取 224.0.0.18IPv6 网络下固定取 FF02:0:0:0:0:0:0:12

DSCP:协议未对 VRRP 报文做 QOS 规定,一般取 CS6。
TTL/Hop Limit:协议规定 VRRP 的 TTL/Hop Limit 必须取 255 以便将其控制在局域网范围。

在这里插入图片描述vrrp un-check ttl 用于取消 IPv4 网络下的 TTL 检查。
在这里插入图片描述vrrp6 un-check hop-limit 用于取消 IPv6 网络下的 hop-limit 检查。

Protocol Number:协议规定取 112。

点击此处回到目录

1.3.VRRP状态机切换

VRRP 主要定义了三种状态:Initialize、Backup 和 Master。在 RFC9568 中将之前三个版本中的 Master 状态重新定义为 Active,但基本内容相同。接下来进行详细介绍。

Initialize
在这里插入图片描述该图中需要解释的是:

  1. 优先级 255 不可设置。VRRP 路由器接口 IP 与 虚拟路由器 IP 相同者自动具有 255 优先级。
  2. Master/Active 路由器将周期性发送免费 ARP 以刷新表象。

在这里插入图片描述vrrp gratuitous-arp timeout 用于修改免费 arp 发送间隔。
Cisco 友商对应命令为:

vrrp
 interface vlan10
   vrrp 1 periodic-arp-na interval 30
 $
$
  1. IPv6 网络下发送的 unsolicited ND Neighbor Advertisement 报文,应当将 R-bit 和 O-bit 置位,S-bit 清空。

在这里插入图片描述unsolicited ND Neighbor Advertisement 报文示例,应以虚拟 MAC 填充 Target Link-layer address Option。
并且由于 IPv6 虚拟路由器有全球单播地址和链路本地地址,因此会有两个 unsolicited ND Neighbor Advertisement 报文示例。

  1. Master_Adver_Interval 为 RFC5798/RFC9568 新定义,主要用于 Backup 路由器计算 Skew_Time 和 Master_Down_Interval。

自动换行
Backup和Master之间的切换
在这里插入图片描述该图中需要解释的是:

  1. Master_Down_Timer 触发其实意味者在一定时间内未收到来自 Master/Active 路由器的 ADVERTISEMENT 通告报文。
  2. 优先级为 0 的 ADVERTISEMENT 通告报文通常意味着 Master/Active 路由器用于主动退出 VRRP 选举。此时可缩短 Backup 路由器向 Master/Active 状态转变的时间。
  3. Master 路由器收到优先级等于自己且 primary IP Address 大于自己接口地址的ADVERTISEMENT 将向 Backup 状态转变。但实际上这一行为很难发生,因为 Backup 路由器会一直保持 Backup 状态不会发送 ADVERTISEMENT 报文。
  4. 图中未提及 VRRP 的抢占模式。实际在抢占模式下只要收到 ADVERTISEMENT 报文,就重置 Master_Down_Timer 定时器。因此不会触发 Backup 向 Master 的状态转变。
  5. 对于 IPv6 网络下,接口启动时涉及 IPv6 地址的 DAD 等过程。因此还将叠加其他过程。

点击此处回到目录

2.VRRP的实际应用

2.1.VRRP的典型配置

在这里插入图片描述此处以上图为例简单介绍下 IPv6 网络下 VRRPv3 的使用。

AR:
#
 sysname AR1
#
ipv6
#
interface GigabitEthernet0/0/0
 ipv6 enable 
 ipv6 address 2001:DB8::1:1/64 
 ipv6 address FE80::1 link-local
 vrrp6 vrid 1 virtual-ip FE80::1:1 link-local
 vrrp6 vrid 1 virtual-ip 2001:DB8::1:FFFF
 vrrp6 vrid 1 priority 120
 vrrp6 vrid 1 preempt-mode timer delay 5
 vrrp6 vrid 1 timer advertise 200
 vrrp6 vrid 1 track interface GigabitEthernet0/0/1 reduced 50
#

此处需要说明的是:

  1. 由于 IPv6 网络下有 link-local 地址的要求。因此 VRRP 路由器都必须指定相同的全球单播地址和 link-local 地址。并且应当全球单播地址被包含于本地接口地址中。
  2. VRRP 可设置 track 联动端口。在上行链路中断后可及时改变优先级过渡到 Backup 状态来使得向外的路径及时收敛。除 track 联动端口外,还可 track bfd/nqa 甚至静态路由等方式来实现。
  3. VRRP 的抢占延时应当仅在 Master/Active 路由器上设置,以便防止回切影响网络收敛。
  4. 通常 VRRP Backup 路由器不响应发往虚拟路由器的数据包。但在某种情况下也可通过命令方式 (vrrp6 vrid backup-forward) 来使得 Backup 路由器转发数据流。
  5. 由于 VRRP 虚拟 IP 实际上为非真实 IP,因此 VRRPv3 在启动时不进行 DAD 的 IP 地址冲突检测。对于 IPv6 网络下直接发送针对全球单播地址和 link-local 地址的未经请求 ND 协议的 NA 报文 (R-bit 和 O-bit 置位,S-bit 不置位)。

VRRP相关查询命令在这里插入图片描述display vrrp6 interface 用于查看 VRRP 接口状态及其相关配置信息。
在这里插入图片描述display vrrp6 brief 用于查看 VRRPv3 相关状态。

点击此处回到目录

2.2.VRRP的其他应用

2.2.1.VRRP与路由协议

VRRP场景下的路由协议
直连路由:成为 Master/Active 路由器的 VRRP 路由器角色将生成一条虚地址对应的主机路由。

IGP路由:当 Master/Active 路由器虚地址所在的接口宣告进 OSPF/ISIS 进程时,会将虚地址对应的主机路由作为叶子路由引入 IGP 协议中。

在这里插入图片描述OSPF 的 datebase。
在这里插入图片描述ISIS 的 datebase。

BGP路由:BGP 仅在 network 或 重分布情况下才会引入该主机路由。

VRRP的admin-group管理组
VRRP 的 admin-group 管理组主要在设备上需要配置多个 VRRP 虚拟 IP 的场景下,用于减少网络中 VRRP 报文的发送且提高设备性能。

其基本原理在于,指定设备接口上的一个 VRRP 虚拟路由成为管理组通过 VRRP Advertisement 报文完成 VRRP 选举。其他 VRRP 虚拟路由通过 track VRRP admin-group,成为 VRRP 成员备份组。而 VRRP 成员备份组不发送 VRRP Advertisement 报文进行 VRRP 竞争选举而是直接继承 VRRP admin-group 的选举状态。

在此种状态下,所有 VRRP 路由器都必须在其 VRRP 虚拟路由上 track admin-group,以防止 VRRP 状态的不同步。

在这里插入图片描述vrrp vrid admin 用于指定某一 VRRP 虚拟路由成为 admin-group 管理组。
在这里插入图片描述vrrp vrid track admin-vrrp interface GE 1/0/0 vrid 用于 track 成为 VRRP 成员备份组。

2.2.2.单播VRRP

单播下的VRRP
对于某些在服务器上的运行 VRRP 协议会使用一种单播形式通告的 VRRP advertisements 报文。目前暂未发现有标准文档描述这种单播 VRRP,这里仅做相关说明。感兴趣者可查阅相关资料。

此处以keepalived 网站的 Keepalived Configuration Manual Page所提供资料进行介绍。

单播 VRRP 协议主要由 Keepalived 程序软件驱动。这是一款用 C 语言编写用于为 Linux 系统和基于 Linux 的基础设施提供简单的负载均衡和高可用性工具。负载均衡框架依赖于知名且广泛使用的 Linux Virtual Server (IPVS,Linux 虚拟服务器) 内核模块,提供第 4 层负载均衡。

服务器管理员通过 root 或其他用户 C 语言编写创建 /etc/keepalived/conf.d 文件。

服务器管理员通过 root 或其他用户在 /etc/keepalived/keepalived.conf 文件中创建基本的配置文件,并在 /run/keepalived 路径下创建命名空间。如果有多个 keepalived 进程使用相同的 namespace,则在 /run/keepalived 以 pid 文件进行区分。

keepalived.conf文件结构
keepalived.conf 文件主要有 4 种顶级结构:GLOBAL CONFIGURATION,BFD CONFIGURATION,VRRPD CONFIGURATION 和 LVS CONFIGURATION。每种顶级结构又包含了多种子模块。

在这里插入图片描述keepalived.conf 文件主要包含上图所示的结构。

1@GLOBAL CONFIGURATION
1@Global definitions:主要包含一些全局条件下定义的内容。例如 net_namespace全局守护程序,instance实例名(多实例间的区分),linkbeat_use_polling轮询故障检测接口,global_defs全局配置模块等。

global_defs全局配置模块包含协议运行的一些必要参数信息。这里仅介绍部分内容。

global_defs{
   #一些必要的程序名字。
   process_name NAME
   vrrp_process_name NAME
   checker_process_name NAME
   bfd_process_name NAME
   #字符串格式的文本以标识设备。
   router_id <STRING>
   #遵循 RFC5798 IANA 取 224.0.0.18。
   vrrp_mcast_group4 224.0.0.18。
   #遵循 RFC5798 IANA 取 ff02::12。
   vrrp_mcast_group6 ff02::12
   #静态地址的默认接口。
   default_interface p33p1.3
   
   #过渡到MASTER后发送第二组免费ARP的延迟时间,默认5秒。
   vrrp_garp_master_delay 10
   #VRRP版本,默认取2。
   vrrp_version 3
   
   #严格遵循协议规定的VRRP要求。
   vrrp_strict
   
   #指定上报的SNMP服务器信息。
   snmp_socket udp:1.2.3.4:705
   #使能SNMP处理KEEPALIVED MIB
   enable_snmp_vrrp
   #使能SNMP trap
   enable_traps
   }

1@Linkbeat interfaces:指定允许哪些接口应该通过 MII、Ethtool 或 ioctl status 使用轮询,而不是依赖 netlink 状态更新。

1@Static track groups:允许 VRRP 实例 track 包括静态地址、静态路由和规则的方式来过渡到错误状态。

2@BFD CONFIGURATION:基于 RFC5880 (双向转发检测) 原理实现的快速检测。当配置为在 2 个 keepalived 实例之间工作,但在 VRRP 实例的主/备份对之间使用未加权 track_bfds 意味着 VRRP 实例只有在两个 VRRP 实例都运行时才能启动,这在某种程度上违背了 VRRP 的目的。

3@VRRPD CONFIGURATION
3@VRRP script(s):定期执行的监控代码。
3@VRRP synchronization group(s):VRRP 同步组是 VRRP 协议的扩展。主要目标是定义一组 VRRP 实例以一起同步,以便一个实例的转换将反映给其他组成员。
3@VRRP instance(s):VRRP 实例是 VRRP 协议的关键功能。每个 VRRP 实例都与一个唯一的接口相关。

VRRP instance <STRING>{
   #初始VRRP状态。
   state MASTER
   #与VRRP实例绑定的接口。
   interface eth0
   #VRRP的虚拟MAC。
   use_vmac [<VMAC_INTERFACE_NAME>] [MAC_ADDRESS]。
   #遵循 RFC5798 IANA 取 ff02::12。
   use_vmac_addr
   #从基本接口而不是 VMAC 接口发送/接收 VRRP 消息。单播peer该值必须设置。
   vmac_xmit_base
   
   #多播或单播 vrrp 数据包的src_addr。默认 IP 是接口上的主 IP。
   mcast_src_ip
   unicast_src_ip <IPADDR>
   #VRRP版本,默认取2。
   vrrp_version 3
   
   #在单播模式下,检查VRRP 数据包的源地址是否为本地对等体之一。
   check_unicast_src
   #使用单播方式通告VRRP报文。
   unicast_peer {
       <IPADDR> [min_ttl {0..255}] [max_ttl {0..255}]
       ...
   }
   
   #Bacup向Master转变的监听间隔次数。默认3次。
   down_timer_adverts [1-100]
   #VRRP优先级。
   priority 100
   #VRRP通告间隔。
   advert_int 1
   #VRRP的虚拟IP。
   virtual_ipaddress{
       192.168.200.17/24 dev eth1
       192.168.200.18/24 dev eth2 label eth2:1
   }
   
   #过渡到Master时添加的路由。过渡到Backup时删除
   virtual_routes {
       src 192.168.100.1 to 192.168.109.0/24 via 192.168.200.254 dev eth1
       192.168.110.0/24 via 192.168.200.254 dev eth1
       192.168.111.0/24 dev eth2 no_track
   }
   #使能VRRPv3的Accept Mode
   accept
   #使能抢占模式
   preempt
   #是否开启全局下的VRRP严格检查。单播模式不应检查。
   strict_mode [on|off|true|false|yes|no]
   }

4@VRRPD CONFIGURATION:主要包含Virtual server group(s) 和Virtual server(s)子模块

点击此处回到目录

更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/888363.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python|接口自动化测试】使用requests发送http请求时添加headers

文章目录 1.前言2.HTTP请求头的作用3.在不添加headers时4.反爬虫是什么&#xff1f;5.在请求时添加headers 1.前言 本篇文章主要讲解如何使用requests请求时添加headers&#xff0c;为什么要加headers呢&#xff1f;是因为有些接口不添加headers时&#xff0c;请求会失败。 2…

【C++ Primer Plus】4

2 字符串 字符串是存储在内存的连续字节中的一系列字符&#xff1b;C处理字符串的方式有两种&#xff0c; c-风格字符串&#xff08;C-Style string&#xff09;string 类 2.1 c-风格字符串&#xff08;C-Style string&#xff09; 2.1.1 char数组存储字符串&#xff08;c-…

Python编码规范与常见问题纠正

Python编码规范与常见问题纠正 Python 是一种以简洁和易读性著称的编程语言&#xff0c;因此&#xff0c;遵循良好的编码规范不仅能使代码易于维护&#xff0c;还能提升代码的可读性和可扩展性。编写规范的 Python 代码也是开发者职业素养的一部分&#xff0c;本文将从 Python…

Linux聊天集群开发之环境准备

一.windows下远程操作Linux 第一步&#xff1a;在Linux终端下配置openssh&#xff0c;输入netstate -tanp,查看ssh服务是否启动&#xff0c;默认端口22.。 注&#xff1a;如果openssh服务&#xff0c;则需下载。输入命令ps -e|grep ssh, 查看如否配有&#xff0c; ssh-agent …

tensorflow快速入门--如何定义张量、定义网络结构、超参数设置、模型训练???

前言 由于最近学习的东西涉及到tensorflow的使用&#xff0c;故先简单的学习了一下tensorflow中如何定义张量、定义网络结构、超参数设置、模型训练的API调用过程&#xff1b;欢迎大家&#xff0c;收藏关注&#xff0c;本人将持续更新。 文章目录 1、基本操作1、张量基础操作创…

[Python] 编程入门:理解变量类型

文章目录 [toc] 整数常见操作 浮点数字符串字符串中混用引号问题字符串长度计算字符串拼接 布尔类型动态类型特性类型转换结语 收录专栏&#xff1a;[Python] 在编程中&#xff0c;变量是用于存储数据的容器&#xff0c;而不同的变量类型则用来存储不同种类的数据。Python 与 C…

爬虫——爬虫理论+request模块

一、爬虫理论 爬虫——请求网站并提取数据的自动化程序 网络爬虫&#xff08;又被称为网页蜘蛛&#xff0c;网络机器人&#xff09;就是模拟客户端发送网络请求&#xff0c;接收请求响应&#xff0c;一种按照一定的规则&#xff0c;自动的抓取互联网信息的程序。 原则上&…

SQL第12课——联结表

三点&#xff1a;什么是联结&#xff1f;为什么使用联结&#xff1f;如何编写使用联结的select语句 12.1 联结 SQL最强大的功能之一就是能在数据查询的执行中联结&#xff08;join)表。联结是利用SQL的select能执行的最重要的操作。 在使用联结前&#xff0c;需要了解关系表…

【数据结构 | PTA】栈

文章目录 7-1 汉诺塔的非递归实现7-2 出栈序列的合法性**7-3 简单计算器**7-4 盲盒包装流水线 7-1 汉诺塔的非递归实现 借助堆栈以非递归&#xff08;循环&#xff09;方式求解汉诺塔的问题&#xff08;n, a, b, c&#xff09;&#xff0c;即将N个盘子从起始柱&#xff08;标记…

Golang | Leetcode Golang题解之第447题回旋镖的数量

题目&#xff1a; 题解&#xff1a; func numberOfBoomerangs(points [][]int) (ans int) {for _, p : range points {cnt : map[int]int{}for _, q : range points {dis : (p[0]-q[0])*(p[0]-q[0]) (p[1]-q[1])*(p[1]-q[1])cnt[dis]}for _, m : range cnt {ans m * (m - 1)…

多功能快捷回复软件

各位亲爱的客服宝宝们&#xff0c;每天面对大量的客户咨询&#xff0c;您是否还在手动一个一个地打字回复呢&#xff1f;别担心&#xff0c;我们为您带来了一款多功能快捷回复软件——客服宝。有了它&#xff0c;您的工作将变得无比轻松&#xff01; 客服宝是一款集成了内容存储…

window下‘jps‘ 不是内部或外部命令,也不是可运行的程序或批处理文件,特别是使用idea开发工具的环境

1、在系统环境变量里面查看是否有JAVA_HOME环境变量&#xff0c;如果是用idea来管理环境变量的&#xff0c;需要如图设置指向jbr&#xff0c;如果是单独安装的jdk环境指向自己的安装目录即可 2、设置系统环境Path&#xff0c;需要把jre和bin添加进去

手写mybatis之把反射用到出神入化

前言 但在实操上&#xff0c;很多码农根本没法阅读框架源码。首先一个非常大的问题是&#xff0c;面对如此庞大的框架源码&#xff0c;不知道从哪下手。与平常的业务需求开发相比&#xff0c;框架源码中运用了大量的设计原则和设计模式对系统功能进行解耦和实现&#xff0c;也使…

深度学习----------------------序列到序列学习(seq2seq)

目录 机器翻译Seq2seq编码器-解码器细节训练衡量生成序列的好坏的BLEU总结序列到序列学习实现循环神经网络编码器解码器通过零值化屏蔽不相关的项该部分总代码 通过扩展softmax交叉熵损失函数来遮蔽不相关的预测训练预测BLEU的代码实现该部分总代码 机器翻译 给定一个源语言的…

IDEA几大常用AI插件

文章目录 前言列表GPT中文版TalkXBito AIIDEA自带的AI 前言 最近AI、GPT特别火&#xff0c;IDEA里面又有一堆插件支持GPT&#xff0c;所以做个专题比较一下各个GPT插件 列表 先看idea的plugins里支持哪些&#xff0c;搜索“GPT”之后得到的&#xff0c;我用下来感觉第一第二和…

使用微服务Spring Cloud集成Kafka实现异步通信(消费者)

1、本文架构 本文目标是使用微服务Spring Cloud集成Kafka实现异步通信。其中Kafka Server部署在Ubuntu虚拟机上&#xff0c;微服务部署在Windows 11系统上&#xff0c;Kafka Producer微服务和Kafka Consumer微服务分别注册到Eureka注册中心。Kafka Producer和Kafka Consumer之…

无法编辑PDF文件?试试这3个解决方法!

PDF文件格式广泛应用于工作中&#xff0c;但有时候我们可能遇到无法编辑PDF文件的情况。这可能导致工作效率降低&#xff0c;特别是在需要修改文件内容时显得尤为棘手。遇到PDF不能编辑时&#xff0c;可以看看是否以下3个原因导致的。 原因一&#xff1a;PDF文件设置了编辑权限…

dockertop提示Failed to fetch extensions

解决办法&#xff1a;重装dockertop 第一步&#xff1a;卸载当前的dockertop 如果卸载过程中存在AlibabaProtect的相关软件关不掉&#xff0c;那么参考这篇文章&#xff1a;卸载AlibabaProtect 第二步&#xff1a;删除C:\Program Files路径下的Docker文件夹 第三步&#xff1…

YOLOv5复现(论文复现)

YOLOv5复现&#xff08;论文复现&#xff09; 本文所涉及所有资源均在传知代码平台可获取 文章目录 YOLOv5复现&#xff08;论文复现&#xff09;概述模型结构正负样本匹配策略损失计算数据增强使用方式训练测试验证Demo 概述 YOLOv5是由Ultralytics公司于2020年6月开源的目标检…

【架构】prometheus+grafana系统监控

文章目录 一、Prometheus简介二、Grafana简介三、PrometheusGrafana系统监控的实现四、优势与应用场景 参考 PrometheusGrafana系统监控是一个强大的组合&#xff0c;用于实时监控和分析系统的性能与状态。以下是对这一组合在系统监控中的详细解析&#xff1a; 一、Prometheus…