基于 GARP 的 HA 架构(已放弃)

NES HA 架构是基于 Keepalived 的心跳链路检查 + GARP 的数据链路切换实现的主备架构。

Keepalived 的心跳链路检查

因为主备架构无法 100% 避免脑裂情况的出现,只能尽量的避免:

  1. Keepalived 进程进行绑核和划分固定内存,避免主机卡顿导致的脑裂。

  2. Keepalived 使用 bond 冗余的心跳链路。

GARP 的数据链路切换

基于 GARP 实现的数据链路切换:GARP 是一种特殊的 ARP 请求,报文中的 dstIP 和 srcIP 地址相同,且 srcMAC 为自身网卡 MAC 地址,dstMAC 为全 0/f。使用 GARP 可以让收到这个通告的交换机(或主机)的 ARP 缓存表被强制刷新(本机的 MAC 地址和直连交换机端口的映射关系),以此来实现交换机数据链路对的切换。当 NES 主机升级为 Master 时:

  • Upstream 发 EPC的 MAC 和 IP 地址构造的 GARP 报文,表示去 EPC 的数据报文走直连 NES Upstream 的端口(去 EPC 的报文从 Upstream 进入 NES 进行转发)。

  • Downstream 和 LBP 发 eNB 的 MAC 和 IP 地址构造的 GARP 报文,表示去 eNB 的数据报文走直连 NES Downstream 或 LBP 的端口(去 eNB 的报文从 Downstream 或 LBP 进入 NES 进行转发)。

注:Upstream、Downstream、LBP 本身没有 MAC 和 IP 地址,为了实现 “串联无感知” 的效果,Upstream 使用的是 eNB 的 MAC/IP,Downstream 使用的是 EPC 的 MAC/IP,LBP 使用的是 MEC GW 的 MAC/IP。

示例

eNB: 192.168.1.1/90:E2:BA:6F:79:DD
EPC: 192.168.1.2/E4:1D:2D:17:79:70
MEC GW: 10.0.0.200/E4:1D:2D:17:7A:10

VLAN 100: eNB、NES Upstream
VLAN 200: EPC、NES Downstream
VLAN 300: MEC GW、NES LBP

当 NES1 升为 Master 时:

  • Upstream 发出:

srcIP: 192.168.1.2 
dstIP: 192.168.1.2 
srcMAC: E4:1D:2D:17:79:70
dstMAC: FF:FF:FF:FF:FF:FF
  • Downstream 发出:

srcIP: 192.168.1.1 
dstIP: 192.168.1.1 
srcMAC: 90:E2:BA:6F:79:DD
dstMAC: FF:FF:FF:FF:FF:FF
  • LBP 发出:

srcIP: 192.168.1.1 
dstIP: 192.168.1.1 
srcMAC: 90:E2:BA:6F:79:DD
dstMAC: FF:FF:FF:FF:FF:FF

交换机 MEC/Port 映射表关系:

NES1 -> NES2 切换时:Port2 -> Port5(切了 3 个端口,分别对应 Up、Down、LBP)

NES1
100 79:dd Port1 Eth1/1/2
200 79:dd Port2 Eth1/1/3
300 79:dd Port2 Eth1/1/3

200 79:70 Port3 Eth1/2/1
100 79:70 Port2 Eth1/1/3

300 7A:10 Port4 Eth1/2/2


NES2
100     90:E2:BA:6F:79:DD   Port1      Eth1/1/2
200     90:E2:BA:6F:79:DD   Port5      Eth1/2/4
300     90:E2:BA:6F:79:DD   Port5      Eth1/2/4

200     E4:1D:2D:17:79:70   Port3      Eth1/2/1
100     E4:1D:2D:17:79:70   Port5      Eth1/2/4

300     E4:1D:2D:17:7A:10   Port4      Eth1/2/2