本產品的文件集力求使用無偏見用語。針對本文件集的目的,無偏見係定義為未根據年齡、身心障礙、性別、種族身分、民族身分、性別傾向、社會經濟地位及交織性表示歧視的用語。由於本產品軟體使用者介面中硬式編碼的語言、根據 RFP 文件使用的語言,或引用第三方產品的語言,因此本文件中可能會出現例外狀況。深入瞭解思科如何使用包容性用語。
思科已使用電腦和人工技術翻譯本文件,讓全世界的使用者能夠以自己的語言理解支援內容。請注意,即使是最佳機器翻譯,也不如專業譯者翻譯的內容準確。Cisco Systems, Inc. 對這些翻譯的準確度概不負責,並建議一律查看原始英文文件(提供連結)。
本文說明如何預測Catalyst 9000系列交換器上流量佇列的佇列緩衝區分配。
思科建議您瞭解以下主題:
本文中的資訊係根據以下軟體和硬體版本:
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
本文件也適用於以下硬體和軟體版本:
注意:本文檔不適用於9500X或9600X,因為它們使用不同的ASIC和QoS體系結構。
有關Catalyst 9000系列交換機上的QoS的技術概述,請參閱:Catalyst 9000 QoS和排隊白皮書。
通常,需要調整緩衝區分配,以響應特定流量類的不期望的輸出丟棄。有關如何診斷和排除Catalyst 9000系列交換機輸出丟棄故障的詳細資訊,請參閱本文的Catalyst 9000交換機輸出丟棄故障排除
Qos |
服務品質 |
與網路裝置中的流量分類、標籤、排隊和排程有關的概念/相關功能組 |
DSCP |
區別服務代碼點 |
資料包IP報頭中包含的流量分類機制 |
CoS |
服務類別 |
資料包的乙太網幀報頭中包含的流量分類機制 |
ACE |
存取控制專案 |
訪問控制清單(ACL)中的一條規則或一行 |
ACL |
訪問控制清單 |
由各種功能使用的一組訪問控制條目(ACE),用於匹配流量並採取操作 |
ASIC |
專用積體電路 |
一種電腦晶片,旨在高效率地執行特定任務或一組任務。 |
UADP |
整合存取資料平面 |
Catalyst 9000系列交換機中使用的Cisco ASIC可執行許多網路資料包處理任務。 |
PBC |
資料包緩衝區複雜性 |
Cisco UADP ASIC子系統,充當處理、排隊和排程資料包的中央資料包緩衝區。 |
AQM |
作用中佇列管理 |
Cisco UADP ASIC子系統,用於管理流量隊列並為網路埠安排操作。 |
DTS |
動態閾值和比例 |
Cisco UADP ASIC技術,可動態調整和擴展各埠的緩衝區以最佳化硬體利用率 |
一般而言,當資料交換或路由至某個連線埠時,緩衝區是用來吸收暫時性資料突發量的記憶體,超出該連線埠將資料放線上路上的能力。連線埠具有固定的傳輸速率,可用於傳輸和移除佇列中的資料。從概念上講,緩衝區只是儲存或排隊資料的位置,直到資料從介面傳輸出去。
在Catalyst 9000系列交換器上,字詞buffer有兩個用途。系統緩衝區作為一個整體稱為ASIC的資料包緩衝區複合體(PBC)。單詞緩衝區也可以指代PBC的小單位。緩衝區會按照每個佇列配置給連線埠。換句話說,從整個系統緩衝區中為埠隊列分配了大量的小型獨立緩衝區。
在基於Cisco UADP ASIC的平台上,一個緩衝區最多包含256位元組的資料,緩衝區連結在一起表示大於256位元組的幀。
每個隊列可用緩衝區的最終計算受以下因素影響:
軟緩衝區是跨連線埠共用的緩衝區。這些緩衝區稱為軟緩衝區,因為不保證對埠有效。
系統故意過度分配軟緩衝區。這允許任意一個埠在需要時使用大量緩衝區,但隨著更多埠需要緩衝區,所有埠和隊列都作為Cisco UADP ASIC DTS流程的一部分動態且公平地進行了縮減。
總之,軟緩衝區-在輸出中稱為softmax,是一個機會性最大值。如果整個系統緩衝區中有足夠的可用緩衝區,則埠僅使用full softmax。隨著其他連線埠和佇列的緩衝區需求增加,連線埠可使用的最大緩衝區會減少。
硬緩衝區是明確保留給連線埠的緩衝區,不受DTS程式的影響。由於硬緩衝區是保證的緩衝區,因此分配給埠的總硬緩衝區總數絕不會超過專用於這些硬緩衝區的PBC段。
管理軟緩衝區的活動範圍的機制稱為DTS(動態閾值和規模),Catalyst 9000系列QoS白皮書中對此進行了說明。
專用於排隊硬緩衝區和軟緩衝區的PBC段的大小會在您配置系統時動態變化,並且可以在以下輸出中看到為AQM GlobalSoftLimit和GlobalHardLimit:
C9500#show platform hardware fed active qos queue stats interface twe1/0/1
----------------------------------------------------------------------------------------------
AQM Global counters
GlobalHardLimit: 18072 | GlobalHardBufCount: 0
GlobalSoftLimit: 37224 | GlobalSoftBufCount: 0
C9500#show platform hardware fed active qos queue config interface tw1/0/1 Asic:0 Core:1 DATA Port:20 GPN:101 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 160 - 167 DrainFast:Disabled PortSoftStart:2 - 4320 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 2 480 3 1920 16 960 0 0 4 5760 En <--- default configuration has a mix of hard buffer and soft buffer in queue 0 1 1 0 0 4 2880 16 1440 8 720 4 5760 En <--- default configuration has two queues so some buffers are seen in queue 1
<snip>
C9500(config)#policy-map test
C9500(config-pmap)#class class-default
C9500(config-pmap-c)#priority level 1 <--- Priority level 1 queue configuration on first queue, which is queue 0 in the next output
C9500(config-pmap-c)#exit
C9500(config-pmap)#exit
C9500(config)#int tw1/0/1
C9500(config-if)#service-policy output test
C9500(config-if)#end
C9500#show platform hardware fed active qos queue config interface twe1/0/1
Asic:0 Core:1 DATA Port:20 GPN:101 LinkSpeed:0x12
AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 160 - 167
DrainFast:Disabled PortSoftStart:4 - 1800 BufferSharing:Disabled
DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable
----- -------- -------- -------- -------- --------- -------
0 1 4 1200 7 1200 0 0 0 0 3 2400 En <--- Hardmax increased to 1200 from 480 in queue 0, softmax reduced to 1200 from 1920
1 1 0 0 0 0 0 0 0 0 3 2400 En <--- queue 1 now no longer has any values, as no second queue is configured
C9500#show platform hardware fed active qos queue stats interface twe1/0/1
----------------------------------------------------------------------------------------------
AQM Global counters
GlobalHardLimit: 18792 | GlobalHardBufCount: 0 <--- GlobalHardLimit increased to 18792 from 18072, or by 720
GlobalSoftLimit: 36504 | GlobalSoftBufCount: 0 <--- GlobalSoftLimit decreased from 37224 to 36504, or by 720
注意:請注意GlobalHardLimit的增加和GlobalSoftLimit的按比例減少。
此外,在配置優先順序級別1時,該隊列的softmax靜態設定為與hardmax完全相等。您只能修改優先順序級別1隊列的硬緩衝。
GlobalHardLimit和GlobalSoftLimit中的更改等於720。這也等於配置後hardmax中的更改。
本文檔中的方案說明了如何計算和預測多個策略對映配置中的softmax和hardmax分配。
隊列最終緩衝區值部分是首先在隊列之間分配的基本值的函式。 稍後在軟緩衝區的情況下會將其相乘。
乘法因子與其它隱式行為組合使得確定給定隊列的最終值,以及給定配置,成為挑戰。
闡明結果隊列緩衝區分配的第一步是確定基本緩衝區值。
要做到這一點,請使用優先順序隊列,優先順序隊列接收硬緩衝區與隊列數量或配置的隊列緩衝區比率成正比。
在特定配置中,您可以明確導出分配給給定埠速度的基本緩衝區數量。
配置所有緩衝區並將其分配給一個非乘法隊列(優先順序為1的隊列)
在本示例中,class-default類用於匹配所有流量,因為未配置其他類。
Switch(config)#policy-map test1
Switch(config-pmap)#class class-default
Switch(config-pmap-c)#priority level 1 <--- Assign hard buffer to the port, which is not affected by multipliers
Switch(config-pmap-c)#queue-buffers ratio 100 <--- Assign all buffers to this queue only
上一個範例中的組態會執行下列動作:
queue-buffers ratio 100將100/100或100%的可用基本緩衝區分配給此隊列/類。
在一個以上類的策略對映中,不能將100%的緩衝區分配給一個類。您必須將1/100或至少1%的百分比分配給任何類別。
在只有一個類的策略中,您只有一個類,您可以將所有的緩衝區分配給它。
如前所述,優先順序隊列會獲得硬緩衝區,該硬緩衝區等同於根據配置的隊列緩衝區比率所分配的基本緩衝區。硬緩衝區不受任何乘數限制。
在標題為Hardmax的列下的輸出中觀察到硬緩衝。
現在,您擁有單個流量類,其緩衝區不受任何乘數限制。這樣,您就可以顯式推導此埠速度的基本緩衝區分配(在此平台上只有此埠速度不同,其他埠速度不同),因為基本緩衝區與硬最大值相等。
基本緩衝區= ?
佇列比率1 = 100/100 = 1
此佇列的Hardmax =基礎緩衝區x佇列比率1
X = Y x 1
X / 1 = Y
X = Y
X = Y =硬式最大值=基礎緩衝區= 1200 (請參閱範例2)。
在本示例中,策略對映test1作為輸出service-policy應用到介面
9500H(config)#int tw1/0/3
9500H(config-if)#service-policy output test1 <--- service policy that assigns all buffer to the first queue, as a priority queue 1
9500H#show platform hardware fed active qos queue config interface tw1/0/3 Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:4 - 1800 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 4 1200 7 1200 0 0 0 0 3 2400 En <--- hardmax 1200 - the maximum amount of buffer this port can use without multiplication 1 1 0 0 0 0 0 0 0 0 3 2400 En 2 1 0 0 0 0 0 0 0 0 3 2400 En 3 1 0 0 0 0 0 0 0 0 3 2400 En 4 1 0 0 0 0 0 0 0 0 3 2400 En 5 1 0 0 0 0 0 0 0 0 3 2400 En 6 1 0 0 0 0 0 0 0 0 3 2400 En 7 1 0 0 0 0 0 0 0 0 3 2400 En
<snip>
如圖所示,分配了100%緩衝區的此優先順序隊列的硬體最大值為1200。
由於hardmax是一個完全未乘/未縮放的值,並且為此隊列配置了100%的緩衝區,因此該特定型號交換機、軟體版本和特定埠速度的基本緩衝區分配為1200。
同一交換機上的其他埠速度,以及同一埠速度的其他交換機型號接收不同的基本緩衝區分配。此基礎配置不可由使用者設定,而且必須透過觀察衍生。
本文檔中的其他場景都使用相同的交換機、軟體和埠速度。因此,它們都假設基本分配為1200,用於計算以確定最終的緩衝區分配。
注意:請注意,上一個示例中的softmax也為1200。
按照設計,優先順序級別1隊列的softmax完全等於其硬最大值。這是預定的,使用者不可配置。
此外,此特定的softmax分配不受softmax乘數的影響,稍後顯示。只有優先順序級別1隊列具有softmax的以下行為(這是有意為之)。
在此案例中,會新增其他佇列。此隊列不使用優先順序級別1,因此softmax會使用乘數進行擴展。
一個乘數是使用者配置的,另一個是隱藏/不可配置的乘數。
將這些乘數與為此埠導出的基本緩衝區組合,在本例中為1200(根據方案1)。
演算法方式:
當前隊列比率=要預測的隊列/類的隊列緩衝區比率
隱藏乘數= 400%
使用者乘數=您在qos queue-softmax-multiplier <percent>中配置的百分比值。預設值為100%
Softmax = (基礎緩衝區x (目前佇列比例/100)) x隱藏乘數x (使用者乘數/100)
9500H(config)#policy-map test2
9500H(config-pmap)# class class1
9500H(config-pmap-c)# priority level 1
9500H(config-pmap-c)# queue-buffers ratio 50 <-- class 1 / first queue gets 50% of base buffer
9500H(config-pmap-c)# class class-default
9500H(config-pmap-c)# bandwidth remaining percent 100 <-- required configuration due to priority queue, can be ignored for this example
9500H(config-pmap-c)# queue-buffers ratio 50 <-- class 2 / first queue gets 50% of base buffer
值摘要:
確定Class1緩衝區分配:
由於class1是優先順序隊列,因此它接收hardmax(硬緩衝區)和softmax的特殊情況,而不受乘數的影響。
Class1硬體最大值= (基礎緩衝區x當前隊列比率(class1) / 100)
Class1 hardmax = 1200 x (50/100) = 600 -由於優先順序隊列的特殊情況,請停止所有數學運算,然後將結果分配給hardmax。Softmax等於Hardmax作為優先順序級別1的規則。
確定class-default緩衝區分配:
Class class-default = (基礎緩衝區x (目前佇列比率(class-default / 100)) x隱藏倍增器x (使用者倍增器/ 100)
Class class-default = [
[基本緩衝區] 1200 x [當前隊列比率] (50/100) = 600
[上一個結果] 600 x [隱藏乘數] 4 x [使用者多重產生器] (100/100) = 2400
]
9500H(config)#int tw1/0/3
9500H(config-if)#service-policy output test2 <-- apply the policy
9500H#show platform hardware fed active qos queue config interface tw1/0/3 Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:5 - 3600 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 600 9 600 0 0 0 0 1 4800 En <-- Hardmax is 600 as predicted, Softmax is set equal to Hardmax due to priority level 1 1 1 0 0 10 2400 16 1200 8 600 1 4800 En <-- Softmax is 2400 as predicted
<snip>
最終結果:Q0 -硬體最大值:600 Softmax:600。第1季度-軟最大:2400
此方案開始與方案2相同,除了現在配置qos queue-softmax-multiplier 1200。
這會將當前配置中的softmax緩衝區乘以1200%,或乘以係數12。
值摘要:
確定Class1緩衝區分配:
由於class1是優先順序隊列,因此它接收hardmax(硬緩衝區)和softmax的特殊情況,而不受乘數的影響。
Class1硬體最大值= (基礎緩衝區x當前隊列比率(class1) / 100)
Class1 hardmax = 1200 x (50/100) = 600 -由於優先順序隊列的特殊情況,請停止所有數學運算,然後將結果分配給hardmax。Softmax等於Hardmax作為優先順序級別1的規則。
確定類預設緩衝區分配:
Class class-default = (基礎緩衝區x (目前佇列比率(class-default / 100)) x隱藏倍增器x (使用者倍增器/ 100)
Class class-default =[
[基本緩衝區] 1200 x [當前隊列比率] (50/100) = 600
[上一個結果] 600 x [隱藏乘數] 4 x [使用者多重產生器] (1200/100) = 28800
]
配置qos queue-softmax-multiplier 1200並觀察softmax的更改(softmax是該隊列的最大緩衝區值,根據當前整體緩衝區使用率動態縮放):
9500H(config)#qos queue-softmax-multiplier 1200
9500H#show platform hardware fed active qos queue config interface tw1/0/3
Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:3 - 31500 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 600 5 600 0 0 0 0 6 42000 En <-- Queue 0 does not change as its configured with priority level 1 1 1 0 0 6 28800 1 900 1 900 6 42000 En <-- Softmax increases by 12x to 28800 from 1200 due to queue-softmax-multiplier 1200
<snip>
最終結果:Q1 -硬體最大值:600,軟體最大值:600。Q2 -軟最大值:28800
在本場景中,配置了五個隊列,但只有四個隊列明確定義了queue-buffers ratio。分配給這些隊列的緩衝區與前面的示例相同。
未配置的隊列接收所有已配置的隊列緩衝區總和與100之間的差值。
明確配置之比的總和= (Q0緩衝區比) + (Q1緩衝區比) ... (最終緩衝區比) - Catalyst 9000系列交換器支援最多8個佇列,因此您可以相加最多8個比率
隱含比率剩餘= (100 -明確配置的比率之和)。
Implicit Ratio Leftover是分配給未配置queue-buffers ratio的隊列的值。
此方案使用的策略對映:
9500H(config)#policy-map test3
9500H(config-pmap)# class class1
9500H(config-pmap-c)# priority level 1
9500H(config-pmap-c)# queue-buffers ratio 20
9500H(config-pmap-c)# class class2
9500H(config-pmap-c)# bandwidth remaining percent 10 <-- no queue-buffers ratio statement for this class
9500H(config-pmap-c)# class class3
9500H(config-pmap-c)# bandwidth remaining percent 10
9500H(config-pmap-c)# queue-buffers ratio 10 <-- rest of queues have an explicit queue-buffers ratio
9500H(config-pmap-c)# class class4
9500H(config-pmap-c)# bandwidth remaining percent 10
9500H(config-pmap-c)# queue-buffers ratio 10
9500H(config-pmap-c)# class class-default
9500H(config-pmap-c)# bandwidth remaining percent 70
9500H(config-pmap-c)# queue-buffers ratio 40
值摘要:
計算剩餘的佇列緩衝區比率:
隱含比率剩餘= (100 -明確配置的比率之和)。
100 - (20) - (10) - (10) - (50) = 20
目前佇列比率(類別2) = 20
計算最終隊列緩衝區分配
Class1 = [Base Buffer] 1200 x [Current Queue Ratio(class1)] (20/100) = 240 -優先順序隊列,無進一步計算
類別2 = [
[基本緩衝區] 1200 x [當前隊列比率(class2)] (10/100) = 240 -此隊列的基本緩衝區分配,但必須將其乘以才能獲得非優先順序隊列的softmax
[此隊列的基本緩衝區分配] 120 x [隱藏乘數] 4 x [使用者乘數] (100/100) = 960
]
對剩餘佇列重複:
第3類= [
1200 x (10/100) = 120
120 x 4 x (100/100) = 480
]
第4類= [
1200 x (10/100) = 120
120 x 4 x (100/100) = 480
]
Class class-default = [
1200 x (40/100) = 480
600 x 4 x (100/100) = 1920
]
應用test3策略對映的結果與預測進行比較:
9500H(config)#int tw1/0/3
9500H(config-if)#service-policy output test3
9500H#show platform hardware fed active qos queue config interface tw1/0/3 Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:4 - 2880 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 240 8 240 0 0 0 0 6 3840 En 1 1 0 0 9 960 16 480 8 240 6 3840 En <-- queue without queue buffers ratio configured receives any leftover ratio, as predicted 2 1 0 0 11 480 16 240 8 120 6 3840 En 3 1 0 0 11 480 16 240 8 120 6 3840 En 4 1 0 0 4 1920 16 960 8 480 6 3840 En
<snip>
最終結果:Q0 -硬體最大值:240,軟體最大值:240。Q1 - Softmax:960、Q2 - Softmax:480、Q3 - Softmax:480、Q4 - Softmax:480
在本場景中,配置了五個隊列,並且未配置兩個隊列的隊列緩衝區比率。
要確定緩衝區分配,方案2中的相同邏輯會繼續,但還必須將剩餘隱式比率除以沒有隊列緩衝區比率的隱式隊列/隊列總數
此方案使用的策略對映:
9500H(config)#policy-map test4
9500H(config-pmap)# class class1
9500H(config-pmap-c)# priority level 1
9500H(config-pmap-c)# queue-buffers ratio 20
9500H(config-pmap-c)# class class2
9500H(config-pmap-c)# bandwidth remaining percent 10 <-- no queue-buffers ratio statement for this class
9500H(config-pmap-c)# class class3
9500H(config-pmap-c)# bandwidth remaining percent 10 <-- no queue-buffers ratio statement for this class
9500H(config-pmap-c)# class class4
9500H(config-pmap-c)# bandwidth remaining percent 10
9500H(config-pmap-c)# queue-buffers ratio 10
9500H(config-pmap-c)# class class-default
9500H(config-pmap-c)# bandwidth remaining percent 70
9500H(config-pmap-c)# queue-buffers ratio 40
值摘要:
計算剩餘的佇列緩衝區比率:
隱含比率剩餘= (100 -明確配置的比率之和)。
隱式隊列數= 2(class2和class3未定義queue-buffers ratio)
配置比的總和= 20+40+10 = 7
隱含比率剩餘= 100 ― 70 = 30
隱式隊列比率分配= [隱式剩餘比率] 30 / [隱式隊列數] 2 = 15
計算最終隊列緩衝區分配:
類別1 =
[基本緩衝區] 1200 x [當前隊列比率(類1)] (20/100) = 240 -優先順序隊列,無進一步計算
類別2 =
[Base Buffer] 1200 x [Implicit queue ratio allocation] (15/100) = 180 -由於類2沒有定義的queue-buffers ratio,因此顯式隊列中剩餘的隊列緩衝區比率在隱式隊列之間共用。
[此隊列的基本緩衝區分配] 180 x [隱藏乘數] 4 x [使用者乘數] (100/100) = 720
對剩餘佇列重複:
第3類= [
1200 x (15/100) = 180
120 x 4 x (100/100) = 720
]
第4類= [
1200 x (10/100) = 120
120 x 4 x (100/100) = 480
]
Class class-default = [
1200 x (40/100) = 480
600 x 4 x (100/100) = 1920
]
應用test4策略對映的結果與預測進行比較:
9500H(config)#interface tw1/0/3
9500H(config-if)#service-policy output test4
9500H#show platform hardware fed active qos queue config interface tw1/0/3 Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:4 - 2880 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 240 8 240 0 0 0 0 6 3840 En 1 1 0 0 9 720 16 360 8 180 6 3840 En <-- queue 1 and 2 were not configured with queue-buffers ratio 2 1 0 0 9 720 16 360 8 180 6 3840 En <-- queue 1 and 2 get an equal share of leftover buffer ratio 3 1 0 0 11 480 16 240 8 120 6 3840 En 4 1 0 0 4 1920 16 960 8 480 6 3840 En
<snip>
注意:如果「隱含佇列比率」配置的結果不是整數,則不可能有相等的佔有率。結果會向上舍入到策略對映中較早的隊列,向下舍入到後續的隊列。 最終分配的隊列緩衝區比值總和仍為100,但由於剛描述的整數結果要求,隱式隊列並不總是獲得相等分配。
在此案例中,設定了五個佇列,全部使用佇列緩衝區比率。所有類別的隊列緩衝區比率的總和小於100。
在這種情況下,未分配的緩衝區比率會平均分佈在各類中。
與先前的案例類似,如果剩餘佇列緩衝區比率的除數結果不是整數,則會舍入或舍入每個佇列的最終配置,並將其新增至您設定的佇列緩衝區比率。
此方案使用的策略對映:
9500H(config)#policy-map test5
9500H(config-pmap)# class class1
9500H(config-pmap-c)# priority level 1
9500H(config-pmap-c)# queue-buffers ratio 10
9500H(config-pmap-c)# class class2
9500H(config-pmap-c)# bandwidth remaining percent 10
9500H(config-pmap-c)# queue-buffers ratio 10
9500H(config-pmap-c)# class class3
9500H(config-pmap-c)# bandwidth remaining percent 10
9500H(config-pmap-c)# queue-buffers ratio 10
9500H(config-pmap-c)# class class4
9500H(config-pmap-c)# bandwidth remaining percent 10
9500H(config-pmap-c)# queue-buffers ratio 10
9500H(config-pmap-c)# class class-default
9500H(config-pmap-c)# bandwidth remaining percent 70
9500H(config-pmap-c)# queue-buffers ratio 12
值摘要:
配置比值的和= 10 + 10 + 10 + 10 + 12 = 52
緩衝區剩餘比例= 100% - 52% = 48%
[剩餘緩衝率] 48% / [隊列總數] 5 = 9.6% added per queue -這不是整數,因此其最終的隊列應用程式必須按隊列進行進位或進位
要獲取系統使用的最終隊列緩衝區比值,必須將9或10增加到已配置的隊列緩衝區比值中。
策略對映中較高的類會收到向上舍入值10。策略對映中較低的類會收到舍入後的值9。
計算最終隊列緩衝區分配
緩衝區剩餘量= 48
Class1 = [基本緩衝區] x ([當前隊列比率(class1) +共用緩衝區比率剩餘值的舍入值)]
Class1 = 1200 x ((10% + 10%)/100) = 240 -優先順序隊列,無進一步計算
緩衝區剩餘比例= (48 ― 10) = 38
Class2 = [基本緩衝區] x ([當前隊列比率(class2) +共用緩衝區比率剩餘值的舍入值)]
Class2 = 1200 x ((10% + 10%)/100) = 240 -繼續將此乘以使用者和系統乘數,因為這不是優先順序隊列
Class2 = [此隊列的基本緩衝區分配] 240 x [隱藏倍增器] 4 x [使用者倍增器] (100/100) = 960 -此隊列的softmax結果
緩衝區剩餘比例= (38 ― 10) - 28
對剩餘佇列重複:
第3類= [
1200 x ((10+10)/100) = 240
120 x 4 x (100/100) = 960
]
緩衝區剩餘比例= (28 ― 10) = 18
第4類= [
1200 x ((10+9)/100) = 240
120 x 4 x (100/100) = 912
]
緩衝區剩餘量= 9
Class class-default= [
1200 x ((12+9)/100) = 252
120 x 4 x (100/100) = 1008
]
緩衝區剩餘比例= 0
應用的test5策略對映與預測的結果:
9500H#show platform hardware fed active qos queue config interface tw1/0/3 Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:5 - 1512 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 240 9 240 0 0 0 0 6 2016 En 1 1 0 0 10 960 16 480 8 240 6 2016 En 2 1 0 0 10 960 16 480 8 240 6 2016 En 3 1 0 0 11 912 16 456 8 228 6 2016 En 4 1 0 0 12 1008 16 504 8 252 6 2016 En
<snip>
在此場景中,策略對映中的類配置為priority level 2。
與優先順序級別1(其中softmax不受乘數的影響,並且設定為hardmax)不同,優先順序級別2允許softmax在它也有硬緩衝(hardmax)分配時進行乘法。
此方案使用的策略對映:
9500H(config)#policy-map test6
9500H(config-pmap)#class class1
9500H(config-pmap-c)#priority level 1
9500H(config-pmap-c)#queue-buffers ratio 50 <-- 50 / 50 split between both queues
9500H(config-pmap-c)#class class-default
9500H(config-pmap-c)#priority level 2 <-- Priority level 2 in use now
9500H(config-pmap-c)#queue-buffers ratio 50 <-- 50 / 50 split between both queues
應用test6策略對映的結果:
9500H#show platform hardware fed active qos queue config interface tw1/0/3 Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:5 - 3600 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 600 9 600 0 0 0 0 1 4800 En <-- Softmax is equal to hardmax 1 1 5 600 10 2400 16 1200 0 0 1 4800 En <-- Softmax is multiplied by Hidden Multiplier (400%) and User Multiplier (100% default)r
<snip>
在前面顯示的輸出中,第二個隊列的softmax是第一個隊列的softmax的4。這是因為priority-level 1 softmax特別不受系統softmax乘數的影響,但是priority-level 2受影響。
如果配置使用者softmax乘數,則只有優先順序級別2隊列會受到影響:
9500H(config)#qos queue-softmax-multiplier 200
9500H#show platform hardware fed active qos queue config interface tw1/0/3
Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:5 - 7200 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 600 9 600 0 0 0 0 5 9600 En <--- priority-level 1 queue unaffected by softmax multiplier 1 1 5 600 10 4800 8 1200 0 0 5 9600 En <--- User multiplier increased to 200%, softmax for this queue doubles
<snip>
隊列限制配置會影響最終隊列緩衝區分配
影響隊列緩衝區分配的主要機制是在MQC策略對映中為每個隊列增加的隊列緩衝區比率配置。
但是,隊列緩衝區分配受其他配置的影響。
Queue-limit定義用於丟棄特定流量類(透過Weighted Tail Drop, WTD)的閾值,本文檔未作介紹。
在特定情況下,queue-limit將修改系統軟緩衝區隊列的隱藏乘數-這會影響為其應用queue-limit的隊列分配總的軟緩衝區。
首先,瞭解每個類別最多可以配置3次隊列限制。這可以為每個DSCP或CoS的WTD定義多達3個閾值。
在下一個輸出中,僅定義了兩個閾值。
將兩個隊列限制應用到策略對映:
9500H(config)#policy-map test7
9500H(config-pmap)# class class1
9500H(config-pmap-c)# priority level 1
9500H(config-pmap-c)# queue-buffers ratio 50
9500H(config-pmap-c)# class class-default
9500H(config-pmap-c)# priority level 2
9500H(config-pmap-c)# queue-buffers ratio 50
9500H(config-pmap-c)# queue-limit dscp af11 percent 10 <-- Tells system to drop af11 traffic at 10% queue utilization
9500H(config-pmap-c)# queue-limit dscp af12 percent 50 <-- Tells system to drop af12 traffic at 50% queue utilization
觀察緩衝區分配的結果:
9500H(config-pmap-c)#interface tw1/0/3
9500H(config-if)#service-policy output test7
9500H#show platform hardware fed active qos queue config interface tw1/0/3 Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:5 - 7200 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 600 9 600 0 0 0 0 5 9600 En 1 1 5 600 10 4800 8 1200 0 0 5 9600 En <--- final result for queue that contains 2 queue-limit statements is 4800
<snip>
在下一個示例中,第三個queue-limit配置被增加到class class-default。
觀察緩衝區分配的結果:
9500H(config)#policy-map test7
9500H(config-pmap)#class class-default
9500H(config-pmap-c)#queue-limit dscp af13 percent 100
9500H#show platform hardware fed active qos queue config interface tw1/0/3
Asic:0 Core:1 DATA Port:22 GPN:103 LinkSpeed:0x12 AFD:Disabled FlatAFD:Disabled QoSMap:0 HW Queues: 176 - 183 DrainFast:Disabled PortSoftStart:5 - 1800 BufferSharing:Disabled DTS Hardmax Softmax PortSMin GlblSMin PortStEnd QEnable ----- -------- -------- -------- -------- --------- ------- 0 1 5 600 9 600 0 0 0 0 5 2400 En 1 1 5 600 10 1200 32 1200 0 0 5 2400 En <-- Softmax reduces by 400% from previous example
<snip>
將第三個隊列限制配置增加到隊列中時,將對該隊列停用系統隱藏的軟緩衝區乘數(400%)。但是,該隊列仍遵循使用者配置的qos queue-softmax-multiplier <percent>。
修訂 | 發佈日期 | 意見 |
---|---|---|
3.0 |
24-May-2024 |
重新認證 |
1.0 |
02-Dec-2022 |
初始版本 |