随着以太网技术在网络中的大量部署,利用 VLAN 对用户进行隔离和标识受到很大限制。因为 IEEE802.1Q 中定义的 VLAN Tag 域只有 12 个比特,仅能表示 4096 个 VLAN,无法满足城域以太网中标识大量用户的需求,于是 QinQ 技术应运而生。
QinQ(8021Q in 802.10)技术是一项展 VLAN 空间的技术,通过在 802.10 标签报文的基础上再增加一层 802.10 的 Tag 来达到扩展 VLAN 空间的功能。
如下图所示用户报文在公网上传递时携带了两层 Tag,内层是私网 Tag,外层是公网 Tag
基本 QinQ
报文处理:
- sw1 收到 VLANID 为 10 和 20 的报文,将该报文发给 SW2。
- sw2 收到该报文后,在该报文原有 Tag 的外侧再添加一层 VLANID 为 100 的外层 Tag。
- 带着两层 Tag 的用户数据报文在网络中按照正常的二层转发流程进行转发数据
- sw3 收到 VLAN100 的报文后,剥离报文的外层 Tag (VLANID 为 100)。将报文发送给 Sw4,此时报文只有一层 Tag (VLANID 为 10 或 20)。
- sw4 收到该报文,根据 VLANID 和目的 MAC 地址进行相应的转发
配置:
注意:CE 往 PE 发报文时使用 trunk 接口,因为 access 发出数据时会剥离 vlan tag。
[SW1] interface GigabitEthernet 0/0/1
// 在此接口收到的数据打上vlan100的tag(此时数据有两层tag)
[SW1-GigabitEthernet0/0/1] port link-type dot1g-tunnel
[SW1 -GigabitEthernet0/0/1] port default vlan 100
// 其他接口正常配置即可
灵活 QinQ
报文处理:
- sw1 收到 VLANID 为 10 和 20 的报文,将该报文转发给 Sw2
- sw2 收到 VLANID 为 10 的报文后,添加一层 VLANID 为 100 的外层 Tag;sw2 收到 VLANID 为 20 的报文后,添加一层 VLANID 为 200 的外层 Tag。
- 带着两层 Tag 的用户数据报文在网络中按照正常的二层转发流程进行转发数据
- sw3 收到报文后,剥离报文的外层 Tag (VLANID 为 100 或 A200)。将报文发送给 SW4,此时报文只有一层 Tag (VLANID 为 10 或 20)。
- sw4 收到报文,根据 VLANID 和目的 MAC 地址进行相应的转发
配置:
[SW1] interface GigabitEthernet 0/0/1
[SW1-GigabitEthernet0/0/1] port link-type hybrid
// 接收数据时剥离外层vlan tag
[SW1-GigabitEthernet0/0/1] port hybrid untagged vlan 2 3
// 开启QinQ的vlan转换功能,配置此条命令代表使用的为灵活QinQ
[SW1-GigabitEthernet0/0/1] qinq vlan-translation enable
// 发出数据时将vlan100的数据打上外层vlan tag 2
[SW1-GigabitEthernet0/0/1] port vlan-stacking vlan 100 stack-vlan 2
[SW1-GigabitEthernet0/0/1] port vlan-stacking vlan 300 stack-vlan 3
[SW1-GigabitEthernet0/0/1] quit
[SW1] interface GigabitEthernet 0/0/2
[SW1-GigabitEthernet0/0/2] port link-type trunk
[SW1-GigabitEthernet0/0/2] port trunk allow-pass vlan 2 3
[SW1-GigabitEthernet0/0/2] qui