虚拟局域网 VLAN
技术是在交换机上实现的,需要交换机能够实现以下两大功能
- 能够处理带有
VLAN
标记的帧:IEEE 802.1Q
帧 - 交换机的各端口支持不同的端口类型(帧的处理方式有所不同)
1、IEEE 802.1Q 帧
IEEE 802.1Q
帧(也称 Dot One Q 帧)对以太网的 MAC
帧格式进行了扩展,插入了
4
4
4 字节的 VLAN
标记。
- 以太网版本
2
2
2 的
MAC
帧格式
- 插入
VLAN
标记的802.1Q
帧格式
VLAN
标记的最后
12
12
12 个比特称为 VLAN
标识符 VID
,它唯一的标志了以太网属于哪一个 VLAN
VID
的取值范围为 0 0 0 ~ 4095 4095 4095 ( 0 0 0 ~ 2 12 − 1 2^{12}-1 212−1)-
0
0
0 和
4095
4095
4095 都不用来表示
VLAN
,因此用于表示VLAN
的VID
的有效取值范围是 1 1 1~ 4094 4094 4094。
注意:
802.1Q
帧是由交换机来处理的,而不是用户主机来处理的。
当交换机收到普通的以太网帧时,会将其插入
4
4
4 字节的 VLAN
标记转变为 802.1Q
帧,简称 “
打标签
\color{red}打标签
打标签”
当交换机转发 802.1Q
帧时,可能会删除其
4
4
4 字节 VLAN
标记转变为普通以太网帧,简称 “
去标签
\color{red}去标签
去标签”
2、交换机的端口类型
交换机的端口类型有以下三种:
-
Access
-
Trunk
-
Hybrid
(思科交换机没有该端口)
交换机各端口的缺省 VLAN ID
-
在思科交换机上称为
Native VLAN
,即本征VLAN
。-
例如:思科交换机在用户未配置
VLAN
时,所有端口都默认属属于VLAN1
即:所有端口的本征
VLAN
都是VLAN1
-
-
在华为交换机上称为
Port VLAN ID
,即端口VLAN ID
,简记为PVID
。
说明:以下均采用华为交换机
注意:
- 交换机的每个端口有且只有一个
PVID
2.1、Access 端口
Access
端口一般用于连接用户计算机
Access
端口只能属于一个VLAN
Access
端口的 PVID
值与端口所属 VLAN
的 ID
相同(默认为
1
1
1)
例如:主机 A
、B
、C
、D
分别连接在交换机的一个端口上
交换机首次上电时,默认配置个端口属于 VLAN1
- 也就是各端口的
PVID
值等于 1 1 1
默认配置各端口的类型为 Access
(A
标识)
2.1.1、接受处理方法
Access
端口接收处理方法
:
- 一般只接受 “未打标签” 的普通以太网
MAC
帧。 - 根据接收帧的端口的
PVID
给帧 “ 打标签 \color{red}打标签 打标签” ,即插入 4 4 4 字节VLAN
标记字段,字段中的VID
取值与端口的PVID
取值相等。
假设主机 A 发送了一个广播帧
该帧从交换机的端口 1 1 1 进入交换机。
由于端口
1
1
1 的类型是 Access
,它会对接收到的 “未打标签” 的普通以太网 MAC
帧 “打标签” 。
- 插入
4
4
4 字节的
VLAN
标记字段
由于端口
1
1
1 的 PVID
值也等于
1
1
1,因此所插入的
4
4
4 字节 VLAN
标记字段中的 VID
的值也等于
1
1
1。
2.1.2、发送处理方法
Access
端口发送处理方法:
- 若帧中的
VID
与端口的PVID
相等,则 “ 去标签 \color{red}去标签 去标签” 并转发该帧 - 否则不转发。
广播帧中的 VID
的取值与端口
2
、
3
、
4
2、3、4
2、3、4 的 PVD
取值都等于
1
1
1
- 因此,交换机会从这三个端口对帧进行 “去标签” 转发
若将主机 A
、B
划归的 VLAN2
,将主机 C
、D
划归到 VLAN3
这样,VLAN2
的广播帧不会传送到 VLAN3
。反之亦然
为了实现这种应用,可以在交换机上创建 VLAN2
和 VLAN3
,然后将交换机的端口
1
1
1 和
2
2
2 划归到 VLAN2
- 因此,端口
1
1
1 和
2
2
2 的
PVID
值等于 2 2 2
将交换机的端口
3
3
3 和
4
4
4 划归到 VLAN3
- 因此,端口
3
3
3 和
4
4
4 的
PVID
值等于 3 3 3
假设主机 A
发送了一个广播帧
该帧从交换机的端口 1 1 1 进入交换机。
由于端口
1
1
1 的类型是 Access
,它会对接收到的 “未打标签” 的普通以太网 MAC
帧 “打标签” 。
- 插入
4
4
4 字节的
VLAN
标记字段
由于端口
1
1
1 的 PVID
值等于
2
2
2,因此所插入的
4
4
4 字节 VLAN
标记字段中的 VID
的值也等于
2
2
2 。
广播帧中的 VID
值与端口
2
2
2 的 PVID
值都等于
2
2
2
- 因此,交换机会从端口 2 2 2 对帧进行 “去标签” 转发。
假设主机 C
发送了一个广播帧
该帧从交换机的端口 3 3 3 进入交换机。
由于端口
3
3
3 的类型是 Access
,它会对接收到的 “未打标签” 的普通以太网 MAC
帧 “打标签” 。
- 插入
4
4
4 字节的
VLAN
标记字段
由于端口
3
3
3 的 PVID
值等于 3,因此所插入的 4 字节 VLAN
标记字段中的 VID
的值也等于
3
3
3 。
广播帧中的 VID
值与端口
4
4
4 的 PVID
值都等于
3
3
3
- 因此,交换机会从端口 4 4 4 对帧进行 “去标签” 转发。
2.2、Trunk 端口
Trunk
端口一般用于交换机之间或交换机与路由器之间的互连
Trunk
端口可以属于多个 VLAN
Trunk
端口可以接受和发送多个VLAN
的帧
用户可以设置 Trunk
端口的 PVID
值。默认情况下, Trunk
端口的 PVID 值为
1
1
1 。
两台交换机互连而成了一个交换式以太网
将主机 A
、B
、E
、F
划归到 VLAN1
,将主机 C
、D
、G
、H
划归到 VLAN2
由于交换机首次上电时默认配置各端口属于 VLAN1
- 其相应的
PVID
值等于 1 1 1,并且端口的类型为Access
因此,我们需要对交换机进行相应的配置才能满足应用需求
- 分别在两个交换机上创建
VLAN2
,并将它们的端口 3 和 4 都划归到VLAN2
,其相应的PVID
值等于 2 2 2 - 而两个交换机的端口
1
1
1 和
2
2
2 保持默认配置即可,也就是属于
VLAN1
,其相应的PVID
值等于 1 1 1
注意:需要将交换机互联的端口
5
5
5 的类型更改为 Trank
类型,其 PVID
值默认
1
1
1 即可
2.2.1、发送处理方法
Trank
端口发送处理方法:
- 对
VID
等于PVID
的帧,“ 去标签 \color{red}去标签 去标签” 再转发 - 对
VID
不等于PVID
的帧, 直接转发 \color{red}直接转发 直接转发
假设主机 A
发送了一个广播帧
该帧从交换机 1 1 1 的端口 1 1 1 进入交换机。
由于端口
1
1
1 的类型是 Access
,它会对接收到的 “未打标签” 的普通以太网 MAC
帧 “打标签” 。
- 插入
4
4
4 字节的
VLAN
标记字段
由于端口
1
1
1 的 PVID
值也等于
1
1
1,因此所插入的
4
4
4 字节 VLAN
标记字段中的 VID
的值也等于
1
1
1 。
该广播帧中的 VID
的取值与端口
2
2
2 的 PVID
值都等于
1
1
1,端口
2
2
2 的类型是 Access
- 因此,交换机 1 1 1 会从端口 2 2 2 对帧进行 “去标签” 转发。
该广播帧中的 VID
的取值与端口
5
5
5 的 PVID
值都等于
1
1
1,端口
5
5
5 的类型是 Trank
- 因此,交换机 1 1 1 会从端口 5 5 5 对帧进行 “去标签” 转发。
很显然,该广播帧会从交换机 2 2 2 的端口 5 5 5 进入交换机 2 2 2
2.2.2、接受处理方法
Trunk
端口接收处理方法:
-
接收 “未打标签” 的帧,根据接收帧的端口的
PVID
给帧 “ 打标签 \color{red}打标签 打标签”即插入 4 4 4 字节
VLAN
标记字段,字段中的VID
取值与端口的PVID
取值相等。 -
接受 “已打标签的帧”
对上述广播帧
交换机
2
2
2 会对接受到的 “未打标签” 的普通以太网 MAC
帧 “打标签” 。
- 也就是插入
4
4
4 字节的
VLAN
标志字段
由于端口
5
5
5 的 PVID
值等于
1
1
1
- 因此,所插入的
4
4
4 字节
VLAN
标记字段中的VID
值也等于 1 1 1
该广播帧中的 VID
值与 端口
1
1
1 和
2
2
2 的 PVID
值都等于
1
1
1,端口
1
1
1 和
2
2
2 的类型都是 Access
- 因此,交换机 2 2 2 会从端口 1 1 1 和 2 2 2对帧进行 “去标签” 转发。
假设主机 C
发送了一个广播帧
该帧从交换机 1 1 1 的端口 3 3 3 进入交换机。
由于端口
3
3
3 的类型是 Access
,它会对接收到的 “未打标签” 的普通以太网 MAC
帧 “打标签” 。
- 插入
4
4
4 字节的
VLAN
标记字段
由于端口
3
3
3 的 PVID
值等于
2
2
2,因此所插入的
4
4
4 字节 VLAN
标记字段中的 VID
的值也等于
2
2
2 。
该广播帧的 VID
取值 与端口
4
4
4 的 PVID
值都等于
2
2
2,端口
4
4
4 的类型是 Access
- 因此,交换机 1 1 1 会从端口 4 4 4 对帧进行 “去标签” 转发。
该广播帧的 VID
的值与端口
5
5
5 的 PVID
值不相等,由于 Trunk
端口对 VID
不等于 PVID
的帧是
直接转发
\color{red}直接转发
直接转发的。
- 因此,交换机 1 1 1 会从端口 5 5 5 对帧直接转发
- 也就是不去掉标签而带着标签直接转发
很显然,该 802.1Q
广播帧会从交换机
2
2
2 的端口
5
5
5 进入交换机
2
2
2
Trank
端口接受已打标签的 802.1Q
帧
该广播帧的 VID
的取值与端口
3
3
3 和
4
4
4 的 PVID
值都等于
2
2
2,端口
3
3
3 和
4
4
4 的类型都是 Access
类型
- 因此,交换机 2 2 2 会从端口 3 3 3 和 4 4 4 对帧进行 “去标签” 转发。
2.3、小总结
在由多个交换机互连而成的交换式以太网中划分 VLAN
时。
-
连接主机的交换机端口应设置为
Access
类型 -
交换机之间互连的端口应设置为
Trank
类型
2.4、习题
解析
2.5、Hybrid 端口
Hybrid
端口既可用于交换机之间或交换机与路由器之间的互连(同 Trunk
端口),也可用于交换机与用户计算机之间的互连(同 Access
端口)
Hybrid
端口可以属于多个 VLAN
(同 Trunk
端口)用户可以设置 Hybrid
端口的 PVID
值。
- 默认情况下
Hybrid
端口的PVID
值为 1 1 1 (同 Trunk 端口)
Hybrid
端口发送处理方法(
与
T
r
u
n
k
端口不同
\color{red}与 Trunk 端口不同
与Trunk端口不同)查看帧的 VID
是否在端口的 “去标签” 列表中;
-
若存在,则“去标签”后再转发;
-
若不存在,则直接转发;
Hybrid
端口接收处理方法(同 Trunk
端口)
-
接收 “未打标签” 的帧,根据接收帧的端口的
PVID
给帧“打标签”即插入 4 4 4 字节 VLAN 标记字段,字段中的
VID
取值与端口的PVID
取值相等。 -
接收 “已打标签的帧” ;
主机 A
给 C
发送数据帧
该帧从交换机的端口
1
1
1 进入交换机,由于端口
1
1
1 的类型是 Hybrid
- 它会对接收到的 “未打标签”的 普通以太网
MAC
帧 “打标签”
由于端口
1
1
1 的 PVID
值等于
10
10
10
- 因此,所插入的
4
4
4 字节
VLAN
标记字段中的VID
的值也等于 10 10 10。
该帧将从端口
3
3
3 转发,由于帧中的 VID
的取值再端口
3
3
3 的去标签列表中
- 因此,该帧会被 “去标签” 转发
这样主机 C
就可以收到主机 A
发送的数据帧
同理,主机 C
给 A
发送数据帧,主机 A
同样可以收到
主机 B
给 C
发送数据帧
同理,主机 C
给 B
发送数据帧,主机 B
同样可以收到
主机 A
给 B
发送数据帧
该帧从交换机的端口
1
1
1 进入交换机,给该帧打标签,其中 VID
取值为
10
10
10
该帧将从端口 2 2 2 转发
由于帧中的 VID
的取值不在端口
2
2
2 的去标签列表中。
- 因此,该帧被直接转发
这样主机 B
就会收到一个带有 VLAN
标记的 802.1Q
帧
- 但是主机
B
可以识别普通以太网MAC
帧,而不能识别802.1Q
帧,只能丢弃该帧
主机 B
给 A
发送数据帧同理