vlan 的应用在网络项目中是非常广泛的,基本上大部分的项目都需要划分 vlan,这里从基础的 vlan 的知识开始,了解 vlan 的划分原理。
为什么需要 vlan:
1、什么是 VLAN?
VLAN(Virtual LAN),翻译成中文是 “虚拟局域网”。LAN 可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络。VLAN 所指的 LAN 特指使用路由器分割的网络 —— 也就是广播域。
简单来说,同一个 VLAN 中的用户间通信就和在一个局域网内一样,同一个 VLAN 中的广播只有 VLAN 中的 成员才能听到,而不会传输到其他的 VLAN 中去,从而控制不必要的广播风暴的产生。同时, 若没有路由,不同 VLAN 之间不能相互通信,从而提高了不同工作组之间的信息安全性。网络 管理员可以通过配置 VLAN 之间的路由来全面管理网络内部不同工作组之间的信息互访。
2、未分割 VLAN 时将会发生什么?
那么,为什么需要分割 VLAN (广播域)呢?那是因为,如果仅有一个广播域,有可能会影响到网络整体的传输性能。具体原因,请参看附图加深理解。
图中,是一个由 5 台二层交换机(交换机 1~5)连接了大量客户机构成的网络。假设这时,计算机 A 需要与计算机 B 通信。在基于以太网的通信中,必须在数据帧中指定目标 MAC 地址才能正常通信,因此计算机 A 必须先广播 “ARP 请求(ARP Request)信息”,来尝试获取计算机 B 的 MAC 地址。
交换机 1 收到广播帧(ARP 请求)后,会将它转发给除接收端口外的其他所有端口,也就是泛滥了。接着,交换机 2 收到广播帧后也会泛滥。交换机 3、4、5 也还会泛滥。最终 ARP 请求会被转发到同一网络中的所有客户机上,这也就是网络风暴。
我们分析下,这个计算 A 的 ARP 请求原本是为了获得计算机 B 的 MAC 地址而发出的。也就是说:只要计算机 B 能收到就万事大吉了。可是事实上,数据帧却传遍整个网络,导致所有的计算机都收到了它。如此一来,一方面广播信息消耗了网络整体的带宽,另一方面,收到广播信息的计算机还要消耗一部分 CPU 时间来对它进行处理。造成了网络带宽和 CPU 运算能力的大量无谓消耗,可能会造成网络瘫痪。
vlan 的原理
1、实现 VLAN 的机制
在理解了 “为什么需要 VLAN” 之后,接下来让我们来了解一下交换机是如何使用 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 间是无法通信的。
2、需要 VLAN 间通信时怎么办?
那么,当我们需要在不同的 VLAN 间通信时又该如何是好呢?
VLAN 是广播域。而通常两个广播域之间由路由器连接,广播域之间来往的数据包都是由路由器中继的。因此,VLAN 间的通信也需要路由器提供中继服务,这被称作 “VLAN 间路由”。
VLAN 间路由,可以使用普通的路由器,也可以使用三层交换机。大家可以记住不同 VLAN 间互相通信时需要用到路由功能。
2.1 静态 VALN
静态 VLAN 也叫做基于端口的 VLAN。从意思也能理解,它是固定不变的,就是明确指定交换机各端口属于哪个 VLAN 的设定方法。
基于端口的 vlan 这种方法,主要的优点就是定议 vlan 的成员很简单明了,思路清楚,直接针对交换机现有的端口设置 vlan,哪些端口属于同一个 vlan,很清楚的理解。
那么它的缺点呢?
由于需要一个个端口地指定,因此当网络中的计算机数目超过一定数字(比如数百台)后,设定操作就会变得烦杂无比。并且,计算机每次变更所连端口,都必须同时更改该端口所属 VLAN 的设定 —— 这显然静态 VLAN 不适合那些需要频繁改变拓补结构的网络和大型网络。
2.2 动态 VLAN
动态 VLAN 则是根据每个端口所连的计算机,随时改变端口所属的 VLAN。这就可以避免上述的更改设定之类的操作。动态 VLAN 可以大致分为 3 类:
● 基于 MAC 地址的 VLAN(MAC Based VLAN)
● 基于子网的 VLAN(Subnet Based VLAN)
● 基于用户的 VLAN(User Based VLAN)
①、基于 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 第四层以上的信息。
3、总结
综上所述,vlan 的设定手法有静态 VLAN 和动态 VLAN 两种,其中动态 VLAN 又可以继续细分成几个小类。
其中基于子网的 VLAN 和基于用户的 VLAN 有可能是网络设备厂商使用独有的协议实现的,不同厂商的设备之间互联有可能出现兼容性问题;因此在选择交换机时,一定要注意事先确认。
交换机之间的连接方式
那么,如果需要设置跨越多台交换机的 VLAN 时又如何呢?
1、方法 一
在规划企业级网络时,很有可能会遇到隶属于同一部门的用户分散在同一座建筑物中的不同楼层的情况,这时可能就需要考虑到如何跨越多台交换机设置 VLAN 的问题了。假设有如下图所示的网络,且需要将不同楼层的 A、C 和 B、D 设置为同一个 VLAN。
如下图:
这时最关键的就是 “交换机 1 和交换机 2 该如何连接才好呢?”
最简单的方法,自然是在交换机 1 和交换机 2 上各设一个红、蓝 VLAN 专用的接口并互联了。
但是,这个办法从扩展性和管理效率来看都不好。例如,在现有网络基础上再新建 VLAN 时,为了让这个 VLAN 能够互通,就需要在交换机间连接新的网线。建筑物楼层间的纵向布线是比较麻烦的,一般不能由基层管理人员随意进行。并且,VLAN 越多,楼层间(严格地说是交换机间)互联所需的端口也越来越多,交换机端口的利用效率低是对资源的一种浪费、也限制了网络的扩展。
2、方法 二
为了避免上面这种低效率的连接方式,人们想办法让交换机间互联的网线集中到一根上,这时使用的就是汇聚链接(Trunk Link)。
何谓汇聚链接?
汇聚链接(Trunk Link)指的是能够转发多个不同 VLAN 的通信的端口。
汇聚链路上流通的数据帧,都被附加了用于识别分属于哪个 VLAN 的特殊信息。
现在再让我们回过头来考虑一下刚才那个网络如果采用汇聚链路又会如何呢?用户只需要简单地将交换机间互联的端口设定为汇聚链接就可以了。这时使用的一根网线还是普通的 UTP 线,而不是什么其他的特殊布线。图例中是交换机间互联,因此需要用交叉线来连接。
接下来,让我们具体看看汇聚链接是如何实现跨越交换机间的 VLAN 的。
A 发送的数据帧从交换机 1 经过汇聚链路到达交换机 2 时,在数据帧上附加了表示属于红色 VLAN 的标记。
交换机 2 收到数据帧后,经过检查 VLAN 标识发现这个数据帧是属于红色 VLAN 的,因此去除标记后根据需要将复原的数据帧只转发给其他属于红色 VLAN 的端口。这时的转送,是指经过确认目标 MAC 地址并与 MAC 地址列表比对后只转发给目标 MAC 地址所连的端口。只有当数据帧是一个广播帧、多播帧或是目标不明的帧时,它才会被转发到所有属于红色 VLAN 的端口。
蓝色 VLAN 发送数据帧时的情形也与此相同。
via:
网络 - 图文并茂讲 VLAN,让你看一遍就理解 VLAN - SegmentFault 思否 XCIE 闫辉 2022-05-13