一种媒体访问控制地址表的同步方法及装置的制作方法

文档序号:7719958阅读:200来源:国知局
专利名称:一种媒体访问控制地址表的同步方法及装置的制作方法
技术领域
本发明涉及媒体访问控制(MAC)技术,尤其涉及一种MAC地址表的同步方法及装置。
背景技术
随着数据通讯技术的发展,以太网通讯设备采用以太网交换芯片或网络处理器芯片基于MAC地址进行数据帧的硬件转发。通常,MAC地址的学习和老化都由交换芯片自动进行。为了进行MAC地址的管理,以及执行一些数据帧的中央处理单元(CPU)软件转发,以太网通讯设备需要在内存创建一个MAC地址表。其中,交换芯片或网络处理器芯片中的MAC地址表称为硬件MAC地址表,可简称为硬件表;CPU内存中的MAC地址表称为软件MAC地址表,可简称为软件表。 由于硬件表是自动进行学习和老化,所以需要CPU不停地进行软件表和硬件表的同步,MAC地址表的软硬同步是以太网通讯设备CPU的重要工作之一。 MAC地址表实现同步的传统方法是周期性的将硬件表复制到CPU内存,由于不同硬件的MAC地址表定义格式和表项组织方式的不同,CPU需要将不同的硬件表解析为符合软件表的格式,然后按软件表的表项组织方式存入软件表。在以太网通讯设备包括多个交换芯片的情况下,也就有多个硬件表,每个同步周期CPU需要将全部硬件表读入内存进行解析处理,计算量很大。 改进的MAC地址表同步方法是将全表同步改为同步变化表项,即将同步整个MAC地址表改为只同步在每个周期内学习和老化的MAC地址表项。对于有多个交换芯片或网络处理器的以太网交换设备,上报学习和老化的MAC地址使软件表更能够较快地计算出设备中各交换芯片和网络处理器硬件表的合集。 为了得到每个硬件表在相邻两个同步周期之间的变化,需要在内存为每个芯片硬件表建立两个影子(Shadow)表,分别保存当前同步周期的硬件表拷贝和前一同步周期的硬件表拷贝。通常,两个Shadow表轮流使用,每一次检测,CPU将硬件表复制到一个当前使用的Shadow表中,另一个Shadow表则存放上一个周期复制的硬件表。将两张Shadow表进行比较,即可检测出学习和老化的MAC地址表项,同步到CPU软件表。 但是,上述改进的同步方法是以空间换时间,每个交换芯片或网络处理器中需要开辟两个与硬件表相同大小的内存块,如此,极大地增加了内存开销。

发明内容
有鉴于此,本发明的主要目的在于提供一种MAC地址表的同步方法及装置,能在
实现MAC地址表同步的同时,减少内存的占用,提高同步效率。 为达到上述目的,本发明的技术方案是这样实现的 本发明提供了一种媒体访问控制MAC地址表的同步方法,包括 将硬件表划分为一个以上MAC地址块,设置检测周期为一个MAC地址块的大小,同
3步周期为一个硬件表大小; 在内存建立环形影子Shadow表,所述Shadow表大小为硬件表加一个MAC地址块大小; 每个检测周期复制和检测一个MAC地址块的表项,到达同步周期时,将检测出的学习和老化的MAC地址同步到软件表。 上述方案中,所述每个检测周期复制和检测一个MAC地址块的表项具体为每个检测周期顺序复制硬件表中一个MAC地址块的表项到环形Shadow表的MAC —个地址块中;将环形Shadow表当前复制的MAC地址块的表项与其相邻的前一 MAC地址块的表项进行比较,检测出学习和老化的MAC地址。 其中,所述将硬件表划分为一个以上MAC地址块为将硬件表划分为4等分、64等分、256等分。 上述方案中,所述环形Shadow表在物理上为连续内存。所述环形Shadow表按逆时针方向复制和检测,或按顺时针方向复制和检测。 本发明还提供了 一种MAC地址表的同步装置,包括设置划分模块、Shadow表建立模块、复制和检测模块、同步模块;其中, 所述设置划分模块,用于将硬件表划分为一个以上MAC地址块,并设置检测周期为一个MAC地址块大小,同步周期为一个硬件表大小; 所述Shadow表建立模块,在内存建立环形Shadow表,该环形Shadow表大小为硬件表加一个MAC地址块大小; 所述复制和检测模块,每个检测周期复制和检测一个MAC地址块的表项; 所述同步模块,在到达同步周期时,将所有检测出的学习和老化的MAC地址同步
到软件表。 本发明所提供的MAC地址表同步方法及装置,将硬件表划分为若干MAC地址土央,设置检测周期为一个MAC地址块的大小,同步周期为一个硬件表大小;并且,在内存中建立Shadow表时,将Shadow表的大小设置为硬件表加一个MAC地址块大小的环形表;每个检测周期复制和检测一个MAC地址块,到达同步周期时,即可将检测出的学习和老化的MAC地址同步到软件表。如此,大大减少了 MAC地址表同步时的内存使用量,同时化整为零地进行硬件表的复制和检测,大大提高了MAC地址表同步的实时性。 从上述技术方案可以看出,本发明建立的芯片硬件表的Shadow表,由现有技术两个与MAC地址硬件表同样大小的表减少为一个硬件表加一个MAC地址块大小的环形表,内存的使用量减小了将近一半。例如,假设将MAC地址硬件表64等分,则芯片硬件表的检测周期为同步周期的64分之一,且需要建立的Shadow表内存大小为芯片硬件表的65/64,显然,现有技术需要的内存大小为本发明芯片硬件表的2倍。 本发明将MAC地址表同步周期等分为更小的检测周期,每次检测周期的硬件表复制数量相应同比例减少,在检测周期上报MAC地址的学习和老化,提高了 MAC地址表同步的实时性,使CPU软件表在运行时更加与芯片硬件表一致。 另外,芯片硬件表的全表复制和检测操作一般比较笨重,而本发明将该操作分解为比较小的操作,有利于CPU的任务调度,对于多进程的操作系统而言,可以减小进程间的相互影响。


图1为本发明MAC地址表同步方法的实现流程示意图; 图2为本发明实施例一个芯片硬件表与其内存中Shadow表的关系示意 图3为图2实施例同步起始运行时MAC地址表项复制和检测状态示意 图4为图2实施例一个同步周期MAC地址表项复制和检测的过程示意 图5为图2实施例硬件表复制和检测的处理流程示意图。
具体实施例方式
本发明的基本思想是将硬件表划分为若干MAC地址块,设置检测周期为一个MAC地址块的大小,同步周期为一个硬件表大小;在内存中建立Shadow表时,将Shadow表的大小设置为硬件表加一个MAC地址块大小的环形表;相应的,每个检测周期只复制和检测一个MAC地址块的表项,到达同步周期时,可将检测出的学习和老化的MAC地址同步到软件表。 实际应用中,所述划分若干MAC地址块一般需要根据直接存储器访问(DMA)和CPU的执行效率,选择使用等分值,如4等分、64等分、256等分,甚至更大。
本发明中,对于支持MAC地址表DMA的交换芯片和网络处理器芯片,各芯片的硬件表复制和检测可以并发进行,也就是说,CPU在进行一个芯片硬件表检测的同时,其它芯片可以通过DMA进行各自硬件表的复制。CPU在检测完成一个芯片的MAC地址表后,重新启动这个芯片的DMA进行新的MAC地址表复制,然后转而进行其它交换芯片的MAC地址表检测。这样,可使芯片硬件表的复制和CPU的检测形成流水线,提高MAC地址表的同步效率。
本发明的具体实现中,不再进行所有芯片硬件表的全表复制和检测,每次只复制和检测一个芯片硬件表的一部分MAC地址表项,即一个MAC地址块。采用化整为零的方式,将一个同步周期在时间上等分为若干个复制和检测的子周期,称为检测周期,比如将64K大小的硬件表等分为八个小块,每个小块8K,检测周期为8K。通过设置DMA读取地址的范围和CPU检测的内存块的大小,来完成各交换芯片硬件表的复制和检测,每个检测周期只复制和检测一个MAC地址块的表项,MAC地址块的表项数为硬件表的表项总数除以等分的数量。其中,DMA读取地址的范围值为一个MAC地址块的表项数,CPU检测的内存块的大小为一个MAC地址小块的表项数;复制MAC地址块的表项由DMA完成,检测MAC地址块的表项由CPU完成。 本发明中,为每个芯片硬件表在内存建立的Shadow表,在物理上是连续的内存,内存连续便于Shadow表的管理和快速访问;在逻辑上组织成环形,MAC地址表项的复制和检测,均沿着环形Shadow表依次进行,可以顺时针进行,也可以逆时针进行;该Shadow表的表项数等于一个硬件表的表项数加上一个MAC地址块的表项数。其中, 一个MAC地址块的表项数也就是一个检测周期复制的MAC地址表项数。 具体到本发明的检测,由于每个芯片的Shadow表都比该芯片的硬件表大一个MAC地址块,也就是多一个检测周期的MAC地址表项,所以,在每个检测周期复制一个MAC地址块表项后,该MAC地址块对应的前一同步周期复制的MAC地址块表项依然在Shadow表中。CPU可利用Shadow表中同一 MAC地址块表项在两个时间点上的拷贝,进行MAC地址学习和老化的检测。 本发明MAC地址表的同步方法如图4所示,包括以下步骤 步骤101 :将硬件表划分为若干MAC地址块,设置检测周期为一个MAC地址块大 小,同步周期为一个硬件表大小; 步骤102 :在内存建立环形Shadow表,并设置该环形Shadow表大小为硬件表加一 个MAC地址块大小; 步骤103 :每个检测周期复制硬件表的一个MAC地址块的表项到环形Shadow表的 一个MAC地址块中; 这里,所述的复制是每个检测周期按顺序依次复制; 步骤104 :将环形Shadow表当前复制的MAC地址块的表项与其相邻的前一 MAC地 址块的表项进行比较,检测出学习和老化的MAC地址; 这里,所述相邻的前一 MAC地址块是指按环形Shadow表操作方向,先复制的MAC 地址块;所述环形Shadow表操作方向可以是逆时针或顺时针; 步骤105 :到达同步周期时,将所有检测出的学习和老化的MAC地址同步到软件表。 下面结合附图和具体实施对本发明的MAC地址同步方法进行描述,本实施例中, 将一个芯片的硬件表划分为四等分,一个检测周期复制和检测的MAC地址表项数为硬件表 全表的1/4,即检测周期为同步周期的四分之一 ;本实施例中环形Shadow表逆时针使用。
如图2所示,将芯片的硬件表等分为四块,分别以A、B、C、D来表示,图2左侧为芯 片的硬件表。CPU执行内存分配函数申请内存建立Shadow表,Shadow表的大小为芯片硬 件表的5/4倍,且为环形表,图2右侧环形表为Shadow表。具体地,本实施例将Shadow表 等分为5块,每个MAC地址块与硬件表的MAC地址块大小相同,利用内存地址指针或数组来 标记每个块的起始地址,最小入口 (Min Entry)为Shadow表的当前起始地址,也就是说,从 Min Entry开始逆时针按MAC地址块向Shadow表复制MAC地址,每次复制和检测硬件表的 一个MAC地址块,对应Shadow表的一个MAC地址块。 图3描述了同步起始运行时第一个同步周期的复制和检测状态,每个检测周期, 依次将一个芯片硬件表的一个MAC地址块拷贝到Shadow表中,然后检测学习到的MAC地 址,之后再同步到软件表。图3中因为是第一个同步周期,将A、 B、 C、 D四个MAC地址块分 别拷贝到Shadow表中的四个MAC地址块,分别用A. 1、B. 1、C. 1、D. 1表示;之后,Shadow表 中还有一个MAC地址块未占用,如斜线填充的地址块。此时,尾指针指向D. 1。
图4(a) 4(d)描述了正常同步过程中MAC地址复制和检测的过程,其中,图4(a) 为第二个同步周期的第一个检测周期;图4(b)为第二个同步周期的第二个检测周期;图 4(c)为第二个同步周期的第三个检测周期;图4(d)为第二个同步周期的第四个检测周期。
每个检测周期复制硬件表的一个MAC地址块表项到Shadow表的一个MAC地址块 中,复制的位置就是环形表尾指针加一指向的MAC地址块,尾指针每次逆时针向前。这样, 在Shadow表环上相邻的下一个MAC地址块就保存了上一个同步周期复制的相同MAC地址 块的表项。具体的,如图4(a) 图4(d)所示,在第二同步周期的第一检测周期,在尾指针指 向的位置复制A. 2,其逆时针相邻的MAC地址块A. 1就是上一同步周期复制的硬件表中MAC 地址块A的表项;同样,在第二同步周期的第二检测周期,在尾指针指向的位置复制B.2,其逆时针相邻的MAC地址块B. 1就是上一同步周期复制的硬件表中MAC地址块B的表项;在 第二同步周期的第三检测周期,在尾指针指向的位置复制C.2,其逆时针相邻的MAC地址块 C. 1就是上一同步周期复制的硬件表中MAC地址块C的表项;在第二同步周期的第四检测 周期,在尾指针指向的位置复制D. 2,其逆时针相邻的MAC地址块D. 1就是上一同步周期复 制的硬件表中MAC地址块D的表项。这样,CPU就可以利用这两个时间点上的硬件表MAC地 址拷贝,检测到该同步周期内学习和老化的MAC地址,同步到软件表。
图4所示复制和检测过程的具体实现如图5所示,包括以下步骤
步骤51 :初始化复制硬件表MAC地址块的索引初始值为0,复制到的环形Shadow 表的MAC地址块位置索引初始值为0 ; 步骤52 :将当前硬件表MAC地址块的表项复制到当前环形Shadow表的相应位置;
步骤53 :将环形Shadow表当前MAC地址块的表项与其相邻的前一 MAC地址块的 表项进行比较; 步骤54 55 :将当前复制硬件表MAC地址块的索引值加1,复制到环形Shadow表 的位置索引值加1 ;之后,判断是否到达同步周期,如果到达,则休眠一个检测周期,否则, 返回步骤52,继续复制和检测。 这里,所述判断是否到达同步周期就是判断索引值是否等于硬件表所划分的MAC 地址块数,比如将硬件表四等分,那么,如果索引值等于4就是到达同步周期。
上述过程中,起始同步周期和正常同步周期的MAC地址表项的复制和检测其实并 无不同,只是起始运行时复制到Shadow表的MAC地址表拷贝没有上一个同步周期的拷贝可 以进行比较,这种情况下,可认为上一个检测周期的MAC地址表项为空,所以,检测到的MAC 地址均为学习到的MAC地址。网络设备在运行时如此循环进行复制和检测,周期性地进行 MAC地址表的同步,这样,经过一个同步周期后,即可检测出学习和老化的MAC地址,同步到 CPU的软件表。 为实现上述方法,本发明还提供了一种MAC地址表的同步装置,包括设置划分模 块、Shadow表建立模块、复制和检测模块、同步模块;其中, 所述设置划分模块,用于将硬件表划分为一个以上MAC地址块,并设置检测周期 为一个MAC地址块大小,同步周期为一个硬件表大小; 所述Shadow表建立模块,在内存建立环形Shadow表,该环形Shadow表大小为硬 件表加一个MAC地址块大小; 所述复制和检测模块,每个检测周期复制和检测一个MAC地址块的表项; 这里,是从硬件表向环形Shadow表复制,检测是将环形Shadow表中当前MAC地址
块的表项与其前一 MAC地址块的表项进行比较; 所述同步模块,在到达同步周期时,将所有检测出的学习和老化的MAC地址同步 到软件表。 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在 本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护 范围之内。
权利要求
一种媒体访问控制MAC地址表的同步方法,其特征在于,该方法包括将硬件表划分为一个以上MAC地址块,设置检测周期为一个MAC地址块的大小,同步周期为一个硬件表大小;在内存建立环形影子Shadow表,所述Shadow表大小为硬件表加一个MAC地址块大小;每个检测周期复制和检测一个MAC地址块的表项,到达同步周期时,将检测出的学习和老化的MAC地址同步到软件表。
2. 根据权利要求1所述的同步方法,其特征在于,所述每个检测周期复制和检测一个 MAC地址块的表项具体为每个检测周期顺序复制硬件表中一个MAC地址块的表项到环形Shadow表的MAC —个 地址块中;将环形Shadow表当前复制的MAC地址块的表项与其相邻的前一 MAC地址块的表项进 行比较,检测出学习和老化的MAC地址。
3. 根据权利要求1或2所述的同步方法,其特征在于,所述将硬件表划分为一个以上 MAC地址块为将硬件表划分为4等分、64等分、256等分。
4. 根据权利要求1或2所述的同步方法,其特征在于,所述环形Shadow表在物理上为 连续内存。
5. 根据权利要求1或2所述的同步方法,其特征在于,所述环形Shadow表按逆时针方 向复制和检测,或按顺时针方向复制和检测。
6. —种MAC地址表的同步装置,其特征在于,该装置包括设置划分模块、Shadow表建 立模块、复制和检测模块、同步模块;其中,所述设置划分模块,用于将硬件表划分为一个以上MAC地址块,并设置检测周期为一 个MAC地址块大小,同步周期为一个硬件表大小;所述Shadow表建立模块,在内存建立环形Shadow表,该环形Shadow表大小为硬件表 加一个MAC地址块大小;所述复制和检测模块,每个检测周期复制和检测一个MAC地址块的表项;所述同步模块,在到达同步周期时,将所有检测出的学习和老化的MAC地址同步到软 件表。
7. 根据权利要求6所述的同步装置,其特征在于,所述复制为从硬件表向环形Shadow 表复制;所述检测为将环形Shadow表中当前MAC地址块的表项与其前一 MAC地址块的表项 进行比较。
8. 根据权利要求6或7所述的同步装置,其特征在于,所述将硬件表划分为一个以上 MAC地址块为将硬件表划分为4等分、64等分、256等分。
9. 根据权利要求6或7所述的同步装置,其特征在于,所述环形Shadow表在物理上为 连续内存。
10. 根据权利要求6或7所述的同步装置,其特征在于,所述环形Shadow表按逆时针方 向复制和检测,或按顺时针方向复制和检测。
全文摘要
本发明公开了一种媒体访问控制(MAC)地址表的同步方法,该方法包括将硬件表划分为一个以上MAC地址块,设置检测周期为一个MAC地址块的大小,同步周期为一个硬件表大小;在内存建立环形影子(Shadow)表,所述Shadow表大小为硬件表加一个MAC地址块大小;每个检测周期复制和检测一个MAC地址块的表项,到达同步周期时,将检测出的学习和老化的MAC地址同步到软件表。本发明还同时公开了一种MAC地址表的同步装置,采用本发明能在实现MAC地址表同步的同时,减少内存的占用,提高同步效率。
文档编号H04L12/56GK101729410SQ20091023718
公开日2010年6月9日 申请日期2009年11月10日 优先权日2009年11月10日
发明者张海峰 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1