第二章: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地址是怎么学到的?我给大家拆解一下这个过程。其实就三步:
- 接收帧:交换机从某个端口收到一个数据帧
- 提取源MAC:读取帧头部的源MAC地址
- 记录映射:把「源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地址数量。到时候我会分享几个实战案例,保证让你少走弯路。