【精品网络干货】二层VLAN隔离技术详解_第1张图片


VLAN 基本概念


  1. VLAN 的帧格式

传统的以太网数据帧在目的 MAC 地址和源 MAC 地址之后封装的是上层协议的类型字段


传统的以太网数据帧格式


v2-95245652e9d0a7c2cb879a050ed2d204_720w.jpg



802.1q 帧格式


【精品网络干货】二层VLAN隔离技术详解_第2张图片




【精品网络干货】二层VLAN隔离技术详解_第3张图片



每台支持 802.1q 协议的交换机发送的数据包都会包含 VLAN ID,以指明交换机属于哪一个 VLAN。
因此,在一个 VLAN 交换网络中,以太网帧有以下两种形式:
有标记帧(tagged frame):加入了 4 字节 802.1q Tag 的帧
无标记帧(untagged frame):原始的、未加入 4 字节 802.1q Tag 的帧




  1. 链路类型


VLAN 中有以下两种链路类型:
接入链路(Access Link):用于连接用户主机和交换机的链路。

通常情况下,主机并不需要知道自己属于哪个 VLAN,主机硬件通常也不能识别带有 VLAN 标记的帧。因此,主机发送和接收的帧都是 untagged 帧。


干道链路(Trunk Link):用于交换机间的互连或交换机与路由器之间的连接。

干道链路可以承载多个不同 VLAN 数据,数据帧在干道链路传输时,干道链路的两端设备需要能够识别数据帧属于哪个 VLAN,所以在干道链路上传输的帧都是 Tagged 帧。



【精品网络干货】二层VLAN隔离技术详解_第4张图片


说明:
对于主机来说,它不需要知道 VLAN 的存在。主机发出的是 untagged 报文。
交换设备接收到报文后,根据配置规则(如接口信息)判断出报文所属的 VLAN 后,再进行处理。
如果报文需要通过另一台交换机转发,则该报文必须通过干道链路透传到对端交换设备上。

为了保证其它交换设备能够正确处理报文中的 VLAN 信息,在干道链路上传输的报文必须都打上了 VLAN 标记。
当交换设备最终确定报文出接口后,将报文发送给主机前,需要将 VLAN 标记从帧中删除,这样主机接收到的报文都是不带 VLAN 标记的以太网帧。


所以,一般情况下,干道链路上传输的都是 tagged 帧,接入链路上传送到的都是 untagged 帧。这样处理的好处是:网络中配置的 VLAN 信息可以被所有交换设备正确处理,而主机不需要了解VLAN 信息。

3、接口类型

在 802.1Q 中定义 VLAN 帧后,设备的有些接口可以识别 VLAN 帧,有些接口则不能识别 VLAN帧。根据对 VLAN 帧的识别情况,将接口分为 4 类:
Access 接口:

Access 接口是交换机上用来连接用户主机的接口,它只能连接接入链路。

仅仅允许唯一的 VLAN ID 通过本接口,这个 VLAN ID 与接口的缺省 VLAN ID 相同, Access 接口发往对端设备的以太网帧永远是不带标签的帧。


Trunk 接口

Trunk 接口是交换机上用来和其他交换机连接的接口,它只能连接干道链路,允许多个 VLAN 的帧(带 Tag 标记)通过。


Hybrid 接口

Hybrid 接口是交换机上既可以连接用户主机,又可以连接其他交换机的接口

Hybrid 接口既可以连接接入链路又可以连接干道链路。Hybrid 接口允许多个 VLAN 的帧通过,并可以在出接口方向将某些 VLAN 帧的 Tag 剥掉。


QinQ 接口
QinQ(802.1Q-in-802.1Q)接口是使用 QinQ 协议的接口。 QinQ 接口可以给帧加上双重 Tag,即在原来 Tag 的基础上,给帧加上一个新的 Tag,从而可以支持多达 4094× 4094 个 VLAN(不同的产品支持不同的规格),满足网络对 VLAN 数量的需求。
QinQ 帧的格式如图所示。外层的标签通常被称作公网 Tag,用来存放公网的 VLAN ID。内层标签通常被称作私网 Tag,用来存放私网的 VLAN ID。


v2-b039b1c10336761c019b7aeabd6e6106_720w.jpg



4、缺省 VLAN

每种类型的接口都可以配置一个缺省 VLAN,对应的 VLAN ID 为 PVID(Port Default VLAN ID)。接口类型不同,缺省 VLAN 的含义也有所不同。



VLAN 的划分


可以基于接口、 MAC 地址、子网、网络层协议、匹配策略方式来划分 VLAN。

【精品网络干货】二层VLAN隔离技术详解_第5张图片


划分 VLAN 的实现流程图



【精品网络干货】二层VLAN隔离技术详解_第6张图片



VLAN 通信原理

【精品网络干货】二层VLAN隔离技术详解_第7张图片

  1. VLAN 基本通信原理


为了提高处理效率,交换机内部的数据帧一律都带有 VLAN Tag,以统一方式处理。

当一个数据帧进入交换机接口时,如果没有带 VLAN Tag,且该接口上配置了 PVID(Port Default VLAN ID),那么,该数据帧就会被标记上接口的 PVID。如果数据帧已经带有 VLAN Tag,那么,即使接口已经配置了 PVID,交换机不会再给数据帧标记 VLAN Tag。


由于接口类型不同,交换机对帧的处理过程也不同。下面根据不同的接口类型分别介绍。


【精品网络干货】二层VLAN隔离技术详解_第8张图片


  1. VLAN 内跨越交换机通信原理


有时属于同一个 VLAN 的用户主机被连接在不同的交换机上。当 VLAN 跨越交换机时,就需要交换机间的接口能够同时识别和发送跨越交换机的 VLAN 报文。这时,需要用到 Trunk Link 技术。


Trunk Link 有两个作用:
中继作用:把 VLAN 报文透传到互联的交换机。
干线作用:一条 Trunk Link 上可以传输多个 VLAN 的报文。



【精品网络干货】二层VLAN隔离技术详解_第9张图片



如图所示的网络中,为了让 DeviceA 和 DeviceB 之间的链路既支持 VLAN2 内的用户通讯又支持 VLAN3 内的用户通讯,需要配置连接接口同时加入两个 VLAN。即应配置 DeviceA 的以太网接口 Port2 和 DeviceB 的以太网接口 Port1 同时加入 VLAN2 和 VLAN3。


当用户主机 Host A 发送数据给用户主机 Host B 时,数据帧的发送过程如下:
1. 数据帧首先到达 DeviceA 的接口 Port4。

2. 接口 Port4 给数据帧加上 Tag, Tag 的 VID 字段填入该接口所属的 VLAN 的编号 2。
3. DeviceA查询自己的MAC地址表中是否存在目的地址为DeviceB的MAC地址的转发表项。
如果存在, DeviceA 将数据帧转发给接口 Port2。
如果不存在, DeviceA 会将数据帧发送到本设备上除 port4 接口外的所有属于 VLAN2的接口。
4. 接口 Port2 将帧转发到 DeviceB 上。
5. DeviceB 收到数据帧后,会查询自己的 MAC 地址表中是否存在目的地址为 Host B 的 MAC地址的转发表项。
如果存在, DeviceB 会将数据帧发送给出接口 Port3。
如果不存在, DeviceB 会将数据帧发送到本设备上除 port1 接口外的所有属于 VLAN2的接口。
6. 接口 Port3 将数据帧发送给主机 Host B。




  1. VLAN 间通信原理


划分 VLAN 后,不同 VLAN 之间不能直接通信。如果要实现 VLAN 间通信,可以采取以下方案:


方式一:子接口
如图所示, DeviceA 为支持配置子接口的三层设备, DeviceB 为二层交换设备。 LAN 通过DeviceB 的以太网接口(交换式以太网接口)与 DeviceA 的以太网接口(路由式以太网接口)相连。用户主机被划分到两个 VLAN: VLAN2 和 VLAN3。可通过如下配置实现 VLAN 间互通。


在 DeviceA 的以太网接口(与 DeviceB 相连的以太网接口)上创建 2 个子接口 Port1.1和 Port2.1,并配置 802.1Q 封装与 VLAN2 和 VLAN3 分别对应。
配置子接口的 IP 地址,保证两个子接口对应的 IP 地址路由可通。
将 DeviceB 与 DeviceA 相连的以太网接口类型配置为 Trunk 或 Hybrid 类型,允许 VLAN2和 VLAN3 的帧通过。

将用户设备的缺省网关设置为所属 VLAN 对应子接口的 IP 地址



【精品网络干货】二层VLAN隔离技术详解_第10张图片



主机 A 和 C 的通信过程如下:
1. 主机 A 将主机 C 的 IP 地址和自己所在网段进行比较,发现主机 C 和自己不在同一个子网。
2. 主机 A 发送 ARP 请求给自己的网关 DeviceA,请求网关的 MAC 地址。
3. DeviceA 收到该 ARP 请求后,返回 ARP 应答报文,报文中源 MAC 地址为 VLAN2 对应子接口的 MAC 地址。
4. 主机 A 学习到网关的 MAC 地址。
5. 主机 A向网关发送目的 MAC为子接口 MAC地址、目的 IP 为主机 C的 IP 地址的报文。
6. DeviceA 收到该报文后进行三层转发,发现主机 C 的 IP 地址为直连路由,报文将通过VLAN3 关联的子接口进行转发。
7. DeviceA 作为 VLAN3 内主机的网关,向 VLAN3 内发送一个 ARP 广播,请求主机 C的 MAC 地址。
8. 主机 C 收到网关发送的 ARP 广播后,对此请求进行 ARP 应答。
9. 网关收到主机 C 的应答后,就把主机 A 的报文发送给主机 C。主机 A 之后要发给 C 的报文都先发送给网关,由网关做三层转发。



方式二:VLANIF 接口

三层交换技术是将路由技术与交换技术合二为一的技术,在交换机内部实现了路由,提高了网络的整体性能。三层交换机通过路由表传输第一个数据流后,会产生一个 MAC 地址与 IP地址的映射表。当同样的数据流再次通过时,将根据此表直接从二层通过而不是通过三层,从而消除了路由器进行路由选择而造成的网络延迟,提高了数据包转发效率。

为了保证第一次数据流通过路由表正常转发,路由表中必须有正确的路由表项。因此必须在三层交换机上部署三层接口并部署路由协议,实现三层路由可达。 VLANIF 接口由此而产生。VLANIF 接口是三层逻辑接口,可以部署在三层交换机上,也可以部署在路由器上。
在图 3 所示的网络中,交换机上划分了 2 个 VLAN: VLAN2 和 VLAN3。可通过如下配置实现 VLAN 间互通。

在 Device 上创建 2 个 VLANIF 接口并配置 VLANIF 接口的 IP 地址,保证两个 VLANIF接口对应的 IP 地址路由可通。

将用户设备的缺省网关设置为所属 VLAN 对应 VLANIF 接口的 IP 地址。




【精品网络干货】二层VLAN隔离技术详解_第11张图片



主机 A 和 C 的通信过程如下:
1. 主机 A 将主机 C 的 IP 地址和自己所在网段进行比较,发现主机 C 和自己不在同一个子网。
2. 主机 A 发送 ARP 请求给自己的网关 Device,请求网关的 MAC 地址。
3 Device 收到该 ARP 请求后,返回 ARP 应答报文,报文中源 MAC 地址为 VLANIF2 的MAC 地址。
4. 主机 A 学习到网关的 MAC 地址。
5. 主机 A 向网关发送目的 MAC 为 VLANIF 接口 MAC 地址、目的 IP 为主机 C 的 IP 地
址的报文。
6. Device 收到该报文后进行三层转发,发现主机 C 的 IP 地址为直连路由,报文将通过
VLANIF3 接口进行转发。
7. Device 作为 VLAN3 内主机的网关,向 VLAN3 内发送一个 ARP 广播,请求主机 C 的
MAC 地址。
8. 主机 C 收到网关发送的 ARP 广播后,对此请求进行 ARP 应答。
9. 网关收到主机 C 的应答后,就把主机 A 的报文发送给主机 C。主机 A 之后要发给 C 的
报文都先发送给网关,由网关做三层转发。