华为交换机配置不同模式接口流表分析
写作背景:在学习云计算技术中难免会遇到网络技术,对网络理解不透彻,也会造成对相应云计算系列产品(网络部分)理解不透彻。本篇主要针对学习没有网络基础的同学了解网络基础,也希望网络大佬多多指点。
1. VLAN标签的添加和剥除规则
接口对收发的以太网数据帧添加或剥除VLAN标签的处理依据接口的接口类型和缺省VLAN
1.1. Access接口
Access接口添加VLAN标签的处理过程:
Access接口剥除VLAN标签的处理过程:
1.2. Trunk接口
Trunk接口添加VLAN标签的处理过程:
Trunk接口剥除VLAN标签的处理过程:
1.3. Hybrid接口
Hybrid接口添加VLAN标签的处理过程:
Hybrid接口剥除VLAN标签的处理过程:
- 不同类型接口添加或剥除VLAN标签的比较:
各类型接口对数据帧的处理方式:
由上面各类接口添加或剥除VLAN标签的处理过程可见:
- 当
接收
到不带
VLAN标签的数据帧时,Access接口、Trunk接口、Hybrid接口都会给数据帧打上VLAN标签,但Trunk接口、Hybrid接口会根据数据帧的VID是否为其允许通过的VLAN来判断是否接收,而Access接口则无条件接收。 - 当
接收
到带
VLAN标签的数据帧时,Access接口、Trunk接口、Hybrid接口都会根据数据帧的VID是否为其允许通过的VLAN(Access接口允许通过的VLAN就是缺省VLAN)来判断是否接收。 - 当
发送
数据帧时:- Access接口直接剥离数据帧中的VLAN标签。
- Trunk接口只有在数据帧中的VID与接口的PVID相等时才会剥离数据帧中的VLAN标签。
- Hybrid接口会根据接口上的配置判断是否剥离数据帧中的VLAN标签(也就是
port hybrid untagged vlan ID
只针对发送数据包起作用)。
因此,Access接口发出的数据帧肯定不带Tag,Trunk接口发出的数据帧只有一个VLAN的数据帧不带Tag,其他都带VLAN标签,Hybrid接口发出的数据帧可根据需要设置某些VLAN的数据帧带Tag,某些VLAN的数据帧不带Tag。
2. 交换机初始配置网络流表分析
默认情况,不对交换机做任何配置的情况下,PC1和PC2是可以正常通信的,分析其原理:
默认接口模式说明:SW1的G0/0/2是Hybrid类型,接口缺省即为该类型,而且缺省将VLAN1设置为PVID,并且接口已经放通VLAN1,缺省配置为port hybrid untagged vlan 1
(发送VLAN1的数据包时拆掉tag),此时PC1被认为属于VLAN1。
流表分析:默认情况下,PC1发送的数据包不带tag,当数据包到达SW1的G0/0/2时,hybrid类型打上缺省的VLAN ID(tag1),而且缺省VLAN ID在允许通过的VLAN ID列表里时(默认放行VLAN1),则G0/0/2会接收该报文。在SW1内部数据时透传的,当数据从G0/0/1发送出去时,hybrid类型的规则是当VLAN ID是该接口允许通过的VLAN ID时,则发送该报文,VLAN1是允许通过的。当发送报文时默认配置为为port hybrid untagged vlan 1,所以会将vlan1的tag去掉,数据包又到SW2的G0/0/1,hybrid类型接口接收到没有tag的数据包,则打上缺省的VLAN ID(tag1),数据包再SW2内透传,数据包到达SW2的G0/0/2时又是出的方向发送数据包,则默认为untagged去掉tag,无tag的数据包被PC2接收,数据包的返回路径一样,所以PC1和PC2可以互通。
3. 配置hybrid模式网络流表分析
- 将PC1规划在VLAN10中
配置修改如下:
[SW1] interface GigabitEthernet 0/0/2
[SW1-GigabitEthernet0/0/2] port link-type hybrid
[SW1-GigabitEthernet0/0/2] port hybrid pvid vlan 10
[SW1-GigabitEthernet0/0/2] port hybrid untagged vlan 10
[SW1] interface Vlanif 10
[SW1-Vlanif10] ip address 192.168.10.1 24
上面配置中port hybrid pvid vlan 10
命令用于将接口的PVID修改为10,这样当该接口收到PC1发送出来的untagged帧时,就会认为这些帧来自于VLAN10(但是这条命令并不能把该接口划分到VLAN10);
而port hybrid untagged vlan 10
命令则用于将该接口加入VLAN10(这条命令会把对应的接口加入到VLAN10 ),使得PC1所发送的数据帧能够进入GE0/0/1接口(被该接口接收)从而进入交换机,另外,这条命令还使得交换机在从GE0/0/1接口向外发送VLAN10的数据帧时,以untagged的方式发送。
因此完成上述配置后,PC1被认为属于VLAN10,PC1发送一个无tag的数据帧时,到SW1的G0/0/2时,会打上PVID的tag,即VLAN10,且G0/0/2已经加入了VLAN10,属于同一个VLAN可以放行,如果SW1的vlanif10接口IP地址为192.168.10.1,那么可以ping通该网关地址。
值得注意的是,在PC1发送的数据帧进入交换机SW1之后,如果SW1将数据帧透传处理,那么该帧从GE0/0/1发出时,是否携带tag,则要根据GE0/0/1接口的配置而定(如果G0/0/1也配置hybrid模式,配置成untagged那么去掉标签,如果是trunk模式可以保留标签)。
- 两台交换机之间使用不同接口模式(Hybrid/Trunk):
SW1及SW2分别连接着PC1及PC2,现在SW1的GE0/0/1被配置为trunk类型,并且放通了VLAN10:
[SW1-GigabitEthernet0/0/1] port link-type trunk
[SW1-GigabitEthernet0/0/1] port trunk allow-pass vlan 10
现在来看看如果SW2的GE0/0/11接口采用hybrid类型该如何配置(纯粹为了理解hybrid的配置而举例,通常会为链路两端的接口配置相同的类型)。
由于对端接口(SW1的GE0/0/1)以tagged的方式发送VLAN10的数据帧,因此SW2的GE0/0/1接口也必须将VLAN10以tagged的方式处理:
[SW2-GigabitEthernet0/0/1] port link-type hybrid
[SW2-GigabitEthernet0/0/1] port hybrid tagged vlan 10
port hybrid tagged vlan 10
命令用于将GE0/0/1接口加入VLAN10,并且该VLAN的帧以Tagged方式通过接口(数据包进入该接口会打上对应的tag)。
如果port hybrid tagged vlan 11 12
,那么该接口G0/0/1就属于多个VLAN,也就是多个VLAN的数据包都能通过此接口收发数据包(该接口属于对应的V:AN,并且发送对应VLAN的数据包时打上对应VLAN的tag)
TG: Tagged 、UT: Untagged
“Link Type”表示接口的接口类型,“PVID”表示接口上的缺省VLAN,“Trunk VLAN List”表示Trunk接口上允许通过的VLAN列表,或Hybrid接口上以Tagged方式加入的VLAN。如果接口类型是Access,或Hybrid接口没有以Tagged方式加入VLAN,该处显示“-”。
- 多VLAN场景下两台交换机之间使用不同接口模式(Hybrid/Trunk):
- PC1与PC3通信配置:
SW1左侧连接着VLAN10、20,现在SW1的GE0/0/0做如下配置:
[SW1-GigabitEthernet0/0/1]display this
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk pvid vlan 10
port trunk allow-pass vlan 10 20
#
return
SW1在通过GE0/0/11往外发送数据帧时,对于VLAN20采用tagged帧的方式发送,而对于VLAN10则采用untagged帧的方式发送,那么如果SW2采用hybrid接口与其对接,此时该接口的配置应该如下:
注意:PC1、PC2、PC3连接交换机的接口还都是默认的PVID 1
[SW2-GigabitEthernet0/0/1]display this
#
interface GigabitEthernet0/0/1
port hybrid pvid vlan 10
port hybrid tagged vlan 1 10
port hybrid untagged vlan 20
#
return
- PC1与PC2通信:
[SW1-GigabitEthernet0/0/2]display this
#
interface GigabitEthernet0/0/2
port hybrid pvid vlan 10
undo port hybrid vlan 1
port hybrid tagged vlan 20
port hybrid untagged vlan 10
#
return
[SW1-GigabitEthernet0/0/3]display this
#
interface GigabitEthernet0/0/3
port hybrid pvid vlan 20
undo port hybrid vlan 1
port hybrid tagged vlan 10
port hybrid untagged vlan 20
#
return
总结:
● 接口缺省VLAN标识,即PVID(Port Default VLAN ID),指的是二层接口上的缺省VLAN ID(每个二层接口上有且只有一个VLAN ID作为PVID),PVID必定是某一个具体VLAN的VLAN ID。PVID的作用是当这个二层接口收到了流量,并且该流量不携带任何802.1Q Tag(VLAN ID信息),该接口便认为这些流量属于PVID对应的VLAN。当然,PVID还会影响接口发送数据帧。缺省情况下所有接口的PVID均为VLAN1。
● 在交换机的某个接口执行tag或者untag命令时,那么该接口也就属于该VLAN,一个接口是可以属于多个VLAN的,tag后面有多少VLAN ID,该接口就又追加属于的VLAN。
● 在接口执行tag或者untag命令时,规则的生效是有数据包进出规则的,tag或者untag都是数据包出该接口时的规则。
● 主机不能处理带标签的数据包,所以交换机接口发送数据包到主机时必须剥掉标签,如果交换机接口不做任何配置,默认发送数据包的规则也是untag。