이 문서에서는 Cisco Catalyst Switch Series 2960, 3750, 3750G, 3750X, 3560에서 QoS(Quality of Service)로 인한 출력 저하를 트러블슈팅하는 방법에 대해 설명합니다.
Cisco에서는 QoS에 대한 기본 지식을 갖춘 것을 권장합니다.
이 문서의 정보는 다음 플랫폼을 기반으로 합니다. Cisco Catalyst 스위치 시리즈 2960, 3750, 3750G, 3750X, 3560.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우, 모든 명령어의 잠재적인 영향을 미리 숙지하시기 바랍니다.
QoS는 혼잡한 시간에 더 중요한 데이터의 우선 순위를 지정하는 데 사용됩니다. 그 결과, QoS가 활성화되면 중요도가 낮은 대량 데이터가 삭제될 수 있습니다.
Cisco 액세스 레이어 스위치는 하드웨어에 QoS 기능을 구현합니다. 이 문서에서는 드롭이 QoS로 인해 발생하는지 여부를 확인하고 이를 완화하는 다양한 큐잉 및 버퍼 튜닝 옵션에 대해 설명합니다.
인그레스 기본 대기열
이그레스 기본 큐
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
Switch#show mls qos
QoS is enabled
QoS ip packet dscp rewrite is enabled
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이 됩니다.
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
참고: 각 대기열 세트에는 4개의 이그레스 대기열에 대한 버퍼 크기 및 임계값을 구성할 수 있는 옵션이 있습니다. 그런 다음 임의의 포트에 큐 세트 중 하나를 적용할 수 있습니다. 대기열 세트 2를 사용하도록 명시적으로 구성되지 않는 한 기본적으로 모든 인터페이스는 출력 대기열에 대해 대기열 세트 1을 사용합니다.
이 시나리오에서 대기열 집합 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
참고: 대기열 세트 1도 변경할 수 있습니다. 그러나 모든 인터페이스에서는 기본적으로 queue-set 1을 사용하므로 변경 사항이 모든 인터페이스에 반영됩니다.
이 예에서는 대기열 세트 2가 변경되어 대기열 1이 전체 버퍼의 70%를 수신하게 됩니다.
Switch(config)#mls qos queue-set output 2 buffers 70 10 10 10이 예에서는 queue-set 2 및 queue 1 임계값이 변경됩니다. 임계값 1과 임계값 2는 모두 3100에 매핑되므로 필요한 경우 예약된 풀에서 버퍼를 가져올 수 있습니다.
Switch(config)#mls qos queue-set output 2 threshold 1 3100 3100 100 3200
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
Switch(config)#int gi1/0/1
Switch(config-if)#queue-set 2
Switch(config-if)#end인터페이스가 대기열 세트 2에 매핑되어 있는지 확인합니다.
Switch#show run int gi1/0/1
interface GigabitEthernet1/0/1
switchport mode access
mls qos trust dscp
queue-set 2
end인터페이스에서 계속해서 패킷을 삭제하는지 확인합니다.
Switch(config-if)#srr-queue bandwidth share 1 75 25 5
Switch(config-if)#srr-queue bandwidth shape 2 0 0 0인터페이스에서 계속해서 패킷을 삭제하는지 확인합니다.
참고: 우선 순위 큐는 다른 큐가 서비스되기 전에 비워질 때까지 서비스됩니다. 기본적으로 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
다음은 몇 가지 일반적인 문제입니다.
Q: 대기열 세트는 언제 변경하고 공유/셰이핑을 언제 사용합니까?
A : 그 결정은 낙하산의 성격에 달려 있다. 가 간헐적으로 증가하는 경우 이 문제는 버스트 트래픽으로 인해 발생할 가능성이 높습니다. 이와 반대로, 삭제 작업이 일정한 속도로 계속해서 증가하면 패킷을 삭제하는 대기열은 전송할 수 있는 것보다 많은 데이터를 수신할 가능성이 높습니다.
간헐적인 삭제의 경우 대기열에 간헐적인 버스트를 수용할 수 있는 큰 버퍼가 있어야 합니다. 이 솔루션을 구현하려면 대기열 집합을 변경하고 영향을 받는 대기열에 더 많은 버퍼를 할당하고 임계값을 늘려야 합니다.
연속 삭제의 경우, 영향을 받는 대기열을 더 자주 서비스하고 CPU 주기당 대기열에서 더 많은 패킷을 꺼내도록 스케줄러를 구성해야 합니다. 이 솔루션을 구현하려면 이그레스 대기열에서 공유/셰이핑을 구성해야 합니다.
Q: 공유 모드와 모양 모드의 차이점은 무엇입니까?
A : 셰이핑된 모드에서는 이그레스 큐가 대역폭의 백분율로 보장되며 해당 크기로 속도가 제한됩니다. 셰이핑된 트래픽은 링크가 유휴 상태이더라도 할당된 대역폭보다 더 많은 대역폭을 사용하지 않습니다. 셰이핑 모드는 시간이 지남에 따라 더욱 균일한 트래픽 흐름을 제공하며, 과부하 트래픽의 피크 및 밸리를 줄입니다. 셰이핑을 사용하면 각 가중치의 절대값을 사용하여 큐에 사용할 수 있는 대역폭을 계산합니다.
srr-queue 대역폭 셰이프 가중치1 가중치2 가중치3 가중치4
역비율(1/weight)은 이 대기열의 셰이핑 대역폭을 제어합니다. 즉, queue1은 총 대역폭의 1/weight1% 등으로 예약되어 있습니다. 가중치가 0으로 구성된 경우 해당 대기열은 공유 모드에서 작동합니다. srr-queue bandwidth shape 명령으로 지정한 가중치는 무시되며, 큐에 대한 srr-queue bandwidth share interface configuration 명령으로 지정한 가중치가 적용됩니다.
공유 모드에서는 구성된 가중치에 따라 큐가 서로 대역폭을 공유합니다. 대역폭은 이 수준에서 보장되지만 이에 국한되지는 않습니다. 예를 들어, 대기열이 비어 있고 더 이상 링크 공유가 필요하지 않은 경우 나머지 대기열은 사용되지 않는 대역폭으로 확장되어 이들 간에 공유할 수 있습니다.
srr-queue 대역폭 share weight1 weight2 weight3 weight4
queue1은 대역폭의 최소 가중치1/(weight1 + weight2 + weight3 + weight4)%를 보장하지만, 필요한 경우 모양이 정해지지 않은 다른 대기열의 대역폭으로 줄일 수도 있습니다.
개정 | 게시 날짜 | 의견 |
---|---|---|
1.0 |
18-May-2013
|
최초 릴리스 |