简介:IEEE 802.3ae-2002标准原文PDF,面向网络工程师、数据中心运维人员及通信专业师生,用于系统查阅万兆以太网(10GbE)的MAC参数、物理层规范与管理接口定义。资源包内仅含1个PDF文件,大小约5.87MB,即IEEE官方发布的802.3ae修正版全文,涵盖10GBASE-X、10GBASE-R、10GBASE-W等物理编码子层,以及XGMII、XAUI、XSBI等接口规范与CSMA/CD兼容性说明。已有320人学习下载,适合需要对照标准原文理解10GbE帧结构、光纤与铜线介质选型、QoS优先级机制及安全认证细节的读者。文档保留完整目录与关键词索引,便于按MAC层、PHY层、管理参数等模块快速定位,是研究万兆以太网协议实现与部署方案的一手参考资料。
1. 万兆以太网的起点:IEEE802.3ae 到底解决了什么问题
机房搬迁那天,运维把一台老核心交换机的光模块拔下来递给我,说“这玩意儿标着 10GBASE-LR,是不是插上就能跑万兆?”我看了眼模块上的波长和接口类型,又翻了翻对端设备的端口能力,发现事情没那么简单——万兆不是换个模块就完事,背后有一整套物理层和 MAC 层的规范在约束。这套规范里最常被引用的就是 IEEE802.3ae,它是 2002 年发布的万兆以太网标准,定义了 10Gbps 速率下以太网怎么在光纤上跑、帧格式怎么变、MAC 层需要做哪些调整。
很多人第一次接触 IEEE802.3ae 是在选光模块或者配交换机端口的时候,看到 10GBASE-SR、10GBASE-LR、10GBASE-ER 这些名字,知道它们对应不同传输距离,但说不清为什么同样是万兆,有的只能跑 300 米,有的能跑 40 公里。这个标准解决的正是“万兆以太网在物理层怎么落地”的问题,它把 MAC 层的速率提升到 10Gbps,同时定义了多种物理层规范来适配不同光纤类型和距离需求。适合谁看?机房网络规划的人、做数据中心布线的人、需要给服务器配万兆网卡的人,以及想搞清楚“为什么我的万兆跑不满”的运维。下面从标准本身拆开,再落到实际配置和排错。
2. IEEE802.3ae 的物理层家族:10GBASE-SR/LR/ER 怎么选
2.1 为什么万兆以太网只跑全双工
IEEE802.3ae 做了一个很关键的决定:10Gbps 以太网只支持全双工模式,不再保留半双工和 CSMA/CD。原因很直接——半双工下冲突检测的时序窗口在 10Gbps 速率下已经无法维持,载波侦听的时间精度也跟不上。所以标准里直接砍掉了半双工,MAC 层不再处理冲突,帧的发送和接收可以同时进行。
这个决定带来的实际影响是:你不需要再考虑冲突域,也不需要配什么双工模式。交换机端口默认就是全双工,如果对端设备强制半双工,链路直接起不来。我见过有人把万兆端口往老设备上插,老设备只支持半双工,结果端口一直 down,查了半天以为是光模块问题,其实是双工模式不匹配。
另一个变化是帧格式。IEEE802.3ae 保留了标准以太网帧格式,但 MAC 层增加了可选的流量控制帧和链路聚合能力。帧的最小长度还是 64 字节,最大 1518 字节(不带 VLAN Tag),带 VLAN Tag 是 1522 字节。这些没变,所以上层协议基本无感。
2.2 四种物理层规范的距离和光纤对应关系
IEEE802.3ae 定义了几个主要的物理层规范,常见的是 10GBASE-SR、10GBASE-LR、10GBASE-ER,还有 10GBASE-LX4 和 10GBASE-SW/LW/EW 这类 WAN 版本。日常机房用得最多的是前三种。
| 规范 | 波长 | 光纤类型 | 典型距离 | 光模块类型 |
|---|---|---|---|---|
| 10GBASE-SR | 850nm | 多模光纤 | 26-300m | SFP+ |
| 10GBASE-LR | 1310nm | 单模光纤 | 10km | SFP+ |
| 10GBASE-ER | 1550nm | 单模光纤 | 40km | SFP+ |
| 10GBASE-LX4 | 1310nm | 多模/单模 | 300m/10km | XENPAK/X2 |
选型逻辑很简单:机房内同一排机柜之间用多模光纤,距离不超过 300 米,选 10GBASE-SR;跨楼层或者园区内不同楼之间,距离几公里,选 10GBASE-LR;跨园区或者城域范围,距离几十公里,选 10GBASE-ER。但这里有个坑:多模光纤分 OM1、OM2、OM3、OM4,不同等级能跑的距离不一样。OM1 多模光纤跑 10GBASE-SR 只能到 26 米,OM3 能到 300 米,OM4 能到 400 米。如果你机房是老布线,用的是 OM1 或 OM2,插上 10GBASE-SR 模块可能链路起不来或者丢包严重。
2.3 光模块和端口的匹配检查步骤
实际配端口的时候,按下面几步走能避开大部分问题。
第一步,确认交换机端口支持的速度和模块类型。不是所有 SFP+ 端口都支持 10GBASE-ER,有些只支持 SR 和 LR。查手册或者用命令看:
# 华为交换机查看端口支持的模块类型 display interface transceiver verbose # 思科交换机查看端口能力和模块信息 show interfaces transceiver details show inventory第二步,确认光模块的波长和光纤类型匹配。单模模块必须配单模光纤,多模模块必须配多模光纤。混用的话,要么完全不通,要么距离大幅缩短。我见过有人把 10GBASE-LR 模块插到多模光纤上,链路时通时断,误码率极高。
第三步,检查光纤跳线的接口类型。SFP+ 模块通常是 LC 接口,老设备可能是 SC 接口,需要转接线。转接线会引入额外损耗,长距离场景要算进光功率预算。
第四步,看光功率。收光功率在模块的灵敏度范围内才能正常起链路。太低会丢包,太高会烧接收端。用光功率计测,或者看交换机读出的数字诊断信息:
# 查看光模块收发光功率 show interfaces transceiver details # 输出里看 Rx Power 和 Tx Power,单位通常是 dBm10GBASE-SR 的收光功率范围一般是 -9.9dBm 到 -1dBm,10GBASE-LR 是 -14.4dBm 到 0.5dBm,10GBASE-ER 是 -15.8dBm 到 -1dBm。超出范围就要加衰减器或者换模块。
3. 从 MAC 层到实际配置:万兆链路怎么调通
3.1 MAC 层的两个关键变化:速率适配和链路聚合
IEEE802.3ae 把 MAC 层速率从 1Gbps 提到 10Gbps,但不是简单地把时钟加快。标准里定义了 XGMII(10 Gigabit Media Independent Interface)作为 MAC 和物理层之间的接口,位宽 32 位,时钟频率 156.25MHz,用 DDR 方式实现 10Gbps 吞吐。这个接口在芯片内部实现,外部看不到,但它决定了 MAC 和 PHY 之间的数据通道怎么走。
另一个变化是链路聚合。IEEE802.3ae 支持把多个万兆链路聚合成一个逻辑链路,提供更高带宽和冗余。实际配置里,链路聚合分静态聚合和动态聚合(LACP)。静态聚合配起来简单,但一端出问题另一端可能不知道;LACP 能检测链路状态,更可靠。
# 华为交换机配置静态链路聚合 interface Eth-Trunk 1 mode lacp-static trunkport 10GE1/0/1 trunkport 10GE1/0/2 # 思科交换机配置 LACP interface range TenGigabitEthernet1/0/1-2 channel-group 1 mode active interface Port-channel1 switchport mode trunk参数说明:mode lacp-static表示启用 LACP 协议,对端也要配 LACP 才能协商成功。channel-group 1 mode active表示主动发送 LACP 报文,对端可以配 passive 或 active。聚合之后,流量按源目 MAC 或 IP 做哈希分布,不是平均分配,所以单条流可能跑不满聚合带宽。
3.2 交换机端口配置的完整命令和参数解释
以华为交换机为例,配一个万兆光口跑业务:
# 进入端口视图 interface 10GE1/0/1 # 关闭端口,配置完再开启 shutdown # 配置端口模式为 trunk,允许 VLAN 通过 port link-type trunk port trunk allow-pass vlan 10 20 30 # 配置 MTU,万兆场景建议加大 mtu 9216 # 开启端口 undo shutdown思科对应配置:
interface TenGigabitEthernet1/0/1 shutdown switchport mode trunk switchport trunk allowed vlan 10,20,30 mtu 9216 no shutdown参数说明:mtu 9216是开启巨帧,万兆场景下如果跑存储流量或者 iSCSI,巨帧能减少 CPU 中断次数,提升吞吐。但端到端所有设备都要配巨帧,中间有一个设备没配,大包会被丢弃。port trunk allow-pass vlan控制哪些 VLAN 能通过,不配的话默认只允许 VLAN 1。
3.3 服务器端万兆网卡的配置要点
服务器上装万兆网卡,除了装驱动,还要调几个参数才能跑满。
# 查看网卡信息和驱动 ethtool -i eth0 # 查看当前 Ring Buffer 大小 ethtool -g eth0 # 增大 Ring Buffer ethtool -G eth0 rx 4096 tx 4096 # 开启巨帧 ip link set eth0 mtu 9000 # 查看中断亲和性 cat /proc/interrupts | grep eth0Ring Buffer 是网卡收发包的环形队列,默认值通常偏小,万兆流量下容易丢包。调到 4096 能明显减少丢包。中断亲和性决定网卡中断由哪个 CPU 核处理,多队列网卡要绑到不同核上,避免单核跑满。用ethtool -L eth0 combined 8可以设置队列数,然后手动绑中断。
提示:调 Ring Buffer 和队列数之前,先确认网卡型号和驱动支持的范围。有些老网卡最大只能到 2048,设大了会报错。
4. 万兆链路的避坑与排查:从丢包到光功率异常
4.1 链路起不来但光模块灯亮
现象:交换机端口插上光模块,端口指示灯亮,但display interface显示 down,或者 up 之后马上 down。
原因:最常见的是收发光功率不匹配。模块灯亮只表示有光信号,不代表信号质量够。另一种可能是双工模式不匹配,对端强制半双工。还有一种是光纤跳线接反了,收和发接反。
解决:先看光功率,show interfaces transceiver details里 Rx Power 如果低于灵敏度下限,说明收光太弱,检查光纤跳线是否脏污、接口是否松动、距离是否超规格。如果光功率正常,检查双工模式,两端都设成全双工。最后检查光纤跳线的收发是否交叉,A 端的 TX 接 B 端的 RX。
4.2 能 ping 通但吞吐量上不去
现象:链路 up,ping 不丢包,但 iperf 打流只能跑到 2-3Gbps,远低于 10Gbps。
原因:可能是 Ring Buffer 太小导致丢包,也可能是中断只绑在一个 CPU 核上,单核处理不过来。还有可能是 PCIe 带宽不够,老服务器 PCIe 2.0 x4 的带宽只有 2GB/s,跑万兆勉强够但跑双口万兆就不够。
解决:先看ethtool -S eth0里的丢包计数,如果 rx_dropped 或 tx_dropped 在涨,调大 Ring Buffer。再看/proc/interrupts里网卡中断是否集中在一个核,如果是,用ethtool -L增加队列数并绑中断。最后确认 PCIe 插槽的带宽,用lspci -vv看网卡的链路速度和宽度。
4.3 巨帧配了但大包还是丢
现象:端到端都配了 MTU 9000,但传大文件时还是丢包,小包正常。
原因:路径上某个设备没配巨帧。可能是中间交换机、防火墙、或者虚拟化平台的虚拟交换机。虚拟交换机(比如 Linux Bridge 或 OVS)的 MTU 要单独设,默认是 1500。
解决:用ping -M do -s 8972逐跳测试,看哪一跳开始不通。-M do表示禁止分片,-s 8972是 9000 减去 IP 头 20 字节和 ICMP 头 8 字节。如果某跳不通,登录那台设备检查 MTU 配置。虚拟化环境里,Linux Bridge 用ip link set br0 mtu 9000,OVS 用ovs-vsctl set interface eth0 mtu_request=9000。
4.4 光模块混用导致误码率高
现象:链路 up,但display interface里 CRC 错误计数在涨,业务时断时续。
原因:不同品牌的光模块混用,或者单模模块插多模光纤。有些交换机对光模块有兼容性检查,非原厂模块可能被拒绝或者工作不稳定。
解决:尽量用同品牌同型号的模块。如果必须混用,确认波长和光纤类型匹配。单模模块必须配单模光纤,多模模块必须配多模光纤。如果交换机有模块兼容性检查,用命令关闭检查(比如华为的transceiver phony-alarm-disable),但关闭后可能失去一些诊断能力。
4.5 链路聚合后单条流跑不满
现象:两个万兆口做了聚合,总带宽 20Gbps,但单条 TCP 流只能跑到 10Gbps。
原因:链路聚合的流量分布是基于哈希的,同一条流(相同源目 IP 和端口)只会走一条物理链路。所以单条流的上限就是单口带宽。
解决:这是正常现象,不是故障。如果需要单条流跑超过 10Gbps,只能升级到 25G 或 40G。聚合的意义在于多流场景下总带宽提升,以及冗余。如果非要单流跑满聚合带宽,可以考虑用多路径 TCP(MPTCP),但需要应用和内核支持。
5. 用 iperf3 和光功率计验证万兆链路是否达标
5.1 打流测试的完整命令和结果解读
链路调通之后,用 iperf3 验证实际吞吐。服务端和客户端都要装 iperf3。
# 服务端启动 iperf3 -s # 客户端打流,跑 30 秒,8 个并行流 iperf3 -c 192.168.1.100 -t 30 -P 8 # 输出示例 # [SUM] 0.00-30.00 sec 32.5 GBytes 9.31 Gbits/sec参数说明:-t 30跑 30 秒,-P 8开 8 个并行流。单流跑的话,TCP 窗口和延迟会影响结果,多流能更接近线速。9.31Gbps 是正常范围,因为 TCP/IP 开销和以太网帧头开销,实际吞吐通常是线速的 93%-95%。如果只跑到 5Gbps 以下,就要查 Ring Buffer、中断和 PCIe 带宽。
UDP 测试能看丢包和抖动:
iperf3 -c 192.168.1.100 -u -b 10G -t 30 # 输出里看 Lost/Total Datagrams 和 Jitter-u表示 UDP,-b 10G表示目标带宽 10Gbps。如果丢包率超过 0.1%,说明链路有问题。
5.2 光功率计的读数判断和衰减器使用
光功率计测的是绝对光功率,单位 dBm。测之前要先清零,然后接到光纤的一端读收光功率。
10GBASE-SR 的收光功率正常范围是 -9.9dBm 到 -1dBm。如果读到 -15dBm,说明光太弱,可能是光纤太长、接头脏污、或者模块老化。如果读到 +3dBm,说明光太强,需要加衰减器。衰减器有固定值和可调值,固定值常见的有 5dB、10dB、15dB。选衰减器的时候,算一下目标功率:当前功率减去衰减值,落在正常范围内就行。
长距离单模链路要算光功率预算。发射功率减去光纤损耗减去接头损耗减去衰减器,要大于接收灵敏度。10GBASE-LR 的发射功率一般是 -8.2dBm 到 +0.5dBm,接收灵敏度是 -14.4dBm,预算大约 6dB。如果链路损耗超过 6dB,链路就不稳定。
5.3 一个容易被忽略的细节:光纤清洁
我自己的习惯是,每次插拔光模块之前,先用光纤清洁笔擦一下跳线接头。光纤端面的灰尘肉眼看不见,但会让光功率下降 1-3dB,长距离链路直接因此起不来。清洁笔不贵,但能省下大量排查时间。这个习惯我保持了五年,至少帮我避免了十几次“链路莫名其妙 down”的事故。
希望帮到你。
本文还有配套的精品资源,点击获取