三層交換機之BCM56312交換芯片MMU介紹


概述

BCM56310系列交換芯片不支持HQoS,其MMU提供以下功能:

1)Ingress back pressure (IBP)

2)PAUSE metering

3)Head-of-line (HOL) blocking prevention

4)Congestion bits

本方案旨在對緩存利用增加約束條件,同時確定擁塞場景的預定義行為。芯片內部的擁塞丟包要么體現在入端口包統計,要么體現在出端口和COS隊列包統計。

IBP(Ingress Back Pressure)

IBP機制的目的有兩個:

1)最大限度保證不丟包;

2)盡量讓各Ingress Port公平地利用緩存資源;

IBP機制包括local IBP(end-to-end IBP)和remote IBP(end-to-end flow control)。

IBP利用IBPPKTCOUNTIBPCELLCOUNT兩個計數器來統計每個ingress port占用的MMU cell數和包個數。當入口擁塞時,PAUSE流控幀被用來告知對端停止發送報文,什么時候發送PAUSE流控幀取決於前述計數值和一些預定義的閾值。

IBPBKSTATUS用來跟蹤ingress port是否處於back pressure狀態。當ingress port處於back pressure狀態時,定期發送PAUSE流控幀(timer value 0xffff)給對端,解除back pressure狀態之后,發送PAUSE流控幀(timer value 0x0)給對端通知對端繼續發送報文。

當IBPCELLCOUNT超過CELLSETLIMIT時,ingress port進入back pressure狀態並停止收包;當超過DISCARDSETLIMIT時,開始丟包;降至RESETLIMITSEL時,退出backpressure狀態並開始收包。

IBP Cell Thresholds和Packet Thresholds任意一個滿足條件,則進入back pressure狀態;兩者且不滿足,才退出back pressure狀態。

 

各閾值寄存器定義如下:

PAUSE Metering

每個ingress port都有一個單獨的漏桶(leaky bucket)用來計算端口占用的帶寬。PAUSE Metering可以用來觸發ingress port反壓(即PAUSE流控幀),從而限制帶寬。這種機制提供了入端口流量整形(rate shaping)的能力。

 漏桶的原理是,每隔T_REFRESH時間間隙,從BUCKET_COUNT中取出REFRESHCOUNT個令牌(token),最開始,BUCKET_COUNT為0,當入端口接收報文時,令牌被放入BUCKET_COUNT中。

每發送一個cell數據,漏桶狀態都會被更新。當MMU檢測到達到閾值時,會在1~2個時鍾周期內給入端口發送消息,入端口在完成當前數據發送之后響應。

當MMU占用資源達到DISCARD閾值時,MMU開始丟棄后續報文(同時通知ingress port丟棄后續報文),直到MMU占用資源降低到RESUME閾值。

HOL Prevention

HOL預防機制的目的是:

  • 最大限度保證緩存不丟包
  • 以Egress Port和COS隊列的粒度管理緩存資源

IBP是最大限度保證不丟包,而HOL是通過有選擇的丟包來實現緩存管理。

HOL包統計寄存器

COSPKTCOUNT

COSCELLCOUNT

DYNCELLCOUNT

TOTALDYNCELLUSED

HOL狀態寄存器

HOLSTATUS

HOL閾值寄存器

為了處理接收到的分片包,MISCCONFIG.SKIDMARKER用來設置最大分片數。因此,真實的PKTSETLIMIT閾值是PKTSETLIMIT - MISCCONFIG.SKIDMARKER。

MISCCONFIG.DYNAMIC_MEMORY_EN決定當前緩存是靜態分配還是動態分配。

靜態緩存分配

LCCOUNT統計每個Egress Port和COS隊列的緩存占用數,如果達到LWMCOSCELLSETLIMIT.CELLSETLIMIT,則置為HOL狀態,降到LWMCOSCELLSETLIMIT.CELLRESETLIMIT,則解除HOL狀態。

動態緩存分配

每個COS隊列都會分配一個保證cell數,由LWMCOSSETLIMIT.CELLSETLIMIT配置,其總和不應該超過CBP總cell數(6144)。剩下的cell資源被稱為“Dynamic Pool”,被所有COS隊列共享,動態緩存分配的閾值即定義每個COS隊列最大可以從共享緩存池中占用的cell數的比例,其實際占用數可以通過TOTALDYNCELLUSED獲取。

芯片級別的HOL通過TOTALDYNCELLUSED計數與TOTALDYNCELLLIMIT和TOTALDYNCELLRESETLIMIT比較決定。

端口級別的HOL通過DYNCELLCOUNT計數與DYNCELLSETLIMIT和DYNCELLRESETLIMIT比較決定。

LWNCOSSETLIMIT.CELLSETLIMIT和DYNCELLLIMIT共同決定每個端口可以占用cell數的上限。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM