什么是VLAN:
VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。VLAN内的主机间可以直接通信,而VLAN间不能直接通信,从而将广播报文限制在一个VLAN内。
为什么需要VLAN
以太网是一种基于CSMA/CD(Carrier Sense Multiple Access/Collision Detection)的共享通讯介质的数据网络通讯技术。当主机数目较多时会导致冲突严重、广播泛滥、性能显著下降甚至造成网络不可用等问题。通过交换机实现LAN互连虽然可以解决冲突严重的问题,但仍然不能隔离广播报文和提升网络质量。
在这种情况下出现了VLAN技术,这种技术可以把一个LAN划分成多个逻辑的VLAN,每个VLAN是一个广播域,VLAN内的主机间通信就和在一个LAN内一样,而VLAN间则不能直接互通,这样,广播报文就被限制在一个VLAN内。
VLAN 作用
-
限制广播域:广播域被限制在一个VLAN内,节省了带宽,提高了网络处理能力。
-
增强局域网的安全性:不同VLAN内的报文在传输时是相互隔离的,即一个VLAN内的用户不能和其它VLAN内的用户直接通信。
-
提高了网络的健壮性:故障被限制在一个VLAN内,本VLAN内的故障不会影响其他VLAN的正常工作。
- 灵活构建虚拟工作组:用VLAN可以划分不同的用户到不同的工作组,同一工作组的用户也不必局限于某一固定的物理范围,网络构建和维护更方便灵活。
一、VLAN 标签(tag)
要使设备能够分辨不同VLAN的报文,需要在报文中添加标识VLAN信息的字段。IEEE 802.1Q也叫(dot1q)协议规定,在以太网数据帧的目的MAC地址和源MAC地址字段之后、协议类型字段之前加入4个字节的VLAN标签(又称VLAN Tag,简称Tag),用以标识VLAN信息。
VLAN帧格式:
字段解释:
从上述中我们可以知道,设备利用VLAN标签中的VID来识别数据帧所属的VLAN,广播帧只在同一VLAN内转发,这就将广播域限制在一个VLAN内。
补充:交换机设备内部处理数据均是处理带有tag的帧,如果没有tag将会在数据帧进入时打上tag。
常用设备收发数据帧的VLAN标签情况:
在一个VLAN交换网络中,以太网帧主要有以下两种格式:
-
有标记帧(Tagged帧):加入了4字节VLAN标签的帧。
- 无标记帧(Untagged帧):原始的、未加入4字节VLAN标签的帧。
常用设备中:
-
用户主机、服务器、Hub只能收发Untagged帧。
-
交换机、路由器和AC既能收发Tagged帧,也能收发Untagged帧。
- 语音终端、AP等设备可以同时收发一个Tagged帧和一个Untagged帧。
为了提高处理效率,设备内部处理的数据帧一律都是Tagged帧。
二、链路类型和接口类型:
设备内部处理的数据帧一律都带有VLAN标签,而现网中的设备有些只会收发Untagged帧,要与这些设备交互,就需要接口能够识别Untagged帧并在收发时给帧添加、剥除VLAN标签。同时,现网中属于同一个VLAN的用户可能会被连接在不同的设备上,且跨越设备的VLAN可能不止一个,如果需要用户间的互通,就需要设备间的接口能够同时识别和发送多个VLAN的数据帧。
为了适应不同的连接和组网,设备定义了Access接口、Trunk接口和Hybrid接口3种接口类型,以及接入链路(Access Link)和干道链路(Trunk Link)两种链路类型。
1)链路类型:
根据链路中需要承载的VLAN数目的不同,以太网链路分为:
- 接入链路
接入链路只可以承载1个VLAN的数据帧,用于连接设备和用户终端(如用户主机、服务器等)。通常情况下,用户终端并不需要知道自己属于哪个VLAN,也不能识别带有Tag的帧,所以在接入链路上传输的帧都是Untagged帧。
- 干道链路
干道链路可以承载多个不同VLAN的数据帧,用于设备间互连。为了保证其它网络设备能够正确识别数据帧中的VLAN信息,在干道链路上传输的数据帧必须都打上Tag。
2)接口类型:
根据接口连接对象以及对收发数据帧处理的不同,以太网接口分为:
- Access接口
Access接口一般用于和不能识别Tag的用户终端(如用户主机、服务器等)相连,或者不需要区分不同VLAN成员时使用。它只能收发Untagged帧,且只能为Untagged帧添加唯一VLAN的Tag。
- Trunk接口
Trunk接口一般用于连接交换机、路由器、AP以及可同时收发Tagged帧和Untagged帧的语音终端。它可以允许多个VLAN的帧带Tag通过,但只允许一个VLAN的帧从该类接口上发出时不带Tag(即剥除Tag)。
- Hybrid接口
Hybrid接口既可以用于连接不能识别Tag的用户终端(如用户主机、服务器等)和网络设备(如Hub),也可以用于连接交换机、路由器以及可同时收发Tagged帧和Untagged帧的语音终端、AP。它可以允许多个VLAN的帧带Tag通过,且允许从该类接口发出的帧根据需要配置某些VLAN的帧带Tag(即不剥除Tag)、某些VLAN的帧不带Tag(即剥除Tag)。
Hybrid接口和Trunk接口在很多应用场景下可以通用,但在某些应用场景下,必须使用Hybrid接口。比如一个接口连接不同VLAN网段的场景中,因为一个接口需要给多个Untagged报文添加Tag,所以必须使用Hybrid接口。
三、缺省VLAN:
缺省VLAN又称PVID(Port Default VLAN ID),华为交换机默认端口均属于vlan1中,pvid默认也为1。当交换机端口加入vlan 10时,其pvid就是10。
例如下图:
LSW4配置:
[Huawei]vlan batch 10 20 30 //创建vlan
interface GigabitEthernet0/0/1
port link-type access //连接主机使用acces接口
port default vlan 10 //将接口添加到VLAN 10中
interface GigabitEthernet0/0/2
port link-type access //连接主机使用acces接口
port default vlan 20 //将接口添加到VLAN 20中
interface GigabitEthernet0/0/3
port link-type access //连接主机使用acces接口
port default vlan 30 //将接口添加到VLAN 30中
查看pvid信息
可以发现pvid是VLAN ID的编号。
一个端口可以属于多个VLAN,但是一个端口只能有一个PVID。当这个物理端口拥有了一个PVID的时候,必定会拥有和PVID相等的VLANID,而且在这个VLANID上,这个物理端口必定是Untagged Port。
前面提到,设备处理的数据帧都带Tag,当设备收到Untagged帧时,就需要给该帧添加Tag,添加什么Tag,就由接口上的缺省VLAN决定。
接口收发数据帧时,对Tag的添加或剥除过程。
-
对于Access接口,缺省VLAN就是它允许通过的VLAN,修改缺省VLAN即可更改接口允许通过的VLAN。
- 对于Trunk接口和Hybrid接口,一个接口可以允许多个VLAN通过,但是只能有一个缺省VLAN。接口的缺省VLAN和允许通过的VLAN需要分别配置,互不影响。
同类型接口添加或剥除VLAN标签的比较:
-
当接收到不带VLAN标签的数据帧时,Access接口、Trunk接口、Hybrid接口都会给数据帧打上VLAN标签,但Trunk接口、Hybrid接口会根据数据帧的VID是否为其允许通过的VLAN来判断是否接收,而Access接口则无条件接收。
-
当接收到带VLAN标签的数据帧时,Access接口、Trunk接口、Hybrid接口都会根据数据帧的VID是否为其允许通过的VLAN(Access接口允许通过的VLAN就是缺省VLAN)来判断是否接收。
-
当发送数据帧时:
a.Access接口直接剥离数据帧中的VLAN标签。
b.runk接口只有在数据帧中的VID与接口的PVID相等时才会剥离数据帧中的VLAN标签。
c.Hybrid接口会根据接口上的配置判断是否剥离数据帧中的VLAN标签。
因此,Access接口发出的数据帧肯定不带Tag,Trunk接口发出的数据帧只有一个VLAN的数据帧不带Tag,其他都带VLAN标签,Hybrid接口发出的数据帧可根据需要设置某些VLAN的数据帧带Tag,某些VLAN的数据帧不带Tag。
验证access、trunk、hybrid三种接口模式
access
确实是接终端的,但是之前没有理解access接口是如何对出入方向的数据报文处理的。在交换机的世界里,数据报文都是打上tag(标签802.1q),此端口对入方向(接受)的终端的数据报文没有标签就打上tag标签,(默认情况下数据报文打上vlan1的标签),如果人方向(接受)的数据报文携带的vlan ID的标签,vlanID 与pvid相同,该端口就接受数据报文。否则,就丢弃。对于出方向(发送)的数据报文vlan ID与pvid始终是相同的,直接剥离tag标签。这样在剥离的tag标签的数据报文,终端设备才能认识这个数据报文。
验证1:
目的:理解access接口,对vlan数据报文的处理过程。(由于是在ensp做的实验,无法抓取802.1q协议封装的vlan标签。)
1.1sw1与sw2之间是access接口互联。且接口g0/0/1属于vlan10。测试3台终端的连通性。
配置信息:
sw1:
interface GigabitEthernet0/0/1
port link-type access
port default vlan 10
interface GigabitEthernet0/0/2
port link-type access
port default vlan 10
interface GigabitEthernet0/0/3
port link-type access
port default vlan 10
sw2:
interface GigabitEthernet0/0/1
port link-type access
port default vlan 10
interface GigabitEthernet0/0/2
port link-type access
port default vlan 10
验证2:
现在我将sw2上新建vlan20,并且将sw2的g0/0/1和g0/0/2加入vlan20里。这时,就会颠覆了你之前vlan可以隔离广播域的思维了。所以,看了这次我的实验希望对你帮助。
sw1的配置不变,sw2的配置如下:
interface GigabitEthernet0/0/1
port link-type access
port default vlan 20
interface GigabitEthernet0/0/2
port link-type access
port default vlan 20
数据报文的流向分析如下图:
测试结果:
trunk
对于出方向的数据报文:当vlan ID与pvid相同时,则报文剥离原来的tag标签进行转发。当vlan ID与pvid不同是,则报文保持原来的tag标签进行转发。对于入方向数据报文:当vlan ID与pvid相同时,则报文直接进行转发。当vlan ID与pvid不同时,查看VLAN List是否放行,放行就转发。否则丢弃。对入方向没有打tag标签的数据报文,就打上pvid的标签,进行转发。
验证1:
目的:理解trunk接口,对vlan数据报文的处理过程。
规划已标记在拓扑上,需求:将sw1和sw2上的vlan10、vlan20里的各自主机之间实现互通。
配置信息:
sw1和sw2的配置一样。如下:
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10 20 //该trunk接口收方向,收到的数据报文,检查报文里的vlan id 是否再允许的vlan list表里。在,则接受数据。否则,丢弃。该接口的出方向,发送的数据报文里,vlan ID与pvid不同,(因为默认交换机的pvid=1)则将保持原有的标签进行转发。这里的实验原有的标签就是vlan 10,vlan20。
interface GigabitEthernet0/0/2
port link-type access
port default vlan 10 //该access接口,在收到终端的报文,打上 pvid为10的标签进行转发。
interface GigabitEthernet0/0/3
port link-type access
port default vlan 20 //该access接口,在收到终端的报文,打上 pvid为20的标签进行转发。数据报文流向分析如下:
数据报文流向分析如下:
测试结果如下:同vlan内的主机可达,不同vlan内的主机不可达
验证2:
需求:将不同vlan,同一网段主机pc1与pc4实现互通。
配置信息如下:
将sw1的g0/0/1将pvid=1 该成pvid=10。将sw2的g0/0/1将pvid=1 该成pvid=20。其他配置不变。这种做法就是,为了理解trunk的pvid。实际部署不能这么做。
sw1:
interface GigabitEthernet0/0/1
port link-type trunk
port trunk pvid vlan 10
port trunk allow-pass vlan 10 20
sw2:
interface GigabitEthernet0/0/1
port link-type trunk
port trunk pvid vlan 20
port trunk allow-pass vlan 10 20测试结果:pc1和pc4可以互通。
hybird
对于出方向数据报文:检查接口配置,是否携带vlan数据报文中的tag标签(vlan IID)通过。如果携带vlan标签通过,则必须在接口下配置:port hybrid tagged vlan vlan-ID。如果不携带vlan标签通过,则必须在接口下配置:port hybrid untagged vlan vlan-ID。对于入方的数据报文:没有打tag标签的数据报文,就打上pvid的标签,进行转发。如果pvid在允许放行的VLAN List的表里边,则接受该报文,否则丢弃。如果接受到的报文里有tag标签,检查该报文中vlan ID在允许放行的VLAN List的表里边,则接受该报文,否则丢弃。
验证1:
实验目的:理解trunk接口,对vlan数据报文的处理过程。此端口的灵活度很高。
需求:将同一vlan内的主机实现互通,并且所接口使用华为默认的接口模式hybird。
配置信息如下:
sw1和sw2的配置一样:
interface GigabitEthernet0/0/1
port hybrid tagged vlan 10 20 //在该接口出方向,发送的数据报文必须携带自己该有vlan标签报文。
interface GigabitEthernet0/0/2
port hybrid pvid vlan 10
port hybrid untagged vlan 10 //在该接口出方向,发送的数据报文必须将自己该有vlan标签去掉,发送给终端设备。
interface GigabitEthernet0/0/3
port hybrid pvid vlan 20
port hybrid untagged vlan 20 //在该接口出方向,发送的数据报文必须将自己该有vlan标签去掉,发送给终端设备。测试结果如下:pc1和pc2可以互通,pc3和pc4可以互通。则不同vlan的pc2和pc3、pc4不同。
数据报文流向分析如下:
验证2:
需求:vlan10里的pc1可以与vlan20 里的pc4互通。
配置信息:sw1的g0/0/2接口上配置:port hybrid untagged vlan 20 。sw2的g0/0/3接口上配置:port hybrid untagged vlan 10.其他配置不变。
sw1:
interface GigabitEthernet0/0/1
port hybrid tagged vlan 10 20
interface GigabitEthernet0/0/2
port hybrid pvid vlan 10
port hybrid untagged vlan 10 20
interface GigabitEthernet0/0/3
port hybrid pvid vlan 20
port hybrid untagged vlan 20
sw2:
interface GigabitEthernet0/0/1
port hybrid tagged vlan 10 20
interface GigabitEthernet0/0/2
port hybrid pvid vlan 10
port hybrid untagged vlan 10
interface GigabitEthernet0/0/3
port hybrid pvid vlan 20
port hybrid untagged vlan 10 20
测试结果如下:
转载自:https://blog.51cto.com/7546046/2338914
****未完、待续**