본 제품에 대한 문서 세트는 편견 없는 언어를 사용하기 위해 노력합니다. 본 설명서 세트의 목적상, 편견 없는 언어는 나이, 장애, 성별, 인종 정체성, 민족 정체성, 성적 지향성, 사회 경제적 지위 및 교차성에 기초한 차별을 의미하지 않는 언어로 정의됩니다. 제품 소프트웨어의 사용자 인터페이스에서 하드코딩된 언어, RFP 설명서에 기초한 언어 또는 참조된 서드파티 제품에서 사용하는 언어로 인해 설명서에 예외가 있을 수 있습니다. 시스코에서 어떤 방식으로 포용적인 언어를 사용하고 있는지 자세히 알아보세요.
Cisco는 전 세계 사용자에게 다양한 언어로 지원 콘텐츠를 제공하기 위해 기계 번역 기술과 수작업 번역을 병행하여 이 문서를 번역했습니다. 아무리 품질이 높은 기계 번역이라도 전문 번역가의 번역 결과물만큼 정확하지는 않습니다. Cisco Systems, Inc.는 이 같은 번역에 대해 어떠한 책임도 지지 않으며 항상 원본 영문 문서(링크 제공됨)를 참조할 것을 권장합니다.
이 문서에서는 Cisco Nexus 9500-R EoR 및 Nexus 3000-R ToR에 대한 입력 폐기 원인 및 해결 방법에 대해 설명합니다. 입력 삭제는 정체 때문에 입력 대기열에서 삭제된 패킷 수를 나타냅니다. 이 숫자에는 tail drop 및 WRED(Weighted Random Early Detection)로 인해 발생하는 드롭이 포함됩니다.
랜덤/산발적/과거(즉, 더 이상 발생하지 않음) 드롭이 발생하는 경우 Cisco TAC에 자세한 내용을 문의하십시오. 이 워크스루는 입력 폐기(Input Discards)가 자주 증가하는 경우에 유용합니다.
R-Series는 인그레스 VOQ 아키텍처를 사용합니다. VOQ 아키텍처는 인그레스 버퍼의 이그레스 대기열을 가상 대기열로 에뮬레이트합니다. 각 이그레스 포트에는 유니캐스트 트래픽에 8개의 대기열과 멀티캐스트 트래픽에 8개의 대기열이 있습니다. 트래픽은 패킷의 CoS(Class-of-Service) 또는 DSCP(Differentiated Services Code Point) 값을 기반으로 트래픽 클래스로 분류한 다음 해당 트래픽 클래스에 대한 해당 가상 대기열에서 대기될 수 있습니다.
R-Series는 분산된 신용 메커니즘을 사용하여 패브릭을 통해 트래픽을 전송합니다. 패킷이 VOQ에서 나가도록 예약되기 전에 인그레스 버퍼 스케줄러는 이그레스 버퍼의 특정 포트 및 우선순위에 대한 크레딧을 요청합니다. 대상 포트 및 우선순위에 대해 인그레스 신용 스케줄러에서 크레딧을 요청합니다. 버퍼 공간을 사용할 수 있는 경우 이그레스 스케줄러는 액세스 권한을 부여하고 신용 부여를 인그레스 버퍼 스케줄러로 전송합니다. 이그레스 버퍼에 사용 가능한 버퍼 공간이 없는 경우 이그레스 스케줄은 크레딧을 부여하지 않으며 다음 크레딧이 사용 가능해질 때까지 트래픽은 VOQ에서 버퍼링됩니다.
다음은 -R 플랫폼의 패킷 전달 파이프라인입니다. 이 문서에서는 Ingress Traffic Manager 구성 요소에 초점을 맞춥니다. 이 링크의 아키텍처에 대한 자세한 정보
인그레스 트래픽 관리자(ITM)는 인그레스 파이프라인의 블록입니다. VOQ로 트래픽을 대기시키고, 패브릭을 통한 전송을 위해 트래픽을 예약하고, 크레딧을 관리하는 것과 관련된 단계를 수행합니다.
인그레스 VOQ 버퍼 블록은 온 칩 버퍼와 오프 칩 패킷 버퍼를 모두 관리합니다. 두 버퍼 모두 VOQ 아키텍처를 사용하며, 트래픽은 IRPP(Ingress Receiver Packet Processor)의 정보를 기반으로 대기됩니다. 유니캐스트 및 멀티캐스트 트래픽에 총 96,000개의 VOQ를 사용할 수 있습니다.
패킷이 인그레스 파이프라인에서 전송되기 전에 패브릭을 통해 전송되도록 패킷을 예약해야 합니다. 인그레스 스케줄러는 이그레스 트래픽 관리자 블록에 있는 이그레스 스케줄러에 신용 요청을 보냅니다. 인그레스 트래픽 관리자가 크레딧을 수신하면 인그레스 전송 패킷 프로세서로 트래픽을 보내기 시작합니다. 이그레스 버퍼가 가득 차면 트래픽은 이그레스 포트 및 트래픽 클래스가 나타내는 전용 큐에서 버퍼링됩니다.
일반적으로 다양한 Nexus 하드웨어에서 다음과 같은 이유로 입력 폐기를 볼 수 있습니다.
PID |
N9K-X9636C-R |
N9K-X9636Q-R |
N9K-X9636C-RX |
N9K-X96136YC-R |
N3K-C36180YC-R |
N3K-C3636C-R |
이 문서에서 "input discards"의 카운터와 동일한 값을 참조하는 HW 내부 카운터의 값은 테스트 및 관련 명령을 실시간으로 가져와야 하는 동안 오류가 증가하면서 변경됩니다.
이 단계는 나중에 편리하다.
이 경우 기본 대기열인 대기열 7이 있습니다. 인그레스(ingress)에 총 8개의 대기열이 있습니다.
Nexus-R# bcm-shell mod 1 "diag counters g" | /|\ | J E R I C H O N E T W O R K I N T E R F A C E | \|/ | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | NBI | | RX_TOTAL_BYTE_COUNTER = 10,616,663,796 | TX_TOTAL_BYTE_COUNTER = 41,136 | | RX_TOTAL_PKT_COUNTER = 10,659,301 | TX_TOTAL_PKT_COUNTER = 606 | | RX_TOTAL_DROPPED_EOPS = 0 | | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | IRE | EPNI | | CPU_PACKET_COUNTER = 606 | | | NIF_PACKET_COUNTER = 10,659,302 | EPE_BYTES_COUNTER = 41,136 | | OAMP_PACKET_COUNTER = 0 | EPE_PKT_COUNTER = 606 | | OLP_PACKET_COUNTER = 0 | EPE_DSCRD_PKT_CNT = 0 | | RCY_PACKET_COUNTER = 0 | | | IRE_FDT_INTRFACE_CNT = 0 | | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | IDR | EGQ | | | | | MMU_IDR_PACKET_COUNTER = 10,659,302 | FQP_PACKET_COUNTER = 606 | | IDR_OCB_INTERFACE_COUNTER = 0 | PQP_UNICAST_PKT_CNT = 606 | | | PQP_DSCRD_UC_PKT_CNT = 0 | | | PQP_UC_BYTES_CNT = 48,408 | +-------------------------------------------+-------------------------------------------| PQP_MC_PKT_CNT = 0 | | IQM | PQP_DSCRD_MC_PKT_CNT = 0 | | | PQP_MC_BYTES_CNT = 0 | | ENQUEUE_PKT_CNT = 1,403,078 | EHP_UNICAST_PKT_CNT = 606 | | DEQUEUE_PKT_CNT = 1,403,078 | EHP_MC_HIGH_PKT_CNT = 0 | | DELETED_PKT_CNT = 0 | EHP_MC_LOW_PKT_CNT = 0 | | ENQ_DISCARDED_PACKET_COUNTER = 9,256,829 | DELETED_PKT_CNT = 0 | | Rejects: PORT_AND_PG_STATUS | | | | RQP_PKT_CNT = 606 | | | RQP_DSCRD_PKT_CNT = 0 | | | PRP_PKT_DSCRD_TDM_CNT = 0 | | | PRP_SOP_DSCRD_UC_CNT = 0 | | | PRP_SOP_DSCRD_MC_CNT = 0 | | | PRP_SOP_DSCRD_TDM_CNT = 0 | | | EHP_MC_HIGH_DSCRD_CNT = 0 | | | EHP_MC_LOW_DSCRD_CNT = 0 | | | ERPP_LAG_PRUNING_DSCRD_CNT = 0 | | | ERPP_PMF_DISCARDS_CNT = 0 | | | ERPP_VLAN_MBR_DSCRD_CNT = 0 | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | | FDA | | | CELLS_IN_CNT_P1 = 0 | CELLS_OUT_CNT_P1 = 0 | | | CELLS_IN_CNT_P2 = 0 | CELLS_OUT_CNT_P2 = 0 | +-------------------------------------------+-------------------------------------------| CELLS_IN_CNT_P3 = 0 | CELLS_OUT_CNT_P3 = 0 | | IPT | CELLS_IN_TDM_CNT = 0 | CELLS_OUT_TDM_CNT = 0 | | | CELLS_IN_MESHMC_CNT = 0 | CELLS_OUT_MESHMC_CNT = 0 | | EGQ_PKT_CNT = 606 --> CELLS_IN_IPT_CNT = 606 | CELLS_OUT_IPT_CNT = 606 | | ENQ_PKT_CNT = 1,403,084 | EGQ_DROP_CNT = 0 | | FDT_PKT_CNT = 1,402,472 | EGQ_MESHMC_DROP_CNT = 0 | | CRC_ERROR_CNT = 0 | EGQ_TDM_OVF_DROP_CNT = 0 | | CFG_EVENT_CNT = 606 * | | | CFG_BYTE_CNT = 48,408 | | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | FDT | FDR | | IPT_DESC_CELL_COUNTER = 5,609,892 | P1_CELL_IN_CNT = 0 | | IRE_DESC_CELL_COUNTER = 0 | P2_CELL_IN_CNT = 0 | | | P3_CELL_IN_CNT = 0 | | TRANSMITTED_DATA_CELLS_COUNTER = 5,609,892 | CELL_IN_CNT_TOTAL = 0 | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | /|\ | J E R I C H O F A B R I C I N T E R F A C E | \|/ |
QUEUE_DELETED_PACKET_COUNTER가 0보다 큰 경우 패킷이 대기열에서 삭제된 후 IQM(Ingress Queuing Manager)에 의해 삭제되었음을 나타냅니다. 이는 예약 체계의 잘못된 구성을 제안하는 크레딧이 수신되지 않은 활성 대기열이 있기 때문입니다. bcm-shell mod X "getReg IQM_QUEUE_DELETED_PACKET_COUNTER"를 통해 이 확인을 합니다.
ENQ_DISCARDED_PACKET_COUNTER는 패킷이 대기열에 넣기 전에 삭제되었음을 의미합니다. BCM에서도 이 카운터 집합을 볼 수 있습니다(읽기 시 명령이 지워짐):
show hardware internal errors module X(명령은 읽었을 때 지우기)를 사용하면 이러한 오류를 항상 신속하게 확인할 수 있습니다.
이 예제의 Eth1/33을 표시합니다. 실제 네트워크에서는 혼잡한 이그레스 포트를 아직 알지 못합니다.
이 명령은 특정 포트의 인그레스 VoQ 플로우에 대한 세부 정보를 보여줍니다. 또한 VoQ의 현재 신용 균형을 보여줍니다.
포트의 VOQ는 다음과 같은 방식으로 파생됩니다.
LC는 0 기반 - 모듈 1은 0, 모듈 2는 1 등
LC당 256개의 시스템 포트 ID가 있음
ID = (LC * 시스템 포트 ID) + FP 번호
Eth1/9 = (0 * 256) + 9 = 9
VOQ ID = 32 + (시스템 포트 ID * 8)
Eth1/9 = 32 + (9 * 8) = 104
따라서 Eth1/9에 대한 VOQ는 이전에 수집된 출력과 일치하는 104가 됩니다.
Queue가 303인 경우 이러한 대기열이 실제로 범위이므로 303 + 7 또는 303-7이 될 수 있습니다. 문제는 어떤 포트에서 296-303 범위에 일치하는 VOQ가 있는지 아니면 303-310 범위에 매칭합니까?
Eth1/9의 Queue 7이 혼잡한 것으로 알려져 있으므로 실제로 303은 그 범위 중 가장 높으므로 296-303의 범위는 잘 알고 있는 추측입니다.
asic 0에 대해 동일하게 표시 - 여기에 요약 표시 안 함 Voq 열 아래에 관심 범위가 해당 ASIC에 속하지 않음을 알 수 있습니다.
위 출력에서 몇 가지 사항을 확인합니다.
이그레스(egress) 정체 포트를 발견했습니다. 네트워크에 잘못된 버스트가 있는지, SPAN을 구성했는지, 대상 포트가 1G인지, 하나 이상의 10G 인터페이스를 소싱하는 동안 또는 병목 현상/설계 문제인지 확인합니다.
이러한 기능은 더 발전합니다. 일반적인 시나리오에서 이그레스 정체 포트를 찾을 필요가 없습니다.
attach module X show hardware internal jer-usd tm_debug asic <slot> module <module> show hardware internal jer-usd info voq [ asic <instance> ] [ port <port> ] [ ] show hardware internal jer-usd info non-empty voq asic [ <instance> ] [ ] show hardware internal jer-usd info voq-profile { QueueThreshold drop_p <dp> | OCBThreshold } [ asic <instance> ] [ port<port> ] [ ] show hardware internal jer-usd info voq-connector front-port <port> [ ] show hardware internal jer-usd stats vsq { front-port <port> | inband asic <slot> | recycle-port <port> asic <slot> } show hardware internal jer-usd ingress-vsq buffer-occupancy front-port <port> show hardware internal jer-usd info IQM { counter | rate } asic <instance> dst-port <port> [ interval <int> ] [ ] show hardware internal jer-usd info SCH { counter | rate } asic <instance> dst-port <port> [ interval <int> ] [ ]
bcm-shell mod X
diag cosq print_flow_and_up dest_id=<flow_id>
diag cosq voq id=<voqid> detailed=1
diag cosq qpair e2e ps=<id>
cosq conn ing
cosq conn egr
dump IPS_CR_BAL_TABLE <voqID>
getReg IQM_QUEUE_MAXIMUM_OCCUPANCY_QUEUE_SIZE
Traffic Generator가 각 서버에 2G의 트래픽을 보내는 토폴로지를 고려해 보십시오.
비어 있지 않은 큐를 신속하게 확인 - 4개:
이러한 큐가 속한 인터페이스 결정 - 먼저 ASIC 0을 선택합니다(한 인터페이스에서만 표시됨).
다른 세 개의 대기열 값에 대해 동일한 프로세스를 반복합니다. 247, 303 및 351
RX 방향에서 Eth1/9를 SPAN 소스 포트로 설정하는 동안 Eth1/33을 SPAN 대상 포트로 설정
Eth1/9가 10.10.10.1/24인 경우 SRC 10.10.10.10 및 DEST 192.168.10.10으로 패킷 전송 - 이 경우 입력 폐기되지 않습니다. 그러나 다음 카운터가 표시됩니다.
Nexus-R# bcm-shell mod 1 "diag counters g" | /|\ | J E R I C H O N E T W O R K I N T E R F A C E | \|/ | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ _PACKET_COUNTER = 0 | DELETED_PKT_CNT = 12,027,201 | | | Discards: INVALID_OTM SRC_EQUAL_DEST +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+
SRC 10.10.10.10 및 DEST 192.168.10.10으로 패킷을 보냅니다. 여기서 Eth1/9는 10.10.10.1/24이고 Eth1/33은 172.16.0.1/30 서브넷의 L3 포트입니다. - 목적지를 알 수 없는 경우에도 드롭 카운터가 없고 입력 취소가 없습니다.
Eth1/9가 와이드 트렁크(또는 액세스 포트)인 경우 패킷 전송 - 포트가 STP 포워딩 상태로 전환되는 동안 이는 Input Discard로 등록됩니다.
Nexus-R(config)# int e1/9
Nexus-R(config-if)# switchport mode trunk
Nexus-R# bcm-shell mod 1 "diag counters g" | i i --|IQM|ENQ_DISCARD|Rejects +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ +-------------------------------------------+-------------------------------------------| PQP_MC_PKT_CNT = 1,678,949 | | IQM | PQP_DSCRD_MC_PKT_CNT = 11,369,033 | | ENQ_DISCARDED_PACKET_COUNTER = 1,289,182 | DELETED_PKT_CNT = 11,369,081 | | Rejects: QUEUE_NOT_VALID_STATUS | Discards: SRC_EQUAL_DEST | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+
Nexus-R# show span int e1/9
Vlan Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
VLAN0001 Desg BLK 2 128.9 P2p
VLAN0010 Desg BLK 2 128.9 P2p
<snip>
QUEUE_NOT_VALID_STATUS는 PP(Packet Processor) 블록에서 수신한 패킷 프로세서(PP) 삭제 결정 또는 잘못된 목적지로 인한 삭제입니다.
10G+를 Eth1/9로 보내면 처음에 Eth1/9를 매싱할 때 다른 유형의 드롭이 생성됩니다. 여전히 입력 폐기로 간주합니다.
bcm-shell.0> diag counters g | /|\ | J E R I C H O N E T W O R K I N T E R F A C E | \|/ | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | NBI | | RX_TOTAL_BYTE_COUNTER = 53,913,106,009 | TX_TOTAL_BYTE_COUNTER = 1,164,231 | | RX_TOTAL_PKT_COUNTER = 54,145,395 | TX_TOTAL_PKT_COUNTER = 17,029 | | RX_TOTAL_DROPPED_EOPS = 0 | | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | IRE | EPNI | | CPU_PACKET_COUNTER = 17,010 | | | NIF_PACKET_COUNTER = 54,145,476 | EPE_BYTES_COUNTER = 5,721,307 | | OAMP_PACKET_COUNTER = 0 | EPE_PKT_COUNTER = 50,703 | | OLP_PACKET_COUNTER = 0 | EPE_DSCRD_PKT_CNT = 0 | | RCY_PACKET_COUNTER = 16,837 | | | IRE_FDT_INTRFACE_CNT = 0 | | +-------------------------------------------+-------------------------------------------+-------------------------------------------+-------------------------------------------+ | IDR | EGQ | | | | | MMU_IDR_PACKET_COUNTER = 54,128,577 | FQP_PACKET_COUNTER = 50,703 | | IDR_OCB_INTERFACE_COUNTER = 0 | PQP_UNICAST_PKT_CNT = 50,683 | | | PQP_DSCRD_UC_PKT_CNT = 0 | | | PQP_UC_BYTES_CNT = 5,216,716 | +-------------------------------------------+-------------------------------------------| PQP_MC_PKT_CNT = 20 | | IQM | PQP_DSCRD_MC_PKT_CNT = 20 | | | PQP_MC_BYTES_CNT = 2,079 | | ENQUEUE_PKT_CNT = 5,463,323 | EHP_UNICAST_PKT_CNT = 50,683 | | DEQUEUE_PKT_CNT = 5,594,400 | EHP_MC_HIGH_PKT_CNT = 20 | | DELETED_PKT_CNT = 0 | EHP_MC_LOW_PKT_CNT = 0 | | ENQ_DISCARDED_PACKET_COUNTER = 48,716,055 | DELETED_PKT_CNT = 40 | | Rejects: VOQ_MX_QSZ_STATUS | | <snip>