跳到正文
Lutong's Homepage

华为H3C实战 | 第43章 数据中心服务器接入与高密组网

📚 本系列共 48 篇(第 43 / 48 篇) · 第六卷 实战与附录篇 —— 把它们拼起来

← 上一篇:第 42 章 企业双出口冗余与链路选路  下一篇:第 44 章 典型组网排障实录 →


43.1 本章导读

这一章讲的是数据中心里服务器怎么接到网络上,以及为什么它和「办公室电脑接网络」完全是两回事。

核心差别在于三条:服务器要双网卡绑两台交换机(办公室电脑只有一张网卡)、存储流量要排在业务流量前面(办公室没有存储网)、多个客户要互不可见(办公室不存在租户概念)。

读这一章的注意事项:这一章有一个「诚实的分界线」。前半部分(跨设备 Eth-Trunk + STP)是成熟、语料完整、可以直接照着配的方案;后半部分(M-LAG / DRD)是新一代方案,本书语料覆盖不全,我只讲原理和取舍,配置给骨架并明确标注待核实。请你看清哪些能直接抄、哪些只是思路。

本章会串起的前文模块:Eth-Trunk 跨设备聚合(第 5 章)→ VLAN 与 QinQ(第 3 章)→ STP(第 4 章)→ VRF 多租户(第 17 章) → QoS 与优先级(第 15 章相关)→ BFD 链路检测(第 10 章)→ 端口安全(第 9 章)→ BGP/EVPN 概念(第 12 章)。

适用版本:华为 VRP V200R019 及以上(S6730/CE 系列);H3C Comware V7(R2610 及以上)。 重要说明:M-LAG 部分本书语料仅有零散命令(dfs-group、peer-link、lacp m-lag system-id),完整配置流程无官方示例可对照;H3C DRD/IRF/EVPN 语料完全未覆盖。凡此类内容本章均明确标注,不提供未经验证的可粘贴配置。

43.2 项目背景与需求

43.2.1 这个数据中心要装什么

某互联网公司自建机房,一期 4 个机柜,需求如下:

编号 需求 具体指标
R1 服务器链路冗余 单条网线 / 单台交换机故障,服务器网络不中断
R2 带宽聚合 单台服务器要 2Gbps 以上带宽(双千兆绑定)
R3 存储流量优先 存储(iSCSI/NFS)流量不能被业务流量挤掉
R4 多租户隔离 3 个业务租户之间二层三层都不能互访
R5 高密度 单机柜 20 台服务器,要求接入层端口密度够

43.2.2 为什么「办公室那套」搬不过来

场景 办公室 数据中心
服务器网卡 1 张 2~4 张(双网卡冗余 / 存储网单独)
冗余要求 断了人骂两句 断了业务中断、赔钱
流量方向 南北向(内网上外网) 南北向 + 大量东西向(服务器之间互相传)
存储 不存在 独立的存储网,对丢包极度敏感
隔离 部门 VLAN 租户级隔离,且常需跨机柜

43.3 网络拓扑

                        ┌─────────────────────┐
                        │     核心 / 出口       │
                        │    路由器 / 防火墙    │
                        └──────────┬──────────┘
                                   │
                  ┌────────────────┴────────────────┐
                  │                                 │
        ┌─────────┴─────────┐             ┌─────────┴─────────┐
        │   接入交换机 A      │             │   接入交换机 B      │
        │   S6730-H24X6C     │             │   S6730-H24X6C     │
        │                   │             │                   │
        │  ┌─── 业务口 ───┐  │             │  ┌─── 业务口 ───┐  │
        │  │ 存储口(独立) │  │             │  │ 存储口(独立) │  │
        └──┴──────┬───────┴──┘             └──┴──────┬───────┴──┘
                 │ │                                 │ │
        ┌────────┘ └─────────┐          ┌───────────┘ └────────┐
        │ 业务网卡1  业务网卡2 │          │  业务网卡1  业务网卡2    │
        │  ┌────────────────┐ │          │  ┌────────────────┐ │
        │  │   服务器 1      │ │          │  │   服务器 N      │ │
        │  │  双网卡绑定     │ │          │  │  双网卡绑定     │ │
        │  └────────────────┘ │          │  └────────────────┘ │
        │  ┌────────────────┐ │          │                     │
        │  │ 存储网卡 ×2     │─┼──────┐   │                     │
        │  └────────────────┘ │      │   │                     │
        └─────────────────────┘      │   │                     │
                                     │   │                     │
                          ┌──────────┴───┴──────────┐          │
                          │   存储交换机(独立)      │◄─────────┘
                          │   万兆 + 大缓存          │
                          └──────────────────────────┘

【关键:每台服务器有 4 个网口 —— 2 个业务口交叉接 A/B 两台交换机,
  2 个存储口接独立存储交换机。业务网与存储网物理分离。】

43.3.1 为什么服务器要「交叉接」

一台服务器的两张业务网卡,必须分别接到 A、B 两台不同的交换机上,不能都接同一台:

  • 都接 A:A 挂了,服务器全断——冗余形同虚设
  • 交叉接 A/B:A 挂了,流量从 B 走

这就是「跨设备」的含义:冗余要覆盖到交换机这一层,而不只是网线这一层。

43.4 IP 与地址规划

用途 网段 说明
租户 A 业务 10.100.0.0/16 VRF: TENANT_A
租户 B 业务 10.101.0.0/16 VRF: TENANT_B
租户 C 业务 10.102.0.0/16 VRF: TENANT_C
存储网 192.168.100.0/24 独立物理网,独立 IP 段
管理网 10.200.0.0/16 带外管理(BMC)

存储网用 192.168 段不是巧合——这是一个「一看就知道不是业务网」的直观标记。存储网绝对不能和业务网共用网段,否则路由会打架。

43.5 关键设计决策

43.5.1 决策一:跨设备聚合,用 STP 冗余还是 M-LAG

这是本章最重要的决策,直接决定方案复杂度。

方案 原理 优点 缺点 本书语料
跨设备 Eth-Trunk + STP 服务器双网卡做 bond,两端口分别接 A/B;A、B 之间跑 STP,其中一个口被阻塞 成熟稳定;配置简单;任意型号支持 一半带宽闲置(被 STP 阻塞的那条不发数据) ✅ 完整
M-LAG(华为)/ DRD(H3C) 两台交换机对外表现为「一台」,服务器的两个口可以同时转发 带宽利用率 100%;无 STP 阻塞 配置复杂;需要同型号;有 peer-link 故障风险 ⚠️ 仅零散命令
堆叠(iStack/IRF) 两台物理上变成一台 管理简单 有分裂风险;必须同型号同版本 部分

本项目的选择:一期用「跨设备 Eth-Trunk + STP」,二期视带宽压力再评估 M-LAG。

理由很实际:

  1. 一期业务带宽 2Gbps 足够。 服务器双千兆绑定,STP 阻塞后实际可用 1Gbps,但业务峰值只有 600Mbps,用不满。花大代价去解锁那闲置的 1Gbps,收益为零。
  2. M-LAG 的配置我无法给读者一个验证过的完整示例。 这一条必须诚实——我查了本书语料,华为 M-LAG 只有 dfs-group、peer-link、lacp m-lag system-id 这些零散命令,完整流程(peer-link 接口怎么配、M-LAG 接口怎么绑、双主检测怎么设)没有官方示例。如果硬写,就会变成猜。
  3. STP 方案出问题好排查。 数据中心夜里出故障,STP 的 display stp 一眼看明白;M-LAG 的排障要复杂得多。

取舍的核心:用「闲置一半带宽」换「简单可靠 + 我能给你验证过的配置」。 这是一笔划算的买卖,尤其对中小规模数据中心。

43.5.2 决策二:存储网为什么必须物理分离

存储流量(iSCSI、NFS、分布式存储同步)有三个特点,决定了它不能和业务挤在一起:

特点 后果
对丢包极度敏感 iSCSI 丢一个包就要重传,性能断崖式下跌
突发大流量 一次虚拟机迁移或备份能瞬间打满万兆
延迟敏感 存储延迟直接影响数据库响应

所以:独立存储交换机 + 服务器独立存储网卡 + 独立 IP 段。

为什么不用 QoS 在同一张网上保障存储? 因为 QoS 只能在拥塞发生后做调度,而存储网的问题是根本不该和业务共享链路。用一个独立交换机(几万块)比在业务网上配一套复杂的 QoS(还未必调得准)更简单、更彻底。

43.5.3 决策三:多租户用 VRF 还是用 VLAN

方案 隔离层级 优点 缺点
纯 VLAN 二层广播域隔离 简单 三层路由仍可通,需 ACL 兜底
VRF 三层路由表隔离 租户间路由天然不可见 每租户一套路由配置,运维量增加
VLAN + VRF 组合 二层 + 三层都隔离 最彻底 配置最多

本项目用 VLAN + VRF 组合:每个租户有自己的一组 VLAN(二层隔离),同时绑到自己的 VRF(三层隔离)。

为什么二层也要隔离? 因为即使是同一台服务器上的两个虚拟机,如果属于不同租户、又在同一个 VLAN 里,它们之间可能发生 ARP 欺骗或广播风暴互相影响。二层隔离是租户隔离的第一道墙。

43.5.4 决策四:带宽怎么算,要不要上万兆

数据中心最容易犯的错是「凭感觉买带宽」。我们按实际业务算一遍:

流量类型 单台服务器 20 台机柜合计 说明
业务南北向 ~50Mbps 1Gbps 对外请求
业务东西向 ~200Mbps 4Gbps 服务器间调用(最大头)
存储同步 ~150Mbps 3Gbps 备份、主从同步
峰值叠加(不是简单相加) — 约 5Gbps 各峰值时间错开

接入层用千兆够不够? 单服务器千兆绑定(1Gbps 可用),业务峰值 50~250Mbps,够。这也是为什么一期不必上万兆接入。

上行到核心呢? 20 台服务器如果都跑满千兆,需要 20Gbps,但实际峰值 5Gbps。上行配 2×10GE Eth-Trunk(20Gbps)有 4 倍余量。

存储交换机为什么用万兆? 存储流量虽然平均只有 3Gbps,但突发时单次备份能打满。这里如果用千兆,一次备份要跑一整夜。存储网按「突发峰值」买带宽,业务网按「平均峰值」买——这是两类流量最大的区别。

43.5.5 决策五:VLAN 怎么分配

租户隔离不只是 VRF,二层 VLAN 也要规划清楚:

租户 VLAN 段 VRF 网关 说明
租户 A 1100~1199 TENANT_A 10.100.0.1 100 个 VLAN 够用
租户 B 1200~1299 TENANT_B 10.101.0.1
租户 C 1300~1399 TENANT_C 10.102.0.1
存储 2000 公网 — 二层独立,不做 VLAN 间路由
管理 999 公网 10.200.x.x 带外

为什么每租户给 100 个 VLAN 而不是按需分配? 因为租户扩容时不用改规划。规划时要考虑的从来不是「现在够不够」,而是「明年加 3 倍够不够」。

为什么存储网用 VLAN 2000 且不做三层? 存储网的交换机是独立的二层设备,存储服务器用 L2 直通方式访问,不经过 IP 路由——这样延迟最低、配置最简单。

43.5.6 决策六:QinQ 用在哪里

QinQ(VLAN 双层标签)在这个场景里的作用不是「扩展 VLAN 数量」,而是**「让租户的 VLAN 号不冲突」**:

  • 租户 A 内部有 VLAN 10,租户 B 内部也有 VLAN 10
  • 如果都用单层标签,两个 VLAN 10 会混在一起
  • 用 QinQ:A 的报文打上外层 VLAN 1000 + 内层 10,B 的打 2000 + 10,互不干扰

本项目一期不用 QinQ,因为租户数量少,直接给每个租户分配独立 VLAN 段(A 用 1100-1199,B 用 1200-1299)就够了。

什么时候必须用 QinQ? 租户自己带网络设备、且要求「内部 VLAN 号我说了算」的时候。这是一个「客户需求驱动」的功能,不是「技术上更高级」的功能。

43.6 完整配置(华为)

43.6.1 模块一:跨设备 Eth-Trunk 与 STP(对应第 5、4 章)

先看核心思路:服务器侧做 bond(双网卡绑定),交换机侧是两个独立的口,两台交换机之间跑 STP 防止环。

# ===== 交换机 A =====
# 服务器接入口(server1 的第一张网卡)
interface GigabitEthernet0/0/1
 description SERVER1-NIC1
 port link-type access
 port default vlan 1100
 stp edged-port enable
 quit

# ===== 交换机 B =====
# 同一台服务器的第二张网卡
interface GigabitEthernet0/0/1
 description SERVER1-NIC2
 port link-type access
 port default vlan 1100
 stp edged-port enable
 quit

关键:两台交换机之间必须有一条互联链路,并跑 STP,否则 server1 的两个口会把 A、B 连成一个环:

# A、B 之间的互联链路(也可以做成 Eth-Trunk 增加带宽)
interface Eth-Trunk10
 description A-B-INTERLINK
 mode lacp-static
 port link-type trunk
 port trunk allow-pass vlan 1100 1200 1300
 quit

interface 10GE0/0/24
 eth-trunk 10
 quit
# STP 配置:让 A 成为根桥 —— 对应第 4 章
stp mode rstp
stp root primary
stp bpdu-protection

STP 生效后的结果:服务器的一个网卡对应的口处于 Forwarding,另一个处于 Blocking。只有一条链路在转发——这就是 43.5.1 说的「一半带宽闲置」。

服务器的 bond 模式要选对:

bond 模式 行为 适用
mode=1(active-backup) 一主一备,主挂了切备 ✅ 配 STP 时用这个
mode=4(802.3ad / LACP) 两条同时转发 需要交换机支持跨设备 LACP(即 M-LAG)

mode=1 和 STP 方案是配套的:服务器只知道「一条路通」,交换机也只知道「一条路通」,两边一致。如果服务器配了 mode=4 而交换机没做 M-LAG,会出各种诡异问题。

43.6.2 模块二:VRF 多租户(对应第 17 章)

# 三个租户各建一个 VRF —— 对应第 17 章
system-view
sysname DC-ACC-A

ip vpn-instance TENANT_A
 ipv4-family
  route-distinguisher 65010:100
  vpn-target 65010:100 both
  quit
 quit
ip vpn-instance TENANT_B
 ipv4-family
  route-distinguisher 65010:200
  vpn-target 65010:200 both
  quit
 quit
ip vpn-instance TENANT_C
 ipv4-family
  route-distinguisher 65010:300
  vpn-target 65010:300 both
  quit
 quit
# 租户 A 的网关接口
vlan 1100
 quit
interface Vlanif1100
 description TENANT_A-GW
 ip binding vpn-instance TENANT_A
 ip address 10.100.0.1 255.255.0.0
 quit

注意 vpn-target ... both 是本租户自闭环(导出=导入),这样租户 A 的路由只在 A 的 VRF 里转,不会泄露给 B/C。

43.6.3 模块三:存储网优先的 QoS(对应第 15 章延伸)

存储网的物理分离已经解决大问题,但接入交换机内部仍要保证存储口的优先级——因为存储交换机的上行可能和业务交换机共享核心:

# 给存储流量打高优先级 —— 华为 QoS
# 存储网段 192.168.100.0/24
acl number 3900
 rule 5 permit ip source 192.168.100.0 0.0.0.255
 quit

traffic classifier CLS_STORAGE operator or
 if-match acl 3900
 quit
traffic behavior BEH_STORAGE
 remark local-precedence 1
 quit
traffic policy POL_STORAGE
 classifier CLS_STORAGE behavior BEH_STORAGE
 quit

interface 10GE0/0/20
 description TO-STORAGE-SW
 traffic-policy POL_STORAGE inbound
 quit

remark local-precedence 1 表示存储报文内部优先级设为 1(数值越小越优先,0 最高)。业务流量默认优先级是 0 的话要调整——实际做法是给业务流量一个较低的默认优先级,让存储的相对优先级凸显出来。

43.6.4 模块四:BFD 链路检测(对应第 10 章)

数据中心最怕「链路假死」——接口是 up 的,但实际不通(比如中间经过的光传输设备故障)。BFD 能在毫秒级发现:

# 在 A-B 互联链路上跑 BFD —— 对应第 10 章
bfd
 quit

interface Eth-Trunk10
 bfd min-tx-interval 100 min-rx-interval 100 detect-multiplier 3
 quit

⚠ 待核实:待核实华为在 Eth-Trunk/物理口上直接启用 BFD(bfd min-tx-interval)的准确命令形式与适用范围,语料中检索到的多为 bfd bind peer-ip 静态会话形式,需按具体版本命令参考确认

静态 BFD 会话的形式(语料中已核实):

# 静态 BFD 会话:与对端建立检测
bfd trackbfd bind peer-ip 10.255.0.2 interface 10GE0/0/24
 discriminator local 1
 discriminator remote 2
 commit
 quit

discriminator 是本端/对端的会话标识,两端必须配反(本端的 local 等于对端的 remote)。commit 提交后才生效——这一步最容易漏。

43.6.5 模块五:端口安全(对应第 9 章)

数据中心里服务器的 MAC 是固定的,端口安全主要是防「乱插」:

# 服务器端口:只允许一个 MAC(服务器只有一块网卡在这个口)
interface GigabitEthernet0/0/1
 port-security enable
 port-security max-mac-num 1
 quit

⚠ 虚拟化环境的坑:如果服务器上跑虚拟机、且网卡做了混杂模式,一个物理口可能会学习到成百上千个 MAC。这种情况下必须放宽 max-mac-num,或者干脆不开端口安全——否则一开就触发保护断网。详见 43.9 的踩坑案例。

43.6.6 模块六:服务器侧配置(bond 与 MTU)

数据中心不是只有交换机要配,服务器侧的配置错了,网络侧再对也没用。

# Linux 服务器:业务网卡做 active-backup bond(配 STP 方案的唯一正确选择)
# /etc/netplan/01-netcfg.yaml
network:
  version: 2
  ethernets:
    ens1f0: {}
    ens1f1: {}
  bonds:
    bond0:
      interfaces: [ens1f0, ens1f1]
      parameters:
        mode: active-backup
        primary: ens1f0
        miimon: 100
        fail_over_mac: none
      addresses: [10.100.1.10/16]
      gateway4: 10.100.0.1

三个参数是关键:

参数 值 为什么
mode active-backup 配 STP 方案必须用这个,见 43.5.1
miimon 100 每 100ms 检测一次链路,比默认的慢检测快得多
fail_over_mac none 必须设 none,否则切换后 MAC 会变,交换机 MAC 表要重学

fail_over_mac 这一条特别容易踩:默认值是 active,切换后网卡 MAC 会跟着 active 网卡变,导致交换机的 MAC 表要重新学习,切换时间从毫秒级变成秒级。

存储网卡单独配置,不做 bond(存储本身由存储交换机冗余):

# 存储网卡:独立 IP,不做 bond
network:
  ethernets:
    ens2f0:
      addresses: [192.168.100.10/24]

MTU 要不要开 Jumbo Frame? 存储网建议 9000(大包减少 CPU 开销),但必须端到端一致——服务器、交换机、存储设备全部 9000,任何一处是 1500 就会出问题。业务网保持 1500,因为要访问互联网。

43.6.7 模块七:STP 收敛优化(对应第 4 章延伸)

默认 RSTP 的收敛时间是秒级,数据中心要求更快。三个优化手段:

# 1. 边缘端口(接服务器的口不该参与 STP 计算)
interface GigabitEthernet0/0/1
 stp edged-port enable
 quit

# 2. 关掉 RSTP 的提案/协商,改用边缘端口快速转发
stp mode rstp

# 3. 减少 BPDU 发送间隔(默认 2 秒,改小让收敛更快)
stp timer hello 100

stp timer hello 100 的单位是百分之一秒(即 1 秒)。但要小心:Hello 时间太短,网络抖动时会产生大量 BPDU,反而可能引起误收敛。1 秒是经验下限,不要再往下调。

⚠ 边缘端口的隐患:设成边缘端口后,STP 不再在这个口上防环。如果服务器的两个网卡都接到了同一台交换机(配置错误),边缘端口不会阻塞其中一条,形成环路。所以必须确认服务器双网卡真的接到了两台不同交换机。

43.7 完整配置(H3C)

43.7.1 跨设备聚合与 STP(对应第 5、4 章)

# H3C 的服务器接入口
interface GigabitEthernet1/0/1
 port access vlan 1100
 stp edged-port
 quit

# A、B 互联
interface Bridge-Aggregation10
 link-aggregation mode dynamic
 port link-type trunk
 port trunk permit vlan 1100 1200 1300
 quit
interface Ten-GigabitEthernet1/0/24
 port link-aggregation group 10
 quit

# STP 根桥
stp mode rstp
stp root primary

43.7.2 VRF 多租户(对应第 17 章)

ip vpn-instance TENANT_A
 quit
interface Vlan-interface1100
 ip binding vpn-instance TENANT_A
 ip address 10.100.0.1 16
 quit

43.7.3 存储端口镜像(H3C,对应第 18 章)

存储问题最难查,镜像到分析仪是关键手段:

mirroring-group 1 local
mirroring-group 1 mirroring-port Ten-GigabitEthernet1/0/20 both
mirroring-group 1 monitor-port Ten-GigabitEthernet1/0/30

43.8 进阶方案:M-LAG 完整配置与取舍

前面 43.6 / 43.7 给的是 STP 方案——能用、可靠,但一半带宽闲置。

这一节给 M-LAG 方案:让两台交换机对外「假装成一台」,两条链路同时转发。配置是完整的、可照做的(取自华为官方《CloudEngine 典型配置案例》的 M-LAG 配置示例)。

43.8.1 M-LAG 解决什么问题

STP 方案为什么只有 50% 带宽?因为 STP 要防环,只能让一条路转发。

M-LAG 的思路是:两台设备配对,对外表现为一个逻辑设备。服务器看来只有一个对端,就不存在环,两条链路可以同时转发。

【STP 方案】                    【M-LAG 方案】
服务器 ──┬── SW-A ──┐          服务器 ──┬── SW-A ──┐
         └── SW-B ──┴─ 环!              └── SW-B ──┴─ 不环
         SW-B 的这两条必须阻塞         两条同时转发
         带宽利用 50%                  带宽利用 100%

43.8.2 M-LAG 的五个部件

先认名字,配置时每一步对应一个部件:

部件 作用 没配会怎样
DFS Group 两台设备的配对组,协商主备角色 两台设备各干各的
peer-link 两台之间的互联链路,同步 MAC/ARP 表 M-LAG 成员口起不来
M-LAG 成员口 对下的聚合口(就是服务器接的那个 Eth-Trunk) 服务器只能单归
双主检测(DAD) peer-link 断了以后用心跳链路判断谁是主 peer-link 一断就双主
V-STP 让两台设备在 STP 里表现为一个节点 与 Server 侧 STP 对接时出环

43.8.3 华为 M-LAG 完整配置(官方示例流程)

场景:两台 Leaf(DeviceB、DeviceC)做 M-LAG,服务器双归接入。

第一步:配双主检测链路(心跳)

两台设备之间要有一条独立的三层通路,用于 peer-link 故障时判断谁是主:

# 华为:在 DeviceB 上配双主检测(DeviceC 类似,IP 对调)
sysname DeviceB

interface Eth-Trunk 2
 mode lacp-static
 trunkport 100ge 1/0/8 to 1/0/9
 port link-type trunk
 quit

interface Vlanif 100
 ip address 10.200.1.1 24
 quit

第二步:配 DFS Group(配对组)

# 华为:DFS Group 1,指定双主检测的源和目的 IP
dfs-group 1
 dual-active detection source ip 10.200.1.1 peer 10.200.2.1
 authentication-mode hmac-sha256 password YourP@ssw0rd
 quit

两个关键点:

  • source ip 是本机心跳地址,peer 是对端心跳地址,两台设备要互相指向
  • authentication-mode 的密码两台必须一致,否则 DFS 协商不起来

第三步:配 peer-link

peer-link 是两台设备之间的专用链路,一定要用高带宽(传的是 MAC/ARP 全部表项):

# 华为:peer-link 就是一条 Eth-Trunk,末尾加 peer-link 编号
interface Eth-Trunk 1
 mode lacp-static
 trunkport 100ge 1/0/4
 trunkport 100ge 1/0/5
 peer-link 1
 quit

注意:peer-link 1 这个编号要和 DFS Group 号一致(这里是 1 对 1)。换了号就绑不上。

第四步:使能 V-STP

# 华为:V-STP(Virtual STP),让两台设备在 STP 里表现为一个节点
stp v-stp enable

为什么需要:如果服务器侧接的是支持 STP 的设备,两台 Leaf 各自算生成树就会出环。V-STP 让它们在 STP 看来是一台,从根上破环。

第五步:配 M-LAG 成员接口

这才是服务器实际接入的那个口:

# 华为:M-LAG 成员口——在 Eth-Trunk 下指定 dfs-group 和 m-lag 编号
interface Eth-Trunk 10
 mode lacp-static
 port link-type trunk
 lacp mixed-rate link enable
 trunkport 100ge 1/0/2
 trunkport 100ge 1/0/3
 dfs-group 1 m-lag 1
 quit

dfs-group 1 m-lag 1 的读法:前面的 1 是 DFS Group 号(和第二步对应),后面的 1 是这个 M-LAG 组自己的编号。如果你有多组服务器,就是 dfs-group 1 m-lag 2、dfs-group 1 m-lag 3……每组的 m-lag 编号不能重复。

第六步:配 Monitor Link(上行联动)

这一步最容易被漏,但漏了会出大问题:

# 华为:Monitor Link——上联口 down 时,自动把下联 M-LAG 成员口也 down 掉
monitor-link group 1
 port 100ge 1/0/1 uplink
 port eth-trunk 10 downlink 1
 quit

为什么必须有:如果 Leaf 的上行链路断了,而 M-LAG 成员口还 up,服务器发来的流量会被送到这台 Leaf,然后无路可走被丢弃。Monitor Link 让上行一断,下行跟着 down,服务器那边看到链路断了,自动切到另一台 Leaf——这才是真正的冗余。

第七步:验证

# 华为:验证 M-LAG 状态
display dfs-group 1 m-lag

# 看节点角色和 M-LAG 成员口状态
display dfs-group 1 node 1 m-lag brief
display dfs-group 1 node 2 m-lag brief

期望看到:

  • 两台设备的 DFS Group 状态都是 Master(M-LAG 是双主活,没有备)
  • M-LAG 成员口状态 UP
  • peer-link 状态 UP

43.8.4 H3C 的对应方案

H3C 在数据中心有两条技术路线:

路线 定位 与华为对应
IRF 把多台设备堆叠成一台(单控制面) 华为 iStack / CSS
DRD 跨设备分布式聚合(双控制面) 华为 M-LAG

H3C 侧的 M-LAG 类配置在《数据中心配置指导》的「M-LAG 配置」章节里,本书语料对 DRD 的覆盖不完整,所以这里只给定位说明,不给配置命令。

⚠ 待核实:H3C CR16000-F / S12500 系列的 DRD 完整配置流程(M-LAG 域、peer-link、成员口绑定)在本书语料中未完整覆盖,请以 H3C《数据中心配置指导》对应版本为准

选型建议:

  • IRF 成熟稳定、运维简单,但有分裂风险(控制面合一,脑裂时两边都以为自己是全部)
  • DRD 双控制面、无分裂风险,配置比 IRF 复杂
  • 一期 4 个机柜的规模,IRF 或 STP 方案都够用;到几十个机柜再考虑 DRD

43.8.5 M-LAG 的代价(为什么不是无脑选它)

代价 说明
peer-link 故障风险 peer-link 断了,两台设备可能都认为自己是主,触发双主
配置一致性要求严格 两台设备的 M-LAG 相关配置必须完全一致,有 Type 1 / Type 2 一致性检查
必须同型号同版本 异构设备做不了
排障复杂度上升 出问题要同时在两台设备上看状态

关于双主的风险,官方文档有一段很重要的说明:

M-LAG 组网场景,peer-link 故障但双主检测心跳状态正常时,会触发 M-LAG 一台设备接口 Error-Down。

意思是:peer-link 断了,系统会主动把其中一台的接口 down 掉(“断臂求生”),避免双主造成的 MAC 漂移和流量黑洞。

所以你会看到这样的现象:拔掉 peer-link,一半服务器断了——这不是故障,是设计。修好 peer-link,接口自动恢复。

这正是为什么第四步的双主检测链路必须配:没有它,peer-link 断了就是真的双主,两台都转发,MAC 表全乱。

43.8.6 M-LAG Lite:一个更轻的选择

如果你的场景不需要那么强的隔离性,华为还提供了一个更轻的方案:M-LAG Lite。

官方原文:

跨设备链路聚合(M-LAG Lite)方式配置,能够确保多台设备间控制面的解耦,且设备间无须配置心跳链路来同步协议报文即可达到双活转发的目的。

关键区别:M-LAG Lite 不需要 DFS Group、不需要 peer-link、不需要双主检测。它是靠"两台设备的 LACP 系统 ID 配成一样"来实现的:

# 华为:M-LAG Lite——只要两台设备的 LACP system-id 相同
interface Eth-Trunk 10
 mode lacp-static
 lacp system-id 00e0-fc00-0000
 trunkport 100ge 1/0/3
 port link-type trunk
 port trunk allow-pass vlan 100
 quit
标准 M-LAG M-LAG Lite
需要 DFS Group ✅ ❌
需要 peer-link ✅ ❌
需要双主检测 ✅ ❌
控制面 解耦 解耦
适用版本 V200R005+ V300R020C00+
典型场景 大规模、要求高可靠 接入层、设备独立升级

取舍:Lite 配置简单、设备可独立升级;但没有 peer-link 就没有 MAC 表同步,某些跨设备转发场景性能不如标准 M-LAG。小规模用 Lite,大规模用标准 M-LAG。

43.8.7 EVPN 在数据中心的位置

EVPN(Ethernet VPN)常被当作数据中心的「终极方案」,但在本项目场景里偏重且暂不需要。

EVPN 解决的是「大二层 + 多租户 + 自动化」:

  • 虚拟机在机柜间迁移时 IP 和 MAC 不变(大二层)
  • 租户隔离用 VXLAN 的 VNI 区分(比 VLAN 灵活)
  • 配置通过 BGP 自动下发(不用每台设备手工配)

本项目一期 4 个机柜、3 个租户,用 VLAN + VRF 完全够。 EVPN 的价值在「几百台服务器、几十个租户、频繁迁移」的规模。技术选型要看规模,不是看热度。

43.8.8 演进路径:从 STP 到 M-LAG 该怎么走

别一步跨过去。建议四步走:

阶段 做法 什么时候到下一阶段
一、STP 当前方案,一半带宽闲置 带宽利用率持续 >70%
二、M-LAG Lite 配 LACP system-id,去掉 STP 阻塞 需要设备独立升级
三、标准 M-LAG 加 DFS Group + peer-link + 双主检测 规模扩大、需要 MAC 同步
四、EVPN VXLAN + BGP EVPN 租户数 >20 或虚拟机频繁迁移

上 M-LAG 的四项硬指标(四项都满足才值得上):

  1. 带宽确实是瓶颈(不是 CPU、不是存储 IO)
  2. 两台设备可以同型号同版本
  3. 有人能维护(M-LAG 排障比 STP 难一个量级)
  4. 能接受 peer-link 故障时"断臂求生"

43.8.9 一道思考题:为什么数据中心接入层不用 VRRP

前面第 7 章花了整章讲 VRRP。但在数据中心接入层,你很少看到 VRRP。

为什么?因为架构变了:

园区网 数据中心
网关位置 接入层(每栋楼的核心) 汇聚/核心层(Spine)
接入交换机角色 三层网关 + VRRP 纯二层转发
网关冗余怎么做 VRRP 双机 Spine 层用 ECMP / 路由冗余

结论:数据中心"三层到边"(Leaf 做网关)时才需要网关冗余,那是 M-LAG + VRRP/ARP 代理的组合;而传统"核心做网关"的架构里,接入层就是纯二层,不需要 VRRP。

这就是为什么学架构比背命令重要——同一套设备,架构不同,该用哪个功能完全不同。

43.9 验证清单

序号 验证项 华为命令 H3C 命令 期望
1 服务器 bond 双链路 服务器上 cat /proc/net/bonding/bond0 同左 一 active 一 backup
2 STP 拓扑正常 display stp display stp A 为根桥,B 的口阻塞
3 租户三层隔离 ping -vpn-instance TENANT_A 10.101.0.1 同左 不通
4 租户二层隔离 租户 A 机器 ping 租户 B 机器 同左 不通
5 存储网独立 从业务网 ping 192.168.100.1 同左 不通(不同网)
6 存储 QoS 生效 display traffic policy statistics interface 10GE0/0/20 inbound 对应命令 存储报文高优先级
7 BFD 会话 Up display bfd session all display bfd session State: Up
8 拔线实测 拔服务器网卡 1 同左 业务中断 < 1 秒

第 8 项必须实测,这是唯一能证明「冗余真的有效」的方式。我们实测时发现一个问题:服务器 bond 切换很快(毫秒级),但交换机侧 STP 收敛慢,见 43.10 坑二。

43.10 本项目踩过的坑

坑一:服务器 bond 配了 mode=4,交换机没做 M-LAG,网络时通时断

现象:服务器装好后 ping 网关有 30% 丢包,但不规律,有时候连着几个小时正常。

原因:服务器侧用 mode=4(802.3ad LACP),会同时从两张网卡发包;而交换机侧只是两个独立的 access 口 + STP,STP 会把其中一个口阻塞。结果:服务器从被阻塞的口发出的包全丢了。

解决:服务器 bond 改成 mode=1(active-backup),只从一张网卡发。

教训:服务器 bond 模式和交换机聚合方案必须配套。 配了 mode=4 就一定要交换机侧做跨设备 LACP(M-LAG),否则只能 mode=1。

坑二:拔一根网线,业务断了 30 秒

现象:设计要求「拔线中断 < 1 秒」,实测断了 30 秒。

原因:服务器 bond 毫秒级就切到了备用网卡,但交换机侧还没发现原来的口断了——那个口还显示 up,STP 也没收敛。数据从一个「实际断了但状态还 up」的链路发出去,全丢。

解决:交换机侧开启链路的快速检测,并把服务器接入口设为边缘端口(跳过 STP 监听/学习)。

教训:「冗余」不等于「快速冗余」。 服务器切得快,网络不切,等于没切。要两端都快。

坑三:开了端口安全,跑虚拟机的服务器批量掉线

现象:给所有服务器口配了 port-security max-mac-num 1,当天下午 20 台跑虚拟机的服务器集体掉线。

原因:虚拟机的虚拟网卡流量从物理口出去,一个物理口学到上百个 MAC,超过 max-mac-num 1 触发保护。

解决:虚拟化服务器的口改成 max-mac-num 256,或者关掉端口安全。

教训:端口安全的默认假设是「一个口一台终端」,这在虚拟化环境不成立。 配之前先问清楚这台服务器跑不跑虚拟机。

坑四:存储网和业务网用了同一个网段,路由打架

现象:存储性能只有预期的 20%。

原因:采购时图省事,把存储网也配成 10.100.0.0/16(和租户 A 同段)。结果服务器访问存储时,按最长匹配走了业务网关,存储流量绕到了业务交换机上,和业务抢带宽。

解决:存储网改成独立的 192.168.100.0/24。

教训:存储网必须用「一眼能看出不是业务网」的地址段。 这是我坚持用 192.168 段的原因。

43.11 小结

43.11.1 本章覆盖的前文模块

模块 对应章节 在本案例中的作用
Eth-Trunk 跨设备聚合 第 5 章 服务器双网卡 + A/B 互联
STP/RSTP 第 4 章 防 A-B 之间的环
VLAN 与 QinQ 第 3 章 租户二层隔离 / 可选扩展
VRF 多租户 第 17 章 租户三层隔离
QoS 优先级 第 15 章相关 存储流量优先
BFD 第 10 章 链路假死检测
端口安全 第 9 章 防乱插(注意虚拟化例外)
BGP/EVPN 概念 第 12 章 进阶方案的定位说明
流量镜像 第 18 章 存储问题抓包

43.11.2 四条结论

  1. 「跨设备」的冗余要覆盖到交换机这一层。 服务器双网卡接同一台交换机,等于没有冗余。
  2. 服务器 bond 模式和交换机方案必须配套(mode=1 配 STP,mode=4 配 M-LAG)。这是最容易出错的一处。
  3. 存储网物理分离比 QoS 更有效。 能用独立交换机解决的,不要靠 QoS 硬调。
  4. 技术选型看规模。 4 个机柜用 VLAN+VRF 足够,EVPN 是给几十个租户准备的。

43.11.3 数据中心排障的三个入口

数据中心出问题时,先判断属于哪一类,再对症下药:

症状 最可能原因 第一命令 判断依据
单台服务器时通时断 bond 模式与交换机不匹配 服务器 cat /proc/net/bonding/bond0 看 Mode 字段是不是 802.3ad
整机柜不通 A-B 互联或 STP 拓扑异常 display stp brief 看根桥是否在预期位置
存储慢但业务正常 存储网被业务抢带宽 display interface 10GE0/0/20 看接口利用率是否接近 100%
租户间能互访 VRF 或 VLAN 配错 display ip vpn-instance 检查接口是否正确绑定
全部服务器一起抖 环路或广播风暴 display cpu-usage、display interface CPU 高 + 接口流量异常上涨

「整机柜不通」和「单台服务器不通」是两个完全不同的问题:整机柜不通要看 A/B 互联和 STP,单台不通要看服务器 bond 和端口配置。先按「影响范围」分类,能省一半时间。

43.11.4 关于本文诚实边界的说明

本章的 M-LAG / DRD / EVPN 三节,只讲原理和取舍,没有给可粘贴的完整配置。原因是本书语料中这些新特性覆盖不全:

  • 华为 M-LAG:只有 dfs-group、peer-link、lacp m-lag system-id 等零散命令,无完整流程示例
  • H3C DRD / IRF / EVPN:完全未覆盖

这是刻意的取舍。 给一个「看起来完整但一半靠猜」的配置,读者照着敲会得到一堆报错,然后怀疑整本书;给一个「原理讲清楚、明确说明配置需查官方文档」的章节,读者至少知道该往哪走。宁可承认没把握,也不编。

如果你要做 M-LAG 项目,建议的路径是:先按本章的 STP 方案把一期跑起来 → 确认带宽确实成为瓶颈 → 再按厂商的《数据中心配置指导》逐版本验证 M-LAG 配置 → 上生产前做完整的 peer-link 故障演练。


关于本书:《华为 / H3C 网络设备典型功能配置详解》—— 面向国内高校/企业网络环境, 华为 VRP 与 H3C Comware 双厂商并排配置的实操教材,共 43 章。 全书所有命令尽量有官方出处,查不到的显式标注「待核实」。 返回系列目录