简洁易懂说VLAN

1. VLAN概述


虚拟局域网(Virtual Local Area Network,VLAN),VLAN最主要的作用是分割局域网中广播域。传统交换机组成的LAN中,往往包含了成千上万的主机,当主机越来越多时广播帧对网络的影响将会越来越严重,造成网络传输性能下降。VLAN的出现使得这一问题得到了解决,因此VLAN的提出主要是用来分割广播域,使得一个VLAN对应一个广播域,不同VLAN之间不通过路由或者三层交换设备无法进行通信,使得广播域减小对网络的影响大幅度下降,增强了网络的灵活性和易用性。


2. VLAN原理


从第一节可以看出,VLAN是属于二层的一种标准,因此VLAN主要应用于交换机。VLAN的端口访问类型为访问链接和汇聚链接两种类型。
2.1 访问链接
访问链接(Access Link),指的是端口类型为访问链接的,仅转发数据给当前端口所属的VLAN,访问链接类型端口通常与客户机相连。设置访问链接的方法分为静态VLAN和动态VLAN。
2.1.1 静态VLAN
静态VLAN又被称为基于端口的VLAN。是指明确指定某个端口属于某个特定的VLAN的一种方法。由于需要将交换机每个端口都指定VLAN,因此当网络中的计算机数目过多(比如数百台)后,这种一一设定的操作就会变得很复杂;而且,客户机每次变更所连端口,必须同时修改该端口所属VLAN。这显然不适合需要频繁改变网络拓扑的网络。
2.1.2 动态VLAN
为了解决静态VLAN存在的上述问题, 提出了动态VLAN。动态VLAN根据每个端口所连接的客户机的信息随时改变所属的VLAN,来避免静态VLAN的需要频繁变更VLAN标识的操作。动态VLAN分为三类,具体如下:

(1) 基于MAC地址的VLAN

  基于MAC地址的VLAN,通过查询并记录端口所连接的主机MAC地址来决定端口属于哪个VLAN。如主机A的MAC地址被设定为VLAN10,那么不论主机A连接在交换机的哪个端口A都会被划分到VLAN10中,即主机A连接1端口时,1端口属于VLAN10,连接2端口时,2端口属于VLAN10,以此类推。由于该划分方法基于MAC地址划分来决定VLAN所属,在设定时必须调查所连接的所有计算机的MAC,并且如果主机更换了网卡或MAC地址还是需要再更改配置。该方法属于OSI参考模型二层设定访问链接的方法。

(2) 基于IP地址的VLAN

  基于IP地址的VLAN,通过所连接的计算机IP地址来划分VLAN所属。不像基于MAC地址的VLAN,即使主机更换了网卡,只要其MAC地址不变就可以加入原先的VLAN中。该方法属于OSI参考模型三层设定访问链接的方法。

(3) 基于用户的VLAN

  基于用户的VLAN,则是根据当前交换机各个端口所连接的主机当前登录的用户,来区分VLAN所属。这里的用户,一般是指计算机的操作系统用户。该方法属于OSI参考模型四层设定访问链接的方法。
一般而言,决定端口所属VLAN时使用的信息所属层次越高,对构建VLAN网络就越灵活。

2.2汇聚链接

  访问链接主要用来单个交换机的VLAN所属时的设置。如果需要设置跨越多台交换机的VLAN时,如果使用访问链接,则不同VLAN之间都需要使用网线来实现互联。如果VLAN数目很多,浪费了网线不说也占有了交换机的大量端口来实现VLAN互联,这是对交换机端口资源的一种浪费,同时也限制了网络的扩展。

为了避免上述情况发生,提出了一种新的端口链接类型,即汇聚链接(Trunk Link)。链接类型为汇聚链接的端口能够转发多个不同VLAN之间的数据包。这种情况下要构建多台交换机组成VLAN网络只需将相连接的交换机端口设置为汇聚链接类型即可。不需要像访问链接那样针对不同的VLAN进行链接,从而提高交换机的端口利用率。

在交换机的汇聚链接上,通过对数据帧附加VLAN信息,构建跨越多台交换机的VLAN。附加VLAN信息的方法最具代表性的有如下两种:

(1) ISL

  ISL即Inter Switch Link,是Cisco产品支持的一种在汇聚链路上增加的VLAN协议,由于该方式是属于Cisco私有,故不做深入介绍。

(2) IEEE 802.1Q

  IEEE 802.1Q,是经过IEEE工作组认证的对数据帧附加VLAN识别信息的一种协议。802.1Q的数据帧结构与以太帧结构对比如图2.1所示。

vni 映射vlan vlan映射是什么_IP

图 2.1 以太帧与802.1Q帧结构对比图
  

  IEEE802.1Q协议通过在以太帧中增加4个字节的附加信息来作为VLAN识别信息。附加信息位于“源MAC”于“TYPE”字段之间。具体内容为2个字节的TPID(Tag Protocol IDentifier)和2个字节的TCI(Tag Control Information)。TPID字段的固定值为0x8100表明以太帧使用了802.1Q协议。通过识别该字段判断是否为VLAN数据帧。TCI中主要包含了三个子字段分别为PRIO、CFI和VLAN ID。其中:

  ① PRIO占3bit,表示报文的优先级,分为8个等级,取值0到7,7为最高优先级,0为最低优先级。

  ② CFI为规范格式指示符标识,占1bit,为0表示规范格式,应用于以太网;为1表示非规范格式,应用于Toekn Ring。

  ③ VLAN ID占12位,用于表示VLAN的归属,最多可以识别4096个VLAN即VLAN0到VLAN4095,由于VLAN0和VLAN4095保留,因此最多有4094个VLAN。

  VLAN数据包结构如图2.2所示。图中红色部分带有VLAN标识的数据。

  

vni 映射vlan vlan映射是什么_IP_02

图2.2 VLAN数据包结构

3. VLAN通信机制

  VLAN通信分为VLAN内的通信和VLAN之间的通信。

3.1 VLAN内通信

  VLAN内的通信如图3.1所示。

vni 映射vlan vlan映射是什么_IP_03

  图3.1 VLAN内通信

  如图3.1中,主机A与主机B同属于VLAN1,主机C与主机D同属于VLAN2。当主机A与主机B通信时,首先主机A会广播ARP请求获取主机B的MAC地址,由于主机A与主机B在同一VLAN内,该ARP请求会被发送至主机B处,主机B收到ARP请求后,发送ARP回应给主机A告诉主机A它的MAC地址。此时主机A向主机B发送数据包到端口1经过交换机查询目的MAC可知,主机B连接在端口2上,并将数据包转发到端口2,此时主机B则收到了主机A的数据。表明主机A与主机B可以进行通信。

 

3.2 VLAN间通信

  VLAN间通信指的是不同VLAN之间的主机进行通信。如图3.2所示,主机A与主机B属于同一VLAN自然能够进行通信。当主机A与主机C需要进行通信时,由于这两台主机属于不同的VLAN,意味着分属于不同的广播域。当主机A发送ARP广播获取主机C的MAC地址时,ARP请求到达不了主机C上就会被丢弃。因此VLAN间的通信无法在二层技术上完成,需要借助三层设备,路由器或者三层交换机。具体拓扑如图3.2所示。

vni 映射vlan vlan映射是什么_vni 映射vlan_04

图3.2 VLAN间通信

  由于VLAN将交换机从逻辑上分为了多个虚拟的交换机,因此不同VLAN的IP应属于不同网段。假设VLAN1属于192.168.2.0/24网段,VLAN2属于192.168.3.0/24网段。当主机A与主机C通信时,首先主机A会发送数据到端口1,由于主机A与C属于不同VLAN属于不同网段,则需要将数据包发送网关上进行路由,此时交换机端口5链接类型为Trunk类型,表明该端口可以同时接收和发送VLAN1与VLAN2的数据包。因此将端口5与路由器相连,此时交换机会将该数据包发送到端口5上,由于为汇聚链接数据包发出时会被附加上VLAN1的标识,路由器收到该包时确认VLAN识别信息,得知该包时属于VLAN1的,因此交给路由器上提前设定好的VLAN1子接口接收处理该数据包;紧接着判断路由,由于主机C处于192.168.3.0/24网段,VLAN1子接口会将该数据包发往VLAN2子接口,由于是汇聚链接VLAN2子接口发送出去时会将该数据包附加上VLAN2的标识,发送到端口5上,此时只需将数据包转发到端口3处链接的主机C即可。综上所述,不同VLAN之间的通信即使双方链接在同一交换机上也必须经过“发送方 - 交换机 - 路由器 - 交换机 - 接收方”流程。其实质是不同网络之间的通信。
  三层交换机处理VLAN间通信与路由器相似,三层交换机集成了路由功能因此可以不需要路由器就可以进行不同VLAN之间的数据通信,但其实质与路由器的情况类似,这里不再赘述。

 

4. VLAN总结

 总的来说,VLAN划分是为了分割广播域,减小广播对网络影响。路由器的VLAN功能主要是为了与支持VLAN的交换机进行互联而设计的,其创建的VLAN子接口属于一种三层接口可以具有路由功能为不同VLAN间通信服务。各个VLAN子接口为各个VLAN网络中的网关,类似于传统LAN网络中的网关,这样才可以实现不同VLAN间主机通信。