目錄

簡介

必要條件

需求

採用元件

慣例

Catalyst 3550交換器上連線埠的輸出佇列功能

Gigabit和非Gigabit埠均支援的功能

僅支援Gigabit埠的功能

僅支援非Gigabit埠的功能

CoS到隊列對映

嚴格優先順序隊列

Catalyst 3550上的加權循環配置資源

Catalyst 3550交換器上的WRED

Catalyst 3550交換器上的尾部捨棄

Gigabit連線埠上的佇列大小組態

非千兆埠上的隊列管理和隊列大小

結論

相關資訊

簡介

輸出排程確保重要流量不會在介面出口出現嚴重超訂用時丟棄。本檔案將討論Cisco Catalyst 3550交換器上輸出排程所涉及的所有技巧和演演算法。本文還將重點介紹如何在Catalyst 3550交換器上設定和驗證輸出排程的作業。

必要條件

需求

本文件沒有特定需求。

採用元件

本檔案中的資訊是根據執行Cisco IOS®軟體版本12.1(12c)EA1的Catalyst 3550。

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。如果您的網路正在作用，請確保您已瞭解任何指令可能造成的影響。

慣例

如需文件慣例的詳細資訊，請參閱思科技術提示慣例。

Catalyst 3550交換器上連線埠的輸出佇列功能

3550交換器上有兩種型別的連線埠：

- 千兆埠

- 非千兆埠（10/100 Mbps埠）

這兩個連線埠具有不同的功能。本節的其餘部分總結了這些功能。本文檔的其他各節對這些功能作了更詳細的說明。

Gigabit和非Gigabit埠均支援的功能

3550上的每個埠都有四個不同的輸出隊列。可以將其中一個隊列配置為嚴格的優先順序隊列。其餘每個隊列都配置為非嚴格優先順序隊列，並使用加權循環配置來提供服務。 在所有連線埠上，封包都會根據服務類別(CoS)指派給四個可能佇列中的一個。

僅支援Gigabit埠的功能

Gigabit連線埠也支援每個佇列中的佇列管理機制。可以將每個隊列配置為使用加權隨機早期檢測(WRED)或帶有兩個閾值的尾部丟棄。此外，您還可以調整每個隊列的大小（分配給每個隊列的緩衝區）。

僅支援非Gigabit埠的功能

非Gigabit連線埠沒有任何佇列機制（例如具有兩個臨界值的WRED或尾部捨棄）。僅支援10/100 Mbps埠上的FIFO隊列。您不能更改這些埠上四個隊列中每個隊列的大小。但是，您可以為每個隊列分配最小（最小）保留大小。

CoS到隊列對映

本節討論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。

有關這些主題的詳細資訊，請參閱以下文檔：

- 瞭解Catalyst 3550上的QoS管制和標籤

- 設定QoS(Catalyst 3500)的「設定可信邊界以確保連線埠安全」一節

在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

Catalyst 3550上的加權循環配置資源

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.

Catalyst 3550交換器上的WRED

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

Catalyst 3550交換器上的尾部捨棄

尾部丟棄是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

Gigabit連線埠上的佇列大小組態

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個資料包。如果定義了不同的最小保留值並將其中一個值分配給每個隊列，則可以修改每個隊列的此最小保留值。

完成以下步驟即可進行此修改：

1. 為每個全域性最小保留值分配一個緩衝區大小。

最多可以配置八個不同的最小保留值。發出以下命令：

(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

2. 為每個隊列分配一個最小保留值。

您必須將每個隊列分配給其中一個最小保留值，才能知道此隊列保證多少緩衝區。預設情況下，以下條件適用：

- 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上連線埠上的排隊和排程包含以下步驟：

1. 將每個CoS分配給其中一個隊列。

2. 如果需要，啟用嚴格的優先順序隊列。

3. 指定WRR權重，並考慮隊列中的預期資料包大小。

4. 修改隊列大小（僅限千兆埠）。

5. 啟用隊列管理機制（尾部丟棄或WRED，僅限千兆埠）。

適當的排隊和排程可以減少語音/影片流量的延遲/抖動，並避免任務關鍵型流量的丟失。請務必遵循以下准則獲得最佳計畫效能：

- 對網路中存在的流量按不同類別進行分類，使用信任或特定標籤。

- 警察交通過度。

相關資訊

- 瞭解Catalyst 3550上的QoS管制和標籤

- 配置QoS — 產品文檔

- LAN 產品支援頁面

- LAN 交換支援頁面

- 技術支援與文件 - Cisco Systems