前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解决网关单点故障三剑客:VRRP、HSRP、GLBP

解决网关单点故障三剑客:VRRP、HSRP、GLBP

作者头像
网络技术联盟站
发布2023-03-01 20:25:22
6540
发布2023-03-01 20:25:22
举报
来源:Ez啊 链接:https://www.cnblogs.com/michael9/p/14537979.html#glbp-%E7%9A%84%E9%97%AE%E9%A2%98

通常情况下,在终端设备进入网络前,都会有一个 Router 充当网络,作为第一跳的网络地址。但假设路由器发生故障,此时终端设备就无法再接入互联网。

为了防止这样的问题,一般会再加入一台路由器充当备份。但此时就出现一个问题,网关地址配这两个路由器中的那个?

于是 FHRP 协议出现,可以将多个路由器虚拟成一个路由器提供服务,当提供服务的路由器发生故障时,会自动切换到另一台上。

FHRP 是这类路由协议的统称,常见路由协议如下:

  • HSRP 协议,Cisco 私有协议。
  • VRRP 协议,公有协议。

HSRP

HRSP 热备份冗余协议,是 CISCO 私有协议,用于解决网关的备份问题。

能够在不改变组网的情况下,将多台路由器虚拟成一个虚拟路由器。

HRSP 角色

HRSP 组:由多个 HRSP 路由器组成,属于同一个 HSRP 组,组内的路由器会交换信息,每个组由唯一 ID 指定。经过选举会推选出 Active 路由器和 Standby 路由器。

HSRP 虚拟路由:对每个 HSRP 组,抽象出的虚拟路由器。作为我拿过来。具有虚拟 IP 和 MAC。虚拟出来的 IP 作为网关地址。

Active 路由器:HSRP 中实际转发数据包的路由器,每个 HRSP 组中,仅有一个 active 路由器,并绑定虚拟 IP,用于响应请求。

Stand by 路由器:在 HSRP 组中,处于监听状态的路由器,当 Active 路由器出现问题时,接替工作。

HSRP 选举过程

  1. 处于同一 HRSP 组的路由器会向组播地址 224.0.0.2 发送 Hello 报文,使用 UDP 1985 端口。
  2. 然后⽐较 Hello 报⽂中的优先级,拥有最⾼优先级(默认为100,范围为1~255)的设备将成为活动路由器。
  3. 最后优先级⼀样则⽐较接⼝ IP 地址,选⼤的。

HSRP状态

  • Initial:初始化状态,当接⼝UP的时候或某些配置变更时
  • Listen:路由器已获知虚拟IP,开始侦听其他同组HSRP路由器的Hello消息
  • Speak:发送周期的Hello同时参与Active/Standby路由器的选举
  • Standby:成为Standby路由器,同时周期性的发送Hello,持续侦听Active路由器的Hello消息以便在其失效后接替其位置
  • Active:成为Active路由器,响应PC对于虚拟IP的ARP请求,同时周期性发送Hello消息以宣告⾃⼰的存活状态

HSRP 版本

HSRPV1

HSRPV2

IPv4

HSRPv4/v6

Group numbers 0 - 255

Group numbers 0 -4095

Virtual MAC: 0000:0C07:ACxx (xx 来源 HSRP 组)

Virtual MAC: 0000:0C9F:Fxxx (xxx 来源 HSRP 组)

广播地址:224.0.0.2

广播地址:224.0.0.102

HSRP 特性

  • 在 Active 路由器中负责分发虚拟 IP 和 MAC
  • Active 路由器会每三秒给 Standby 路由器发送 Hello 报文,如果 10s 未发送,Standby 会成为 Master 宣告 Active 路由器死亡。
  • 支持开启抢占功能,默认未开启,开启后,可配置立即抢占和延时抢占。
  • 支持追踪功能,用于检测当某个接口或路由条目丢失时,降低其 HSRP 优先级。
  • 每个接口最多支持 255 个 HSRP 组,可在一定意义上实现负载。
  • HSRP 支持明文和 MD5 认证。

HSRP 实验1

将 R1 和 R2 配置 HRSP 协议,down 掉 R1,网络依然正常。

代码语言:javascript
复制
# R1
inter Eth0/0
standby 1 ip 192.168.1.254
standby 1 priority 120
show standby

# R2
inter Eth0/0
standby 1 192.168.1.254
standby 1 priority 100

HSRP 实验2

准备工作 1 - 4:

代码语言:javascript
复制
# PC 5: IP 网关
VPC5> ip 10.1.1.1/24 10.1.1.251

# PC 6:
VPC6> ip 20.1.1.1/24 20.1.1.252

# SW3:
vlan 10,20
!
hostname SW3
!
interface Ethernet0/0
 switchport trunk encapsulation dot1q
 switchport mode trunk
!
interface Ethernet0/1
 switchport trunk encapsulation dot1q
 switchport mode trunk
!
interface Ethernet0/2
 switchport access vlan 10
 switchport mode access
!
interface Ethernet0/3
 switchport access vlan 20
 switchport mode access
!

# SW1
vlan 10,20
ip routing
!
hostname SW1
!
interface Ethernet0/0
 switchport trunk encapsulation dot1q
 switchport mode trunk
!
interface Ethernet0/1
 switchport trunk encapsulation dot1q
 switchport mode trunk
!
interface Ethernet0/2
 no switchport
 ip address 100.1.1.1 255.255.255.0
!
interface Vlan10
 ip address 10.1.1.251 255.255.255.0
!
interface Vlan20
 ip address 20.1.1.251 255.255.255.0
!
router eigrp 1
 network 100.1.1.0 0.0.0.255
 network 10.1.1.251 0.0.0.255
 network 20.1.1.251 0.0.0.255
!

# SW2
vlan 10,20
ip routing
!
hostname SW2
!
interface Ethernet0/0
 switchport trunk encapsulation dot1q
 switchport mode trunk
!
interface Ethernet0/1
 switchport trunk encapsulation dot1q
 switchport mode trunk
!
interface Ethernet0/2
 no switchport
 ip address 200.1.1.1 255.255.255.0
!
interface Vlan10
 ip address 10.1.1.252 255.255.255.0
!
interface Vlan20
 ip address 20.1.1.252 255.255.255.0
!
!
router eigrp 1 
 network 200.1.1.0  0.0.0.255
 network 10.1.1.252 0.0.0.255
 network 20.1.1.252 0.0.0.255
!

# Router
!
hostname R1
!
interface Loopback0
 ip address 1.1.1.1 255.255.255.0
!
interface Ethernet0/0
 ip address 100.1.1.2 255.255.255.0
 duplex auto
!
interface Ethernet0/1
 ip address 200.1.1.2 255.255.255.0
 duplex auto
!
router eigrp 1
 network 1.1.1.1 0.0.0.0
 network 100.1.1.0 0.0.0.255
 network 200.1.1.0
!

配置成功后,PC 5 可以 ping 通 PC6.

并且可以在 SW1 或 2 看到如下的路由信息:

代码语言:javascript
复制
SW2#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override, p - overrides from PfR

Gateway of last resort is not set

      1.0.0.0/24 is subnetted, 1 subnets
D        1.1.1.0 [90/409600] via 200.1.1.2, 00:31:52, Ethernet0/2
      10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        10.1.1.0/24 is directly connected, Vlan10
L        10.1.1.252/32 is directly connected, Vlan10
      20.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        20.1.1.0/24 is directly connected, Vlan20
L        20.1.1.252/32 is directly connected, Vlan20
      100.0.0.0/24 is subnetted, 1 subnets
D        100.1.1.0 [90/307200] via 200.1.1.2, 00:31:52, Ethernet0/2
      200.1.1.0/24 is variably subnetted, 2 subnets, 2 masks
C        200.1.1.0/24 is directly connected, Ethernet0/2
L        200.1.1.1/32 is directly connected, Ethernet0/2

配置 SW1 为 VLAN 10 的根桥 ID. 配置 SW2 为 VLAN 20 的根桥 ID.

代码语言:javascript
复制
# SW1
SW1(config)#spanning-tree vlan 10 priority 0
SW1(config)#spanning-tree vlan 20 priority 4096

# SW2
SW2(config)#spanning-tree vlan 10 priority 4096
SW2(config)#spanning-tree vlan 20 priority 0

现在用 PC5 Ping 1.1.1.1:

代码语言:javascript
复制
trace to 1.1.1.1, 8 hops max, press Ctrl+C to stop
 1   10.1.1.251   0.893 ms  0.852 ms  2.083 ms
 2   *100.1.1.2   0.654 ms (ICMP type:3, code:3, Destination port unreachable)  *

用 PC6 Ping 1.1.1.1:

代码语言:javascript
复制
VPC6> trace 1.1.1.1
trace to 1.1.1.1, 8 hops max, press Ctrl+C to stop
 1   20.1.1.252   0.402 ms  0.327 ms  0.378 ms
 2   *200.1.1.2   0.754 ms (ICMP type:3, code:3, Destination port unreachable)  *

可以发现 VLAN 10 走 SW1 ,VLAN 20 走 SW2.

配置 HSRP :

代码语言:javascript
复制
# 配置 Vlan 10 HSRP:
SW1(config)#int vlan 10
SW1(config)#standby 1 ip 10.1.1.254
SW1(config)#standby 1 priority 120

SW2(config)#int vlan 10
SW2(config)#standby 1 ip 10.1.1.254
SW2(config)#standby 1 priority 100

# 配置 Vlan 20 HSRP:
SW1(config)#int vlan 20
SW1(config)#standby 2 ip 20.1.1.254
SW1(config)#standby 2 priority 100

SW2(config)#int vlan 20
SW2(config)#standby 2 ip 20.1.1.254
SW2(config)#standby 2 priority 120

此时将 PC5 和 PC 6 的网关改为:10.1.1.254 和 20.1.1.254. 然后 shutdown SW1 vlan 10,可以发现依然可以访问 1.1.1.1 只不过现在走 SW2. 这条备份链路。

接着将 Vlan1 10 接口打开, 但发现无法将 VLAN 10 的 Active 恢复 SW1,这时需要打开抢占功能:

代码语言:javascript
复制
SW1(config)#interface Vlan 10
SW1(config-if)#standby 1 preempt

打开认证功能:

代码语言:javascript
复制
SW2(config)#int vlan 10
SW2(config-if)#standby 1 authentication md5 key-string cisco

SW1(config)#int vlan 10
SW1(config-if)#standby 1 authentication md5 key-string cisco

打开链路跟踪功能, 当 SW1 或 SW2 上行链路出现问题,立即进行切换:

代码语言:javascript
复制
SW1(config)# track 1 inerface e0/2 line-protocol
SW1(config)#int vlan 10
# 调用跟踪链路 track1
SW1(config-if)#standby 2 track 1 decrement 30
# 抢占等待时间 10
SW2(config-if)#standby 2 preempt delay minimum 10

SW2(config)# track 1 inerface e0/2 line-protocol
SW2(config)#int vlan 20
SW2(config-if)#standby 2 track 1 decrement 30
SW2(config-if)#standby 2 preempt delay minimum 10

VRRP

VRRP 本身是公有协议,和 HSRP 非常类似,用于解决网关备份的问题。

VRRP 角色

VRRP 组:由多个 VRRP 路由器组成,属于同一个 VRRP 组,组内的路由器会交换信息,每个组由唯一 ID 指定。经过选举会推选出 Active 路由器和 Standby 路由器。

VRRP 虚拟路由:对每个 HSRP 组,抽象出的虚拟路由器。作为我拿过来。具有虚拟 IP 和 MAC。虚拟出来的 IP 作为网关地址。

Master 路由器:HSRP 中实际转发数据包的路由器,每个 HRSP 组中,仅有一个 Master 路由器,并绑定虚拟 IP,用于响应请求。

backup 路由器:在 HSRP 组中,处于监听状态的路由器,当 Master 路由器出现问题时,接替工作。

VRRP 特性

  • 在 VRRP 组中的路由器,通过 Advertise 报文交互。
    • 报文间隔时间为 1 s,失效时间为 3s + (256 - 优先级) / 256
  • VRRP 使用 224.0.0.18 为组播地址,协议号为 112
  • 每个接口最多支持 256 个组,可以实现像 HRSP 一样的负载分摊。
  • VRRP 和 HSRP 不同的是,VRRP 虚拟出的来 IP 可以和同一网络下的实际物理 IP 相同。称为 IP 拥有者,优先级为最大 255.
    • 优先级范围:0 - 255,可配置范围为 1 - 254, 255 是 IP 拥有者,0 是在关闭 VRRP 进程触发
  • 虚拟 MAC 地址为:000.5e00.01xx (xx 为 VRRP 组ID)
  • VRRP 默认开启抢占功能

VRRP 状态

  • Init 状态:初始化状态
    • 如果虚拟 IP 和物理 IP 一样,表示为 IP 拥有者,立即变成 Master 状态。
    • 其他情况,都会转化为 Backup 状态。
  • Backup 状态:备份状态
    • 等待时滞时间后,先发送 Hello 报文的成为 master.
  • Master 状态:实际转发状态

GLBP

GLBP 思科私有协议,和 VRRP 不同,组内可有多台 Active,能实现真正意义的上的负载分担。能提供一个虚拟 IP 和多个 MAC 地址并分配给 PC。

当 PC 在解析网关时,由于一个 IP 对应多个 MAC 地址,可将流量分配到不同的 MAC 地址所对应的设备上,实现负载分摊。

GLBP 角色

  • AVG(Active Virtual Gateway):在每个组中,分配 MAC 地址给成员
    • Active AVG 默认不能自动强占,只能手动强占。
  • AVF(Active Virtual Forwarder):组内实际转发的成员
    • 每组最多 4 个,每个 AVF 都有一个虚拟的 MAC 地址(0007-b400-XXYY,XX 表示组号,YY代表转发者编号)
    • 如果组内成员超过 4 个,最先成为 AVF 成为 Primary 成员,其余为 Secondary 成员(不参与转发,处于等待状态)。
    • 如果 Primary AVF 中的权重值小于,Secondary AVF 成员中的权重值,会被替换。
  • BVG(Backup Virtual Gateway):充当分配 MAC 地址的备份,防止单点故障

选举过程

通过 Hello 报文交互,数值越大,优先级越高。如果优先级一样,选 IP 地址大的。

GLBP 特性

负载分摊模式:

  • 加权负载均衡:取决于 AVF 网关的权重值
  • 主机负载均衡:确保主机一直使用同一个虚拟 MAC 地址,根据主机实现负载均衡
  • 循环负载均衡:默认模式,按照顺序分配

GLBP 配置

代码语言:javascript
复制
# R1
inter Eth0/0
glbp 1 ip 192.168.1.254
show glbp

GLBP 的问题

需要注意的是 GLBP 不能用在二层链路上,因为二层链路上存在生成树协议,存在阻塞端口,进一步导致次优路径。

总结

本篇共提到了三个协议,用于解决网关单点故障的问题。

从目前使用的情况看,VRRP 由于是公有协议使用的更多些。HSRP 和 GLBP 由于是思科的私有协议,仅能跑在思科设备上。

从配置的角度看,VRRP 和 HSRP 非常类似,其中概念也较为相似。仅在命名和选举的计算方式稍有不同。

从流量的负载角度看,GLBP 更加优秀一些,相比 VRRP 和 HSRP,实现的是真正意义上的负载分摊。但由于其存在多个 MAC 的原因,不能适用于充当二层网关的设备。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络技术联盟站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HSRP
    • HRSP 角色
      • HSRP 选举过程
        • HSRP状态
          • HSRP 版本
            • HSRP 特性
              • HSRP 实验1
                • HSRP 实验2
                • VRRP
                  • VRRP 角色
                    • VRRP 特性
                      • VRRP 状态
                      • GLBP
                        • GLBP 角色
                          • 选举过程
                            • GLBP 特性
                              • GLBP 配置
                                • GLBP 的问题
                                • 总结
                                相关产品与服务
                                负载均衡
                                负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档