一种mac地址学习时哈希冲突的同步方法

文档序号:7821612阅读:3129来源:国知局
一种mac地址学习时哈希冲突的同步方法
【专利摘要】本发明提供了一种MAC地址学习时哈希冲突的同步方法,创建一个同步队列,芯片每学习到一个MAC地址就将MAC地址信息加入到同步队列,MAC地址信息加入同步队列为先进先出的顺序;读取同步队列的第一条MAC地址信息;判断MAC地址对应的哈希桶是否已满;若MAC地址对应的哈希桶未满,则从MAC地址信息提取地址添加到芯片,同时删除对应同步队列的MAC地址信息,否则进行哈希冲突处理步骤。采用本发明技术方案后,在MAC地址学习时发生哈希冲突,提供了一种处理方式,使多个芯片的哈希表保持MAC地址一致,且做到先学习到的MAC地址先存储到哈希表里,放弃后学习到的MAC地址。
【专利说明】一种MAC地址学习时哈希冲突的同步方法

【技术领域】
[0001]本发明涉及交换机【技术领域】,尤其涉及一种MAC地址学习时哈希冲突的同步方法。

【背景技术】
[0002]多芯片交换机,在硬件上MAC地址表通常是一个哈希表,芯片学习到的MAC地址可以存放在相关哈希桶的任意一空闲项里。当MAC地址的个数超过哈希桶的大小时就会出现哈希冲突,超出部分将无处可存放。例如一个16000个表项的MAC地址表要学习32000个的MAC地址时,至少有16K的MAC地址将不可避免的因为哈希冲突而被丢弃。
[0003]多芯片的交换机要保证各芯片的MAC地址表保持一致。每块芯片都能自动学习MAC地址,它们学习的MAC地址可能不一样,例如在某一瞬间第一块芯片上学习到X条MAC地址,同时第二块芯片上学习到Y条MAC地址,这些MAC地址的哈希值都是同一个,芯片的哈希桶的大小均为Z,X和Y均小于Z,但是X+Y>Z,而且两个芯片上学习到的MAC地址没有交集,如何保持各芯片的MAC地址在逻辑上保持一致,如何处理超出的部分。


【发明内容】

[0004]本发明需解决的技术问题是克服上述的不足,提供一种MAC地址学习时哈希冲突的同步方法,包括:
[0005]创建一个同步队列,芯片每学习到一个MAC地址就将MAC地址信息加入到同步队列,MAC地址彳目息加入同步队列为先进先出的顺序;
[0006]读取同步队列的第一条MAC地址信息;
[0007]判断MAC地址对应的哈希桶是否已满;
[0008]若MAC地址对应的哈希桶未满,则从MAC地址信息提取地址添加到芯片,同时删除对应同步队列的MAC地址信息,否则进行哈希冲突处理步骤。
[0009]进一步的,所述MAC地址信息包括MAC地址学习内容和学习MAC地址的芯片标识。
[0010]进一步的,判断MAC地址对应的哈希桶是否已满的步骤包括:
[0011]从MAC地址信息中提取出芯片标识;
[0012]运用哈希算法得出哈希桶;
[0013]判断非MAC地址学习芯片的哈希桶是否已满。
[0014]进一步的,所述哈希冲突处理步骤包括:
[0015]逐条读取MAC地址对应的哈希桶里的地址信息并匹配所述同步队列中的MAC地址;
[0016]若哈希桶里的地址信息与同步队列中的MAC地址匹配,则在芯片中删除匹配中的地址信息,并删除同步队列中匹配中的MAC地址信息,将同步队列的第一条MAC地址信息中的MAC地址同步到芯片。
[0017]进一步的,若哈希桶里的所有地址信息与同步队列中的MAC地址都不匹配,则直接删除同步队列中所有MAC地址信息。
[0018]采用本发明的技术方案后,在MAC地址学习时发生哈希冲突,提供了一种处理方式,使多个芯片的哈希表保持MAC地址一致,且做到先学习到的MAC地址先存储到哈希表里,放弃后学习到的MAC地址。

【专利附图】

【附图说明】
[0019]图1是本发明提供的MAC地址学习时哈希冲突的同步方法框图。

【具体实施方式】
[0020]为了使本领域相关技术人员更好地理解本发明的技术方案,下面将结合本发明实施方式的附图,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本发明一部分实施方式,而不是全部的实施方式。
[0021]下面结合附图和实施方式对本发明作进一步说明。
[0022]参阅图1,本发明提供的一种MAC地址学习时哈希冲突的同步方法,包括:
[0023]步骤S100,创建一个同步队列,芯片每学习到一个MAC地址就将MAC地址信息加入到同步队列,MAC地址信息加入同步队列为先进先出的顺序;
[0024]MAC地址信息包括MAC地址学习内容和学习MAC地址的芯片标识,MAC地址学习内容即芯片学习到的MAC地址。芯片每学习到一个MAC地址,依照先后顺序放进同步队列,同步队列中,依照先进先出的原则,先进同步队列的MAC信息先同步。
[0025]步骤S200,读取同步队列的第一条MAC地址信息。
[0026]同步队列的第一条MAC地址,即同步队列的目标同步信息,同步队列的头部。读取第一条MAC地址信息,即MAC地址学习内容(MAC地址)和学习MAC地址的芯片标识。
[0027]步骤S300,判断MAC地址对应的哈希桶是否已满;
[0028]具体的,从MAC地址信息中提取出芯片标识;
[0029]运用哈希算法得出哈希桶;
[0030]判断非MAC地址学习芯片的哈希桶是否已满。
[0031]芯片学习到的MAC地址是要同步到非学习芯片上,所以对应的哈希桶也是非学习芯片上的。
[0032]步骤S400,若MAC地址对应的哈希桶未满,则将MAC地址同步到芯片;
[0033]本实施例中,将MAC地址同步到芯片的步骤包括:
[0034]从MAC地址信息提取地址添加到芯片;
[0035]删除对应同步队列的MAC地址信息。
[0036]步骤S500,若MAC地址对应的哈希桶已经满了,则进行哈希冲突处理步骤。
[0037]具体的,哈希冲突处理步骤包括:
[0038]逐条读取MAC地址对应的哈希桶里的地址信息并匹配所述同步队列中的MAC地址;
[0039]若哈希桶里的地址信息与同步队列中的MAC地址匹配,则在芯片中删除匹配中的地址信息,并删除同步队列中匹配中的MAC地址信息,将同步队列的第一条MAC地址信息中的MAC地址同步到芯片;
[0040]若哈希桶里的所有地址信息与同步队列中的MAC地址都不匹配,则直接删除同步队列中所有MAC地址信息。
[0041]下面举例说明,假如现在有两个芯片,芯片对应的哈希桶容量为8,即可以存储8个MAC地址,。假设每个芯片都学习8个MAC地址,对应的哈希桶已经存储了 8个MAC地址,还有8个在同步队列中。
[0042]如何判断谁先学到谁后面学到呢?同步队列的顺序为准,先学到的肯定先进入队列,所以第一条MAC地址信息肯定比同步队列中的其他MAC地址先到,因为队列是按先进先出的原则操作的,第一条MAC地址信息是队列中的正在出队的MAC地址信息,其他的还在队列中。如果在一个芯片的哈希桶里面的地址信息与同步队列中MAC地址信息匹配,说明哈希桶里面的地址信息还没有完成同步,且该地址信息比同步队列第一条MAC地址信息晚学习到,应该将第一条MAC地址信息的MAC地址同步到该哈希桶,具体操作为先删除芯片中匹配的地址信息,并将同步队列中匹配中的MAC地址信息删除,再将第一条MAC地址信息中的MAC地址同步到芯片。
[0043]在MAC地址对应的哈希桶满了后,通过上述步骤,提供一种哈希冲突处理机制,保证多个芯片的哈希表保持MAC地址一致,且保存先学习到的MAC地址。
[0044]采用本发明的技术方案后,在MAC地址学习时发生哈希冲突,提供了一种处理方式,使多个芯片的哈希表保持MAC地址一致,且做到先学习到的MAC地址先存储到哈希表里,放弃后学习到的MAC地址。
[0045]以上仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【权利要求】
1.一种MAC地址学习时哈希冲突的同步方法,其特征在于,包括: 创建一个同步队列,芯片每学习到一个MAC地址就将MAC地址信息加入到同步队列,MAC地址彳目息加入同步队列为先进先出的顺序; 读取同步队列的第一条MAC地址信息; 判断MAC地址对应的哈希桶是否已满; 若MAC地址对应的哈希桶未满,则将MAC地址同步到芯片,否则进行哈希冲突处理步骤。
2.根据权利要求1所述的MAC地址学习时哈希冲突的同步方法,其特征在于,将MAC地址同步到芯片的步骤包括: 从MAC地址信息提取地址添加到芯片; 删除对应同步队列的MAC地址信息。
3.根据权利要求1所述的MAC地址学习时哈希冲突的同步方法,其特征在于,所述MAC地址信息包括MAC地址学习内容和学习MAC地址的芯片标识。
4.根据权利要求2所述的MAC地址学习时哈希冲突的同步方法,其特征在于,判断MAC地址对应的哈希桶是否已满的步骤包括: 从MAC地址信息中提取出芯片标识; 运用哈希算法得出哈希桶; 判断非MAC地址学习芯片的哈希桶是否已满。
5.根据权利要求1所述的MAC地址学习时哈希冲突的同步方法,其特征在于,所述哈希冲突处理步骤包括: 逐条读取MAC地址对应的哈希桶里的地址信息并匹配所述同步队列中的MAC地址;若哈希桶里的地址信息与同步队列中的MAC地址匹配,则在芯片中删除匹配中的地址信息,并删除同步队列中匹配中的MAC地址信息,将同步队列的第一条MAC地址信息中的MAC地址同步到芯片。
6.根据权利要求5所述的MAC地址学习时哈希冲突的同步方法,其特征在于,还包括: 若哈希桶里的所有地址信息与同步队列中的MAC地址都不匹配,则直接删除同步队列中所有MAC地址信息。
【文档编号】H04L12/743GK104468362SQ201410717423
【公开日】2015年3月25日 申请日期:2014年12月1日 优先权日:2014年12月1日
【发明者】周风林, 胡哲, 刘驰 申请人:上海斐讯数据通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1