欢迎user
IEEE802.1Q中定义的VLAN Tag域中只有12个比特位用于表示VLAN ID,所以设备最多可以支持4094个VLAN。在实际应用中,尤其是在城域网中,需要大量的VLAN来隔离用户,4094个VLAN远远不能满足需求。
设备提供的端口QinQ特性是一种简单、灵活的二层VPN技术,它通过在运营商网络边缘设备上为用户的私网报文封装外层VLAN Tag,使报文携带两层VLAN Tag穿越运营商的骨干网络(公网)。
在公网中,设备只根据外层VLAN Tag对报文进行转发,并将报文的源MAC地址表项学习到外层Tag所在VLAN的MAC地址表中,而用户的私网VLAN Tag在传输过程中将被当作报文中的数据部分来进行传输。
QinQ特性使得运营商可以用一个VLAN为含有多个VLAN的用户网络服务。如图1所示,用户网络A的私网VLAN为VLAN 1~10,用户网络B的私网VLAN为VLAN 1~20。运营商为用户网络A分配的VLAN为VLAN 3,为用户网络B分配的VLAN为VLAN 4。当用户网络A的带VLAN Tag的报文进入运营商网络时,报文外面会被封装上一层VLAN ID为3的VLAN Tag;当用户网络B的带VLAN Tag的报文进入运营商网络时,报文外面会被封装上一层VLAN ID为4的VLAN Tag。这样,不同用户网络的报文在公网传输时被完全分开,即使两个用户网络的VLAN范围存在重叠,在公网传输时也不会产生混淆。
图1 QinQ功能示意图
QinQ特性使网络最多可以提供4094X4094个VLAN,满足城域网对VLAN数量的需求,它主要解决了如下几个问题:
l 缓解日益紧缺的公网VLAN ID资源问题。
l 用户可以规划自己的私网VLAN ID,不会导致和公网VLAN ID冲突。
l 为小型城域网或企业网提供一种较为简单的二层VPN解决方案。
QinQ报文在公网传输时带有双层VLAN Tag,内层VLAN Tag为用户私网VLAN Tag,外层VLAN Tag为运营商分配给用户的VLAN Tag,报文结构如图2所示。
图2 QinQ的报文结构
& 说明:
接口的MTU值默认为1500字节。当为报文加上外层VLAN Tag后,报文的长度会增加4个字节,建议用户适当增加运营商网络中各接口的MTU(Maximum Transmission Unit,最大传输单元)值,至少为1504字节。
QinQ可分为两种:基本QinQ和灵活QinQ。
(1) 基本QinQ
基本QinQ是基于端口方式实现的。开启端口的基本QinQ功能后,当该端口接收到报文,设备会为该报文打上本端口缺省VLAN的VLAN Tag。如果接收到的是已经带有VLAN Tag的报文,该报文就成为双Tag的报文;如果接收到的是不带VLAN Tag的报文,该报文就成为带有端口缺省VLAN Tag的报文。
(2) 灵活QinQ
灵活QinQ是对QinQ的一种更灵活的实现,它是基于端口与VLAN相结合的方式实现的。除了能实现所有基本QinQ的功能外,对于同一个端口接收的报文还可以根据不同的VLAN做不同的动作,可以实现以下功能:
l 为具有不同内层VLAN ID的报文添加不同的外层VLAN Tag。
l 根据报文的原有内层VLAN的802.1p优先级标记外层VLAN报文的802.1p优先级。
l 可以在添加外层VLAN Tag的同时对内层用户VLAN ID进行修改。
TPID(Tag Protocol Identifier,标签协议标识)是VLAN Tag中的一个字段,用于表示VLAN Tag的协议类型,IEEE 802.1Q协议规定该字段的取值为0x8100。
IEEE802.1Q协议定义的以太网帧的VLAN Tag结构如图3所示。
设备可以根据TPID值来识别报文中是否携带对应的VLAN Tag:当端口收到报文时,根据配置的TPID值与报文中相应的字段进行比较,如果二者一致,则表示报文中携带相应的VLAN Tag。
另外,不同厂商的设备可能将QinQ报文外层VLAN Tag的TPID字段设为不同的值。为了和这些设备兼容,用户可以自行配置该TPID的值,使得发送到公网中的QinQ报文携带的TPID值与其他厂商相同,就可以实现与其他厂商的设备互通。
由于TPID字段在以太网报文中所处位置与不带VLAN Tag的报文中协议类型字段所处位置相同,为避免网络中报文转发和接收造成混乱,不允许用户将TPID值配置为表1中列举的常用协议类型值。
协议类型 | 对应值 |
ARP | 0x0806 |
PUP | 0x0200 |
RARP | 0x8035 |
IP | 0x0800 |
IPv6 | 0x86DD |
PPPoE | 0x8863/0x8864 |
MPLS | 0x8847/0x8848 |
IPX/SPX | 0x8137 |
IS-IS | 0x8000 |
LACP | 0x8809 |
802.1x | 0x888E |
集群 | 0x88A7 |
设备保留 | 0xFFFD/0xFFFE/0xFFFF |