1. 程式人生 > 其它 >三層交換機之Flex Counter

三層交換機之Flex Counter

一般情況下,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>