三层网络架构冗余配置实战:VRRP、浮动路由与链路聚合详解

发布时间:2026/10/20 6:25:24
三层网络架构冗余配置实战:VRRP、浮动路由与链路聚合详解 前阵子搭了一套三层结构的网络实验环境核心两台、汇聚两台、接入一台实验目标很明确把三层架构里的各路冗余手段都配上然后人为制造故障看流量到底能不能自己绕过去。做完最大的感受是——冗余两个字说起来容易真正配置起来要同时搞定网关、链路、路由三个层面少一个都不行。这篇文章就按这个踩坑顺序展开先说明每层冗余到底防什么再给出一套可以照抄的拓扑和IP规划然后是VRRP、浮动路由、Eth-Trunk、STP这几类配置最后用拔线、断口、关设备三种方式实测切换效果。适合正在学组网、准备网络认证实验或者想系统梳理冗余设计原理的读者。1. 三层架构的冗余需求拆解核心、汇聚、接入各自要防什么1.1 单点故障到底在哪里三层架构的职责划分很清楚核心层负责高速转发汇聚层是VLAN的网关、策略控制点和路由收敛点接入层负责终端接入和VLAN划分。但正因为分了层每一层都可能成为单点故障源。先说最容易理解的核心层。如果全网只有一台核心交换机那这台设备一宕所有跨网段通信全部中断。核心的上联链路、下联链路同样重要核心设备活着但链路断了效果跟设备宕机差不多。再说汇聚层。汇聚交换机承载的是下面所有终端的网关它一旦故障接入交换机下面挂着的几十个终端会同时失联。这里有个常见误解很多人以为核心做了双机汇聚挂了也没事实际上汇聚是VLAN的网关所在地网关消失了终端连ARP都解析不出来核心再冗余也没用。接入层的单点主要在两头一是接入交换机本身单台接入宕机底下终端全掉二是接入到汇聚的上联链路如果只拉了一根线汇聚坏了交换机还在但上联断了接入完全失联。所以在三层架构的冗余实验里接入也要做双上联。这引出一个核心观点冗余不是多放一台设备那么简单。设备在不代表流量会自动过去。真正困难的是故障发生之后由哪个协议触发切换、切换需要多长时间、切换后的路径是否和网关、路由收敛结果保持一致。如果只堆设备不配协议故障时网络该断还是断。1.2 每层该用什么手段去兜底不同层面的故障要由不同协议来解决不存在一个万能协议包办所有冗余。我习惯把整个实验的冗余任务拆成四块故障点典型故障影响范围对应冗余手段汇聚交换机网关汇聚宕机VLAN网关消失接入层所有终端无法跨网段通信VRRP虚拟网关冗余汇聚到核心的上联链路上联断线二层/三层路径失效终端有网关但访问不了服务器和外网双核心互联 浮动静态路由汇聚到核心的物理线路单根物理线故障带宽下降或链路中断Eth-Trunk链路聚合接入到汇聚的双上联二层链路构成环路广播风暴、MAC漂移RSTP/MSTP防环选路这套任务拆解出来之后实验的配置顺序也天然定下来了先做VRRP保证网关不丢再做路由冗余保证三层有备胎然后做Eth-Trunk和STP保证物理链路和二层的可用性。后面几章完全按这个顺序来因为每一步都是在给前面的方案做支撑。2. 实验拓扑与地址规划理清冗余路径再动手配置2.1 拓扑怎么搭场景用到的设备一共五台交换机和三台终端两台核心交换机名字就叫CORE-1、CORE-2两台汇聚交换机叫DIST-1、DIST-2一台接入交换机ACCESS-1。终端方面PC-A属于VLAN 10PC-B属于VLAN 20另外有一台服务器SERVER直连在CORE-1上。连接关系按冗余思路铺CORE-1和CORE-2之间用一根三层链路互联保证核心层可以互通。DIST-1上联CORE-1DIST-2上联CORE-2但汇聚之间也拉了一根三层链路这样每台汇聚都有一条备用路径绕到对方核心。DIST-1到CORE-1之间用两条物理链路做Eth-TrunkDIST-2到CORE-2之间同样用两条物理链路做Eth-Trunk。ACCESS-1分别接DIST-1和DIST-2各一根Trunk链路形成接入双归。PC-A、PC-B分别接在ACCESS-1的下行口SERVER接在CORE-1的一个三层口上。这里有个设计取舍要解释一下接入层到汇聚层为什么不做Eth-Trunk跨设备聚合因为普通链路聚合要求成员口必须接到同一台设备上ACC-ESS-1的两根线分别接DIST-1和DIST-2不是同一台设备在没有堆叠/集群的情况下无法直接用Eth-Trunk把两条链路捆起来。所以接入双归采用STP冗余方案让RSTP自动阻塞一条路径另一条作为工作链路。这个点后面专门展开。2.2 IP地址与VLAN规划表地址规划直接影响后续配置能不能一次通过。我习惯先把互联地址、VLAN接口地址、网关虚拟地址分开列成一张表再动手配。区域网段说明CORE-1 与 CORE-2 互联10.0.10.0/30CORE-1用.1CORE-2用.2DIST-1 与 DIST-2 互联10.0.11.0/30DIST-1用.1DIST-2用.2CORE-1 与 DIST-1 互联10.0.12.0/30CORE-1用.1DIST-1用.2CORE-2 与 DIST-2 互联10.0.13.0/30CORE-2用.1DIST-2用.2VLAN 10192.168.10.0/24PC-A所在网段VLAN 20192.168.20.0/24PC-B所在网段SERVER 直连网段10.0.200.0/24SERVER地址10.0.200.10VLAN的三层接口地址也要单独规划因为VRRP需要一个真实接口地址和一个虚拟网关地址两者不能冲突设备Vlanif10 地址Vlanif20 地址虚拟网关DIST-1192.168.10.251192.168.20.251192.168.10.254 / 192.168.20.254DIST-2192.168.10.252192.168.20.252同上真实接口地址用.251和.252虚拟网关用.254既保留了终端习惯里的网关是254又不会和物理接口地址冲突。这是VRRP配置里很基础也很容易踩的坑——有些人直接把虚拟IP配成某个接口的地址结果是接口起不来或者VRRP状态异常。2.3 为什么汇聚之间用三层互联而不是二层互联这是一个架构上的关键决策。如果汇聚之间走二层Trunk那整个二层广播域就会从接入层一直连到汇聚层再到汇聚间链路环路链路一下子变得复杂STP的阻塞点选择也更难预测。更关键的是两台汇聚之间的三层互联可以让跨汇聚的流量走三层路由而不是靠二层交换绕来绕去。本实验里DIST-1和DIST-2之间是三层口CORE-1和CORE-2之间也是三层口接入双归形成的二层环路被严格限制在ACCESS-1到两台汇聚这一段。这样做的好处是STP只需要处理一个很小的二层次拓扑VRRP网关冗余在汇聚层独立工作不会互相干扰三层路由冗余由静态路由或动态路由统一负责。这是现网里很经典的做法也是这个实验想验证的核心架构。3. 网关冗余配置VRRP让两台汇聚共用一个虚拟网关3.1 VRRP原理与角色选择终端设备上配置的网关通常是一个IP地址这个IP必须始终有人应答。VRRP的思想是让两台汇聚设备共享一个虚拟IP通过优先级决定谁是主设备Master谁是备份设备Backup。Master负责响应ARP请求和转发流量Backup在Master故障时接替整个过程中终端的网关IP不变所以终端完全无感知。VRRP协议有几个默认行为要心里有数优先级默认100范围是1到254数值越大越优先Master默认每秒发送一次VRRP通告报文Backup连续3个通告周期没收到Master报文就会切换成Master这个时间大约是3秒出头。生产环境里一般会配合BFD或者track联动来缩短切换时间。3.2 DIST-1和DIST-2完整配置VLAN 10和VLAN 20的网关设计我采用了一个简单但很稳妥的方案所有VLAN的主网关都放在DIST-1DIST-2全部作为备份。这样设计的原因和STP根桥选择有关后面会细说这里先看配置。先在DIST-1上创建VLAN并配置VRRPvlan batch 10 20 interface Vlanif10 ip address 192.168.10.251 255.255.255.0 vrrp vrid 10 virtual-ip 192.168.10.254 vrrp vrid 10 priority 120 vrrp vrid 10 preempt-mode timer delay 20 vrrp vrid 10 track interface Eth-Trunk 1 reduced 30 vrrp vrid 10 track interface GigabitEthernet0/0/24 reduced 30 interface Vlanif20 ip address 192.168.20.251 255.255.255.0 vrrp vrid 20 virtual-ip 192.168.20.254 vrrp vrid 20 priority 120 vrrp vrid 20 preempt-mode timer delay 20 vrrp vrid 20 track interface Eth-Trunk 1 reduced 30 vrrp vrid 20 track interface GigabitEthernet0/0/24 reduced 30DIST-2的配置就简单得多保持默认优先级100即可vlan batch 10 20 interface Vlanif10 ip address 192.168.10.252 255.255.255.0 vrrp vrid 10 virtual-ip 192.168.10.254 interface Vlanif20 ip address 192.168.20.252 255.255.255.0 vrrp vrid 20 virtual-ip 192.168.20.254两条配置放在一起对比最直观的区别就是优先级。DIST-1的120压过DIST-2的100所以正常情况下DIST-1是Master。3.3 track联动让VRRP感知上下游故障如果只配上面这些命令实验做到一半就会发现问题VRRP只能保证虚拟网关IP地址还存在但它不知道网关设备的上行链路和下行链路是不是还活着。比如DIST-1的上联Eth-Trunk断了DIST-1依然认为自己是Master继续应答ARP但流量进了DIST-1根本送不到核心这就是典型的假活。解决方法是VRRP track。上面配置里的两行track含义非常明确vrrp vrid 10 track interface Eth-Trunk 1 reduced 30 vrrp vrid 10 track interface GigabitEthernet0/0/24 reduced 30意思是如果Eth-Trunk 1上联核心的聚合口故障优先级减30如果连ACCESS-1的下行口故障优先级再减30。DIST-1初始优先级120上联断了降到90DIST-2的100自然就超过了它于是VRRP主动切到DIST-2。下行口断了同理因为终端已经无法通过DIST-1二层访问网关必须让DIST-2接管。配置preempt-mode timer delay 20也值得单独说。DIST-1恢复之后如果立刻抢回Master可能网络里的路由还没完全收敛第3层路径还是指向DIST-2网关却已经切回DIST-1会造成短时间二次中断。延迟20秒抢占让路由先稳定下来再切是实际配置里的常用手段。配置完之后用display vrrp查看状态正常应该看到VLAN 10和VLAN 20的Master都是DIST-1Backup是DIST-2。如果看到一方状态是Initialize多半是track的接口没起来或者虚拟IP和接口地址冲突。4. 路由冗余配置静态浮动路由给核心-汇聚兜底4.1 静态路由还是动态路由网关由VRRP接管之后三层的转发路径还需要单独做冗余。这个实验我选的是静态浮动路由而不是OSPF或者静态等价负载均衡原因是它简单直观能让人一眼看清主路径挂了备路径顶上的机制。动态路由协议在生产环境确实更常用尤其适合规模大、链路多的场景。但在这个只有五台交换机的实验里引入OSPF反而会分散注意力还得处理DR/BDR选举、区域设计这些细节。静态浮动路由只需要在每台设备上写两三条命令管理距离华为命令行里叫Preference大的那条作为备份故障时自动替换配合路由表查看效果一目了然。4.2 四台设备的浮动路由配置以SERVER挂在CORE-1上为前提看四条设备的配置。CORE-1需要能到达VLAN 10和VLAN 20首选直接走DIST-1备选经CORE-2再到DIST-2ip route-static 192.168.10.0 24 10.0.12.2 ip route-static 192.168.20.0 24 10.0.12.2 ip route-static 192.168.10.0 24 10.0.10.2 preference 80 ip route-static 192.168.20.0 24 10.0.10.2 preference 80CORE-2基本上对称ip route-static 192.168.10.0 24 10.0.13.2 ip route-static 192.168.20.0 24 10.0.13.2 ip route-static 192.168.10.0 24 10.0.10.1 preference 80 ip route-static 192.168.20.0 24 10.0.10.1 preference 80CORE-2还需要一条去往SERVER的备份路由因为SERVER直连在CORE-1上ip route-static 10.0.200.0 24 10.0.10.1DIST-1上去往SERVER首选用上联CORE-1备用路径是经DIST-2再到CORE-2ip route-static 10.0.200.0 24 10.0.12.1 ip route-static 10.0.200.0 24 10.0.11.2 preference 80DIST-2对称配置ip route-static 10.0.200.0 24 10.0.13.1 ip route-static 10.0.200.0 24 10.0.11.1 preference 80默认情况下静态路由的Preference是60备选路由写成80含义是主路由一直存在时备选路由不会进入路由表主路由失效备选路由才会被激活。这个机制和VRRP的Master切换是独立的两条线但最终效果是配合的——VRRP负责让终端找到正确的网关浮动路由负责让网关知道正确的出口。4.3 验证路由表配置完一定要查一下路由表不要凭记忆认为命令敲进去就行。在DIST-1上执行路由查看命令正常情况下到10.0.200.0/24只应该看到一条活跃路由下一跳是10.0.12.1Preference是60。如果你看到10.0.11.2那条还在路由表里说明主链路已经处于故障状态或者主路由的配置本身就有问题。这里容易犯的错误是把优先级写反了结果变成主链路正常时流量反而走备份路径主链路故障后网络直接中断。所以每台设备配完先看一遍路由表确认当前活跃路径是预期的那条再去做故障注入测试。5. 链路聚合与接入双归Eth-Trunk和STP各自负责的段落5.1 汇聚到核心的Eth-Trunk链路聚合解决的是物理线路层面的冗余。DIST-1到CORE-1之间拉了两根线如果不做聚合可能会形成三层环路或者需要靠某种协议去防环。做成Eth-Trunk之后两根物理线被当成一条逻辑链路带宽叠加单根线断了不影响业务。配置分两头做。CORE-1这边interface Eth-Trunk 1 ip address 10.0.12.1 255.255.255.252 interface GigabitEthernet0/0/1 eth-trunk 1 interface GigabitEthernet0/0/2 eth-trunk 1DIST-1这边interface Eth-Trunk 1 ip address 10.0.12.2 255.255.255.252 interface GigabitEthernet0/0/1 eth-trunk 1 interface GigabitEthernet0/0/2 eth-trunk 1DIST-2到CORE-2之间的配置完全一样只是网段换成10.0.13.0/30。配Eth-Trunk之前一定要确认成员口的属性一致速率、双工、VLAN配置都要相同。很多人遇到聚合口起不来的情况多半是某个成员口之前单独配过access或者trunk和聚合组的配置冲突直接在物理口下执行eth-trunk命令时被拒绝。稳妥的顺序是先建Eth-Trunk接口配好属性再把物理口加进聚合组。5.2 接入双归为什么不用跨设备聚合这是实验里最值得停下来想清楚的一个问题。ACCESS-1有两根上联分别接到DIST-1和DIST-2按理说做一个Eth-Trunk把两根线捆起来最理想带宽翻倍又有冗余。但普通以太网链路聚合有一个前提所有成员口必须对接同一台对端设备因为聚合组在转发层面就是一条逻辑链路Hash选路、MAC学习都要按单链路处理。如果成员口分别接两台不同的汇聚没有堆叠/集群把两台汇聚虚拟成一台设备就无法正常工作。所以在不引入堆叠的简单实验里接入双归的正确做法是走STP让两根上联都处于Trunk转发状态由RSTP根据根桥和路径开销自动阻塞其中一条另一条作为工作链路。这样物理上是双归逻辑上只有一条活跃二层路径冗余效果靠故障时STP重新收敛来实现。5.3 链路聚合的验证与坑配置完成后在DIST-1上查看聚合组状态应该看到Eth-Trunk 1的状态是Up两个成员口都处于Selected状态。如果某个成员口状态是Unselected先检查对端有没有配置、成员口是不是shutdown、物理线缆在模拟器里有没有连错设备。实测里有个现象值得记录Eth-Trunk里断掉一根成员线逻辑链路依然是Up的流量完全不中断只是总带宽减半。这正好能用来区分链路聚合和浮动路由——前者解决同一对设备之间的链路冗余后者解决设备之间路径的冗余。如果把Eth-Trunk一根线断掉当成故障来测试会发现VRRP和路由表都没有任何变化因为在你设计的架构里这个故障根本不应该引起路由切换。6. STP根桥规划与边缘端口二层拓扑不能靠随机选举6.1 RSTP优先级与根桥选择接入双归之后二层拓扑是ACCESS-1同时连DIST-1和DIST-2。如果不做任何STP配置交换机会自己选举根桥随机性很大可能出现接入交换机自己成为根桥、或者根桥落在路径开销不理想的位置导致冗余路径和数据流向不匹配。这个实验里我明确把根桥指定在DIST-1DIST-1stp mode rstp stp priority 4096DIST-2stp mode rstp stp priority 8192ACCESS-1stp mode rstp优先级数值越小越优先4096小于8192小于默认的32768所以根桥稳定落在DIST-1。这样设计的直接好处是正常状态下接入交换机向上走DIST-1和二层的VRRP主路径完全一致流量路径最顺。6.2 根桥与VRRP主必须重合的理由这是我在早期实验里踩过的一个比较深的坑。一开始为了体现两台汇聚都干活我把VLAN 10的VRRP主放在DIST-1VLAN 20的VRRP主放在DIST-2同时STP单实例的根桥也设了DIST-1。看起来配置互相独立实际上一测试就有问题VLAN 20的PC网关在DIST-2可二层树根在DIST-1ACCESS-1到DIST-2的那条上联很可能被STP阻塞导致PC根本到不了自己的网关。原因在于STP单实例的阻塞是全局统一的它不会区分VLAN 10和VLAN 20。VRRP却可以按VLAN分别指定主备。两个机制不配合时就会发生网关宣告的设备在二层不可达的尴尬。所以在这个简单实验里我最终选择让所有VLAN的VRRP主都在DIST-1STP根桥也在DIST-1保证逻辑和物理完全对齐。如果能用到MSTP多实例那可以做VLAN负载分担每个实例指定不同的根桥和VRRP主备交错对应起来但那是进阶玩法不在这个基础实验范围里。6.3 边缘端口与收敛时间接入交换机连接PC的下行口属于终端接口下边不会再接交换设备应该配置成边缘端口让这些口不参与STP的Listening和Learning过程直接进入Forwarding状态否则PC开机后要等几十秒才能上网。在ACCESS-1的下行口上interface GigabitEthernet0/0/1 stp edged-port enable interface GigabitEthernet0/0/2 stp edged-port enable配置RSTP之后二层链路故障的收敛时间通常在1到3秒。如果用传统STP默认要30到50秒才能重新收敛这在现代网络里基本不可接受。所以实验里不要只开STP一定要显式使用RSTP或者MSTP边缘端口也要配上否则故障测试的效果会很难看。配置好之后在ACCESS-1上查看STP状态正常情况下DIST-1是根桥接入到DIST-1的口处于转发状态到DIST-2的口可能是备份阻塞状态具体看路径开销和端口ID。这就说明接入双归已经完成了一条转发、一条备份的准备。7. 故障注入实测拔线、断链路、关设备后的切换表现7.1 准备一个持续ping的测试终端所有冗余配置做完进入最关键的验证环节。我在PC-A上执行持续ping命令目标地址是SERVER的10.0.200.10然后在模拟器里不断制造故障观察丢包数量和恢复时间。注意模拟器里的ping测试最好加大间隔或者设置足够多的包数否则还没等到故障出现测试就结束了。还有一个小技巧测试前先确认正常情况下ping完全不丢包再开始拔线否则后续测出来的丢包说不清是故障导致的还是环境本身不稳定。7.2 场景A上联链路故障先测DIST-1的上联。在DIST-1上把Eth-Trunk 1的成员口全部shutdown模拟汇聚到核心的上联中断。预期效果是VRRP的track感知到Eth-Trunk 1故障把DIST-1优先级从120降到90DIST-2成为Master终端的网关切换到DIST-2。同时DIST-1到10.0.200.0/24的首选路由失效备用路由10.0.11.2激活流量经DIST-2再绕到核心。实测现象通常是ping丢两三个包之后恢复中断时间在几秒以内。这符合预期因为VRRP切换需要等待track检测和状态转化加上终端重新ARP解析网关有一定时间开销。有个细节值得单独说如果只断开Eth-Trunk里的其中一根成员线Eth-Trunk整体依然是Up的VRRP和路由都不会切换ping也不会丢包。这就是链路聚合与路由冗余的边界——普通物理线冗余要靠聚合聚合口整体故障才轮到路由层去切换。7.3 场景B下联接入链路故障再测DIST-1连ACCESS-1的那根下行线直接在DIST-1的下行口上shutdown。这个场景如果没有配置track下行口会出现一个很典型的问题VRRP Master还留在DIST-1但接入交换机已经无法通过二层路径访问到DIST-1PC有网关地址却到不了网关。原因在于VRRP并不能感知下行二层路径的断裂它只知道自己的接口还在、上联还在、报文还能发出去。我在DIST-1上配置的第二个track也就是track GigabitEthernet0/0/24就是专门解决这个问题的。下行口断开后DIST-1优先级被降低DIST-2接管网关同时RSTP重新收敛接入交换机的活跃上行路径切到DIST-2。实测ping中断的包数比场景A稍多一些因为STP重新收敛和VRRP切换几乎同时发生路径重建需要一点时间但整体依然在可接受范围内。7.4 场景C汇聚设备整机关闭最后做最狠的测试直接把DIST-1整个设备关闭模拟整台汇聚宕机。这种情况下VRRP的Master收不到DIST-1的VRRP通告报文默认在几个通告周期结束后切换到DIST-2RSTP因为根桥消失重新选举DIST-2作为根桥接入交换机的活跃路径完全切到DIST-2浮动路由也因为DIST-1整机不可达而切换到备用路径。三个机制各自工作最终汇聚到同一个结果网关在DIST-2二层路径在DIST-2三层出口也在DIST-2。恢复DIST-1之后由于配置了preempt delay 20秒DIST-1不会立即抢回Master而是等20秒让路由、STP全部稳定后再切回来避免网络震荡。这一步在实验里一定要观察很多人会忽略抢占延迟导致恢复瞬间出现二次丢包。7.5 实测结果汇总与冗余配置的优先级顺序三种故障场景的实测结果可以整理成一张表故障场景触发机制切换结果恢复时间上联Eth-Trunk全部断开VRRP track上联 浮动路由网关切DIST-2路由走备用几秒内恢复下联接入链路断开VRRP track下行口 RSTP收敛网关切DIST-2二层路径重建比场景A略慢DIST-1整机关闭VRRP超时 RSTP重选根 浮动路由所有流量集中DIST-23秒左右恢复整个实验做完我个人最大的体会是网络冗余的配置顺序是有依赖关系的VRRP要感知上下游故障必须配合track路由冗余要等主链路失效才启用备份STP根桥必须和VRRP主设备保持同一台。如果配置的时候把这些机制的边界和配合关系理清楚这个三层架构的冗余实验在实际操作中会比想象中顺利很多故障注入的每一步也都能解释得明明白白。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询