### 3.1什么是VLAN
VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。
每个VLAN是一个广播域,VLAN内的主机间可以直接通信,而VLAN间则不能直接互通。这样,广播报文就被限制在一个VLAN内。
### 3.2VLAN实现的原理
#### 1.VLAN数据库
一般情况,会把接口划分到不同的vlan下。
如果某个接口收到广播报文,则该报文,会发送给本 vlan下的其他成员接口,而不会发送给其他vlan的接口。
#### 2.交换机的MAC地址表
交换机划分了VLAN,MAC地址表会被 VLAN所分割, 也会让不同vlan的用户数据通信被隔离了。
### 3.3VLAN的特点
- 基于逻辑的分组
- 不受物理位置限制
- 在同一VLAN内和真实局域网相同
用途和优点
```
控制不必要的广播报文的扩散
提高网络带宽利用率,减少资源浪费
划分不同的用户组,对组之间的访问进行限制
增加安全性
不受物理位置限制,减少移动和改变的代价
```
### 3.4VLAN的划分
- 基于接口*
- 基于MAC地址
- 基于网络层
- 基于组播
### 3.5VLAN的编码范围
用来表示 vlan 编号的位是 12位,所以 vlan的范围 0 -2^12-1 即 0-4095.
0,4095 不能使用
1 是交换机默认的vlan,就是 vlan1 ,不能被删除
2-4094 为常规的vlan,都可以被用户定义、使用和删除
在华为交换机设备上,可以进行操作的vlan范围是 1-4094
### 3.6VLAN的配置
- 在交换机增加一个vlan
```
# 单独增加一个vlan, 范围是 2-4094 1默认存在
[Huawei]vlan ?
INTEGER<1-4094> VLAN ID
[Huawei]vlan 2 # 在交换机上创建了一个 vlan2
# 批量创建vlan batch
# 批量创建指定的vlan
[Huawei]vlan batch 3 4 5 6
# 创建一个范围的vlan
[Huawei]vlan batch 7 to 20
[Huawei-vlan2] # 可以单独对这个vlan做操作
[Huawei-vlan2]description Market # 给vlan添加相应的描述信息
[Huawei-vlan2]quit # 退出这个vlan的视图 ,quit可以简写为 q
```
- 把接口划分到某个vlan下
```sh
# 将Ethernet0/0/1 添加到vlan2
interface Ethernet0/0/1
port link-type access # 先将接口类型修改成 access
port default vlan 2 # 再把这个接口,添加到相应的vlan
```
- 查看vlan的方式
```
# 查看vlan数据库
[Huawei]display vlan
# 查看端口类型:
# access: 被划分vlan的接口,属性配置为 access了,看一个接口属于哪个vlan,首先看这个接口的
类型是 access,然后看它的pvid是多少,这个接口就在vlan多少。
[Huawei]display port vlan
```
- 在交换机删除一个vlan
```
# 单独删除某个vlan
[Huawei]undo vlan 4094
# 批量删除 指定的vlan
[Huawei]undo vlan batch 1001 1002
Warning: The configurations of the VLAN will be deleted. Continue?[Y/N]:y
Info: This operation may take a few seconds. Please wait for a moment...done.
# 批量删除一个范围的vlan
[Huawei]undo vlan batch 6 to 20
Warning: The configurations of the VLAN will be deleted. Continue?[Y/N]:y
Info: This operation may take a few seconds. Please wait for a moment...done.
如果一个vlan下有成员接口,当vlan被删除时,这些接口会被重新加入 vlan 1
```
- 把接口划分到某个vlan下
```sh
# 将Ethernet0/0/1 添加到vlan2
interface Ethernet0/0/1
port link-type access # 先将接口类型修改成 access
port default vlan 2 # 再把这个接口,添加到相应的vlan
```
- 在交换机修改一个 vlan
```
# 修改 vlan下的端口
# 如 Eth0/0/1原来在 vlan 10下,将这个接口修改到vlan20下: 接口类型不变,原来对Eth0/0/10的
配置不需要删除,只需要覆盖即可。
[Huawei]interface Eth0/0/10
[Huawei-Ethernet0/0/10]port default vlan 20 【port default vlan2,实际上这个命令会被覆盖】
```
配置实验
在交换机上创建vlan10以及vlan20
将GE0/0/1以及0/0/2配置为access类型并加入相应的vlan
- 创建vlan
```
[SW1]vlan batch 10 20
```
- 将接口添加到相应的vlan数据库
```
[SW1]interface GigabitEthernet 0/0/1
[SW1-GigabitEthernet0/0/1]port link-type access # 改变接口的链路类型为 access
[SW1-GigabitEthernet0/0/1]port default vlan 10
[SW1-GigabitEthernet0/0/2]port link-type access
[SW1-GigabitEthernet0/0/2]port default vlan 20
# 查看对于这个接口的配置,即在这个接口的视图下,使用 display this命令,
[SW1-GigabitEthernet0/0/2]display this
#
interface GigabitEthernet0/0/2
port link-type access
port default vlan 20
```
- 查看配置
```
[SW1]display vlan
The total number of vlans is : 3
--------------------------------------------------------------------------------
U: Up;D: Down;TG: Tagged;UT: Untagged;
--------------------------------------------------------------------------------
VID Type Ports
--------------------------------------------------------------------------------
1 common UT:GE0/0/3(D) GE0/0/4(D) GE0/0/5(D) GE0/0/6(D)
GE0/0/7(D) GE0/0/8(D) GE0/0/9(D) GE0/0/10(D)
GE0/0/11(D) GE0/0/12(D) GE0/0/13(D) GE0/0/14(D)
GE0/0/15(D) GE0/0/16(D) GE0/0/17(D) GE0/0/18(D)
GE0/0/19(D) GE0/0/20(D) GE0/0/21(D) GE0/0/22(D)
GE0/0/23(D) GE0/0/24(D)
10 common UT:GE0/0/1(U)
20 common UT:GE0/0/2(U)
```
## 4.VLAN通信过程
### 4.1相关理论知识
- PVID
```
pvid是access端口的属性,端口加入哪个vlan,它的PVID就是几
Access端口在收到数据后会添加VLAN Tag,VLAN ID和端口的PVID相同。
```
- access接口
```
Access端口是交换机上用来连接用户主机的端口。
Access端口只能连接接入链路,并且只能允许唯一的VLAN ID通过本端口。
Access端口收发数据帧的规则如下:
1. 数据帧不带tag:
如果该端口收到对端设备发送的帧是untagged(不带VLAN标签),交换机将强制加上该端口的PVID。
2. 数据帧带tag:
如果该端口收到对端设备发送的帧是tagged(带VLAN标签),交换机会检查该标签内的VLAN ID。
当VLAN ID与该端口的PVID相同时,接收该报文。
当VLAN ID与该端口的PVID不同时,丢弃该报文。
Access端口发送数据帧时,总是先剥离帧的Tag,然后再发送;Access端口发往对端设备的以太网帧永远是
不带标签的帧。
```
4.2多VLAN下的数据通信原理
- 网络拓扑图
- 通信过程
1. PC1发送去往PC2的常规数据帧:
2. PC1发出的数据帧被交换机的1号接口接收:
```
由于1号接口属于 VLAN10,PC1发出的数据帧不带tag,当这个数据帧被交换机的1号接口接收,将强制打上一个pvid=10的tag
```
3. 交换机学习源MAC地址:
```
交换机收到数据帧,解封装数据链路层,学习源MAC地址,由于该数据帧携带tag的PVID=10,则会丰富关于VLAN10的MAC地址表:
```
4. 交换机查看目标MAC地址,转发数据:
```
交换机查看目标MAC地址,只会在VLAN10的MAC地址表中查找关于目标MAC地址BB对应的接口,当前的MAC地址表中无此项,则会将该数据帧泛洪发送至PC2。(如果交换机查看VLAN数据库,发现数据库中有更多的vlan10接口,那么这些接口也会被泛洪向外发送数据帧至对端设备)
Access端口发送数据帧时,总是先剥离帧的Tag,然后再发送;Access端口发往对端设备的以太网帧永远是不带标签的帧。
```
5. PC2回复数据帧:
6. 交换机接收该数据帧:
```
由于2号接口属于 VLAN10,PC2发出的数据帧不带tag,当这个数据帧被交换机的2号接口接收,将强制打上一个pvid=10的tag
```
7. 交换机学习源MAC地址:
```
交换机收到数据帧,解封装数据链路层,学习源MAC地址,由于该数据帧携带tag的PVID=10,则会丰富于VLAN10的MAC地址表
```
8. 交换机查看目标MAC地址,转发数据:
```
目标MAC地址为AA,根据VLAN10的MAC地址表,AA对应的接口为1号接口,则该数据帧会被交换机从1号接口发出。
Access端口发送数据帧时,总是先剥离帧的Tag,然后再发送;Access端口发往对端设备的以太网帧永远是不带标签的帧。
```
配置实验
- 在交换机上创建vlan10及vlan20
- 将eth0/0/1和eth0//0/2配置为access类型并加入vlan10
- 将eth0/0/3和eth0//0/4配置为access类型并加入vlan20
- 在PC1上ping PC2和PC4查看结果,在PC3上ping PC4查看结果
- 将eth0/0/3加入vlan10,抓Ethernt0/0/1数据包查看
- 将eth0/0/3加入vlan20,抓Ethernt0/0/1数据包查看
- 创建vlan
```
[SW1]vlan batch 10 20
```
- 将接口添加到相应的vlan数据库
```
[SW1]interface Eth0/0/1
[SW1-Ethernet0/0/1]port link-type access # 改变接口的链路类型为 access
[SW1-Ethernet0/0/1]port default vlan 10
interface Eth0/0/2
[SW1-Ethernet0/0/2]port link-type access
[SW1-Ethernet0/0/2]port default vlan 10
interface Eth0/0/3
[SW1-Ethernet0/0/3]port link-type access
[SW1-Ethernet0/0/3]port default vlan 20
interface Eth0/0/4
[SW1-Ethernet0/0/4]port link-type access
[SW1-Ethernet0/0/4]port default vlan 20
```
- 查看在PC1 ping的结果
- 查看在PC3 ping的结果
- 将eth0/0/3加入vlan10,用PC1 ping 192.168.1.3抓Ethernt0/0/1,抓Ethernt0/0/1数据包查看
- 将eth0/0/3加入vlan20,用PC2 ping 192.168.1.3抓Ethernt0/0/1数据包查看