3. 网络接口与PHY层:以太网物理层基础、SerDes技术、MAC与PHY的交互、常见速率(10G/25G/100G/400G)

好,咱们今天聊聊SmartNIC里最“接地气”的一层——物理层。说白了,就是数据怎么从芯片里变成线缆上的电信号或光信号,再传出去。我做了这么多年网络芯片,每次调试PHY层都像在跟硬件“对暗号”,信号对不上,上层协议再牛也白搭。

3.1 以太网物理层基础

物理层(PHY)负责把MAC层送过来的数字比特流,编码成适合在物理介质上传输的信号。反过来,它也要把接收到的模拟信号解码成数字比特流。你想想看,一根铜线或者光纤,它本身可不懂什么“帧结构”或“IP地址”,它只认电压高低或者光的有无。

PHY的核心功能包括:

  • 编码/解码:比如64B/66B编码,保证数据流中有足够的跳变沿,方便接收端恢复时钟。我个人习惯把编码看成“给数据加个同步头”,不然长串的0或1会让接收端“失锁”。
  • 串行化/解串行化:把MAC的并行数据转成高速串行流,这就是SerDes的活儿。
  • 链路协商:自动协商速率、双工模式、流控等参数。我记得有一次板卡插上去死活不通,最后发现是两端的自动协商没对上,一个要100G,一个只支持25G。
  • 信号调理:均衡、预加重、去加重,补偿传输损耗。

核心要点:PHY不是简单的“模数转换器”,它是一套完整的信号处理链路。设计时,PHY的功耗和面积往往占整个芯片的30%以上,千万别小看它。

3.2 SerDes技术:高速串行的心脏

SerDes(Serializer/Deserializer)是PHY层最核心的模块。没有它,10G以上的速率根本没法实现。为什么?因为并行总线在高速下会面临严重的时钟偏斜和串扰,而串行传输只需要一对差分线,抗干扰能力强得多。

SerDes的关键指标:

  • 速率:比如25Gbps per lane,这是当前最主流的单lane速率。
  • 功耗:通常用pJ/bit来衡量,优秀的SerDes能做到2-3 pJ/bit以下。
  • 抖动:包括随机抖动和确定性抖动,直接影响误码率。
  • 均衡能力:CTLE、FFE、DFE等,补偿信道损耗。

我曾经在一个400G项目中,SerDes的DFE(判决反馈均衡器)参数没调好,导致长距离传输时误码率高达1e-12,虽然看起来不高,但上层协议重传直接让吞吐量掉了30%。后来花了整整两周调均衡参数,才把误码率压到1e-15以下。

实战技巧:调试SerDes时,先看眼图。眼图睁开得像“猫头鹰眼睛”一样大,基本就没问题。如果眼图闭合得像“一条线”,那就要检查PCB走线、连接器或者电源噪声了。

3.3 MAC与PHY的交互

MAC(媒体访问控制)和PHY之间通过一个标准接口通信。最常见的接口是:

  • XGMII:10G MAC与PHY的接口,74根线,实际很少用,因为太占引脚。
  • XFI/SFI:10G/25G的串行接口,只用一对差分线,简洁高效。
  • CAUI-4/CAUI-10:100G/400G的接口,用4条或10条25G lane。

MAC和PHY之间还有一个重要的管理接口——MDIO(Management Data Input/Output)。通过MDIO,软件可以读写PHY的寄存器,配置速率、协商模式、读取链路状态等。嗯,这里要注意:MDIO的时序很慢(最高2.5MHz),千万别用它做实时控制,只适合初始化或诊断。

我建议在设计芯片时,把MAC和PHY之间的FIFO深度留足。为什么?因为MAC的时钟和PHY的时钟是异步的,FIFO就是用来吸收时钟域跨越的抖动。我曾经见过一个设计,FIFO深度只有4个条目,结果在背压场景下频繁溢出,丢包率高达5%。后来改成16条目,问题解决。

避坑指南:我曾经在调试时发现MAC和PHY的链路状态不一致——MAC显示Link Up,PHY却显示Link Down。最后查出来是MDIO读回来的寄存器值被软件误改了。所以,建议在驱动中加一个“心跳检测”,定期比对MAC和PHY的状态。

3.4 常见速率:10G/25G/100G/400G

不同速率对应不同的物理层实现,咱们用一张表来对比:

速率 单lane速率 lane数 编码方式 典型应用
10G 10.3125 Gbps 1 64B/66B 服务器网卡、交换机上行
25G 25.78125 Gbps 1 64B/66B 当前数据中心主流,性价比高
100G 25.78125 Gbps 4 64B/66B 骨干网、核心交换机
400G 26.5625 Gbps (PAM4) 8 RS-FEC + 64B/66B 超大规模数据中心、AI集群

注意看,400G用了PAM4调制(4级脉冲幅度调制),而不是传统的NRZ(不归零码)。PAM4每个符号传输2比特,所以同样带宽下速率翻倍。但代价是信噪比要求更高,必须搭配RS-FEC(里德-所罗门前向纠错)才能保证误码率。

我参与过一个400G SmartNIC项目,刚开始用NRZ方案,结果发现PCB走线损耗太大,眼图完全闭合。后来换成PAM4 + RS-FEC,虽然功耗增加了15%,但信号完整性终于达标了。说白了,高速设计就是“用功耗换性能”。

选型建议:如果你做的是通用SmartNIC,25G per lane是当前最稳妥的选择。如果追求极致带宽,直接上400G PAM4,但要做好FEC和信号完整性的功课。

3.5 知识体系结构图

下面这张SVG图梳理了本章的核心逻辑,从物理介质到MAC层,层层递进:

网络接口与PHY层知识体系 物理介质 铜缆(DAC) | 光纤(单模/多模) | 背板 PHY层(物理层) SerDes(串行/解串) 编码/解码(64B/66B) 链路协商(Auto-Neg) 信号调理(均衡) MAC与PHY接口 XGMII | XFI/SFI | CAUI-4/CAUI-10 | MDIO管理 MAC层(媒体访问控制) 帧封装/解封装 | 流控(Pause帧) | CRC校验 常见速率:10G(1×10G) | 25G(1×25G) | 100G(4×25G) | 400G(8×25G PAM4)

这张图从下往上看:物理介质承载信号,PHY层负责信号处理,通过标准接口与MAC层交互。速率越高,PHY层的复杂度也越高,尤其是400G引入了PAM4和RS-FEC,设计难度上了不止一个台阶。


公众号:蓝海资料掘金营,微信deep3321