第二章:MAC地址表基础

各位好,我是老张。今天咱们聊聊MAC地址表——交换机最核心的部件之一。说实话,很多刚入行的朋友觉得这玩意儿简单,不就是个查表转发吗?但我在项目里见过太多因为MAC地址表问题导致的网络故障了。嗯,咱们今天就把这块彻底讲透。

2.1 MAC地址表的结构

MAC地址表,说白了就是交换机内部的一张「通讯录」。它记录了哪个MAC地址在哪个端口上。我习惯把它想象成酒店的前台登记簿——每个客人(MAC地址)住哪个房间(端口),前台一查就知道。

一张标准的MAC地址表,通常包含以下字段:

字段 说明 示例
MAC地址 48位硬件地址 00-1A-2B-3C-4D-5E
VLAN ID 所属VLAN编号 10
关联端口 数据从哪个接口学习到的 GigabitEthernet0/1
类型 动态/静态/安全 Dynamic
老化时间 剩余存活时间 295秒

你想想看,交换机收到一个数据帧,它首先查的就是这张表。查到了就转发,查不到就泛洪。就这么简单,但细节里全是坑。

重要提醒:MAC地址表不是无限大的。不同型号的交换机,表项容量差别很大。我记得有一次帮客户排查丢包问题,查了半天,最后发现是MAC地址表满了,新设备学不进去。嗯,这个坑我踩过。

2.2 MAC地址学习过程

MAC地址是怎么学到的?我给大家拆解一下这个过程。其实就三步:

  1. 接收帧:交换机从某个端口收到一个数据帧
  2. 提取源MAC:读取帧头部的源MAC地址
  3. 记录映射:把「源MAC + 接收端口」写入地址表

举个例子。假设PC-A(MAC: AA-AA-AA-AA-AA-AA)接在交换机的端口1上。当PC-A发送第一个数据帧时:

1. 交换机从端口1收到帧
2. 提取源MAC:AA-AA-AA-AA-AA-AA
3. 检查地址表:没有这个MAC
4. 创建新条目:MAC=AA-AA-AA-AA-AA-AA, Port=1, VLAN=1
5. 同时,因为目的MAC未知,交换机把帧从其他所有端口转发出去(泛洪)

等PC-B回复时,交换机就能学到PC-B的MAC地址了。一来一回,两张表都填上了。这就是最基础的学习过程。

我的经验:刚入行时我总以为MAC地址表是「一次性学完」的。其实不是。每次收到帧都会刷新对应条目的时间戳。说白了,设备一直在发数据,表项就一直在续命。如果设备突然不说话了,表项就会慢慢老化掉。

2.3 MAC地址老化机制

为什么要老化?你想想看,网络里的设备来来去去。今天插上的笔记本,明天可能就拔走了。如果不老化,地址表里全是僵尸条目,新设备反而学不进来。

老化机制的核心参数就一个:老化时间。默认通常是300秒(5分钟)。

工作流程是这样的:

  • 每学到一条MAC,启动一个计时器
  • 每次收到该MAC的帧,重置计时器
  • 计时器归零,删除该条目

我曾经遇到过一个案例:某公司网络频繁出现「间歇性断网」。排查后发现,是因为某些设备每6分钟才发一次数据,而老化时间是5分钟。设备刚被老化掉,下次发数据时又要重新学习,期间就会丢包。解决方案很简单——把老化时间调长到600秒,问题就解决了。

注意:老化时间不是越长越好。设得太长,僵尸条目占着茅坑不拉屎;设得太短,设备频繁重新学习,浪费CPU资源。我个人建议:

  • 普通办公网络:300秒(默认)
  • 服务器区域:600-900秒
  • 无线用户密集区域:180秒

2.4 查看MAC地址表的命令

实操环节。在华为和思科设备上,查看MAC地址表的命令略有不同:

华为设备:

<Huawei> display mac-address
MAC address    VLAN  Port                      Type      Aging
00-1A-2B-3C-4D-5E  1    GigabitEthernet0/0/1   dynamic   295
00-1A-2B-3C-4D-5F  1    GigabitEthernet0/0/2   dynamic   298
00-1A-2B-3C-4D-60  10   GigabitEthernet0/0/3   static    -

思科设备:

Switch# show mac address-table
Mac Address Table
-------------------------------------------
Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
   1    001a.2b3c.4d5e    DYNAMIC     Gi0/1
   1    001a.2b3c.4d5f    DYNAMIC     Gi0/2
  10    001a.2b3c.4d60    STATIC      Gi0/3

看到没?静态条目后面没有老化时间,因为它不会老化。动态条目后面有剩余时间,从300秒开始倒计时。

小技巧:排查网络环路时,我经常用这个命令。如果某个MAC地址在多个端口上同时出现,那基本可以断定——有环路。因为正常情况下,一个MAC只能从一个端口学到。

2.5 总结一下

MAC地址表是交换机工作的基石。结构上记住三个核心字段:MAC、VLAN、端口。学习过程就是「收到帧→提取源MAC→记录端口」。老化机制保证表项不会无限膨胀。

嗯,今天的内容就到这儿。下节课咱们聊端口安全配置,那才是真正有意思的部分——怎么防止别人乱插设备、怎么限制MAC地址数量。到时候我会分享几个实战案例,保证让你少走弯路。