客户电话打过来,第一句就是:“防火墙和交换机光口对接不上,接口down了一天了,光纤也换过,模块也换过,你们赶紧来人看看。”我听到这种描述,一般不会急着上设备,先问清楚两个型号:一边是USG6555F,一边是华为6857交换机(CloudEngine 6857系列)。听完我就知道,这单大概率不是硬件坏了,而是端口速率和接口类型之间那点“软坑”没趟过去。今天把这单排障过程完整记录下来,给以后处理类似“光口对接无法UP”的兄弟做个参照。文章适合两类人:一类是刚接手华为防火墙和安全域运维的,还有一类是经常在交换机和防火墙之间做互联但偶尔被光接口搞到头皮发麻的老工程师。
我先说结论:光口起不来,百分之八九十的原因出在物理层建链,而物理层建链失败的根因里,端口速率模式不匹配、光模块规格和接口类型对不上、光纤收发反了这三件事占了绝大多数。真正是光模块烧掉、接口硬件坏掉的占比反而小。所以排障的时候别拆设备,先按顺序查。
1. 故障现场:客户报障时我听到的第一句话
1.1 一张拓扑图和一句“光口起不来”
现场拓扑不算复杂:USG6555F部署在核心交换机和外网之间,作为边界防火墙,下联口用的是10GE1/0/0,是一对SFP+光口;对端是CE6857交换机,上联口是25GE1/0/1。中间走了一段ODF配线架,业务经过两段跳纤到设备端口。客户描述“光口对接不上”,我上设备看了一眼,接口状态是物理层DOWN,Line protocol也是DOWN。
这里有个很重要的基础知识:华为设备上,接口状态分两行,第一行current state是物理层,第二行Line protocol是链路协议层。如果物理层就是DOWN,那后边配置什么都白搭;如果物理层UP、协议层DOWN,那才是VLAN、封装、协议协商的问题。这次两边都down,方向很明确——先解决物理建链。
1.2 设备上看到的down状态说明什么
登录防火墙看接口信息,输出是这样:
<USG6555F> display interface 10GE1/0/0 10GE1/0/0 current state : DOWN (if-down) Line protocol current state : DOWN Description: ......再登录交换机看对端:
<CE6857> display interface 25GE1/0/1 25GE1/0/1 current state : DOWN (if-down) Line protocol current state : DOWN ......两端都是物理层down,说明光模块可能没发光、或者发了光对端没收到、或者两端速率模式对不上。我不建议一上来就换模块,因为换模块是个体力活,而且如果根因是速率协商,换多少模块都没用。客户说“光纤也换过,模块也换过”,那就更说明问题不在硬件本身,而在两端的“频道”没对上。
1.3 物理层DOWN和协议层DOWN,别再混为一谈
很多刚入行的朋友看到接口down就慌,其实先分清是哪一层down,排障方向就清晰一半。我做了个简单对照:
| 状态组合 | 含义 | 优先排查方向 |
|---|---|---|
| current state DOWN | 物理层未建链 | 光模块、光纤、速率模式 |
| current state UP,Line protocol DOWN | 物理层通,协议层断 | VLAN、接口封装、二层协商 |
| current state UP,Line protocol UP | 链路正常 | 路由、安全策略、业务配置 |
这次属于第一行,所以我把精力放在物理层三件套上。
2. 物理层三件套:光模块、光纤、光功率逐个过堂
2.1 光模块的“身份证”怎么验
物理层排障第一步,先看光模块信息。华为设备上命令很统一,CE交换机用display transceiver,USG防火墙也一样:
<USG6555F> display transceiver interface 10GE1/0/0 Interface 10GE1/0/0 transceiver info: Transceiver Type: SFP+ Vendor Name: FINISAR WaveLength: 850nm ...关键看三个字段:模块类型(SFP+还是SFP还是SFP28)、波长(850nm是多模短距离,1310/1550是单模长距离)、厂商。如果看到Vendor Name是第三方兼容厂商,也别急着下结论,华为设备对非原厂模块会打一条“Transceiver is not certified”的告警,但大多数兼容模块正常工作。真正要警惕的是接口速率层级和模块速率层级的匹配——SFP+是10G,SFP28是25G,SFP是千兆,这三类模块虽然外观长得几乎一样,但插错地方就会产生“看起来插得进去,实际上永远协商不上”的诡异现象。
2.2 光模块和接口的速率层级对不上,是一切麻烦的开始
本次故障中,防火墙面是SFP+模块(10G),交换机侧25GE口上插的是SFP28模块(25G)。物理上SFP28模块可以插进25GE口,25GE口也兼容SFP+模块,但问题是接口默认工作在25G速率模式,而防火墙是10G,两边不在一个频道上。这就是后面要重点解决的部分。不过在动配置之前,我先把光纤链路也验了一遍。
这里多说一句:25GE的SFP28模块和10GE的SFP+模块外观几乎一样,但是模块标签上会写明速率等级,很多现场同事插模块的时候根本不看标签,拿起来就插,结果就是物理口一直down。所以验模块时,凡是看到模块速率和接口速率对不上的情况,先记下来,这就是最大嫌疑。
2.3 光纤收发反了,比你想的更容易发生
双纤LC跳线是分TX和RX方向的,A端口的TX必须连到B端口的RX,两根纤不能插反。这个道理大家都懂,但现实中中间隔了一个ODF架、两段跳纤、一段尾纤之后,哪根是TX哪根是RX早就不写在脸上了,接反的概率非常大。
排查方法很简单:先把模块拔下来,看模块发光口有没有红光。多模850nm模块的红光肉眼可见,单模模块的1310/1550nm红外光肉眼看不到,需要借助光功率计。如果一端模块发光正常,另一端Rx光功率却是-40dBm以下甚至读不到,八成就是光纤收发接反或者中间跳接处有断点。把两端收发换一下再测,看光功率能不能恢复正常。
我在现场还遇到过一种更隐蔽的情况:两端设备间走ODF架,机房的尾纤和跳线在ODF端子处被人重新打过,看起来两端接对了,实际上中间某一段收发已经交叉。这种问题光靠两侧设备看不出来,必须用光功率计在ODF端子两侧各测一次,找到光功率消失的那一段。
2.4 光功率衰减到多少算“病危”
光模块的DDM信息能直接读出收发光功率,命令是:
<CE6857> display transceiver diagnosis interface 25GE1/0/1 Tx Power: -3.2 dBm Rx Power: -16.5 dBm Temperature: 42 Celsius判断标准不复杂,10G SR多模模块发送功率一般在-2到-5dBm,接收灵敏度通常在-14dBm左右。我自己的经验阈值是这样的:
| 指标 | 正常 | 临界 | 异常 |
|---|---|---|---|
| Tx Power | -2 ~ -5 dBm | -7 ~ -9 dBm | 低于-10 dBm或读异常 |
| Rx Power | 高于-10 dBm | -10 ~ -14 dBm | 低于-14 dBm,链路大概率down |
| 温度 | 0~60°C | 60~75°C | 超过75°C建议关注 |
注意,不同厂商模块的灵敏度有差异,上面只是通用判断。如果TX power正常但RX power很低,问题在链路上(跳线、ODF、活动连接器);如果TX power本身就不正常,模块大概率已经损坏或没插到位。
这单实测下来,两端的收发光功率都在正常范围,物理链路硬件上是通的,所以我把疑点锁定到速率模式,进入下一轮。
3. 速率模式:25GE口和10GE口之间的协商黑盒
3.1 “自协商”在光口上到底是怎么回事
先说一个容易混淆的点:光口的“自协商”和电口(RJ45千兆口)的自协商不是一回事。电口自协商通过双绞线上的脉冲信号协商速率、双工模式,协商失败会降级。而10G和25G光口没有像电口那种完善的速率自协商机制,建链本质上靠两端光模块的物理编码锁定速率。你插一个10G模块,接口就必须工作在10G模式,如果接口默认去尝试25G的模式,对端模块根本不响应,物理层就锁不住,表现出来就是接口一直down。
打个比方:两个对讲机,一个默认在25频道,一个开在10频道,两边都喊破了喉咙,谁也听不见谁。唯一的办法是手动把其中一个调到和另一个相同的频道。
华为的25GE光口在启用自协商的情况下,理论上应该能自动识别对端速率,但从实际排障经验看,25GE口插入10G SFP+模块后,自协商经常无法收敛,接口会反复尝试25G建链然后失败。这也是为什么很多工程师抱怨“明明模块兼容,速率也对,但就是起不来”——问题就出在它默认跑到25G频道上去了。
3.2 华为设备上的“频道”怎么调:speed命令实战
CE6857的25GE口对接10G模块,正确做法是显式把接口速率降到10G。具体配置如下:
system-view interface 25GE1/0/1 undo negotiation auto speed 10000 commit为什么要先undo negotiation auto?因为华为CE交换机的25GE口默认是自协商开启的,在实际对接中,25GE口插入10G SFP+模块时,自协商经常无法自动收敛到10G,导致链路一直down。显式关闭自协商并锁定speed 10000,反而最稳定。这个“显式锁定”的思路在华为光口对接场景里非常通用,凡是跨速率层级对接,都建议手动指定速率,别指望自协商。
防火墙侧也顺手检查一遍,USG6555F的10GE口同样可以手动指定速率:
interface 10GE1/0/0 undo shutdown speed 10000配置完成后,两端再看接口状态。这次很快就出现我们想看到的结果——接口状态从DOWN变成了UP。物理链路建链成功后,后续配置VLAN、配IP、加安全区域才有意义。
3.3 强制速率后还是down?别忘了这三个“查漏项”
如果speed 10000配完以后接口还是起不来,不要急,按照这个顺序查:
第一,查光模块本身支持的最大速率。有些所谓的“万兆模块”实际上工作在千兆速率,或者模块被刷过标签,用display transceiver看模块的速率能力字段,确认它确实支持10G。
第二,查接口是不是被关闭了。华为设备的接口虽然默认up,但有些交付同事习惯把暂时不用的接口shutdown,排查时执行一次undo shutdown并观察接口日志。
第三,查模块有没有插到位。SFP+模块插入时会有清脆的“咔哒”声,没插到位时,接口可能显示down,但模块Tx power又显示有发光。这种“薛定谔的模块状态”很迷惑人,解决办法是拔出来重新插,直到卡扣锁死。
还有一个小技巧:改完速率配置后,执行一次shutdown再undo shutdown,强制接口重新建链,能省去等光模块自己收敛的时间。华为设备上这条命令组合是:
interface 25GE1/0/1 shutdown undo shutdown commit4. 改成eth-trunk后反而更起不来:聚合场景的隐蔽坑
4.1 业务侧要冗余,结果聚合组比单口还难搞
既然两边各有两个光口,客户自然想着做链路聚合,既扩带宽又保冗余。结果做完之后,Eth-Trunk一直起不来,两个成员口一个UP一个DOWN,物理单口明明已经通了,聚合组却还不如单口稳定。
这个现象很有代表性。光口对接的故障如果只发生在单个物理口上,解决起来相对简单;一旦上了eth-trunk,故障就会被放大:物理层速率不匹配、LACP报文丢失、两端聚合模式不一致,任何一个环节出问题,整个聚合组都起不来。而且热点问题里也有人问“光口是做链路聚合还是主备”,说明这个场景确实困扰了不少人。
4.2 组聚合前必须满足的四个一致
给要做聚合的兄弟列一个自查清单,四项都满足再动手:
| 检查项 | 要求 | 典型故障表现 |
|---|---|---|
| 成员口速率 | 两端所有成员口速率一致,25GE口要统一降到10G | 成员口物理UP但聚合组DOWN |
| 物理口状态 | 加入聚合前,每个物理口单独测试都能UP | 个别成员口DOWN导致聚合带宽异常 |
| 聚合模式 | 两端一致:手工模式或静态LACP | 一端LACP一端手工,成员口协商失败 |
| VLAN/接口属性 | 成员口加入的VLAN、接口类型一致 | 聚合UP但业务VLAN不通 |
尤其第一条,这次客户做聚合时,交换机侧两个25GE口都降到10G了,但有一个口的光模块还是25G模块,另一个口是10G模块,结果速率不一致,导致一个成员口在聚合组里反复震荡。把两个模块统一成10G模式后,聚合组才真正稳定下来。
4.3 物理UP但成员口被踢出聚合组,问题出在哪
LACP模式下,设备会通过成员口定期发送LACP报文。如果对端收不到报文,成员口会被置为Down或Standby,聚合组可用成员数不足,Eth-Trunk就起不来。常见的报文丢失原因有两个:一是物理链路本身不稳定(速率不匹配、光功率处于临界值),报文在物理层就丢了;二是一端配置成了手工负载分担模式,另一端还是LACP,两边协议对不上。
排查命令也很直接:
<CE6857> display lacp statistics <CE6857> display eth-trunk 1 verbose看LACP报文计数有没有持续增长,看成员口状态是Selected还是Unselected。如果报文计数不增长,优先查物理链路和两端模式是否一致;如果Selected状态异常,查成员口速率和VLAN配置。注意,LACP报文计数不增长还有一个容易被忽略的原因:光模块速率不匹配导致物理层时断时续,LACP报文在链路上被丢弃,这种情况在display interface里看到的就是接口状态频繁up/down翻动。
4.4 防火墙侧Eth-Trunk的两个“隐藏规定”
USG系列防火墙在Eth-Trunk上有两个容易踩的坑,我在别处踩过,这里说清楚:
第一,成员口必须同类型。GE口和10GE口不能混在一个Eth-Trunk里,25GE和10GE更不能混。聚合组的成员口速率不一致,会出现一个口疯狂转发、另一个口空转,甚至整个聚合组协商失败。
第二,安全策略要加在Eth-Trunk接口上,不是加在成员口上。防火墙的接口要加入安全区域,Eth-Trunk加入安全区域后,成员口跟着走;如果只在成员口上加,流量从另一个成员口进来时会被安全策略拦掉,表现为接口全UP但业务就是不通。
防火墙侧的聚合配置片段参考:
interface Eth-Trunk1 trunkport 10GE1/0/0 trunkport 10GE1/0/1 mode lacp-static # firewall zone trust add interface Eth-Trunk1交换机侧对应配置:
interface Eth-Trunk1 mode lacp-static trunkport 25GE1/0/1 trunkport 25GE1/0/2 commit两端模式都是lacp-static,成员口速率都统一在10G,聚合组才能稳定up。如果只想做主备而不是负载分担,那直接用两个物理口分别配置IP,跑VRRP或路由优先级,不需要聚合的复杂度。
5. 这次排障留在我台账里的三点教训
5.1 接口类型、接口速率、光模块速率,别混在一个概念里
这次故障最根上的原因,其实是很多人把“25GE接口”当成“能插SFP+模块的10G接口”来用。25GE接口物理上兼容SFP+模块,但速率模式默认是25G,不下发speed 10000,链路就永远建不起来。类似的组合还有GE SFP口插了10G模块、千兆口强制百兆等,都属于“接口类型、接口速率、光模块速率”三者不匹配。以后遇到光口对接不上,先把这三者的匹配关系理清楚,能省掉一大半的无用功。
5.2 光口排障的标准动作,顺序不能跳
我在长期排障中总结了一个顺序,分享给同行参考:
- 确认两端接口命令是什么(GigabitEthernet还是10GE还是25GE),判断速率层级。
- display interface看状态是物理层DOWN还是协议层DOWN。
- display transceiver看光模块型号、波长、厂商,判断模块速率和接口速率是否匹配。
- 看DDM收发光功率,判断链路衰减是否正常。
- 检查光纤收发方向,尤其是中间走ODF跳纤的场景。
- 处理速率协商:25GE口对接10G模块时强制speed 10000,必要时undo negotiation auto。
- 如果做了聚合,再检查两端聚合模式、成员口速率、VLAN一致性。
- 链路UP之后,再回头看路由、安全策略和业务流量。
这个顺序不是命令行顺序,而是思维顺序。每次都从物理层开始,逐层往上推,不要一上来就怀疑配置。我见过太多现场同事一上来就翻配置,翻半天发现物理层还是down,白白浪费时间。
5.3 配置完之后的三个“防回退”动作
链路UP还不算完,我必须把这次配置固化成能长期稳定运行的形态:
第一,保存配置。CE交换机配置要用commit提交,否则设备重启后配置丢失;USG防火墙用save保存。这一步被忽略,第二天设备重启故障复现的案例太多了。
第二,做一次拔插和接口重启验证。把光纤拔掉再插回去,确认链路能自动恢复;执行shutdown/undo shutdown,确认接口能重新建链。目的很明确:排除“一次性UP”的偶然性,验证配置在真实运维操作下依然有效。
第三,跑真实业务流量。接口UP不代表业务通,ping一下对端网关、跑一下业务端口,确认防火墙安全策略放通,再做业务验收。我曾经遇到接口UP但业务全断的尴尬,就是安全策略没放行。
最后说一句个人体会:光口对接不上这种故障,十次里有八次不是硬件坏了,而是端口速率模式、光模块规格、接口类型这三样东西之间的匹配关系出了问题。把“速率层级”这个概念扎扎实实装进脑子里,再配合一套不跳步的排障顺序,这类故障基本都能在半小时内定位。以后遇到“防火墙和交换机光口对接无法UP”,先别急着换模块,按这篇文章的顺序走一遍,大概率能直接找到答案。