三层交换机之风暴控制
博通风暴控制
风暴控制(Storm Control)是针对入端口报文速率非常高,冲击下游网络的场景的抑制手段。
通常情况下,风暴的来源是广播包洪泛、未知组播洪泛、未知单播包洪泛这几种方式。
交换机通常会针对入端口(下行为上联口、上行为业务盘UNI端口)的广播包、未知组播包、未知单播包提供包抑制的手段。
除此之外,博通交换芯片还提供了另外一种Storm Control的手段,可以针对未知单播、未知IP组播、已知IP组播、未知组播、已知组播、广播包6种类型的报文进行包抑制。
6位PORT.SOTRM_CONTROL_PTR和2位STORM_CONTROL_METER_MAPPING(6种类型的报文,各占2位)拼接成一个索引,指向FP_SOTRM_CONTROL_METERS对应表项。
FP_SOTRM_CONTROL_METERS表项中,refershcount设置包抑制值,bucketsize是令牌桶的一个概念,即数据单元大小。
另外,SOTRM_CONTROL_METER_CONFIG寄存器可以配置每个端口6种报文包抑制的开关,packet_quantum指byte_mode为0时,最多可以拥有的令牌数(令牌桶机制)。
交换芯片风暴控制实现原理
以广播风暴控制(广播包抑制)为例,如上图所示,交换芯片首先通过目的MAC地址甄别出广播包,然后通过包抑制监控单元(Suppression Circuitry)统计一秒钟内的广播包个数,如果在这一秒内计数达到抑制值,则过滤掉后续的广播报文。
交换芯片实际上是基于端口带宽来统计广播报文,因此最重要的因素是设置包抑制值,即占用带宽的百分比。
另外,因为入端口报文并不是以固定的时延抵达,因此,统计的时间间隔也会对包抑制的效果产生影响。
一个包抑制监控单元的实现如上图,它可以在Ingress和Egress方向进行单位时间内的计数,根据阈值决定是否过滤多余报文。
Tips: 部分交换芯片因为流水线的原因,匹配ACL规则的报文会不受包抑制的影响。