简介
本文档介绍如何在运行Cisco IOS® XE软件的Catalyst 9000交换机上配置802.1Q隧道(QinQ)和L2PT并对其进行故障排除。
先决条件
有关限制、限制、配置选项和注意事项的最新信息,以及与此功能相关的任何其他详细信息,请参阅Cisco正式发行说明和配置指南。
要求
Cisco 建议您了解以下主题:
- Catalyst 9000系列交换机架构
- Cisco IOS XE软件架构
- 虚拟局域网(VLAN)、VLAN中继和IEEE 802.1Q封装
- 第2层协议,例如思科发现协议(CDP)、链路层发现协议(LLDP)、生成树协议(STP)、链路聚合控制协议(LACP)和端口聚合协议(PAgP)。
- QinQ隧道、选择性QinQ隧道和第2层协议隧道(L2PT)的基础知识。
- 交换端口分析器(SPAN)和嵌入式数据包捕获(EPC)
使用的组件
本文档中的信息基于下列硬件和软件版本:
- 思科Catalyst C9500-12Q,配备思科IOS XE 17.3.3
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
相关产品
本文档也可用于以下硬件和软件版本:
- 使用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将收到的流量转发到提供商交换网络,该网络的第二个IEEE 802.1Q标记位于CVLAN 802.1Q标记之上,也称为外部标记或城域标记。此过程也称为VLAN堆栈,本示例展示的是2标记VLAN堆栈。双标记流量仅根据SVLAN媒体访问控制(MAC)表信息由提供商网络中的L2转发。一旦双标记流量到达QinQ隧道的远程端,同样充当QinQ隧道接入的远程PE交换机ProvSwitchB从流量中去除SVLAN标记,并将其转发到仅使用CVLAN 802.1Q标记标记的站点B,从而实现跨远程站点的VLAN的第2层扩展。还实施了L2协议隧道以在CE交换机CusSwitchA和CusSwitchB之间交换思科发现协议(CDP)帧。
当流量从站点B转发到站点A时,将发生相同的过程,并且相同的配置、验证和故障排除步骤适用于PE交换机ProvSwitchB。假设提供商交换机网络和客户站点内的所有其他设备仅配置了access/trunk命令,不执行任何QinQ功能。
本示例假设QinQ隧道接入交换机中仅接收到带有一个802.1Q标记的数据流,但是,收到的数据流可以有零个或多个802.1Q标记。SVLAN标记会添加到收到的VLAN堆栈。设备不需要额外的QinQ、VLAN和TRUNK配置即可支持零个或更多802.1Q标记的流量,但是,必须更改设备上的最大传输单元(MTU)以支持添加到流量中的额外字节(故障排除部分中介绍了其他详细信息)。
有关IEEE 802.1Q隧道的其它信息如下所示:
第2层配置指南,Cisco IOS XE Amsterdam 17.3.x(Catalyst 9500交换机)
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本地VLAN,但可以在接口级别禁用此功能,同时不配置switchport trunk native vlan tag。
验证
QinQ隧道和L2PT的端口配置可以从思科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本地VLAN标记全局状态和配置为标记802.1Q本地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地址。从LAN设备获取的MAC地址在SVLAN中获取,与使用的CVLAN无关。
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上运行其他平台和调试命令,并且对网络的功能没有影响。建议在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),是标识特定端口的内部值。也可以在PM上使用show platform software pm-port switch 1 R0 interface {IF-ID}命令验证交换机端口配置。
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 fed 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
与接入模式下的交换机端口不同(它们期望仅接收未标记的流量),在802.1Q隧道模式下配置的交换机端口也接受带有802.1Q标记的流量。FED在QinQ隧道接入端口的端口上允许使用此功能,这可通过show platform software fed switch {switch-number} ifm 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 abstraction 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交换机)
要将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交换机)
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:
同样,在连接到提供商交换网络的接口中继中,可以确认出口方向同时存在CVLAN 10和SVLAN 1010。
注意:网络分析器上的某些网络接口卡(NIC)可以删除所接收已标记流量上的802.1Q标记。请联系NIC供应商的支持部门,以了解如何在收到的帧上维护802.1Q标记的具体信息。
如果怀疑是QinQ交换网络中的流量丢失,请考虑以下几点:
- 不支持在802.1Q隧道内的设备上将流量传送到CPU。在802.1Q环境中,需要流量检查的功能可能导致数据包丢失或数据包泄漏。这些功能的示例包括DHCP流量的DHCP监听、IGMP流量的IGMP监听、MLD流量的MLD监听和ARP流量的动态ARP检测。建议在用于通过提供商交换网络传输流量的SVLAN上禁用这些功能。
其他调试命令
注意:在使用 debug 命令之前,请参阅有关 Debug 命令的重要信息。
- debug pm port -显示端口管理器(PM)端口转换和编程模式。可用于调试QinQ端口配置状态。
相关信息