三層交換機之Flex Counter
阿新 • • 發佈:2021-06-15
一般情況下,BCM命令show counter <pbmp>命令可以檢視各埠的包統計,但是,有時候,我們需要檢視MMU入佇列、出佇列以及佇列丟包統計。此時,就需要用到Flexible Counter Pool了。
XGS系列交換晶片有12個Flexible Counter表(Pool),每張表1024個表項,被MMU用來記錄enqueue和dequeue的報文個數。
soc/common/counter.c:141: * CTR_FLEX_COUNT_0/1/2/3 = Total ENQ discarded soc/common/counter.c:142: * CTR_FLEX_COUNT_4/5/6/7 = Red packet ENQ discarded soc/common/counter.c:143: * CTR_FLEX_COUNT_8/9/10/11 = Total DEQ soc/common/counter.c:162: * CTR_FLEX_COUNT_0 = Total ENQ discarded soc/common/counter.c:163: * CTR_FLEX_COUNT_1 = Total ENQ Accepted soc/common/counter.c:164: * CTR_FLEX_COUNT_2 = Green ENQ discarded soc/common/counter.c:165: * CTR_FLEX_COUNT_3 = Yellow ENQ discarded soc/common/counter.c:166: * CTR_FLEX_COUNT_4 = Red packet ENQ discarded soc/common/counter.c:167: * CTR_FLEX_COUNT_5 = Green ENQ Accepted soc/common/counter.c:168: * CTR_FLEX_COUNT_6 = Yellow ENQ Accepted soc/common/counter.c:169: * CTR_FLEX_COUNT_7 = Red ENQ Accepted soc/common/counter.c:170: * CTR_FLEX_COUNT_8 = Total DEQ
每個Flexible Counter Pool可以對映為某一種型別的包統計,如ENQ(enqueue)、DEQ(dequeue)等,具體配置由BCM SDK實現,以後再補充說明。
使用之前,首先需要停止counter任務的執行(設定interval為0,恢復執行時設定採集時間間隔即可),因為存在衝突。
BCM.0> counter Current settings: Interval=1000000 PortBitMap=0x00000000000000001fffffff, cpu,ge,xe DMA=True BCM.0> counter interval=0
接下來,讀取flex counter計數,關於佇列對映,後面再補充說明。其中,CTR_FLEX_COUNT_0表示Total ENQ Discard,即入佇列丟包;CTR_FLEX_COUNT_8表示Total DEQ,即出佇列包統計。
BCM.0> d chg CTR_FLEX_COUNT_0 56 8 CTR_FLEX_COUNT_0.mmu0[56]: <ECCP=0x16,ECC=0x16,DATA=0x2bda00000b,COUNT=0xb,BYTE_COUNT=0x15ed> CTR_FLEX_COUNT_0.mmu0[57]: <DATA=1,COUNT=1> CTR_FLEX_COUNT_0.mmu0[58]: <DATA=1,COUNT=1> CTR_FLEX_COUNT_0.mmu0[59]: <DATA=1,COUNT=1> CTR_FLEX_COUNT_0.mmu0[60]: <DATA=1,COUNT=1> CTR_FLEX_COUNT_0.mmu0[61]: <DATA=1,COUNT=1> CTR_FLEX_COUNT_0.mmu0[62]: <DATA=1,COUNT=1> CTR_FLEX_COUNT_0.mmu0[63]: <DATA=1,COUNT=1> BCM.0> d chg CTR_FLEX_COUNT_8 56 8 CTR_FLEX_COUNT_8.mmu0[56]: <PARITY=1,ECCP=0x59,ECC=0x19,DATA=0x310d1fa006a41,COUNT=0x6a41,BYTE_COUNT=0x18868fd> CTR_FLEX_COUNT_8.mmu0[57]: <PARITY=1,ECCP=0x71,ECC=0x31,DATA=0x10112000147,COUNT=0x147,BYTE_COUNT=0x8089> CTR_FLEX_COUNT_8.mmu0[58]: <DATA=1,COUNT=1> CTR_FLEX_COUNT_8.mmu0[59]: <DATA=1,COUNT=1> CTR_FLEX_COUNT_8.mmu0[60]: <DATA=1,COUNT=1> CTR_FLEX_COUNT_8.mmu0[61]: <PARITY=1,ECCP=0x7c,ECC=0x3c,DATA=0x61ec29e0091a7,COUNT=0x91a7,BYTE_COUNT=0x30f614f> CTR_FLEX_COUNT_8.mmu0[62]: <PARITY=1,ECCP=0x52,ECC=0x12,DATA=0xfe5d00003ed,COUNT=0x3ed,BYTE_COUNT=0x7f2e8> CTR_FLEX_COUNT_8.mmu0[63]: <PARITY=1,ECCP=0x4f,ECC=0xf,DATA=0x2ad0000052,COUNT=0x52,BYTE_COUNT=0x1568>