MAC地址表

MAC地址表

MAC地址表记录了相连设备的MAC地址、接口号以及所属的VLAN ID之间的对应关系,是VLAN内数据转发的决策表,是决定交换机转发行为的标准,交换机就是根据这张表负责将数据帧传输到指定的主机上的。

 

MAC表一般包含动态MAC地址、静态MAC地址和黑洞MAC地址。

动态MAC地址: 由接口通过报文中的源MAC地址学习获得,表项可老化,默认老化时间为300s,可以通过命令修改老化时间,老化时间到后,会清除学习到的动态MAC地址。

静态MAC地址: 由用户手工配置,不会老化,接口和MAC地址静态绑定后,其他接口收到目的MAC是该MAC地址的报文将会被丢弃,但是一个接口和MAC地址静态绑定后,不会影响该接口动态MAC地址表项的学习。

黑洞MAC地址:设备收到源MAC或者目的地址是该MAC地址的报文将会被丢弃。

 
下面通过实验去配置、理解上述三种类型的MAC地址,网络拓扑如下图所示:

MAC地址表_第1张图片
 

动态MAC地址表项

网络拓扑在初始化,mac地址表没有任何表项,只有数据包经过后,才会动态学习到mac地址和接口的对应关系。

在这里插入图片描述
利用PING命令,从PC1 ping PC2,我们就可以在MAC表里看到PC1和PC2的MAC地址以及对应的接口了。现在我们看到的就是学习到动态MAC地址表项,,Type 为 dynamic

MAC地址表_第2张图片

 

静态MAC地址表项

将PC2的MAC地址配置成静态MAC地址,再看一下表项,可以看到在mac地址表中出现了静态mac地址表项,而且已经将PC2的mac地址从动态表项中移除。

MAC地址表_第3张图片
 
 

假如我们将Client2从接口2移到接口4,并在原来接口2上,重新接入一台MAC地址不同的客户端,我们来通过抓包看一下Client2能不能发送和收到数据包。

MAC地址表_第4张图片
首先从Client1 ping Client2

接口G0/0/1抓包结果:

在这里插入图片描述

接口G0/0/2抓包结果:

在这里插入图片描述
接口G0/0/4抓包结果:

在这里插入图片描述
由抓包结果可知,目的地址是静态MAC表项的,将从绑定的端口(G0/0/2)发送出去,在G0/0/4端口上被丢弃,所以G0/0/4收不到该ICMP Request包

 
而从Client2 ping Client1时

接口G0/0/4抓包结果:

在这里插入图片描述
接口G0/0/1抓包结果:

在这里插入图片描述
由该抓包结果可知,G0/0/4接口可以接受源地址为静态MAC地址的数据包,并且可以到达G0/0/1口。

 

通过上述两个抓包实验,我们验证了,将MAC地址和接口绑定后,目的地址为该MAC地址的只能有绑定接口转发,其他非绑定接口将会丢弃;而针对源地址为该MAC地址的数据包,非绑定接口能够接收。

 
 

黑洞MAC地址

将Client3的MAC地址设定为黑洞MAC地址,可以看到表项出现了blackhole类型的mac地址,再通过抓包看一下实验效果。

MAC地址表_第5张图片

从Client3 ping Client1 G0/0/3接口抓包如下:

在这里插入图片描述

接口G0/0/1接口如下:

在这里插入图片描述

从上述抓包结果我们可以看到,针对源地址是黑洞MAC的数据包,设备直接丢弃,所以G0/0/1收不到ARP数据包

 
 

交换机的工作原理

交换机在接收到数据帧以后,首先会记录数据帧中的源MAC地址和对应的接口到MAC表中,接着、会检查自己的MAC表中是否有数据帧中目标MAC地址的信息,如果有则会根据MAC表中记录的对应接口将数据帧发送出去(也就是单播),如果没有,则会将该数据帧从非接受接口发送出去(也就是广播)。

 
 

交换机的转发行为

 

泛洪(Flooding)

交换机把从某一个端口接收到的数据帧向除了接收端口以外的其他端口转发。泛洪是一点到多点的转发行为。

交换机在以下几种情况下会泛洪数据帧:

(1)收到广播数据帧(目的MAC是全F)

(2)收到组播数据帧

(3)收到未知的单播数据帧(未知的单播帧是指数据帧的目的MAC地址在MAC地址表中不存在)

 

转发(Forwarding)

交换机从某一个端口收到数据帧后从另一个端口转发出去,转发是一种点到点的转发行为。
 
交换机转发数据帧流程:交换机收到数据帧以后根据数据帧的目的MAC查看本地MAC地址表,如果MAC地址表中存在目的MAC地址,则将数据帧从目的MAC地址绑定的端口转发出去,如果MAC地址表中不存在MAC地址,则执行泛洪转发。
 

丢弃(Discarding)

交换机接收到数据帧的端口和转发数据帧的端口是同一个端口,则丢弃数据帧不转发。

 

一台交换机传输数据帧的过程

MAC地址表_第6张图片

  1. 主机A会将一个源MAC地址为自己,目标MAC地址为主机B的数据帧发送给交换机。
  2. 交换机收到此数据帧后,首先将数据帧中的源MAC地址和对应的接口(接口为f 0/1) 记录到MAC地址表中。
  3. 然后交换机会检查自己的MAC地址表中是否有数据帧中的目标MAC地址的信息,如果有,则从MAC地址表中记录的接口发送出去,如果没有,则会将此数据帧从非接收接口的所有接口发送出去(也就是除了f 0/1接口)。
  4. 这时,局域网的所有主机都会收到此数据帧,但是只有主机B收到此数据帧时会响应这个广播,并回应一个数据帧,此数据帧中包括主机B的MAC地址。
  5. 当交换机收到主机B回应的数据帧后,也会记录数据帧中的源MAC地址(也就是主机B的MAC地址),这时,再当主机A和主机B通信时,交换机根据MAC地址表中的记录,实现单播了。
     
     

多台交换机传输数据帧的过程

MAC地址表_第7张图片

  1. 主机A将一个源MAC地址为自己,目标MAC地址主机C的数据帧发送给交换机。
  2. 交换机1收到此数据帧后,会学习源MAC地址,并检查MAC地址表,发现没有目标MAC地址的记录,则会将数据帧广播出去,主机B和交换机2都会收到此数据帧。
  3. 交换机2收到此数据帧后也会将数据帧中的源MAC地址和对应的接口记录到MAC地址表中,并检查自己的MAC地址表,发现没有目标MAC地址的记录,则会广播此数据帧。
  4. 主机C收到数据帧后,会响应这个数据帧,并回复一个源MAC地址为自己的数据帧,这时交换机1和交换机2都会将主机C的MAC地址记录到自己的MAC地址表中,并且以单播的形式将此数据帧发送给主机A。
  5. 这时,主机A和主机C通信就是一单播的形式传输数据帧了,主机B和主机C通信如上述过程一样,因此交换机2的MAC地址表中记录着主机A和主机B的MAC地址都对应接口f 0/1。

总结: 从上面的两幅图可以看出,交换机具有动态学习源MAC地址的功能,并且交换机的一个接口可以对应多个MAC地址,但是一个MAC地址只能对应一个接口。
 
注意: 交换机动态学习的MAC地址默认只有300S的有效期,如果300S内记录的MAC地址没有通信,则会删除此记录。

 

查看MAC地址内容

display mac address vlan 1
display mac-address		//查看mac地址表
display mac-address aging-time		//老化时间
mac-address aging-time x		//修改老化时间s(不建议)

 

配置MAC地址内容

静态MAC地址

mac-address static abcd-1234-5678 GigbitEthernet 0/0/2 vlan 10

黑洞MAC地址

mac-address blackhole adbc-1234-5678

 

MAC地址漂移(震荡)

  • 一个终端的MAC地址同一时间只能从一个接口学习到。
  • 一个接口学习到的MAC地址在同一VLAN中另一接口上也学习到,后学习到的MAC地址表项覆盖原来的表项,甚至出现反复,将严重影响业务转发。
  • MAC地址震荡一般都意味着网络中出现环路,形成广播风暴。(其他原因可能是VLAN划分错误或者临时情况)

防范机制
1.配置接口MAC地址学习优先级,高优先级的可以替换低优先级的,而低优先级的不能替换学习到的MAC地址
2.不允许相同优先级的接口发生MAC地址表项的覆盖。也就是后面学习到的MAC地址不能替换先学习到的MAC地址表项。这里可能会引发别的问题,比如当我们的设备下电了或者断开了,攻击者使用相同的MAC发送消息到交换机,此时是可以学习到的,那么后面的正常设备上电接入就没法正常上网了。

防止MAC地址漂移配置
mac-learning priority 3 //接口MAC地址学习优先级,值越大优先级高
undo mac-learning priority 3 allow-flapping //不允许相同优先级MAC地址漂移
mac-address flapping detection //配置全局MAC地址漂移检测

//配置基于vlan 的mac地址漂移检测
vlan 3
loop-detect eth-loop block-time 100 retry-times 3

 

MAC与端口绑定

如何配置MAC与端口绑定,使其他设备在此端口不能上网?

1.在端口中关闭MAC学习
[huawei]interface Ethernet0/0/1
[huawei-Ethernet0/0/1]mac-address learning disable
[huawei-Ethernet0/0/1]qu
2.将MAC绑定到端口0/0/1上并指定VLAN
[huawei]mac-address static XXXX-XXXX-XXXX Ethernet 0/0/1 vlan 20
[huawei]qu
3.保存
<huawei>sa

你可能感兴趣的:(网络,HCIA,网络)