RB5009 的 SFP+ 插槽里插 S-RJ01:自动协商不完整,端口卡在 100 Mbps
家庭机柜,RB5009 只有一个 SFP+ 插槽。我想从这里再引出一路千兆铜口上联,而不是拉光纤穿过房间,所以插了一个铜模块。
- MikroTik RB5009UG+S+IN,RouterOS 7.1rc4
- sfp-sfpplus1 里插着 MikroTik S-RJ01 1000BASE-T 铜口 SFP
- Cat6 跳线,大约三米,接到一台千兆交换机
- 那台交换机上其他所有端口用同一批线缆都能以 1G 全双工连通
端口能起来,但只有百兆:
/interface ethernet monitor sfp-sfpplus1
Auto Negotiation: incomplete
Rate: 100Mbps
在有负载的情况下,这个接口还会累积 TX/RX 数据包错误,而其他任何内置端口都不会这样。
我已经尝试过:
- 反复禁用再启用接口好几次——偶尔能起到 1G,大多数时候不行
- 换了不同的 Cat6 跳线,也换了对端交换机上的端口
- 把对端交换机的端口固定成 1G 全双工,这边什么都没变化
这是模块的问题,还是让 SFP+ 插槽去跑一个千兆铜模块本身就有问题,或者是这个 RouterOS 版本的问题?除了放弃改用光纤之外,还有什么可以尝试的?
Comments 6
别再指望自动协商了,直接锁死。在我遇到过 S-RJ01 闹脾气的每一台 MikroTik 设备上,都是这样才让它稳定下来的:
然后用
/interface ethernet monitor sfp-sfpplus1读回来看一下。至于为什么这个读数让人困惑:主机端口和一个千兆铜口 SFP 之间的那条通道,始终以 1G 的 SGMII 比特率在跑,100 Mbit 是通过把每个字节重复十次来承载的。所以主机打印出来的速率,不一定就是模块里的铜口 PHY 和你交换机实际协商出的速率——模块的这两半是可以互相不一致的,「incomplete」就是主机这一侧在自己那部分放弃了协商。
两点提醒。你这边关掉自动协商之后,对端也必须固定成 1 Gbps 全双工,不然它会掉到半双工,你就是把一个速率问题换成了一个双工问题,而后者更难排查。另外要清楚这只是一个变通办法——厂商没有针对这个问题的正式修复,所以如果这个端口承载什么重要业务,值得试试换一个别的厂商的铜模块插进同一个插槽。
你用的是 7.1rc4,我也是,所以这部分已经对得上——我更想知道的是,在你这边显示 incomplete 的时候,对端报告的是什么。它也看到 100,还是它以为自己有一条千兆链路?
之所以问这个,是因为我在一台 RB4011iGS+ 上也有一个 S-RJ01,表现非常类似:只有偶尔能到 1G,而且只有在我禁用再启用端口之后才行。我从来没搞清楚是什么让某一次尝试和下一次不一样,也从没想过要在同一时刻去读对端交换机的状态。
对端交换机和我这边一致——它也显示一条 100 Mbit 的链路,所以至少两端没有在互相说不一样的谎话。
禁用再启用在这里也有帮助,但不太稳定:大概四次尝试里有一次能回到 1G,其余都停在 100Mbps,同样是
Auto Negotiation: incomplete那一行。停在 100 的时候,负载下错误计数会持续上涨;偶尔到了 1G 的时候,计数则完全不动。把这个当成通用做法要小心,因为厂商自己关于这些铜模块的文档说的正好相反:S-RJ01 和 S+RJ10 的说明里写着必须依靠协商出的速率和双工才能工作,按那份文档的说法,一个手动锁死速率的端口本不应该起链路。但在 RB5009 和 RB4011 这些设备上,实际现场经验和这份文档相悖的情况多到我宁愿两种都试一下,看你自己的硬件上哪种能稳定住,而不是盲目相信任何一边的说法。
跟这个无关但是同一版本上的事:我有一个 S+85DLC03D 插在 CRS318-16P-2S+ 上,一天要掉线好几次,所以我不会假设 SFP 端口上任何奇怪的现象都是铜模块的锅。
另外如果你考虑给这个插槽换成 S+RJ10——它的功耗明显更大,跑起来也更烫,如果你的设备是被动散热又没有额外风道,这不是你想要的。
更老的设备,同一类痛苦。一台跑 6.45.1 的 CCR1016-12S-1S,插了十二个 Finisar FCLF-8521-3 铜模块,路由器却执意把它们识别成 FCMJ-8521-3。十二个全都出现在模块列表里,但没有一个能起链路——接华为交换机不行,直接接笔记本也不行。
最终让所有端口都起来的做法是:
把两个方向的流控都关掉是关键的一步,禁用再启用这个循环同样重要——模块只有经过这个循环才会用新设置重新初始化。同样要提醒的是对端必须固定为 1 Gbps 全双工,不然会掉到半双工。
只解决了一半,所以我如实汇报。关掉自动协商,两端都强制 1Gbps 全双工之后,端口稳定在了 1G,错误计数不再变化,禁用/启用那种碰运气的情况也结束了。
还是不行的地方:一台老式的百兆设备,我直接接到这个模块上,现在两边怎么设置都完全连不上链路。对于这一段,我在模块和那台设备之间加了一个小的千兆交换机,不再去和它较劲了。所以这条上联口是能用的,但我不会说这个模块的问题被彻底解决了。