第5篇:二层交换机原理:MAC 地址表是如何学习的

关键词:二层交换机 MAC地址表 地址学习 帧转发 泛洪 广播 VLAN 华为设备


一、引言

交换机是局域网中最常见的设备,但它并非简单的"网线插线板"。当一台 PC 发送数据帧进入交换机后,交换机会做出一个精确的决策:这个帧应该从哪个端口发出去?这个决策的依据就是 MAC 地址表。

一个真实的案例:某网络管理员抱怨"交换机太慢了,数据包要排队"。实际上,现代交换机的转发速度以线速(Wire-speed)运行,延迟仅为微秒级。真正影响局域网性能的不是交换机本身,而是广播风暴、MAC 地址表溢出或环路等配置问题。

本文将从交换机的工作原理出发,深入讲解 MAC 地址学习、帧转发决策、泛洪机制以及华为交换机上的验证方法。

二、交换机与 Hub 的本质区别

2.1 Hub(集线器):无脑转发

Hub 是物理层(L1)设备,它没有任何智能。收到一个信号后,Hub 将其放大并从所有端口复制出去(除了接收端口)。这导致: - 所有端口共享带宽 - 任意两台主机通信都会占用所有端口 - 无法隔离冲突域

2.2 交换机(Switch):智能转发

交换机是数据链路层(L2)设备,它的核心能力是根据目的 MAC 地址进行精确转发: - 每个端口拥有独立带宽 - 只在目标端口发送数据 - 每个端口是一个独立的冲突域

对比维度 Hub(集线器) Switch(交换机)
工作层次 L1(物理层) L2(数据链路层)
转发方式 广播式(全部端口) 查表转发(精确端口)
带宽 共享带宽 每端口独立带宽
冲突域 所有端口一个冲突域 每个端口独立冲突域
当前状态 已基本淘汰 主流设备

三、MAC 地址基础知识

3.1 MAC 地址格式

MAC 地址(Media Access Control Address)是全球唯一的 48 位(6 字节)标识符,以十六进制表示,如 00E0.FC12.3456。

部分 长度 说明
OUI(组织唯一标识符) 前 24 位 厂商编码,由 IEEE 统一分配
序列号 后 24 位 厂商自行分配,保证唯一性
第 40 位(第 3 字节最低位) 1 bit 0 = 单播,1 = 广播
第 41 位(第 3 字节次低位) 1 bit 0 = 全球管理(厂家烧录),1 = 本地管理(软件生成)

3.2 MAC 地址类型

类型 MAC 地址 说明
单播 第 40 位 = 0 发给特定一台设备
组播 第 40 位 = 0,第 41 位 = 1 发给一组设备
广播 FFFF.FFFF.FFFF 发给同一广播域内所有设备

3.3 查看 MAC 地址

# Windows 查看本机 MAC
ipconfig /all
# 输出示例:物理地址 . . . . . . . . . . : 00-1A-2B-3C-4D-5E

# Linux 查看本机 MAC
ip link
# 输出示例:link/ether 00:1a:2b:3c:4d:5e

# 华为交换机查看 MAC 地址表
display mac-address

四、MAC 地址学习过程

4.1 核心机制:源 MAC 学习

交换机学习 MAC 地址的核心规则是:看源 MAC,不看目的 MAC。每当一个数据帧从某个端口进入交换机,交换机会提取该帧的源 MAC 地址,并将其与进入端口的映射关系记录到 MAC 地址表中。

核心机制:源 MAC 学习 - 图示

4.2 详细示例:从学习到精确转发

假设一台华为 S5720 交换机有三个端口连接了三台设备:

端口 设备 MAC 地址 IP 地址
GE0/0/1 PC_A AA-AA-AA-AA-AA-01 192.168.1.101
GE0/0/2 PC_B AA-AA-AA-AA-AA-02 192.168.1.102
GE0/0/3 PC_C AA-AA-AA-AA-AA-03 192.168.1.103

第一阶段:初始状态,MAC 地址表为空

  1. PC_A 首次发送数据帧给 PC_B
  2. 交换机从 GE0/0/1 收到帧
  3. 学习:记录 AA-AA-AA-AA-AA-01 → GE0/0/1
  4. 查表:目的 MAC AA-AA-AA-AA-AA-02 不在表中
  5. 泛洪:从 GE0/0/2 和 GE0/0/3 转发该帧
  6. PC_B 收到帧并处理,PC_C 收到帧但丢弃(目的 MAC 不匹配)

第二阶段:PC_B 回复 PC_A

  1. PC_B 发送回复帧给 PC_A
  2. 交换机从 GE0/0/2 收到帧
  3. 学习:记录 AA-AA-AA-AA-AA-02 → GE0/0/2
  4. 查表:目的 MAC AA-AA-AA-AA-AA-01 在表中,对应 GE0/0/1
  5. 精确转发:仅从 GE0/0/1 转发

第三阶段:稳定状态

此时 MAC 地址表已学习完毕,后续所有单播通信均为精确转发,不再泛洪。

4.3 MAC 地址表老化

MAC 地址表不是永久存储的。如果某个 MAC 地址对应的端口在一段时间内没有收到该 MAC 的数据帧,表项会被自动删除。

参数 华为默认值 说明
老化时间 300 秒(5 分钟) 无更新则删除
MAC 地址表容量 16K/32K/80K(因型号而异) 到达上限后停止学习新 MAC
# 查看 MAC 地址老化时间
[HUAWEI] display aging-time

# 修改 MAC 地址老化时间(秒)
[HUAWEI] mac-address timer aging 600

五、交换机帧转发的三种行为

5.1 已知单播(Known Unicast)

  • 条件:MAC 地址表中存在目的 MAC 的记录
  • 行为:仅从对应端口转发数据帧
  • 示例:PC_A → PC_B,表中已知 PC_B 在 GE0/0/2,仅从 GE0/0/2 发出

5.2 未知单播(Unknown Unicast)

  • 条件:MAC 地址表中不存在目的 MAC 的记录
  • 行为:泛洪(Flooding),从同一 VLAN 内除接收端口外的所有端口转发
  • 场景:新设备首次通信时必然发生未知单播泛洪

5.3 广播和组播

  • 条件:目的 MAC 为广播地址(FFFF.FFFF.FFFF)或组播地址
  • 行为:泛洪到同一 VLAN 内的所有端口
  • 说明:ARP 请求、DHCP Discover 均为广播帧,会触发泛洪

5.4 转发行为总结

帧类型 目的 MAC 状态 行为 是否占用全网带宽
已知单播 表中存在 精确转发到单一端口 否
未知单播 表中不存在 泛洪到同 VLAN 所有端口 是
广播 FFFF.FFFF.FFFF 泛洪到同 VLAN 所有端口 是
组播 组播 MAC 泛洪(未配置组播优化时) 是

六、华为交换机 MAC 地址表管理

6.1 查看 MAC 地址表

# 查看所有 MAC 地址表项
[HUAWEI] display mac-address

# 输出示例:
# MAC Address       VLAN   Type    Interfaces
# AA-AA-AA-AA-AA-01 10     Dynamic GE0/0/1
# AA-AA-AA-AA-AA-02 10     Dynamic GE0/0/2
# AA-AA-AA-AA-AA-03 10     Dynamic GE0/0/3
# FFFF-FFFF-FFFF     1     Static  All

# 查看指定接口的 MAC 地址
[HUAWEI] display mac-address interface GigabitEthernet 0/0/1

# 查看指定 MAC 地址
[HUAWEI] display mac-address AA-AA-AA-AA-AA-01

6.2 MAC 地址表类型

类型 产生方式 掉电是否保留 老化
Dynamic(动态) 交换机自动学习 否 是(老化时间到后删除)
Static(静态) 手动配置 否 否
Blackhole(黑洞) 手动配置 否 否(丢弃目的为该 MAC 的帧)

6.3 静态 MAC 配置

# 将某个 MAC 地址静态绑定到指定端口和 VLAN
[HUAWEI] mac-address static AA-AA-AA-AA-AA-FF vlan 10 interface GigabitEthernet 0/0/24

# 配置黑洞 MAC(丢弃目的为此 MAC 的帧,用于安全隔离)
[HUAWEI] mac-address blackhole AA-AA-AA-AA-AA-BB vlan 10

6.4 MAC 地址表溢出故障案例

故障现象:某办公区域 30 台终端频繁断网,每次断网持续约 5 分钟后自动恢复。

排查过程:

# 查看 MAC 地址表项数
[HUAWEI] display mac-address statistics
# 发现表项数已达最大值 16384

# 查看 MAC 漂移告警
[HUAWEI] display trapbuffer
# 发现某 MAC 地址在 GE0/0/5 和 GE0/0/12 之间频繁漂移

根因分析:某员工私接了一个 Hub 到交换机端口 GE0/0/5,Hub 下又接了多台设备。这些设备与网络中已有设备的 MAC 地址发生冲突(实际是两台不同 VLAN 的设备使用了相同的 MAC 地址克隆的虚拟机),导致 MAC 地址表项不断被覆盖和刷新,最终表项溢出。

解决方案: 1. 更换 Hub 为小型交换机 2. 将 MAC 地址表容量升级(更换更大规格交换机) 3. 启用端口安全,限制每个端口最大学习 MAC 数量

# 启用端口 MAC 地址数量限制
[HUAWEI] interface GigabitEthernet 0/0/5
[HUAWEI-GigabitEthernet0/0/5] mac-limit enable
[HUAWEI-GigabitEthernet0/0/5] mac-limit maximum 5
[HUAWEI-GigabitEthernet0/0/5] mac-limit action shutdown  # 超限则关闭端口

七、总结

概念 说明 关键点
MAC 地址学习 看源 MAC 记录端口映射 只学源,不学目的
已知单播转发 查表命中,精确转发 交换机最高效的转发方式
未知单播泛洪 查表未命中,泛洪到同 VLAN 首次通信必有泛洪
MAC 老化 超时未更新则删除 默认 300 秒
MAC 表溢出 表项数达到上限 导致新设备无法通信

核心要点: 1. 交换机转发的核心是 MAC 地址表,通过"学习源 MAC"自动构建 2. 交换机启动后需要一定的"学习期"才能完成精确转发,初期泛洪是正常现象 3. MAC 地址表有容量限制,需根据端口数和终端密度选择合适规格的设备 4. MAC 地址漂移是环路或非法集线器的典型特征,需及时排查 5. 华为交换机支持动态、静态、黑洞三种 MAC 表项类型

思考题

  1. 一台交换机连接了 100 台 PC,如果某台新 PC 首次发送数据给另一台 PC,交换机会如何处理这个数据帧?请描述完整的学习和转发过程。
  2. MAC 地址表老化时间设置得太短或太长各有什么影响?
  3. 如果两台 PC 之间的通信始终无法命中 MAC 地址表(始终泛洪),可能的原因有哪些?

下篇预告

交换机通过 MAC 地址实现了二层转发,但 MAC 地址和 IP 地址之间是如何关联的?当 PC 要发送数据给另一个 IP 地址时,它怎么知道对方的 MAC 地址?下一篇文章《一文读懂 ARP:广播请求与应答过程》将揭秘 IP 到 MAC 的解析魔法。