1 为什么需要 VLAN(Virtual Local Area Network)
VLAN是一个逻辑网络,VLAN将设备/用户进行逻辑分组,VLAN需要在Switch上创建。为什么需要这样呢?为何不能所有设备都在同一个网络?
如下网络,如果设备过多,在同一个广播域,必然会造成流量拥塞、线路性能低。同时,由于所有机器共用同一段网络,会导致性能问题。
如果要解决这个问题,有以下几种解决办法:
-
不同组群有各自的Switch,这样一个广播域就划分为2个广播域,并且相互独立,然后通过三层路由器连接两个网络。
-
通过在 Switch 上配置VLAN,并且Switch和一个Router相连,从而实现两个VLAN互通,Switch 和 Router之间的连线叫做 Trunking / Trunk。
-
通过多层交换机(Multilayer Switch)类似方法2中创建2个VLAN,通过多层交换机的内部VLAN路由技术,从而实现2个VLAN互通。
通过以上方案,我们可以看到 VLAN 可以简化网络设计和实现,通过VLAN我们可以忽略物理位置限制,按照逻辑需求将设备划分到不同网络。
如果没有VLAN,一旦设备需要重新划分,就会涉及到重新连线配置,而通过VLAN,我们只需要调整配置。
一旦网络出现问题,VLAN 又可以帮助我们缩小问题范围,只需要关注发生问题的VLAN内部网络问题。
2 VLAN 实现机制
如图所示,2个switch分别连了2台电脑,A和C都是Vlan10, B和D都是Vlan20,如果想要A和C通信,B和D通信,且不同vlan的电脑不能通信,那么就要用到 Vlan,两个switch之间的link叫做 Trunck。
一个Trunk可以连接 Switch,也可以链接 Switch 和 Router,默认情况,一个trunk既可以处理switch 所有 vlan 的vlan流量,也可以配置为只允许传递某一个vlan的流量。
下面再来认识一下Vlan用到的端口:
-
Trunk/Tagged Port: Trunk 和 普通物理连线并无区别,但是一条trunck两端的接口需要经过特殊的配置。两端接口再Cisco设备上被称为 trunk port,其他vendor的设备上则叫做 tagged port,图中红色圈。Trunk/Tagged Port 用于给数据包添加 Vlan Tag。
-
Access/Untagged Port: 橙色圈是客户机连到switch上的端口,叫做 Access Port,这里应该有4个,圈一个示例一下。Access Port用来发送和接受没有 Vlan Tag 的数据包。也就是说,Access/Untagged Port只能用于一个Vlan。
- A向 switch 1 发送数据包 Ethernet Frame
- Trunk / Tagged Port 发送前会添加Tag信息,其中 VLAN Identifier标识属于哪个Vlan的流量
- Frame经过Trunk到达switch 2,switch 2解析Tag之后,丢掉Tag发送到指定的 Access Port发给客户机C