三層交換機之端口丟包問題分析


博通交換芯片,工程現象報交換入端口丟包。

此時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資源溢出


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM