目錄

簡介

必要條件

需求

採用元件

背景資訊

功能資訊

故障排除方法

常見問題

常見問題

相關資訊

簡介

本檔案介紹如何疑難排解Cisco Catalyst交換器系列2960、3750、3750G、3750X、3560上因服務品質(QoS)而出現的輸出捨棄問題。

必要條件

需求

思科建議您瞭解QoS的基本知識。

採用元件

本檔案中的資訊是根據以下平台：Cisco Catalyst交換器系列2960、3750、3750G、3750X、3560。

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

背景資訊

QoS用於在擁塞期間優先處理更重要的資料。因此，啟用QoS後，不太重要的批次資料可能會遇到丟棄。

思科接入層交換機在硬體中實施QoS功能。本文檔可幫助您確定丟棄是否由QoS引起，並介紹各種隊列和緩沖調整選項來緩解這些丟棄。

功能資訊

輸入預設佇列

輸出預設佇列

故障排除方法

1. 標識承載受影響應用程式的傳出資料或遇到遞增的輸出丟棄的介面。比較介面輸出速率和介面速度，確保不會由於鏈路過度使用而造成丟包。
Switch#show int gi1/0/1

!-- Some output omitted.

GigabitEthernet0/1 is up, line protocol is up (connected)

MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,

Full-duplex, 1000Mb/s, media type is 10/100/1000BaseTX

input flow-control is off, output flow-control is unsupported

Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 1089

Queueing strategy: fifo

Output queue: 0/40 (size/max)

5 minute input rate 4000 bits/sec, 6 packets/sec

5 minute output rate 3009880 bits/sec, 963 packets/sec

2. 確保在交換機上啟用QoS。如果未啟用，則輸出丟棄與QoS無關，因此此處提到的進一步步驟不相關。
Switch#show mls qos

QoS is enabled

QoS ip packet dscp rewrite is enabled

3. 標識介面上丟棄的傳出流量的標籤。
Switch#show mls qos int gi1/0/1 statistics

GigabitEthernet1/0/1 (All statistics are in packets)

dscp: incoming

-------------------------------

0 -  4 :       0       0       0       0       0

5 -  9 :       0       0       0       0       0

10 - 14 :      0       0       0       0       0

15 - 19 :      0       0       0       0       0

20 - 24 :      0       0       0       0       0

25 - 29 :      0       0       0       0       0

30 - 34 :      0       0       0       0       0

35 - 39 :      0       0       0       0       0

40 - 44 :      0       0       0       0       0

45 - 49 :      0  198910       0       0       0

50 - 54 :      0       0       0       0       0

55 - 59 :      0       0       0       0       0

60 - 64 :      0       0       0       0

dscp: outgoing

-------------------------------

0 -  4 :       0       0       0       0       0

5 -  9 :       0       0       0       0       0

10 - 14 :      0       0       0       0       0

15 - 19 :      0       0       0       0       0

20 - 24 :      0       0       0       0       0

25 - 29 :      0       0       0       0       0

30 - 34 :      0       0       0       0       0

35 - 39 :      0       0       0       0       0

40 - 44 :      0       0       0       0       0

45 - 49 :      0  248484       0       0       0

50 - 54 :      0       0       0       0       0

55 - 59 :      0       0       0       0       0

60 - 64 :      0       0       0       0

cos: incoming

-------------------------------

0 -  4 :      2       0       0       0       0

5 -  7 :      0       0       0

cos: outgoing

-------------------------------

0 -  4 :      0       0       0       0       0

5 -  7 :      0       0       0

output queues enqueued:

queue:    threshold1   threshold2   threshold3

-----------------------------------------------

queue 0:      248484 0      0

queue 1:      0      0      0

queue 2:      0      0      0

queue 3:      0      0      0

output queues dropped:

queue:    threshold1   threshold2   threshold3

-----------------------------------------------

queue 0:   1089      0      0

queue 1:      0      0      0

queue 2:      0      0      0

queue 3:      0      0      0

Policer: Inprofile:     0 OutofProfile:     0

附註：此示例顯示隊列0/threshold1上丟棄的包丟棄資料包。在文檔中的其他示例中，隊列編號為1 - 4;因此，此值將是隊列1。

4. 檢查交換器上對output-q的標籤映像，以確定哪個佇列閾值對映像到遭捨棄的標籤。在此案例中，queue1/threshold1被對映到dscp 46，該地址在介面上被丟棄。這表示dscp 46流量被傳送到queue1，但由於該隊列的緩衝區不足或CPU週期較短，該流量被丟棄。
Switch#show mls qos maps dscp-output-q

Dscp-outputq-threshold map:

d1 :d2    0     1     2     3     4     5     6     7     8     9

------------------------------------------------------------

0 :    02-01 02-01 02-01 02-01 02-01 02-01 02-01 02-01 02-01 02-01

1 :    02-01 02-01 02-01 02-01 02-01 02-01 03-01 03-01 03-01 03-01

2 :    03-01 03-01 03-01 03-01 03-01 03-01 03-01 03-01 03-01 03-01

3 :    03-01 03-01 04-01 04-01 04-01 04-01 04-01 04-01 04-01 04-01

4 :    01-01 01-01 01-01 01-01 01-01 01-01 01-01 01-01 04-01 04-01

5 :    04-01 04-01 04-01 04-01 04-01 04-01 04-01 04-01 04-01 04-01

6 :    04-01 04-01 04-01 04-01

5. 有兩種方法可以解析這些丟包。第一種方法是更改丟棄資料包的隊列的緩衝區和閾值。第二種方法是配置排程程式，以便丟棄資料包的隊列比其餘隊列更常得到服務。

此步驟說明如何更改受影響隊列的緩衝區和閾值，以及如何檢查與步驟4中識別的隊列相關聯的緩衝區和閾值。
附註：每個隊列集都可選擇為四個輸出隊列配置緩衝區大小和閾值。然後，您可以將任一隊列集應用於任何埠。預設情況下，除非明確配置為使用queue-set 2，否則所有介面都將queue-set 1用於輸出隊列。

在此案例中，queue-set 1中的隊列1擁有總緩衝區空間的25%，而閾值1設定為100%

Switch#show mls qos queue-set

Queueset: 1

Queue     :       1       2       3       4

----------------------------------------------

buffers   :      25      25      25      25

threshold1:     100     200     100     100

threshold2:     100     200     100     100

reserved  :      50      50      50      50

maximum   :     400     400     400     400

Queueset: 2

Queue     :       1       2       3       4

----------------------------------------------

buffers   :      25      25      25      25

threshold1:     100     200     100     100

threshold2:     100     200     100     100

reserved  :      50      50      50      50

maximum   :     400     400     400     400

6. 如果只想更改受影響介面的緩衝區和閾值，請更改queue-set 2 ，然後將受影響介面配置為使用queue-set 2。
附註：您還可以變更佇列集1;但是，由於所有介面在預設情況下都使用queue-set 1，因此更改會反映到所有介面。

在此示例中，更改了隊列集2，以便隊列1接收總緩衝區的70%。

Switch(config)#mls qos queue-set output 2 buffers 70 10 10 10

在此示例中，隊列集2和隊列1閾值已更改。閾值1和閾值2都對映到3100，以便如果需要，它們可以從預留池提取緩衝區。

Switch(config)#mls qos queue-set output 2 threshold 1 3100 3100 100 3200

7. 驗證更改是否反映在正確的隊列和隊列集下。
Switch#show mls qos queue-set

Queueset: 1

Queue     :       1       2       3       4

----------------------------------------------

buffers   :      25      25      25      25

threshold1:     100     200     100     100

threshold2:     100     200     100     100

reserved  :      50      50      50      50

maximum   :     400     400     400     400

Queueset: 2

Queue     :       1       2       3       4

----------------------------------------------

buffers   :      70      10      10      10

threshold1:    3100     100     100     100

threshold2:    3100     100     100     100

reserved  :     100      50      50      50

maximum   :    3200     400     400     400

8. 使受影響的介面使用queue-set 2，以便更改在此介面上生效。
Switch(config)#int gi1/0/1

Switch(config-if)#queue-set 2

Switch(config-if)#end

驗證介面是否已對映到queue-set 2。

Switch#show run int gi1/0/1

interface GigabitEthernet1/0/1

switchport mode access

mls qos trust dscp

queue-set 2

end

檢查介面是否繼續丟棄資料包。

9. 您還可以配置排程程式，以通過共用和形狀選項提高隊列1的服務速率。在此示例中，僅隊列1接收總CPU週期的50%，其他三個隊列共同接收50%的CPU週期。
Switch(config-if)#srr-queue bandwidth share 1 75 25 5

Switch(config-if)#srr-queue bandwidth shape 2  0  0  0

檢查介面是否繼續丟棄資料包。

10. 在此介面上啟用優先順序隊列。此操作可確保優先順序隊列中的所有流量先於任何其他隊列進行處理。
附註：優先順序隊列將一直服務到清空後再為其他隊列提供服務。預設情況下，2960/3560/3750交換器上的優先順序佇列為1。

Switch(config)#int gi1/0/1

Switch(config-if)#priority-queue out

Switch(config-if)#end

可以對映在介面上丟棄的資料包的標籤，使其進入隊列1（優先順序隊列）。 此操作可確保始終先處理具有此標籤的流量，再處理任何其他流量。

Switch(config)#mls qos srr-queue output dscp-map queue 1 threshold 1

常見問題

以下是一些常見問題：

- 啟用QoS後，介面上的輸出將丟失。

- 斷斷續續的語音呼叫。

- 新增的延遲會導致不理想的影片流量。

- 連線重置。

常見問題

Q:何時更改隊列集，何時使用共用/整形？

A:這個決定取決於投降的性質。如果丟棄間歇性增加，則此問題很可能是由突發流量引起的。相反，如果丟棄以恆定的速率不斷遞增，則丟棄資料包的隊列最有可能收到超出其傳送能力的資料量。

對於間歇性丟棄，隊列必須具有能夠容納偶爾突發的大緩衝區。為了實施此解決方案，必須更改隊列集並向受影響的隊列分配更多緩衝區，同時增加閾值。

對於連續丟棄，必須配置排程程式，以便更頻繁地為受影響的隊列提供服務，並且每CPU週期從隊列中取出更多資料包。  為了實施此解決方案，您必須在出口隊列上配置共用/整形。

Q:共用模式和整形模式之間的區別是什麼？

A:在整形模式下，出口隊列保證一定百分比的頻寬，並且速率限制在該數量。整形流量使用的頻寬不會超過分配的頻寬，即使鏈路處於空閒狀態。隨著時間的推移，整形模式可提供更均勻的流量流，並減少突發流量的峰值和谷值。對於整形，每個權重的絕對值用於計算隊列可用的頻寬。

srr隊列頻寬形狀 重量1重量2重量3重量4

反比(1/weight)控制此隊列的整形頻寬。換句話說，queue1被保留為總頻寬的1/weight1%等。如果將權重配置為0，則相應的隊列將以共用模式運行。使用srr-queue bandwidth shape命令指定的權重將被忽略，並且使用srr-queue bandwidth share interface配置命令為隊列指定的權重生效。

在共用模式下，隊列根據配置的權重共用頻寬。此級別的頻寬是保證的，但不僅限於此。例如，如果隊列是空的並且不再需要共用鏈路，則剩餘的隊列可以擴展到未使用的頻寬並在它們之間共用頻寬。

srr-queue bandwidth share 重量1重量2重量3重量4

queue1被保證最低為頻寬的weight1/(weight1 + weight2 + weight3 + weight4)%，但是如果需要，還可以佔用其他非形狀隊列的頻寬。

相關資訊

- 技術支援與文件 - Cisco Systems