文章目录
- 华为交换机转发VLAN数据时的行为详解
- 前言
- 参考阅读
- 一、交换机的行为
- 1.1 接收数据
- 1.2 转发数据
- 二、工作模式横向对比
- 2.1 接入模式
- 2.2 中继模式
- 2.3 混杂模式
- 三、实验详解
- 3.1 几种模式的配置
- 3.2 DHCP分配地址时对于native vlan的处理方式
- 至此,理论+实验完成,你学废了吗?
华为交换机转发VLAN数据时的行为详解
华为交换机与思科交换机的接口工作模式略有不同,华为多了一个Hybrid,且默认情况下使用的就是Hybrid(混杂)模式
前言
在这篇Blog下,有些同学对VLAN的tag、untag有疑惑,此篇将刨根解牛,详细对VLAN流量的转发进行一个阐述
HUAWEI交换机的Hybrid接口(混杂模式)详解与实验配置演示
参考阅读
VLAN间通信(多臂路由、单臂路由、三层交换、VLAN聚合)交换机高级特性之Port-isolate(端口隔离)交换机高级特性之MUX-VLAN(多路VLAN)
一、交换机的行为
- 交换机的行为无非分为接收数据、转发数据
- 任何流量在一个交换机内部转发时必须携带标签
- PC接收到的流量必须为正常流量,不识别携带标签的流量
1.1 接收数据
流量进入一个接口时,先看该流量是否携带标签:
1、若未携带标签将压入该接口的PVID,之后先查看本接口的允许列表是否允许该vlan,若允许将在交换机上寻找出口,否则丢弃;
2、若携带标签,直接查询本接口的允许列表知否允许该VLAN
注:在流量进入接口时,仅关注vlan允许列表中的数字,不关注是否标记,即Tag、Untag
1.2 转发数据
流量从一个接口出时,查询该接口的vlan允许列表,关注是否标记
1、查看允许列表的U、T
2、若为U,即剥离标签进行转发
3、若为T,即携带标签进行转发
二、工作模式横向对比
Huawei交换机存在三种工作模式
- Access,介入模式
- Trunk,中继模式
- Hybrid,混杂模式
2.1 接入模式
接入模式: 该接口的pvid和允许列表必须为同一个vlan,且允许列表中只能为允许一个vlan,必然是不标记;这就很明显,因为同一个VLAN间是可以直接二层互通的,所以带有相同VLAN的流量从交换机下来时,要剥离VLAN标签;详见下面的实验
使用场景:常用于连接PC、终端设备、路由器等不能识别VLAN标记的流量的
2.2 中继模式
中继模式: 该接口的允许列表可以在存在多个,但是不能自主定义该接口允许列表中,是否对某个vlan的流量进行标记;永久规则为PVID对应vlan不标记,其他vlan全部标记;
使用场景:常用于两台交换机之间相连的链路,用于承载所有的VLAN流量的
2.3 混杂模式
**混杂模式:**该接口的允许列表可以在存在多个,可以自主定义对各个vlan的是否标记;
使用场景:任意场景,前提是会用;Hybrid的灵活性很高的
以上,是理论部分,下面开始进行实验详解
三、实验详解
实验拓扑如下:
说明:此实验作为验证演示,不做需求的设定,即详细演示前面的理论部分
3.1 几种模式的配置
对于PC连接交换机的接口,常配置为接入模式,配置实现
1、首先先创建VLAN,然后将接口划分至vlan2内
[SW2]vlan batch 2 3
[SW2-GigabitEthernet0/0/3]di th
#
interface GigabitEthernet0/0/3
port link-type access
port default vlan 2
#
return
2、查看vlan的活跃端口
解释:
PVID: PC流量来到交换机上打上PVID为2的标签,PVID就是VLAN
VLAN List中的数字: 当交换机收到这个流量后,需要转发出去,看看允许列表有没有这个PVID,此时是有的,即此交换机可以发出这个流量
VLAN List中的字母: 交换机从这个接口发出流量是剥离VLAN标签为2的流量,即同一VLAN的流量可以二层互通
给VLAN2内添加一台设备,测试同意VLAN内的数据通信过程
配置这个PC6连接交换机的接口为access模式
[SW2-GigabitEthernet0/0/5]di th
#
interface GigabitEthernet0/0/5
port link-type access
port default vlan 2
#
return
分析此时PC1pingPC6的流量走势:
将G0/0/5口修改为Hybrid模式
[SW2]int g0/0/5
[SW2-GigabitEthernet0/0/5]di th
#
interface GigabitEthernet0/0/5
port hybrid pvid vlan 2 #对于不带标签的流量来到这个接口对其打上VLAN2的标签
port hybrid untagged vlan 2 #这个接口发出数据时,剥离VLAN2的标签
#
return
这样一来,PC1发出的流量到SW2上后,其希望找到一个U:2的接口,即G0/0/5,转发出去即可
给PC机配置IP并测试,可见,与预期相符
验证若接口发送出数据的时候不剥离标签会怎么样;即在G0/0/5接口上不Untagged VLAN 2
[SW2-GigabitEthernet0/0/5]di th
#
interface GigabitEthernet0/0/5
port hybrid pvid vlan 2
port hybrid tagged vlan 2
#
return
PC机测试:
抓包(ARP的包)可见,二层过后有一个802.1Q的封装,所以PC6并不能识别这个带标签的流量
交换机之间连接的链路需要为Trunk,你有没有想过为什么是Trunk?
Trunk作为承载所有VLAN流量的一种工作模式,在上面的理论篇就可以得出,Trunk模式本质上允许了所有VLAN,即对所有的VLAN打上了标签;那Hybrid能不能实现呢?
如果看到这里你还没有答案,心里还没有数,翻回去重新看看吧
配置交换机之间的链路的工作模式
[SW2-GigabitEthernet0/0/2]di th
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 2 to 3
#
return
查看其端口的活跃状态,可见Trunk就是对接口通过的所有VLAN打上标签
其实Trunk模式也可以对PVID进行修改,这里请思考一下,为什么一般不做修改?
使用Hybrid来实现Trunk的配置
[SW2-GigabitEthernet0/0/2]di th
#
interface GigabitEthernet0/0/2
port hybrid tagged vlan 2 to 3
#
return
注意:Huawei的Trunk是需要交换机对端都进行配置,而Cisco只需要在一端进行配置
简单验证一下,同网段下的不同VLAN的二层互通,当然要使用Hybrid,思考一下为什么只能使用Hybrid?
需求:VLAN2中的PC1能ping通VLAN3中的PC2,二者都处于10.0.10.0/24网段内
如果我们使用的是Access模式,那么配置如下
[SW2-GigabitEthernet0/0/3]di th
#
interface GigabitEthernet0/0/3
port link-type access
port default vlan 2
#
return
[SW2-GigabitEthernet0/0/4]di th
#
interface GigabitEthernet0/0/4
port link-type access
port default vlan 3
#
return
此时,就是两PC处于同一网段,但是由于VLAN的天然隔离,肯定是不能互通的,抓包甚至都看不到ARP的报文,因为根本上就不处于同一个广播域
解决:
使用Hybrid模式
[SW2-GigabitEthernet0/0/3]di th
#
interface GigabitEthernet0/0/3
port hybrid pvid vlan 2
port hybrid tagged vlan 2
port hybrid untagged vlan 3
#
return
[SW2-GigabitEthernet0/0/4]di th
#
interface GigabitEthernet0/0/4
port hybrid pvid vlan 3
port hybrid tagged vlan 3
port hybrid untagged vlan 2
#
return
PC机测试,可见使用Hybrid模式完成了不同VLAN间的通信
以上就是对三种模式做了配置以及流量走势的分析,简单总结以下就是:你Trunk、Access能做的,我Hybrid都能做,并且我Hybrid还能定义untagged
3.2 DHCP分配地址时对于native vlan的处理方式
实验拓扑如下:
接口的配置不做过多赘述,配置如下
[SW2]int g0/0/1
[SW2-GigabitEthernet0/0/1]di th
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 2 to 3
#
return
[SW2-GigabitEthernet0/0/1]int g0/0/2
[SW2-GigabitEthernet0/0/2]di th
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 2 to 3
#
return
[SW2-GigabitEthernet0/0/2]int g0/0/3
[SW2-GigabitEthernet0/0/3]di th
#
interface GigabitEthernet0/0/3
port link-type access
port default vlan 2
#
return
[SW2-GigabitEthernet0/0/3]int g0/0/4
[SW2-GigabitEthernet0/0/4]di th
#
interface GigabitEthernet0/0/4
port link-type access
port default vlan 3
#
return
[SW2]int g0/0/1
[SW2-GigabitEthernet0/0/1]di th
#
interface GigabitEthernet0/0/1
port hybrid tagged vlan 2 to 3
#
return
[SW2-GigabitEthernet0/0/1]int g0/0/2
[SW2-GigabitEthernet0/0/2]di th
#
interface GigabitEthernet0/0/2
port hybrid tagged vlan 2 to 3
#
return
[SW2-GigabitEthernet0/0/2]int g0/0/3
[SW2-GigabitEthernet0/0/3]di th
#
interface GigabitEthernet0/0/3
port link-type access
port default vlan 2
#
return
[SW2-GigabitEthernet0/0/3]int g0/0/4
[SW2-GigabitEthernet0/0/4]di th
#
interface GigabitEthernet0/0/4
port hybrid pvid vlan 3
port hybrid untagged vlan 3
#
return
[SW2-GigabitEthernet0/0/4]int g0/0/5
[SW2-GigabitEthernet0/0/5]di th
#
interface GigabitEthernet0/0/5
#
return
[SW1]int g0/0/2
[SW1-GigabitEthernet0/0/2]di th
#
interface GigabitEthernet0/0/2
port hybrid tagged vlan 2 to 3
#
return
[SW1-GigabitEthernet0/0/2]int g0/0/3
[SW1-GigabitEthernet0/0/3]di th
#
interface GigabitEthernet0/0/3
port hybrid tagged vlan 2 to 3
#
return
[SW1-GigabitEthernet0/0/3]int g0/0/1
[SW1-GigabitEthernet0/0/1]di th
#
interface GigabitEthernet0/0/1
port hybrid tagged vlan 2 to 3
#
return
路由器的配置如下
[R1-Ethernet0/0/0.1]di th
#
interface Ethernet0/0/0.1
dot1q termination vid 1
ip address 192.168.1.1 255.255.255.192
arp broadcast enable
dhcp select global
#
return
[R1-Ethernet0/0/0.1]int e0/0/0.2
[R1-Ethernet0/0/0.2]di th
#
interface Ethernet0/0/0.2
dot1q termination vid 2
ip address 192.168.1.65 255.255.255.192
arp broadcast enable
dhcp select global
#
return
[R1-Ethernet0/0/0.2]int e0/0/0.3
[R1-Ethernet0/0/0.3]di th
#
interface Ethernet0/0/0.3
dot1q termination vid 3
ip address 192.168.1.129 255.255.255.192
arp broadcast enable
dhcp select global
#
return
DHCP池塘的配置划分
[R1]dhcp enable
[R1]ip pool a
[R1-ip-pool-a]di th
#
ip pool a
gateway-list 192.168.1.1
network 192.168.1.0 mask 255.255.255.192
dns-list 8.8.8.8
#
return
[R1-ip-pool-a]ip pool b
[R1-ip-pool-b]di th
#
ip pool b
gateway-list 192.168.1.65
network 192.168.1.64 mask 255.255.255.192
dns-list 8.8.8.8
#
return
[R1-ip-pool-b]ip pool c
[R1-ip-pool-c]di th
#
ip pool c
gateway-list 192.168.1.129
network 192.168.1.128 mask 255.255.255.192
dns-list 8.8.8.8
#
return
PC获取地址进行测试:
- VLAN2的PC
- VLAN3的PC
- VLAN1的PC,可见并没有获取到IP
请思考这是为什么?
- Cisco的Trunk也可以配置规则,默认允许所有VLAN通过,并且给除native vlan以外所有VLAN打上标签,Cisco的Trunk可以称为VLAN的允许列表,可以修改哪些VLAN可以过,哪些VLAN不可以过
- Cisco中的VLAN 1 是native vlan;路由器的子接口也是可以为他服务的
- Huawei中的VLAN 1 如果没有被标记,上面的路由器的子接口不能为其服务,所以要标明其所属VLAN
综上所属,要在连接路由器的交换机上的接口上配置对VLAN1 打上标签,这样路由器就可以使用自己的子接口对这个VLAN下的PC进行地址分配了
[SW1-GigabitEthernet0/0/1]di th
#
interface GigabitEthernet0/0/1
port hybrid tagged vlan 1 to 3
#
return
此时,VLAN1下的PC就可以愉快的获取到IP地址了
至此,理论+实验完成,你学废了吗?