MAC地址表

MAC地址表


什么是MAC地址表

我做一个通俗的比喻,MAC地址表,就像是交换机的 “通讯录” 或 “导航地图”

如果说交换机是办公大楼里的 “邮件管理员”,那么 MAC 地址表(MAC Address Table)就是这位管理员手里的那本动态更新的 “员工位置分布图”。

员工的身份证号 (MAC 地址)他坐在哪个房间 (交换机端口号)
AA:AA:AA:AA:AA:AA1
BB:BB:BB:BB:BB:BB2

如何在Cisco设备上查看MAC地址表

我们在Cisco的交换机上可以通过使用命令show mac address-table来查看MAC地址表

这里面的信息比刚才那个比喻更加详细,主要包含了四部分信息:

  1. Vlan
    • 表示这个设备目前属于哪个Vlan
  2. Mac address
    • 设备的MAC地址是什么
  3. Type
    • 这个MAC地址是如何添加在MAC地址表中的,Dynamic表示动态学习Static表示手动添加
  4. Ports
    • 这个设备连接在交换机的哪个端口

MAC地址表是如何建立的

1. Static 静态手动绑定

使用下面的命令,可以手动建立一个MAC地址和端口的绑定关系。

Switch(config)#mac address-table static <MAC> vlan <VLAN ID> interface <INT ID> 
下面是一个配置实例
Switch(config)#mac address-table static 00:50:79:66:68:00 vlan 1 interface e0/0

上面的命令,可以实现手动将地址00:50:79:66:68:00绑定到属于vlan1的e0/0端口,在MAC地址表中会显示为STATIC。


如果将e0/0端口划分到其他vlan中,比如vlan10,那么地址00:50:79:66:68:00的设备在vlan10中会同时显示为Dynamic动态学习。

不管是Static还是Dynamic的类型,该设备都可以和相同vlan中的其他设备通信。

2. Dynamic 动态学习

初始状态: 交换机刚通电时,它的 MAC 地址表是空的。不知道具体的设备(MAC地址)在哪个端口。

第一步:学习(Learning)

比如连接在 1 号端口 的电脑 A (假设MAC地址为AA) 要给连接在 2 号端口 的电脑 B (假设MAC地址为BB) 发送数据。电脑 A 发出一个数据帧,这个帧的头部包含了源 MAC 地址 (AA)目标 MAC 地址 (BB)。数据帧到达交换机。交换机首先查看数据帧的源 MAC 地址。它发现源 MAC 是 AA,并且这个数据是从 1 号端口 进来的。交换机立刻在它的 MAC 地址表里记录:MAC 地址 AA 对应 1 号端口。 这就是 “学习” 过程。

第二步:转发(Forwarding)或泛洪(Flooding)

交换机已经学到了电脑 A 的位置,但现在它要将这个数据帧发给电脑 B。交换机查看数据帧的目标 MAC 地址,也就是 BB。现在会出现如下两种情况:

  • 情况一(地址已知): 假设之前 电脑 B 已经发过言,交换机已经学到了 电脑 B 的位置在 2 号端口。那么交换机查表后会发现 MAC地址 BB 对应 2 号端口。于是,它会把数据帧只从 2 号端口精确地发送出去。这就叫转发 (Forwarding)。
  • 情况二(地址未知): 表里还没有 电脑 B 的记录。交换机不知道 电脑 B 在哪里,怎么办?它只能采取最 “笨” 但最有效的方法 ——泛洪 (Flooding)。它会把这个数据帧复制并发送给除了来源端口(1 号)以外的所有其他端口,然后等待 电脑 B 的回复。

简单来说,当设备之间发生过通信后,设备的MAC地址和所连接端口的映射关系就会被交换机通过Dynamic的方式学习记录。并且在Type中会显示为DYNAMIC,如下图


MAC 地址表的维护:老化时间(Aging Time)

MAC 地址表里的条目不是永久的(除非Type为STATIC,也就是管理员手动绑定)

Dynamic类型的条目在MAC地址表里会有一个 “老化时间”(Aging Time),在Cisco设备中通常是 300 秒(5 分钟)。如果交换机在 5 分钟内没有再收到过来自某个 MAC 地址的数据,它就会认为这个设备可能已经离线了,从而将这条记录从表中删除,以节省内存空间。

通过下面的命令可以查看 “老化时间”(Aging Time)

Switch#show mac address-table aging-time

在上图中看到,Aging Time 的时间是300,单位是秒。

通过下面的命令可以更改老化时间

Switch(config)#mac address-table aging-time <time>

输入0表示禁用老化计时器,也就是所有Dynamic类型的MAC地址都永不超时,或者可以在10-100000(单位秒)中选择一个数值。


在我的课程中,包含更多详细内容。理论讲解、实验演示、命令文档等内容多维一体。助您一次通过Cisco认证考试!课程优惠券请点击这里