이 문서에서는 Cisco Nexus 7000 Series 스위치의 QoS(Quality of Service) 기능에 대한 샘플 컨피그레이션을 제공하여 분류 및 대기열 처리 방법을 간소화합니다.
이 구성을 시도하기 전에 다음 요구 사항을 충족해야 합니다.
Nexus 7000 Series 스위치 컨피그레이션에 대한 기본적인 지식 보유
QoS에 대한 기본적인 지식 보유
이 문서의 정보는 Nexus 7000 Series 스위치를 기반으로 합니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다.이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다.현재 네트워크가 작동 중인 경우, 모든 명령어의 잠재적인 영향을 미리 숙지하시기 바랍니다.
문서 규칙에 대한 자세한 내용은 Cisco 기술 팁 규칙을 참조하십시오.
Nexus 7000 스위치의 기본 QoS 매개변수로는 대부분의 구축에 충분합니다.그러나 사용자 지정 정책을 생성하는 데 필요한 제한 사항 및 컨피그레이션 세부사항을 이해해야 합니다.
Nexus 7000 M 시리즈 라인 카드의 QoS에 대해 고려해야 할 두 가지 측면이 있습니다.
큐 정책
QoS 정책
큐잉은 하드웨어에서 수행되며 MQC(Modular QoS CLI) 큐잉 정책을 사용하여 구성됩니다.트래픽을 표시 또는 감시하는 데 사용되는 QoS 정책은 다른 Cisco 플랫폼에서 표준 QoS 정책으로 정확한 형식으로 MQC 정책을 통해 사용됩니다.예를 들어, 트래픽을 설정/폴리싱하기 위해 해당 policy-map을 사용하여 클래스 맵에서 트래픽을 분류하는 데 사용되는 액세스 목록입니다.
현재 M 시리즈 모듈은 CoS(Class of Service) 값에 따라 대기를 수행합니다.따라서 먼저 CoS 값이 파생되는 방법을 이해해야 합니다.어떤 CoS 값이 스위치에 들어오거나 나가는 지 알고 나면, 대기열 구성에 초점을 맞추어 다양한 트래픽 유형에 대해 원하는 QoS를 얻을 수 있습니다.
라우팅된 유니캐스트 트래픽의 경우 CoS 값은 DSCP(Differentiated Services Code Point) 값의 3가지 가장 큰 비트에서 파생됩니다.브리지 유니캐스트 트래픽의 경우 CoS 값은 802.1q 헤더에서 받은 CoS 값에서 복사됩니다.L2 액세스 링크에는 트렁크 헤더가 없습니다.따라서 액세스 포트에서 트래픽을 수신하고 브리징하면 CoS 0으로 스위치를 이그레스(egress)합니다. DSCP 값은 변경되지 않지만 패킷은 원하는 우선 순위를 얻지 못할 수 있습니다.CoS 또는 DSCP 값을 수동으로 설정하는 QoS 정책을 통해 정책 맵에서 CoS 값을 수동으로 설정할 수 있습니다.
멀티캐스트의 동작을 이해하는 것도 중요합니다.라우팅된 멀티캐스트 트래픽은 라우팅된 유니캐스트 트래픽과 동일한 방법으로 CoS 값을 파생합니다.브리지 멀티캐스트 트래픽의 경우 동작은 L3 상태에 따라 달라집니다.멀티캐스트 그룹에 대한 L3 상태가 없는 경우 CoS는 브리징 유니캐스트 트래픽과 동일한 방식으로 파생됩니다.멀티캐스트 그룹에 대한 L3 상태가 있는 경우 CoS는 라우팅된 유니캐스트 트래픽과 동일한 방법으로 파생됩니다.트래픽이 수신된 VLAN에 대해 SVI(Switch Virtual Interface)에서 스파스 모드에서 PIM(Protocol Independent Multicast)을 활성화하면 멀티캐스트가 표시될 때 S,G 항목이 생성됩니다.
요약하면, 트래픽 유형에 대한 CoS 동작은 다음과 같습니다.
트래픽 유형 | CoS 동작 |
라우팅된 유니캐스트 | ToS의 3-MSB에서 복사됨 |
브리지 유니캐스트 | 변경되지 않음 |
라우팅된 멀티캐스트 | ToS의 3-MSB에서 복사됨 |
그룹에 대한 L3 상태의 브리지 멀티캐스트 | ToS의 3-MSB에서 복사됨 |
그룹에 대한 L3 상태가 없는 브리지 멀티캐스트 | 변경되지 않음 |
액세스 포트(Eth8/1)에서 트래픽이 수신되고 VLAN에 브리지되는 예를 가정해 보겠습니다.기본적으로 bridged 유니캐스트 트래픽의 CoS 값은 변경되지 않습니다.트래픽이 액세스 포트에 도착하면 기본 CoS 값 0이 할당됩니다.이 예에서는 액세스 포트에서 우선순위 트래픽(DSCP 46)을 수신하고 DSCP 값이 변경되지 않고 CoS 값이 0인 스위치를 이그레스(egress)합니다. 따라서 패킷은 적절한 우선순위를 얻지 못합니다.
잠재적인 해결 방법은 인그레스 포트에서 CoS 값을 수동으로 설정하기 위해 QoS 정책을 생성하는 것입니다.
이 예에서는 DSCP 46이 있는 패킷만 CoS 값이 업데이트됩니다.적절한 CoS 값을 보장하기 위해 여러 DSCP 값이 필요한 경우 정책 맵에서 추가 클래스 맵 및 작업을 정의해야 합니다.
'default copy' 작업과 함께 table-map을 사용할 수도 있습니다. table-map을 사용하면 현재 DSCP 값을 기반으로 DSCP를 재설정할 수 있습니다.예를 들어, DSCP 값이 40인 트래픽이 수신되고 DSCP 값이 46인 경우 'from 40 to 46' 작업과 함께 테이블 맵을 사용할 수 있습니다.
또한 table-map에는 DSCP 값을 원래 값으로 설정하는 'default copy' 작업도 포함됩니다.이는 'match dscp ef' 분류와 'set dscp ef' 작업으로 정책 맵을 만드는 것과 유사합니다. 논리적으로 DSCP 값은 변경되지 않지만 'set dscp' 작업은 CoS 값을 새 DSCP 값의 3-MSB로 설정합니다.
따라서 CoS 값이 항상 DSCP 값의 3-MSB로 업데이트되도록 하려면 'default copy'라는 단일 작업과 함께 table-map을 사용합니다.
CoS 값이 파생되면 글로벌 대기열 클래스 맵을 조작하여 cos-to-queue 매핑에 영향을 줄 수 있습니다.이러한 클래스 맵은 전역적이며 특정 대기열 유형에 대한 모든 VDC(가상 장치 컨텍스트)의 모든 모듈에 영향을 미칩니다.예를 들어 M108 및 M132 모듈에 대한 다음과 같은 기본 대기열 클래스 맵을 고려하십시오(1p7q4t).
class-map type queuing match-any 1p7q4t-out-pq1
Description: Classifier for egress priority queue of type 1p7q4t
match cos 5-7
class-map type queuing match-any 1p7q4t-out-q2
Description: Classifier for egress queue 2 of type 1p7q4t
class-map type queuing match-any 1p7q4t-out-q3
Description: Classifier for egress queue 3 of type 1p7q4t
class-map type queuing match-any 1p7q4t-out-q4
Description: Classifier for egress queue 4 of type 1p7q4t
class-map type queuing match-any 1p7q4t-out-q5
Description: Classifier for egress queue 5 of type 1p7q4t
class-map type queuing match-any 1p7q4t-out-q6
Description: Classifier for egress queue 6 of type 1p7q4t
class-map type queuing match-any 1p7q4t-out-q7
Description: Classifier for egress queue 7 of type 1p7q4t
class-map type queuing match-any 1p7q4t-out-q-default
Description: Classifier for egress default queue of type 1p7q4t
match cos 0-4
기본적으로 cos 0-4는 기본 대기열에 매핑되며 cos 5-7은 우선순위 대기열에 매핑됩니다.이러한 작업은 동일한 대기열 유형에 대한 기본 대기열 정책과 함께 제공됩니다.
policy-map type queuing default-out-policy
class type queuing out-pq1
priority level 1
queue-limit percent 16
class type queuing out-q2
queue-limit percent 1
class type queuing out-q3
queue-limit percent 1
class type queuing out-q-default
queue-limit percent 82
bandwidth remaining percent 25
우선 순위 대기열은 큐 제한이 16%인 '우선 순위'입니다.기본 대기열의 대기열 제한은 82%이고 기본 대역폭은 남은 가중치입니다.사용 중이 아닌 다른 대기열에는 대기열 제한 1%이 할당됩니다.q4, q5 및 q6은 기본 대기열 정책에 표시되지 않으므로 하드웨어에 프로그래밍된 대기열 제한 및 대역폭 가중치가 훨씬 더 작습니다.
사용자 지정 대기열 정책을 생성하려면 다음 단계를 완료하십시오.
1p7q4t 큐잉 아키텍처가 있는 M132 모듈의 예를 들어, 8개의 CoS 값 모두 별도의 대기열에 매핑됩니다.출력은 전역 대기열 클래스 맵에 대한 변경 사항과 함께 사용자 지정 대기열 정책을 표시합니다.
policy-map type queuing 10G_POLICY
class type queuing 1p7q4t-out-pq1
priority level 1
queue-limit percent 10
class type queuing 1p7q4t-out-q2
queue-limit percent 10
bandwidth remaining percent 10
class type queuing 1p7q4t-out-q3
queue-limit percent 5
bandwidth remaining percent 5
class type queuing 1p7q4t-out-q4
queue-limit percent 5
bandwidth remaining percent 5
class type queuing 1p7q4t-out-q5
queue-limit percent 10
bandwidth remaining percent 20
class type queuing 1p7q4t-out-q6
queue-limit percent 5
bandwidth remaining percent 10
class type queuing 1p7q4t-out-q7
queue-limit percent 5
bandwidth remaining percent 10
class type queuing 1p7q4t-out-q-default
queue-limit percent 50
bandwidth remaining percent 40
! voice
class-map type queuing match-any 1p7q4t-out-pq1
match cos 5
! scavenger
class-map type queuing match-any 1p7q4t-out-q2
match cos 1
! transactional
class-map type queuing match-any 1p7q4t-out-q3
match cos 2
! call signaling
class-map type queuing match-any 1p7q4t-out-q4
match cos 3
! video
class-map type queuing match-any 1p7q4t-out-q5
match cos 4
! routing
class-map type queuing match-any 1p7q4t-out-q6
match cos 6
! management
class-map type queuing match-any 1p7q4t-out-q7
match cos 7
! best effort
class-map type queuing match-any 1p7q4t-out-q-default
match cos 0
마지막 단계는 각 1p7q4t 인터페이스에 사용자 지정 대기열 정책을 적용하는 것입니다.
interface Ethernet8/1
service-policy type queuing output 10G_POLICY
기본 대기열 정책은 CoS 0-4가 기본 대기열에 매핑되고 CoS 5-7이 우선순위 대기열에 매핑된다고 가정합니다.따라서 대기열 q3, q4, q5, q6 및 q7의 대기열 제한은 매우 작습니다.show queuing interface 명령을 입력하여 현재 대기열 크기 및 하드웨어에 구성 및 적용된 대역폭을 검증할 수 있습니다.
이전 섹션에서 각 CoS 값이 특정 대기열에 매핑된 예제 정책을 고려하십시오. 예제의 끝에 사용자 지정 대기열 정책은 Eth8/1에 적용되었습니다. 또한 기본 대기열 정책이 남아 있는 다른 1p7q4t 인터페이스(Eth6/1)가 있다고 가정합니다.
N7k# show queuing interface e6/1
<some output omitted>
Configured queue-limit ratios
queue-limit ratios: 78[1p7q4t-out-q-default] 1[1p7q4t-out-q2] 1[1p7q4t-out-q3]
*1[1p7q4t-out-q4] *1[1p7q4t-out-q5] *1[1p7q4t-out-q6] *1[1p7q4t-out-q7] 16[1p7q4t-out-pq1]
* means unused queue with mandatory minimum queue-limit
Thresholds:
COS Queue Threshold Type Min Max
______________________________________________________________
0 1p7q4t-out-q-default DT 100 100
1 1p7q4t-out-q2 DT 100 100
2 1p7q4t-out-q3 DT 100 100
3 1p7q4t-out-q4 DT 100 100
4 1p7q4t-out-q5 DT 100 100
5 1p7q4t-out-pq1 DT 100 100
6 1p7q4t-out-q6 DT 100 100
7 1p7q4t-out-q7 DT 100 100
위의 출력에서 q2 및 q3의 대기열 제한은 1%이고 q4, q5, q6 및 q7은 최소 필수 대기열 제한(즉, 1% 미만)인 *1%가 있는 것을 확인할 수 있습니다. 또한 CoS 값 1-4 및 6-7은 이러한 매우 작은 대기열을 활용합니다.작은 큐 크기가 있으면 출력 취소가 빠르게 발생하고 네트워크 성능이 저하될 수 있습니다. 기본 트래픽 CoS 0이 이러한 작은 큐 중 하나에 매핑되면 이 문제가 더욱 심각해집니다.
요약하자면, 사용자 지정 대기열 처리 정책을 생성하고 전역 대기열 클래스 맵을 변경하는 경우 동일한 대기열 처리 유형을 공유하는 섀시의 모든 인터페이스에 사용자 지정 대기열 정책을 적용하는 것이 중요합니다.
또한 유용한 drop 명령이 여기에 나열되어 있습니다.