VLAN是将处于同一个LAN(网段)的主机,划分成多个VLAN,每个VLAN之间的机器可以相互通信,不同的VLAN之间的机器不能通信。
好处
(1) 未分割VLAN仅有一个广播域,有可能会由于广播风暴降低网络传输性能
分析下图可知:A主机的ARP请求原本是为了获得B主机的MAC地址而发出的。也就是说:只要B主机能收到就万事大吉了。可是事实上,数据帧却传遍整个网络,导致所有的计算机都收到了它。如此一来,一方面广播信息消耗了网络整体的带宽,另一方面,收到广播信息的计算机还要消耗一部分CPU时间来对它进行处理。造成了网络带宽和CPU运算能力的大量无谓消耗,可能会造成网络瘫痪。
(2) 按照部门划分VLAN
在规划企业级网络时,为了保证部门间相互独立,需要将不同部门划分成不同的VLAN,确保相同的部门能够相互通信,不同的部门不能通信,保障各个部门办公安全。
原理
在理解了“为什么需要VLAN”之后,接下来让我们来了解一下交换机是如何使用VLAN分割广播域的
。
案例1:同一台交换机上,划分多个VLAN
首先,在一台未设置任何VLAN的二层交换机上,任何广播帧都会被转发给除接收端口外的所有其他端口上泛滥。例如,计算机A发送广播信息后,会被转发给端口2、3、4。
这时,如果在交换机上生成红、蓝两个VLAN;同时设置端口1、2属于红色VLAN、端口3、4属于蓝色VLAN。
那么,从A发出广播帧的话,交换机就只会把它转发给同属于一个VLAN的其他端口
,也就是同属于红色VLAN的端口2,不会再转发给属于蓝色VLAN的端口。同理,C发送广播信息时,只会被转发给其他属于蓝色VLAN的端口,不会被转发给属于红色VLAN的端口。
补充说明:VLAN通过限制广播帧转发的范围分割了广播域。上图中为了便于说明,以红、蓝两色识别不同的VLAN,在实际使用中则是用 “ VLAN 的 ID ” 来区分的。
【VLAN间通信】:但是,VLAN生成的逻辑上的交换机是互不相通的。因此,在交换机上设置VLAN后,如果未做其他处理,VLAN间是无法通信的。那么,当我们需要在不同的VLAN间通信时又该如何是好呢 ? 答案:VLAN是广播域。而通常两个广播域之间由路由器连接,广播域之间来往的数据包都是由路由器中继的。因此,VLAN间的通信也需要路由器提供中继服务,这被称作“VLAN间路由”。VLAN间路由,可以使用普通的路由器
,也可以使用三层交换机
。大家可以记住不同VLAN间互相通信时需要用到路由功能。
案例2:不同的多台交换机上,划分多个VLAN
在规划企业级网络时,很有可能会遇到隶属于同一部门的用户分散在同一座建筑物中的不同楼层
的情况,这时可能就需要考虑到如何跨越多台交换机设置VLAN
的问题了。假设有如下图所示的网络,且需要将不同楼层的A、C和B、D设置为同一个VLAN。
这时最关键的就是“交换机1和交换机2该如何连接才好呢?”
(1) 最简单的方法,自然是在交换机1和交换机2上各设一个红、蓝VLAN专用的接口并互联了。
但是,这个办法从扩展性和管理效率来看都不好。例如,在现有网络基础上再新建VLAN时,为了让这个VLAN能够互通,就需要在交换机间连接新的网线。建筑物楼层间的纵向布线是比较麻烦的,一般不能由基层管理人员随意进行。并且,VLAN越多,楼层间(严格地说是交换机间)互联所需的端口也越来越多,交换机端口的利用效率低是对资源的一种浪费、也限制了网络的扩展。
(2) 汇聚链接(Trunk Link)
为了避免上面这种低效率的连接方式,人们想办法让交换机间互联的网线集中到一根上,这时使用的就是汇聚链接(Trunk Link)。
何谓汇聚链接?答案:汇聚链接(Trunk Link)指的是能够转发多个不同VLAN的通信的端口。
数据传输的原理是什么?答案:汇聚链路上流通的数据帧,都被附加了用于识别分属于哪个VLAN的特殊信息。
接下来,让我们具体看看汇聚链接是如何实现跨越交换机间的VLAN的:
A发送的数据帧从交换机1经过汇聚链路到达交换机2时,在数据帧上附加了表示属于红色VLAN的标记。
交换机2收到数据帧后,经过检查VLAN标识发现这个数据帧是属于红色VLAN的,因此去除标记后根据需要将复原的数据帧只转发给其他属于红色VLAN的端口。
(1) 静态VALN
静态VLAN也叫做基于端口的VLAN。从意思也能理解,它是固定不变的,就是明确指定交换机各端口属于哪个VLAN的设定方法。
基于端口的vlan这种方法,主要的优点就是定议vlan的成员很简单明了,思路清楚,直接针对交换机现有的端口设置vlan,哪些端口属于同一个vlan,很清楚的理解。
那么它的缺点呢?
由于需要一个个端口地指定,因此当网络中的计算机数目超过一定数字(比如数百台)后,设定操作就会变得烦杂无比。并且,计算机每次变更所连端口,都必须同时更改该端口所属VLAN的设定——这显然静态VLAN不适合那些需要频繁改变拓补结构的网络和大型网络。
(2) 动态VLAN
动态VLAN则是根据每个端口所连的计算机,随时改变端口所属的VLAN。这就可以避免上述的更改设定之类的操作。动态VLAN可以大致分为3类:
① 、基于MAC地址的VLAN,就是通过查询并记录端口所连计算机上网卡的MAC地址来决定端口的所属。假定有一个计算机的MAC地址为“A”被交换机设定为属于VLAN“10”,那么不论MAC地址为“A”这台计算机连在交换机哪个端口,该端口都会被划分到VLAN10中去。
例如:计算机连在端口1时,端口1属于VLAN10;而计算机连在端口2时,则是端口2属于VLAN10。
②、基于子网的VLAN,则是通过所连计算机的IP地址,来决定端口所属VLAN的。不像基于MAC地址的VLAN,即使计算机因为交换了网卡或是其他原因导致MAC地址改变,只要它的IP地址不变,就仍可以加入原先设定的VLAN。
说白了,只要电脑ip地址不变,那么它的vlan就不变,很方便,计算机可以换交换机端口,也可以MAC地址了,都不影响。
③、基于用户的VLAN,则是根据交换机各端口所连的计算机上当前登录的用户,来决定该端口属于哪个VLAN。这里的用户识别信息,一般是计算机操作系统登录的用户,比如可以是Windows域中使用的用户名。这些用户名信息,属于OSI第四层以上的信息。
① 在交换机上部署Trunk
② 当来自不同VLAN的流量向路由器转发时,由路由器打上802.1q的TAG
③ 这样,路由器收到之后就能够识别出该流量的VLAN归属问题
接下来,我们继续学习使用汇聚链路连接交换机与路由器时,VLAN间路由是如何进行的。如下图所示,为各台计算机以及路由器的子接口设定IP地址。
红色VLAN(VLANID=1)的网络地址为192.168.1.0/24,蓝色VLAN(VLANID=2)的网络地址为192.168.2.0/24。各计算机的MAC地址分别为A/B/C/D,路由器汇聚链接端口的MAC地址为R。交换机通过对各端口所连计算机MAC地址的学习,生成如下的MAC地址列表。
情形1:同一VLAN内的通信
首先考虑计算机A与同一VLAN内的计算机B之间通信时的情形。
计算机A发出ARP请求信息,请求解析B的MAC地址。交换机收到数据帧后,检索MAC地址列表中与收信端口同属一个VLAN的表项。结果发现,计算机B连接在端口2上,于是交换机将数据帧转发给端口2,最终计算机B收到该帧。收发信双方同属一个VLAN之内的通信,一切处理均在交换机内完成。
情形2:不同VLAN间通信时数据的流程
接下来是这一讲的核心内容,不同VLAN间的通信。让我们来考虑一下计算机A与计算机C之间通信时的情况。
过程①:计算机A从通信目标的IP地址(192.168.2.1)得出C与本机不属于同一个网段。因此会向设定的默认网关(Default Gateway,GW)转发数据帧。在发送数据帧之前,需要先用ARP获取路由器的MAC地址。
过程②:得到路由器的MAC地址R后,接下来就是按图中所示的步骤发送往C去的数据帧。①的数据帧中,目标MAC地址是路由器的地址R、但内含的目标IP地址仍是最终要通信的对象C的地址。
过程③:交换机在端口1上收到①的数据帧后,检索MAC地址列表中与端口1同属一个VLAN的表项。由于汇聚链路会被看作属于所有的VLAN,因此这时交换机的端口6也属于被参照对象。这样交换机就知道往MAC地址R发送数据帧,需要经过端口6转发。
过程④:从端口6发送数据帧时,由于它是汇聚链接,因此会被附加上VLAN识别信息。由于原先是来自红色VLAN的数据帧,因此如图中②所示,会被加上红色VLAN的识别信息后进入汇聚链路。路由器收到②的数据帧后,确认其VLAN识别信息,由于它是属于红色VLAN的数据帧,因此交由负责红色VLAN的子接口接收。
过程⑤:接着,根据路由器内部的路由表,判断该向哪里中继。
由于目标网络192.168.2.0/24是蓝色VLAN,且该网络通过子接口与路由器直连,因此只要从负责蓝色VLAN的子接口转发就可以了。这时,数据帧的目标MAC地址被改写成计算机C的目标地址;并且由于需要经过汇聚链路转发,因此被附加了属于蓝色VLAN的识别信息。这就是图中③的数据帧。
过程⑥:交换机收到③的数据帧后,根据VLAN标识信息从MAC地址列表中检索属于蓝色VLAN的表项。由于通信目标——计算机C连接在端口3上、且端口3为普通的访问链接,因此交换机会将数据帧除去VLAN识别信息后(数据帧④)转发给端口3,最终计算机C才能成功地收到这个数据帧。
总结:进行VLAN间通信时,即使通信双方都连接在同一台交换机上,也必须经过:发送方——交换机——路由器——交换机——接收方