三层交换机之端口丢包问题分析

博通交换芯片,工程现网报交换入端口丢包。

此时show counters <pbmp>查看指定端口包统计,RDBGC0和RDBGC2有包统计,RDBGC0~x包统计是从RDBGC0~x寄存器中读取的。

BCM.0> show c ge16
RUC.ge16                :         8,986,723,402            +247,394             626/s
RDBGC0.ge16             :               458,068                  +2
RDBGC2.ge16             :             1,602,654                 +88               2/s
ING_NIV_RFVT.ge16       :         8,992,946,921            +247,733             628/s
R127.ge16               :         6,393,207,709            +239,477             584/s
R255.ge16               :           293,909,171              +2,879              17/s
R511.ge16               :            69,994,865              +1,456               6/s
R1023.ge16              :            83,653,035              +1,847               8/s
R1518.ge16              :         2,152,046,041              +2,029              13/s
R2047.ge16              :               136,260                 +45
RPKT.ge16               :         8,992,947,081            +247,733             628/s
RUCA.ge16               :         8,986,587,142            +247,349             626/s
RMCA.ge16               :             1,603,814                 +88               2/s
RBCA.ge16               :             4,619,865                +251
ROVR.ge16               :               136,260                 +45
RPRM.ge16               :         8,986,587,142            +247,349             626/s
RPOK.ge16               :         8,992,810,821            +247,688             628/s
RBYT.ge16               :     3,355,369,191,852         +25,630,497          79,117/s
T64.ge16                :            58,350,600              +1,120
T127.ge16               :           931,738,405             +14,357              48/s
T255.ge16               :           324,775,053              +3,759              18/s
T511.ge16               :           129,863,807              +2,768              10/s
T1023.ge16              :           182,777,634              +2,768              12/s
T1518.ge16              :        14,285,643,850            +343,825             862/s
TMGV.ge16               :           733,899,970              +1,000
T2047.ge16              :           733,899,978              +1,000
TPOK.ge16               :        16,647,049,319            +369,597             950/s
TPKT.ge16               :        16,647,049,327            +369,597             950/s
TUCA.ge16               :        16,559,797,943            +368,102             950/s
TMCA.ge16               :             4,678,987                +875
TBCA.ge16               :            82,572,389                +620
TVLN.ge16               :        16,647,049,319            +369,597             950/s
TBYT.ge16               :    19,985,827,660,546        +445,383,464       1,115,598/s
PERQ_PKT.ge16           :        10,496,740,131            +261,033              71/s
PERQ_BYTE.ge16          :    12,391,027,325,988        +323,472,166          31,036/s

查找芯片手册,找到RDBGC0寄存器的描述,该寄存器统计的包类型由RDBGC0_SELECT寄存器值决定(其他RDBGCx类似)

找到RDBG0_SELECT寄存器的描述,可以看到该寄存器实际上是一个bitmap,每一位表示不同类型的包。

RDBGCx_SELECT的bitmap映射,参考如下定义

 接下来,在BCM命令行下获取RDBGC0_SELECT寄存器值

BCM.0> g RDBGC0_SELECT
RDBGC0_SELECT.ipipe0[1][0x3e002100]=0x400ad11: <BITMAP=0x400ad11>

使用排除法,分别置位获取到的RDBGC0_SELECT寄存器值中置位的每一位

BCM.0> s RDBGC0_SELECT 0x4000d11
BCM.0> g RDBGC0_SELECT
RDBGC0_SELECT.ipipe0[1][0x3e002100]=0x4000d11: <BITMAP=0x4000d11>

清除端口包统计,再读取端口包统计(需要注意的是,端口包统计一般是定时刷新的,而不是及时刷新的,因此,多次读取之间要间隔一定时间)

BCM.0> show c ge16
RUC.ge16                :         8,987,412,514            +324,780             168/s
RDBGC2.ge16             :             1,602,897                +126
ING_NIV_RFVT.ge16       :         8,993,636,960            +325,258             168/s
R127.ge16               :         6,393,875,436            +314,042             158/s
R255.ge16               :           293,916,429              +3,896               7/s
R511.ge16               :            69,998,999              +2,208
R1023.ge16              :            83,658,311              +2,646               3/s
R1518.ge16              :         2,152,051,614              +2,406               1/s
R2047.ge16              :               136,331                 +60
RPKT.ge16               :         8,993,637,120            +325,258             168/s
RUCA.ge16               :         8,987,276,183            +324,720             168/s
RMCA.ge16               :             1,604,057                +126
RBCA.ge16               :             4,620,549                +352
ROVR.ge16               :               136,331                 +60
RPRM.ge16               :         8,987,276,183            +324,720             168/s
RPOK.ge16               :         8,993,500,789            +325,198             168/s
RBYT.ge16               :     3,355,440,490,454         +33,006,703          19,805/s
T64.ge16                :            58,354,402              +1,583               1/s
T127.ge16               :           931,777,872             +18,888              24/s
T255.ge16               :           324,783,220              +4,211               5/s
T511.ge16               :           129,871,134              +3,907               2/s
T1023.ge16              :           182,784,285              +2,589               3/s
T1518.ge16              :        14,286,679,112            +490,089               1/s
TMGV.ge16               :           733,905,887              +1,027               1/s
T2047.ge16              :           733,905,895              +1,027               1/s
TPOK.ge16               :        16,648,155,912            +522,294              37/s
TPKT.ge16               :        16,648,155,920            +522,294              37/s
TUCA.ge16               :        16,560,901,956            +521,342              37/s
TMCA.ge16               :             4,679,119                 +69
TBCA.ge16               :            82,574,837                +883
TVLN.ge16               :        16,648,155,912            +522,294              37/s
TBYT.ge16               :    19,987,169,754,335        +632,563,687           8,781/s
PERQ_PKT.ge16           :        10,497,536,696            +327,902              18/s
PERQ_BYTE.ge16          :    12,392,014,968,180        +404,154,675           3,608/s

实测发现,当置位RDROP位和RFILDR位时,会统计到入端口丢包

其中,RDROP是指端口无法转发该SVLAN+DMAC的报文,原因可能有两种——1)端口未加入SVLAN所在转发域(用vlan show检查),2)另外一个端口学习了SVLAN+DMAC的转发表项,但是两个端口之间配置了端口隔离(用egress show检查),导致报文无法转发到另外一个端口;RFILDR是指入端口报文匹配FP规则丢弃。

 

同理,排查出端口丢包也可以借鉴上述思路,参考TDBGCx_SELECT的bitmap映射:

 

A盘

 

 

导致端口丢包的原因:
1、由于某些接口、链路、双工异常导致的CRC错误(FCS帧)、Alignment Error帧、帧长不在MTU范围的报文等常见错误此类报文交换机会予以丢弃——计入端口包统计,查看端口计数,是否有FCS或者冲突帧
2、QoS限速、rate-limit配置导致的数据包正常丢弃
3、端口BLOCK(STP/RLDP)导致的数据包正常丢弃——查看端口生成树状态
4、对端设备发送的速率过快导致本端交换机buffer不足,而又没有流控(PAUSE帧)导致的丢包——计入端口包统计,尝试两端打开端口流控
5、多端口向一个端口发送报文,超出这个端口的转发能力,导致HOL队头阻塞丢包——尝试调整端口速率和开启端口流控观察
6、由于环境因素(例如异常帧较多),导致MMU资源溢出

posted on 2020-09-24 14:45  者旨於陽  阅读(2570)  评论(0编辑  收藏  举报

导航