H3C 企业园区与数据中心网络综合实验:VLAN、VXLAN EVPN、OSPF 与 BGP
以 HCL 为实验环境,系统讲解 H3C 交换机、路由器、VLAN、VXLAN、EVPN、端口聚合、M-LAG、IRF、MSTP、静态路由、OSPF、BGP 和 ACL,并提供完整拓扑、配置模板、验收命令与故障排查流程。
#引言:一套实验,一条从二层到 Overlay 的因果链
这套实验解决一个具体问题:如何在 H3C Comware 设备上,把交换机、路由器、VLAN、端口聚合、MSTP、IRF、M-LAG、VXLAN、EVPN、静态路由、OSPF、BGP 和 ACL 串成一条完整、可复现、可逐阶段验证的学习路径。它背后最基础的机制只有一条:数据平面按表转发,控制平面负责把表算对、算稳、算快。VLAN 用标签分隔广播域,Trunk 用标签透传多个 VLAN,MSTP 用生成树消除冗余链路造成的环路,LACP 用协商把多条物理链路绑成一个逻辑接口,OSPF/BGP/EVPN 用协议在设备之间交换前缀与主机信息——这些控制面的产物最终都汇入 MAC 表、路由表、邻居表和转发表,报文在设备内部怎么走、走到哪里,全部由这些表决定。理解了这条因果链,命令就不再是背诵清单,而是对同一机制在不同层面的显式表达。
本文按因果链组织:先讲清二层帧、VLAN 标签、交换与路由的本质差异,再给出 HCL 中可完整复现的配置序列与验证命令,最后汇总边界条件、常见坑和生产设计原则。正文中的命令以常见 Comware 7 风格为主,保留原文的版本限定与安全限定:HCL 中可用的交换机型号、Comware 版本和 VXLAN/EVPN 命令可能不同,执行前先用问号补全、display version 和设备型号手册确认;所有地址、密码和 VLAN 均为实验值,不要将实验配置直接复制到生产网络,不要在真实交换机上执行清空配置、IRF 合并或修改 BGP 策略等高风险操作。
#一、原理层:从以太网帧出发推导整张网络
#1. 二层帧与广播域:VLAN 为什么需要打 Tag
以太网帧的原始形态只有四个核心字段:目的 MAC、源 MAC、EtherType/长度、数据。交换机收到帧后做两件事:查 MAC 表决定出端口,未知单播和广播帧向所有同广播域的端口泛洪。所有直接相连、处于同一广播域的主机共享同一个冲突与广播空间——广播域越大,泛洪开销越大,故障半径也越大,而且不同业务之间没有任何隔离手段。
VLAN(Virtual Local Area Network,虚拟局域网)解决的就是"如何在一个物理交换机/一张物理网络上切出多个互不可见的广播域"。IEEE 802.1Q 的答案是:在源 MAC 与 EtherType 之间插入 4 字节标签(TPID 固定为 0x8100,TCI 内含 3 位优先级、1 位 DEI 和 12 位 VLAN ID),让每个帧带上自己的"广播域身份"。12 位 VID 提供 4096 个编号空间(0 与 4095 保留),VLAN 1 通常是默认 VLAN。
端口侧的处理规则必须从"进出两个方向"分别理解:
- Access 端口:通常只属于一个业务 VLAN。入方向给普通帧打上端口 PVID 对应的标签,出方向剥离标签。因此接在 Access 口上的终端看到的永远是"不带标签的普通以太网帧",不需要也不应该感知 VLAN。
- Trunk 端口:可以承载多个 VLAN。帧通过链路时保留 802.1Q 标签,接收端依据标签确定它属于哪个广播域。Trunk 上通常还有一个 Native/PVID VLAN,该 VLAN 的帧在链路上不带标签,其余 VLAN 全部带标签。
这里必须强调一个容易混淆的事实:VLAN 只解决二层隔离,不自动解决跨 VLAN 通信。不同 VLAN 之间即使物理上连着同一台交换机,二层帧也不会被交换——因为标签不同、广播域不同。跨 VLAN 通信必须引入三层网关,例如交换机上的 VLAN Interface、路由器单臂(Router-on-a-Stick)子接口,或独立路由器接口。这正是后续"三层网关与路由"章节的切入点。
#2. Trunk 如何透传多个 VLAN
Trunk 的本质是一条能同时搬运多个广播域流量的链路。它的行为由"允许列表"决定:端口配置了 port trunk permit vlan 后,只有列表中 VLAN 的帧才会被该端口转发;不在列表中的 VLAN 帧在入方向即被丢弃。两端必须配置一致的允许列表,否则一端放行、一端丢弃,会出现"看起来链路 Up 但 VLAN 不通"的现象。
很多排障案例的根因就藏在三个小地方:Native/PVID 两边不一致、允许列表两边不一致、对端端口误配成 Access。这正是"VLAN 不通先查端口、再查 Trunk、最后才查路由"的由来。
#3. 交换转发与路由转发的本质差异
这是整张网络最核心的分界线。
- 二层交换:设备查 MAC 表,只关心目的 MAC 和出端口。帧的内容(IP 地址)不被修改,只可能被加上或剥掉 802.1Q 标签。广播帧会泛洪到整个广播域。交换机不感知也不关心"这个 IP 属于哪个网段"。
- 三层路由:设备查路由表,按最长前缀匹配选出下一跳;TTL 减一,重新计算校验和,重写源/目的 MAC 地址后从出接口发出。路由器关心的是 IP 网段,不依赖 MAC 地址做全局寻址。
换句话说:二层转发在广播域内"按 MAC 接力",三层转发跨广播域"按 IP 下一跳接力"。一台三层交换机内部同时具备这两套引擎:进出同一广播域走二层转发,跨广播域则把报文上送到三层引擎,重新封装后再从目标 VLAN 发出。路由协议的输入(路由表)和输出(转发行为)都必须在这一前提下理解。
#4. 链路聚合:哈希把流分散到多条物理链路
链路聚合解决两个问题:单条链路带宽不够、单条链路故障即中断。它把多条物理链路捆绑成一个逻辑接口(H3C Comware 中叫 Bridge-Aggregation),对上层呈现为一个端口。
但聚合的带宽提升有一个必须破除的误解:聚合不是把 4 条 1 Gbps 变成"单流 4 Gbps"。成员链路的选择由哈希算法决定——设备取报文中的若干字段(源/目的 MAC、源/目的 IP、四层端口、VLAN 等)做哈希,把结果映射到一条成员链路。同一个 TCP 会话的所有报文哈希结果一致,因此会稳定地走同一条物理链路,不乱序、不重排;不同会话落在不同成员链路上,多流并发时总吞吐才接近聚合总带宽。所以聚合的收益来自"多流并行 + 链路冗余",而不是"单流叠加"。
LACP(Link Aggregation Control Protocol,IEEE 802.3ad/802.1AX)解决的是聚合的自动协商问题:两端通过 LACPDU 交换系统优先级、端口优先级与操作 Key,只有两端口属性和 Key 一致时才把成员置为 Selected,其余成员进入 Standby。参数必须匹配,就是这个协商机制的必然要求——两端模式不同、速率双工不同、二层属性不同,都无法形成有效的 Selected 成员。
#5. 冗余链路与环路:MSTP 为什么存在
冗余是可靠的代价。交换机之间一旦存在两条以上物理路径,广播帧就会形成环路:泛洪的帧绕一圈回来再次泛洪,指数级复制,最终广播风暴;同时同一 MAC 在不同端口反复"学习",MAC 表抖动,正常流量被错误转发。
STP(Spanning Tree Protocol,生成树协议)的机制是用 BPDU 在网桥之间选举:一个根桥、每台交换机一个根端口、每个网段一个指定端口,其余端口阻塞——逻辑上把冗余拓扑剪成一棵树,物理冗余保留,转发路径无环。MSTP(Multiple Spanning Tree Protocol,多生成树协议)在此基础上把多个 VLAN 映射到同一个"实例",每个实例独立计算一棵生成树,于是 VLAN 10 的流量和 VLAN 20 的流量可以走不同的转发路径,既防环又负载分担。实例间的 VLAN 映射、region-name、revision-level 必须一致,否则设备落入不同 MST Region,看到的拓扑完全不同。
#6. 控制平面与数据平面:从 IGP 到 Overlay
OSPF、BGP、EVPN 都属于控制平面:它们不直接转发用户报文,而是通过协议报文在设备之间交换信息,最终写入路由表/转发表。OSPF 是链路状态型 IGP,Hello 建立邻居、LSA 泛洪形成 LSDB、SPF 算法算出最短路径;BGP 是路径矢量协议,走 TCP 179,用 AS_PATH、LOCAL_PREF、MED、NEXT_HOP 携带决策信息。R2-R3 之间的 BGP 解决的是"跨自治系统发布哪些前缀",而同一 AS 内部用 OSPF 收敛。
数据中心 Overlay 则把这条因果链延伸到第二层与第三层之外:VXLAN 用 UDP 4789 把二层以太网帧整体封装进 IP 报文,用 24 位 VNI(VXLAN Network Identifier)标识虚拟网络,VTEP(VXLAN Tunnel Endpoint,隧道端点)负责封装与解封装;Underlay 是承载 VTEP 之间 IP 连通的底层三层网络(通常 Leaf-Spine + OSPF/IS-IS/静态路由),Overlay 是建立在它之上的 VXLAN 网络。Underlay 不需要知道终端 MAC,Overlay 才承载租户二层或三层语义。EVPN 则用 MP-BGP 在 VTEP 之间分发 MAC/IP 可达信息,替代手工配置远端 VTEP——这是一个典型的"控制平面替数据平面维护表项"案例:VXLAN 负责封装转发,EVPN 负责学习和分发控制信息,二者分工明确。
#7. 四层技术地图
把上述机制收拢成四层,就是原文实验目标的地图:
- 接入层:端口、VLAN、Trunk、LACP。
- 二层可靠性:MSTP、IRF、M-LAG。
- 三层控制:静态路由、OSPF、BGP。
- 数据中心 Overlay:VXLAN 数据平面与 EVPN 控制平面。
完成本实验后,应能回答:VLAN 如何隔离广播域、Trunk 如何承载多个 VLAN;MSTP 如何避免环路并让不同 VLAN 使用不同根桥;LACP 解决什么问题、为什么两端参数必须匹配;IRF 与 M-LAG 的控制面和故障边界差异;VXLAN 为什么需要 VTEP、VNI 与 VLAN 如何映射;EVPN 如何通过 BGP 分发 MAC、IP 和 VTEP 信息;OSPF 与 BGP 分别适合什么范围的路由问题;ACL 应该放哪个方向、如何验证命中。
#二、前置条件:HCL 环境、设备镜像与基线检查
#1. 环境与设备
本实验在 HCL(H3C Cloud Lab,H3C 官方网络模拟平台)中完成。新建工程后选择与实验镜像匹配的 H3C 交换机和路由器,给每台设备设置清晰名称,连接完成后先不要急着配置高级特性。
建议连接关系如下:
- SW1 与 SW2:两条以太网链路,后续组成 Bridge-Aggregation 1。
- SW1 与 R1:Trunk 或三层互联,取决于选择"交换机网关"还是"路由器单臂"方案。
- R1 与 R2:三层链路。
- R2 与 R3:三层链路。
- SW1、SW2 的接入口分别连接 PC1、PC2。
- SW3、SW4 用于单独验证 IRF 或 M-LAG,避免和基础拓扑互相影响。HCL 中可使用的交换机型号、Comware 版本和 VXLAN/EVPN 命令可能不同。本文命令以常见 Comware 7 风格为主;涉及 IRF、M-LAG、VXLAN 和 EVPN 的部分应在支持对应特性的镜像上实验。如果 HCL 镜像不支持,先完成 VLAN、MSTP、LACP、静态路由、OSPF、BGP 和 ACL 实验,VXLAN/EVPN 部分留到支持的镜像上再做。
#2. 综合实验拓扑
下面拓扑同时表达园区网络和数据中心网络。HCL 中建议先搭建 SW1、SW2、SW3、SW4、R1、R2、R3 和 PC1-PC4;VXLAN/EVPN 部分在支持的设备镜像上追加 VTEP、Spine 和 Leaf。
外部网络 / AS 65000
|
R3(边界路由器)
e1/0/1 10.0.23.2/30
|
R2(核心路由器)
OSPF Area 0 / BGP AS 65100
/ \
10.0.12.1/30 10.0.23.1/30
/ \
R1(园区网关) Spine1
| / \
10.10.10.1/24 Leaf1 Leaf2
| VTEP VTEP
+---------+---------+ | \ / |
| | Server1 Server2
SW1=================SW2 VLAN 10 VLAN 20
| LACP / Trunk | VNI 10010 VNI 10020
| |
PC1 VLAN 10 PC2 VLAN 20
SW3=================SW4
| IRF 或 M-LAG |
PC3 VLAN 10 PC4 VLAN 20
图例:==== 表示聚合链路;普通竖线表示接入链路;Spine-Leaf 为三层 Underlay;Leaf 上的 VTEP 承载 VXLAN Overlay。地址规划:
| 设备或链路 | 地址或标识 | 用途 |
|---|---|---|
| VLAN 10 | 10.10.10.0/24 | 办公网 |
| VLAN 20 | 10.10.20.0/24 | 服务器网 |
| VLAN 30 | 10.10.30.0/24 | 运维网 |
| R1-R2 | 10.0.12.0/30 | OSPF 链路 |
| R2-R3 | 10.0.23.0/30 | BGP 链路 |
| Leaf1 Loopback0 | 10.255.1.1/32 | VTEP/Router-ID |
| Leaf2 Loopback0 | 10.255.2.2/32 | VTEP/Router-ID |
| Spine1 Loopback0 | 10.255.0.1/32 | Underlay Router-ID |
| VLAN 10 VNI | 10010 | 二层 VXLAN 网络 |
| VLAN 20 VNI | 10020 | 二层 VXLAN 网络 |
| Tenant L3 VNI | 50000 | 三层 VXLAN 网络 |
#3. 基线保存与版本检查
每完成一个阶段都保存一次配置,并记录命令输出。这是后续所有排障的对照基线:
<H3C> display version
<H3C> display current-configuration
<H3C> display interface brief
<H3C> display device manuinfo
<H3C> save forceHCL 中如果某条命令提示 Unknown command,先进入 system-view 后使用命令补全。不要因为语法相似,就把 Cisco、H3C Comware 5 和 Comware 7 命令混用——这是模拟器实验中最常见的"看起来对、实际错"来源。
#三、阶段 A:VLAN、Access 与 Trunk
#1. 配置序列
以 SW1 为例,创建 VLAN 10、20、30,并配置两个接入端口:
<H3C> system-view
[H3C] sysname SW1
[SW1] vlan 10
[SW1-vlan10] name OFFICE
[SW1-vlan10] quit
[SW1] vlan 20
[SW1-vlan20] name SERVER
[SW1-vlan20] quit
[SW1] vlan 30
[SW1-vlan30] name MANAGEMENT
[SW1-vlan30] quit
[SW1] interface GigabitEthernet 1/0/1
[SW1-GigabitEthernet1/0/1] port link-type access
[SW1-GigabitEthernet1/0/1] port access vlan 10
[SW1-GigabitEthernet1/0/1] quit
[SW1] interface GigabitEthernet 1/0/2
[SW1-GigabitEthernet1/0/2] port link-type access
[SW1-GigabitEthernet1/0/2] port access vlan 20
[SW1-GigabitEthernet1/0/2] quitSW1 与 SW2 的互联端口配置为 Trunk,并只放行实验需要的 VLAN:
[SW1] interface GigabitEthernet 1/0/23
[SW1-GigabitEthernet1/0/23] port link-type trunk
[SW1-GigabitEthernet1/0/23] port trunk permit vlan 10 20 30
[SW1-GigabitEthernet1/0/23] quit另一端(SW2)必须配置相同的 VLAN 和允许列表。Trunk 的"透传"不是玄学:SW1 给进入 Access 口的帧打上 VLAN 10 标签,沿 Trunk 链路携带标签送到 SW2,SW2 查允许列表放行,再从 VLAN 10 的 Access 口剥标签发出——标签在链路中间起了"身份凭证"的作用。
#2. 验证与判定
[SW1] display vlan
[SW1] display vlan 10
[SW1] display interface GigabitEthernet 1/0/23
[SW1] display mac-address vlan 10判定标准:display vlan 能看到 VLAN 10/20/30 及其成员端口;display interface GigabitEthernet 1/0/23 中链路状态为 Up、链路类型为 Trunk、允许 VLAN 列表包含 10/20/30;display mac-address vlan 10 能看到 PC1 的 MAC 在 1/0/1 口学习到。
将 PC1 接入 VLAN 10、PC2 接入 VLAN 20,先验证同 VLAN 主机互通,再验证不同 VLAN 主机暂时不能直接互通。若同 VLAN 不通,优先检查端口状态、VLAN 成员、Trunk 放行列表和 PC 地址,而不是先改路由——次序本身就是对因果链的尊重:二层身份都没对上,三层再正确也白搭。
#四、三层网关与路由
#1. VLAN Interface 网关
如果由 SW1 提供 VLAN 网关(即三层交换机本地终结 VLAN),可以创建 VLAN Interface:
[SW1] interface Vlan-interface 10
[SW1-Vlan-interface10] ip address 10.10.10.1 255.255.255.0
[SW1-Vlan-interface10] quit
[SW1] interface Vlan-interface 20
[SW1-Vlan-interface20] ip address 10.10.20.1 255.255.255.0
[SW1-Vlan-interface20] quitPC1 设置 10.10.10.10/24,网关为 10.10.10.1;PC2 设置 10.10.20.20/24,网关为 10.10.20.1。当 PC1 要访问 PC2 时,它发现目的 IP 不在本网段,就把帧发给网关 MAC;SW1 查路由表发现 10.10.20.0/24 是自己的直连网段,于是把报文重写目的 MAC 为 PC2 的 MAC,从 VLAN 20 转发出去。此刻发生的正是第一节说的"二层接力变三层跳变"。
验证:
[SW1] display ip interface brief
[SW1] display arp
[SW1] ping 10.10.10.10
[SW1] ping 10.10.20.20#2. 路由器单臂方案
若 HCL 交换机不支持或不方便使用 VLAN Interface,可以让 R1 的一个物理端口承载多个子接口,即单臂路由。交换机到 R1 的端口配置为 Trunk,R1 使用 VLAN 子接口:
[R1] interface GigabitEthernet 0/0.10
[R1-GigabitEthernet0/0.10] vlan-type dot1q vid 10
[R1-GigabitEthernet0/0.10] ip address 10.10.10.1 255.255.255.0
[R1-GigabitEthernet0/0.10] quit
[R1] interface GigabitEthernet 0/0.20
[R1-GigabitEthernet0/0.20] vlan-type dot1q vid 20
[R1-GigabitEthernet0/0.20] ip address 10.10.20.1 255.255.255.0
[R1-GigabitEthernet0/0.20] quit单臂路由的原理与 VLAN Interface 相同:区别只在网关位置——VLAN Interface 把三层终结在交换机内部,单臂把三层终结在路由器子接口上,交换机与路由器之间用 Trunk 带标签交换帧。单臂路由适合学习原理和小规模实验,但所有 VLAN 流量共享一条物理链路;生产网络通常使用冗余三层网关、链路聚合或分布式网关。
#3. 静态路由
假设 R1 到 R2 的链路为 10.0.12.0/30,R1 地址 10.0.12.1,R2 地址 10.0.12.2。R1 要访问 R2 后面的外部网段:
[R1] ip route-static 172.16.0.0 16 10.0.12.2
[R2] ip route-static 10.10.10.0 24 10.0.12.1
[R2] ip route-static 10.10.20.0 24 10.0.12.1查看路由和路径:
[R1] display ip routing-table
[R1] display ip routing-table 172.16.0.0
[R1] tracert 172.16.1.1静态路由的本质是"由人预先写死转发决策":它简单、可控、确定,但链路故障时不会自动重新计算(没有控制平面反馈),规模扩大后维护成本随网段数线性上升。这就是下一节引入 OSPF 的原因——让协议自动交换内部路由,替代人肉维护。
#五、MSTP:二层环路与根桥控制
#1. 为什么需要生成树
回顾第三节:SW1 与 SW2 之间一旦存在冗余路径(两条物理链路或聚合外的备用链路),广播帧就会在环路中指数复制,MAC 表也会在同一 MAC 的两个端口之间反复震荡。生成树的全部价值,就是把"物理冗余"翻译成"逻辑无环":选举根桥、根端口与指定端口,阻塞无用端口,环路被剪断;某条工作链路故障时再快速收敛,让备用端口接管。
MSTP 把这种保护细化到实例粒度:将 VLAN 10、30 放入实例 1,将 VLAN 20 放入实例 2,让 SW1 成为实例 1 根桥、SW2 成为实例 2 根桥——不同 VLAN 的流量就能走不同路径,实现"防环 + 负载分担"双收益。关键前置条件是两台设备的 region-name、实例映射和 revision-level 必须一致,否则会落入不同 MST Region,实例拓扑完全错乱。
#2. 配置 MST Region
SW1 和 SW2 都执行相同的 region 配置:
[SW1] stp enable
[SW1] stp region-configuration
[SW1-mst-region] region-name HCL-LAB
[SW1-mst-region] instance 1 vlan 10 30
[SW1-mst-region] instance 2 vlan 20
[SW1-mst-region] revision-level 1
[SW1-mst-region] active region-configuration
[SW1-mst-region] quit设置根桥优先级,SW1:
[SW1] stp instance 1 root primary
[SW1] stp instance 2 root secondarySW2 使用相反角色:
[SW2] stp instance 1 root secondary
[SW2] stp instance 2 root primary#3. 验证与故障演练
[SW1] display stp brief
[SW1] display stp instance 1
[SW1] display stp region-configuration判定标准:display stp brief 中每个端口的角色与状态符合预期(根端口/指定端口为 Forwarding,阻塞端口为 Discarding);display stp instance 1 显示 SW1 为本实例根桥、优先级被置为低值;display stp region-configuration 中 region-name、实例映射与 revision-level 与 SW2 完全一致。
测试一条聚合或互联链路断开,观察阻塞端口是否转为 Forwarding;恢复链路后确认拓扑收敛,没有持续 TC(Topology Change)、拓扑变化或端口抖动。边缘端口可按设备支持配置 edge-port,但交换机互联端口不要误配为边缘端口——边缘端口假设下游没有交换机,互联端口配上它会跳过握手,可能把环路放进来。
#六、端口聚合与 LACP
#1. 配置序列
SW1 与 SW2 使用端口 23、24 聚合为 Bridge-Aggregation 1:
[SW1] interface Bridge-Aggregation 1
[SW1-Bridge-Aggregation1] link-aggregation mode dynamic
[SW1-Bridge-Aggregation1] port link-type trunk
[SW1-Bridge-Aggregation1] port trunk permit vlan 10 20 30
[SW1-Bridge-Aggregation1] quit
[SW1] interface range GigabitEthernet 1/0/23 to GigabitEthernet 1/0/24
[SW1-if-range] port link-aggregation group 1
[SW1-if-range] quit配置顺序本身有因果:先创建聚合接口并定义其二层属性(链路类型、Trunk 允许列表),再把物理成员绑定进聚合组。成员端口继承聚合接口的二层属性,因此成员端口自身的链路类型、Trunk 列表必须与聚合接口一致,否则两端协商后无法形成 Selected。SW2 对应配置完全相同。
#2. 验证与判定
[SW1] display link-aggregation summary
[SW1] display link-aggregation verbose Bridge-Aggregation 1
[SW1] display lacp system-id至少确认:聚合接口 Up;成员端口状态为 Selected;两端速率和双工一致;Trunk VLAN 列表一致。LACP 系统 ID 用于区分两端设备,两端不一致是正常的(两台不同设备的系统 ID 当然不同),真正要一致的是协商参数——模式、Key、成员属性。
测试时拔掉一根成员线,业务应继续(哈希把流重新映射到剩余成员);如果整个聚合都 Down,检查是否把端口加入了错误聚合组、两端 LACP 模式是否匹配(一端 dynamic、一端 static 或手工,协商就会失败)。回想第一节的哈希机制:拔线后原有会话可能短暂中断(哈希重新计算结果),但新流量会立即使用健康成员,这正是"冗余收益以会话级重映射为代价"的边界。
#七、设备级冗余:IRF 与 M-LAG
#1. IRF 的原理与边界
IRF(Intelligent Resilient Framework,智能弹性架构)将多台物理交换机虚拟成一台逻辑设备,通常共享控制面和管理视图,成员之间通过 IRF 链路同步状态。它简化管理,也让下游设备可以把跨成员链路组成一个聚合组——因为从下游看,它们面对的是一台设备。
IRF 的关键风险在于成员编号、优先级、IRF 端口绑定和重启合并:错误配置可能导致成员分裂、配置覆盖或短暂业务中断。实验时必须先记录设备 MAC、成员编号和当前配置,并在隔离的 HCL 工程里操作。常见流程是:给成员设置编号、配置 IRF 物理端口、保存、重启或激活,再确认成员状态。具体命令随 Comware 版本变化,执行前先探查:
[H3C] irf ?
[H3C] display irf
[H3C] display irf topology
[H3C] display irf configuration验收标准:所有成员为预期的 Active/Standby 状态,IRF 端口链路 Up,拓扑无断裂,管理地址只有一个逻辑入口。不要在已有业务网络中直接把两台独立生产交换机合并成 IRF——合并动作本身就是高风险的不可逆变更。
#2. M-LAG 的原理与边界
M-LAG(Multi-Chassis Link Aggregation,跨设备链路聚合)让两台独立控制面的交换机通过 peer-link 和 keepalive 协同,使下游设备可以跨两台设备建立一个逻辑聚合。与 IRF 相比,M-LAG 保留了双设备独立控制面,故障域和升级方式不同:一台设备故障不影响另一台继续转发,可以逐台升级;但配置、版本、设备角色和一致性要求更复杂。
M-LAG 通常需要:
- 两台设备之间的 peer-link,用于同步状态和转发必要流量;
- 独立 keepalive 链路,用于判断对端存活和双主风险;
- 下游跨设备聚合的 Domain、系统 MAC、优先级和成员配置;
- split-brain 保护,避免 peer-link 和 keepalive 同时失败时双主转发。
这里有一个明确的诚实约束:HCL 镜像不支持 M-LAG 时,不要用 IRF 命令假装完成 M-LAG。可以用两台交换机、两条上联和 MSTP/LACP 模拟部分冗余逻辑,但 M-LAG 的验证必须在支持的镜像或真实设备上完成。设备号、命令、软件版本都不同,伪验证只能骗过流程,骗不过故障。
#八、OSPF:内部动态路由
#1. 原理
OSPF 是链路状态型 IGP。路由器通过 Hello 建立邻居,交换 LSA,形成 LSDB(链路状态数据库),再使用 SPF 计算到各网段的最短路径。Router-ID 应稳定且唯一,通常使用 Loopback 地址;Area 0 是骨干区域,实验先使用单 Area 0,避免过早引入区域间问题。
#2. R1、R2 配置 OSPF
R1:
[R1] ospf 1 router-id 10.255.11.1
[R1-ospf-1] area 0.0.0.0
[R1-ospf-1-area-0.0.0.0] network 10.0.12.0 0.0.0.3
[R1-ospf-1-area-0.0.0.0] network 10.10.10.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0] network 10.10.20.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0] quitR2:
[R2] ospf 1 router-id 10.255.12.1
[R2-ospf-1] area 0.0.0.0
[R2-ospf-1-area-0.0.0.0] network 10.0.12.0 0.0.0.3
[R2-ospf-1-area-0.0.0.0] network 10.0.23.0 0.0.0.3注意 network 语句的通配符掩码:0.0.0.3 匹配 10.0.12.0/30 点对点链路,0.0.0.255 匹配 /24 业务网段。OSPF 只在匹配的接口上发 Hello、发布该接口的主网段。R1 发布三条网段,R2 发布两条——R2 不需要发布业务网段,因为它不直连它们,发布不属于自己的网段在 OSPF 中没有意义(除非做重发布)。
#3. 验证与判定
[R1] display ospf peer
[R1] display ospf routing
[R1] display ip routing-table protocol ospf
[R1] ping 10.0.23.2判定标准:display ospf peer 中邻居状态为 Full;display ospf routing 中能看到对端发布的网段及其代价;display ip routing-table protocol ospf 中 10.0.23.0/30 等前缀以 OSPF 来源存在于路由表;ping 10.0.23.2 通。
邻居无法 Full 时,检查接口是否 Up、两端 Area、认证、Hello/Dead 时间、网络类型、MTU 和 Router-ID。OSPF 邻居建立但没有路由时,检查 network 匹配、接口是否被 silent-interface 静默,以及是否被策略过滤——这两类问题的排查方向完全不同:前者是"邻居关系建不起来",后者是"邻居关系建起来了但路由没进来"。
#4. 被动接口
用户网段通常不需要和终端建立 OSPF 邻居,可以将业务接口设为被动(silent),只发布网段而不发送 Hello。不同 Comware 版本命令位置可能不同,先查询 ospf ?。原则是:核心互联接口允许邻居,接入用户接口只发布前缀。这既减少 Hello 开销,也避免终端设备误收到路由协议报文。
#九、BGP:连接外部 AS
#1. 原理与实验设定
BGP 是路径矢量协议,通过 TCP 179 建立邻居,使用 AS_PATH、LOCAL_PREF、MED、NEXT_HOP 和策略控制路由选择。BGP 的重点不只是"把路由传过去",而是明确哪些前缀允许发布、哪些前缀允许接收,以及路由优先级和防环策略——AS_PATH 本身就是防环机制,任何携带本 AS 号的更新都会被拒绝。
本文使用 R2 的 AS 65100 与 R3 的 AS 65000 建立 eBGP。R3 模拟外部网络,发布 172.16.0.0/16。
#2. 配置 eBGP
R2:
[R2] bgp 65100
[R2-bgp-default] router-id 10.255.12.1
[R2-bgp-default] peer 10.0.23.2 as-number 65000
[R2-bgp-default] address-family ipv4 unicast
[R2-bgp-ipv4] peer 10.0.23.2 enable
[R2-bgp-ipv4] network 10.10.10.0 255.255.255.0
[R2-bgp-ipv4] network 10.10.20.0 255.255.255.0R3:
[R3] interface LoopBack0
[R3-LoopBack0] ip address 172.16.1.1 255.255.255.0
[R3-LoopBack0] quit
[R3] bgp 65000
[R3-bgp-default] router-id 10.255.23.1
[R3-bgp-default] peer 10.0.23.1 as-number 65100
[R3-bgp-default] address-family ipv4 unicast
[R3-bgp-ipv4] network 172.16.1.0 255.255.255.0
[R3-bgp-ipv4] peer 10.0.23.1 enable两个细节值得留意:BGP 的 network 命令不是"生成一条路由",而是"把本地路由表中已存在且与 network 精确匹配的路由引入 BGP 发布"——如果 10.10.10.0/24 没在 R2 路由表中(例如 OSPF 没把它学进来),这条 network 就不起作用;address-family 激活与邻居 enable 是两件事,忘记在 ipv4 单播地址族下 enable 邻居,TCP 179 都建立起来了也不会有路由。
#3. 验证与判定
[R2] display bgp peer
[R2] display bgp routing-table ipv4
[R2] display ip routing-table protocol bgp
[R2] ping 172.16.1.1判定标准:display bgp peer 中邻居状态为 Established;display bgp routing-table ipv4 中能看到本地 network 发布的 10.10.10.0/24、10.10.20.0/24 和从 R3 学到的 172.16.1.0/24;display ip routing-table protocol bgp 中 172.16.1.0/24 出现在路由表,且下一跳 10.0.23.2 可达;ping 172.16.1.1 通。
如果邻居处于 Active,检查 TCP 179 可达、AS 号、Router-ID、更新源和 ACL;如果邻居 Established 但没有路由,检查地址族激活、network 对应路由是否存在、策略是否拒绝,以及下一跳是否可达——后者还必须确认 R2 怎么知道去 10.0.23.2 的路由(本例由 OSPF 提供)。
#4. 路由策略原则
生产 BGP 不应无条件接收或发布全部路由。应使用 prefix-list、route-policy 或同等策略:只发布自有前缀,只接收明确允许的前缀,限制最大前缀数量,并设置 BGP 会话认证和 TTL 安全(GTSM)。策略修改后必须检查 Adj-RIB-In、Loc-RIB 和实际路由表,不能只看邻居状态——邻居 Established 只代表 TCP 会话和 BGP 会话活着,不代表策略结果正确。
#十、ACL 安全策略
#1. 原理
ACL 按规则顺序匹配,通常采用首条命中(match-first)原则,最后是隐含拒绝或设备默认行为。规则应尽量具体:先写允许的必要流量,再写拒绝和日志规则。ACL 可以应用在 VLAN Interface、物理接口或 VTY,方向分为 inbound 和 outbound——方向选错是最典型的"配置正确但效果相反"。
实验要求:VLAN 10 可以访问 DNS 和 Web 服务,但禁止访问管理网 VLAN 30;运维网 VLAN 30 可以访问网络设备管理地址。
#2. 配置 IPv4 ACL
下面示例 ACL 中,basic ACL 2000 按源地址匹配管理网,advanced ACL 3000 精确匹配"VLAN 10 到服务器网段 80 端口的 TCP"与"VLAN 10 到管理网段的全部流量"。具体应用接口和命令以设备版本为准:
[SW1] acl basic 2000
[SW1-acl-ipv4-basic-2000] rule 5 permit source 10.10.30.0 0.0.0.255
[SW1-acl-ipv4-basic-2000] rule 10 deny source 10.10.10.0 0.0.0.255
[SW1-acl-ipv4-basic-2000] quit
[SW1] acl advanced 3000
[SW1-acl-ipv4-adv-3000] rule 5 permit tcp source 10.10.10.0 0.0.0.255 destination 10.10.20.0 0.0.0.255 destination-port eq 80
[SW1-acl-ipv4-adv-3000] rule 10 deny ip source 10.10.10.0 0.0.0.255 destination 10.10.30.0 0.0.0.255
[SW1-acl-ipv4-adv-3000] quit应用前先确认接口(这里应用在 VLAN 10 网关的入方向,拦截所有从办公网进入网关的流量):
[SW1] interface Vlan-interface 10
[SW1-Vlan-interface10] packet-filter 3000 inbound
[SW1-Vlan-interface10] quit#3. 验证与判定
[SW1] display acl 3000
[SW1] display packet-filter interface Vlan-interface 10判定标准:display acl 3000 中规则序号的命中计数随测试增长;display packet-filter interface Vlan-interface 10 显示 ACL 3000 已正确应用在 Vlan-interface10 的 inbound 方向。测试应覆盖允许流量、拒绝流量、反向流量、非目标端口和未匹配源地址——五类场景分别验证规则是否过宽、顺序是否错误、方向是否反了。
若业务突然中断,先撤销错误方向的 ACL 或恢复上一版配置,再分析规则命中计数,不要连续增加"临时 permit any"——那会慢慢把 ACL 变成一张漏水的网,还埋下安全隐患。
#十一、VXLAN 与 EVPN:数据中心 Overlay
#1. VXLAN 原理
VXLAN 使用 UDP 4789 封装二层以太网帧,将 VLAN 或虚拟网络映射为 24 位 VNI。VTEP 是 VXLAN 隧道端点,负责把本地二层帧封装后发送到远端 VTEP,再解封装交付给目标主机。对终端而言,VTEP 之间的物理网络(Underlay)完全透明,它们看到的是一张跨越三层的大二层网络(Overlay)。
为什么需要 VXLAN,而不是继续叠加 VLAN?三个边界问题逼出来的:其一,802.1Q 的 VID 只有 12 位,可用编号空间约 4094,多租户、多业务的隔离需求很快耗尽编号;其二,经典以太网二层不能跨越三层边界,园区"大二层"靠堆叠或长距离互联硬撑,数据中心里服务器跨机柜、跨机房分布,物理网络天生是三层 Leaf-Spine;其三,租户希望自己的二层语义(广播、组播、无状态迁移)在数据中心里保持原样,同时不让租户拓扑污染物理网络。VXLAN 的答案是把"虚拟网络"与"物理网络"彻底解耦:物理网络只负责按 IP 转发封装报文(Underlay),虚拟网络的二层身份由 VNI 表达、由 VTEP 在边界翻译(Overlay)。
Underlay 是承载 VTEP 之间 IP 连通的底层网络,通常使用 Leaf-Spine 三层架构和 OSPF/IS-IS/静态路由;Overlay 是建立在 Underlay 之上的 VXLAN 网络。Underlay 不需要知道终端 MAC——它只看到 VTEP 之间的 IP 封装;Overlay 才承载租户二层或三层语义。这套分层与 VLAN 一样遵循同一因果链:数据面封装解决"怎么送",控制面解决"送给谁、学什么",只是规模从园区扩大到数据中心,隔离标识从 12 位 VID 换成 24 位 VNI,隧道端点从物理端口换成 VTEP。
#2. 静态 VXLAN 学习路径
在支持 VXLAN 的 HCL 镜像上,可以先用静态隧道理解数据面:
- 配置 Leaf1、Leaf2 的 Loopback VTEP 地址。
- 用 OSPF 或静态路由保证 Loopback 互通。
- 创建 VLAN 10 和 VNI 10010。
- 配置 VXLAN Tunnel、Network Identifier 和 VTEP 对端。
- 将 VLAN 10 映射到 VNI 10010。
命令因版本差异很大,实验时按以下逻辑查找:
[Leaf1] display vxlan ?
[Leaf1] display tunnel ?
[Leaf1] display l2vpn ?
[Leaf1] display current-configuration interface LoopBack0验收要同时检查 Underlay 和 Overlay:
[Leaf1] ping 10.255.2.2
[Leaf1] display vxlan tunnel
[Leaf1] display vxlan tunnel vni 10010
[Leaf1] display mac-address判定标准:Underlay 层 ping 10.255.2.2 通(VTEP Loopback 互通);Overlay 层 display vxlan tunnel 显示隧道 Up、display vxlan tunnel vni 10010 显示 VLAN-VNI 映射存在、display mac-address 能看到远端主机的 MAC 经隧道学习到。
如果 Loopback 不通,先修 Underlay——不要越过它去查 Overlay,因为 VXLAN 封装建立在 VTEP 之间的 IP 连通之上;如果 Tunnel Up 但主机不通,检查 VLAN-VNI 映射、隧道端口、MTU、ARP/MAC 学习和两端接入口。
#3. EVPN 控制平面
EVPN 使用 MP-BGP 在 VTEP 之间分发 MAC/IP 可达信息。与静态 VXLAN 相比,EVPN 减少了手工配置远端 VTEP 的工作,并能支持 MAC 路由、主机 IP 路由、别名、负载分担和多归属等能力。
EVPN 中常见路由类型:
- Type 2:MAC/IP Advertisement,发布终端 MAC 和可选 IP。
- Type 3:Inclusive Multicast Ethernet Tag,建立 BUM 流量复制信息。
- Type 5:IP Prefix Route,发布三层前缀,常用于 IRB 和租户路由。
必须反复强调的一点:EVPN 的控制面不是 VXLAN 本身。VXLAN 负责封装和转发,EVPN 负责学习和分发控制信息。BGP 邻居 Established 也不代表业务一定通,仍需检查 VNI、RD、RT、VTEP Loopback 和网关配置——邻居状态是控制面通道的健康信号,不是业务面结果。
#4. 二层 VNI 与三层 VNI、VRF
将 VLAN 10 映射到 VNI 10010 后,同一个租户的服务器可以跨 Leaf 保持二层广播域:Leaf 负责本地 MAC 学习,EVPN 负责将远端 MAC/IP 通告给其他 VTEP,远端 VTEP 据此更新转发表。设计时要注意:
- 每个租户 VLAN/VNI 必须有清晰对应关系,编号混乱是 Overlay 排障的第一大来源;
- BUM 流量需要 ingress replication 或组播复制方案;
- Underlay MTU 要覆盖 VXLAN 额外封装开销,通常需要比终端 MTU 更大(50 字节左右的内外头,实际以封装类型为准);
- 终端网关可以集中在边界,也可以使用分布式 Anycast Gateway。
多租户网络不能把所有 VLAN 放在同一个全局路由表。通常用 VRF(Virtual Routing and Forwarding,虚拟路由转发)表示租户路由域,再用三层 VNI 承载 VRF 间的 Overlay 三层流量。EVPN Type 5 可发布租户前缀,边界 Leaf 再通过 OSPF、BGP 或静态路由连接外部网络。
一个完整的排查顺序(从终端到控制面,逐层上卷):
- 终端是否在正确 VLAN?
- VLAN 是否映射到正确 VNI?
- VTEP Loopback 是否通过 Underlay 互通?
- EVPN BGP 邻居和地址族是否激活?
- RT import/export 是否匹配?
- VRF、三层 VNI 和网关是否绑定?
- ACL、ARP/ND 和 MTU 是否正常?
这个顺序本身就是因果链的倒放:任何一层不满足,上层现象都不可能正常。
#十二、验证层汇总:HCL 分阶段测试清单
把前面各节的控制面检查收敛成六个阶段,每阶段先操作、后验证,输出留档。
#阶段 A:二层基础
1. 创建 VLAN 10、20、30。
2. 配置 PC1/PC2 接入口。
3. 配置 SW1-SW2 Trunk。
4. 验证同 VLAN 互通、跨 VLAN 隔离。
5. 检查 display vlan、display mac-address。预期:同 VLAN 主机可以通信,不同 VLAN 在没有网关时不能通信。这一条同时验证了 VLAN 隔离机制本身和 Trunk 透传的正确性。
#阶段 B:网关和路由
1. 创建 VLAN Interface 或路由器子接口。
2. 设置 PC 默认网关。
3. 添加 R1-R2 静态路由。
4. 用 ping 和 tracert 验证路径。
5. 删除一条静态路由,观察目的网段变为不可达。预期:跨 VLAN 可达,路由表中下一跳和出接口正确。第 5 步是有意的负向验证:静态路由没有重收敛能力,删除即失效,这为理解动态路由的价值提供了对照组。
#阶段 C:MSTP 和 LACP
1. 给 SW1-SW2 建立两条冗余链路。
2. 配置 LACP 聚合。
3. 确认成员 Selected。
4. 配置 MST Region 和根桥角色。
5. 断开一条成员链路。预期:单链路故障不影响业务,STP 不出现异常拓扑震荡。注意这里聚合把两条链路绑成一个逻辑端口,MSTP 看到的是一个"逻辑端口",环路被聚合和生成树分别处理,两者互补但不重叠。
#阶段 D:OSPF 和 BGP
1. 给 R1、R2 配置 Loopback 和链路地址。
2. 建立 OSPF Area 0 邻居。
3. 检查 OSPF 学到的业务网段。
4. R2-R3 建立 eBGP。
5. 用 route-policy 限制发布前缀。预期:OSPF 邻居 Full,BGP 邻居 Established,路由表中出现预期前缀且无多余路由。第 5 步把 BGP 从"能通"推向"可控",是工程判断训练的关键。
#阶段 E:ACL
1. 允许 VLAN 10 访问服务器 Web 端口。
2. 拒绝 VLAN 10 访问管理网。
3. 允许 VLAN 30 管理网络设备。
4. 查看 ACL 命中计数。
5. 测试规则顺序和反向访问。预期:允许和拒绝结果符合策略,命中计数随测试增长。命中计数是 ACL 唯一诚实的证据——规则写没写上不看配置,看计数动不动。
#阶段 F:VXLAN/EVPN
1. 验证 Leaf Loopback Underlay 互通。
2. 创建 VLAN-VNI 映射。
3. 建立 VTEP 或 EVPN 邻居。
4. 查看 Type 2/Type 3/Type 5 路由。
5. 跨 Leaf 测试同 VNI 主机通信。
6. 断开一条 Underlay 链路并观察收敛。预期:Underlay、BGP EVPN 和 VXLAN Tunnel 分层正常,业务流量可以跨 VTEP 转发。第 6 步验证的是 Overlay 对 Underlay 故障的韧性——Underlay 收敛后,Overlay 隧道应自动重建或保持可达。
#十三、边界与坑:常见故障定位
#VLAN 不通
检查接入口 VLAN、Trunk 放行 VLAN、Native/PVID、端口是否 shutdown,以及两端是否连接到了预期接口。排查顺序先看 MAC 是否学习,再看 ARP,最后看网关和 ACL——二层身份、三层寻址、安全策略,逐层上卷,不要跳级。
#LACP 聚合不成功
检查两端聚合组编号、LACP 模式、端口速率/双工、Trunk 或 Access 属性、STP 状态和成员端口是否被其他聚合占用。成员端口必须具备一致的二层或三层属性,协商机制才会把它们选为 Selected。
#跨设备流量时断时续
优先怀疑不对称路径:去程和回程走了不同链路或不同网关,状态型设备(防火墙、部分负载均衡器)会丢弃这类报文。分别检查两台设备的路由表、反向路由和 ECMP 哈希是否一致,确认路由策略没有让回程指向黑洞。这类问题在 MSTP 多实例叠加 LACP 聚合时尤其隐蔽——两条路径各自都通,逐段 ping 全部正常,只有真实业务的双向会话表现异常。
#MSTP 根桥不符合预期
检查 Region 配置是否激活、VLAN 映射是否一致、实例优先级和 Bridge ID。两台交换机 Region 不一致时,看到的实例拓扑可能和预期完全不同——这是最容易"所有显示都正常但拓扑就是不对"的场景。
#OSPF 邻居卡在 Init 或 ExStart
Init 常见于单向 Hello(对端没收到你的 Hello 或没回);ExStart/Exchange 常见于 MTU、邻居参数或网络类型不一致。检查接口 MTU、Area、认证、Hello/Dead、Router-ID 和 ACL。这类故障的要点是学会读邻居状态机:卡在哪一态,问题就在哪一层。
#BGP 无法 Established
检查对端地址路由、TCP 179、AS 号、源地址、认证和设备时间。Established 后无路由则检查地址族、策略、next-hop、network 前缀是否已存在于本地路由表——前者是会话层问题,后者是策略/路由层问题,别再回去改邻居。
#VXLAN Tunnel Up 但业务不通
检查 VNI、VLAN 映射、VTEP 地址、Underlay MTU、MAC/ARP 学习、BUM 复制和 EVPN RT。不要只看 Tunnel Up 就认为 Overlay 完整——隧道是通道,通道里的内容(MAC 学习、VNI 映射、复制组)才是业务。
#M-LAG 或 IRF 出现双主风险
立即确认 peer-link、keepalive、成员角色和双主保护状态。不要同时在两台设备上执行任意清配置;先隔离故障链路,保留 display 输出,再按厂商恢复流程操作。双主是设备级冗余最危险的失败模式,处理优先级高于一切业务恢复。
#十四、生产设计注意事项
- VLAN 和 VNI 使用统一编号规范,建立 IP、MAC、端口和租户资产表,编号即资产的索引。
- Underlay 使用稳定的 Loopback Router-ID,路由协议和管理地址分离。
- BGP 使用前缀过滤、最大前缀限制、认证和明确的 import/export 策略,不给"顺路学到的路由"留后门。
- ACL 采用最小权限原则,规则变更先在测试环境验证,并记录命中计数和回滚配置。
- IRF、M-LAG、EVPN 升级前确认版本兼容矩阵、双主保护、ISSU 能力和维护窗口。
- VXLAN 需要预留封装开销,统一规划物理链路 MTU、设备 MTU 和终端 MTU。
- 网络变更遵循"采集基线、单项变更、验证指标、保留回滚"的流程,基线是回滚的前提。
#十五、收尾:什么时候该用它,下一步做什么
这套实验把 H3C 网络设备上的技术串成了一个完整闭环:VLAN 提供二层隔离,Trunk 搬运多个 VLAN,LACP 提供链路聚合,MSTP 防止二层环路,IRF 和 M-LAG 提供设备级冗余;静态路由适合简单路径,OSPF 负责内部动态收敛,BGP 负责跨 AS 策略交换;VXLAN 扩展二层规模,EVPN 通过 BGP 分发 Overlay 的 MAC、IP 和前缀信息。
在 HCL 中应坚持分阶段验证,每阶段都检查控制面状态、转发表、端到端连通性和故障恢复结果。真正的网络能力不在于配置一次成功,而在于链路断开、邻居重建、策略变更和设备重启后,仍能解释系统为什么这样转发,以及怎样安全恢复。
两点边界提醒:其一,如果实验目的只是"让两台 PC 互通",静态路由和单臂就够,不必为小规模引入 BGP 与 VXLAN——协议栈复杂度只有在规模与可靠性要求出现时才值得;其二,IRF 合并、M-LAG 双主恢复、BGP 策略变更都属于高影响操作,模拟器里可以大胆演练,真实设备上必须先有回滚方案再动手。下一步建议把六个阶段清单跑满两轮:第一轮按命令敲通,第二轮拔线、重启、改策略做破坏性演练,直到每一类故障你都能不看笔记说出排查顺序。
相关阅读
Related留言讨论
0 条还没有留言,来说点什么吧。