博通風暴控制
風暴控制(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規則的報文會不受包抑制的影響。