多路并行的MAC地址学习和地址查找的装置及方法与流程

文档序号:17454818发布日期:2019-04-20 03:09阅读:299来源:国知局
多路并行的MAC地址学习和地址查找的装置及方法与流程
本发明属于通信
技术领域
,特别涉及一种MAC地址学习和地址查找装置及方法,可应用于高速大容量以太网交换网络。
背景技术
:随着通信技术的日益发展和广泛应用,人们对数据传输速率的要求越来越高。交换机作为重要的网络设备,其性能直接影响着所在网络的网络速度。以太网技术简单易用,价格低廉,且带宽可不断提高,无论是作为一种业务还是作为一种网络结构,都得到了大规模的应用。以太网技术主要研究内容包括物理层和MAC子层。MAC地址的学习和查找功能是开发网桥、交换机等网络互连设备,延伸以太网传输范围的基础,在以太网接入中起到了至关重要的作用。另外,对于不同的以太网传输媒介,MAC子层不需要改动或者只需很小的改动。因此,开发以太网MAC子层的功能具有重要的意义。传统以太网MAC地址学习和查找的工作流程如下:(1)当交换机从某个以太网端口收到以太网数据帧时,先读取帧头中的源MAC地址,将源MAC地址和对应的端口存放在地址表中,这个过程叫做学习。通过学习,交换机就知道源MAC地址设备所对应的端口;(2)读取帧头中的目的MAC地址,并在地址表中查找相应的端口;(3)如果地址表中存在与目的MAC地址对应的端口,直接将数据帧转发至该端口;(4)如果地址表中找不到相应的端口,则把数据帧广播到所有端口上,当目的设备对源设备回应时,交换机就可以学习到目的MAC地址对应的端口,在下次传送数据时不再需要对所有端口进行广播。不断的循环上述四个步骤,对于全网的MAC地址信息都可以学习到。MAC地址-端口地址表中记录了端口和MAC地址的映射关系,地址表是交换机上电后自动建立的,保存在地址表存取器中,并且自动维护更新。地址表项是有生命期的,每个表项在建立后开始进行倒记时,每次发送数据都要刷新记时,对于长期不发送数据的主机,其MAC地址的表项在生命期结束时被删除,所以地址表记录的总是当前活动的主机的MAC地址。虽然传统MAC地址学习查找方法已被广泛应用于网络交换领域,但其也存在着以下不足:1)MAC地址在学习过程中,需要查找地址表确定此地址是否已经学习过,而传统交换机使用MAC地址先学习后查找的策略,这种串行的工作流程不但限制了MAC地址的查找速度,也限制了交换机的工作效率。2)随着10G、40G和100G以太网标准的推出,大容量高速率以太网交换技术成为研究热点,而传统以太网交换采用的单路MAC地址学习和MAC地址查找方式极大的限制了大容量高速以太网交换技术的发展。技术实现要素:本发明目的在于针对上述已有技术的不足,提供一种多路并行的MAC地址学习和地址查找装置和方法,以增大交换容量,提高交换机的处理速度和交换效率。本发明在FPGA上并行处理多路数据分组,其实现装置包括:接收调度模块:用于接收并缓存数据分组,同时按照分组到达顺序,为每个分组打上时间标识,并轮询多路并行的查找表模块的工作状态,将数据分组发给空闲路的查找表模块;多路并行的查找表模块:用于根据MAC地址进行地址学习和地址查找,将学习结果发给学习结果轮询模块,并根据查找结果转发数据分组;学习结果轮询模块:用于轮询多路并行的查找表模块的学习结果,并将每一路查找表模块的学习结果按照同步更新表项格式依次写入同步更新表缓存器中;同步更新表缓存器:用于缓存同步更新表项,该同步更新表缓存器分别与学习结果轮询模块和更新模块连接;更新模块:用于根据同步更新表项内容同时更新多路并行的查找表模块的地址表,当同步更新表缓存器不为空时,读取同步更新表缓存器中的同步更新表项,从同步更新表项中获取要更新的表项地址和地址表,并同时查询多路并行的查找表模块正在读取的表项地址,判断这两个地址是否为同一地址:如果是同一地址,则在下一周期,重新提取多路并行的查找表模块正在读取的表项地址,再次判断更新地址与当前周期的查找地址是否一样,反之,则将地址表同时传入多路并行的查找表模块;老化删除模块:用于将长时间不用的地址表从多路并行的查找表模块中清除掉,以释放地址表存取器的空间;地址选择模块:用于控制老化删除模块和更新模块与多路并行的查找表模块的连接关系,即判断更新模块是否正在更新多路并行地址表:如果正在更新,则选择更新模块与多路并行的查找表模块连接,反之,选择老化删除模块与多路并行的查找表模块连接。根据上述装置,其特征在于多路并行的查找表模块,其每一路包括:MAC地址学习查找模块、MAC地址查找模块和地址表存取器。所述MAC地址学习查找模块:用于读取接收调度模块发来的源MAC地址和地址表存取器中存放的地址表,并根据源MAC地址进行地址学习,将学习结果发给学习结果轮询模块;所述MAC地址查找模块:用于读取接收调度模块发来的目的MAC地址和地址表存取器中存放的地址表,并根据目的MAC地址进行地址查找:如果在地址表中查到输出端口,则只向该端口转发数据分组,如果查不到输出端口,则向除源端口以外的所有端口广播数据分组;所述地址表存取器:用于存放地址表,每路查找表模块包含两块地址表存取器,一块地址表存取器分别与MAC地址学习查找模块和地址选择模块连接,另一块地址表存取器分别与MAC地址查找模块和地址选择模块连接。利用上述装置进行多路并行的MAC地址学习和地址查找方法,包括如下步骤:1)接收调度模块收到分组后,按顺序为每个分组打上时间标识,然后提取分组特征信息,并轮询多路并行的MAC地址学习查找模块和MAC地址查找模块的工作状态,将分组特征信息、时间标识和分组同时发给空闲路的MAC地址学习查找模块和MAC地址查找模块;2)空闲路的MAC地址学习查找模块提取分组的源MAC地址,并根据源MAC地址和输入端口值进行地址学习,执行步骤3a);同时MAC地址查找模块提取目的MAC地址,根据目的MAC地址进行查找,执行步骤3b);3)MAC地址学习和MAC地址查找并行执行:3a)根据源MAC地址得出对应的地址表存取器地址,由该地址表存取器地址读取地址表,从地址表中获取源MAC地址对应的端口值和表项有效标志位:如果表项有效,则执行步骤4),反之,执行步骤5);3b)根据目的MAC地址得出对应的地址表存取器地址,由该地址表存取器地址读取地址表项,从地址表项中获取目的MAC地址对应的端口值和表项有效标志位:如果表项有效,则根据查找结果向该端口转发数据分组,反之,则向除源端口以外的所有端口广播数据分组;4)比较输入端口值和表项获取的端口值,如果相等,即只需要同时刷新多路地址表的老化时间,则执行步骤5),反之,即说明学习表项空间已满,则丢弃数据分组并向网络管理中心告警;5)按照同步更新表项格式,将同步更新表项送入学习结果轮询模块,学习结果轮询模块依次轮询多路MAC地址学习查找模块送出的学习结果:当同步更新表缓存器存储状态不为满时,则将学习结果按照同步更新表项格式写入同步更新表缓存器;当同步更新表缓存器存储状态不为空时,更新模块读取同步更新表缓存器中的同步更新表项,从同步更新表项中提取出要更新的地址表存取器地址和地址表,执行步骤6);6)更新模块同时获取多路MAC地址学习查找模块和MAC地址查找模块正在读取的地址表存取器地址,判断要更新的地址表存取器地址是否与多路MAC地址学习和查找的地址表存取器地址为同一地址:如果是同一地址,则在下一个周期,重新执行步骤6),反之,执行步骤7);7)根据地址表存取器地址,同时将要更新的地址表写入多路并行的MAC地址学习查找模块和MAC地址查找模块对应的地址表存取器中,执行步骤8);8)当更新模块不需要对表项进行更新时,地址选择模块选择连接老化删除模块,老化删除模块轮询多路MAC地址学习查找模块和MAC地址查找模块对应的地址表,将长时间不用的地址表从地址表存取器中清除掉。本发明与现有技术相比具有如下优点:1.本发明由于采用MAC地址学习和MAC地址查找并行处理的方式来完成MAC子层的学习查找功能,提高了单路数据传输速率,克服了传统以太网MAC地址先学习后查找的串行处理方式带来的工作效率和交换速率受限问题;2.本发明由于采用多路并行的MAC地址学习和MAC地址查找处理方式,不仅大幅度提高了交换机的交换容量和工作效率,也为以太网高速接口的线速转发提供了一种解决方案;3.本发明由于采用按顺序为输入数据分组添加时间标识的方式,确保了高速数据分组在并行处理之后,在输出端可以按照数据分组的输入顺序输出,不会因为输出分组乱序而传输出错;同时通过轮询多路并行查找表模块的工作状态,均衡了多路并行查找表模块的交换带宽。4.本发明由于增加了对同步更新表项格式的定义,并增加了同步更新表缓存器同步更新表缓存器和学习结果轮询模块,解决了多路地址表同步更新问题,从而保证了并行数据分组的无差错查找转发。附图说明图1为本发明装置结构框图;图2为本发明方法的实现流程图。具体实施方式以下参照附图并举例,对本发明进行进一步的详细说明。参照图1,本发明的装置包括:接收调度模块1、多路并行的查找表模块2、学习结果轮询模块3、同步更新表缓存器4、更新模块5、老化删除模块6和地址选择模块7。其中多路并行的查找表模块2的每一路包括MAC地址学习查找模块21、MAC地址查找模块22和地址表存取器23。所述接收调度模块1,用于接收并缓存数据分组,同时按照分组到达顺序,为每个分组打上时间标识,并轮询多路并行的查找表模块2的工作状态,将数据分组发给空闲路的MAC地址学习查找模块21和MAC地址查找模块22,该接收调度模块与MAC地址学习查找模块21和MAC地址查找模块22相连。所述MAC地址学习查找模块21,其分别与接收调度模块1、地址表存取器23以及学习结果轮询模块3相连,用于读取接收调度模块1发来的源MAC地址和地址表存取器23中存放的地址表,并根据源MAC地址进行地址学习,将学习结果发给学习结果轮询模块3;所述MAC地址查找模块22,其与接收调度模块1和地址表存取器23相连,用于读取接收调度模块1发来的目的MAC地址和地址表存取器23中存放的地址表,并根据目的MAC地址进行地址查找;所述地址表存取器23,用于存放地址表,每路查找表模块2包含两块地址表存取器,其中第一块地址表存取器分别与MAC地址学习查找模块21和地址选择模块7连接,第二块地址表存取器分别与MAC地址查找模块22和地址选择模块7连接;所述学习结果轮询模块3,其与MAC地址学习查找模块21和同步更新表缓存器4相连;用于轮询多路MAC地址学习查找模块21的学习结果,并将每一路MAC地址学习查找模块21的学习结果按照同步更新表项格式依次写入同步更新表缓存器4中;所述同步更新表缓存器4,其与学习结果轮询模块3和更新模块5相连,用于缓存同步更新表项;所述更新模块5,用于根据同步更新表项内容同时更新多路并行的查找表模块2中的地址表,当同步更新表缓存器不为空时,读取同步更新表缓存器4中的同步更新表项,从同步更新表项中获取要更新的表项地址和地址表,并同时查询多路并行的查找表模块2正在读取的表项地址,判断这两个地址是否为同一地址:如果是同一地址,则在下一时钟周期,重新提取多路并行的查找表模块2正在读取的表项地址,再次判断更新地址与当前周期的查找地址是否一致,反之,则将需要更新的地址表同时传入多路并行的查找表模块2,该更新模块与同步更新表缓存器4和地址选择模块6相连;所述老化删除模块6,其与地址选择模块7相连,用于将长时间不用的地址表从多路并行的查找表模块2中清除掉,以释放地址表存取器23的空间;所述地址选择模块7,用于控制老化删除模块6和更新模块5与多路并行的查找表模块2的连接关系,即判断更新模块5是否正在更新多路并行地址表:如果正在更新,则选择更新模块5与MAC地址学习查找模块21以及MAC地址查找模块22连接,反之,选择老化删除模块6与MAC地址学习查找模块21以及MAC地址查找模块22连接;参照图2,本发明的实现流程如下:步骤1,接收调度模块接收并解析数据分组。1a)接收调度模块收到分组后,按顺序为每个分组打上时间标识,然后提取分组特征信息,分组特征信息包括源MAC地址、目的MAC地址、类型、分组起始标志和结束标志;1b)接收调度模块按顺序判断每路MAC地址学习查找模块和每路MAC地址查找模块是否有分组正在进行学习和查找:如果该路MAC地址学习查找模块或者该路MAC地址查找模块有分组正在进行学习或者查找,即该路查找表模块处于忙状态,则接着判断下一路MAC地址学习查找模块和MAC地址查找模块是否有分组正在进行学习和查找;如果MAC地址学习查找模块和MAC地址查找模块均没有分组正在进行学习和查找时,即该路查找表模块处于空闲状态,则将时间标识、分组特征信息和分组发给该路的MAC地址学习查找模块和MAC地址查找模块,执行步骤2。步骤2,查找表模块接收分组及分组特征信息。2a)MAC地址学习查找模块接收分组特征信息中的源MAC地址,并根据源MAC地址和输入端口值进行地址学习,执行步骤3a);2b)MAC地址查找模块接收分组特征信息中的目的MAC地址,根据目的MAC地址进行地址查找,执行步骤3b)。步骤3,MAC地址学习和MAC地址查找并行执行。3a)根据源MAC地址得出对应的地址表存取器地址,由该地址表存取器地址读取地址表,地址表的格式如表1,从地址表中获取源MAC地址对应的端口值和表项有效标志位:如果地址表已经存入地址表存取器中且未过期失效,即表项有效标志位电平为高,表示表项有效,则执行步骤4;如果地址表没有存入地址表存取器中或者地址表已经过期失效,即表项有效标志位电平为低,表示表项无效,则执行步骤5。3b)根据目的MAC地址得出对应的地址表存取器地址,由该地址表存取器地址读取地址表项,从地址表项中获取目的MAC地址对应的端口值和表项有效标志位:如果地址表已经存入地址表存取器中且未过期失效,即表项有效标志位电平为高,表示表项有效,则根据查找结果向该端口转发数据分组;如果地址表没有存入地址表存取器中或者地址表已经过期失效,即表项有效标志位电平为低,表示表项无效,则向除源端口以外的所有端口广播数据分组。表1地址表格式MAC地址值端口值表项有效标志位老化时间步骤4,MAC地址学习查找模块比较输入端口值和表项获取的端口值,如果这两个端口值相等,即说明已经学习过该表项,只需刷新老化时间,则执行步骤5;反之,即说明学习表项空间已满,则丢弃数据包并向网络管理中心告警。步骤5,学习结果轮询模块接收同步更新表项并将同步更新表项写入同步更新表缓存器中。5a)学习结果轮询模块按顺序依次查看每一路的MAC地址学习查找模块是否送出学习结果,如果该路MAC地址学习查找模块没有学习结果送出,则查看下一路的MAC地址学习查找模块是否有学习结果送出,当MAC地址学习查找模块送出学习结果时,按照表2格式,将同步更新表项送入学习结果轮询模块,执行步骤5b);5b)学习结果轮询模块查看同步更新表缓存器存储状态,当同步更新表缓存器存储状态不为满时,学习结果轮询模块将学习结果按照同步更新表项格式写入同步更新表缓存器中,执行步骤6。表2同步更新表项格式地址表存取器地址值MAC地址值端口值表项有效标志位老化时间步骤6,更新模块从同步更新表缓存器中读取同步更新表项并解析同步更新表项。6a)更新模块查看同步更新表缓存器存储状态,当同步更新表缓存器存储状态不为空时,更新模块读取同步更新表缓存器中的同步更新表项,执行步骤6b)。6b)更新模块从同步更新表项中提取出要更新的地址表存取器地址和地址表,判断要更新的地址表存取器地址是否与多路MAC地址学习和查找的地址表存取器地址为同一地址:如果是同一地址,则在下一个时钟周期,重新执行步骤6b),反之,执行步骤7。步骤7,更新模块同时更新多路地址表。根据地址表存取器地址,同时将要更新的地址表写入多路MAC地址学习查找模块和MAC地址查找模块对应的地址表存取器中,执行步骤8。步骤8,当更新模块不更新地址表时,老化删除模块对多路地址表进行老化删除。老化删除模块中有一个时钟计数器,MAC地址学习查找模块建立地址表时,将地址表项中的老化时间域设置为当前的时间减1,时钟计数器从当前时间开始每一秒钟加1,老化删除模块不停的查看每路地址表项中的老化时间域,如果发现当前时间再次循环到地址表中有效时间域的时间时,认为该表项已经过期失效,则将该地址表从地址表存取器中删除。以上仅为本发明的优选实例,不构成对本发明的任何限制,显然根据本发明的构思,本领域的技术人员均可做出不同的修改和置换,但这些均在本发明的保护之列。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1