QinQ是指将用户私网VLAN TAG封装在公网vlan tag中,使报文带着两层vlan tag穿越运营商的骨干网络(公网)。在公网中报文只根据外层vlan tag(即公网vlan tag)传播,用户的私网vlan tag被屏蔽。
带单层vlan tag的报文结构如下所示:
DA(6B) |
SA(6B) |
ETYPE(8100)(2B) |
用户vlan tag(2B) |
ETYPE(2B) |
DATA(0-1500B) |
FCS(4B) |
带双层vlan tag的报文结构如下:
DA |
SA |
ETYPE |
Nested vlan tag |
ETYPE |
user vlan tag |
ETYPE |
DATA |
FCS |
相对基于MPLS的二层VPN,QinQ具有如下特点:
。为用户提供了一种更为简单的二层VPN隧道。
。不需要信令协议的支持,可以通过纯静态配置实现。
由于QinQ的实现是基于802.1Q协议中的Trunk端口概念,要求隧道上的设备都必须支持802.1Q协议,所以QinQ只适用于小型的,以三层交换机为骨干的企业网或小规模的城域网。
QinQ主要可以解决如下几个问题:
。缓解日益紧缺的公网vlan id资源问题。
。用户可以规划自己的私网vlan id,不会导致和公网vlan id冲突。
。为小型城域网或企业网提供一种较为简单的二层vpn解决方案。
QinQ的实现方式
S8500系列路由交换机通过以下两种方式实现QinQ:
1、开启端口的vlan vpn特性功能
开启端口的vlan vpn功能后,当该端口接收到报文,无论报文是否带有vlan tag,交换机都会为该报文打上本端口缺省vlan的vlan tag。这样,如果接收到的是已经带有vlan tag的报文,该报文就成为双tag的报文;如果接收到的是untagged的报文,该报文就成为带有端口缺省vlan tag的报文。
2、配置基于流分类的nested vlan
基于流分类的nested vlan特性是对QinQ的一种更灵活的实现。用户可以对端口下匹配特定ACL流规则的报文进行如下操作。
。设置报文的外层vlan tag
。修改报文的外层vlan tag
QinQ报文的TPID值可调功能
TPID(tag protocol identifier,标签协议标识)是vlan tag中的一个字段,IEEE 802.1Q协议规定该字段的取值为0X8100。
IEEE 802.1Q协议定义的以太网帧的TAG报文结构如下:
DA |
SA |
TAG |
Frame Load |
FCS |
|
TPID |
User Priority |
CFI |
VLAN ID |
S8500系列交换机缺省采用协议规定的TPID值(0x8100)。某些厂商的设备将QinQ报文外层TAG的TPID值设置为0x9100或0x9200。为了和这些设备兼容,S8500系列交换机提供了基于端口的QinQ报文TPID值可调功能。
用户可以将连接公网侧的端口设置为vlan-vpn uplink端口,这些端口的TPID值可以由用户自行配置。vlan-vpn uplink端口收到报文时会将报文外层vlan tag中的TPID值替换为用户设定值再进行发送,从而使发送到公网中的QinQ报文可以被其他厂商的设备识别。
配置端口的vlan vpn特性功能
配置准备
。端口的GVRP、STP或802.1x协议均未启动
。端口所属的VLAN关闭了IGMP Snooping
。端口所属的VLAN接口上未开启IGMP
。此端口必须为Access端口
配置过程
system-view
interface ethernet2/1/1
vlan-vpn enable 缺省,端口vlan-vpn特性是关闭的。此端口应为access端口
display port vlan-vpn 显示当前TPID值、vlan-vpn端口信息、uplink信息