
端口丢包原因解析与排查指南.docx
26页mi文件类型: 故障类版本号:V1.0(28/09/08)文档 王雁文档密级: 受控(和页面一致)内审人: 使用对象:一线工程师端口丢包原因解析及排查指南2023-9-28福建星网锐捷网络版权所有侵权必究修订记录日期修订说明执行人2023-9-28第一次发布王雁目录1数据包处理流程说明41.1交换机芯片结构41.2数据包处理流程51.3缓冲区61.4IBP与HOL7IBP7HOL7IBP与HOL的联系82端口丢包常见原因及处理办法122.1端口计数器的说明122.2底层常见计数器说明142.3端口丢包常见原因172.4端口丢包和转发丢包的联系与区别173端口丢包故障处理案例203.1S86端口下出现output方向的drop计数203.2S26开启组播,组播画面出现马赛克244常见FAQ314.1Storm-control控制的报文方向314.2QOS限速导致的端口丢包是否会在show interface gi xx显示?314.3生成树block的端口,output方向是否有丢弃包的计数?311 数据包处理流程说明1.1 交换机芯片结构交换芯片是交换机的灵魂,交换芯片注定了交换机的数据转发性能及部分功能。
例如不同型号产品的芯片型号便有所不同,但芯片的总体逻辑架构基本都如下图所示,模块化的交换机也基本都是多线卡组合起来的,实质就是单芯片通过Hi-Gig口连接到背板形成星型结构,由引擎来进行集中管理和控制功能说明:强烈推荐大家阅读此篇文档,加深对交换机硬件的理解《千兆位以太网交换芯片BCM5690及其在交换机中的应用》 :// 360doc /content/08/0824/22/494_1572961.shtml#名词解释:ASIC(MAC 芯片):为所有端口提供线速交换,ASIC:内部提供多种tables,如MAC地址表,VLAN表,MSTP表,链路聚合表,链路聚合流量平衡表, IPMC表(IP组播表),用于策略控制的FFP(Fast Filter Process)表等这些都是在MAC芯片内部存贮,以CAM或TACM的方式寻址,硬件实现,完全满足数据包需要线速处理和转发的需要MMU:memory management unit,管理和存贮交换缓存单元,并暂存数据帧1.2 数据包处理流程以上图片中是最常见的数据处理逻辑所有的数据流通过交换芯片都要经过输入部分(Ingress)、内存管理单元(MMU)和输出部分(Egress)这三个流程.其数据流程如上图。
Ingress(输入逻辑)是数据包在每端口上的逻辑流程.每端口都有自己的输入逻辑,输入逻辑负责所有包的转发(交换)策略,(例如进行MAC表查询、路由表查询、FFP过滤(ACL、QOS染色)等)决定将包送给哪个端口,根据转发信息将数据包发送给MMU,进行缓冲和调度,并以线速对包进行处理.输入逻辑与大部分交换功能关联MMU(内存管理单元)主要负责数据包的缓冲与调度,它接收从输入逻辑过来的数据包并缓冲这些包,同时对这些包进行调度并将它们送给输出逻辑.数据包进入MMU时将存储在CBP里.CBP有1MB(不同芯片容量不一致)的大小供所有端口共用.MMU主要有四部分功能:资源计数、背压、HOL预防机制、调度.其中资源计数主要是统计当前消耗的CBP单元数或CBP数据包个数,决定数据包什么时候进入背压或HOL预防;调度则是根据优先级和COS的多种调度准则(也就是我们常见的QOS调度)来确定包发送的先后顺序和权重Egress(输出逻辑)主要从MMU获取数据包并将其送入各个端口,这是整个流程中最简单的一环.它先将包发给输出端口,然后确定是否在发送的数据包上添加tag.具体流程如下:首先从MMU请求数据包,如果发送的包要求不带tag,则负责将tag去掉;然后计算数据包的CRC;最后将包交给MAC发送(特殊情况下,CMIC(CPU管理接口)将直接把数据包以DMA方式发送给CPU),基于端口的限速功能也在Egress阶段完成。
了解以上数据在芯片中的调度转发流程有助于我们理解数据在哪些地方可能会被丢弃1.3 缓冲区涉及到缓冲区的两个概念就是:CBP和MMU公共缓冲池CBPCBP实际上是1M共享的包缓冲区.本案例中以BCM5690为参考进行介绍CBP由8192(8K)个单元组成,每个单元128字节设备里的每个数据包消耗一至多个单元内存管理单元MMU:BCM5690有一个单独的内存管理单元每个MMU与设备的功能块(GPIC、IPIC等)相关联GIGA接口控制器GPIC:用于提供GE口与交换逻辑之间的接口内联端口(HiGig)控制器IPIC:主要提供HiGig口与内部交换逻辑之间的接口,有时也被用于多片BCM5690之间的堆叠操作} MMU负责数据包的缓冲和调度.它首先接收数据包,然后再将数据包缓冲,并在发送时加以调度,同时它还管理交换单元的流控特性.概括来说,就是缓冲逻辑、调度逻辑、流控逻辑.缓冲逻辑从CP-BUS(总线)接收包并存放在CBP,同样也从CBP获取包并将它们发送到CP-BUS(总线)上去包的发送顺序由调度逻辑根据包的优先级别确定流控逻辑包括Head-of-LineHOL 阻塞预防和Backpressure两种方式.缓冲区的大小由芯片决定,但缓冲区的分配方式可以进行调整。
例如每端口固定分配或动态共享BCM芯片系列一般采用平均分配的方式,因为考虑到Fair公平性的原则,这是一种比较理想的设计目前的设计采用了静态+动态共享的方式(静态分配一部分缓冲区+动态全局共享一部分,智能调整)Mavell芯片系列可以进行人工调整,例如可以使用buffer manage FC|QOS来进行调整QOS模式可以共享缓冲区大小,并根据报文的COS优先传输高优先级的报文,低优先级的报文进行缓冲或给高优先级报文提供更多的缓冲空间,来不及缓冲的直接丢弃当采用FC模式时,平均分配缓冲区大小并通过发送Pause帧,要求对方减少发送速率,从而避免丢弃当出现no buffer丢包时,发送pause帧,需要两端开启Flow control)1.4 IBP与HOL1.4.1 IBPIBP(ingress black pressure)是一种关注每个Ingress入端口CBP Bufffer率用率的方法,当缓冲率用率达到一定比率时,一个Pause帧就由Ingress口发出,如果对端支持流控,那么就会暂停一段时间,从而宏观上减少了发送速率,从而可以减小本机缓冲区的利用率,达到不丢包的目的1.4.2 HOLHOL(head of line队头阻塞)是一种关注每个Egress出端口Buffer利用率的方法,当利用率达到一定比率时,从CBP Buffer送到端口的TX 队列的报文就会被丢弃。
出端口其实并没有物理上的缓冲区,只是做了一个出端口的队列(Transaction Queue,其实就是我们的COS队列),这个队列的指针指向CBP缓冲区队列根据端口的速率固定分配了长度,当报文在经历Ingress—MMU阶段中,会决定报文的某个Egess出接口,于是将TX队列尾指针指向CBP中此报文的缓冲区位置,HOL就是关注这个Transaction Queue的使用率,当在实际应用中,例如某个千兆口向百兆口快速发包就可能导致TX队列超出limit,那么后续需要将CBP报文写入TX队列的报文将会被丢弃,从而导致丢包,如果入接口开启了流控,HOL溢出也会在入接口发送Pause流控帧1.4.3 IBP与HOL的联系从上面IBP与HOL的描述,我们可以看出,IBP关注于:入接口的缓冲区率用率情况HOL关注于:出接口的队列使用情况(类似于缓冲区的率用率情况)两者的关联关系可以这样描述:所以入丢包和出丢包时两个不同的阶段,HOL丢包,不一定回同时有IBP事件产生有IBP事件产生也不一定会导致HOL丢包,但有IBP存在的时候,HOL出现的几率更大因为某端口的入速率变大,那么往另外一个某出口的出速率也可能增大,导致HOL溢出丢包。
当入端口有限速(非QOS限速,即rate-limit)如果朝这个端口发包超过这个速率,也会导致此端口发送PAUSE流控帧,如果配置了出端口限速(即rate-limit),那么交换机转发到此端口的速率超出了限制,也会发生流控另外,广播包(组播、单播)限速(storm control)和COS限速不会导致发生流控,而是直接丢弃那么我们如何判定是否有IBP的情况呢?怎样又表明HOL存在溢出导致的丢包呢?IBP导致的丢包,一般通过上层命令都可以查看到:例如:show interfaces gigabitEthernet 0/1结果:Index(dec):1 (hex):1GigabitEthernet 0/1 is DOWN , line protocol is DOWN Hardware is marvell GigabitEthernetDescription: TO-ZGE-S8610-2_GE2/1Interface address is: no ip address MTU 1500 bytes, BW 1000000 Kbit Encapsulation protocol is Bridge, loopback not set Keepalive interval is 10 sec , set Carrier delay is 2 sec RXload is 1 ,Txload is 1 Queueing strategy: WFQ Switchport attributes: interface's description:"TO-ZGE-S8610-2_GE2/1" medium-type is copper lastchange time:0 Day: 0 Hour:45 Minute:26 Second Priority is 0 admin duplex mode is AUTO, oper duplex is Unknown admin speed is AUTO, oper speed is Unknown flow control admin status is OFF,flow control oper status is Unknown broadcast Storm Control is ON,multicast Storm Control is OFF,unicast Storm Control is ON 5 minutes input rate 0 bits/sec, 0 packets/sec 5 minutes output rate 0 bits/sec, 0 packets/sec 37167599 packets input, 2566418459 bytes, 45 no buffer, 45 dropped//丢包45个 Received 58764 broadcasts, 0 runts, 0 giants 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 abort 37210638 packets output, 2565322398 bytes, 0 underruns , 0 dropped 。












