【2022争霸赛*干货满满】MAC地址的工作原理
  

如沐清风 1385

{{ttag.title}}
简介:
MAC(Media Access Control)地址用来定义网络设备的位置。
组成:
MAC地址由48比特长、12位的16进制数字组成,其中从左到右开始,0到23bit是厂商向IETF等机构申请用来标识厂商的代码,24到47bit由厂商自行分派,是各个厂商制造的所有网卡的一个唯一编号。

MAC地址可以分为3种类型:
1、单播(物理)MAC地址:MAC地址的第8bit为0是单播地址,这种类型的MAC地址唯一的标识了以太网上的一个终端,该地址为全球唯一的硬件地址
2、广播MAC地址:全1的MAC地址为广播地址(FF-FF-FF-FF-FF-FF),用来表示LAN上的所有终端设备
3、组播MAC地址:除广播地址外,第8bit为1的MAC地址为组播MAC地址(例如01-00-00-00-00-00),用来代表LAN上的一组终端

交换机处理数据帧的行为
交换机对于从传输介质进入某一端口的帧的处理行为一共有3种。

转发:

泛洪:

丢弃:

MAC地址表的定义
MAC地址表是一张二层转发表,记录了相连设备的MAC地址与接口号以及所属的VLAN ID之间的对应关系。在转发数据时,路由设备根据报文中的目的MAC地址和vlan id查询MAC地址表,快速定位出接口,减少广播。

MAC地址表的分类
MAC地址表中的表项分为:静态表项、动态表项、黑洞表项

MAC地址表类型

MAC地址表的作用
MAC地址表用于指导报文进行单播转发。如图中,PC1发往PC3的报文,在到达交换机Switch时,根据报文中的目的MAC地址MAC3和VLAN10查询交换机的MAC地址表,获取出接口Port3,然后报文直接从接口Port3转发到PC3,完成数据的转发。

图2-1  基于MAC地址表的转发流程图
MAC地址学习过程
一般情况下,MAC地址表是设备根据收到的数据帧里的源MAC地址自动学习而建立的。

图2-2  MAC地址学习示意图
如图2-2,HostA向SwitchA发送数据时,SwitchA从数据帧中解析出源MAC地址(即HostA的MAC地址)和VLAN ID。
  • 如果MAC地址表中不存在该MAC地址表项,设备则将这个新MAC地址以及该MAC地址对应的PortA和VLAN ID作为一个新的表项加入到MAC地址表中。
  • 如果MAC地址表中已经存在该MAC地址表项,设备将通过重置该表项的老化时间,对该表项进行更新。


MAC地址老化过程
为适应网络的变化,MAC表需要不断更新。MAC表中自动生成的表项(即动态表项)并非永远有效,每一条表项都有一个生存周期,到达生存周期仍得不到更新的表项将被删除,这个生存周期被称作老化时间。如果在到达生存周期前记录被更新,则该表项的老化时间重新计算。

图2-3  MAC地址老化过程示意图
如图2-3所示,设备MAC地址老化时间设置为T。在t1时刻有源MAC地址为00e0-fc00-0001、VLAN为1的报文从某接口进入。假定该接口已加入VLAN 1。如果之前MAC地址表不存在关于(MAC: 00e0-fc00-0001,VLAN: 1)的任何种类表项,那么这个地址就会作为动态MAC地址表项学习到地址表里,同时该表项的命中标志位被置1。

设备周期性(每经过T时间)地对所有学习到的动态MAC地址表项进行检查。
1. 在t2时刻,检查到动态表项(MAC: 00e0-fc00-0001,VLAN: 1)的命中标志位为1,则将该表项的命中标志位置为0,但不删除这条表项。
2. 在t2时刻和t3时刻之间没有这种报文进入设备,那么该表项的命中标志位会一直保持为0。
3. 在t3时刻,设备检查到该表项的命中标志位为0,认为该表项的老化时间到达,将删除此条表项。
如上所述,通过自动老化,一条动态表项在MAC地址表存在的最短时间是设备所配置的老化时间T到2T之间。
设备MAC地址老化时间可手动设置。通过设置此时间,可以灵活控制动态学习到的MAC表项在MAC地址表存在的时间。
MAC地址学习控制
由于MAC地址表的容量是有限的,当黑客伪造大量源MAC地址不同的报文发送到设备后,设备上的MAC地址表项资源可能会被耗尽。当MAC表被填满后,即使它再收到正常的报文,也无法学习到报文中的源MAC地址,导致报文广播转发,浪费带宽资源。

为了解决以上问题,设备提供了两种方式对MAC地址学习进行控制:
  • 基于VLAN或接口关闭学习MAC能力
  • 基于VLAN或接口限制MAC地址数



表2-3  MAC地址学习控制方式说明


什么是MAC地址漂移

MAC地址漂移是指设备上一个VLAN内有两个端口学习到同一个MAC地址,后学习到的MAC地址表项覆盖原MAC地址表项的现象。图2-4所示,MAC地址为0011-0022-0034,VLAN ID为2的表项,出接口由GE1/0/1刷新为GE1/0/2,这就是MAC地址漂移。设备出现MAC地址漂移时,设备CPU占用率会有不同程度的升高。

正常情况下,网络中不会在短时间内出现大量MAC地址漂移的情况。出现这种现象一般都意味着网络中存在环路,可以通过查看告警信息和漂移记录,快速定位和排除环路。

图2-4  MAC地址漂移示意图

MAC地址漂移影响:
①导致数据帧无法正常转发到目的地址,出现大量的丢包
②消耗设备的性能
如何进行MAC地址漂移检测
MAC地址漂移检测是利用MAC地址出接口跳变的现象,检测MAC地址是否发生漂移的功能。配置MAC地址漂移检测功能后,在发生MAC地址漂移时,可以上报包括MAC地址、VLAN,以及跳变的接口等信息的告警。其中跳变的接口即为可能出现环路的接口。网络管理员可以根据告警信息,手工排查网络中环路的源头,也可以使用MAC漂移检测提供的后续动作,使跳变的端口down或者VLAN从端口中退出,实现自动破环。

若SwitchC和SwitchD之间误接网线,则SwitchB、SwitchC、SwitchD之间形成环路。当SwitchA上Port1接口从网络中收到一个广播报文后转发给SwitchB,该报文经过环路,会被SwitchA上Port2接口收到。配置MAC地址漂移检测功能,SwitchA就会感知到MAC地址出接口跳变的现象。若连续出现此现象,SwitchA就会上报MAC漂移告警,提醒管理员进行维护。

注释:
MAC地址漂移检测是单台设备根据MAC学习变化感知到流量拓扑变化,是一种单点技术,无法精确感知网络拓扑。因而该技术应用有一定的场景限制,建议使用在下挂网络可能会成环的场景。

如何防止MAC地址漂移
网络中产生环路或非法用户进行网络攻击都会造成MAC地址发生漂移,导致MAC地址不稳定。
在规划网络时,可以通过下面两种方式来避免这种情况:
  • 配置接口MAC地址学习的优先级:


       不同接口学到相同的MAC地址表项,那么高优先级接口学习到的MAC地址表项可以覆盖低优先级接口学习到的MAC地址表项。
        默认情况下接口MAC地址学习优先级为0,可调整范围为(0-3)
  • 配置不允许相同优先级的接口MAC地址覆盖。


       当伪造网络设备所连接口的优先级与安全的网络设备相同时,后学习到的伪造网络设备的MAC地址表项不会覆盖之前正确的表项。

MAC刷新ARP

在以太网中,主机设备是根据MAC地址来发送、接收以太网数据帧。ARP用于提供IP地址到MAC地址的映射。当不同网段间通信时,需要使用ARP表项来将IP地址映射到正确的MAC地址及相应的出接口上。
一般来说设备上的MAC表项和ARP表项的出接口是一致的。
  • 在T1时间点,MAC地址表项和ARP表项的出接口是一致的,都是GE1/0/1。当端口切换后
  • 在T2时间点,MAC地址表项的出接口在收到报文时立即刷新为GE1/0/2,但是ARP表项的出接口还是GE1/0/1,需要等待T3时间点即ARP表项的老化时间到达后,通过ARP老化探测,才会刷新为GE1/0/2。
  • 这样就在T2时间点和T3时间点之间,ARP表项的出接口是不可用的,会导致不同网段间设备的通信中断。



  • MAC刷新ARP可以实现在MAC出接口更新时,直接刷新ARP表项的出接口的功能
  • 在配置MAC刷新ARP功能后,在T2时间点,MAC地址表项出接口刷新为GE1/0/2后,直接把ARP表项的出接口刷新为GE1/0/2。
  • 解决了T2时间点和T3时间点之间,ARP表项出接口不可用的问题,避免了业务通信的中断。




扩展(与ARP和路由有关):
三层交换机如何让判断数据帧是二层还是三层转发?
比较数据帧的目的MAC与数据帧所属的vlan的vlanif的MAC地址,如果MAC地址相同,则进行三层转发。如果不同,则进行二层转发。

两台主机接入三层交换机的工作过程

同子网通信:
  • 主机A广播发送ARP-request请求主机B的MAC地址,主机B收到后单播回复ARP-replay进行回复
  • 主机A根据ARP-reply学习到的主机B的MAC地址后,封装二层头发送
  • 交换机将数据帧转发给主机B(交换机在主机A和主机B之间交互报文时,已经学习到两者的MAC地址)



跨子网通信:
  • 主机A广播发送ARP-request请求网关的MAC地址,网关收到后单播回复ARP-reply报文
  • 主机A根据ARP-reply学习到网关的MAC地址后,封装二层头发送
  • 交换机收到数据帧后发现目的MAC地址为网关地址,剥掉所属的vlan tag,查找路由表,发现存在对应的直连路由,查找ARP表进行二层封装,然后查找所属vlan 的MAC地址表进行转发



端口安全

1、通过将接口学习到的动态 MAC 地址转换为安全 MAC 地址(包括安全动态 MAC、 安全静态 MAC 和 Sticky MAC) , 阻止非法用户通过本接口和交换机通信,从而增强设备的安全性。
2、安全MAC地址分类
· 安全动态MAC地址。开启端口安全而未开启 Sticky MAC 功能时转换的 MAC 地址
· 安全静态MAC地址。开启端口安全而未开启 Sticky MAC 功能时转换的 MAC 地址
· Sticky MAC地址。开启端口安全后又同时开启 Sticky MAC 功能后转换到的 MAC 地址
3、接口开启端口安全功能时, 接口上之前学习到的动态 MAC 地址表项将被删除, 之后学习到的 MAC 地址将变为安全动态 MAC 地址。
4、接口开启 Sticky MAC 功能时, 接口上的安全动态 MAC 地址表项将转化为 Sticky MAC 地址, 之后学习到的 MAC 地址也变为 Sticky MAC 地址。
5、接口去开启端口安全功能时, 接口上的安全动态 MAC 地址将被删除, 重新学习动态 MAC地址。
6、接口去开启 Sticky MAC 功能时, 接口上的 Sticky MAC 地址, 会转换为安全动态 MAC 地址。

54204633fda5475602.png (82.19 KB, 下载次数: 35)

54204633fda5475602.png

打赏鼓励作者,期待更多好文!

打赏
1人已打赏

339015 发表于 2022-10-9 19:50
  
感谢楼主分享数通基础知识中有关MAC地址的原理,内容详实,期待楼主带来更多分享
沧海 发表于 2022-10-7 19:15
  
感谢楼主分享,学习一下!!!!
发表新帖
热门标签
全部标签>
每日一问
技术盲盒
干货满满
技术笔记
新版本体验
功能体验
产品连连看
标准化排查
2023技术争霸赛专题
技术晨报
GIF动图学习
运维工具
用户认证
秒懂零信任
技术咨询
信服课堂视频
解决方案
VPN 对接
SANGFOR资讯
专家分享
社区帮助指南
自助服务平台操作指引
畅聊IT
答题自测
专家问答
技术圆桌
在线直播
MVP
网络基础知识
安装部署配置
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
每日一记
云计算知识
原创分享
sangfor周刊
项目案例
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
玩转零信任
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
深信服技术支持平台
答题榜单公布
纪元平台
通用技术
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选

本版版主

12
185
6

发帖

粉丝

关注

本版达人

LoveTec...

本周分享达人

新手24116...

本周提问达人