ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

VLAN端口类型实验:Access与Trunk数据帧处理详解

VLAN端口类型实验:Access与Trunk数据帧处理详解

1. 实验背景与目标

作为一名网络工程师,我经常需要在实验室环境中验证各种网络协议和配置的实际效果。这次我决定深入研究VLAN端口类型对数据帧处理的影响,因为这是实际网络部署中最基础也最容易出错的部分。

VLAN(虚拟局域网)是现代企业网络的核心技术之一,它通过逻辑隔离广播域来提高网络性能和安全性。而Access和Trunk端口作为VLAN技术的两大支柱,它们对数据帧的处理方式直接影响着网络的连通性。很多网络故障其实都源于对这两种端口类型理解不够深入。

本次实验的核心目标是:

  • 验证Access端口对带Tag和不带Tag数据帧的收发行为
  • 验证Trunk端口对带Tag和不带Tag数据帧的收发行为
  • 通过实际抓包分析数据帧的变化过程
  • 总结不同场景下的配置要点和排错思路

2. 实验环境搭建

2.1 实验拓扑设计

我使用华为eNSP模拟器搭建了如下实验环境:

[PC1]---[SW1]---[SW2]---[PC3] | [SW3]
  • SW1的G0/0/4口连接PC1,配置为Access口
  • SW1的G0/0/5口连接SW2,配置为Trunk口
  • SW1的G0/0/3口连接SW3,用于验证Access口行为
  • 所有交换机默认创建VLAN 1和VLAN 10
  • PC1和PC3分别属于VLAN 10

注意:在实际操作中,建议先保存基础配置再进行实验,避免误操作后需要重新搭建环境。

2.2 基础配置要点

在开始实验前,需要完成以下基础配置:

  1. 交换机VLAN创建:
[SW1]vlan batch 10
  1. 接口模式配置示例(以SW1的G0/0/5口为例):
[SW1]interface GigabitEthernet 0/0/5 [SW1-GigabitEthernet0/0/5]port link-type trunk [SW1-GigabitEthernet0/0/5]port trunk pvid vlan 1 [SW1-GigabitEthernet0/0/5]port trunk allow-pass vlan 10
  1. PC地址配置:
  • PC1: 192.168.10.1/24
  • PC3: 192.168.10.3/24

3. Trunk端口行为验证

3.1 Trunk口发送数据帧

原理分析:Trunk口在发送数据帧时会经过两个关键判断:

  1. 检查VLAN ID是否在允许通过列表中
  2. 比较VLAN ID与端口的PVID(默认VLAN)

具体处理流程:

if (VLAN ID not in allowed list) → 丢弃 else if (VLAN ID == PVID) → 移除Tag后发送 else → 保持Tag发送

实验验证:

  1. 初始配置:
[SW1-GigabitEthernet0/0/5]port trunk allow-pass vlan none [SW1-GigabitEthernet0/0/5]port trunk pvid vlan 1

PC1 ping PC3时,在G0/0/5口抓包,确实看不到ARP广播帧,因为VLAN 10不在允许列表中。

  1. 修改配置后:
[SW1-GigabitEthernet0/0/5]port trunk allow-pass vlan 10

此时可以抓到带VLAN 10 Tag的ARP广播帧(目标MAC为ffff.ffff.ffff)。

  1. 修改PVID后:
[SW1-GigabitEthernet0/0/5]port trunk pvid vlan 10

抓包显示ARP广播帧变为不带Tag,因为VLAN ID与PVID匹配。

经验:Trunk口的PVID配置会影响本端口的出方向Tag处理,但不影响对端设备的接收判断。

3.2 Trunk口接收数据帧

原理分析:Trunk口接收数据帧时:

  • 对于不带Tag的帧:打上PVID Tag → 检查是否在允许列表中
  • 对于带Tag的帧:直接检查是否在允许列表中

实验验证:

  1. 两端Trunk口配置一致:
[SW1-GigabitEthernet0/0/5]port trunk pvid vlan 10 [SW1-GigabitEthernet0/0/5]port trunk allow-pass vlan 10 [SW2-GigabitEthernet0/0/1]port trunk pvid vlan 10 [SW2-GigabitEthernet0/0/1]port trunk allow-pass vlan 10

PC1 ping PC3后,SW2上能看到PC1的MAC地址,证明通信正常。

  1. 修改SW1端PVID:
[SW1-GigabitEthernet0/0/5]port trunk pvid vlan 1

通信仍然正常,因为PVID只影响不带Tag帧的处理,而我们的数据帧是带Tag的。

  1. 禁止VLAN 10通过:
[SW2-GigabitEthernet0/0/1]undo port trunk allow-pass vlan 10

此时SW2上无法学习到PC1的MAC地址,因为带Tag帧被丢弃。

4. Access端口行为验证

4.1 Access口发送数据帧

原理分析:Access口发送数据帧时,会无条件移除VLAN Tag,这是它与Trunk口最显著的区别。

实验验证:在SW1的G0/0/4口(连接PC1的Access口)抓包:

  • 所有出方向数据帧都不带Tag
  • 即使PC1属于VLAN 10,发出的帧也没有VLAN信息

注意:这就是为什么PC通常连接Access口 - 普通网卡无法处理带Tag的帧。

4.2 Access口接收数据帧

原理分析:Access口接收数据帧时:

  • 对于带Tag的帧:检查VLAN ID是否等于PVID → 匹配则接收,否则丢弃
  • 对于不带Tag的帧:打上PVID Tag后接收

实验验证:

  1. 正常配置:
[SW3-GigabitEthernet0/0/1]port link-type access [SW3-GigabitEthernet0/0/1]port default vlan 10

PC1 ping PC3时,SW3能学习到PC1的MAC地址。

  1. 修改PVID后:
[SW3-GigabitEthernet0/0/1]port default vlan 1

SW3无法学习PC1的MAC地址,因为带Tag帧的VLAN 10与PVID 1不匹配。

5. 常见问题与排错指南

5.1 典型故障场景

故障现象可能原因解决方案
Trunk链路两端无法通信1. 允许VLAN列表不匹配
2. 两端PVID不一致且传输不带Tag帧
检查并统一允许VLAN配置
Access端口无法学习MAC地址1. 对端发送带Tag帧且VLAN ID≠PVID
2. 端口模式配置错误
确认对端设备发送的帧格式
同一VLAN内主机无法互通1. 中间Trunk链路未允许该VLAN
2. 存在ACL等额外限制
使用display命令逐段检查

5.2 实用诊断命令

  1. 查看接口VLAN配置:
display port vlan [interface]
  1. 检查MAC地址表:
display mac-address
  1. 查看接口状态:
display interface brief
  1. 清除MAC地址表(用于重新测试):
reset mac-address

5.3 配置最佳实践

  1. Trunk链路两端配置建议:
  • 保持相同的允许VLAN列表
  • 明确设置PVID为非业务VLAN(如VLAN 999)
  • 建议使用port trunk allow-pass vlan all简化配置
  1. Access端口配置建议:
  • 连接终端设备时明确设置PVID
  • 避免使用VLAN 1作为业务VLAN
  • 对于IP电话等特殊设备考虑使用Hybrid端口

6. 实验总结与延伸思考

通过这次系统的实验验证,我更加清晰地理解了不同端口类型对数据帧的处理逻辑。在实际网络部署中,有几点特别值得注意:

  1. Trunk链路的"允许VLAN列表"必须两端匹配,这是最常见的配置错误点。

  2. PVID的作用容易被忽视:

  • 在Trunk口影响不带Tag帧的处理
  • 在Access口决定哪些带Tag帧能被接收
  1. 抓包分析是验证理论的最佳手段,建议在关键接口都进行抓包验证。

对于想进一步深入的同学,可以尝试以下扩展实验:

  • 验证Hybrid端口的行为特点
  • 测试QinQ场景下的Tag处理
  • 探索VLAN与STP协议的交互影响
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进