一种交换机mac地址老化方法

文档序号:10597310阅读:325来源:国知局
一种交换机mac地址老化方法
【专利摘要】本发明提供一种交换机MAC地址老化方法,包括以下步骤:S1、配置MAC地址的老化周期和老化周期粒度;S2、以报文的源MAC地址和VLAN ID为键值做Hash索引,判断是否已经存在对应表项;S3、若MAC地址表中已经存在对应表项,则将当前时间更新为表项的更新时间戳;若MAC地址表中不存在对应表项,则添加一条表项,将当前时间更新为该表项的更新时间戳;S4、当老化周期粒度到来时,老化进程扫描MAC地址表,计算当前时间与该更新时间戳的时间差,判断时间差是否大于老化周期;S5、若该时间差小于老化周期,重复步骤S4;S6、若该时间差大于老化周期,则删除该表项。本发明降低了老化时间的误差,使得交换机的转发行为更加得准确,提高了MAC地址表的有效利用率。
【专利说明】
一种交换机MAC地址老化方法
技术领域
[0001 ]本发明属于交换机领域,具体涉及一种交换机MAC地址老化方法。【背景技术】
[0002]交换机基于MAC地址表来实现二层数据转发,MAC地址表中存放了MAC地址、VLAN ID和端口号的映射关系。交换机在端口接收到报文后允许自动学习MAC地址,将报文的源 MAC地址、VLAN ID和端口号添加到MAC地址表中。由于MAC地址表空间有限,不可能无限制的学习地址,因此引入了老化时间的机制。交换机通过老化时间的机制定期地清理在MAC地址表中不常用的表项,为新的地址学习提供了空间,保证了交换机的正常转发。
[0003]目前常用的做法是在交换机中创建两个进程,一个地址学习进程,一个地址老化进程,两个进程是相对独立运行的,其原理如下:
[0004]地址学习进程:交换机端口在接收到报文后,以报文的源MAC地址和VLAN ID为键值做Hash索引,查找MAC地址表。如果MAC地址表中还没有该MAC地址对应的表项,则进行地址学习,将该报文的源MAC地址,VLAN ID和端口号映射添加到MAC地址表中,同时将该表项的hit位置1,表示该MAC地址是活跃的;如果MAC地址表中已经存在了该MAC地址,则只更新该表项的hit位,将hit位置1,表示该MAC地址仍然保持活跃;
[0005]地址老化进程:老化时间缺省为300秒,允许用户设置的范围从10秒至1000000秒; 地址老化进程每隔一个老化周期就会扫描一次MAC地址表,将其中hit位为0的表项直接删除掉;同时将hit位为1的表项hit位置0,表示待删除。
[0006]由于地址学习进程和地址老化进程是相互独立工作的,因此一条MAC地址的老化时间会存在误差,这个误差为设置老化时间的1-2倍,具体误差如图3所示。图3(a)所示的情形是:表项a刚刚更新,其hit位置1,随即老化周期到来,其hit位置0,在下一个老化周期到来时,删除该表项a对应的MAC地址,此时MAC地址的老化时间为一个老化周期;图3(b)所示的情形是:表项a在一个老化周期刚刚结束时更新,其hit位置1,下一个老化周期到来时,其 hit位置0,再一个老化周期到来时,删除该表项a对应的MAC地址,此时MAC地址的老化时间为两个老化周期。过长的老化时间会使交换机内的MAC地址表超期,使交换机做出一些不合理的转发决定,同时也降低了 MAC地址表的有效利用率。
【发明内容】

[0007]本发明的目的在于针对现有技术的不足,提供一种交换机MAC地址老化方法,该交换机MAC地址老化方法可以减少MAC地址老化时间的误差,使得交换机的转发行为更加得准确,也提高了MAC地址表的有效利用率。
[0008]为达到上述要求,本发明采取的技术方案是提供一种交换机MAC地址老化方法,包括以下步骤:
[0009]S1、配置MAC地址的老化周期和老化周期粒度;[〇〇1〇] S2、以报文的源MAC地址和VLAN ID为键值做Hash索引,查找MAC地址表,判断是否已经存在对应表项;
[0011] S3、若MAC地址表中已经存在对应表项,则将当前时间更新为所述表项的更新时间戳;若MAC地址表中不存在对应表项,则添加一条表项,将当前时间更新为该表项的更新时间戳;
[0012] S4、当老化周期粒度到来时,老化进程扫描MAC地址表,计算当前时间与该更新时间戳的时间差,判断该时间差是否大于老化周期;[〇〇13] S5、若该时间差小于老化周期,重复步骤S4;
[0014] S6、若该时间差大于老化周期,则删除该表项。
[0015]与现有技术相比,该交换机MAC地址老化方法具有的优点如下:引入老化周期粒度和更新时间戳,计算每次老化周期粒度到来时当前时间与更新时间戳的差值,通过比较该差值与老化周期的大小来判断是否删除表项,将MAC地址老化时间误差从0秒至MAC地址老化周期时间,降低到从0秒至MAC地址老化周期粒度时间,大大的降低了老化时间的误差,使得交换机的转发行为更加得准确,也提高了 MAC地址表的有效利用率。【附图说明】
[0016]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,在这些附图中使用相同的参考标号来表示相同或相似的部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:[〇〇17]图1为本申请的流程图;
[0018]图2为本申请一种实施例的示意图;
[0019]图3为现有技术的示意图。【具体实施方式】
[0020]为使本申请的目的、技术方案和优点更加清楚,以下结合附图及具体实施例,对本申请作进一步地详细说明。为简单起见,以下描述中省略了本领域技术人员公知的某些技术特征。[0021 ]根据本发明的一个实施例,提供一种交换机MAC地址老化方法,如图1所示,包括以下步骤:
[0022] S1、配置MAC地址的老化周期和老化周期粒度,老化周期的范围为10-1000000S;老化周期粒度为MAC地址老化进程扫描一次MAC地址表的时间间隔,老化周期粒度大于或等于 l〇s,且小于或等于老化周期;老化周期和老化周期粒度均为用户可配置,可通过设置软件变量或配置寄存器来确定;[〇〇23] S2、以报文的源MAC地址和VLAN ID为键值做Hash索引,查找MAC地址表,判断是否已经存在对应表项;[〇〇24] S3、若MAC地址表中已经存在对应表项,则将当前时间更新为该表项的更新时间戳;若MAC地址表中不存在对应表项,则添加一条表项,将当前时间更新为该表项的更新时间戳;
[0025] S4、当老化周期粒度到来时,老化进程扫描MAC地址表,计算当前时间与该更新时间戳的时间差,判断该时间差是否大于老化周期;
[0026]S5、若该时间差小于老化周期,重复步骤S4;
[0027]S6、若该时间差大于老化周期,则删除该表项。
[0028]根据本发明的一个实施例进行举例说明,设置老化时间为300秒,老化周期粒度为 75秒。
[0029]图2(a)所示的情况是更新或添加表项a后,随即第一次老化周期粒度到来,具体操作如下:
[0030]101:更新或添加表项a,将当前时间保存到更新时间戳中;
[0031]102:第一次老化周期粒度到来,老化进程第一次扫描MAC地址表,计算当前时间和 MAC地址表项a中保存的时间戳的时间差,略大于0秒,不对地址表项a做任何操作;
[0032]103:第二次老化周期粒度到来,老化进程第二次扫描MAC地址表,计算当前时间和 MAC地址表项a中保存的时间戳的时间差,略大于75秒,不对地址表项a做任何操作;[〇〇33]104:第三次老化周期粒度到来,老化进程第三次扫描MAC地址表,计算当前时间和MAC地址表项a中保存的时间戳的时间差,略大于150秒,不对地址表项a做任何操作;
[0034]105:第四次老化周期粒度到来,老化进程第四次扫描MAC地址表,计算当前时间和 MAC地址表项a中保存的时间戳的时间差,略大于225秒,不对地址表项a做任何操作;
[0035]106:第五次老化周期粒度到来,老化进程第五次扫描MAC地址表,计算当前时间和 MAC地址表项a中保存的时间戳的时间差,略大于300秒,大于老化周期,删除MAC地址表项a。
[0036]由以上操作方式可知,在2(a)所示的情况下,MAC地址表项a的老化时间为一个老化周期,老化时间误差为〇秒。
[0037]图2(b)所示的情况是一次老化周期粒度结束后,随即更新或添加表项a,具体操作如下:
[0038]201:更新或添加表项a,将当前时间保存到时间戳中;[〇〇39]202:第一次老化周期粒度到来,老化进程第一次扫描MAC地址表,计算当前时间和MAC地址表项a中保存的时间戳的时间差,略小于75秒,不对地址表项a做任何操作;
[0040]203:第二次老化周期粒度到来,老化进程第二次扫描MAC地址表,计算当前时间和MAC地址表项a中保存的时间戳的时间差,略小于150秒,不对地址表项a做任何操作;[〇〇411204:第三次老化周期粒度到来,老化进程第三次扫描MAC地址表,计算当前时间和MAC地址表项a中保存的时间戳的时间差,略小于225秒,不对地址表项a做任何操作;[〇〇42]205:第四次老化周期粒度到来,老化进程第四次扫描MAC地址表,计算当前时间和MAC地址表项a中保存的时间戳的时间差,略小于300秒,不对地址表项a做任何操作;[〇〇43]206:第五次老化周期粒度到来,老化进程第五次扫描MAC地址表,计算当前时间和MAC地址表项a中保存的时间戳的时间差,略小于375秒,大于老化周期,删除MAC地址表项a;
[0044]由以上操作方式可知,在2(b)所示的情况下,MAC地址表项a的老化时间为一个老化周期加一个老化周期粒度,老化时间误差为一个老化周期粒度。[0〇45]因此,米用本发明中优化的老化时间机制后,老化时间范围为300秒-375秒,误差为0-75秒,而传统MAC地址老化机制的老化时间范围为300秒-600秒,老化时间误差为0-300 秒,本发明大大的降低了老化时间的误差,使得交换机的转发行为更加得准确,也提高了 MAC地址表的有效利用率。
[0046]对于汇聚层、核心层交换机而言,交换机内部需要转发的数据量较大,涉及到的MAC地址表项数量巨大。本发明在实际运用时,为了保证性能,可以采用基于硬件的MAC地址自动学习及老化的方法。具体实施是将本发明中提到的MAC地址老化的方法逻辑,集成到交换芯片中,通过硬件来实现相关算法和逻辑,同时提供相关寄存器供用户来配置老化时间、 老化周期粒度等参数。
[0047]对于接入层交换机而言,交换机内部需要转发的数据量较汇聚层、核心层交换机来说较少,涉及到的MAC地址表项数量相对较少。本发明在实际运用时,为了考虑硬件成本及增加功能灵活性,可以采用基于软件的MAC地址自动学习及老化的办法。具体实施是交换芯片收到的报文上送CPU,由CPU对报文进行解析,并对MAC地址进行学习和老化。这样可以将本发明中提到的MAC地址自动学习及老化的办法,集成到软件中,通过软件来实现相关算法和逻辑,同时也需要为用户提供老化时间,老化周期粒度等参数的配置。[〇〇48]以上所述实施例仅表示本发明的几种实施方式,其描述较为具体和详细,但并不能理解为对本发明范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明保护范围。因此本发明的保护范围应该以所述权利要求为准。
【主权项】
1.交换机MAC地址老化方法,其特征在于,包括以下步骤:51、配置MAC地址的老化周期和老化周期粒度;52、以报文的源MAC地址和VLAN ID为键值做Hash索引,查找MAC地址表,判断是否已经 存在对应表项;53、若MAC地址表中已经存在对应表项,则将当前时间更新为所述表项的更新时间戳; 若MAC地址表中不存在对应表项,则添加一条表项,将当前时间更新为所述表项的更新时间 戳;54、当老化周期粒度到来时,老化进程扫描MAC地址表,计算当前时间与所述更新时间 戳的时间差,判断所述时间差是否大于老化周期;55、若所述时间差小于老化周期,重复步骤S4;56、若所述时间差大于老化周期,则删除所述表项。2.根据权利要求1所述的交换机MAC地址老化方法,其特征在于,所述老化周期的范围 为10-1000000s〇3.根据权利要求2所述的交换机MAC地址老化方法,其特征在于,所述老化周期粒度大 于或等于10s,且小于或等于老化周期。
【文档编号】H04L29/12GK105959430SQ201610377793
【公开日】2016年9月21日
【申请日】2016年5月31日
【发明人】冯雪峰, 詹晋川, 杨清, 夏超, 杨鑫
【申请人】深圳市风云实业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1