凡亿教育-娟娟
凡事用心,一起进步
打开APP
公司名片
凡亿专栏 | 网口Link已经亮了,为什么千兆一跑流量就开始丢包?
网口Link已经亮了,为什么千兆一跑流量就开始丢包?

网口Link已经亮了,为什么千兆一跑流量就开始丢包?

以太网PHY能完成Link,并不代表MAC与PHY之间的数据通道一定可靠。千兆RGMII采用125MHz双沿采样,对Clock/Data Skew和内部Delay很敏感。Link正常但大流量丢包时,应把MDI链路和RGMII接口分开排查。

有一类以太网问题特别容易误导人:RJ45的Link灯亮了,系统也能拿到IP,Ping小包甚至基本正常。

可一跑iperf、大文件或者持续高流量,CRC Error、RX Error、丢包就开始往上涨。

这时候很多人会去换网线、查磁性器件、查PHY模拟波形。可如果问题只在千兆明显,降到100M就稳定,MAC和PHY之间的RGMII时序反而应该尽早检查。

Link亮,只证明PHY和对端建立了物理链路

Ethernet PHY一边连接网线侧的MDI,另一边通过RGMII、SGMII、RMII等接口和MCU、SoC或FPGA里的MAC通信。

Link Detect主要发生在PHY与网线这一侧。也就是说,PHY已经和对端协商到1Gbps,并不自动证明PHY到MAC这几根数字线的采样时序也完全正确。

所以完全可能出现:Link一直在线,PHY模拟侧看起来正常,但MAC收到的数据偶发bit错误,最终表现为CRC错误和丢包。

图1:RGMII位于MAC与PHY之间,TX和RX都有独立的Clock、Data和Control信号。

图1:RGMII位于MAC与PHY之间,TX和RX都有独立的Clock、Data和Control信号。

为什么RGMII在千兆模式特别容易暴露问题

RGMII在1Gbps下使用125MHz时钟,并且在时钟上升沿、下降沿都传输数据。

表面上125MHz并不高,但双沿传输以后,每一组有效数据窗口只有约4ns。

更关键的是,RGMII并不是让Clock和Data完全同时到达接收端。接收端需要一定Clock-to-Data Skew,让数据在采样沿附近留出足够Setup/Hold裕量。

常见RGMII规范要求接收端Clock相对Data延迟约1~2ns量级。这个Delay可能由PHY内部产生,也可能由MAC内部产生,还可能靠PCB走线实现。真正危险的是:两边都加了Delay,或者两边都没加。

图2:RGMII可靠采样的关键是Clock与Data之间必须保留足够的Setup、Hold和Skew裕量。

图2:RGMII可靠采样的关键是Clock与Data之间必须保留足够的Setup、Hold和Skew裕量。

最常见的坑:PHY开了Internal Delay,软件里MAC又加了一次

很多PHY寄存器有RGMII-ID、TX Delay、RX Delay之类配置。

SoC端也可能在Device Tree、寄存器或Pin Controller里提供RGMII、RGMII-ID、RGMII-RXID、RGMII-TXID等模式。

如果工程师只看到“推荐开启2ns Delay”,没有确认这个Delay到底应该由哪一端提供,就可能形成双重延迟。

反过来,如果原理图默认依赖PHY内部Delay,但初始化代码把它关掉,PCB又没有做额外Clock延长,同样会导致采样边沿贴着数据跳变点。

为什么小流量看起来正常,大流量才暴露

时序裕量不足并不一定意味着每个bit都错。

温度、IO电压、器件工艺、边沿速度和同时翻转噪声都会让实际Delay产生变化。某些帧可能完全正确,某些帧在边界条件下才出现bit Error。

低流量时错误概率低,看起来像“偶发网络抖动”;一旦持续千兆大流量,单位时间经过的数据量大幅增加,CRC Error就迅速累积。

如果强制降到100M以后问题明显缓解,也很符合这个逻辑:RGMII低速模式的时序压力远小于1Gbps。

图3:以太网系统需要把MAC-PHY数字接口与PHY-Magnetics-MDI模拟接口分开理解和排查。

图3:以太网系统需要把MAC-PHY数字接口与PHY-Magnetics-MDI模拟接口分开理解和排查。

怎么查:不要一上来就改PCB

第一,先看PHY/MAC统计寄存器。确认是RX CRC、TX Error、FIFO还是其他错误在增长。

第二,核对PHY寄存器和SoC配置,明确TX Clock Delay、RX Clock Delay分别由谁提供。不要靠“默认应该开”去猜。

第三,用示波器在接收端附近同时测Clock和某一路Data。真正要看的是接收端实际Setup/Hold裕量,而不是只看频率是不是125MHz。

第四,用PHY内部Loopback或PRBS/BIST分段。MAC↔PHY内部回环正常、外部线缆测试也正常,就能进一步缩小故障边界。

第五,再看PCB:Clock/Data长度差、串阻位置、参考平面连续性、IO电压以及是否跨层。

一句工程判断:网口Link亮,是“网线这一侧通了”;千兆数据不丢,还要证明RGMII这一侧的时序也真的通了。

声明:

本文由凡亿教育整理,转载请注明来源!

投稿/招聘/广告/课程合作/资源置换 请加微信:13237418207

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。
相关阅读
进入分区查看更多精彩内容>
精彩评论

暂无评论