目录
- VLAN的链路类型
- VLAN的创建方式
- 接口类型
- 各接口处理数据帧的方式
- VLAN是如何跨交换机通信的
- 场景假设
VLAN即是虚拟局域网,作用是将一个物理的LAN逻辑划分成多个广播域的通信技术。同一VLAN下的主机可以互相通信,不通VLAN下的主机不能互通。
VLAN的链路类型
接入链路(access link):用于连接主机与交换机的链路。
干道链路(trunk link):用于交换机之间的连接。
VLAN的创建方式
基于接口
基于mac地址
基于子网划分
基于协议划分
基于匹配策略(mac地址、ip地址、接口)
接口类型
Access接口:交换机上用于连接主机的接口。
Trunk接口:交换机之间连接的接口。
Hybrid接口:交换机上既可以连接其他交换机又可以连接主机的接口。
QinQ接口:使用了QinQ协议的接口。
各接口处理数据帧的方式
Access 接口
接收数据帧:当 Access 接口接收到一个数据帧时,首先会检查该数据帧是否携带 VLAN 标签。如果数据帧没有携带 VLAN 标签,Access 接口会为其打上该接口所属 VLAN 的标签(一个 Access 接口只能属于一个 VLAN)。如果数据帧携带了 VLAN 标签,且标签与接口所属 VLAN 一致,则接收该数据帧;若不一致,则丢弃该数据帧。
发送数据帧:Access 接口在发送数据帧时,会剥离数据帧的 VLAN 标签,然后将数据帧发送出去。这是因为连接在 Access 接口上的主机通常不支持 VLAN 标签,所以需要去除标签后主机才能识别数据帧。
Trunk 接口
接收数据帧:当 Trunk 接口接收到数据帧时,如果数据帧没有携带 VLAN 标签,Trunk 接口会根据本接口的 PVID(Port VLAN ID,端口 VLAN ID)为其打上相应的 VLAN 标签。如果数据帧携带了 VLAN 标签,则直接接收,并且检查该 VLAN 标签是否在 Trunk 接口允许通过的 VLAN 列表中。如果在允许列表中,则正常处理;如果不在,则丢弃该数据帧。
发送数据帧:Trunk 接口在发送数据帧时,会检查数据帧的 VLAN 标签。如果数据帧的 VLAN ID 与 Trunk 接口的 PVID 相同,且该 VLAN 在 Trunk 接口的允许通过列表中,则剥离 VLAN 标签后发送数据帧。如果数据帧的 VLAN ID 与 PVID 不同,且在允许通过列表中,则带着 VLAN 标签发送数据帧。这样,Trunk 接口可以在多个交换机之间传递多个 VLAN 的数据帧,实现 VLAN 的跨交换机通信。
Hybrid 接口
接收数据帧:Hybrid 接口接收数据帧的处理方式与 Trunk 接口类似。当接收到无 VLAN 标签的数据帧时,会根据接口的 PVID 为其打上 VLAN 标签。当接收到带 VLAN 标签的数据帧时,会检查该 VLAN 标签是否在接口允许通过的 VLAN 列表中。如果在,则接收;否则,丢弃。
发送数据帧:Hybrid 接口在发送数据帧时,具有更高的灵活性。它可以根据配置决定对某些 VLAN 的数据帧剥离 VLAN 标签发送,而对另一些 VLAN 的数据帧带着 VLAN 标签发送。这种特性使得 Hybrid 接口既可以连接需要识别 VLAN 标签的设备(如交换机),又可以连接不支持 VLAN 标签的设备(如主机)。
QinQ 接口
接收数据帧:QinQ 接口接收到数据帧时,会在原有数据帧的 802.1Q VLAN 标签基础上再添加一层新的 VLAN 标签,即外标签。原有标签称为内标签,新添加的标签用于标识外层网络的 VLAN。这样,通过双层 VLAN 标签,可以实现不同用户或不同业务的隔离,扩大了 VLAN 的数量范围。
发送数据帧:QinQ 接口发送数据帧时,会将带有双层 VLAN 标签的数据帧发送出去。在数据帧到达对端 QinQ 接口后,对端接口会根据配置对双层标签进行相应处理,可能是剥离外层标签,仅留下内层标签继续转发,也可能根据具体网络需求进行其他操作。
VLAN是如何跨交换机通信的
VLAN的基本概念
VLAN的基本目的是通过将网络中的设备分组,即使它们不在同一个物理交换机上,也能在逻辑上处于同一个广播域。这种方式可以提高网络的效率和安全性。
每个VLAN都有一个唯一的标识符(VLAN ID),通常范围是1到4095,用于区分不同的VLAN。
VLAN跨交换机通信的基本原理
VLAN跨交换机通信本质上是通过VLAN标记和三层路由来实现的。具体步骤如下:
1、交换机间的VLAN标记
当设备(比如PC)发送数据包时,交换机会根据数据包中的VLAN信息决定是否添加VLAN标签(Tag)。这项操作是在数据链路层进行的,使用的是IEEE 802.1Q标准,也就是通常所说的VLAN Tagging。
802.1Q标准定义了在以太网帧中插入一个4字节的标签字段,用于标识数据包所属的VLAN。这个标签会被插入到以太网帧的源MAC地址和EtherType字段之间。
具体来说,VLAN标签包括以下内容:
TPID (Tag Protocol Identifier):指定为0x8100,标识该帧为VLAN帧。
TCI (Tag Control Information):包含VLAN ID、优先级等信息。
当数据包从一个交换机传输到另一个交换机时,VLAN标签将被保留,直到数据包到达目标交换机。这样,即使交换机之间是通过普通的物理链路连接的,交换机仍然能识别数据包属于哪个VLAN。
2、交换机间的Trunk链路
为了保证VLAN在不同交换机之间的传输,交换机之间的连接必须配置为Trunk链路。Trunk链路允许传输多个VLAN的数据流,而不仅仅是单一VLAN的流量。通常情况下,Trunk链路会使用802.1Q协议对数据包进行VLAN标记。
Trunk端口:通常是连接两个交换机的端口,这些端口配置为允许通过多个VLAN的数据。Trunk链路上的所有数据包都会携带VLAN标签,交换机会根据标签来判断数据包的归属VLAN。
Access端口:与终端设备(如计算机、打印机等)连接的端口,通常配置为只允许一个VLAN的数据流。
3、跨交换机VLAN的路由与转发
当数据包从一个VLAN跨交换机到达另一个VLAN时,二层交换机无法直接转发不同VLAN的数据,因为它们属于不同的广播域。为了实现跨VLAN通信,需要借助三层设备,通常是三层交换机或路由器。
三层交换机:这类设备不仅具备二层交换功能,还具备路由功能。在三层交换机上,VLAN之间的通信是通过**SVI(Switched Virtual Interface)**来实现的。每个VLAN都有一个虚拟接口(SVI),这些接口在交换机上实现路由功能,能够在不同VLAN之间转发数据。
例如,假设有两个VLAN:VLAN 10 和 VLAN 20,数据包需要从VLAN 10到达VLAN 20。三层交换机首先根据VLAN标签找到对应的SVI(如VLAN 10的SVI和VLAN 20的SVI),然后根据路由表将数据包从VLAN 10转发到VLAN 20。
路由器:如果没有三层交换机,那么VLAN间的通信需要通过路由器来完成。路由器的每个物理接口连接到不同的VLAN,通过子接口(sub-interface)来实现VLAN间的路由。每个子接口都有一个VLAN ID和一个IP地址,路由器通过不同子接口之间的路由协议实现跨VLAN通信。
4、VLAN间的广播与路由
当一个VLAN中的设备向另一个VLAN发送广播数据时,这时数据包需要通过三层设备(如三层交换机或路由器)来转发。广播数据包会被路由设备处理,然后再按照目标VLAN转发。
总结:
VLAN标签:通过802.1Q协议在交换机之间传递VLAN信息。
Trunk链路:交换机之间的物理连接支持多VLAN的数据流。
三层设备:VLAN间通信需要通过三层设备进行路由和转发,通常是三层交换机或路由器。
通过这些机制,VLAN能够实现跨交换机的有效通信,同时保持各个VLAN的独立性与隔离性。
场景假设
假设有一个办公室网络,包含两台交换机,分别叫做交换机A和交换机B,以及一些设备。我们要实现的是两个不同VLAN的设备之间的通信。
网络拓扑:
交换机A:连接有VLAN 10 和 VLAN 20 的设备
VLAN 10:PC1、PC2
VLAN 20:PC3
交换机B:同样连接有VLAN 10 和 VLAN 20 的设备。
VLAN 10:PC4
VLAN 20:PC5
交换机A和交换机B之间的连接是Trunk链路,并且交换机A和交换机B之间的通信通过VLAN 10和VLAN 20进行隔离。
详细步骤解析:
1、设备连接与VLAN配置
在交换机A上,PC1 和 PC2 分别连接到 Vlan 10 的端口,PC3 连接到 Vlan 20 的端口。
在交换机B上,PC4 连接到 Vlan 10 的端口,PC5 连接到 Vlan 20 的端口。
假设想要让VLAN 10的PC1与VLAN 20的PC5通信,即PC1和PC5进行跨交换机通信。
2、Trunk链路的配置
交换机A和交换机B之间的连接需要配置为Trunk端口,使得它们能够在同一物理链路上传输多个VLAN的数据流。
例如,交换机A的端口 1和交换机B的端口 1连接,这两个端口都需要配置为Trunk端口,支持VLAN 10和VLAN 20。
这两个Trunk端口之间的链路会携带802.1Q VLAN标签,以确保交换机能够区分不同VLAN的数据。
3、数据包传输与VLAN标记
假设PC1向PC5发送数据包:
PC1属于VLAN 10,它会将数据包发送到交换机A。
交换机A收到数据包后,看到数据包属于VLAN 10,检查到目的地址是VLAN 20的PC5。
由于PC5在交换机B的VLAN 20中,交换机A会通过Trunk链路将数据包发送到交换机B。
数据包被添加VLAN 10的标签(通过802.1Q),然后通过Trunk链路发送到交换机B。
4、交换机B的处理
交换机B收到带有VLAN 10标签的数据包后,知道该数据包应该转发到VLAN 10的端口。它会根据VLAN标签,将数据包转发到连接PC4的端口。
但是,数据包的目标地址是PC5(在VLAN 20中),所以交换机B会查找VLAN 20的路由信息并将数据包转发给PC5。
5、 VLAN间通信的路由
如果交换机A和交换机B之间需要进行VLAN间通信,例如VLAN 10和VLAN 20之间的路由,那么通常会通过三层交换机或路由器来完成。
假设在交换机A和交换机B之间有一个三层交换机或路由器来处理VLAN间的路由:
当PC1发送到PC5的广播或数据包需要跨VLAN时,三层交换机会根据配置的SVI(Switched Virtual Interface)进行路由。
三层交换机会将VLAN 10和VLAN 20的数据包路由到正确的目的VLAN,最终让数据包能够顺利到达PC5。
6、 跨交换机VLAN通信的总结
在这个例子中,VLAN 10和VLAN 20的设备通过交换机A和交换机B实现了通信。
Trunk链路和VLAN标签保证了VLAN信息在不同交换机之间得以传递。
如果没有三层交换机或者路由器,VLAN 10和VLAN 20之间的设备就无法通信,因为它们属于不同的广播域。