高可用性网络诞生背景
随着国家与社会近几年对信息化建设的号召与大力支持以及大数据与云计算等信息化技术的高速发展,互联网上各种类型的流量呈现井喷式的上涨,高性能网络的建设与发展在此背景趋势下变得愈发重要。对于任何一家企业而言,拥有高稳定性、高吞吐量、高可用性的网络系统,能够更好地满足企业业务对网络的要求以及企业自身的发展需要。
层次性架构企业网常见的高可用性网络实现方式
对于具有层次性架构的企业网环境而言,增加网络高可用性最有效的方式通常是将数据转发设备采购多台、通信链路连接多根等方式来设计冗余,再通过合理的策略设计,实现通信网络的高可用性。并且能够实现整体网络通信数据分担在多根通信链路、多台设备节点之上。
数字科技峰会
对此,本文章将讲述在具备多设备的冗余环境下,如何通过策略设计,搭建具备高可用性的企业网络环境,实现基于冗余备份的负载均衡策略。以两台设备为例,整体设计思路如下图所示。
图片
将终端设备的网关节点设计冗余,但终端设备的网关只能指向一个节点,而为了实现高可用性,我们希望的是两台网关设备都能够作为下游终端设备的网关,转发其网络间的通信数据。因此,我们将冗余网关设备通过VRRP(Virtual Redundancy Router Protocol)聚合成一台逻辑的虚拟网关。针对下游的两个vlan,网关A作为vlan10的活动设备Master,作为vlan20的备份设备Backup。而网关B则正好与之相反。通过这样的设计,两台网关均正常运行的情况下,vlan10的通信流量将由网关A响应处理;vlan20的流量将由网关B响应处理。而当某一台网关设备不可用时,其所负责的vlan通信数据的转发任务将切换到另一台设备上,实现网关的高可用性。对于下游所有vlan整体而言,业务流量分担在了两台网关之上,并且能够避免单点故障,单设备或单链路故障不影响业务的正常运行。
实验演示拓扑
本文使用华为ensp搭建典型的层次性架构企业网络环境,在具备冗余的条件下,通过策略设计,搭建出具备高可用性的企业网络。本文仅讲解高可用性设计内容,设备基础配置不进行赘述和展示,整体拓扑如下图所示。
图片
在上述拓扑中,SW3-6为二层接入交换机、SW1与SW2为汇聚层网关交换机、AR1作为汇聚上行方向的核心路由器且作为DHCP Server、FW1为边界出口,右侧是模拟的互联网环境。
实验配置详解
汇聚层网关交换机SW1与SW2 VRRP配置
SW1:
#
interface Vlanif10
ip address 172.16.10.1 255.255.255.0
vrrp vrid 10 virtual-ip 172.16.10.254 #配置vrrp虚拟网关的虚拟ip地址
vrrp vrid 10 priority 110 #手工设置vrrp优先级,操控主备身份选举
vrrp vrid 10 preempt-mode timer delay 5 #主设备上开启抢占延时
vrrp vrid 10 track bfd-session 1 reduced 15 #使用bfd监测上行链路
dhcp select relay
dhcp relay server-ip 10.1.11.2
#
interface Vlanif11
ip address 10.1.11.1 255.255.255.252
#
interface Vlanif20
ip address 172.16.20.1 255.255.255.0
vrrp vrid 20 virtual-ip 172.16.20.254
vrrp vrid 20 priority 110
vrrp vrid 20 preempt-mode timer delay 5
vrrp vrid 20 track bfd-session 1 reduced 15
dhcp select relay
dhcp relay server-ip 10.1.11.2
#
interface Vlanif30
ip address 172.16.30.1 255.255.255.0
vrrp vrid 30 virtual-ip 172.16.30.254 #备设备上只需要启用vrrp即可
#
interface Vlanif40
ip address 172.16.40.1 255.255.255.0
vrrp vrid 40 virtual-ip 172.16.40.254
#
SW2:
#
interface Vlanif10
ip address 172.16.10.2 255.255.255.0
vrrp vrid 10 virtual-ip 172.16.10.254
#
interface Vlanif20
ip address 172.16.20.2 255.255.255.0
vrrp vrid 20 virtual-ip 172.16.20.254
#
interface Vlanif30
ip address 172.16.30.2 255.255.255.0
vrrp vrid 30 virtual-ip 172.16.30.254
vrrp vrid 30 priority 110
vrrp vrid 30 preempt-mode timer delay 5
vrrp vrid 30 track bfd-session 2 reduced 15
dhcp select relay
dhcp relay server-ip 10.1.12.2
#
interface Vlanif40
ip address 172.16.40.2 255.255.255.0
vrrp vrid 40 virtual-ip 172.16.40.254
vrrp vrid 40 priority 110
vrrp vrid 40 preempt-mode timer delay 5
vrrp vrid 40 track bfd-session 2 reduced 15
dhcp select relay
dhcp relay server-ip 10.1.12.2
#
SW1与SW2分别作为vlan10、vlan20与vlan30、vlan40的主网关,且彼此互为备份。VRRP是基于三层接口运行的,而不是整个设备。VRRP网关组成员之间会交互组播发送的VRRP Announcement报文来检查对端活跃状态,以及比较优先级。如果开启了抢占,当接收到对端发送过来的Announcement中携带的优先级参数字段值如若比本地小,则抢占Master活动身份;如果未开启抢占,则只有当对端宕机或离线时,本端才会切换活动身份。
图片
由于VRRP主备身份切换正常情况下是根据本端设备、接口等的状态变化来决定的。但在实际通信过程中,我们期望的是即使是主设备上行链路发生故障,VRRP也要因为端到端通信路径不完整而实现主备的切换。所以需要使用上行链路监测来完成这个需求。上行链路监测常用的有接口监测、NQA监测、BFD监测。如果是防火墙设备做双机热备,还能选择IP-link监测。本文将使用BFD监测,实现故障发生时,主备身份毫秒级的切换,尽可能地减小主备切换造成的丢包影响。
汇聚层网关交换机上行监测BFD配置
SW1:
#
bfd 1 bind peer-ip 10.1.11.2 interface Vlanif11 source-ip 10.1.11.1
discriminator local 1 #本地标识符
discriminator remote 11 #对端标识符
commit #激活bfd配置
#
SW2:
#
bfd 2 bind peer-ip 10.1.12.2 interface Vlanif12 source-ip 10.1.12.1
discriminator local 2
discriminator remote 12
commit
#
BFD监测原理与路由协议交互hello包维持邻居关系类似,通过毫秒级地周期性发送BFD的探针,若发送的探针三个周期时间内均未收到应答,BFD将判定与对端邻居之间的直连链路失效不可用。而用在上行链路监测上,则是在VRRP上联动BFD,一旦BFD监测状态为DOWN,触发降低VRRP优先级的配置,当降低后的优先级小于原本的Backup后,将实现主备身份的切换,从而实现端到端通信路径的切换。本文中采用的是BFD的双向检测,上行设备AR1也将监测下行两台网关交换机。
AR1:
#
bfd 11 bind peer-ip 10.1.11.1 interface GigabitEthernet0/0/1 source-ip 10.1.11.2
discriminator local 11
discriminator remote 1
commit
#
bfd 12 bind peer-ip 10.1.12.1 interface GigabitEthernet0/0/2 source-ip 10.1.12.2
discriminator local 12
discriminator remote 2
commit
#
VRRP主备身份
SW1:对于vlan10与vlan20,作为活动主设备
图片
SW2:对于vlan30与vlan40,作为活动主设备
图片
BFD监测与VRRP联动
图片
图片
交换区块生成树配置
在交换区块里,接入与双汇聚之间为了实现高可用性,采取的是双上行连接方式,汇聚之间也有以太信道互联链路。在这样的连接方式下,显而易见存在环路问题。如果对应交换机不支持堆叠,但需要保持冗余连接以提供备份链路,那么在企业网环境中往往还是会选择运行生成树来实现二层环路的避免。除此之外,交换机还能运行一些大二层技术来防环,例如trill。但这种技术往往只有数据中心级别的高端交换机能支持。
由于华为交换机生成树不论是802.1D,还是802.1W均是全局所有vlan共用一个生成树进程。这极易造成部分vlan通信路径为次优路径,为解决该问题,本文选择运行802.1S标准的MSTP。需要注意的是,所有交换机必须拥有相同的MSTP配置才能属于同一个region中,同一个region中的交换机才能一起构建出生成树。
交换区块所有交换机MSTP配置
#
stp enable #默认就开启了,此命令可忽略
stp mode mstp #Huawei设备默认stp模式就是mstp,此命令可忽略
stp region-configuration #进入mstp配置
region-name ha #MSTP域名
instance 12 vlan 10 20 #vlan10和vlan20映射到实例12
instance 34 vlan 30 40 #vlan30和vlan40映射到实例34
active region-configuration #激活mstp配置
交换区块由于使用生成树来防环,因此冗余路径是被阻塞的状态。具体阻塞哪条路径如果不去人为干预的话,可能生成树最终确定的根路径并不是我们所期望的。由于生成树根桥选举是通过比较始发BPDU中ROOT ID字段值谁更小谁为根桥,而ROOT ID字段由生成树优先级加上交换机MAC地址构成。因此,生成树选举的操控一般是通过修改交换机生成树优先级的方式来实现。默认值是32768,仅需将所期望成为根桥的交换机的该值修改的比32768小即可,但需要注意的是必须以4096的倍数修改,因为ROOT ID字段的Priority值2字节,后12位为vlan id,能动的只有前4位。通常,可以将期望成为根桥的交换机的优先级修改为4096,备份根桥修改为8192。或者直接指定其为主根桥或备份根桥,以保证主备根桥是期望的设备。本文中将采取直接指定的方式进行配置。
主备根桥手工指定为双汇聚设备
SW1:
#
stp instance 12 root primary #指定SW1为mstp实例12的主根桥
stp instance 34 root secondary #指定SW1为mstp实例34的备份根桥
#
SW2:
#
stp instance 12 root secondary #指定SW2为mstp实例12的备份根桥
stp instance 34 root primary #指定SW2为mstp实例34的主根桥
#
主备根桥身份验证:
SW1:
图片
SW2:
图片
路径切换测试
生成树路径切换
以vlan40为例,上游接入交换机SW6双上行连接中,连接SW1的端口处于阻塞Discarding状态,因为vlan40映射到了mstp的instance34中,而instance34的主根桥是SW2,所以连接SW2的端口Gi 0/0/2为根端口。通信路径如下图所示。
图片
图片
模拟SW6上行根链路故障,验证路径切换
图片
通过shutdown SW6上行连接SW2的接口模拟上行根链路故障,长ping中途无丢包,路径立即切换至备份链路。查看SW6的端口状态变化,可以发现原先连接SW1的被阻塞的链路变成了根链路,生成树根路径完成重收敛。
主备网关切换
模拟汇聚层网关上行链路故障,验证网关切换。
以vlan20为例,正常情况下走SW1作实际物理网关转发去往外部网络的通信数据
图片
shutdown SW1上行连接AR1的链路,模拟上行链路故障。shutdown掉接口后,立即弹出了对应的日志消息。OSPF邻居中断,BFD状态检测为DOWN,vrrp 10与20从Master切换为Backup
图片
图片
主网关从SW1切换至SW2
图片
在本文中,我们详细介绍了最简单最典型的层次性架构企业网络高可用性的模拟实战部署。在网络模型中的二层与三层入手,通过mstp的多实例对应多生成树完成二层链路基于冗余备份的负载均衡策略,mstp高效的收敛速度得以让终端主机对网络通信链路的变更无感。通过在具备冗余的汇聚交换机上面启用多个vrrp进程针对下游不同vlan交叉互为主备网关的方式也实现了基于冗余备份的负载均衡策略,通过BFD的监测,主备网关切换能在毫秒级内时间完成,同样地,对应用户侧的终端设备来说是无感知的。
高可用性的网络不仅能保障企业生产业务不间断运行,避免因网络故障导致的损失。还能提供稳定的网络性能,以提高用户使用体验。另外,高可用性的网络设计通常更加地灵活,便于应对未来的调整与扩展需求,以适应业务的变化。因此,高可用性网络的设计搭建逐渐成为当下设计网络时必须考虑的设计原则,如何通过最小的成本搭建设计出高可用性网络也是网络工程师们一直在探索研究的话题。