10-QinQ终结配置
本章节下载: 10-QinQ终结配置 (301.18 KB)
· QinQ终结的支持情况与设备的型号有关,请参见“配置指导导读”中的“特性差异情况”部分的介绍。
· 配置QinQ终结功能时请先关闭二层快速转发、FPGA快速转发和ARP Snooping功能。
QinQ是802.1Q in 802.1Q的简称,它是基于IEEE 802.1Q技术的一种二层隧道协议,通过将用户的私网报文封装上外层VLAN Tag,使其携带两层VLAN Tag穿越运营商的骨干网络(又称公网),从而为用户提供了一种比较简单的二层VPN隧道技术,也使运营商能够利用一个VLAN为包含多个VLAN的用户网络提供服务成为了可能。
IEEE 802.1Q定义的VLAN ID域只有12个比特,最多可以表示4094个VLAN。但在实际应用中,尤其是在城域网中,需要大量的VLAN来隔离用户,4094个VLAN远远不能满足需求。
QinQ使整个网络最多可提供4094×4094个VLAN,从而满足了城域网对VLAN数量的需求。它具备以下优点:
· 缓解公网VLAN ID资源日益紧缺的问题。
· 用户可以规划自己的私网VLAN ID,不会导致与公网VLAN ID冲突。
· 为小型城域网和企业网提供了一种简单、灵活的二层VPN解决方案。
· 当运营商升级网络时,用户网络不必更改原有配置,使用户网络具有了较强的独立性。
在公网的传输过程中,设备只根据外层VLAN Tag转发报文,并将报文的源MAC地址表项学习到外层VLAN Tag所在VLAN的MAC地址表中,而用户的私网VLAN Tag将被当作报文的数据部分进行传输。
图1-1 QinQ典型应用组网图
如图1-1所示,用户网络A和B的私网VLAN分别为VLAN 1~10和VLAN 1~20。运营商为用户网络A和B分配的公网VLAN分别为VLAN 3和VLAN 4。当用户网络A和B中带VLAN Tag的报文进入运营商网络时,报文外面就会被分别封装上VLAN 3和VLAN 4的VLAN Tag。这样,来自不同用户网络的报文在运营商网络中传输时被完全分开,即使这些用户网络各自的VLAN范围存在重叠,在运营商网络中传输时也不会产生冲突。当报文穿过运营商网络,到达运营商网络另一侧PE设备后,报文会被剥离公网VLAN Tag,然后再传送给用户网络的CE设备。
如图1-2所示,QinQ报文在运营商网络中传输时带有双层VLAN Tag:
· 内层VLAN Tag:为用户的私网VLAN Tag,对应图中的Customer VLAN Tag。依靠该Tag在私网中传送QinQ报文。
· 外层VLAN Tag:为运营商分配给用户的公网VLAN Tag,对应图中的Service VLAN Tag。依靠该Tag在公网中传送QinQ报文,内层VLAN Tag在公网中被屏蔽。
图1-2 QinQ的报文结构
接口的MTU(Maximum Transmission Unit,最大传输单元)值默认为1500字节。由于为报文加上外层VLAN Tag后,报文长度将增加4个字节,因此建议用户适当增加运营商网络中各接口的MTU值(至少为1504字节)。有关接口MTU值的相关配置,请参见“二层技术配置指导”中的“以太网接口”。
如图1-3所示,是IEEE802.1Q协议定义的以太网帧的VLAN Tag结构,TPID(Tag Protocol Identifier,标签协议标识符)就是VLAN Tag中的一个字段,用于表示VLAN Tag的协议类型,其缺省取值为0x8100。
TPID值可以用来判断报文中是否携带有VLAN Tag,例如:在设备上配置用户VLAN Tag和运营商VLAN Tag中携带的TPID值分别为0x8200和0x9100,而如果收到的报文实际携带的内、外层VLAN Tag的TPID值分别为0x8100和0x9100,设备就会认为该报文只携带运营商VLAN Tag,而没有携带用户VLAN Tag。
第三方厂商的设备可能将QinQ报文外层VLAN Tag的TPID设为不同的值。为了与这些厂商的设备兼容,用户可以通过修改TPID值,使发送到公网中的QinQ报文携带的TPID值与第三方厂商的相同,从而实现与这些厂商的设备互通。
由于TPID字段在以太网报文中的位置与不带VLAN Tag的报文中协议类型字段的位置相同,因此为了避免给报文转发和接收造成混乱,不允许将TPID值配置为表1-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 |
局域网内的报文大多数都带有VLAN Tag,但一些广域网协议并不能识别VLAN报文,比如ATM、FR和PPP等,这种情况下,如果局域网的VLAN报文要转发到广域网,需要在本地记录并去掉报文的VLAN信息后再转发,可以借助VLAN终结功能来实现。目前可以通过VLAN接口/子接口实现局域网和广域网的互联。
如图1-4所示,用户网络的私网VLAN分别为User VLAN。运营商为用户网络分配的公网VLAN分别为Nested VLAN。当用户网内User VLAN的报文进入运营商网络时,报文外面就会被封装上Nested VLAN的VLAN Tag。在运营商网基于Nested VLAN进行转发。如果报文要发往外部WAN,则需要在出口网关(Device)上对该报文进行VLAN终结处理,去掉两层VLAN Tag,再通过同异步串口Serial5/1发送到WAN。
图1-4 QinQ终结用于LAN和WAN的互联
与QinQ相关的协议规范有:
· IEEE 802.1Q:IEEE standard for local and metropolitan area networks: Virtual Bridged Local Area Networks
表1-2 QinQ终结配置任务简介
配置任务 |
说明 |
详细配置 |
配置VLAN Tag的TPID值 |
可选 |
|
配置明确的QinQ终结 |
可选 |
· QinQ功能只需在运营商网络进行配置,用户网络不需进行配置。
· 对于QinQ的相关配置来说,以太网接口视图下的配置只对当前端口有效;二层聚合接口视图下的配置对当前接口及其对应聚合组中的所有成员端口都有效;端口组视图下的配置对当前端口组中的所有端口有效。
表1-3 在端口上配置VLAN Tag的TPID值
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网接口或二层聚合接口视图 |
interface interface-type interface-number |
必选 设备对二层聚合接口的支持情况与设备型号相关,请参见“配置指导导读”中的“特性差异情况”部分的介绍 |
配置外层VLAN Tag的TPID值的端口值 |
qinq ethernet-type hex-value |
必选 缺省情况下,外层VLAN Tag的TPID值的端口值等于0x8100 |
VLAN终结是指对接收到的报文,按照报文携带的VLAN Tag信息匹配对应的接口后,去除报文VLAN Tag,再将报文进行三层转发或交由其它业务处理。转发出去的报文是否带有VLAN Tag由出接口决定,对从配置了VLAN终结的接口发送的报文,按照该接口上的终结配置,将相应的VLAN Tag添加到报文中后发送该报文。
VLAN终结中的QinQ终结,用来终结带有两层及以上VLAN Tag的报文(要求最外两层VLAN ID必须匹配配置值),从配置了QinQ终结的接口发送的报文,都添加两层VLAN Tag。而明确的QinQ终结只允许接收最外两层VLAN ID均为指定值的报文,其它VLAN报文则不允许通过该接口。收到报文后,将报文最外两层VLAN Tag剥离。发送报文时,会给报文添加两层VLAN Tag,两层VLAN ID均为指定值。
表1-4 配置明确的QinQ终结
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入接VLAN接口视图 |
interface vlan-interface interface-number |
必选 |
使能当前接口的QinQ终结功能,并指定当前接口可以终结的VLAN报文的第二层VLAN ID |
second-dot1q vlan-id |
必选 缺省情况下,关闭当前接口的QinQ终结功能 终结的第一层VLAN ID等于当前接口的编号,不能配置 |
在VLAN接口上配置明确的QinQ终结后,与该VLAN接口绑定的二层以太网接口只处理该VLAN接口匹配的报文,当收到发给该VLAN接口的其它报文时,都会直接丢弃。
如下图所示,无线用户Client通过BAS访问Internet,AP有线口发出的报文经L2 switch时打上第一层VLAN Tag(VLAN1001),再经由L3 switch打上第二层VLAN Tag(VLAN100),最终到达AC时是一个QinQ报文(外层VLAN Tag是100,内层VLAN Tag是1001);要求Client发出的业务报文经AC转发后,以QinQ报文格式(外层VLAN Tag是200,内层VLAN Tag是2001)到达BAS。
(1) 配置L2 switch
# 创建VLAN1001。
<L2 switch> system-view
[L2 switch] vlan 1001
[L2 switch-vlan1001] quit
# 配置端口GigabitEthernet 1/0/1为acess端口,且允许VLAN1001的报文通过。
[L2 switch] interface GigabitEthernet 1/0/1
[L2 switch-GigabitEthernet1/0/1] port link-type access
[L2 switch-GigabitEthernet1/0/1] port access vlan 1001
[L2 switch-GigabitEthernet1/0/1] quit
# 配置端口GigabitEthernet 1/0/2为trunk端口,允许VLAN1001的报文通过,并打上VLAN Tag VLAN1001。
[L2 switch] interface GigabitEthernet 1/0/2
[L2 switch-GigabitEthernet1/0/2] port link-type trunk
[L2 switch-GigabitEthernet1/0/2] port trunk permit vlan 1001
[L2 switch-GigabitEthernet1/0/2] quit
(2) 配置L3 switch
# 创建VLAN 100。
<L3 switch> system-view
[L3 switch] vlan 100
[L3 switch-vlan100] quit
# 配置端口GigabitEthernet 1/0/5为acess端口,允许VLAN100的报文通过,使能QinQ。
[L3 switch] interface GigabitEthernet 1/0/5
[L3 switch-GigabitEthernet1/0/5] port link-type access
[L3 switch-GigabitEthernet1/0/5] port access vlan 100
[L3 switch-GigabitEthernet1/0/5] qinq enable
[L3 switch-GigabitEthernet1/0/5] quit
# 配置端口GigabitEthernet 1/0/6为trunk端口,且允许VLAN 100的报文通过,并打上VLAN Tag VLAN100。
[L3 switch] interface GigabitEthernet 1/0/6
[L3 switch-GigabitEthernet1/0/6] port link-type trunk
[L3 switch-GigabitEthernet1/0/6] port trunk permit vlan 100
[L3 switch-GigabitEthernet1/0/6] quit
(3) 配置AC
# 创建VLAN100、VLAN1001、VLAN200、VLAN2001。
<AC> system-view
[AC] vlan 100
[AC-vlan100] vlan 1001
[AC-vlan1001] vlan 200
[AC-vlan200] vlan 2001
[AC-vlan2001] quit
# 配置端口Ten-GigabitEthernet 1/0/1为trunk端口,且允许VLAN100和VLAN200的报文通过,并打上VLAN Tag。
[AC] interface Ten-GigabitEthernet 1/0/1
[AC-Ten-GigabitEthernet 1/0/1] port link-type trunk
[AC-Ten-GigabitEthernet 1/0/1] port trunk permit vlan 100 200
[AC-Ten-GigabitEthernet 1/0/1] quit
# 开启VLAN100的QinQ终结功能,并指定该接口可以终结的VLAN报文的第二层VLAN ID为1001(说明:开启此功能后,AC能发送QinQ格式的arp报文,与AP进行二层通信)。
[AC] interface Vlan-interface 100
[AC-Vlan-interface100] second-dot1q 1001
# 配置VLAN100的IP地址为10.1.1.10/24。
[AC-Vlan-interface100] ip address 10.1.1.10 24
[AC-Vlan-interface100] quit
# 创建WLAN-ESS接口。
[AC] interface WLAN-ESS 1
[AC-WLAN-ESS1] quit
# 配置WLAN服务模板(明文模板),配置SSID为ABC,并将WLAN-ESS接口与该服务模板绑定。
[AC]wlan service-template 1 clear
[AC-wlan-st-1] ssid ABC
[AC-wlan-st-1] bind WLAN-ESS 1
[AC-wlan-st-1] service-template enable
[AC-wlan-st-1] quit
# 创建AP模板,名称为ap1,型号名称选择WA2620-AGN,该AP的序列号为210235A29DB099002291。
[AC] wlan ap ap1 model wa2620-agn
[AC-wlan-ap-ap1] serial-id 210235A29DB099002291
# 配置射频,在AP上绑定服务模板时指定Client的业务VLAN为双VLAN(外层为VLAN200,内层为VLAN2001)。
[AC-wlan-ap-ap1] radio 1
[AC-wlan-ap-ap1-radio-1] service-template 1 vlan-id 200 2001
[AC-wlan-ap-ap1-radio-1] radio enable
[AC-wlan-ap-ap1-radio-1] return
(4) 配置BAS
# 配置IP地址池1,为AP分配IP地址10.1.1.0/24。
<BAS> system-view
[BAS] dhcp server ip-pool 1
[BAS-dhcp-pool-1] network 10.1.1.0 mask 255.255.255.0
[BAS-dhcp-pool-1] gateway-list 10.1.1.1
[BAS-dhcp-pool-1] quit
# 配置开启DHCP服务功能。
[BAS] dhcp enable
# 在端口Ten-GigabitEthernet0/0.100上使能当前接口的QinQ终结功能,并指定当前接口可以终结的VLAN报文的第一层VLAN ID 为VLAN100,第二层VLAN ID为VLAN1001。
[BAS] interface Ten-GigabitEthernet0/0.100
[BAS-Ten-GigabitEthernet0/0.100] vlan-type dot1q vid 100 second-dot1q 1001
[BAS-Ten-GigabitEthernet0/0.100] ip address 10.1.1.1 255.255.255.0
[BAS-Ten-GigabitEthernet0/0.100] quit
# 配置IP地址池2,为Client分配IP地址20.1.1.0/24。
[BAS] dhcp server ip-pool 2
[BAS-dhcp-pool-2] network 20.1.1.0 mask 255.255.255.0
[BAS-dhcp-pool-2] gateway-list 20.1.1.1
[BAS-dhcp-pool-2] quit
# 在端口Ten-GigabitEthernet0/0.200上使能当前接口的QinQ终结功能,并指定当前接口可以终结的VLAN报文的第一层VLAN ID 为VLAN200,第二层VLAN ID为VLAN2001。
[BAS] interface Ten-GigabitEthernet0/0.200
[BAS-Ten-GigabitEthernet0/0.200] vlan-type dot1q vid 200 second-dot1q 2001
[BAS-Ten-GigabitEthernet0/0.200] ip address 20.1.1.1 255.255.255.0
# 在BAS上开启本地代理ARP功能,确保二层隔离的Client之间三层互通(即同一个VLAN下的Client之间必须通过BAS才可以通信)。
[BAS-Ten-GigabitEthernet0/0.200] local-proxy-arp enable
[BAS-Ten-GigabitEthernet0/0.200] quit
· AP能获取到10.1.1.0/24网段的IP地址,AP和AC均能ping通BAS(10.1.1.1)。
· AP可成功关联AC,同时当AC上清除掉arp的情况下,AC依然能主动ping通AP。
· Client上线,能获取到20.1.1.0/24网段的IP地址,Client能ping通BAS(20.1.1.1)。
· 若有多个Client上线,Client间必须经过BAS才能互通。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!