Vlan高级技术
VLAN聚合
VLAN聚合 [VLAN Aggregation],也称Super-VLAN: 指在一个物理网络内,用多个VLAN [称为Sub-VLAN] 隔离广播域,并将这些Sub-VLAN聚合成一个逻辑的VLAN [Super-VLAN],这些Sub-VLAN使用同一个IP子网和缺省网关,进而达到节约IP地址资源的目的
Sub-VLAN:只包含物理接口,不能建立三层VLANIF接口,用于隔离广播域
- 每个Sub-VLAN内的主机与外部的三层通信是靠Super-VLAN的三层VLANIF接口来实现的
Super-VLAN:只建立三层VLANIF接口,不包含物理接口,与子网网关对应
- Super-VLAN的VLANIF接口状态取决于所包含Sub-VLAN的物理接口状态
VLAN聚合的原理
每个Sub-VLAN对应一个广播域,多个Sub-VLAN和一个Super-VLAN关联,只给Super-VLAN分配一个IP子网,所有Sub-VLAN都使用Super-VLAN的IP子网和缺省网关进行三层通信
VLAN聚合的优势:
- 多个Sub-VLAN共享一个网关地址,节约了子网网络地址、子网定向广播地址、子网缺省网关地址
- 各Sub-VLAN间的界线也不再是子网界线,可以根据每个Sub-VLAN内所需的IP地址数量进行灵活的地址规划,从而既保证了各个Sub-VLAN作为一个独立广播域实现广播隔离,又节省了IP地址资源,提高了编址的灵活性
VLAN聚合的应用

VLAN间通信
相同Sub-VLAN内部通信:同一个Sub-VLAN属于同一个广播域,相同Sub-VLAN之间可以通过二层直接通信
不同Sub-VLAN之间通信:不同Sub-VLAN之间进行通信,IP地址属于相同网段,因此主机会发送ARP请求,但是实际不同Sub-VLAN之间属于不同的广播域,因而ARP报文无法传递到其他Sub-VLAN,ARP请求得不到响应,设备无法学习到对端MAC地址,从而无法完成Sub-VLAN之间通信
- 要实现Sub-VLAN之间的通信,需要在Super-VLAN 的VLANIF中开启ARP代理功能
不同Sub-VLAN之间通信举例

Super-VLAN VLANIF100开启ARP代理之后PC1和PC2之间通信过程如下:
- PC1发现PC2与自己在同一网段,且自己ARP表无PC2对应表项,则直接发送ARP广播请求PC2的MAC地址
- 作为网关的Super-VLAN对应的VLANIF 100收到PC1的ARP请求,由于网关上使能Sub-VLAN间的ARP代理功能,则向Super-VLAN 100的所有Sub-VLAN接口发送一个ARP广播,请求PC2的MAC地址
- PC2收到网关发送的ARP广播后,对此请求进行ARP应答
- 网关收到PC2的应答后,就把自己的MAC地址回应给PC1,PC1之后要发给PC2的报文都先发送给网关,由网关做三层转发
Sub-VLAN与其他设备的二层通信
- 当Sub-VLAN与其他设备进行二层通信时,与普通的VLAN内二层通信无区别
- 由于Super-VLAN不属于任何物理接口,即不会处理任何携带Super-VLAN标签的报文
Sub-VLAN二层通信过程举例:

- 从PC1进入SW1的报文会被打上VLAN10的Tag,在SW1中这个Tag不会因为VLAN10是VLAN100的Sub-VLAN而变为VLAN100的Tag
- 当报文从SW1的GE0/0/0出去时,依然携带VLAN10的Tag。也就是说,SW1本身不会发出VLAN100的报文
- 如果其他设备有VLAN100的报文发送到该设备上,这些报文也会因为SW1上没有VLAN100应的物理接口而被丢弃
- 对于其他设备而言,有效的VLAN只有Sub-VLAN10,20和30, 所有的报文都是在这些VLAN中交互的
- 因此,SW1上虽然配置了VLAN聚合,但与其他设备的二层通信,不会涉及到Super-VLAN,与正常的二层通信流程一样
Sub-VLAN 与其他网络进行三层通信:先将数据发往默认网关,即Super-VLAN对应的VLANIF,再进行路由
VLAN聚合关键配置命令
1. 创建Super-VLAN
[Huawei-vlan100] aggregate-vlan
- Super-VLAN中不能包含任何物理接口,VLAN1不能配置为Super-VLAN
- Super-VLAN中的VLAN ID与Sub-VLAN中的VLAN ID 必须使用不同的 VLAN ID
2. 将Sub-VLAN加入Super-VLAN
[Huawei-vlan100] access-vlan { vlan-id1 [ to vlan-id2 ] }
-
将Sub-VLAN加入到Super-VLAN中时,必须保证Sub-VLAN没有创建对应的VLANIF接口
-
vlan-id1表示第一个VLAN的编号
-
vlan-id2表示最后一个VLAN的编号。vlan-id2的取值必须大于等于vlan-id1的取值,它和vlan-id1共同确定一个范围
-
如果不指定to vlan-id2参数,则只将编号为vlan-id1的VLAN加入super-VLAN中
3. 使能Super-VLAN对应的VLANIF接口的Proxy ARP
[Huawei-vlanif100] arp-proxy inter-sub-vlan-proxy enable
- 使能Sub-VLAN间的Proxy ARP功能
MUX VLAN
MUX VLAN [Multiplex VLAN] 提供了一种通过VLAN进行网络资源控制的机制
MUX VLAN分为Principal VLAN [主VLAN]和Subordinate VLAN [从VLAN] ,Subordinate VLAN又分为Separate VLAN [隔离型从VLAN] 和Group VLAN [互通型从VLAN]

- Principal port可以和MUX VLAN内的所有接口进行通信
- Separate port只能和Principal port进行通信,和其他类型的接口实现完全隔离
- Group port可以和Principal port进行通信,在同一组内的接口也可互相通信,但不能和其他组接口或Separate port通信
在使用MUX VLAN的过程中,无论是Separate VLAN还是Group VLAN都必须与一个Principle VLAN绑定
加入Principal VLAN中的接口,可以与MUX VLAN内的所有接口进行通信。
MUX VLAN配置命令
1. 配置MUX VLAN中的Principal VLAN
[Huawei-vlan100] mux-vlan
- 配置该VLAN为MUX VLAN,即Principal VLAN
- 如果指定VLAN已经用于Principal VLAN,那么该VLAN不能在Super-VLAN、Sub-VLAN的配置中使用
2. 配置Subordinate VLAN中的Group VLAN
[Huawei-vlan100] subordinate group { vlan-id1 [ to vlan-id2 ] }
- 一个Principal VLAN下最多配置128个Group VLAN
3. 配置Subordinate VLAN中的Separate VLAN
[Huawei-vlan100] subordinate separate vlan-id
- 一个Principal VLAN下只能配置一个Separate VLAN,同一MUX VLAN中Group VLAN和Separate VLAN的VLAN ID不能相同
4. 使能接口MUX VLAN功能
[Huawei-GigabitEthernet0/0/1] port mux-vlan enable vlan-id
- 使能接口的MUX VLAN功能,协商类型negotiation-auto和negotiation-desirable接口不支持配置port mux-vlan enable
- 只有使能接口MUX VLAN功能后,才能实现Principal VLAN与Subordinate VLAN之间通信、Group VLAN内的接口可以相互通信及Separate VLAN接口间不能相互通信的目的
QinQ
QinQ概述
QinQ [802.1Q in 802.1Q] 技术:是一项扩展VLAN空间的技术,通过在802.1Q标签报文的基础上再增加一层802.1Q的Tag来达到扩展VLAN空间的功能

用户报文在公网上传递时携带了两层Tag,内层是私网Tag,外层是公网Tag
QinQ封装结构
QinQ封装报文是在无标签的以太网数据帧的源MAC地址字段后面加上两个VLAN标签构成

TPID [Tag Protocol Identifier,标签协议标识] 表示帧类型
取值为0x8100时表示802.1Q Tag帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃
对于内层的802.1Q Tag,该值设置为0x8100;对于外层的802.1Q Tag,不同厂商所使用的值可能不相同:
- 0x8100:Huawei路由器使用
- 0x88A8:802.1ad规定外层802.1Q Tag中的TPID为0x88a8
在华为设备上,外层802.1Q Tag缺省情况下值为0x8100,可以通过命令行调整该值
QinQ工作原理
公网的传输过程中,设备根据外层VLAN Tag转发报文,并根据报文外层VLAN Tag进行MAC地址学习,而用户的私网VLAN Tag将被当作报文的数据部分进行传输。即使私网VLAN Tag相同,也能通过公网VLAN Tag区分不同用户

QinQ实现方式 - 基本QinQ
- 基本QinQ是基于端口方式实现的。开启端口的基本QinQ功能后,当该端口接收到报文,设备会为该报文打上本端口缺省VLAN 的VLAN Tag
- 如果接收到的是已经带有VLAN Tag的报文,该报文就成为双Tag的报文
- 如果接收到的是不带VLAN Tag的报文,该报文就成为带有端口缺省VLAN Tag的报文
- 基于端口的QinQ的缺点是外层VLAN Tag封装方式固定,不能根据业务种类选择外层VLAN Tag封装的方式,从而很难有效支持多业务的灵活运营

基本QinQ的报文处理过程:
- SW1收到VLAN ID为10和20的报文,将该报文发给SW2
- SW2收到该报文后,在该报文原有Tag的外侧再添加一层VLAN ID 为100的外层Tag
- 带着两层Tag的用户数据报文在网络中按照正常的二层转发流程转发
- SW3收到VLAN100的报文后,剥离报文的外层Tag。将报文发送给SW4,此时报文只有一层Tag
- SW4收到该报文,根据VLAN ID和目的MAC地址进行相应的转发
QinQ实现方式 - 灵活QinQ
**灵活[QinQ Selective QinQ]**可根据流分类的结果选择是否打外层VLAN Tag,打上何种外层VLAN Tag。灵活QinQ可根据用户的VLAN标签、优先级、MAC地址、IP协议、IP源地址、IP目的地址、或应用程序的端口号进行流分类
基于VLAN ID的灵活QinQ:为具有不同内层VLAN ID的报文添加不同的外层VLAN Tag
基于802.1p优先级的灵活QinQ:根据报文的原有内层VLAN的802.1p优先级添加不同的外层VLAN Tag
基于流策略的灵活QinQ:根据QoS策略添加不同的外层VLAN Tag。基于流策略的灵活QinQ能够针对业务类型提供差别服务
灵活QinQ功能是对基本QinQ功能的扩展,它比基本QinQ的功能更灵活。二者之间的主要区别是:
- 基本QinQ:对进入二层QinQ接口的所有帧都加上相同的外层Tag
- 灵活QinQ:对进入二层QinQ接口的帧,可以根据不同的内层Tag而加上不同的外层Tag,对于用户VLAN的划分更加细致

灵活QinQ的报文处理过程:
- SW1收到VLAN ID为10和20的报文,将该报文转发给SW2
- SW2收到VLAN ID为10的报文后,添加一层VLAN ID 为100 的外层Tag;SW2收到VLAN ID为20的报文后,添加一层VLAN ID为200的外层Tag
- 带着两层Tag的用户数据报文在网络中按照正常的二层转发流程转发
- SW3收到报文后,剥离报文的外层Tag。将报文发送给SW4,此时报文只有一层Tag
- SW4收到报文,根据VLAN ID和目的MAC地址进行相应的转发
QinQ配置命令介绍
1. 配置接口类型为dot1q-tunnel
[Huawei-GigabitEthernet0/0/1] port link-type dot1q-tunnel
配置接口类型为dot1q-tunnel,该接口可以是物理接口,也可以是Eth-Trunk接口
2. 使能接口VLAN转换功能
[Huawei-GigabitEthernet0/0/1] qinq vlan-translation enable
3. 配置配置灵活QinQ
[Huawei-GigabitEthernet0/0/1] port vlan-stacking vlan vlan-id1 [ to vlan-id2 ] stack-vlan vlan-id3 [ remark-8021p 8021p-value ]
配置不同的内层VLAN叠加不同的外层VLAN,缺省情况下,外层VLAN优先级与内层VLAN优先级保持一致