网络基础:以太网、VLAN、QoS、PFC 与 ECN 关键技术
RoCE(RDMA over Converged Ethernet)的核心思想,是让以太网承担起原本属于 InfiniBand 的无损、低延迟传输任务。但传统以太网是“尽力而为”的,丢包、乱序、拥塞都是常态。因此,理解 RoCE 的前提,是先把以太网、VLAN、QoS、PFC、ECN 这五块基石弄清楚。它们分别解决了“怎么传”“怎么隔离”“怎么排队”“怎么不丢”和“怎么降速”的问题。
一、核心原理:从以太网帧到无损通道
RoCEv2 的数据报文封装在 UDP/IP 之上,标准以太网帧结构如下:
| 目的MAC(6B) | 源MAC(6B) | 802.1Q Tag(4B) | 以太类型(2B) | Payload | FCS(4B) |
|--TPID:0x8100--|--TCI: PCP(3bit)+DEI(1bit)+VID(12bit)--|
其中 802.1Q Tag 是 VLAN 与 QoS 的交汇点:VID 标识二层隔离域,PCP(Priority Code Point)字段则用于标记报文优先级,是后续 QoS 队列调度和 PFC 流控的基础。RoCEv2 通常将 PCP 设为 3 或 5,以区分不同流量类型。
RoCE 要实现无损传输,必须让网络中的交换机端口在出现拥塞时“不丢包”。这依赖两条链路:PFC(优先级流控)提供逐跳的停-发机制,ECN(显式拥塞通知)提供端到端的拥塞反馈。两者配合,才能让发送端主动降速,而不是被动丢包重传。
二、关键技术拆解
1. VLAN:广播域隔离与流量标识
在 RoCE 组网中,VLAN 不仅用于隔离广播域,更重要的是为不同租户或不同流量类型(存储、计算、管理)提供独立的逻辑通道。每个 VLAN 对应一个 12bit 的 VID,取值范围 1~4094。RoCE 流量通常规划独立 VLAN,避免与普通 TCP/IP 流量相互干扰。
2. QoS:队列调度与优先级映射
QoS 的核心是“分类-标记-排队-调度”。交换机根据报文的 PCP 值或 DSCP 值将其映射到不同的硬件队列。典型配置如下:
| 流量类型 | PCP值 | DSCP值 | 队列行为 |
|---|---|---|---|
| RoCE 高优先级 | 3 | 26 (AF31) | 严格优先或高权重WRR |
| RoCE 中优先级 | 2 | 24 (AF32) | 高权重WRR |
| 普通TCP存储 | 0 | 0 (BE) | 尽力而为 |
| 管理流量 | 7 | 56 (CS7) | 严格优先(但限速) |
注意:管理流量虽然优先级最高,但必须做速率限制,否则会挤占 RoCE 的带宽。
3. PFC:逐跳无损的“刹车”机制
PFC(IEEE 802.1Qbb)将物理链路划分为 8 个虚拟通道(对应 PCP 0~7)。当某个通道的接收缓冲超过阈值时,交换机向对端发送 PFC Pause 帧,对端收到后停止发送该优先级的报文,直到收到 Resume 帧。这种机制是逐跳生效的,即每一台交换机都要对自己的上游链路做流控。
4. ECN:端到端的“减速信号”
ECN(RFC 3168)利用 IP 头中的 ECN 字段(2bit)进行标记。发送端在报文头设置 ECT(ECN-Capable Transport),交换机检测到队列深度超过阈值时,将报文标记为 CE(Congestion Experienced),接收端收到 CE 后,通过反馈(如 RoCEv2 的 CNP 报文)通知发送端降低发送速率。整个过程不丢包,仅靠标记传递拥塞信号。
三、方法流程:无损以太网配置五步法
在实际组网中,配置顺序至关重要。推荐按以下流程操作:
- 规划 VLAN 与 IP:为 RoCE 分配独立 VLAN(如 VLAN 100),并规划好子网,确保所有 RoCE 节点二层可达。
- 配置 QoS 映射:在服务器网卡和交换机上,将 RoCE 流量的 DSCP/PCP 统一映射到优先级队列(通常为队列 3)。
- 启用 PFC:在交换机所有涉及 RoCE 的端口上,为队列 3 开启 PFC 流控,并设置合理的缓冲阈值(建议先使用厂商默认值,再根据监控调整)。
- 配置 ECN:在交换机上启用 ECN,设置队列深度的标记阈值(如 100KB~200KB),并确保服务器网卡支持 ECN 和 CNP 生成。
- 验证无损性:使用
ethtool -S查看网卡丢包计数,使用rdma_ping或ib_write_bw测试实际带宽和延迟。
# 交换机配置示例(以某厂商CLI为例)
interface Ethernet1/1
switchport mode trunk
switchport trunk allowed vlan 100
qos map dscp 26 to queue 3
priority-flow-control mode on
priority-flow-control priority 3 no-drop
qos ecn threshold queue 3 100000 bytes
四、案例场景:存储网络中的 RoCE 部署
某企业部署分布式存储集群,使用 RoCEv2 承载存储流量。初始配置时,工程师将所有流量(存储+管理)放在同一 VLAN,未区分优先级。结果发现:当存储节点进行大规模数据重构时,管理流量被阻塞,SSH 登录延迟高达 10 秒以上。
优化方案如下:
- 将存储流量划入 VLAN 100(PCP=3),管理流量划入 VLAN 200(PCP=7)。
- 在交换机上为 PCP=7 设置严格优先队列,但增加 监管器(Policer)限制其带宽不超过 100Mbps。
- 为 PCP=3 开启 PFC 和 ECN,确保存储流量无损。
优化后,即使存储流量占满 100Gbps 带宽,管理流量仍能正常响应,SSH 延迟稳定在 50ms 以内。这说明:无损网络不是“所有流量都无损”,而是“关键流量无损,其他流量可控”。
五、误区与复盘:常见配置错误
下图总结了 RoCE 网络中从发送端到接收端,VLAN、QoS、PFC、ECN 如何协同工作:
上图展示了 RoCE 无损传输的完整闭环:发送端发出带优先级标记的数据帧,经过交换机时由 QoS 保证队列调度;当交换机缓冲超过阈值时,一方面通过 PFC 向上游反压,另一方面通过 ECN 标记报文,最终由接收端通过 CNP 报文通知发送端降速。只有 PFC 和 ECN 协同工作,才能既保证不丢包,又避免拥塞扩散。