什么是VLAN
vlan是英文Virtual Local Area Network的缩写,中文名为"虚拟局域网", VLAN是 一种将局域网(LAN)设备从逻辑上划分(注意,不是从物理上划分)成一个个网段(或者 说是更小的局域网LAN),从而实现虚拟工作组(单元)的数据交换技术。
更直观的来讲,可以把VLAN理解为将一台交换机在逻辑上分割成了数台交换机,在一台交换机上生成红、蓝两个VLAN,也可以看作是将一台交换机换做一红一蓝两台虚拟的交换机。
VLAN的优点
广播域被限制在一个VLAN内,节省了带宽,提高了网络处理能力。
增强局域网的安全性:VLAN间不能直接通信,即一个VLAN内的用户不能和其它VLAN内的用户直接通信,而需要通过路由器或三层交换机等三层设备。
灵活构建虚拟工作组:用VLAN可以划分不同的用户到不同的工作组,同一工作组的用户也不必局限于某一固定的物理范围,网络构建和维护更方便灵活。
VLAN的分类
静态VLAN
基于端口的VLAN,就是明确指定各端口属于哪个VLAN的设定方法,如下图所示,静态VLAN是网络中最常用的VLAN方式
动态VLAN
动态VLAN则是根据每个端口所连的计算机,随时改变端口所属的VLAN。这就可以避免上述的更改设定之类的操作。动态VLAN可以大致分为3类:
(1)基于MAC地址的VLAN(MAC Based VLAN)
(2)基于子网的VLAN(Subnet Based VLAN)
(3)基于用户的VLAN(User Based VLAN)
的功能特性
- 1个VLAN对应一个网段
- 1个交换机可以创建多个VLAN,一个VLA可以跨越多个交换机
- 不同VLAN间数据隔离,同一个IP网络的不同VLAN不能访问
- 一个VLAN可以包含一个或多个接口
- 交换机通过VLANID来判断端口属于哪个VLAN
的使用场景
在一台未设置任何VLAN的二层交换机上,任何广播帧都会被转发给除接收端口外的所有其他端口(Flooding)。例如,计算机A发送广播信息后,会被转发给端口2、3、4
这样如果广播包太多会造成广播风暴,消耗交换机的性能,影响到网络的使用。
如果在交换机上生成红、蓝两个VLAN;同时设置端口1、2属于红色VLAN、端口3、4属于蓝色VLAN。再从A发出广播帧的话,交换机就只会把它转发给同属于一个VLAN的其他端口——也就是同属于红色VLAN的端口2,不会再转发给属于蓝色VLAN的端口。
同样,C发送广播信息时,只会被转发给其他属于蓝色VLAN的端口,不会被转发给属于红色VLAN的端口
就这样,VLAN通过限制广播帧转发的范围分割了广播域。上图中为了便于说明,以红、蓝两色识别不同的VLAN,在实际使用中则是用“VLAN ID”来区分的。
TRUNK相关知识
什么是TRUNK
VLAN的中继端口叫做trunk。trunk技术用在交换机之间互连,使不同VLAN通过共享链路与其它交换机中的相同VLAN通信。交换机之间互连的端口就称为trunk端口
交换机中的二层接口类型
接口:承载正常的以太网帧,一般与PC直接相连,属于一个特定的VLAN,VLAN接口只允许指定的一个VLAN的数据包通过
TRUNK接口:承载被标识的以太网帧,一般用来连接设备,属于所有VLAN,TRUNK接口可以允许指定的多个VLAN数据包通过
TRUNK的使用场景
如下图所示,两个楼层的交换机都有红色和蓝色两个VLAN,如果需要设置跨越多台交换机的VLAN时又如何实现呢?
也许时此你会想到,可以每个交换机再配置一个红色和蓝色VLAN直接连接
但是,这个办法从扩展性和管理效率来看都不好。例如,在现有网络基础上再新建VLAN时,为了让这个VLAN能够互通,就需要在交换机间连接新的网线。建筑物楼层间的纵向布线是比较麻烦的,一般不能由基层管理人员随意进行。并且,VLAN越多,楼层间(严格地说是交换机间)互联所需的端口也越来越多,交换机端口的利用效率低是对资源的一种浪费、也限制了网络的扩展
为了避免这种低效率的连接方式,人们想办法让交换机间互联的网线集中到一根上,这时使用的就是汇聚链接(Trunk Link)。
VLAN数据包的封装
IEEE 802.1Q,俗称“Dot One Q”,是经过IEEE认证的对数据帧附加VLAN识别信息的协议。
IEEE 802.1Q所附加的VLAN识别信息,位于数据帧中“发送源MAC地址”与“类别域”(Type Field)之间。具体内容为2字节的TPID(Tag Protocol IDentifier)和2字节的TCI(Tag Control Information),共计4字节。
在数据帧中添加了4字节的内容,那么CRC值自然也会有所变化。这时数据帧上的CRC是插入TPID、TCI后,对包括它们在内的整个数据帧重新计算后所得的值。
正常的以太网数据帧
802.1Q封装后的数据帧
801.1Q数据包
ISL(Inter Switch Link)
ISL,是Cisco产品支持的一种与IEEE 802.1Q类似的、用于在汇聚链路上附加VLAN信息的协议。ISL是Cisco独有的协议,因此只能用于Cisco网络设备之间的互联。
使用ISL后,每个数据帧头部都会被附加26字节的“ISL包头(ISL Header)”,并且在帧尾带上通过对包括ISL包头在内的整个数据帧进行计算后得到的4字节CRC值。换而言之,就是总共增加了30字节的信息。
在使用ISL的环境下,当数据帧离开汇聚链路时,只要简单地去除ISL包头和新CRC就可以了。由于原先的数据帧及其CRC都被完整保留,因此无需重新计算CRC。
正常的以太网数据帧
ISL封装后的数据帧
注:TRUNK对所有Native VLAN的数据不会进行封装也就是不打标签,默认交换机及路由器Native VLAN为VLAN1,即默认对VLAN1的数据不打标签,可通过配置更改。
如深信服AF设备配置口为TRUNK,界面可以直接更改Natvie VLAN
TRUNK数据包封装过程
案例分析一:
如下图所示,VLAN2的PC_A要访问PC_C数据封装如下(假设PC和交换机都已获取到相应的ARP表)
- PC_A将数据封装后,发送到交换机上,此些源IP为PC_A,目标IP为PC_C,源MAC为PC-A的MAC,目标MAC为PC_C的MAC。
- 交换机1收到数据包后,查询ARP表发现需要从TRUNK发送出去,于是打上VLAN2的标签通过TRUNK发送到交换机2
- 交换机2接收到数据包后,发现打了VLAN2的标签,且自身也有VLAN2,于是拆掉VLAN2的标签将数据从3口发送到PC-C上
- 同理PC_C回复PC_A的数据也进行同样的封装。
案例分析二:
如下图所示,
AP为本地转发,即数据直接从AP发到交换机,不会经过WAC设备
SSID:sangfor属于VLAN2,是指手机连接到SSID Sangfor上后属于VLAN2的用户。
按如下拓扑及配置会发现手机连接上无线后获取不到IP地址,是什么原因?
原因分析:
手机连接上SSID后属于VLAN2,经过AP的TRUNK发送的时候会打上VLAN2的标签,发送到交换机后,因为和AP直接的接口为Access口,Access只能接收VLAN2的不打标签的数据,所以会导致数据通信不了。
解决方法:
将AP所连接的交换机的口改成TRUNK,让此接口能处理打上VLAN2标签的数据,更更后数据流分析如下:
- DHCP请求数据包经过AP的TRUNK发送出来后,打会VLAN2的标签。
- 交换机收到此数据后,查询标签属于VLAN2,且自身也有VLAN2的接口,于是拆掉VLAN2的标答,通过Access VLAN2口发送到DHCP Server,进行请求地址
- 同理DHCP server的回应数据包也经过相应的封装最后到达手机上。
VLAN间路由
VLAN间路由使用场景
通过前面的知识我们已经知道两台计算机即使连接在同一台交换机上,只要所属的VLAN不同就无法直接通信。那如果要实现不同VLAN间的计算机通信,要怎么在实现呢?如下图,红色VLAN1的用户要访问蓝色VLAN2的用户要怎么来实现呢?
如上这种情况可以使用三层交换机VLAN间路由来实现,但提前提条件交换机必须是三层交换机,二层交换机实现不了。
SVI接口
讲到三层交换机VLAN间路由必须要先讲一下VLAN接口,VLAN接口是三层交换机则是在内部生成虚拟接口,是用于各VLAN收发数据的接口,简称SVI接口(Switched Virtual Interface)。
深信服设备可以支持配置VLAN接口,如下为AF设备的VLAN接口添加方式
为VLAN1配置SVI接口
为VLAN2配置SVI接口
配置完后,后台可以看到会生成相应的路由
三层交换机VLAN间路由
不同VLAN之间的用户互访可以使用三层交换机,启用路由功能,每个VLAN配置一个SVI接口,实现不同VLAN数据的通信。如下图,PC_A要访问 PC_C数据是怎么样的一个过程呢?
PC_A访问PC_C的步骤如下:(假如所有设备都已获取ARP表)
- PC_A判断目标PC_C和自己属于不同网段将数据包发送给自己的网关(SVI接口)处理,此时数据包如下:
源IP | 目标IP | 源MAC | MAC | 标签 |
192.168.1.1 | 192.168.2.1 | MAC_A | MAC_E | 无 |
- 交换机收到数据包后,经由内部汇聚链接,将数据包打上VLAN2的标签,交给路由模块处理,此时数据包如下:
源IP | 目标IP | 源MAC | 目标MAC | 标签 |
192.168.1.1 | 192.168.2.1 | MAC_A | MAC_E | VLAN2 |
- 路由模块收到数据包后,读取VLAN标签信息,属于红色VLAN2,由交收SVI2接口进行处理,查询路由发现2.0网段为直连网段,且对应蓝色VLAN3,接下来会由SVI3接口进行处理转发给交换模块,此时数据包如下
源IP | 目标IP | 源MAC | MAC | 标签 |
192.168.1.1 | 192.168.2.1 | MAC_F | MAC_C | VLAN3 |
- 交换模块的聚会链接收到此数据包后,查询VLAN标签属于VLAN3,且自己也存在此VLAN,则去掉VLAN标签,通过查找ARP表得知从端口3发送出去,此时数据包如下
源IP | 目标IP | 源MAC | MAC | 标签 |
192.168.1.1 | 192.168.2.1 | MAC_F | MAC_C | 无 |