簡介
本檔案介紹如何在執行Cisco IOS® XE軟體的Catalyst 9000系列交換器上設定802.1Q通道(QinQ)和第2層通訊協定通道(L2PT),並對其進行驗證和疑難排解。
請參閱思科正式版本說明和配置指南,瞭解限制、限制、配置選項和警告的最新資訊,以及有關此功能的任何其他相關詳細資訊。
必要條件
需求
思科建議您瞭解以下主題:
- Catalyst 9000系列交換器架構
- Cisco IOS XE軟體架構
- 虛擬區域網(VLAN)、VLAN中繼和IEEE 802.1Q封裝
- 第2層通訊協定,例如思科探索通訊協定(CDP)、連結層探索通訊協定(LLDP)、跨距樹狀目錄通訊協定(STP)、連結彙總控制通訊協定(LACP)和連線埠彙總通訊協定(PAgP)。
- QinQ隧道、選擇性QinQ隧道和第2層協定隧道(L2PT)的基本知識
- 交換器連線埠分析器(SPAN)和嵌入式封包擷取(EPC)
採用元件
本檔案中的資訊是根據以下硬體和軟體版本:
- 採用Cisco IOS XE 17.3.3的Cisco Catalyst C9500-12Q
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
相關產品
本文件也適用於以下硬體和軟體版本:
- 具備Cisco IOS XE軟體的Catalyst 3650和3850系列交換機
- 具備Cisco IOS XE軟體的Catalyst 9200、9300、9400和9600系列交換機
設定
本節介紹Catalyst 9000交換機上部署IEEE 802.1Q隧道(QinQ)的基本拓撲,以及每個Catalyst交換機的配置示例。
網路圖表
在所示的拓撲中有兩個站點,站點A和站點B,這兩個站點被使用服務虛擬LAN(SVLAN)1010的服務提供商交換網路物理隔離。提供商邊緣(PE)交換機ProvSwitchA和ProvSwitchB分別將站點A和站點B的訪問許可權授予提供商網路。站點A和站點B使用客戶VLAN(CVLAN)10、20和30,並且要求這些VLAN在第2層(L2)進行擴展。站點A通過客戶邊緣(CE)交換機CusSwitchA連線到提供商網路,站點B通過CE交換機CusSwitchB連線到提供商網路。
站點A將使用CVLAN的IEEE 802.1Q標籤(也稱為內部標籤)的流量傳送到PE交換機ProvSwitchA(充當QinQ隧道接入)。ProvSwitchA將收到的流量轉發到提供商交換網路,該網路使用SVLAN的第二個IEEE 802.1Q標籤(也稱為外部標籤或Metro標籤),新增在CVLAN 802.1Q標籤之上。此程式也稱為VLAN堆疊,此範例顯示2標籤的VLAN堆疊。雙重標籤的流量僅根據SVLAN媒體存取控制(MAC)表資訊由提供者網路中的L2轉送。一旦雙標籤流量到達QinQ隧道的遠端,同樣充當QinQ隧道接入的遠端PE交換機ProvSwitchB從流量中去除SVLAN標籤,並將其轉發到僅使用CVLAN 802.1Q標籤標籤的站點B,從而實現遠端站點間VLAN的第2層擴展。L2協定隧道也用於在CE交換機CusSwitchA和CusSwitchB之間交換Cisco發現協定(CDP)幀。
當流量從站點B轉發到站點A時,將發生相同的過程,並且應用於PE交換機ProvSwitchB的相同配置、驗證和故障排除步驟。假設提供商交換機網路中的所有其他裝置和客戶站點僅配置了access/trunk命令,並且不執行任何QinQ功能。
以下示例假設在QinQ隧道接入交換機中僅接收有一個802.1Q標籤的流量,但是,接收的流量可以具有零個或多個802.1Q標籤。SVLAN標籤會新增到接收的VLAN堆疊中。裝置不需要額外的QinQ、VLAN和TRUNK配置來支援零個或更多802.1Q標籤的流量,但是,必須更改裝置上的最大傳輸單元(MTU)以支援新增到流量中的其他位元組(在故障排除一節中介紹的其他詳細資訊)。
有關IEEE 802.1Q通道的其他資訊,請參閱適用於Catalyst 9500和Cisco IOS XE Amsterdam-17.3.x的第2層配置指南文檔:
https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst9500/software/release/17-3/configuration_guide/lyr2/b_173_lyr2_9500_cg/configuring_ieee_802_1q_tunneling.html
![Topology Diagram](/c/dam/en/us/support/docs/switches/catalyst-9300-switch/217726-configure-and-verify-and-troubleshoot-qi-00.png)
ProvSwitchA(QinQ通道PE裝置)上的配置:
!
version 17.3
!
hostname ProvSwitchA
!
vtp domain QinQ
vtp mode transparent
!
vlan dot1q tag native
!
vlan 1010
name QinQ-VLAN
!
interface TenGigabitEthernet1/0/1
switchport trunk allowed vlan 1010
switchport mode trunk
!
interface TenGigabitEthernet1/0/2
switchport access vlan 1010
switchport mode dot1q-tunnel
no cdp enable
l2protocol-tunnel cdp
!
ProvSwitchB(QinQ通道PE裝置)上的配置:
!
version 17.3
!
hostname ProvSwitchB
!
vtp domain QinQ
vtp mode transparent
!
vlan dot1q tag native
!
vlan 1010
name QinQ-VLAN
!
interface TeGigabitEthernet1/0/1
switchport trunk allowed vlan 1010
switchport mode trunk
!
interface TeGigabitEthernet1/0/2
switchport access vlan 1010
switchport mode dot1q-tunnel
no cdp enable
l2protocol-tunnel cdp
!
CusSwitchA(CE裝置)上的配置:
!
version 17.3
!
hostname CusSwitchA
!
vtp domain SiteA
vtp mode transparent
!
vlan dot1q tag native
!
vlan 10
name Data
!
vlan 20
name Voice
!
vlan 30
name Mgmt
!
interface TenGigabitEthernet1/0/2
switchport trunk allowed vlan 10,20,30
switchport mode trunk
!
CusSwitchB(CE裝置)上的配置:
!
version 17.3
!
hostname CusSwitchB
!
vtp domain SiteB
vtp mode transparent
!
vlan dot1q tag native
!
vlan 10
name Data
!
vlan 20
name Voice
!
vlan 30
name Mgmt
!
interface TenGigabitEthernet1/0/2
switchport trunk allowed vlan 10,20,30
switchport mode trunk
!
請注意,提供商裝置中未定義CVLAN,CE交換機上也未定義SVLAN。提供商裝置僅基於SVLAN轉發流量,不考慮任何轉發決策的CVLAN資訊,因此提供商裝置不需要知道在QinQ隧道訪問中收到哪些VLAN(除非使用選擇性QinQ)。這也表示用於CVLAN標籤的相同VLAN ID可用於提供商交換網路內的流量,反之亦然。如果是這種情況,建議在全域性配置模式下配置vlan dot1q tag native,以防止任何資料包丟失或流量洩漏問題。預設情況下,vlan dot1q tag native允許在所有中繼介面上標籤802.1Q native VLAN,但可以在介面級別禁用該標籤,並且不配置switchport trunk native vlan標記。
驗證
QinQ通道和L2PT的連線埠組態可以從Cisco IOS XE視角驗證到轉送應用特定積體電路(FWD-ASIC)視角,即可在Catalyst交換器上進行轉送決策。基本的Cisco IOS XE驗證命令包括:
- show dot1q-tunnel — 列出配置為QinQ通道訪問的介面。
ProvSwitchA# show dot1q-tunnel
dot1q-tunnel mode LAN Port(s)
-----------------------------
Te1/0/2
- show vlan id {svlan-number} — 顯示分配給指定VLAN的介面。
ProvSwitchA# show vlan id 1010
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1010 QinQ-VLAN active Te1/0/1, Te1/0/2
- show interfaces trunk — 列出在中繼模式下配置的介面。
ProvSwitchA# show interfaces trunk
Port Mode Encapsulation Status Native vlan
Te1/0/1 on 802.1q trunking 1
Port Vlans allowed on trunk
Te1/0/1 1010
- show vlan dot1q tag native — 列出802.1Q native VLAN標籤全域性狀態以及配置為標籤802.1Q native VLAN的中繼介面。
ProvSwitchA# show vlan dot1q tag native
dot1q native vlan tagging is enabled globally
Per Port Native Vlan Tagging State
----------------------------------
Port Operational Native VLAN
Mode Tagging State
-------------------------------------------
Te1/0/1 trunk enabled
- show mac address-table vlan {svlan-number} — 顯示在SVLAN中獲知的MAC地址。無論使用哪個CVLAN,都會在SVLAN中獲知來自LAN裝置的MAC地址。
ProvSwitchA#show mac address-table vlan 1010
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
1010 701f.539a.fe46 DYNAMIC Te1/0/2
Total Mac Addresses for this criterion: 3
- show l2-protocol tunnel — 顯示為L2PT啟用的介面以及每個已啟用的L2協定的計數器。
ProvSwitchA#show l2protocol-tunnel
COS for Encapsulated Packets: 5
Drop Threshold for Encapsulated Packets: 0
Port Protocol Shutdown Drop Encaps Decaps Drop
Threshold Threshold Counter Counter Counter
------------------- ----------- --------- --------- --------- --------- ---------
Te1/0/2 cdp ---- ---- 90 97 0
--- ---- ---- ---- ---- ----
- show cdp neighbor — 可以在CE交換機上運行,確認它們可以通過CDP相互看到。
CusSwitcha#show cdp neighbors
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone,
D - Remote, C - CVTA, M - Two-port Mac Relay
Device ID Local Intrfce Holdtme Capability Platform Port ID
CusSwitchB.cisco.com Ten 1/0/2 145 S I C9500-12 Ten 1/0/2
當介面透過指令行介面(CLI)設定為QinQ通道存取時,Cisco IOS XE會觸發連線埠管理員(PM)程式,以設定具有指定模式和VLAN的交換器連線埠。可以使用show pm port interface {interface-name}命令在PM中檢查交換機埠資訊。
注意:要運行PM命令,必須在全域性配置模式上配置服務內部。此配置允許在CLI上運行其他平台和debug命令,對網路沒有功能影響。建議在PM驗證完成之後刪除此命令。
ProvSwitchA# show pm port interface TenGigabitEthernet1/0/2
port 1/2 pd 0x7F9E317C3A48 swidb 0x7F9E30851320(switch) sb 0x7F9E30852FE8
if_number = 2 hw_if_index = 1 snmp_if_index = 2(2) ptrunkgroup = 0(port)
admin up(up) line up(up) operErr none
port assigned mac address 00a3.d144.200a
idb port vlan id 1010 default vlan id 1010
speed: 10G duplex: full mode: tunnel encap: native
flowcontrol receive: on flowcontrol send: off
sm(pm_port 1/2), running yes, state dot1qtunnel
介面Te1/0/2獲分配的介面編號(if_number)為2。這是介面識別碼(IF-ID),是識別特定連線埠的內部值。也可以使用show platform software pm-port switch 1 R0 interface {IF-ID}命令在PM上驗證switchport配置。
ProvSwitchA# show platform software pm-port switch 1 R0 interface 2
PM PORT Data:
Intf PORT DEFAULT NATIVE ALLOW MODE PORT PORT
ID ENABLE VLAN VLAN NATIVE DUPLEX SPEED
---------------------------------------------------------
2 TRUE 1010 1010 TRUE tunnel full unknown
一旦PM應用交換機埠配置,PM將埠資訊中繼到轉發引擎驅動程式(FED),以便相應地程式設計專用積體電路(ASIC)。
在FED中,可以使用show platform software feed switch {switch-number} port if_id {IF-ID}命令檢查埠,以確認它們已程式設計為QinQ隧道訪問埠:
ProvSwitchA# show platform software fed switch 1 port if_id 2
FED PM SUB PORT Data :
if_id = 2
if_name = TenGigabitEthernet1/0/2
enable: true
speed: 10Gbps
operational speed: 10Gbps
duplex: full
operational duplex: full
flowctrl: on
link state: UP
defaultVlan: 1010
port_state: Fed PM port ready
mode: tunnel
與接入模式下的switchport不同(它們預期只接收未標籤的流量),在802.1Q隧道模式下配置的交換機埠也接受802.1Q標籤的流量。FED在QinQ通道存取連線埠的連線埠上允許此功能,如使用show platform software fed switch {switch-number} if-id {IF-ID}可確認:
C9500-12Q-PE1# show platform software fed switch 1 ifm if-id 2
Interface Name : TenGigabitEthernet1/0/2
Interface State : Enabled
Interface Type : ETHER
Port Type : SWITCH PORT
Port Location : LOCAL
Port Information
Type .............. [Layer2]
Identifier ........ [0x9]
Slot .............. [1]
Port Physical Subblock
Asic Instance ..... [0 (A:0,C:0)]
Speed ............. [10GB]
PORT_LE ........... [0x7fa164777618]
Port L2 Subblock
Enabled ............. [Yes]
Allow dot1q ......... [Yes]
Allow native ........ [Yes]
Default VLAN ........ [1010]
Allow priority tag ... [Yes]
Allow unknown unicast [Yes]
Allow unknown multicast[Yes]
Allow unknown broadcast[Yes]
FED還提供了一個十六進位制格式的控制代碼值,稱為埠邏輯實體(埠LE)。埠LE是指向在轉發ASIC(fwd-asic)中程式設計的埠資訊的指標。show platform hardware fed switch 1 fwd-asic abstration print-resource-handle {Port-LE-handle} 1命令會顯示在ASIC層級的連線埠上啟用的不同功能:
C9500-12Q-PE1# show platform hardware fed switch 1 fwd-asic abstraction print-resource-handle 0x7f79548c3718 1
Detailed Resource Information (ASIC_INSTANCE# 0)
----------------------------------------
LEAD_PORT_ALLOW_BROADCAST value 1 Pass
LEAD_PORT_ALLOW_DOT1Q_TAGGED value 1 Pass
LEAD_PORT_ALLOW_MULTICAST value 1 Pass
LEAD_PORT_ALLOW_NATIVE value 1 Pass
LEAD_PORT_ALLOW_UNICAST value 1 Pass
LEAD_PORT_ALLOW_UNKNOWN_UNICAST value 1 Pass¡
LEAD_PORT_SEL_QINQ_ENABLED value 0 Pass
LEAD_PORT_DEFAULT_VLAN value 1010 Pass
==============================================================
此輸出在ASIC級別確認QinQ隧道接入交換機埠配置為允許來自LAN的未標籤流量和802.1Q標籤流量,並指定SVLAN 1010通過提供商交換網路轉發。請注意,未設定LEAD_PORT_SEL_QINQ_ENABLED欄位。此位只為選擇性QinQ配置設定,而不為傳統QinQ隧道配置設定(如本文檔所述)。
疑難排解
本節提供可對組態進行疑難排解的步驟。疑難排解802.1Q通道中的流量問題最有用的工具是交換式連線埠分析器(SPAN)。SPAN擷取可用於驗證從LAN接收的CVLAN的802.1Q標籤和在QinQ通道存取裝置新增的SVLAN。
註:嵌入式資料包捕獲(EPC)也可用於捕獲802.1Q隧道環境中的流量。但是,使用EPC進行出口資料包捕獲發生在流量使用IEEE 802.1Q標籤之前(在出口方向的埠級別上發生802.1Q標籤插入)。因此,提供商邊緣裝置的上行鏈路中繼上的輸出EPC無法顯示提供商交換網路中使用的SVLAN標籤。使用EPC收集雙標籤流量的選項是在鄰居提供程式裝置上使用輸入EPC捕獲流量。
有關EPC的其他資訊,請參閱使用Cisco IOS XE Amsterdam-17.3.x的Catalyst 9500交換機的網路管理配置指南:
https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst9500/software/release/17-3/configuration_guide/nmgmt/b_173_nmgmt_9500_cg/configuring_packet_capture.html
若要設定SPAN以擷取802.1Q標籤的流量,必須設定monitor session {session-number} destination interface {interface-name} encapsulation replicate命令。如果未配置encapsulation replicate關鍵字,則使用SPAN映象的流量可能包含不正確的802.1Q標籤資訊。有關SPAN設定的範例,請參閱設定一節。
有關SPAN的其他資訊,請參閱搭載Cisco IOS XE Amsterdam-17.3.x的Catalyst 9500交換器的網路管理組態設定指南
https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst9500/software/release/17-3/configuration_guide/nmgmt/b_173_nmgmt_9500_cg/configuring_span_and_rspan.html
ProvSwitchA上的SPAN設定範例:
!
monitor session 1 source interface Te1/0/1 , Te1/0/2
monitor session 1 destination interface Te1/0/3 encapsulation replicate
!
在網路分析器裝置中,可以檢查收到的映象流量,以確認QinQ隧道訪問入口中是否存在CVLAN 10:
![Wireshark Capture Output](/c/dam/en/us/support/docs/switches/catalyst-9300-switch/217726-configure-and-verify-and-troubleshoot-qi-01.png)
同樣,在連線到提供商交換網路的介面中繼中,在出口方向可以確認CVLAN 10和SVLAN 1010的存在。
![Wireshark Capture Output](/c/dam/en/us/support/docs/switches/catalyst-9300-switch/217726-configure-and-verify-and-troubleshoot-qi-02.png)
注意:網路分析器上的某些網路介面卡(NIC)可以移除接收的已標籤流量上的802.1Q標籤。請聯絡支援網路介面卡供應商,獲取有關如何維護已接收幀上的802.1Q標籤的特定資訊。
如果懷疑QinQ交換網路中的流量丟失,請考慮以下事項:
- 不支援在802.1Q隧道內的裝置上傳輸到CPU的流量。需要流量檢查的功能在802.1Q環境中可能導致資料包丟失或資料包洩漏。這些功能的示例包括:用於DHCP流量的DHCP監聽、用於IGMP流量的IGMP監聽、用於MLD流量的MLD監聽以及用於ARP流量的動態ARP檢測。建議在SVLAN上停用這些功能,這些功能用於透過服務提供者交換網路傳輸流量。
其他debug命令
附註:使用 debug 指令之前,請先參閱有關 Debug 指令的重要資訊。
- debug pm port — 顯示埠管理器(PM)埠轉換和程式設計模式。用於調試QinQ埠配置狀態。
相關資訊