소개
이 문서에서는 ASR9K(Aggregation Services Router 9000)의 CEF(Cisco Express Forwarding)에서 VQI(Virtual Queue Index)를 확인하고 적절하게 할당하는 방법에 대해 설명합니다.
배경 정보
패킷이 ASR9K에서 한 인터페이스에서 다른 인터페이스로 전달되려면 패킷이 패브릭을 통과해야 합니다. ASR9K에는 로컬 스위칭이 없습니다. 하지만 패킷이 한 인터페이스에서 다른 인터페이스로 어떻게 전달됩니까? 이는 각 인터페이스에 할당된 VQI를 사용하여 수행됩니다. 이렇게 하면 패브릭에서 패킷을 라우팅할 LC(Linecard) 및 NP(Network Processor)를 알 수 있습니다.
CSCvc의 경우처럼 가끔 발생합니다83681 따라서 잘못된 VQI가 할당되고 라우터 내에서 트래픽이 블랙홀링될 수 있습니다.
VQI 할당 확인
VQI 할당을 확인하려면 이 섹션을 참조하십시오.
먼저 show cef <prefix> detail 명령을 사용하여 흐름, 소스 및 대상 IP(인터넷 프로토콜) 주소에 대한 인그레스 및 이그레스 인터페이스를 식별합니다.
이는 VQI 할당을 위해 살펴봐야 할 LC를 식별하는 데 도움이 됩니다.
소스 주소는 다음과 같습니다.
RP/0/RSP0/CPU0:ASR9006-H#show cef 123.29.62.12 detail
Tue May 1 10:54:50.356 EDT
123.29.62.12/32, version 325561, internal 0x1000001 0x0 (ptr 0x76a07a40) [1], 0x0 (0x73ffbf50), 0xa28 (0x75e3133c)
Updated May 1 10:26:51.592
remote adjacency to TenGigE0/1/0/5
Prefix Len 32, traffic index 0, precedence n/a, priority 1
gateway array (0x74bff484) reference count 3, flags 0x68, source lsd (5), 1 backups
[2 type 5 flags 0x8401 (0x7216f3d0) ext 0x0 (0x0)]
LW-LDI[type=5, refc=3, ptr=0x73ffbf50, sh-ldi=0x7216f3d0]
gateway array update type-time 1 May 1 10:26:51.592
LDI Update time May 1 10:26:51.592
LW-LDI-TS May 1 10:26:51.592
via 10.94.1.182/32, TenGigE0/1/0/5, 6 dependencies, weight 0, class 0 [flags 0x0]
path-idx 0 NHID 0x0 [0x7181cfc4 0x0]
next hop 10.94.1.182/32
remote adjacency
local label 24088 labels imposed {86}
via 10.94.1.150/32, TenGigE0/1/0/7, 6 dependencies, weight 0, class 0 [flags 0x0]
path-idx 1 NHID 0x0 [0x7181d018 0x0]
next hop 10.94.1.150/32
remote adjacency
local label 24088 labels imposed {86}
Load distribution: 0 1 (refcount 2)
Hash OK Interface Address
0 Y TenGigE0/1/0/5 remote
1 Y TenGigE0/1/0/7 remote
대상 주소는 다음과 같습니다.
RP/0/RSP0/CPU0:ASR9006-H#show cef 123.29.62.1 detail
Tue May 1 10:53:14.531 EDT
123.29.62.1/32, version 334286, internal 0x1000001 0x0 (ptr 0x74bf1a04) [1], 0x0 (0x73ffbeb0), 0xa20 (0x75e310d4)
Updated May 1 10:53:12.459
remote adjacency to TenGigE0/0/0/2
Prefix Len 32, traffic index 0, precedence n/a, priority 1
gateway array (0x74c025ec) reference count 27, flags 0x68, source lsd (5), 1 backups
[19 type 4 flags 0x8401 (0x7216f390) ext 0x0 (0x0)]
LW-LDI[type=1, refc=1, ptr=0x73ffbeb0, sh-ldi=0x7216f390]
gateway array update type-time 1 Apr 30 17:03:05.246
LDI Update time Apr 30 17:03:05.246
LW-LDI-TS Apr 30 17:03:05.247
via 10.94.0.10/32, TenGigE0/0/0/2, 4 dependencies, weight 0, class 0 [flags 0x0]
path-idx 0 NHID 0x0 [0x7181ce20 0x7181d06c]
next hop 10.94.0.10/32
remote adjacency
local label 24012 labels imposed {ImplNull}
via 10.94.2.9/32, TenGigE0/0/0/3, 4 dependencies, weight 0, class 0 [flags 0x0]
path-idx 1 NHID 0x0 [0x7181ce74 0x7181d0c0]
next hop 10.94.2.9/32
remote adjacency
local label 24012 labels imposed {ImplNull}
Load distribution: 0 1 (refcount 19)
Hash OK Interface Address
0 Y TenGigE0/0/0/2 remote
1 Y TenGigE0/0/0/3 remote
이러한 출력에서 LC 1은 인그레스 LC이고 LC 0은 이그레스 LC이며, 트래픽 로드 밸런싱을 위해 두 개의 포트가 있습니다.
다음으로, show controller np ports all loc <LC> 명령을 사용하여 인그레스 및 이그레스 LC에 있는 NP의 수를 파악해야 합니다.
인그레스 LC에는 8개의 NP가 있습니다.
RP/0/RSP0/CPU0:ASR9006-H#show controller np ports all loc 0/1/CPU0
Tue May 1 10:56:57.996 EDT
Node: 0/1/CPU0:
----------------------------------------------------------------
NP Bridge Fia Ports
-- ------ --- ---------------------------------------------------
0 -- 0 TenGigE0/1/0/0 - TenGigE0/1/0/2
1 -- 0 TenGigE0/1/0/3 - TenGigE0/1/0/5
2 -- 1 TenGigE0/1/0/6 - TenGigE0/1/0/8
3 -- 1 TenGigE0/1/0/9 - TenGigE0/1/0/11
4 -- 2 TenGigE0/1/0/12 - TenGigE0/1/0/14
5 -- 2 TenGigE0/1/0/15 - TenGigE0/1/0/17
6 -- 3 TenGigE0/1/0/18 - TenGigE0/1/0/20
7 -- 3 TenGigE0/1/0/21 - TenGigE0/1/0/23
이그레스 LC에는 2개의 NP가 있습니다.
RP/0/RSP0/CPU0:ASR9006-H#show controller np ports all loc 0/0/cPU0
Tue May 1 10:55:27.661 EDT
Node: 0/0/CPU0:
----------------------------------------------------------------
NP Bridge Fia Ports
-- ------ --- ---------------------------------------------------
0 -- 0 TenGigE0/0/0/0 - TenGigE0/0/0/3
1 -- 1 TenGigE0/0/1/0 - TenGigE0/0/1/3
다음으로, show cef <destination prefix> 하드웨어 인그레스 세부 정보 loc <ingress lc>를 사용하여 인그레스 LC를 확인합니다 | I vqi 명령 및 show cef <dst prefix> hardware egress detail loc <egress lc> I vqi 명령이 있는 이그레스 LC
이 정보는 각 NP가 이그레스 인터페이스에 도달하도록 프로그래밍되는 방법에 대한 정보를 제공합니다. 이 경우 인그레스 LC에 8개의 NP가 있고 이그레스 LC에 2개의 ECMP(Equal Cost Multi-Path) 링크가 있으므로 16개의 항목이 있습니다. 처음 8개의 항목은 첫 번째 ECMP 링크에 대한 것이고 다음 8개의 항목은 두 번째 ECMP 링크에 대한 것이다. 각 8개의 집합은 일치해야 하며, 각 NP가 동일하게 되도록 프로그래밍되었음을 의미합니다. 두 개의 개별 인터페이스가 있지만 각 세트는 서로 달라야 합니다. 만약 그것들이 동일하다면, 당신은 VQI CEF 오프로그래밍 문제에 부딪힐 수도 있다.
RP/0/RSP0/CPU0:ASR9006-H#show cef 123.29.62.1 hardware ingress loc 0/1/CPU0 | i vqi
Tue May 1 10:56:27.064 EDT
sfp/vqi : 0x58
sfp/vqi : 0x58
sfp/vqi : 0x58
sfp/vqi : 0x58
sfp/vqi : 0x58
sfp/vqi : 0x58
sfp/vqi : 0x58
sfp/vqi : 0x58
sfp/vqi : 0x59
sfp/vqi : 0x59
sfp/vqi : 0x59
sfp/vqi : 0x59
sfp/vqi : 0x59
sfp/vqi : 0x59
sfp/vqi : 0x59
sfp/vqi : 0x59
이그레스 LC가 제대로 프로그래밍되었는지 확인합니다. 이 경우 2개의 NP와 2개의 ECMP 링크가 있으므로 프로그래밍해야 하는 2개의 VQI 세트가 있습니다.
RP/0/RSP0/CPU0:ASR9006-H#show cef 123.29.62.1 hardware egress loc 0/0/CPU0 | i vqi
Tue May 1 10:57:29.221 EDT
out_lbl_invalid: 0 match: 0 vqi/lag-id: 0x0
out_lbl_invalid: 0 match: 0 vqi/lag-id: 0x0
sfp/vqi : 0x58
sfp/vqi : 0x58
out_lbl_invalid: 0 match: 0 vqi/lag-id: 0x0
out_lbl_invalid: 0 match: 0 vqi/lag-id: 0x0
sfp/vqi : 0x59
sfp/vqi : 0x59
마지막으로 확인할 사항은 인터페이스의 VQI 할당입니다.
여기서 switch_fabric_port 변수를 확인하여 10진수에서 16진수로 변환할 수 있습니다. 88은 58이고 89는 59이며, 이러한 값은 CEF가 ASR9K에서 VQI 전송을 위해 적절히 프로그래밍되었음을 의미하는 이 명령의 VQI 할당과 일치합니다.
RP/0/RSP0/CPU0:ASR9006-H#show controller pm interface ten 0/0/0/2
Tue May 1 10:58:52.024 EDT
Ifname(1): TenGigE0_0_0_2, ifh: 0x4000140 :
iftype 0x1e
egress_uidb_index 0x7, 0x7
ingress_uidb_index 0x7, 0x7
port_num 0x2
subslot_num 0x0
ifsubinst 0x0
ifsubinst port 0x2
phy_port_num 0x2
channel_id 0x0
channel_map 0x0
lag_id 0x0
virtual_port_id 0x0
switch_fabric_port 88
in_tm_qid_fid0 0x20002
in_tm_qid_fid1 0xffffffff
in_qos_drop_base 0x690001
out_tm_qid_fid0 0x20022
out_tm_qid_fid1 0xffffffff
np_port 0x6
out_qos_drop_base 0x6900a1
bandwidth 10000000 kbps
ing_stats_ptrs 0x53016a, 0x0
egr_stats_ptrs 0x53017b, 0x0
l2_transport 0x0
ac_count 0x0
parent_ifh 0x0
parent_bundle_ifh 0x0
L2 protocols bmap 0x1000000
Cluster interface 0
RP/0/RSP0/CPU0:ASR9006-H#show controller pm interface ten 0/0/0/3
Tue May 1 10:59:08.886 EDT
Ifname(1): TenGigE0_0_0_3, ifh: 0x4000180 :
iftype 0x1e
egress_uidb_index 0x8, 0x8
ingress_uidb_index 0x8, 0x8
port_num 0x3
subslot_num 0x0
ifsubinst 0x0
ifsubinst port 0x3
phy_port_num 0x3
channel_id 0x0
channel_map 0x0
lag_id 0x0
virtual_port_id 0x0
switch_fabric_port 89
in_tm_qid_fid0 0x30002
in_tm_qid_fid1 0xffffffff
in_qos_drop_base 0x6e0001
out_tm_qid_fid0 0x30022
out_tm_qid_fid1 0xffffffff
np_port 0x7
out_qos_drop_base 0x6e00a1
bandwidth 10000000 kbps
ing_stats_ptrs 0x530183, 0x0
egr_stats_ptrs 0x530194, 0x0
l2_transport 0x0
ac_count 0x0
parent_ifh 0x0
parent_bundle_ifh 0x0
L2 protocols bmap 0x1000000
Cluster interface 0