03-數據緩衝區配置
本章節下載: 03-數據緩衝區配置 (309.65 KB)
目 錄
數據緩衝區用來臨時存儲報文,如圖1-1所示,數據緩衝區分為接收緩衝區、發送緩衝區和Headroom緩衝區:
· 接收緩衝區:用來緩存接收的數據。當設備的CPU繁忙時,端口不能立即將收到的報文交給CPU處理,會將數據暫時存儲到接收緩衝區。
· 發送緩衝區:用來緩存發送的數據。當網絡擁塞時,端口不能立即發送數據,為防止數據丟失,會將數據暫時存儲到發送緩衝區。
· Headroom緩衝區:設備優先使用接收緩衝區和發送緩衝區,當這兩種數據緩衝區用盡後,設備將使用Headroom數據緩衝區提供額外的報文緩存能力。
發送數據緩衝區和接收數據緩衝區在緩存數據時,都會同時用到cell資源。cell資源用來存儲數據包的內容,端口會根據報文的實際大小占用相應大小的cell資源。比如一個cell資源是208字節,假設當發送的報文是128字節時,端口會給它分配一個cell資源,當發送的報文是300字節時,端口會給它分配兩個cell資源。
cell資源分為共享區域和固定區域。
· 固定區域是按隊列劃分的,每個隊列又按端口均分,如圖1-2所示。如果設備CPU繁忙或網絡發生擁塞,設備在接收或發送報文時,會根據一定的策略將報文分發到相應的隊列。如果該端口的該隊列緩衝區滿,則放到共享區域中的相應隊列;如果共享區域中該隊列滿,則將報文丟棄。在固定緩衝區中,係統會根據用戶的配置給隊列預留指定大小的空間,即便該隊列沒有報文存儲需求,其他隊列也不能搶占。給隊列預留的空間均分給每個端口的,即使某端口的某隊列沒有報文存儲需求,其他端口也不能搶占。
· 共享緩衝區隻按隊列劃分,不再按端口均分,如圖1-2所示。係統會根據用戶配置以及實際需要收發報文的數量決定每個隊列實際可占用的緩衝區的大小。如果某個隊列沒有報文存儲需求,則其他隊列會搶占該隊列的配額。對於某個隊列的緩衝區,所有端口接收或發送的報文采用搶占的方式,先到先得,如果資源耗盡,則後到達的報文將被丟棄。
· 共享緩衝區還可以按照服務池(Service Pool)進行劃分,如圖1-2所示。服務池是針對不同應用服務劃分出來的獨立空間,在接收緩衝區、發送緩衝區中的共享緩衝區內劃分。同時,用戶可以配置指定隊列映射到指定服務池,此時該隊列隻能搶占該服務池的資源,不會影響其它服務池的工作。缺省情況下,所有共享緩衝區均屬於Service Pool 0。
用戶可以使用以下兩種方式配置數據緩衝區: 配置Burst功能自動分配緩衝區 手工配置數據緩衝區 需要注意的是,以上兩種數據緩衝區的配置方式不能同時使用,如果已經使用某一種方式進行了配置,則必須先取消該方式的配置之後,才能使用另外一種方式進行配置。否則,配置失敗。 數據緩衝區的配置比較複雜,而且對設備的轉發功能有重要的影響,建議用戶不要輕易修改數據緩衝區的缺省參數。在需要較大的緩存空間時,建議使用Burst功能來自動分配緩衝區。
請在設備接收轉發報文之前完成手工分配數據緩衝區。如果在報文轉發過程中配置PFC、QoS、數據緩衝區相關命令會導致端口流量中斷,出現BFD和LLDP協議震蕩。
· buffer apply
· buffer egress cell queue shared(配置本命令本身不丟包,執行buffer apply應用配置時丟包)
· qos wred apply
· qos wrr weight
· qos wrr group weight
· qos wfq byte-count
· qos wfq queue-id group { 1 | 2 } byte-count
· priority-flow-control no-drop dot1p
· priority-flow-control dot1p headroom
· priority-flow-control dot1p ingress-buffer dynamic
· priority-flow-control dot1p ingress-buffer static
· priority-flow-control dot1p ingress-threshold-offset
· priority-flow-control dot1p reserved-buffer
數據緩衝區配置任務如下:
· (可選)配置數據緩衝區監控功能
· (可選)配置數據緩衝區告警功能
在下列情況下,Burst功能可以提供更好的報文緩存功能和流量轉發性能:
· 廣播或者組播報文流量密集,瞬間突發大流量的網絡環境中。
· 報文從高速鏈路進入設備,由低速鏈路轉發出去。
· 報文從相同速率的多個端口同時進入設備,由一個相同速率的端口轉發出去。
開啟數據緩衝區自動分配功能前後,設備緩衝區的分配情況會有較大的變化,可以通過display buffer命令查看開啟前後設備數據緩衝區的分配情況。
(1) 進入係統視圖。
system-view
(2) 開啟Burst功能。
burst-mode enable
缺省情況下,未開啟Burst功能。
設備上整個數據緩衝區的大小是固定的,用戶可以手工配置共享區域的大小,其餘部分將自動成為固定區域。
缺省情況下,所有隊列均分共享區域/固定區域。用戶可以手工調整指定隊列最多可使用的共享區域/固定區域的大小,其它未配置的隊列最多可使用的共享區域/固定區域的大小仍遵循缺省值。
system-view
(2) 配置數據緩衝區分配規則。請至少選擇其中一項進行配置。
¡ 配置數據緩衝區中共享區域的大小。
buffer egress [ slot slot-number ] cell total-shared ratio ratio
在未配置本命令的情況下,使用display buffer命令可以查看其缺省值。
¡ 配置隊列最多可使用的共享區域的大小。
buffer egress [ slot slot-number ] cell queue queue-id shared { ratio ratio | size }
缺省情況下,每個隊列最多可使用的共享區域比例均為20%。
buffer egress [ slot slot-number ] cell queue queue-id shared size命令是配合PFC功能使用的。不使用PFC功能時,請勿單獨配置本命令。有關PFC功能的詳細介紹,請參見“二層技術-以太網交換配置指導”中的“以太網接口”。
各隊列最多可使用的共享區域的大小將根據buffer queue shared配置,以及實際需要收發報文的數量決定。
¡ 配置隊列最多可使用的固定區域的大小。
buffer egress [ slot slot-number ] cell queue queue-id guaranteed ratio ratio
缺省情況下,所有隊列最多可使用的固定區域大小均為13%。
所有隊列所配置的固定區域大小之和,不應超過可配置的總固定區域大小,否則配置失敗。
¡ 配置服務池最多可使用的共享區域的大小。
buffer { egress | ingress } [ slot slot-number ] cell service-pool sp-id shared ratio ratio
缺省情況下,服務池0可使用的共享區域的大小為100%。
(3) 應用數據緩衝區分配規則。
buffer apply
執行本命令後,所配置的數據緩衝區分配規則才會生效。如果需要修改數據緩衝區分配規則,需要先取消應用,再修改分配規則並重新應用。
數據緩衝區中的固定區域是按隊列劃分的,每個隊列又按端口均分。在報文存儲時,即便某隊列沒有報文存儲需求,其他隊列也不能搶占。通過本功能可以調整接口下指定隊列最多可使用固定區域的比例。其它未配置的隊列則均分剩餘的固定區域。
接口下所有隊列所配置的可使用的固定區域大小之和,不應超過可配置的總固定區域大小,否則配置失敗。
對於配置隊列最多可使用的固定區域的大小,接口下的配置的優先級高於係統下的配置,即如果針對某隊列在接口視圖及係統視圖下均做了配置,則接口視圖下的配置生效。
(1) 進入係統視圖。
system-view
(2) 進入接口視圖。
interface interface-type interface-number
(3) 配置隊列最多可使用的固定區域的大小。
buffer egress cell queue queue-id guaranteed ratio ratio
缺省情況下,所有隊列最多可使用的固定區域大小均為13%。
數據緩衝區中的共享區域是按隊列劃分。在報文存儲時,如果某隊列沒有報文存儲需求,其他隊列也可以搶占該隊列的存儲資源。通過本功能可以調整接口下指定隊列最多可使用共享區域的大小,其它未配置的隊列最多可使用的共享區域的大小仍遵循缺省值。最終,各隊列最多可使用的共享區域的大小將由芯片根據buffer shared配置,以及實際需要收發報文的數量決定。
對於配置隊列最多可使用的共享區域的大小,接口下的配置的優先級高於係統下的配置,即如果針對某隊列在接口視圖及係統視圖下均做了配置,則接口視圖下的配置生效。
(1) 進入係統視圖。
system-view
(2) 進入接口視圖。
interface interface-type interface-number
(3) 配置隊列最多可使用的共享區域的大小。
buffer egress cell queue queue-id shared { ratio ratio | size }
缺省情況下,所有隊列最多可使用的共享區域大小均為20%。
buffer egress cell queue queue-id shared size命令是配合PFC功能使用的。不使用PFC功能時,請勿單獨配置本命令。有關PFC功能的詳細介紹,請參見“二層技術-以太網交換配置指導”中的“以太網接口”。
用戶可以設置接口使用數據緩衝區的門限值,設備通過該值來判斷接口當前是否處於超量使用緩衝區的狀態。當接口上某一隊列中需要處理的報文增多,造成該接口對數據緩衝區的使用比例超過設定的門限值時,係統會為該隊列增加一次超量使用緩衝區的計數,以此監控數據緩衝區的使用情況。
(1) 進入係統視圖。
system-view
(2) 配置接口的數據緩衝區使用門限值。
buffer usage threshold slot slot-number ratio ratio
缺省情況下,接口的數據緩衝區使用門限值為70。
數據緩衝區告警功能需要配合iMC等網管軟件使用,數據緩衝區告警包括超門限告警和丟包告警。設備數據緩衝區產生告警後,會周期性的將告警信息上送iMC等網管軟件,網管軟件會生成相應的告警提示,方便查看設備數據緩衝區的使用情況。
數據緩衝區告警門限的配置粒度分為:
· 端口級告警門限,即不區分隊列,整個接口配置接收或發送數據緩衝區告警門限。
· 隊列級告警門限,即接口下的每個隊列配置接收或發送數據緩衝區告警門限。
當前設備僅支持隊列級告警門限。
(1) 進入係統視圖。
system-view
(2) 配置隊列接收或發送緩衝區告警門限值。請至少選擇其中一項進行配置。
¡ 配置全局隊列接收或發送數據緩衝區使用門限值。
buffer { egress | ingress } usage threshold slot slot-number queue queue-id ratio ratio
缺省情況下,全局所有接口下每個隊列的接收或發送數據緩衝區使用門限值均為100%。
¡ 請依次執行以下命令配置接口隊列接收或發送數據緩衝區使用門限值。
interface interface-type interface-number
buffer { egress | ingress } usage threshold queue queue-id ratio ratio
缺省情況下,接口使用全局隊列接收或發送數據緩衝區使用門限值。這時,無論全局門限值是缺省值還是非缺省值,在接口視圖下執行display this [ all ]都不會看到接口當前使用的隊列接收或發送數據緩衝區使用門限值。此時,無論在接口視圖下使用本命令配置門限值為缺省值還是非缺省值,再執行display this [ all ]都可以看到接口當前使用的隊列接收或發送數據緩衝區使用門限值。
¡ 配置服務池使用率的告警門限值功能。
buffer egress usage threshold service-pool sp-id slot slot-number ratio ratio
缺省情況下,服務池使用率的告警門限值為100%。
(3) 開啟接收或發送數據緩衝區超門限告警功能。
buffer threshold alarm { egress | ingress } enable
缺省情況下,接收或發送數據緩衝區超門限告警功能處於關閉狀態。
(4) (可選)配置接收或發送數據緩衝區超門限告警發送周期。
buffer threshold alarm { egress | ingress } interval interval
缺省情況下,接收或發送數據緩衝區超門限告警發送周期為5秒。
(1) 進入係統視圖。
system-view
(2) 配置Headroom緩衝區的門限值。請至少選擇其中一項進行配置。
¡ 配置全局Headroom緩衝區的使用門限值。
buffer usage threshold headroom slot slot-number ratio ratio
缺省情況下,全局所有接口下每個隊列的Headroom緩衝區使用門限值均為100%。
¡ 請依次執行以下命令配置接口Headroom緩衝區的使用門限值。
interface interface-type interface-number
buffer usage threshold headroom queue queue-id ratio ratio
缺省情況下,接口使用全局Headroom緩衝區使用門限值。這時,無論全局門限值是缺省值還是非缺省值,在接口視圖下執行display this [ all ]都不會看到接口當前使用的Headroom緩衝區使用門限值。此時,無論在接口視圖下使用本命令配置門限值為缺省值還是非缺省值,再執行display this [ all ]都可以看到接口當前使用的Headroom緩衝區使用門限值。
(3) 開啟Headroom緩衝區超門限告警功能。
buffer threshold alarm headroom enable
缺省情況下,Headroom緩衝區超門限告警功能處於關閉狀態。
(4) (可選)配置Headroom緩衝區超門限告警發送周期。
buffer threshold alarm headroom interval interval
缺省情況下,Headroom緩衝區超門限告警發送周期為5秒。
開啟本功能後,設備將周期性的將數據緩衝區的丟包信息上送網管服務器。
本功能對Headroom緩衝區不起作用。
(1) 進入係統視圖。
system-view
(2) 開啟數據緩衝區丟包告警功能。
buffer packet-drop alarm enable
缺省情況下,數據緩衝區丟包告警功能處於關閉狀態。
(3) (可選)配置數據緩衝區丟包告警發送周期。
buffer packet-drop alarm interval interval
缺省情況下,數據緩衝區丟包告警發送周期為5秒。
在完成上述配置後,在任意視圖下執行display命令可以查看數據緩衝區的手工配置效果。
操作 |
命令 |
顯示數據緩衝區的大小 |
display buffer [ slot slot-number ] [ queue [ queue-id ] ] |
顯示數據緩衝區的使用率 |
display buffer usage [ slot slot-number ] |
顯示接口的數據緩衝區使用統計信息 |
display buffer usage interface [ interface-type [ interface-number ] ] [ verbose ] |
TCB(Transient Capture Buffer,瞬時抓包緩存)是一種MMU(Memory Management Unit,緩存管理單元)監控隊列丟包的技術。開啟TCB功能後,係統將持續監控隊列。當隊列發生丟包時,係統將收集丟包時間、丟包原因、被丟棄報文的原始數據等信息,可通過gRPC方式上報網管,方便網絡管理員及時知曉設備上發生的丟包事件。
MMU是設備轉發芯片中管理數據緩衝區的核心,負責對各接口下接收緩衝區和發送緩衝區進行合理分配,並對其中的隊列進行靈活調度,使設備更好的應對各種突發流量。
圖2-1 MMU功能示意圖
TCB功能的狀態機如下:
(1) TCB功能被開啟,進入待觸發狀態;
(2) 當隊列長度大於start-threshold-value門限時,由待觸發狀態進入預觸發狀態;此時使用pre-sample-rate對隊列進行采樣抓包;
(3) 當隊列發生丟包時,由預觸發狀態進入觸發狀態;此時使用post-sample-rate對隊列進行采樣抓包;
(4) 當隊列長度小於stop-threshold-value門限時停止抓包,由觸發狀態進入待觸發狀態;
(5) 在待觸發狀態下,當隊列長度再次大於start-threshold-value門限時,重複步驟(2);
(6) 如果抓包數量達到frozen-number或抓包時間達到timer-value,由觸發狀態進入凍結狀態;
(7) 對丟包原因及丟棄報文特征等信息進行分析,並將分析結果發送給gRPC模塊,由gRPC上報網管;
(8) 由凍結狀態進入待觸發狀態。
圖2-2 TCB狀態機
上報信息主要有:
· 接口和隊列信息;
· 丟包原因;
· 丟棄報文特征(源/目的IP地址,源/目的端口號,協議號等),或直接上報被丟棄報文的原始數據。
在係統視圖下開啟並配置全局TCB功能對相應slot上所有支持TCB功能的接口生效,在接口視圖下開啟並配置TCB功能僅對當前接口生效。兩種配置方式互斥,如果當前已經使用一種方式開啟了TCB功能,需要在該方式下關閉TCB功能後,才能使用另一種方式配置。
使用接口視圖下的命令開啟TCB功能時,設備僅支持在一個接口下開啟TCB功能。
在VXLAN網絡中的VTEP上開啟TCB功能、對VTEP發往租戶網絡方向的報文進行丟包監控時,TCB功能獲取到的丟包報文特征為VXLAN報文的外層頭信息,而非內層頭信息。
TCB的gRPC采樣路徑為tcb/tcbpacketinfoevent和tcb/tcbrawpacketinfoevent。有關gRPC的詳細介紹,請參見“Telemetry配置指導”中的“gRPC”。
(1) 進入係統視圖。
system-view
(2) 開啟並配置TCB功能。
buffer transient-capture global [ slot slot-number ] egress enable [ no-local-analysis ] [ acl { ipv4-acl-number | name ipv4-acl-name } ] [ start-threshold start-threshold-value stop-threshold stop-threshold-value ] [ frozen-number frozen-number frozen-timer timer-value ] [ pre-sample-rate pre-sample-rate post-sample-rate post-sample-rate ] [ poll-frequency frequency-value ]
缺省情況下,TCB功能處於關閉狀態。
(1) 進入係統視圖。
system-view
(2) 進入接口視圖。
interface interface-type interface-number
(3) 開啟並配置TCB功能。
buffer transient-capture { egress [ queue queue-id ] | ingress } enable [ no-local-analysis ] [ acl { ipv4-acl-number | name ipv4-acl-name } ] [ start-threshold start-threshold-value stop-threshold stop-threshold-value ] [ frozen-number frozen-number frozen-timer timer-value ] [ pre-sample-rate pre-sample-rate post-sample-rate post-sample-rate ] [ poll-frequency frequency-value ]
缺省情況下,TCB功能處於關閉狀態。
在完成上述配置後,在任意視圖下執行display命令可以顯示配置後TCB的運行情況,通過查看顯示信息驗證配置的效果。
表2-1 TCB顯示和維護
操作 |
命令 |
顯示TCB捕獲的丟包信息 |
display buffer transient-capture packet-drop slot slot-number { ethernet | ipv4 | ipv6 } |
Device作為gRPC客戶端與采集器相連。采集器為gRPC服務器。
在Device上開啟並配置TCB與gRPC功能,監控隊列丟包,並將收集到的數據通過gRPC推送給Collector。
(1) 配置Device與Collector的IP地址,並確保它們之間路由可達,配置步驟略。
(2) 開啟並配置TCB。
# 創建編號為3001的IPv4高級ACL,並為其創建如下規則:匹配源IP地址為192.168.5.2的報文。
<Device> system-view
[Device] acl advanced 3001
[Device-acl-ipv4-adv-3001] rule permit ip source 192.168.5.2 0
[Device-acl-ipv4-adv-3001] quit
# 對接口Twenty-FiveGigE1/0/1出方向隊列1中匹配ACL 3001的報文開啟TCB功能,不對抓包數據進行本地分析,進入預觸發狀態的隊列長度門限值為10000字節,退出預觸發狀態的隊列長度門限值為5000字節,抓包數量為1000,抓包時間為500微秒,預觸發狀態時的采樣率為10,觸發狀態時的采樣率為10,數據上報頻次為600次/分鍾。
[Device] interface twenty-fivegige 1/0/1
[Device-Twenty-FiveGigE1/0/1] buffer transient-capture egress queue 1 enable no-local-analysis acl 3001 start-threshold 10000 stop-threshold 5000 frozen-number 1000 frozen-timer 500 pre-sample-rate 10 post-sample-rate 10 poll-frequency 600
[Device-Twenty-FiveGigE1/0/1] quit
(3) 開啟並配置gRPC。
# 開啟gRPC功能。
[Device] grpc enable
# 創建傳感器組test,並添加采樣路徑tcb/tcbpacketinfoevent和tcb/tcbrawpacketinfoevent。
[Device] telemetry
[Device-telemetry] sensor-group test
[Device-telemetry-sensor-group-test] sensor path tcb/tcbpacketinfoevent
[Device-telemetry-sensor-group-test] sensor path tcb/tcbrawpacketinfoevent
[Device-telemetry-sensor-group-test] quit
# 創建目標組collector1,並配置IP地址為192.168.2.1、端口號為50050的采集器。
[Device-telemetry] destination-group collector1
[Device-telemetry-destination-group-collector1] ipv4-address 192.168.2.1 port 50050
[Device-telemetry-destination-group-collector1] quit
# 創建訂閱A,配置關聯傳感器組為test,關聯目標組為collector1。
[Device-telemetry] subscription A
[Device-telemetry-subscription-A] sensor-group test
[Device-telemetry-subscription-A] destination-group collector1
[Device-telemetry-subscription-A] quit
[Device-telemetry] quit
當設備上開啟TCB功能的隊列發生丟包時,采集器將收到設備推送的數據信息。
不同款型規格的資料略有差異, 詳細信息請向具體銷售和400谘詢。H3C保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!