一、
VLAN产生原因-广播风暴
传统的局域网使用的是HUB,HUB只有一根总线,一根总线就是一个冲突域。所以传统的局域网是一个扁平的网络,一个局域网属于同一个冲突域。任何一台主机发出的报文都会被同一冲突域中的所有其它机器接收到。后来,组网时使用网桥(二层交换机)代替集线器(HUB),每个端口可以看成是一根单独的总线,冲突域缩小到每个端口,使得网络发送单播报文的效率大大提高,极大地提高了二层网络的性能。但是网络中所有端口仍然处于同一个广播域,网桥在传递广播报文的时候依然要将广播报文复制多份,发送到网络的各个角落。随着网络规模的扩大,网络中的广播报文越来越多,广播报文占用的网络资源越来越多,严重影响网络性能,这就是所谓的广播风暴的问题。
由于网桥二层网络工作原理的限制,网桥对广播风暴的问题无能为力。为了提高网络的效率,一般需要将网络进行分段:把一个大的广播域划分成几个小的广播域。
过去往往通过路由器对LAN进行分段。用路由器替换中心节点交换机,使得广播报文的发送范围大大减小。这种方案解决了广播风暴的问题,但是用路由器是在网络层上分段将网络隔离,网络规划复杂,组网方式不灵活,并且大大增加了管理维护的难度。做为替代的LAN分段方法,虚拟局域网被引入到网络解决方案中来,用于解决大型的二层网络环境面临的问题。
虚拟局域网(VLAN——Virtual Local Area Network)逻辑上把网络资源和网络用户按照一定的原则进行划分,把一个物理上实际的网络划分成多个小的逻辑的网络。这些小的逻辑的网络形成各自的广播域,也就是虚拟局域网VLAN
虚拟局域网将一组位于不同物理网段上的用户在逻辑上划分成一个局域网内,在功能和操作上与传统LAN基本相同,可以提供一定范围内终端系统的互联。VLAN与传统的LAN相比,具有以下优势:
- 减少移动和改变的代价
即所说的动态管理网络,也就是当一个用户从一个位置移动到另一个位置时,他们的网络属性不需要重新配置,而是动态的完成。
2.虚拟工作组
使用VLAN的最终目标就是建立虚拟工作组模型,广播包限制在该VLAN上,不影响其他VLAN。一个人如果从一个办公地点换到另外一个地点,而他任然在该部门,那么,该用户的配置无须改变;同时,如果一个人虽然办公地点没有变,但他更换了部门,那么,只需网络管理员更改一下该用户的配置即可。
用户不受到物理设备的限制,VLAN用户可以处于网络中的任何地方;
VLAN对用户的应用不产生影响;
VLAN的应用解决了许多大型二层交换网络产生的问题:
有效地解决了广播风暴带来的性能下降问题。
增强通讯的安全性:
一个VLAN的数据包不会发送到另一个VLAN,这样,其他VLAN的用户的网络上是收不到任何该VLAN的数据包,这样就确保了该VLAN的信息不会被其他VLAN的人窃听,从而实现了信息的保密;
增强网络的健壮性:
当网络规模增大时,部分网络出现问题往往会影响整个网络,引入VLAN之后,可以将一些网络故障限制在一个VLAN之内。
VLAN是逻辑上对网络进行划分,组网方案灵活,配置管理简单,降低了管理维护的成本。
二、VLAN的类型
1.基于端口的VLAN
这种划分VLAN的方法是根据以太网交换机的端口来划分,这些属于同一VLAN的端口可以不连续,如何配置,由管理员决定。
2.基于MAC地址的VLAN
这种划分VLAN的方法是根据每个主机的MAC地址来划分,即对所有主机都根据它的MAC地址配置主机属于哪个VLAN;交换机维护一张VLAN映射表,这个VLAN表记录MAC地址和VLAN的对应关系。这种划分VLAN的方法的最大优点就是当用户物理位置移动时,即从一个交换机换到其他的交换机时,VLAN不用重新配置,所以,可以认为这种根据MAC地址的划分方法是*基于用户的_VLAN。
缺点是初始化时,所有的用户都必须进行配置,如果用户很多,配置的工作量是很大的。此外这种划分的方法也导致了交换机执行效率的降低,因为在每一个交换机的端口都可能存在很多个VLAN组的成员,这样就无法限制广播包。另外,对于使用笔记本电脑的用户来说,他们的网卡可能经常更换,这样,VLAN就必须不停的配置。
3.基于协议的VLAN
根据二层数据帧中协议字段进行VLAN的划分。通过二层数据中协议字段,可以判断出上层运行的网络协议,如IP协议或者是IPX协议。如果一个物理网络中既有IP网络又有IPX等多种协议运行的时候,可以采用这种VLAN的划分方法。
4.基于子网的VLAN
基于IP子网的VLAN根据报文中的IP地址决定报文属于哪个VLAN:同一个IP子网的所有报文属于同一个VLAN。这样,可以将同一个IP子网中的用户被划分在一个VLAN内。
利用IP子网定义VLAN有以下几点优势:
1)这种方式可以按传输协议划分网段。这对于希望针对具体应用的服务来组织用户的网络管理者来说是非常有诱惑力的。
2)用户可以在网络内部自由移动而不用重新配置自己的工作站,尤其是使用TCP/IP的用户。
缺点是效率,因为检查每一个数据包的网络层地址是很费时的。同时由于一个端口也可能存在多个VLAN的成员,对广播报文也无法有效抑制。
IEEEE802.1Q协议
IEEE802.1Q是虚拟桥接局域网的正式标准,定义了同一个物理链路上承载多个子网的数据流的方法。IEEE802.1Q定义了VLAN帧格式,为识别帧属于哪个VLAN提供了一个标准的方法。这个格式统一了标识VLAN的方法,有利于保证不同厂家设备配置的VLAN可以互通。
IEEE 802.1Q定义了一下内容:
VLAN的架构;
VLAN中所提供的服务;
VLAN实施中涉及的协议和算法;
一、VLAN帧格式
四个字节的802.1Q标签头包含了2个字节的标签协议标识(TPID)和2个字节的标签控制信息(TCI)。
TPID(Tag Protocol Indentifier)是IEEE定义的新的类型,表明这是一个加了802.1Q标签的帧。TPID包含了一个固定的值0x8100。
TCI是包含的是帧的控制信息,它包含了下面的一些元素:
Priority:这3 位指明帧的优先级。一共有8种优先级,0-7。IEEE 802.1Q标准使用这三位信息。
Canonical Format Indicator( CFI ):CFI值为0说明是规范格式,1为非规范格式。它被用在令牌环/源路由FDDI介质访问方法中来指示封装帧中所带地址的比特次序信息。
VLAN Identified( VLAN ID ): 这是一个12位的域,指明VLAN的ID,一共4096个,每个支持802.1Q协议的交换机发送出来的数据包都会包含这个域,以指明自己属于哪一个VLAN。
在一个交换网络环境中,以太网的帧有两种格式:有些帧是没有加上这四个字节标志的,称为未标记的帧(ungtagged frame),有些帧加上了这四个字节的标志,称为带有标记的帧(tagged frame)。
二、VLAN链路
接入链路 干道链路
接入链路指的是用于连接主机和交换机的链路。通常情况下主机并不需要知道自己属于哪些VLAN,主机的硬件也不一定支持带有VLAN标记的帧。主机要求发送和接收的帧都是没有打上标记的帧。
接入链路属于某一个特定的端口,这个端口属于一个并且只能是一个VLAN。这个端口不能直接接收其它VLAN的信息,也不能直接向其它VLAN发送信息。不同VLAN的信息必须通过三层路由处理才能转发到这个端口上。
干道链路是可以承载多个不同VLAN数据的链路。干道链路通常用于交换机间的互连,或者用于交换机和路由器之间的连接。
数据帧在干道链路上传输的时候,交换机必须用一种方法来识别数据帧是属于哪个VLAN的。IEEE 802.1Q定义了VLAN帧格式,所有在干道链路上传输的帧都是打上标记的帧(tagged frame)。通过这些标记,交换机就可以确定哪些帧分别属于哪个VLAN。
和接入链路不同,干道链路是用来在不同的设备之间(如交换机和路由器之间、交换机和交换机之间)承载VLAN数据的,因此干道链路是不属于任何一个具体的VLAN的。通过配置,干道链路可以承载所有的VLAN数据,也可以配置为只能传输指定的VLAN的数据。
干道链路虽然不属于任何一个具体的VLAN,但是可以给干道链路配置一个pvid(port VLAN ID)。当干道链路不论因为什么原因,trunk链路上出现了没有带标记的帧,交换机就给这个帧增加带有pvid的VLAN标记,然后进行处理。
三、VLAN帧在网络中的通信
对于主机来说,它是不需要知道VLAN的存在的。主机发出的报文都是untagged的报文;交换机接收到这样的报文之后,根据配置规则(如端口信息)判断出报文所属VLAN进行处理。如果报文需要通过另外一台交换机发送,则该报文必须通过干道链路传输到另外一台交换机上。为了保证其它交换机正确处理报文的VLAN信息,在干道链路上发送的报文都带上了VLAN标记。
当交换机最终确定报文发送端口后,将报文发送给主机之前,将VLAN的标记从以太网帧中删除,这样主机接收到的报文都是不带VLAN的标记的以太网帧。
所以,一般情况下,干道链路上传送的都是Tagged Frame,接入链路上传送的都是Untagged Frame。这样做的最终结果是:网络中配置的VLAN可以被所有的交换机正确处理,而主机不需要了解VLAN信息。
四、Trunk和VLAN
一个VLAN就确定了一个广播域。广播报文能够被在一个广播域中的所有主机接收到,也就是说,广播报文必须被发送到一个VLAN中的所有端口。因为VLAN可能跨越多个交换机,当一个交换机从某VLAN的一个端口收到广播报文之后,为了保证同属一个VLAN的所有主机都接收到这个广播报文,交换机必须按照如下原则将报文进行转发:
1.发送给本交换机中同一个VLAN中的其他端口
2.将这个包报文发送给本交换机的包含这个VLAN的所有干道链路,以便让其他交换机上的同一个VLAN的端口也发送该报文。
将一个端口设置为Trunk端口,也就是说,和这个端口相连的链路被设置为Trunk链路,同时还可以配置哪些VLAN的报文可以通过这个干道链路。配置允许通过的VLAN,需要根据网络的配置情况进行考虑,而不应该让干道链路传输所有的VLAN:因为某一VLAN的所有广播报文必须被发送到这个VLAN的每一个端口,如果让干道链路传输所有的VLAN,这些广播报文将被干道链路传送到所有的其它交换机上。如果在干道链路的另外一端没有这个VLAN的成员端口,那么带宽和处理时间就会被白白浪费。
对于多数用户来说,手工配置太麻烦了。一个规模比较大的网络可能包含多个VLAN,而且网络的配置也会随时发生变化,导致根据网络的拓扑结构逐个交换机配置Trunk端口过于复杂。这个问题可以由GVRP协议来解决:GVRP协议根据网络情况动态配置干道链路。