通常情况下,在终端设备进入网络前,都会有一个 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,网络依然正常。

# 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:

# 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 看到如下的路由信息:

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.

# 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:

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:

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 :

# 配置 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,这时需要打开抢占功能:

SW1(config)#interface Vlan 10
SW1(config-if)#standby 1 preempt

打开认证功能:

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 上行链路出现问题,立即进行切换:

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 配置

# R1
inter Eth0/0
glbp 1 ip 192.168.1.254
show glbp

GLBP 的问题

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

总结

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

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

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

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

FHRP - 网关冗余协议的更多相关文章

  1. 理解 OpenStack 高可用(HA)(2):Neutron L3 Agent HA 之 虚拟路由冗余协议(VRRP)

    本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...

  2. 架构-虚拟路由器冗余协议【原理篇】VRRP详解

    转自:http://zhaoyuqiang.blog.51cto.com/6328846/1166840/ 为什么要使用VRRP技术 我们知道,为了实现不同子网之间的设备通信,需要配置路由.目前常用的 ...

  3. 虚拟路由冗余协议VRRP

    一.VRRP简介 虚拟路由冗余协议VRRP(Virtual Router Redundancy Protocol)通过把几台路由设备联合组成一台虚拟的路由设备,将虚拟路由设备的IP地址作为用户的默认网 ...

  4. (转)虚拟路由器冗余协议【原理篇】VRRP详解

    原文:http://blog.51cto.com/zhaoyuqiang/1166840 为什么要使用VRRP技术 我们知道,为了实现不同子网之间的设备通信,需要配置路由.目前常用的指定路由方法有两种 ...

  5. VRRP(Virtual Router Redundancy Protocol) 虚拟路由器冗余协议简介

    因工作中使用Keepalived配置Nginx代理和MySQL代理的高可用,而Keepalived是VRRP协议在linux上的软件实现.因此了解了下VRRP的基础. 1. VRRP技术的引入 随着I ...

  6. VRRP虚拟路由器冗余协议

    VRRP(VirtualRouterRedundancyProtocol,虚拟路由冗余协议)是一种容错协议.通常,一个网络内的所有主机都设置一条缺省路由,这样,主机发出的目的地址不在本网段的报文将被通 ...

  7. VRRP主备备份配置示例—实现网关冗余备份

    本示例的基本拓扑结构如图所示. HostA通过Switch 双线连接到RouterA 和RouterB .用户希望实现:正常情况下, 主机以RouterA 为默认网关接入Intemet; 而当Rout ...

  8. [na]vrrp两用(网关冗余+服务器热备)

    VRRP的两种用途 早上想了想vrrp的使用,1,网关冗余 2,服务器热备 思想稍微有点不一样.主要在于监控口 服务器的话有心跳线,用户同步一些配置和迁移一些服务.达到热备的目的.:牵涉到四个优先级: ...

  9. 华为路由器vrrp(虚拟路由器冗余协议)基本配置命令

    vrrp(虚拟路由器冗余协议)基本配置 int g0/0/0 vrrp vrid 1 virtual-ip 172.16.1.254 创建VRRP备份组,备份组号为1,配置虚拟IP为172.16.1. ...

随机推荐

  1. 转载:FreeRTOS 配置文件详细功能解释

    原文链接:http://blog.sina.com.cn/s/blog_98ee3a930102wf8c.html 本章节为大家讲解FreeRTOS的配置文件FreeRTOSConfig.h中每个选项 ...

  2. Python对excel的基本操作

    Python对excel的基本操作 目录 1. 前言 2. 实验环境 3. 基本操作 3.1 安装openpyxl第三方库 3.2 新建工作簿 3.2.1 新创建工作簿 3.2.2 缺省工作表 3.2 ...

  3. auto deploy docs website

    auto deploy docs website { "name": "docs", "version": "0.0.1" ...

  4. Windows 10 自带 free 屏幕截图/录像软件 Game Bar! 不仅仅是game-游戏呦! 高清晰,高保真,perfect!不仅仅是游戏呦!

    good news! good news! good news! 重要的事情说三遍! Windows 10 自带  屏幕截图/录像软件 Game Bar! 以后再也不用第三方的 盗版软件了! 对于Wi ...

  5. vue 二级子路由跳转不了 bug

    vue 二级子路由跳转不了 bug @click.prevent 阻止原生事件的冒泡 <li class="tools-hover-box-list-item" v-for= ...

  6. Python Coding Interview

    Python Coding Interview Python Advanced Use enumerate() to iterate over both indices and values Debu ...

  7. AIoT & IoT

    AIoT & IoT Artificial Intelligence of Things Internet of Things AIoT === AI + IoT 人工智能物联网 === 人工 ...

  8. git cli all in one

    git cli all in one https://www.atlassian.com/git/tutorials/learn-git-with-bitbucket-cloud git create ...

  9. Linux & terminal color & command line color

    Linux & terminal color & command line color how to change Linux terminal color https://askub ...

  10. Taro UI

    Taro UI 一套基于 Taro 框架开发的多端 UI 组件库 https://github.com/NervJS/taro-ui-demo https://taro-ui.aotu.io/#/do ...