VLAN 端口收发规则(华为 / H3C 基准,附思科、Linux 网桥对照)
VLAN 端口逻辑只看两件事 ——入方向:收到帧,怎么标记 VLAN;出方向:发送帧,要不要剥离标签。
判断依据:端口类型、PVID、VLAN 允许列表。 交换机内部转发帧默认携带 VLAN 标签;MAC 地址学习、广播域隔离均以 VLAN 为边界。
一、基础概念表
表格
| 概念 | 说明 |
|---|---|
| Tag(802.1Q 标签) | 以太网帧插入 4 字节标签,其中 12bit 为 VID(VLAN 编号,范围 1~4094) |
| Untagged 帧 | 不带 VLAN 标签的原始以太网帧,PC、机器人等终端默认收发这类帧 |
| PVID | 端口默认 VLAN。端口收到 Untagged 帧时,打上该 VLAN 标签;思科体系中称为 Native VLAN |
| 允许列表 | 端口允许转发的 VLAN 编号集合,不在列表内的 VLAN 帧直接丢弃 |
二、入方向(接收帧)规则
表格
| 端口类型 | 收到 Untagged 帧 | 收到 Tagged 帧 |
|---|---|---|
| Access | 打上 PVID 标签,校验 PVID 在允许列表后接收 | VID 等于 PVID 则接收,否则直接丢弃 |
| Trunk | 打上 PVID 标签;PVID 在允许列表内则接收,否则丢弃 | VID 在允许列表内则接收,否则丢弃 |
| Hybrid | 和 Trunk 一致 | 和 Trunk 一致 |
三、出方向(发送帧)规则
表格
| 端口类型 | 转发规则 |
|---|---|
| Access | 仅转发 PVID 对应的 VLAN;发送前剥离 VLAN 标签,发出 Untagged 帧 |
| Trunk | ① VID 不在允许列表 → 丢弃② VID 等于 PVID → 剥离标签发出③ VID 属于其他允许 VLAN → 保留标签发出 |
| Hybrid | 按 VLAN 单独定义:在 untagged 列表内 → 剥标签发送在 tagged 列表内 → 保留标签发送不在两个列表 → 丢弃 |
✅ 速记口诀
- Access:对接终端,单一 VLAN,进打标、出剥标
- Trunk:交换机 / AP 互联,多 VLAN 透传,PVID 无标签,其余带标签
- Hybrid:灵活混合模式,每个 VLAN 可单独指定是否带标签
四、典型组网示例
终端(VLAN10)→ Access 口(PVID 10)→ 交换机 → Trunk 口(PVID 1,允许 VLAN10、20)→ 对端交换机 / AP
- 终端发出 Untagged 帧,进入 Access 端口,打上 VLAN10 标签;
- 交换机在 VLAN10 广播域内查 MAC 地址表,从 Trunk 口转发;
- VLAN10 ≠ PVID (1),帧携带 VLAN10 标签发给对端;
- 对端 Trunk 口识别标签,在 VLAN10 内转发;最终从 Access 口剥离标签,交给终端。
五、配置样例
华为 / H3C
plaintext
# 接终端:Access口
interface GigabitEthernet0/0/1
port link-type access
port default vlan 10
# 接AP/交换机:Trunk口
interface GigabitEthernet0/0/2
port link-type trunk
port trunk pvid vlan 1
port trunk allow-pass vlan 10 20
# Hybrid混合口(最灵活)
interface GigabitEthernet0/0/3
port link-type hybrid
port hybrid pvid vlan 10
port hybrid untagged vlan 10
port hybrid tagged vlan 20 30
# 查看端口VLAN信息
display port vlan
思科 IOS(无 Hybrid 端口)
plaintext
interface GigabitEthernet0/1
switchport mode access
switchport access vlan 10
interface GigabitEthernet0/2
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan 10,20
# 验证命令
show interfaces trunk
show vlan brief
思科 & 华为差异要点
- 思科没有 Hybrid 端口;
- Trunk 的 Native VLAN 帧发送时不带标签;
- 链路两端 Native VLAN 不一致,会引发 VLAN 串流,CDP 会告警
native VLAN mismatch。
Linux 网桥(嵌入式开发常用,VLAN 过滤)
bash
# 开启网桥VLAN过滤
ip link set br0 type bridge vlan_filtering 1
# 等价Access口:VLAN10,untagged发出
bridge vlan add dev eth0 vid 10 pvid untagged
# 等价Trunk口:VLAN10、20带标签转发
bridge vlan add dev eth1 vid 10
bridge vlan add dev eth1 vid 20
# 查看VLAN表
bridge vlan show
Linux 字段对照:
pvid对应入方向规则;untagged对应出方向是否剥标签。
六、和机器人 WiFi DHCP 故障的关联
WiFi 场景中,一个 SSID 通常映射一个业务 VLAN;AP 上联口为 Trunk,DHCP 中继配置在该 VLAN 的三层接口(SVI/VLANIF)。
表格
| 故障现象 | 根因排查方向 |
|---|---|
| 机器人跨 AP 漫游后,DHCP 续约失败 | AP 上联 Trunk 未放行业务 VLAN;不同 AP 同 SSID 映射到不同 VLAN,漫游后三层网关不可达 |
| 获取到错误网段 IP | AP 上联口 PVID 和 SSID 绑定 VLAN 配置错误,流量被划入错误 VLAN |
| 广播包正常,单播不通 | VLAN 透传正常,重点排查 DHCP 中继、ACL 放通策略 |
排查建议: 让网管在机器人接入 AP 的上联交换机端口执行: 华为:
display port vlan思科:show interfaces trunk确认业务 VLAN 在 Trunk 允许列表,同时检查该 VLAN 三层接口 DHCP 中继配置。
接口的出和入的定义
核心准则:入(Ingress)、出(Egress)永远站在交换机角度判断
帧从某个端口进入交换机 → 该端口执行入口规则
帧从某个端口离开交换机 → 该端口执行出口规则
同一帧在交换机内部转发流程:先经过入口规则 → 交换机内部 VLAN 转发 / MAC 查表 → 再经过出口规则
┌────────────────────── 交换机 ──────────────────────┐
终端A ──► Port A【入口规则】──► VLAN内MAC查表转发 ──► Port B【出口规则】──► 终端B
接收、打标签逻辑 放行、剥/保留标签逻辑
示例:Port A(Access,VLAN10),Port B(Trunk,允许 VLAN10/20,PVID=1)
正向:终端 A → Port A → Port B
- Port A(入口):终端 A 发送 Untagged 帧,Access 口按 PVID 打上 VLAN10 标签,接收该帧;
- 交换机内部:在 VLAN10 广播域查询 MAC 地址表;命中单播则转发至 Port B;未知单播 / 广播,向 VLAN10 内除入端口外所有端口泛洪;
- Port B(出口):
- 校验 VLAN10 是否在端口允许 VLAN 列表内,不在则直接丢弃;
- VID=10 ≠ PVID=1 → 保留 VLAN 标签向外发送。
反向:终端 B 回复流量 → Port B → Port A
- Port B(入口):收到带 VLAN10 标签的帧,校验 VID 在允许列表,接收;
- 交换机内部:VLAN10 内查表转发到 Port A;
- Port A(出口):Access 口,发送前剥离 VLAN 标签,以 Untagged 帧发给终端 A。
端口方向对照表
表格
| 流量方向 | Port A | Port B |
|---|---|---|
| A → B | 入口(Ingress) | 出口(Egress) |
| B → A | 出口(Egress) | 入口(Ingress) |
两个极易混淆的关键点
-
视角区分 终端收到报文,对终端是 “入”,但对交换机对应的端口,是出(Egress)。 看配置、抓包、读厂商文档时,优先锁定视角:以交换机 / 接口为准。
-
ACL 与策略的 inbound /outbound 沿用同一套逻辑
- 物理接口 inbound:流量从该端口进入交换机;
- 物理接口 outbound:流量从该端口离开交换机;
- VLANIF/SVI 三层接口 inbound:流量从 VLAN 进入三层网关(终端→网关方向);
交换机内部转发时,比如是从port a到port b,那么对于 port b来说,不是入吗
不是入,还是出。
关键在于:入和出是相对整台交换机来说的,不是相对端口。端口是交换机内部和外部线缆之间的"门":
- 入(ingress):帧从线缆经过这个端口进入交换机。
- 出(egress):帧从交换机内部经过这个端口发到线缆上。
从 A 转发到 B 时,帧是从交换机内部"到达" B,但它的目的是经过 B 离开交换机,所以对 B 来说是出。只有从 B 的线缆上收进来的帧,对 B 来说才是入。
可以把端口想成一扇门:你从屋里走到门口,是为了"出门",不能因为"到了门口"就说是"进门"。
从交换芯片的处理流程看更清楚
每个端口的硬件都分成入方向流水线和出方向流水线两套,一个帧只会经过 A 的入方向和 B 的出方向:
线缆 ──► [Port A 入方向] [Port B 出方向] ──► 线缆
· 解析帧 · VLAN 是否允许(出口过滤)
· 确定 VLAN(打 PVID 或检查 VID) ──交换矩阵──► · 加标签或剥标签
· 入方向 ACL · 出方向 ACL
· 查 MAC 表,决定发往哪个端口 · 排队调度,发送
B 的入方向流水线只处理从 B 的线缆上收进来的帧,比如终端 B 发出的回包。从 A 转过来的帧不会经过它。
所以在配置上:
- 对 A→B 这个方向的流量,在 B 上起作用的是出口规则:允许列表、tagged/untagged、outbound ACL。
- B 的入口规则(PVID、inbound ACL)管不到这个方向的流量。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)