Accton AS9716-32D 跑 100G:INNOLIGHT QSFP28 LR4 能连上 Arista,但连不上 Fortigate 3810D 的 CFP2-LR4
我们正在给一台运行 SONiC master 版本(build master.207726)的 Accton AS9716-32D 开通一个叶子交换机。四个具备 400G 能力的端口需要以 100G 跑到一对防火墙上,结果一个都连不上。
- Accton AS9716-32D,SONiC master.207726
- 交换机笼子里插的是 INNOLIGHT TR-FC13R-N00 QSFP28 LR4
- 对端是 Fortigate 3810D,插的是 CFP2-LR4
- 端口强制为 100G,关闭自协商,RS FEC,MTU 9100
sudo config interface speed Ethernet0 100000
show interfaces status
Interface Speed MTU FEC Admin Oper
Ethernet0 100G 9100 rs up down
我试过的东西:
- 端口分别设成 2 条 PAM4 通道和 4 条 NRZ 通道,两个方向结果都一样
- 用
sudo config interface fec Ethernet0 none代替 RS FEC - 把同样的 INNOLIGHT 模块和同样的光纤接到一个 Arista 的 QSFP28 端口上,链路立刻就起来了
所以光模块和光纤都排除了嫌疑。是这个 400G 端口以 100G 驱动的方式有问题,还是 CFP2 那边对通道的期望有问题,导致链路一直起不来。有没有人在这个平台上让一个 400G 笼子以 100G 跟 CFP2-LR4 谈成过,端口配置长什么样?
Comments 7
在有人开始算通道数之前先问两个问题。Fortigate 那边显示的是什么,CFP2 是看到光但一直 down,还是根本没识别到模块?3810D 端口上配的是什么 FEC?
在一对 LR4 上,只要有一端开着 RS FEC,链路就足以永远起不来,而 CFP2-LR4 端口通常压根没有 RS FEC 可以打开。
Fortigate 那边显示接口是 down,计数器里也没什么有用的信息。那边确实识别到了模块,而且这个端口在我们动手之前跑过一条到另一台设备的 100G 链路。我在那边根本找不到任何 FEC 设置,明的暗的都没有。
我们这边关掉 RS FEC 倒是很干脆:执行
sudo config interface fec Ethernet0 none之后 FEC 那一列显示none,端口弹一下之后回到 admin up、oper down,跟之前一模一样。所以单独在交换机这边关掉 RS FEC 没带来任何变化。你试的这两种配置本来就不等价,其中一种在结构上就不可能成功。CFP2-LR4 是一个四通道 NRZ 接口:朝主机侧是四条 25G 电通道,光纤侧是四个波长。如果你的端口配置把笼子设成 2 条 PAM4 通道,交换机发出去的是 2x50G,而对端必须往线路侧交出四条 NRZ 通道,不管 FEC 怎么配都训练不起来。这个配对里唯一可能成立的配置是 4 条 NRZ 通道。
改好这个之后,剩下的变量就是 FEC 了。100GBASE-LR4 本身不带 RS FEC,CFP2-LR4 端口通常也没办法打开它,这跟你在 Fortigate 那边查到的情况是吻合的。如果你这边那个端口还是
rs,光这一点就足以解释链路为什么一直不亮。所以:4 通道 NRZ,关闭自协商,
sudo config interface fec Ethernet0 none,把端口弹一下,然后再看一遍show interfaces status,确认这两个设置真的生效了。再补一个比较枯燥但属于标准层面的角度。这里没有任何东西会去协商 FEC,它是两端各自静态的属性,链路每条通道都必须一致。针对通道化 100G 的厂商指导文档里也就是一句话说清楚了:一个 100G 端口拆成 25G 通道时,每条通道的两端必须跑同样的 FEC 模式,否则通道永远训练不起来。
也值得把 TR-FC13R-N00 的 EEPROM 到底声明了什么倒出来看看。这些模块报的是符合 100GBASE-LR4 和 25GBASE-LR,而有些平台会根据这个字段而不是你在配置里敲的东西来选默认的通道模式。
不同厂商,同样的套路。我遇到过一条 MikroTik CCR2216 和 Arista 之间、走 QSFP28 SR4 光模块的 100G 链路,正常跑了好几个月,突然就起不来了。那段时间里 RouterOS 从 7.8 升到了 7.12.1。两端都是强制配置:auto-negotiation=no,fec-mode=fec91,MTU 9000,CCR 上是 100G-baseSR4-LR4,Arista 上是 100gfull 配 reed-solomon 纠错。换光模块什么都没变,四条通道的接收功率都正常,把端口拆成 4x25G 只是换来通道一直闪断。
那次也没找到答案,但模式跟你这里一样:光模块是无辜的,是某一端的端口驱动在你不知情的情况下变了。如果你用的是 master 快照版本,那是我第一个会去动的变量。
最后一步要小心。把FEC设成none,然后在输出里看到
none,这并不能证明端口真的是在没有RS FEC的状态下运行。在好几个这类平台上,这个值只是写进了配置数据库,CLI也乐呵呵地把它打印回来,但serdes在端口真正被重建之前,一直保持着它原来被编程时的模式。400G能力的cage发生速率变更时会重建端口,所以这两个开关会互相影响,顺序很关键。对于lane profile也要同样小心:在支持breakout的cage上,lane profile来自平台端口配置,而不是单靠
sudo config interface speed就能决定的。如果profile一直没有重新生成,那你两次尝试很可能跑在同一套底层lane map上,这也能解释为什么PAM4和NRZ看起来一模一样。改完之后重启设备,从冷启动状态重新检查。全部都试过了。端口重新创建为 4 条 NRZ 通道,我们这边 FEC 设为 none,关闭自协商,保存配置,完整重启,从冷启动状态再检查了一遍。CFP2 那一对还是 down。Fortigate 上 RS FEC 确实是完全没暴露出来的,所以我们连制造一个匹配的不一致都做不到。
与此同时,同一个 INNOLIGHT TR-FC13R-N00 插在同一个笼子里,接到 Arista 的 QSFP28 端口上几秒钟就能连上,所以模块和光纤这块依然是清白的。
本来想把完整的技术信息导出来贴上,但超过了这里的大小限制。目前这四个端口先保持 down,防火墙上行链路已经挪到了另一台设备上。如果有人在这个平台上真的让一个 400G 端口以 100G 跑通了 CFP2,希望能告诉我你最后用的是什么配置。