目录

简介

先决条件

要求

使用的组件

配置

网络图

验证

故障排除

其他调试命令

相关信息

简介

本文档介绍如何在运行Cisco IOS® XE软件的Catalyst 9000系列交换机上配置802.1Q隧道(QinQ)和第2层协议隧道(L2PT)并对其进行验证和故障排除。

有关限制、限制、配置选项和注意事项的最新信息，以及与此功能相关的任何其他详细信息，请参阅思科正式发行说明和配置指南。

先决条件

要求

Cisco 建议您了解以下主题：

- 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之间交换思科发现协议(CDP)帧。

当流量从站点B转发到站点A时，将发生相同的过程，PE交换机ProvSwitchB的配置、验证和故障排除步骤同样适用。假设提供商交换机网络和客户站点内的所有其他设备仅配置了access/trunk命令，并且不执行任何QinQ功能。

本示例假设在QinQ隧道接入交换机中仅收到一个802.1Q标记的流量，但是，收到的流量可能具有零个或多个802.1Q标记。SVLAN标记会添加到收到的VLAN堆栈。设备不需要额外的QinQ、VLAN和TRUNK配置来支持具有零个或更多802.1Q标记的流量，但是，必须更改设备上的最大传输单元(MTU)以支持添加到流量的额外字节（故障排除部分中介绍的其他详细信息）。

有关IEEE 802.1Q隧道的其他信息在带有Cisco IOS XE Amsterdam-17.3.x的Catalyst 9500的第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

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的端口配置可以从思科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地址。从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命令，必须在全局配置模式上配置服务internal。此配置允许在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)，是标识特定端口的内部值。也可以使用show platform software pm-port switch 1 R0 interface {IF-ID}命令在PM上验证交换机端口配置。

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

与接入模式下的交换机端口不同（交换机端口只接收未标记的流量），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交换机的网络管理配置指南：

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:

同样，在连接到提供商交换网络的接口中继中，在出口方向可以确认CVLAN 10和SVLAN 1010的存在。

注意：网络分析器上的某些网络接口卡(NIC)可以删除所接收已标记流量的802.1Q标记。请与网络接口卡供应商联系，获取有关如何维护已接收帧上的802.1Q标记的特定信息。

如果怀疑QinQ交换网络中的流量丢失，请考虑以下事项：

- 中继接口上的默认最大传输单位(MTU)为1522字节。这表示IP MTU为1500，以太网报头帧为18个字节，一个802.1Q标记为4个字节。所有提供商和提供商边缘设备中配置的MTU必须对VLAN堆栈中添加的每个802.1Q标记额外包含4个字节。例如，对于2标记VLAN堆栈，必须配置1504的MTU。对于3标记VLAN堆栈，必须配置MTU 1508，以此类推。有关MTU配置详细信息，请参阅带有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/int_hw/b_173_int_and_hw_9500_cg/configuring_system_mtu.html

- 不支持在802.1Q隧道内的设备上传输到CPU的流量。在802.1Q环境中，需要流量检查的功能可能导致数据包丢失或数据包泄漏。这些功能的示例包括DHCP流量的DHCP监听、IGMP流量的IGMP监听、MLD流量的MLD监听和ARP流量的动态ARP检测。建议禁用用于通过提供商交换网络传输流量的SVLAN上的这些功能。

其他调试命令

注意：使用debug命令之前，请参阅有关Debug命令的重要信息。

- debug pm port — 显示端口管理器(PM)端口转换和编程模式。用于调试QinQ端口配置状态。

相关信息

- Catalyst 9300交换机 — 配置IEEE 802.1Q隧道

- Catalyst 9300交换机 — 配置第2层协议隧道

- Catalyst 9300交换机 — 配置以太网通道

- 技术支持和文档 - Cisco Systems