概述

网络虚拟化

计算机网络是一门需要上手去实验才能够理解的知识,而进行计算机网络实验则需要设备:计算机、网线、交换机、路由器等,但是,得益于 Linux 操作系统内核及其周边软件生态发达的网络虚拟化功能,我们不用费功夫去弄这些实验材料也可以做网络实验。我们可以用纯软件的方式创建虚拟机、虚拟交换机并且配置其中的转发规则、IP 地址、VLAN 等,虚拟机和虚拟网络设备即使不是真实存在的,但功能也足够丰富用来做实验了。在本文中,我们演示在 macOS 操作系统下,用 multipass 命令行工具创建几台虚拟机,实现跨 VLAN 之间的通信。

VLAN

交换机、广播域与广播风暴

我们都知道交换机通常指的是二层交换机,交换机的工作主要就是对 Ethernet Frame 做转发,一台交换机通常有固定数量的网络接口,每个网络接口可以接网线,假如说它有 10 个,那么网络接口可以被依次标号为 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 当比如端口 2 收到一个 Ethernet Frame,该 Ethernet Frame 头部 dst 字段的值为 52:54:00:c1:b5:dd, 那么交换机就会在 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 这 10 个端口中找到 52:54:00:c1:b5:dd 这个 MAC 地址对应的端口, 然后把 Ethernet Frame 转发过去。

这里说的是单播的情形,即 Ethernet Frame 的发送/接受模式是一对一的情形。

但是 Ethernet Frame 还可以被多播(广播),具体来说,假如说现在一个 Ethernet Frame 来到了端口 4, 交换机看到它的 dst 字段的值是 ff:ff:ff:ff:ff:ff, 那么就据此认定它是一个广播帧,然后把这个广播帧发送给除收到这个帧以外的每一个端口, 也就是: 1, 2, 3, 5, 6, 7, 8, 9, 10 这 9 个端口.

一次广播帧会被发送到的端口构成的集合称为是一个广播域,广播域就是能够收到广播帧的端口的集合。

随着接入交换机的计算机设备的数量的增多,广播域就越来越大,广播的发生也越来越频繁,计算机设备基本上“动不动就广播”,比如说计算机设备会经常广播 ARP 帧。

如果一个广播域中每时每刻都充斥着到处发送的广播帧,我们就说该广播域出现了广播风暴,或者直接说出现了广播风暴。

VLAN 技术能够在一定程度上解决/缓解广播风暴问题。

虚拟局域网

VLAN 的全称是 Virtual LAN 或者 Virtual Local Area Network, VLAN 能够把一个广播域切分成若干个互相隔离的逻辑上的广播域,比如说假设一台交换机现在有 A, B, C, D 四台计算机与它相连,通过恰当地配置 VLAN, 我们可以将 A, B, C, D 这个大广播域切分为两个相对较小的广播域比如说 A、B 和 C、D,VLAN 切分出的逻辑上的广播域用范围是 2 到 4095 的整数来唯一标识,比如说我们可以将 A、B 这个逻辑广播域用 VLAN 2 表示,而 C、D 这个逻辑广播域就用 VLAN 3 表示,具体用 VLAN 几表示都是可配的。

这时,假如说机器 A 往该交换机发送了一个广播帧,那么由于 C、D 和 A 不是在一个广播域,所以 C、D 收不到这个广播帧,只有 B 能够收到 A 发出的广播帧,因为 B 和 A 是在同一个广播域(都在 VLAN 2)。

通常来说,交换机如果不做任何配置,默认是不会启用 VLAN 功能的,也不会自作主张地将广播域进行切分,这就导致了:如果我们有 S1、S2 两台交换机,S1 交换机接着 A、B、C、D 四台计算机,S2 交换机接着 E、F 两台计算机,然后再假设 S1 和 S2 用一条网线相连,那么 A、B、C、D、E、F 这六台计算机实际上是在同一个广播域的!稍微推广一下我们就知道广播域随着业务的扩展,随着接入交换机的设备的增多,会随时间快速膨胀,VLAN 提供了灵活的网络划分功能(划分广播域),所以即使短时间内需要将多台设备接入到网络中,也可以通过合理配置 VLAN 来一定程度上规避或者缓解广播风暴问题。

实验目的

我们通过在虚机上进行操作进行验证:

  1. 验证不同 VLAN 的计算机即使是接入在同一台交换机也是不可通信的;