輸出排程確保重要流量不會在介面出口出現嚴重超訂用時丟棄。本檔案將討論Cisco Catalyst 3550交換器上輸出排程所涉及的所有技巧和演演算法。本文還將重點介紹如何在Catalyst 3550交換器上設定和驗證輸出排程的作業。
本文件沒有特定需求。
本檔案中的資訊是根據執行Cisco IOS®軟體版本12.1(12c)EA1的Catalyst 3550。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路正在作用,請確保您已瞭解任何指令可能造成的影響。
如需文件慣例的詳細資訊,請參閱思科技術提示慣例。
3550交換器上有兩種型別的連線埠:
千兆埠
非千兆埠(10/100 Mbps埠)
這兩個連線埠具有不同的功能。本節的其餘部分總結了這些功能。本文檔的其他各節對這些功能作了更詳細的說明。
3550上的每個埠都有四個不同的輸出隊列。可以將其中一個隊列配置為嚴格的優先順序隊列。其餘每個隊列都配置為非嚴格優先順序隊列,並使用加權循環配置來提供服務。 在所有連線埠上,封包都會根據服務類別(CoS)指派給四個可能佇列中的一個。
Gigabit連線埠也支援每個佇列中的佇列管理機制。可以將每個隊列配置為使用加權隨機早期檢測(WRED)或帶有兩個閾值的尾部丟棄。此外,您還可以調整每個隊列的大小(分配給每個隊列的緩衝區)。
非Gigabit連線埠沒有任何佇列機制(例如具有兩個臨界值的WRED或尾部捨棄)。僅支援10/100 Mbps埠上的FIFO隊列。您不能更改這些埠上四個隊列中每個隊列的大小。但是,您可以為每個隊列分配最小(最小)保留大小。
本節討論3550如何決定將每個封包放在佇列中。根據CoS將資料包放入隊列。使用本示例顯示的CoS-to-queue map interface命令,將八個可能的CoS值中的每一個對映到四個可能的隊列之一:
(config-if)#wrr-queue cos-map queue-id cos1... cos8
以下是範例:
3550(config-if)#wrr-queue cos-map 1 0 1 3550(config-if)#wrr-queue cos-map 2 2 3 3550(config-if)#wrr-queue cos-map 3 4 5 3550(config-if)#wrr-queue cos-map 4 6 7
此示例包括:
隊列1中的CoS 0和1(Q1)
第二季度的CoS 2和3
第3季度的CoS 4和5
第4季度的CoS 6和7
您可以發出以下命令,以驗證連線埠的CoS到佇列對應:
cat3550#show mls qos interface gigabitethernet0/1 queueing GigabitEthernet0/1 ...Cos-queue map: cos-qid 0 - 1 1 - 1 2 - 2 3 - 2 4 - 3 5 - 3 6 - 4 7 - 4...
嚴格優先順序隊列總是首先清空。因此,只要嚴格優先順序隊列中有資料包,就會轉發該資料包。從一個WRR隊列轉發每個資料包後,會檢查嚴格優先順序隊列,並在必要時清空。
嚴格的優先順序隊列專門設計用於延遲/抖動敏感流量,例如語音。嚴格的優先順序隊列最終可能導致其他隊列出現耗竭。如果資料包在嚴格優先順序隊列中等待,則放置在另外三個WRR隊列中的資料包不會轉發。
為了避免其他隊列的耗竭,請特別注意優先隊列中放置了什麼流量。此隊列通常用於語音流量,其流量通常不是很高。但是,如果某人能夠將具有CoS優先順序的高流量傳送到嚴格的優先順序隊列(例如大型檔案傳輸或備份),則會導致其他流量匱乏。為了避免此問題,需要在網路中流量的分類/准入和標籤中放置特殊流量。例如,您可以採取以下預防措施:
對所有不受信任的源埠使用不受信任的埠QoS狀態。
對Cisco IP Phone埠使用受信任邊界功能,以確保它在為其他應用程式的IP電話配置的信任狀態下不被使用。
管制流向嚴格優先順序隊列的流量。將Gigabit連線埠上CoS為5(區別服務代碼點[DSCP] 46)的流量管制限制設定為100 MB。
有關這些主題的詳細資訊,請參閱以下文檔:
在3550上,您可以配置一個隊列作為優先順序隊列(始終為Q4)。 在介面模式下使用以下命令:
3550(config-if)#priority-queue out
如果在介面中未配置優先順序隊列,則Q4被視為標準WRR隊列。本檔案的Catalyst 3550上的加權循環資源一節提供了更多詳細資訊。如果您發出相同的Cisco IOS命令,則可以驗證介面上是否配置了嚴格優先順序隊列:
NifNif#show mls qos interface gigabitethernet0/1 queueing GigabitEthernet0/1 Egress expedite queue: ena
WRR是在3550上的輸出排程中使用的機制。WRR在三個或四個隊列之間工作(如果沒有嚴格的優先順序隊列)。 WRR中使用的隊列將以循環方式清空,您可以為每個隊列配置權重。
例如,您可以配置權重,以便以不同的方式為隊列提供服務,如以下清單所示:
第一季度WRR服務:10%的時間
第二季度服務WRR:20%的時間
第三季度服務WRR:60%的時間
第4季度服務WRR:10%的時間
對於每個隊列,您可以在介面模式下發出以下命令,以便配置四個權重(每個隊列都關聯一個權重):
(config-f)#wrr-queue bandwidth weight1 weight2 weight3 weight4
以下是範例:
3550(config)#interface gigabitethernet 0/1
3550(config-if)#wrr-queue bandwidth 1 2 3 4
註:權重是相對的。使用以下值:
Q1 =重量1 /(重量1 +重量2 +重量3 +重量4)= 1 /(1+2+3+4)= 1/10
Q2 = 2/10
Q3 = 3/10
Q4 = 4/10
WRR可以通過以下兩種方式實現:
每頻寬WRR:每個權重表示允許傳送的特定頻寬。權重Q1大約可以有10%的頻寬,Q2可以有20%的頻寬,以此類推。此方案目前僅在Catalyst 6500/6000系列中執行。
每個資料包的WRR:這是在3550交換器中實作的演演算法。每個權重表示要傳送的特定資料包數,無論其大小如何。
由於3550會根據封包實作WRR,因此以下行為適用於本節中的組態:
Q1傳送1個資料包(共10個資料包)
Q2傳送2個資料包(共10個資料包)
Q3傳送3個資料包(共10個資料包)
Q4傳送4個資料包(共10個資料包)
要傳輸的資料包的大小可以完全相同。您仍然可以在四個隊列之間實現預期的頻寬共用。但是,如果隊列之間的平均資料包大小不同,則會對發生擁塞時的傳輸和丟棄內容產生很大影響。
例如,假設交換器中只有兩個資料流。假設有這些條件:
CoS為3的1 Gbps小型互動式應用流量(80位元組[B]幀)被放置在第2季度。
CoS為0的1 Gbps大檔案傳輸流量(1518-B幀)位於第1季度。
交換機中的兩個隊列將以1 Gbps的資料傳送。
兩個流需要共用相同的輸出Gigabit埠。假設在Q1和Q2之間配置了相等的權重。每個資料包應用WRR,並且兩個隊列之間從每個隊列傳輸的資料量不同。從每個隊列轉發出相同數量的資料包,但交換機實際傳送的資料量:
77700出Q2的每秒資料包數(pps)=(77700 x 8 x 64)位元每秒(bps)(約52 Mbps)
77700 pps out of Q1 =(77700 x 8 x 1500)bps(約948 Mbps)
如果要允許每個隊列公平訪問網路,請考慮每個資料包的平均大小。每個資料包應放置在一個隊列中,並相應地修改權重。例如,如果要對四個隊列中的每個隊列授予相同的訪問許可權,以便每個隊列都獲得1/4的頻寬,則流量如下所示:
在第1季度:盡最大努力處理網際網路流量。假設流量的平均封包大小為256 B。
在第2季度:備份由檔案傳輸組成,資料包主要為1500 B。
在第3季度:影片流,在192 B的資料包上完成。
在第4季度:互動式應用程式,主要由64位的資料包組成。
這將建立以下條件:
第1季度消耗的頻寬是第4季度的4倍。
第2季度消耗的頻寬是第4季度的24倍。
第3季度消耗的頻寬是第4季度的3倍。
為了對網路具有相同的頻寬訪問,請配置:
Q1的權重為6
Q2的權重為1
Q3的重量為8
Q4的重量為24
如果分配這些權重,在發生擁塞時,可在四個隊列之間實現相同的頻寬共用。
如果啟用了嚴格優先順序隊列,則WRR權重將在其餘三個隊列中重新分配。如果啟用了嚴格的優先順序隊列,但未配置第4季度,則權重為1、2、3和4的第一個示例為:
Q1 = 1 /(1+2+3)= 1個資料包,共6個資料包
Q2 = 2個資料包(共6個資料包)
Q3 = 3個資料包(共6個資料包)
您可以發出此Cisco IOS軟體show命令以驗證佇列重量:
NifNif#show mls qos interface gigabitethernet0/1 queueing GigabitEthernet0/1 QoS is disabled. Only one queue is used When QoS is enabled, following settings will be applied Egress expedite queue: dis wrr bandwidth weights: qid-weights 1 - 25 2 - 25 3 - 25 4 - 25
如果啟用加速優先順序隊列,則只有在禁用加速隊列時,才會使用Q4權重。以下是範例:
NifNif#show mls qos interface gigabitethernet0/1 queueing GigabitEthernet0/1 Egress expedite queue: ena wrr bandwidth weights: qid-weights 1 - 25 2 - 25 3 - 25 4 - 25 !--- The expedite queue is disabled.
WRED僅在3550系列交換機上的Gigabit埠上可用。WRED是對隨機早期檢測(RED)的修改,用於避免擁塞。RED定義了以下引數:
最小閾值:表示隊列中的閾值。在此閾值以下不會丟棄任何資料包。
最大(最大)閾值:表示隊列中的另一個閾值。所有資料包都丟棄在最大閾值之上。
斜率:丟棄介於最小和最大值之間的資料包的概率。丟棄概率隨隊列大小線性增加(具有一定斜率)。
此圖顯示RED佇列中封包的捨棄概率:
注意:所有實施RED的Catalyst交換機都允許您調整斜率。
在WRED中,不同的服務被加權。您可以定義標準服務和高級服務。每個服務接收一組不同的閾值。當達到最小閾值1時,只有分配給標準服務的資料包會被丟棄。只有達到最小閾值2時,才會開始丟棄來自高級服務的資料包。如果最小閾值2大於最小閾值1,則丟棄的標準服務的資料包比高級服務的資料包多。此圖顯示使用WRED的每個服務的丟棄概率的示例:
註:3550交換器不允許您調整最小閾值,但僅可以調整最大閾值。最小閾值始終硬設定為0。這樣就會產生丟棄概率,該概率表示當前在3550中實施的操作。
在3550上為WRED啟用的任何隊列始終具有非零丟棄概率並始終丟棄資料包。因為最小閾值始終為0,所以會出現這種情況。如果需要避免最大丟棄資料包,請使用加權尾部丟棄,如Catalyst 3550交換機上的尾部丟棄一節所述。
提示:思科錯誤ID CSCdz73556 (僅限註冊客戶)記錄最小閾值的配置增強請求。
有關RED和WRED的詳細資訊,請參閱擁塞迴避概述。
在3550上,您可以使用兩個不同的最大閾值設定WRED,以便提供兩個不同的服務。為任一閾值分配了不同型別的流量,這僅取決於內部DSCP。這與隊列分配不同,隊列分配僅取決於資料包的CoS。DSCP到閾值的表對映決定64個DSCP中的每一個到哪個閾值。您可以發出以下命令來檢視和修改此表:
(config-if)#wrr-queue dscp-map threshold_number DSCP_1 DSCP_2 DSCP_8
例如,此命令將DSCP 26分配給閾值2:
NifNif(config-if)#wrr-queue dscp-map 2 26 NifNif#show mls qos interface gigabitethernet0/1 queueing GigabitEthernet0/1 Dscp-threshold map: d1 : d2 0 1 2 3 4 5 6 7 8 9 --------------------------------------- 0 : 01 01 01 01 01 01 01 01 01 01 1 : 01 01 01 01 01 01 02 01 01 01 2 : 01 01 01 01 02 01 02 01 01 01 3 : 01 01 01 01 01 01 01 01 01 01 4 : 02 01 01 01 01 01 02 01 01 01 5 : 01 01 01 01 01 01 01 01 01 01 6 : 01 01 01 01
定義DSCP到閾值的對映後,會在您選擇的隊列上啟用WRED。發出以下命令:
(config-if)#wrr-queue random-detect max-threshold queue_id threshold_1 threshold_2
此示例配置:
Q1,閾值1 = 50%,閾值2 = 100%
Q2,閾值1 = 70%,閾值2 = 100%
3550(config)#interface gigabitethernet 0/1 3550(config-if)#wrr-queue random-detect max-threshold 1 50 100 3550(config-if)#wrr-queue random-detect max-threshold 2 70 100 3550(config-if)#wrr-queue random-detect max-threshold 3 50 100 3550(config-if)#wrr-queue random-detect max-threshold 4 70 100
您可以發出以下命令,以驗證每個佇列上的佇列型別(WRED或not):
nifnif#show mls qos interface gigabitethernet0/1 buffers GigabitEthernet0/1 .. qid WRED thresh1 thresh2 1 dis 10 100 2 dis 10 100 3 ena 10 100 4 dis 100 100
ena表示啟用,而隊列使用WRED。dis表示禁用,隊列使用尾部丟棄。
您還可以監控每個閾值丟棄的資料包數。發出以下命令:
show mls qos interface gigabitethernetx/x statistics
WRED drop counts:
qid thresh1 thresh2 FreeQ
1 : 327186552 8 1024
2 : 0 0 1024
3 : 37896030 0 1024
4 : 0 0 1024
尾部丟棄是3550千兆埠上的預設機制。每個千兆埠可以有兩個尾部丟棄閾值。使用與本文檔的Catalyst 3550交換機上的WRED部分定義的相同DSCP閾值對映,將一組DSCP分配給每個尾部丟棄閾值。達到閾值後,具有分配給該閾值的DSCP的所有資料包都會被丟棄。您可以發出以下命令以設定尾部捨棄閾值:
(config-if)#wrr-queue threshold queue-id threshold-percentage1 threshold-percentage2
此示例配置:
具有尾部丟棄閾值1 = 50%和閾值2 = 100%的Q1
Q2,閾值1 = 70%,閾值2 = 100%
Switch(config-if)#wrr-queue threshold 1 50 100 Switch(config-if)#wrr-queue threshold 2 70 100 Switch(config-if)#wrr-queue threshold 3 60 100 Switch(config-if)#wrr-queue threshold 4 80 100
3550交換器使用中央緩衝。這表示每個連線埠沒有固定的緩衝區大小。但是,Gigabit連線埠上有固定數量的封包可以排隊。這個固定號碼是4096。預設情況下,Gigabit埠中的每個隊列最多可以有1024個資料包,無論資料包大小如何。但是,您可以修改這4096個資料包在四個隊列中的拆分方式。發出以下命令:
wrr-queue queue-limit Q_size1 Q_size2 Q_size3 Q_size4
以下是範例:
3550(config)#interface gigabitethernet 0/1 3550(config-if)#wrr-queue queue-limit 4 3 2 1
這些隊列大小引數是相對的。此示例顯示:
Q1比Q4大四倍。
Q2比Q4大三倍。
第3季度的規模是第4季度的兩倍。
4096封包乃按以下方式重新分配:
Q1 = [4 /(1+2+3+4)] * 4096 = 1639資料包
Q2 = 0.3 * 4096 = 1229資料包
Q3 = 0.2 * 4096 = 819資料包
Q4 = 0.1 * 4096 = 409資料包
此命令允許您檢視四個隊列中拆分緩衝區的相對權重:
cat3550#show mls qos interface buffers GigabitEthernet0/1 Notify Q depth: qid-size 1 - 4 2 - 3 3 - 2 4 - 1 ...
您也可以發出以下命令,以檢視每個隊列仍可容納的可用資料包數量:
(config-if)#show mls qos interface gigabitethernetx/x statistics
WRED drop counts:
qid thresh1 thresh2 FreeQ
1 : 0 0 1639
2 : 0 0 1229
3 : 0 0 819
4 : 0 0 409
FreeQ 計數引數是動態的。FreeQ計數器給出最大隊列大小減去當前隊列中的資料包數。例如,如果當前第1季度有39個資料包,則FreeQ計數中有1600個數據包可用。以下是範例:
(config-if)#show mls qos interface gigabitethernetx/x statistics
WRED drop counts:
qid thresh1 thresh2 FreeQ
1 : 0 0 1600
2 : 0 0 1229
3 : 0 0 819
4 : 0 0 409
10/100-Mbps連線埠沒有可用的佇列管理方案(沒有有兩個臨界值的WRED或尾部捨棄)。 所有四個隊列都是FIFO隊列。也沒有為每個千兆埠保留4096個資料包的最大隊列大小。10/100-Mbps連線埠會將封包儲存在每個佇列中,直到封包因資源不足而充滿為止。您可以為每個隊列保留最小數量的資料包。預設情況下,此最小值設定為每個隊列100個資料包。如果定義了不同的最小保留值並將其中一個值分配給每個隊列,則可以修改每個隊列的此最小保留值。
完成以下步驟即可進行此修改:
為每個全域性最小保留值分配一個緩衝區大小。
最多可以配置八個不同的最小保留值。發出以下命令:
(Config)# mls qos min-reserve min-reserve-level min-reserve-buffersize
這些最小保留值對交換機是全域性的。預設情況下,所有最小保留值都設定為100個資料包。
例如,若要將最小保留級別1配置為150個資料包,將最小保留級別2配置為50個資料包,請發出以下命令:
nifnif(config)#mls qos min-reserve ? <1-8> Configure min-reserve level nifnif(config)#mls qos min-reserve 1 ? <10-170> Configure min-reserve buffers nifnif(config)#mls qos min-reserve 1 150 nifnif(config)#mls qos min-reserve 2 50
為每個隊列分配一個最小保留值。
您必須將每個隊列分配給其中一個最小保留值,才能知道此隊列保證多少緩衝區。預設情況下,以下條件適用:
Q1被分配到最小保留級別1。
Q2被分配到最小保留級別2。
Q3被分配到最低保留級別3。
第4季度被分配到最低保留級別4。
預設情況下,所有最小保留值為100。
您可以發出此介面命令,以便為每個隊列分配不同的最小保留值:
(config-if)#wrr-queue min-reserve queue-id min-reserve-level
例如,為了給第1季度分配最小保留量2和給第2季度分配最小保留量1,請發出以下命令:
nifnif(config)#interface fastethernet 0/1 nifnif(config-if)#wrr-queue min-reserve ? <1-4> queue id nifnif(config-if)#wrr-queue min-reserve 1 ? <1-8> min-reserve level nifnif(config-if)#wrr-queue min-reserve 1 2 nifnif(config-if)#wrr-queue min-reserve 2 1
您可以發出以下命令,以驗證產生的最小保留分配:
nifnif#show mls qos interface fastethernet0/1 buffers FastEthernet0/1 Minimum reserve buffer size: 150 50 100 100 100 100 100 100 !--- This shows the value of all eight min reserve levels. Minimum reserve buffer level select: 2 1 3 4 !--- This shows the min reserve level that is assigned to !--- each queue (from Q1 to Q4).
3550上連線埠上的排隊和排程包含以下步驟:
將每個CoS分配給其中一個隊列。
如果需要,啟用嚴格的優先順序隊列。
指定WRR權重,並考慮隊列中的預期資料包大小。
修改隊列大小(僅限千兆埠)。
啟用隊列管理機制(尾部丟棄或WRED,僅限千兆埠)。
適當的排隊和排程可以減少語音/影片流量的延遲/抖動,並避免任務關鍵型流量的丟失。請務必遵循以下准則獲得最佳計畫效能:
對網路中存在的流量按不同類別進行分類,使用信任或特定標籤。
警察交通過度。