欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  新闻

路由器mac地址是什么(通过mac码获取定位)

程序员文章站 2022-05-09 10:29:53
前言mac(media access control)地址用来定义网络设备的位置。mac地址由48比特长、12位的16进制数字组成,其中从左到右开始,0到23bit是厂商向ietf等机构申请用来标识厂...

前言

mac(media access control)地址用来定义网络设备的位置。mac地址由48比特长、12位的16进制数字组成,其中从左到右开始,0到23bit是厂商向ietf等机构申请用来标识厂商的代码,24到47bit由厂商自行分派,是各个厂商制造的所有网卡的一个唯一编号。

mac地址可以分为3种类型:

  • 物理mac地址:这种类型的mac地址唯一的标识了以太网上的一个终端,该地址为全球唯一的硬件地址;
  • 广播mac地址:全1的mac地址为广播地址(ff-ff-ff-ff-ff-ff),用来表示lan上的所有终端设备;
  • 组播mac地址:除广播地址外,第8bit为1的mac地址为组播mac地址(例如01-00-00-00-00-00),用来代表lan上的一组终端。其中以01-80-c2开头的组播mac地址叫bpdu mac,一般作为协议报文的目的mac地址标示某种协议报文。

01 认识mac地址

交换机上面的mac地址分为系统mac接口mac两种。

公众号 网络民工 专注于it技术领域,结合实战经验,为您分享网络技术、系统集成、网络工程等一线技术解析和实践案例等深度干货文章,愿我们一起悦享技术,成就梦想!70篇原创内容

其中接口mac又包括管理网口mac、vlanif接口mac、二层物理接口mac、三层路由主接口mac、子接口mac、二层eth-trunk接口mac、三层eth-trunk接口mac。

系统mac也就是我们所说的设备mac,可以通过命令display bridge mac-address查看。管理网口mac、子接口mac、二层物理接口mac和二层eth-trunk接口mac是相同的,使用的就是系统mac。其他接口mac与系统mac不一致,具体mac地址可以通过display interface查看。

1.1 mac原理

mac地址的定义和分类

mac地址表的定义

mac地址表记录了交换机学习到的其他设备的mac地址与接口的对应关系,以及接口所属vlan等信息。设备在转发报文时,根据报文的目的mac地址查询mac地址表,如果mac地址表中包含与报文目的mac地址对应的表项,则直接通过该表项中的出接口转发该报文;如果mac地址表中没有包含报文目的mac地址对应的表项时,设备将采取广播方式在所属vlan内除接收接口外的所有接口转发该报文。

mac地址表的分类

mac地址表中的表项分为:动态表项、静态表项和黑洞表项。另外交换机的mac地址表中还存在一种业务类型的mac地址表项,譬如:安全mac、mux mac、authen mac、guest mac等。该类mac地址表项是由对应业务维护的,一般是通过动态表项转换来的。

路由器mac地址是什么(通过mac码获取定位)

表2-1 不同mac地址表的特点和作用

mac地址表的组成和作用

mac地址表的组成

mac地址表是以mac地址和vlan id或vsi为索引来唯一标识。当一台目的主机属于多个vlan或vsi时,在mac地址表中就会存在相同mac地址拥有多个不同vlan id或vsi的情况。表2-2中是四条不同的mac地址表项。如第一条mac地址表项的作用是:从设备任意接口进入的目的mac为0011-0022-0034,vlan id为10的报文,都会从ge3/0/1接口转发出去。

路由器mac地址是什么(通过mac码获取定位)

表2-2 mac地址表项

mac地址表的作用

mac地址表用于指导报文进行单播转发。如图2-1中,pc1发往pc3的报文,在到达交换机switch时,根据报文中的目的mac地址mac3和vlan10查询交换机的mac地址表,获取出接口port3,然后报文直接从接口port3转发到pc3,完成数据的转发。

路由器mac地址是什么(通过mac码获取定位)

图2-1 基于mac地址表的转发流程图

mac地址学习和老化

mac地址学习过程

一般情况下,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地址老化过程

为适应网络的变化,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地址数
路由器mac地址是什么(通过mac码获取定位)

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

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地址漂移的情况。出现这种现象一般都意味着网络中存在环路,可以通过查看告警信息和漂移记录,快速定位和排除环路。

路由器mac地址是什么(通过mac码获取定位)

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

如何进行mac地址漂移检测

mac地址漂移检测是利用mac地址出接口跳变的现象,检测mac地址是否发生漂移的功能。

配置mac地址漂移检测功能后,在发生mac地址漂移时,可以上报包括mac地址、vlan,以及跳变的接口等信息的告警。其中跳变的接口即为可能出现环路的接口。网络管理员可以根据告警信息,手工排查网络中环路的源头,也可以使用mac漂移检测提供的后续动作,使跳变的端口down或者vlan从端口中退出,实现自动破环。

路由器mac地址是什么(通过mac码获取定位)

图2-5 mac地址漂移检测组网图

如图2-5网络中,若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地址表项不会覆盖之前正确的表项。但如果网络设备下电,仍会学习到伪造网络设备的mac地址,当网络设备再次上电时将无法学习到正确的mac地址。

如图2-6所示,为防止非法用户伪造服务器mac地址入侵switch,可以提高服务器侧接口port1的mac地址学习优先级。

路由器mac地址是什么(通过mac码获取定位)

图2-6 mac防漂移应用组网图

mac刷新arp

在以太网中,主机设备是根据mac地址来发送、接收以太网数据帧。arp用于提供ip地址到mac地址的映射。当不同网段间通信时,需要使用arp表项来将ip地址映射到正确的mac地址及相应的出接口上。

一般来说设备上的mac表项和arp表项的出接口是一致的。如图2-7所示,在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地址是什么(通过mac码获取定位)

图2-7 配置mac刷新arp功能之前

mac刷新arp可以实现在mac出接口更新时,直接刷新arp表项的出接口的功能。如图2-8所示,在配置mac刷新arp功能后,在t2时间点,mac地址表项出接口刷新为ge1/0/2后,直接把arp表项的出接口刷新为ge1/0/2。解决了t2时间点和t3时间点之间,arp表项出接口不可用的问题,避免了业务通信的中断。

路由器mac地址是什么(通过mac码获取定位)

图2-8 配置mac刷新arp功能之后

mac刷新arp功能多用在vrrp主备环境下挂服务器的组网中(通过mac刷新arp加快vrrp流量切换),也可以用在二层破环协议stp、smartlink等进行三层流量切换的场景。

02 mac应用场景

2.1 通过mac防漂移防止用户攻击

在部署二层网络时,可以使用mac地址防漂移的功能,防止非法用户的攻击。

如图2-9所示,某企业网络中,用户需要访问企业的服务器。如果某些非法用户从其他接口假冒服务器的mac地址发送报文,则服务器的mac地址将在其他接口学习到。这样用户发往服务器的报文就会发往非法用户,不仅会导致用户与服务器不能正常通信,还会导致一些重要用户信息被窃取。为防止非法用户伪造服务器mac地址入侵switch,在switch上可配置mac防漂移功能,设置合法用户的mac学习优先级高于非法用户的mac学习优先级,在非法用户攻击时就不会触发mac地址出接口漂移。

路由器mac地址是什么(通过mac码获取定位)

图2-9 mac地址防漂移组网图

2.2 通过mac漂移检测快速发现环路

在组网发生环路时,环路上的故障点一定存在mac地址漂移现象。利用这一现象,可以快速的判断网络中是否存在环路。

当设备出现如下现象时,可以开启mac漂移检测功能,判断是否是环路导致的。

  • mac地址表项时有时无
  • ping操作时通时不通
  • cpu使用率升高,出现超过阈值的告警

mac漂移检测功能相比其他环路检测功能的优点是配置简单。各类环路检测特性对比如表2-4所示。

路由器mac地址是什么(通过mac码获取定位)

表2-4 环路检测特性比较

2.3 通过mac刷新arp加快vrrp流量切换

vrrp备份组下挂的设备是服务器时,使用mac刷新arp的功能,可以加快vrrp主备切换的性能,减少业务中断时间。

虚拟路由冗余协议vrrp(virtual router redundancy protocol)通过把几台路由设备联合组成一台虚拟的路由设备,将虚拟网关设备的ip地址作为用户的默认网关实现与外部网络通信。当网关设备发生故障时,vrrp机制能够选举新的网关设备承担数据流量,从而保障网络的可靠通信。

一般情况下,如图2-10所示用户hosta通过switch双归属到switcha和switchb。在switcha和switchb上配置vrrp备份组,实现链路冗余备份。当switcha和switch之间的连线坏掉时,mac和arp表项可以及时切换到switch和switchb的连线上。

路由器mac地址是什么(通过mac码获取定位)

图2-10 vrrp典型组网图

而在有些情况下如图2-11,vrrp备份组下挂的设备,不是交换机而是服务器server。server发送报文时,一般情况下只会选择一个网口发包,当检测到网络故障或者流量异常时,切换到另外一个网口发包。

  • switcha为vrrp主设备,一开始服务器使用port2发送报文,此时switcha学习到的服务器arp表项和mac表项都在port2接口上,switchb学习的服务器mac在port1接口;
  • 当服务器检测到port2故障时,服务器切换至port1继续发送业务报文,这时switcha学习到的服务器mac地址会刷新到port1,但如果服务器切换转发接口后不主动发送arp请求报文的话,arp表项还是在port2接口上。这样switcha发往服务器的报文就会从接口port2接口发出去,而不能被正确转发,直到该arp表项老化。

这种情况下就可以在switch上配置mac刷新arp功能,当mac表项的出接口变化时,会即时更新arp表项的出接口,从而保证mac表项和arp表项的一致性。

路由器mac地址是什么(通过mac码获取定位)

图2-11 vrrp下挂服务器组网图

网络民工网络民工专注于it技术领域,结合实战经验,为您分享网络技术、系统集成、网络工程等一线技术解析和实践案例等深度干货文章,愿我们一起悦享技术,成就梦想!70篇原创内容

公众号

关于mac地址配置示例,请期待下期内容:

  • 1. 配置静态mac地址示例
  • 2. 配置黑洞mac地址示例
  • 3. 配置基于接口的mac地址学习限制示例
  • 4. 配置基于vlan的mac地址学习限制示例
  • 5. 配置基于vsi的mac地址学习限制示例
  • 6. 配置mac防漂移示例
  • 7. 配置mac地址漂移检测示例