VLAN概述
从VLAN技术的出现、VLAN的优点到VLAN如何工作等,描述了VLAN技术是二层网络中重要转发技术之一。
VLAN产生原因
若某时刻有多个节点同时试图发送消息,那么它们将产生冲突。
从任意节点发出的消息都会被发送到其他节点,形成广播。
所有主机共享一条传输通道,无法保证网络中的信息安全。
这种网络构成了一个冲突域,网络中计算机数量越多冲突越严重,网络效率越低。同时,该网络也是一个广播域,当网络中发送信息的计算机数量越多时,广播流量将会耗费大量带宽。
因此,传统网络不仅面临冲突域和广播域两大难题,而且无法保障传输信息的安全。
为减少广播,需要在没有互访需求的主机之间进行隔离。路由器是基于三层IP地址信息来选择路由,其连接两个网段时可以有效抑制广播报文的转发,但成本较高。因此人们设想在物理局域网上构建多个逻辑局域网,即VLAN(Virtual Local Area Network)。
VLAN将一个物理的LAN在逻辑上划分成多个广播域(多个VLAN)。VLAN内的主机间可以直接通信,而VLAN间不能直接互通。这样,广播报文被限制在一个VLAN内,同时提高了网络安全性。
VLAN定义
VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域(多个VLAN)的通信技术。每一个VLAN都包含一组拥有相同需求的计算机,与物理上形成的LAN具有相同的属性。但是由于VLAN是在逻辑划分而不是在物理上划分,所有同一个VLAN内的各个工作站无需放置在同一个物理空间。VLAN内的主机间可以直接通信,而VLAN间不能直接互通,即使两台计算机有着同样的网段,但是它们不属于同一个VLAN,它们各自的广播流不会互相转发,从而将广播报文限制在一个VLAN内。由于VLAN间不能直接互访,因此提高了网络安全性。
图1是一个典型的VLAN应用组网图。3台设备A、B和C分别放置在不同的地点,比如写字楼的不同楼层。每台设备分别连接3台计算机,分别属于3个不同的VLAN,比如不同的企业客户。在图中,一个虚线框内表示一个VLAN。采用VLAN,可以实现各企业客户共享LAN设施,同时保证各自的网络信息安全,即不同的企业客户属于不同的VLAN,它们各自的广播报文不会互相转发,从而实现了控制流量、减少设备投资、简化网络管理、提高网络的安全性。
- 限制广播域。广播域被限制在一个VLAN内,节省了带宽,提高了网络处理能力。
- 增强局域网的安全性。不同VLAN内的报文在传输时是相互隔离的,即一个VLAN内的用户不能和其它VLAN内的用户直接通信。
- 提高了网络的健壮性。故障被限制在一个VLAN内,本VLAN内的故障不会影响其他VLAN的正常工作。
- 灵活构建虚拟工作组。用VLAN可以划分不同的用户到不同的工作组,同一工作组的用户也不必局限于某一固定的物理范围,网络构建和维护更方便灵活。
VLAN相关术语和基本原理
802.1q简介和VLAN帧格式
传统的以太网数据帧在目的MAC地址和源MAC地址之后封装的是上层协议的类型字段,如图7-2所示。
IEEE 802.1Q标准对Ethernet帧格式进行了修改,在源MAC地址字段和协议类型字段之间加入4字节的802.1Q Tag,如图1所示。
图7-3 基于802.1Q的VLAN帧格式
802.1Q Tag包含4个字段,其含义如下:
Type
长度为2字节,表示帧类型。取值为0x8100时表示802.1Q Tag帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。
PRI
Priority,长度为3比特,表示帧的优先级,值越大优先级越高。用于当交换机阻塞时,优先发送优先级高的数据帧。
CFI
Canonical Format Indicator,长度为1比特,表示MAC地址是否是经典格式。CFI为0说明是经典格式,CFI为1表示为非经典格式。用于区分以太网帧、FDDI(Fiber Distributed Digital Interface)帧和令牌环网帧。在以太网中,CFI的值为0。
VID
VLAN ID,长度为12比特,表示该帧所属的VLAN。VLAN ID取值范围是0~4095。由于0和4095为协议保留取值,所以VLAN ID的有效取值范围是1~4094。
每台支持802.1q协议的交换机发送的数据包都会包含VLAN ID,以指明自己属于哪一个VLAN。因此,在一个VLAN交换网络中,以太网帧有以下两种形式:- 有标记帧(tagged frame):加入了4字节802.1q Tag的帧
- 无标记帧(untagged frame):原始的、未加入4字节802.1q Tag的帧
VLAN基于端口划分
VLAN基于端口进行划分。原理是:根据交换设备的端口编号来划分VLAN。网络管理员给交换机的每个端口配置不同的PVID(Port Default VLAN ID,端口缺省的VLAN ID),即一个端口缺省属于的VLAN。当一个数据帧进入交换机端口时,如果没有带VLAN标签,且该端口上配置了PVID,那么,该数据帧就会被打上端口的PVID。如果进入的帧已经带有VLAN标签,那么交换机不会再增加VLAN标签,即使端口已经配置了PVID。对VLAN帧的处理由端口类型决定。
VLAN内的链路类型
如图7-4所示,VLAN中有以下两种链路类型:
接入链路(Access Link):连接用户主机和交换机的链路为接入链路。通常情况下,主机并不需要知道自己属于哪个VLAN,主机硬件通常也不能识别带有VLAN标记的帧。因此,主机发送和接收的帧都是untagged帧。
干道链路(Trunk Link):连接交换机和交换机的链路称为干道链路。干道链路可以承载多个不同VLAN数据,数据帧在干道链路传输时,干道链路的两端设备需要能够识别数据帧属于哪个VLAN,所以在干道链路上传输的帧都是Tagged帧。
端口属性
端口属性如表7-1所示。
表7-1 端口属性端口属性
对接收不带Tag的报文处理
对接收带Tag的报文处理
对发送报文的处理
用途
Access端口
接收该报文,并打上缺省VLAN的Tag。
- 当VLAN ID与缺省VLAN ID相同时,接收该报文。
- 当VLAN ID与缺省VLAN ID不同时,丢弃该报文。
去掉Tag,发送该报文。
端口只能属于1个VLAN,用于交换机与计算机直接连接。
Trunk端口
丢弃该报文。
- 当VLAN ID在接口允许通过的VLAN ID列表里时,接收该报文。
- 当VLAN ID不在接口允许通过的VLAN ID列表里时,丢弃该报文。
- 当VLAN ID在允许通过的VLAN ID列表里时,保持原有Tag,发送该报文。
- 当VLAN ID不在允许通过的VLAN ID列表里时,直接丢弃该报文。
端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,一般用于网络设备之间连接。
Hybrid端口
- 如果Hybrid端口上仅配置port default vlan命令,Hybrid端口接收该报文,并打上缺省VLAN的Tag。
- 如果Hybrid端口上仅配置port trunk allow-pass命令,Hybrid端口直接丢弃该报文。
- 如果Hybrid端口上同时配置port default vlan和port trunk allow-pass命令,Hybrid端口接收该报文,并打上port default vlan配置的缺省VLAN的Tag。
- 如果Hybrid端口上仅配置port default vlan命令:
- 当VLAN ID与缺省VLAN ID相同时,接收该报文。
- 当VLAN ID与缺省VLAN ID不同时,丢弃该报文。
- 如果Hybrid端口上仅配置port trunk allow-pass命令:
- 当VLAN ID在接口允许通过的VLAN ID列表里时,接收该报文。
- 当VLAN ID不在接口允许通过的VLAN ID列表里时,丢弃该报文。
- 如果Hybrid端口上同时配置port default vlan和port
trunk allow-pass命令:
- 当VLAN ID在接口配置的port trunk allow-pass允许通过的VLAN ID列表里,或与port default vlan配置的VLAN ID相同时,接收该报文。
- 当VLAN ID不在接口配置的port trunk allow-pass允许通过的VLAN ID列表里,也与port default vlan配置的VLAN ID不相同时,丢弃该报文。
如果Hybrid端口上仅配置port default vlan命令,当VLAN ID与缺省VLAN ID相同时,Hybrid端口去掉Tag,发送该报文。否则会丢弃报文。
- 如果Hybrid端口上仅配置port trunk allow-pass命令:
- 当VLAN ID在允许通过的VLAN ID列表里时,保持原有Tag,发送该报文。
- 当VLAN ID不在允许通过的VLAN ID列表里时,直接丢弃该报文。
- 如果Hybrid端口上同时配置port default vlan和port trunk allow-pass命令,
- 当VLAN ID与缺省VLAN ID相同时,Hybrid端口去掉Tag,发送该报文。
- 当VLAN ID与缺省VLAN ID不相同时,如果VLAN ID在接口配置的port trunk allow-pass允许通过的VLAN ID列表里,则直接发送该报文。否则丢弃该报文。
说明:如果port default vlan配置的VLAN ID在port trunk allow-pass配置的VLAN列表里,则当报文的VLAN ID与该VLAN ID相同时,Hybrid端口会去掉Tag,发送该报文。
端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,可以用于网络设备之间连接,也可以用于连接用户设备。
QinQ端口
QinQ端口是使用QinQ协议的端口。QinQ端口可以给帧加上双重Tag,即在原来Tag的基础上,给帧加上一个新的Tag,从而可以支持多达4094 x 4094个VLAN,满足城域网对VLAN数量的需求。
VLAN中的数据交换原理
如图7-4所示,VLAN2中的PC1发送数据到目的地PC2,转发过程如下:
CE1的Access类型端口收到PC1发送的untagged帧,在帧上打上标记PVID(VLAN 2)形成tagged帧。通过MAC地址表,找到对应的出接口,将此tagged帧发送出去。
PE的Trunk类型端口接收到帧后,先检查此帧携带的VLAN ID是否与自身已配置的VLAN ID一致。如果一致,直接将此数据帧透传到对端。否则,直接丢弃该帧。
CE2的Trunk类型端口接收到帧后,通过MAC地址表,找到对应的出接口,即CE2与PC2相连的Access端口。
CE2的Access类型端口收到帧后,确定帧中携带的VLAN ID和端口支持的VLAN ID一致,将帧中的标记剥掉,形成untagged帧,转发给目的主机PC2。
VLANIF接口
VLANIF接口是三层逻辑接口,可以部署在三层交换机上,也可以部署在路由器上。
三层交换技术是将路由技术与交换技术合二为一的技术,在交换机内部实现了路由,提高了网络的整体性能。三层交换机通过路由表传输第一个数据流后,会产生一个MAC地址与IP地址的映射表。当同样的数据流再次通过时,将根据此表直接从二层通过而不是通过三层,从而消除了路由器进行路由选择而造成的网络延迟,提高了数据包转发效率。
为了保证第一次数据流通过路由表正常转发,路由表中必须有正确的路由表项。因此必须在三层交换机上部署三层接口并部署路由协议,实现三层路由可达。VLANIF接口由此而产生。
- 对于主机来说,它不需要知道VLAN的存在。主机发出的是untagged报文。
- 交换设备接收到报文后,根据配置规则(如端口信息)判断出报文所属的VLAN后,再进行处理。
- 如果报文需要通过另一台交换机转发,则该报文必须通过干道链路传输透传到对端交换设备上。为了保证其它交换设备能够正确处理报文中的VLAN信息,在干道链路上传输的报文必须都打上了VLAN标记。
- 当交换设备最终确定报文出端口后,将报文发送给主机前,需要将VLAN标记从帧中删除,这样主机接收到的报文都是不带VLAN标记的以太网帧。
所以,一般情况下,干道链路上传输的都是tagged帧,接入链路上传送到的都是untagged帧。这样处理的好处是:网络中配置的VLAN信息可以被所有交换设备正确处理,而主机不需要了解VLAN信息。