CN101110771A - 在fdb表中添加下一跳mac地址的方法及fdb设备 - Google Patents

在fdb表中添加下一跳mac地址的方法及fdb设备 Download PDF

Info

Publication number
CN101110771A
CN101110771A CNA2007101201277A CN200710120127A CN101110771A CN 101110771 A CN101110771 A CN 101110771A CN A2007101201277 A CNA2007101201277 A CN A2007101201277A CN 200710120127 A CN200710120127 A CN 200710120127A CN 101110771 A CN101110771 A CN 101110771A
Authority
CN
China
Prior art keywords
list item
mac address
fdb
fdb list
hop mac
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2007101201277A
Other languages
English (en)
Other versions
CN100553233C (zh
Inventor
高兴福
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Zhigu Tech Co Ltd
Original Assignee
Fujian Star Net Communication Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujian Star Net Communication Co Ltd filed Critical Fujian Star Net Communication Co Ltd
Priority to CNB2007101201277A priority Critical patent/CN100553233C/zh
Publication of CN101110771A publication Critical patent/CN101110771A/zh
Application granted granted Critical
Publication of CN100553233C publication Critical patent/CN100553233C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Small-Scale Networks (AREA)

Abstract

本发明一种在FDB表中添加下一跳MAC地址的方法的实施例,包括:步骤1.发送下一跳MAC地址的添加请求消息;步骤2.根据所述初始索引值确定一散列单元中的一FDB表项为初始FDB表项;步骤3.检测所述FDB表项是否为空闲,若所述FDB表项空闲,则将所述下一跳MAC地址添加到该FDB表项;若所述FDB表项非空闲,确定另一散列单元中的一FDB表项为下一条FDB表项,重复此步骤,直至检测到空闲的FDB表项,将所述下一跳MAC地址添加到该FDB表项。本发明一种FDB设备的实施例,包括:依次连接的FDB表项指向单元、FDB表项状态检测单元以及下一跳MAC地址添加单元。本发明的实施例中,下一跳MAC地址较均匀的添加到FDB表,提高了FDB表的资源利用率,减少了对二层转发地址的学习和添加的影响。

Description

在FDB表中添加下一跳MAC地址的方法及FDB设备
技术领域
本发明涉及在桥转发数据库(Forwarding Database,简称FDB)表中添加下一跳MAC地址的方法及FDB设备,属于数据通信技术领域。
背景技术
三层交换机的功能,可简单分为二层转发和三层转发。二层转发依据媒体接入控制(Media Access Control,简称MAC)地址查表决定报文转发出口及其它控制信息,三层转发根据IP地址查表得出转发出口及其它控制信息。
三层交换机中的FDB表主要用于二层报文转发决策,如表1,其表项主要有MAC地址,虚拟局域网(Virtual Local Area Network,简称VLAN)ID和输出端口号等字段,其中MAC地址和VLANID组成二层转发MAC地址表的索引,索引计算采用散列算法。散列算法就是把任意长度的输入,变换成固定长度的输出的算法称为散列算法,该输出就是散列值,在二层转发MAC地址表中,散列值与FDB表项的编号直接对应,输入MAC地址和VLAN ID,二层转发MAC地址表的容量一般只有几K到几百K,而MAC地址是48bit,VLANID是12bit,二者相加共60bit,只要20bit的排列组合就达到1024K条表项,而交换机在特定的局域网内的用户的MAC地址个数可预见,因此采用小容量的二层转发MAC地址表就可以满足应用,而采用散列算法能够有效的解决全球MAC地址条目远大于一般的二层转发MAC地址表的矛盾。二层转发MAC地址添加和查找,都是通过输入MAC地址和VLANID得到散列值,也就是FDB表项的编号,依据FDB表项的编号就可以完成写入和读取表项。
表1  二层转发MAC地址表项的主要内容
MAC地址 VLAN ID 输出端口号
散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,因此会造成地址冲突。如:全球48bit的MAC地址,映射到16K的二层转发MAC地址表中,就会造成大量不同地址对应同一个二层转发MAC地址表项的冲突现象。二层转发表中,一般使用一个散列值对应几个表项的方式,以处理散列值冲突,
三层交换机中路由表,如表2,其表项主要包括前缀,下一跳输出端口号和下一跳MAC地址等信息。前缀为路由表项的索引,用于确定IP报文对应于哪条路由表项;下一跳输出端口号,用于确定对应匹配的IP输出端口;下一跳MAC地址,用于修改输出IP报文的目的MAC地址(MACDA)字段。MAC地址的长度为6字节,出于节省存储空间的考虑,将路由表中的MAC地址存放到FDB表中,而在路由表项中存储FDB表项的编号(FDB ID),如表3所示。如某型号三层交换机支持4096台主机接入,那么每条路由表项只需要12bit的存储空间用于存储FDB表项的编号,和存储完整的48bit的MAC地址相比,每条路由表项减少了36bit存储空间。
表2  路由表项的主要内容
前缀 下一跳输出端口 下一跳MAC地址
表3  下一跳MAC地址存储到FDB存储空间时路由表项的主要内容
前缀 下一跳输出端口 FDB ID
上述将下一跳MAC地址存储到FDB存储空间的方法,减小了路由表的大小,但是占用了FDB的空间,常见的FDB存储空间管理方法有2种:
(一)固定分区法,将FDB存储空间固定地划分为2个区段,如:硬件提供的FDB有16条表项,将12K用于二层转发MAC地址存储,4K用于路由表的下一跳MAC地址存储。固定划分法的缺点是:
a、路由表项不太多,而二层转发MAC地址很多的情况下,不能够将闲置的下一跳MAC地址存储空间加以利用。反之,当路由表项很多而二层转发MAC地址不太多的情况下,也不能将闲置的二层转发MAC地址存储空间加以利用,因此整个FDB表的资源利用率较低。
b、分区后,如果散列值还是覆盖整个FDB,那么会造成散列值落到下一跳MAC地址区域部分变成无效的散列值,导致对应的地址不能被学习。如表4所示,FDB存储空间的前12K表项用于做二层转发表(FDB1-12288),后4K用于作下一跳MAC地址表(FDB12289-16384),在散列算法没有改变的情况下,必然会出现某个MAC地址和VLAN ID作为散列输入,计算得到的散列值大于12288,由于上述固定划分,就会导致二层转发自动学习的MAC地址不能添加到后4k的区域内,因此发生二层转发MAC地址学习失败。
表4  固定分区法中FDB存储空间使用表
 FDB ID 存储内容
 FDB0 二层转发表项0
 FDB1 二层转发表项1
 FDB2 二层转发表项2
 ... ...
 FDB12287 二层转发表项12287(12*1024-1)
 FDB12288 下一跳MAC地址表项0
 FDB12289 下一跳MAC地址表项1
 FDB12290 下一跳MAC地址表项2
 ... ...
 FDB16380 下一跳MAC地址表项4092
 FDB16381 下一跳MAC地址表项4093
 FDB16383 下一跳MAC地址表项4094
 FDB16383 下一跳MAC地址表项4095(4*1024-1)
(二)与二层转发MAC地址表项共享FDB表项,将路由表项直接指向已经存在的二层转发MAC地址表项(一条FDB表项,承担2个用途),若没有相应空闲表项,则再通过添加二层转发MAC地址的方式,即先计算散列值,再添加到散列值对应的几个表项中的其中一个空闲的表项,创建一条表项并关联到路由表项,所不同的是为了避免被二层转发引擎误认为是二层转发MAC地址,该表项关联到专用的VLAN ID。
如添加的路由表项的下一跳地址是00 D0 F8 01 02 03,并且交换机也学习到并且存储这条表项到MAC地址表中,表项的ID是2356,那么就可以直接被路由表引用,将ID 2356保存到路由表项中。该方案不仅是动态分配算法,而且表项高度共享。但是,带来的问题是算法复杂,在被共享的二层转发MAC地址发生老化(每个动态学习到的二层转发MAC地址都有一个生存期,以秒为单位,时间到了该表项会失效,这就是二层转发MAC地址老化)和被删除的情况下,相应的路由也需要得到正确的更新维护。而且采用添加二层转发MAC地址的方式,会出现散列冲突的情况,这就出现在还有空闲资源的情况下,出现添加表项失败的情况,也不能达到资源的最高利用率。例如:散列单元的深度是4,而出现了5个地址分别计算得到的散列值都相同,那么第5个地址就不能被添加成功,虽然这时其它的散列单元还有空闲表项,这也是散列算法的局限性决定的。
发明内容
本发明的目的是针对上述现有技术的不足,提出了一种在FDB表中添加下一跳MAC地址的方法及FDB设备,以实现下一跳MAC地址较均匀的添加到FDB表。
为实现上述目的,本发明的一些实施例提供了一种在FDB表中添加下一跳MAC地址的方法,其中包括:发送下一跳MAC地址的添加请求消息,所述添加请求消息中携带有下一跳MAC地址的初始索引值;根据所述初始索引值确定一散列单元中的一FDB表项为初始FDB表项;检测所述FDB表项是否为空闲,若所述FDB表项空闲,则将所述下一跳MAC地址添加到该FDB表项;若所述FDB表项非空闲,确定另一散列单元中的一FDB表项为下一条FDB表项,重复此步骤,直至检测到空闲的FDB表项,将所述下一跳MAC地址添加到该FDB表项。
为实现上述目的,本发明的另一些实施例提供了一种FDB设备,其中包括:FDB表项指向单元、FDB表项状态检测单元以及下一跳MAC地址添加单元;FDB表项指向单元,用于接收下一跳MAC地址的添加请求消息,以及确定索引值对应的FDB表项;FDB表项状态检测单元,与所述FDB表项指向单元及下一跳MAC地址添加单元连接,用于判断所述FDB表项是否为空闲,若所述FDB表项空闲,则通知下一跳MAC地址添加单元将所述下一跳MAC地址添加到该FDB表项;若所述FDB表项非空闲,则通知FDB表项指向单元,确定另一散列单元中的一FDB表项为下一条FDB表项。
上述技术方案具有以下优点:
(1)通过引入索引值,在添加下一跳MAC地址的过程中,是从整体的FDB表中寻找空闲表项,而非现有的固态分区法中仅从用于路由表的下一跳MAC地址存储的区间中寻找空闲表项,因此提高了FDB表的资源利用率;
(2)通过引入散列单元,使得下一跳MAC地址在较均匀地分布在FDB表中的同时,由于每一散列单元中对应有数个FDB表项,下一跳MAC地址在占用其中一个或数个FDB表项时,仍能够在保证学习或添加二层转发MAC地址时,散列冲突不发生超限的情况下,二层转发MAC地址被成功的学习或添加,从而减少了对二层转发地址的学习和添加的影响;
(3)下一跳MAC地址在添加的过程中,由于不与用于二层转发的二层转发MAC地址表项共用,使得二层转发MAC地址表项与下一跳MAC地址表项在逻辑上分别归属于独立的两张表,从而便于二层转发MAC地址表项及下一跳MAC地址表项的分别维护;
(4)由于采用索引的方法从整体的FDB表中检测空闲表项,而非采用MAC地址和VLANID计算散列值的方法,因此避免了下一跳MAC地址添加过程中出现散列冲突的可能性以及由此而导致的添加失败的可能性。
附图说明
图1为本发明在FDB表中添加下一跳MAC地址的方法实施例一的流程图。
图2为本发明在FDB表中添加下一跳MAC地址的方法实施例二的流程图。
图3为本发明在FDB表中添加下一跳MAC地址的具体实例一的流程图;
图4为本发明在FDB表中添加下一跳MAC地址的具体实例二的流程图;
图5为本发明在FDB表中添加下一跳MAC地址的具体实例三的流程图;
图6为本发明在FDB表中添加下一跳MAC地址的具体实例四的流程图;
图7为本发明一种FDB设备的实施例一的结构示意图;
图8为本发明一种FDB设备的实施例二的结构示意图。
具体实施方式
散列算法:把任意长度的输入,变换成固定长度的输出的算法为散列算法,该输出就是散列值。散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,因此会造成地址冲突,为了解决散列冲突的问题,一般使用一个散列值对应于几个表项的方式,有限地处理散列冲突。
散列深度:一条散列值所对应的表项数目。
散列单元:同属于一个散列值的表项归属于同一个散列单元。
具体到本发明的实施例,设三层交换机的FDB的存储空间为16K,散列深度为h=4。该FDB包括FDB表项的数目为16K(即16·1024=16384)项,散列单元的数目为16k/4(即4*1024)项。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
三层交换机中为了减少路由表的存储空间时可以采用以下方案,具体为:将路由表中的下一跳MAC地址存放到FDB表中,然后将路由表项中的下一跳MAC地址换为FDB表项的编号。由于FDB表项还需用来存储二层转发相关信息,即二层转发MAC地址表项,因此需考虑资源利用问题以及二层转发MAC地址的学习或添加等问题。
为了解决上述问题,本发明的提出了一种在FDB表中添加下一跳MAC地址的方法。
图1为在FDB表中添加下一跳MAC地址的方法的实施例一的流程图,包括:
步骤11、发送下一跳MAC地址的添加请求消息,所述添加请求消息中携带有下一跳MAC地址的初始索引值。
步骤12、根据所述初始索引值确定一散列单元中的一FDB表项为初始FDB表项;
步骤13、检测所述FDB表项是否为空闲,若所述FDB表项空闲,则执行步骤4;若所述FDB表项非空闲,执行步骤5。
步骤14、将所述下一跳MAC地址添加到该FDB表项;
步骤15、确定另一散列单元中的一FDB表项为下一条FDB表项,重复步骤3。直至检测到空闲的FDB表项,将所述下一跳MAC地址添加到该FDB表项。
上述实施例,判断索引值指向的FDB表项的状态是否为空闲,决定是将下一跳MAC地址添加到该FDB表项,还是继续判断另一散列单元中的FDB表项的状态,该方法能够实现下一跳MAC地址较均匀地分布在FDB表中不同的散列单元中,通过引入索引值,在添加下一跳MAC地址的过程中,是从整体的FDB表中寻找空闲表项,而非仅从用于路由表的下一跳MAC地址存储的区间中寻找空闲表项,因此提高了FDB表的资源利用率;通过引入散列单元,使得下一跳MAC地址在较均匀地分布在FDB表中的同时,由于每一散列单元中对应有数个FDB表项,下一跳MAC地址在占用其中一个或数个FDB表项时,仍能够在保证学习或添加二层转发MAC地址时,散列冲突不发生超限的情况下,二层转发MAC地址被成功的学习或添加,从而减少了对二层转发地址的学习和添加的影响;下一跳MAC地址在添加的过程中,由于不与用于二层转发的二层转发MAC地址表项共用,使得二层转发MAC地址表项与下一跳MAC地址表项在逻辑上分别归属于独立的两张表,从而便于二层转发MAC地址表项及下一跳MAC地址表项的分别维护,如每个动态学习到二层转发MAC地址有一个生存期,针对二层转发地址表项可以根据老化时间进行维护等;另外,由于采用索引的方法从整体的FDB表中检测空闲表项,而非采用MAC地址和VLANID计算散列值的方法,因此避免了下一跳MAC地址添加过程中出现散列冲突的可能性以及由此而导致的添加失败的可能性。
FDB表中FDB表项有空闲和非空闲两种状态。当FDB表项为空闲时,可以直接将下一跳MAC地址添加到该FDB表项中;当FDB表项非空闲时,该FDB表项或已经添加了下一跳MAC地址,或被二层转发MAC地址所占用。二层转发MAC地址可以为交换机自动学习到的动态地址,也可以为系统管理员手工设定或是通过集群管理协议进行配置的静态地址。
为了减少或避免下一跳MAC地址添加失败的结果出现,可以将暂时没有接收数据传输的动态地址表项删除,为下一跳MAC地址腾出空间,这样就可以将下一跳添加到该FDB表项。图2为在FDB表中添加下一跳MAC地址的方法的实施例二的流程图,实施例二与实施例一的区别在于,若所述FDB表项非空闲,还包括判断所述FDB表项是否为动态地址表项的步骤。具体为:
步骤21、发送下一跳MAC地址的添加请求消息,所述添加请求消息中携带有下一跳MAC地址的初始索引值。
步骤22、根据所述初始索引值确定一散列单元中的一FDB表项为初始FDB表项;
步骤23、检测所述FDB表项是否为空闲,若所述FDB表项空闲,则执行步骤4;若所述FDB表项非空闲,执行步骤30。
步骤24、将所述下一跳MAC地址添加到该FDB表项;
步骤231、判断所述FDB表项是否为动态地址表项,若是,执行步骤32;否则,执行步骤5。
步骤232、删除所述动态地址表项中的MAC地址,转到步骤4。
步骤25、确定另一散列单元中的一FDB表项为下一条FDB表项,重复步骤3。
在一条下一跳MAC地址添加成功后,为了减少添加下一条下一跳MAC地址的过程中,FDB表项的查找次数,可以按预设方法对当前索引值进行处理,保存处理后的索引值,所述处理后的索引值用于作为下一条下一跳MAC地址的初始索引值。本发明的实施例根据FDB表项的对应的索引值及散列深度预先确定下一条下一跳MAC地址的初始索引值。为了保证下一条下一跳MAC地址被相对均匀地分配到FDB表中,可采用“索引值=当前索引值+散列深度”的方法计算索引值,若计算的索引值小于FDB表项的数目,则保存该索引值,该索引值用于作为下一条下一跳MAC地址的初始索引值;若计算的索引值大于或等于FDB表项的数目,则按照“(索引值+1)mod散列深度”的方法计算索引值,保存该索引值,该索引值用于作为下一条下一跳MAC地址的初始索引值。
以下以存储空间为16K,散列深度为4的FDB为例说明下一跳MAC地址的添加流程。若是第一次向FDB中添加下一跳MAC地址,默认该下一跳MAC地址的初始索引值为0。设index表示索引值,h表示散列深度。索引值index=0对应于第一条FDB表项FDB(0),索引值index=x(0<x<=16*1024-1且为整数),对应于第x+1条FDB表项FDB(x)。如图3,具体包括:
步骤a1、发送下一跳MAC地址的添加请求消息,所述添加请求消息中携带有下一跳MAC地址的初始索引值,所述初始索引值为上一条下一跳MAC地址添加时保存的索引值。设Index(0)为待添加的下一跳MAC地址的初始索引值,Index(0)=上次保存的index。
步骤a2、根据所述初始索引值确定一散列单元中的一FDB表项为初始FDB表项。根据index(0)确定一散列单元中的一FDB表项为初始FDB表项。
步骤a3、判断index对应的FDB表项是否为空闲,若该FDB表项空闲,则执行步骤a4;若该FDB表项非空闲,执行步骤a5。
步骤a4、将所述下一跳MAC地址添加到该FDB表项。为了保证下一条下一跳MAC地址被相对均匀地分配到FDB表中,可采用下列方法对当前索引值进行处理。设index(F)表示计算后的索引值,index(B)表示当前的索引值;首先按index(F)=index(B)+h的方法计算索引值,若计算出的index(F)小于FDB表项的数目,即index(F)<16*1024,则保存该计算结果,将该计算结果用于作为下一条下一跳MAC地址的初始索引值;若计算出的index大于或等于FDB表项的数目,即index(F)>=16*1024,则将该计算结果按“(index(F)+1)mod h”的方法进行处理,保存该处理结果,该处理结果用于作为下一条下一跳MAC地址的初始索引值。
步骤a5、确定另一散列单元中的一FDB表项为下一条FDB表项,重复步骤3。具体包括:步骤a51、按预设方法重新设置所述下一跳MAC地址的索引值;步骤a52、确定重新设置后的索引值对应的另一散列单元中的一FDB表项为下一条FDB表项。本发明的实施例根据当前索引值及散列深度重新设置下一跳MAC地址的索引值。为了保证所有的FDB表项均可以被遍历到,可采用下列方法重新设置下一跳MAC地址的索引值。设index(F)表示计算后的索引值,index(B)表示当前的索引值;首先按index(F)=index(B)+h的方法计算索引值,若计算出的index(F)小于FDB表项的数目,即index(F)<16*1024,则该计算结果即为下一跳MAC地址的重新设置的索引值;若计算出的index大于或等于FDB表项的数目,即index(F)>=16*1024,则将该计算结果按“(index(F)+1)mod h”的方法进行处理,该处理结果即为下一跳MAC地址的重新设置的索引值。
下一跳MAC地址在添加的过程中,有可能在遍历完所有的FDB表项后,仍不存在满足条件可用来添加该下一跳MAC地址的FDB表项,对于同一条下一跳MAC地址的添加过程,可以通过比较该下一跳MAC地址的初始索引值,以及重新设置的索引值是否相等来进行判断是否在已遍历完的情况下仍没有发现满足条件的FDB表项。
如第一次向FDB中添加下一跳MAC地址,默认该下一跳MAC地址的初始索引值为0。按“index(F)=index(B)+4”的方法第一次遍历到FDB底部时指向FDB的第16381项,即FDB16380,仍未发现满足条件的FDB表项(满足条件的FDB表项在本发明的实施例中可以为空闲表项,或动态地址表项),然后再通过“index(F)=index(B)+4”计算后发现index(F)>=16*1024,采用“(index(F)+1)mod 4”的方法进行再次处理,处理结果index=1,然后从index=1指向的FDB2继续FDB表的第二次遍历,直到第四次遍历到FDB的底部FDB16383,仍未发现满足条件的FDB表项,然后再通过“index(F)=index(B)+4”计算后发现index(F)>=16*1024,采用“(index(F)+1)mod 4”的方法进行再次处理,处理结果index=0。当检测到重新设置后的索引值与初始索引值相等时,即可判断已完全遍历完FDB的所有FDB表项,仍没有发现满足条件的FDB表项。
图5为本发明在FDB表中添加下一跳MAC地址的具体实例三的流程图。该实例与实例一的区别在于,在步骤a51与a52之间还包括:
步骤a511、判断整个FDB表是否已遍历完,若是,则执行步骤a512;否则,执行步骤a52。
步骤a512、返回添加失败消息。
图6为本发明在FDB表中添加下一跳MAC地址的具体实例四的流程图。该实例与实例二的区别在于,在步骤a51与a52之间还包括:
步骤b511、判断整个FDB表是否已遍历完,若是,则执行步骤a512;否则,执行步骤b52。
步骤b512、返回添加失败消息。
实例四中,扩大了FDB表项中满足下一跳MAC地址添加条件的范围,将动态地址占用的动态地址FDB表项也认为符合下一跳MAC地址添加条件的表项,即动态地址占用的FDB空间也认为是可用的空间,在使用该动态地址表项之前,首先需要向交换机的其他模块发出地址删除或老化的通告,告知交换机的相应模块对该动态地址表项进行删除操作,以腾出空间添加该下一跳MAC地址。
上述实施例中,为了保证FDB表项中的下一跳MAC地址不被当作有效的二层转发MAC地址,导致错误的报文桥转发行为发生,可以通过对下一跳MAC地址所在的FDB表项的VLAN ID字段进行特殊设置来实现,将VLAN ID字段设置为禁止MAC地址学习,如添加特殊的数字、符号以使区别于二层转发MAC地址表项中的VLAN ID,通过该设置使得下一跳MAC地址所在的FDB表项的VLAN ID不会被作为用户的VLAN ID,从而避免了错误的报文桥转发行为发生。
存储空间为16K的FDB,散列深度为4,则FDB有4K个散列单元,这时如有4K条不同路由下一跳MAC地址,根据上述实施例中所述的在FDB表中添加下一跳MAC地址的方法,理想情况下这4K不同的下一跳MAC地址均匀地分布在整个FDB表中,即在每个散列单元内存放1条不同的下一跳MAC地址,如表4所示。
表4  本发明中FDB存储空间使用表
 FDB ID 存储内容
 FDB0 下一跳MAC地址表项0
 FDB1 二层转发表项0
 FDB2 二层转发表项1
 FDB3 二层转发表项2
 FDB4 下一跳MAC地址表项1
 FDB5 二层转发表项3
 FDB6 二层转发表项4
 FDB7 二层转发表项5
 FDB8 下一跳MAC地址表项2
 ... ...
 FDB16380 下一跳MAC地址表项4095
 FDB16381 二层转发表项12285
 FDB16382 二层转发表项12286
 FDB16383 二层转发表项12287
本发明还提出了一种FDB设备。图7为本发明一种FDB设备的实施例一的结构示意图,包括:依次连接的依次连接的FDB表项指向单元100、FDB表项状态检测单元200以及下一跳MAC地址添加单元300;其中FDB表项指向单元100,用于接收下一跳MAC地址的添加请求消息,以及确定索引值对应的FDB表项;FDB表项状态检测单元200,与FDB表项指向单元100及下一跳MAC地址添加单元300连接,用于判断所述FDB表项是否为空闲,若所述FDB表项空闲,则通知下一跳MAC地址添加单元300将所述下一跳MAC地址添加到该FDB表项;若所述FDB表项非空闲,则通知FDB表项指向单元100,确定另一散列单元中的一FDB表项为下一条FDB表项。
图8为本发明一种FDB设备的实施例二的结构示意图。该实施例除了具有上一实施例的结构特征外,还包括:动态地址表项检测单元400,与FDB表项状态检测单元200连接,当FDB表项状态检测单元检测出FDB表项非空闲后,判断所述FDB表项是否为动态地址表项,若是,则发出删除所述动态地址表项中的MAC地址的通知,并调用下一跳MAC地址添加单元300,将所述下一跳MAC地址添加到该FDB表项;否则,通知FDB表项指向单元100,确定另一散列单元中的一FDB表项为下一条FDB表项。
为了保证FDB表项中的下一跳MAC地址不被当作有效的二层转发MAC地址,导致错误的报文桥转发行为发生,可以通过对下一跳MAC地址所在的FDB表项的VLAN ID字段进行特殊设置来实现,将VLAN ID字段设置为禁止MAC地址学习,通过该设置,使得下一跳MAC地址所在的FDB表项的VLAN ID不会被作为用户的VLAN ID,从而避免了错误的报文桥转发行为发生。在FDB设备的一较佳实施例中,还包括VLAN ID设置单元,用于将下一跳MAC地址所在的FDB表项的VLAN ID字段设置为禁止MAC地址学习。该VLAN ID设置单元在FDB设备中,可以单独设置;也可以与下一跳MAC地址添加单元连接,当下一跳MAC地址添加单元将下一跳MAC地址添加到FDB表项中的同时,可调用VLAN ID设置单元,对相应的FDB表项中的VLAN ID字段进行设置。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
综上所述,本发明各实施例的在FDB表中添加下一跳MAC地址的方法、FDB设备具有以下有益效果:
(1)通过引入索引值,在添加下一跳MAC地址的过程中,是从整体的FDB表中寻找空闲表项,而非现有的固态分区法中仅从用于路由表的下一跳MAC地址存储的区间中寻找空闲表项,因此提高了FDB表的资源利用率。
(2)通过引入散列单元,使得下一跳MAC地址在较均匀地分布在FDB表中的同时,由于每一散列单元中对应有数个FDB表项,下一跳MAC地址在占用其中一个或数个FDB表项时,仍能够在保证学习或添加二层转发MAC地址时,散列冲突不发生超限的情况下,二层转发MAC地址被成功的学习或添加,从而减少了对二层转发地址的学习和添加的影响。如16K的FDB,散列深度为4,则FDB有4K个散列单元,这时如有8K条不同路由下一跳MAC地址,根据本方案,应该在每个散列单元内存放2条不同的下一跳MAC地址,这样二层转发MAC地址学习或添加时在散列冲突不超过2次的情况下,就能够保证二层转发MAC地址被成功的学习或添加。
(3)下一跳MAC地址在添加的过程中,由于不与用于二层转发的二层转发MAC地址表项共用,使得二层转发MAC地址表项与下一跳MAC地址表项在逻辑上分别归属于独立的两张表,从而便于二层转发MAC地址表项及下一跳MAC地址表项的分别维护。
(4)由于采用索引的方法从整体的FDB表中检测空闲表项,而非采用MAC地址和VLANID计算散列值的方法,因此避免了下一跳MAC地址添加过程中出现散列冲突的可能性以及由此而导致的添加失败的可能性。
(5)通过检测FDB中的动态地址表项,并向交换机的其他模块发送地址删除或老化通告的方法,删除动态地址表项,从而扩大了FDB表项中满足下一跳MAC地址添加条件的范围。
(6)通过对下一跳MAC地址所在的FDB表项的VLAN ID字段进行特殊设置,以保证FDB表项中的下一跳MAC地址不被当作有效的二层转发MAC地址,从而避免了错误的报文桥转发行为发生。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (9)

1.一种在FDB表中添加下一跳MAC地址的方法,其特征在于,包括:
步骤1、发送下一跳MAC地址的添加请求消息,所述添加请求消息中携带有下一跳MAC地址的初始索引值;
步骤2、根据所述初始索引值确定一散列单元中的一FDB表项为初始FDB表项;
步骤3、检测所述FDB表项是否为空闲,若所述FDB表项空闲,则将所述下一跳MAC地址添加到该FDB表项;若所述FDB表项非空闲,确定另一散列单元中的一FDB表项为下一条FDB表项,重复步骤3,直至检测到空闲的FDB表项,将所述下一跳MAC地址添加到该FDB表项。
2.根据权利要求1所述的方法,其特征在于,所述步骤3中若所述FDB表项非空闲,判断所述FDB表项是否为动态地址表项,若是,删除所述动态地址表项中的MAC地址,将所述下一跳MAC地址添加到该FDB表项;否则,确定另一散列单元中的一FDB表项为下一条FDB表项。
3.根据权利要求1或2所述的方法,其特征在于,所述步骤3中将所述下一跳MAC地址添加到该FDB表项的同时,还包括:按预设方法对当前索引值进行处理,保存处理后的索引值,所述处理后的索引值用于作为下一条下一跳MAC地址的初始索引值。
4.根据权利要求1或2所述的方法,其特征在于,所述步骤3中确定另一散列单元中的一FDB表项为下一条FDB表项具体包括:按预设方法重新设置所述下一跳MAC地址的索引值,确定重新设置后的索引值对应的另一散列单元中的一FDB表项为下一条FDB表项。
5.根据权利要求4所述的方法,其特征在于,还包括:判断重新设置后的索引值与初始索引值是否相等,若相同,返回该下一跳MAC地址添加失败的消息。
6.根据权利要求1所述的方法,其特征在于,还包括:将下一跳MAC地址所在的FDB表项的VLAN ID字段设置为禁止MAC地址学习。
7.一种FDB设备,其特征在于,包括依次连接的FDB表项指向单元、FDB表项状态检测单元以及下一跳MAC地址添加单元;
FDB表项指向单元,用于接收下一跳MAC地址的添加请求消息,以及确定索引值对应的FDB表项;
FDB表项状态检测单元,与所述FDB表项指向单元及下一跳MAC地址添加单元连接,用于判断所述FDB表项是否为空闲,若所述FDB表项空闲,则通知下一跳MAC地址添加单元将所述下一跳MAC地址添加到该FDB表项;若所述FDB表项非空闲,则通知FDB表项指向单元,确定另一散列单元中的一FDB表项为下一条FDB表项。
8.根据权利要求7所述的设备,其特征在于,还包括动态地址表项检测单元,与FDB表项状态检测单元连接,当FDB表项状态检测单元检测出FDB表项非空闲后,判断所述FDB表项是否为动态地址表项,若是,则发出删除所述动态地址表项中的MAC地址的通知,并调用下一跳MAC地址添加单元,将所述下一跳MAC地址添加到该FDB表项;否则,通知FDB表项指向单元,确定另一散列单元中的一FDB表项为下一条FDB表项。
9.根据权利要求7或8所述的设备,其特征在于,还包括VLAN ID字段设置单元,用于将下一跳MAC地址所在的FDB表项的VLAN ID字段设置为禁止MAC地址学习。
CNB2007101201277A 2007-08-09 2007-08-09 在fdb表中添加下一跳mac地址的方法及fdb设备 Active CN100553233C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2007101201277A CN100553233C (zh) 2007-08-09 2007-08-09 在fdb表中添加下一跳mac地址的方法及fdb设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2007101201277A CN100553233C (zh) 2007-08-09 2007-08-09 在fdb表中添加下一跳mac地址的方法及fdb设备

Publications (2)

Publication Number Publication Date
CN101110771A true CN101110771A (zh) 2008-01-23
CN100553233C CN100553233C (zh) 2009-10-21

Family

ID=39042669

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007101201277A Active CN100553233C (zh) 2007-08-09 2007-08-09 在fdb表中添加下一跳mac地址的方法及fdb设备

Country Status (1)

Country Link
CN (1) CN100553233C (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102932227A (zh) * 2012-10-29 2013-02-13 烽火通信科技股份有限公司 一种实现vlan网桥桥接技术的方法
CN103795633A (zh) * 2012-10-31 2014-05-14 中兴通讯股份有限公司 一种二层转发方法及转发设备
WO2014082517A1 (zh) * 2012-11-28 2014-06-05 中兴通讯股份有限公司 一种地址解析协议缓存及其缓存方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102932227A (zh) * 2012-10-29 2013-02-13 烽火通信科技股份有限公司 一种实现vlan网桥桥接技术的方法
CN102932227B (zh) * 2012-10-29 2015-07-01 烽火通信科技股份有限公司 一种实现vlan网桥桥接技术的方法
CN103795633A (zh) * 2012-10-31 2014-05-14 中兴通讯股份有限公司 一种二层转发方法及转发设备
CN103795633B (zh) * 2012-10-31 2017-05-31 中兴通讯股份有限公司 一种二层转发方法及转发设备
WO2014082517A1 (zh) * 2012-11-28 2014-06-05 中兴通讯股份有限公司 一种地址解析协议缓存及其缓存方法
CN103856435A (zh) * 2012-11-28 2014-06-11 中兴通讯股份有限公司 一种地址解析协议缓存及其缓存方法

Also Published As

Publication number Publication date
CN100553233C (zh) 2009-10-21

Similar Documents

Publication Publication Date Title
EP2377273B1 (en) Reducing propagation of message floods in computer networks
CN108337172B (zh) 大规模OpenFlow流表加速查找方法
CN100550847C (zh) 一种解决Hash冲突的方法及装置
CN103856406B (zh) 用于在分布式网络交换机中的路由表管理的系统和方法
CN101604337B (zh) 一种哈希表项存储、查找装置及方法
CN102124703B (zh) 以太网网桥的交换表
CN108259328B (zh) 报文转发方法及装置
US20040156362A1 (en) Address learning to enable high speed routing table lookups
CN100531097C (zh) 一种桥接的方法及装置
US9086950B2 (en) Method for heap management
CN108259346A (zh) 一种等价路由表项建立方法和装置
CN101620623A (zh) 内容可寻址存储器表项管理方法和装置
CN100449504C (zh) 一种基于bitmap表的缓存管理方法
CN101159619A (zh) Arp表项的快速添加方法、装置及交换设备
US7477639B2 (en) High speed routing table learning and lookup
CN108874987A (zh) 表项管理方法、装置及交换芯片
CN107040393A (zh) 一种路由管理方法和设备
CN100553233C (zh) 在fdb表中添加下一跳mac地址的方法及fdb设备
JP5387349B2 (ja) 中継装置
CN100555985C (zh) 一种交换机及路由表操作的方法
CN104252504B (zh) 数据查询方法、设备和系统
CN101232508B (zh) 加速多生成树协议网络拓扑收敛的方法及设备
CN100393072C (zh) 一种表项的存储方法、装置及查询方法
CN102045262B (zh) 媒体接入控制地址表更新方法、装置及网络设备
CN100596087C (zh) Ftn匹配管理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: BEIJING Z-GOOD TECHNOLOGY SERVICE CO., LTD.

Free format text: FORMER OWNER: FUJIAN XINGWANGRUIJIE NETWORK CO., LTD.

Effective date: 20140513

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 350015 FUZHOU, FUJIAN PROVINCE TO: 100085 HAIDIAN, BEIJING

TR01 Transfer of patent right

Effective date of registration: 20140513

Address after: 100085 Beijing city Haidian District No. 33 Xiaoying Road 1 1F06 room

Patentee after: BEIJING ZHIGU TECHNOLOGY SERVICES CO., LTD.

Address before: 350015 M9511 Industrial Park, fast road, Mawei District, Fujian, Fuzhou

Patentee before: Fujian Xingwangruijie Network Co., Ltd.

EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20080123

Assignee: Fujian Xingwangruijie Network Co., Ltd.

Assignor: BEIJING ZHIGU TECHNOLOGY SERVICES CO., LTD.

Contract record no.: 2014990000767

Denomination of invention: FDB equipment and method for adding next hop MAC address into FDB table

Granted publication date: 20091021

License type: Common License

Record date: 20140924

LICC Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model