zoukankan      html  css  js  c++  java
  • 三层交换机之端口丢包问题分析

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

    此时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映射:

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

  • 相关阅读:
    sqlserver用户授予权限
    数据库内创建用户失败
    连接服务器出错
    ajax基础请求
    --------基础部分总结---------
    冒泡排序(面试题)
    二维数组
    利用for循环使用数组
    数组的内存分析与三种初始化类型
    数组 声明和创建 数组内的所有元素相加
  • 原文地址:https://www.cnblogs.com/justin-y-lin/p/13724014.html
Copyright © 2011-2022 走看看