本文以“两台服务器 A1/A2 + 25G 网卡 + bond1 + VXLAN 单播”的测试组网为背景,系统梳理普通网络(无 VLAN、无 VXLAN)、VLAN、VXLAN三种网络模型的原理、报文结构、搭建命令和性能差异,并给出可直接落地的配置与排障步骤。
一、先给结论
| 模型 | 一句话 | 报文额外开销 | 隔离规模 | 典型场景 |
|---|---|---|---|---|
| 普通网络 | 裸以太网帧直接转发 | 0 | 无隔离(一个广播域) | 直连测试、管理网、小网络 |
| VLAN | 二层帧插 4 字节 802.1Q Tag | +4 B | 4094 | 企业接入层网段隔离 |
| VXLAN | 二层帧封装进 UDP,跑在三层上 | +50 B(IPv4) / +70 B(IPv6) | 约 1600 万 | 云/数据中心 Overlay |
核心关系:VXLAN 不是替代普通网络,而是叠加在普通网络(underlay)之上的逻辑隧道;VLAN 可以出现在 underlay 物理链路上,与 VXLAN 分层共存。
二、三种网络模型是什么
2.1 普通网络(无 VLAN、无 VXLAN)
最朴素的二层网络。业务报文就是原始以太网帧,交换机按 MAC 表直接转发。
[以太网头 14B][IP头 20B][TCP/UDP头][业务数据]
没有隔离概念,所有设备在一个广播域
配置最简单,性能最好(无额外开销)
规模一大,广播风暴、地址冲突问题突出
2.2 VLAN(802.1Q)
在以太网帧的源 MAC 之后插入4 字节 802.1Q Tag,用 12 位 VLAN ID 划分广播域。
[以太网头 14B][VLAN Tag 4B][IP头 20B][TCP/UDP头][业务数据]
最多 4094 个 VLAN(0 和 4095 保留)
仍受物理二层域限制,跨三层需要路由
交换机端口分Access(单 VLAN、不打 Tag)和Trunk(多 VLAN、带 Tag)
2.3 VXLAN(Overlay)
把完整的二层以太网帧封装进 UDP 报文,在三层网络上传输。两端是VTEP(隧道端点),用 24 位VNI标识网络。
[外层Eth 14B][外层IP 20B][UDP 8B][VXLAN 8B][原始以太网帧(含内层IP/TCP)]
VNI 约 1600 万个,隔离能力远超 VLAN
可跨三层路由,突破物理二层域边界
封装开销大,对 MTU 敏感
对端发现方式:单播(静态 remote)/ 组播 / 头端复制 / EVPN
三、报文结构逐层对比
以承载一个普通 IP 报文为例:
① 普通网络 ┌────────┬────────┬──────────┬──────────┐ │ Eth 14 │ IP 20 │ TCP/UDP │ Payload │ └────────┴────────┴──────────┴──────────┘ ② VLAN ┌────────┬──────────┬────────┬──────────┬──────────┐ │ Eth 14 │ VLAN 4 │ IP 20 │ TCP/UDP │ Payload │ └────────┴──────────┴────────┴──────────┴──────────┘ ③ VXLAN(无 VLAN) ┌────────┬────────┬────────┬────────┬─────────────────────────┐ │ Eth 14 │ IP 20 │ UDP 8 │VXLAN 8 │ 原始以太网帧(含内层IP/TCP) │ └────────┴────────┴────────┴────────┴─────────────────────────┘ 外层头(underlay) 内层(overlay 原始帧) ④ VXLAN + VLAN ┌────────┬──────────┬────────┬────────┬────────┬─────────────────────────┐ │ Eth 14 │ VLAN 4 │ IP 20 │ UDP 8 │VXLAN 8 │ 原始以太网帧 │ └────────┴──────────┴────────┴────────┴────────┴─────────────────────────┘
MTU 计算表(underlay 物理链路 MTU 建议值):
| 场景 | 封装开销 | 建议 MTU |
|---|---|---|
| 普通网络 | 0 | 1500 |
| VLAN | 4 B | 1504+ |
| VXLAN(IPv4) | 50 B | ≥1550 |
| VXLAN(IPv6) | 70 B | ≥1570(建议1600) |
| VXLAN + VLAN(IPv4) | 54 B | ≥1560 |
| VXLAN + VLAN(IPv6) | 74 B | ≥1600 |
⚠️ MTU 不调大,VXLAN 封装报文会分片,TCP 吞吐暴跌、UDP 丢包率飙升——这是 VXLAN 测试最常见的“性能杀手”。
四、搭建实操
以下以两台服务器A1 / A2、网口bond1、underlay 地址192.168.1.11/22、overlay 地址172.16.1.11/22为例。
4.1 普通网络(直连,无 VLAN 无 VXLAN)
服务器 A1:
ip addr add 192.168.1.11/24 dev bond1 ip link set bond1 up服务器 A2:
ip addr add 192.168.1.22/24 dev bond1 ip link set bond1 up验证:
ping 192.168.1.22 # A1 上执行
交换机(若接交换机):四个口配 Access 同 VLAN:
interface 25GE1/0/9 port link-type access port default vlan 10 undo shutdown
4.2 VLAN 网络
方式 A:Access(服务器不打 Tag,推荐基准测试)
交换机(四个口一致):
vlan 10 interface 25GE1/0/9 port link-type access port default vlan 10 undo shutdown
服务器:与 4.1 完全相同,underlay 地址直接配 bond1,服务器无感知 VLAN。
方式 B:Trunk + 服务器打 Tag
交换机(四个口一致):
vlan 10 interface 25GE1/0/9 port link-type trunk port trunk allow-pass vlan 10 port trunk pvid vlan 10 # 关键:PVID 必须是 10 undo shutdown
服务器 A1:
ip link add link bond1 name bond1.10 type vlan id 10 ip addr add 192.168.1.11/24 dev bond1.10 ip link set bond1.10 up服务器 A2:
ip link add link bond1 name bond1.10 type vlan id 10 ip addr add 192.168.1.22/24 dev bond1.10 ip link set bond1.10 up⚠️经典坑:Trunk 口
pvid vlan 1+allow-pass vlan 10,服务器不打 Tag → 帧被打上 VLAN 1 但不在 allow-pass 列表 →被丢弃。必须让 PVID 与 allow-pass 的 VLAN 一致,或服务器侧打 Tag。
4.3 VXLAN 网络(单播模式)
VXLAN 单播= 用remote参数静态指定对端 VTEP 的 underlay IP,封装后的 UDP 报文一对一单播发出。不依赖组播/EVPN,点对点最简单。
服务器 A1:
# 1. 创建 VXLAN 接口:VNI 100,对端 underlay 192.168.1.22,出口 bond1
服务器 A2(remote
ip link add vxlan100 type vxlan id 100 remote 192.168.1.22 dev bond1 dstport 4789 ip link set vxlan100 up 2. 创建网桥 br0 ip link add br0 type bridge ip link set br0 up 3. vxlan100 和 bond1 桥接到 br0 ip link set vxlan100 master br0 ip link set bond1 master br0 4. overlay 地址配在 br0 ip addr add 172.16.1.11/24 dev br0指向 A1,其余对称):
ip link add vxlan100 type vxlan id 100 remote 192.168.1.11 dev bond1 dstport 4789 ip link set vxlan100 up ip link add br0 type bridge ip link set br0 up ip link set vxlan100 master br0 ip link set bond1 master br0 ip addr add 172.16.1.22/24 dev br0💡 顺序细节:
ip link set bond1 master br0之后,underlay 地址192.168.1.x要配在bond1上(或 bond1 的 VLAN 子接口上),且 bond1 加入网桥后仍可保留 IP(Linux 桥允许成员口带 IP,但更推荐把 underlay 配在独立接口或 bond1 上并开启bridge vlan相关设置;测试环境直接配 bond1 即可)。
验证顺序:
# 1. 先确认 underlay 互通 ping 192.168.1.22 2. 再确认 overlay 互通(说明 VXLAN 隧道 OK) ping 172.16.1.22 3. 查看 VXLAN 接口详情 ip -d link show vxlan100 应看到 vxlan id 100 ... remote 192.168.1.22 ... dev bond1 ... dstport 4789
关键参数对照:
| 参数 | 含义 | 注意 |
|---|---|---|
id 100 | VNI | 两端必须一致 |
remote | 对端 VTEP 的underlayIP | 写对端 bond1 地址,不是br0 地址 |
dev bond1 | 本机出口网口 | 写本机聚合口,不是物理成员口 |
dstport 4789 | 目的 UDP 端口 | 两端一致;默认 8472/4789 视内核 |
五、三种模型对比总表
| 维度 | 普通网络 | VLAN | VXLAN |
|---|---|---|---|
| 作用层 | 二层裸转发 | 二层(插 Tag) | Overlay,跑在三层 |
| 隔离标识 | 无 | VLAN ID(12 位,4094 个) | VNI(24 位,~1600 万) |
| 报文开销 | 0 | +4 B | +50 B(IPv4) / +70 B(IPv6) |
| MTU 要求 | 1500 | ≥1504 | ≥1550 / ≥1600 |
| 跨三层传二层帧 | ❌ | ❌ | ✅ 核心能力 |
| 交换机配置 | Access 同 VLAN | Access / Trunk 配置 | 仅需普通转发 + MTU 调大 |
| 服务器配置 | 配 IP | Access 无感 / Trunk 加 Tag | 创建 vxlan 接口 + 网桥 + overlay IP |
| 配置复杂度 | ★ | ★★ | ★★★★ |
| 排障难度 | 低 | 中 | 高(分段排查) |
| 25G 吞吐 | 接近线速 | 略降(<1%) | 降幅取决于封装/MTU/网桥,需实测 |
| 典型场景 | 直连测试、管理网 | 企业接入层隔离 | 云/数据中心租户 Overlay |
六、性能测试实践(结合 25G + bond1 + VXLAN 用例)
6.1 测试拓扑
A2 (client) A1 (server) iperf/netperf client iperf/netperf server │ │ br0 172.16.1.22/24 br0 172.16.1.11/24 ← overlay 测试地址 │ │ vxlan100 (VNI 100, remote 192.168.1.11) vxlan100 (VNI 100, remote 192.168.1.22) │ 封装为 UDP 4789 │ bond1 192.168.1.22/24 ←──── 25G ──────→ bond1 192.168.1.11/24 ← underlay │ │ [交换机 Access VLAN 10,端口 MTU ≥1600] [交换机 Access VLAN 10]
6.2 测试步骤(分层递进,便于定位)
基线:普通网络直跑
bond1 上直接配 underlay IP,跑 iperf,确认 25G 基础吞吐正常
加 VXLAN
创建 vxlan100 + br0,overlay ping 通后跑 iperf,对比基线的性能损耗
换 IPv6
underlay/overlay 换 IPv6,重复 1~2。注意封装开销从 50B 变 70B,MTU 要求更高
多进程/多流
iperf
-P n(n=1,2,4,8…);netperfUDP_STREAM改 server/client 进程数,记录丢包率 <1% 时的稳定吞吐
(仅 100G)Bond4 双端口多流
25G 卡跳过此步;若要做,交换机必须配 LACP Eth-Trunk
6.3 常用命令
(A1 server) iperf -s # TCP 吞吐(A2 client,n 进程数) iperf -c 172.16.1.11 -P 4 -t 60 # UDP 吞吐(A1 server) netperf # UDP 吞吐(A2 client) netperf -H 172.16.1.11 -l 60 -t UDP_STREAM
6.4 25G 卡特别说明
方案中步骤 7(Bond4 双端口多流)仅针对 100G 网卡,25G 卡不执行。
因此 25G 卡测试不需要交换机配 LACP,Bond1 主备模式直连或 Access 接入即可。
若强行测 Bond4,则必须有支持 LACP 的交换机并配置 Eth-Trunk。
七、常见坑与排障清单
7.1 配置类
| 现象 | 可能原因 | 排查 |
|---|---|---|
| underlay ping 不通 | 交换机 VLAN/PVID 不匹配;MTU 不够 | display port vlan;确认 Access/Trunk 与服务器是否打 Tag 配套 |
| Trunk 接不打 Tag 的服务器丢包 | PVID ≠ allow-pass VLAN | PVID 改成目标 VLAN,或服务器打 Tag |
| VXLAN 接口创建报错 | dev接口不存在或未 up | ip link show bond1;确认先 up 再创建 |
| overlay ping 不通 | 对端没配 vxlan;VNI/dstport 不一致;remote 写错 | 两端ip -d link show vxlan100对照 |
7.2 性能类
| 现象 | 可能原因 | 处理 |
|---|---|---|
| VXLAN 吞吐远低于基线 | MTU 未调大导致分片 | 交换机端口 + 服务器 bond1 MTU ≥1560/1600 |
| UDP 丢包率高 | 流控未开、MTU 分片、CPU 软封装瓶颈 | 开流控;调 MTU;确认网卡 VXLAN offload |
| IPv6 比 IPv4 慢 | 封装开销 70B vs 50B,MTU 余量更紧 | MTU 提到 1600;属正常现象 |
| 多进程吞吐不线性 | 单流受限于单核/单队列 | 调 RSS/多队列;确认-P与队列匹配 |
7.3 排障口诀
先 underlay,再 overlay,最后业务。
underlay 不通查 VLAN/MTU/链路;overlay 不通查 VXLAN 参数;都通了再跑 iperf/netperf。
八、总结
普通网络是基线:裸帧转发、零开销、无隔离,适合直连测试和基准对比。
VLAN是二层隔离:+4 字节 Tag、4094 个域,Access 对服务器无感、Trunk 需打 Tag,PVID 与 allow-pass 必须配套。
VXLAN是 Overlay:+50/70 字节封装、~1600 万 VNI、可跨三层,单播模式用
remote静态指定对端,交换机只当普通网络转发,MTU 必须调大。三者不是替代关系,而是分层共存:VXLAN 跑在普通网络(underlay)之上,underlay 可带可不带 VLAN。
性能测试要分层递进:普通网络基线 → 加 VXLAN → 换 IPv6 → 多流,每层对比,才能准确定位损耗来源。
本文基于两台服务器 + 25G 网卡 + bond1 + VXLAN 单播的测试组网整理,交换机配置示例以华为 25GE 接口命令为参考,其他品牌命令语义一致、语法略有差异。