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

技术编号:11203302 阅读:118 留言:0更新日期:2015-03-26 11:12
本发明专利技术提供了一种MAC地址学习时哈希冲突的同步方法,创建一个同步队列,芯片每学习到一个MAC地址就将MAC地址信息加入到同步队列,MAC地址信息加入同步队列为先进先出的顺序;读取同步队列的第一条MAC地址信息;判断MAC地址对应的哈希桶是否已满;若MAC地址对应的哈希桶未满,则从MAC地址信息提取地址添加到芯片,同时删除对应同步队列的MAC地址信息,否则进行哈希冲突处理步骤。采用本发明专利技术技术方案后,在MAC地址学习时发生哈希冲突,提供了一种处理方式,使多个芯片的哈希表保持MAC地址一致,且做到先学习到的MAC地址先存储到哈希表里,放弃后学习到的MAC地址。

【技术实现步骤摘要】

本专利技术涉及交换机
,尤其涉及一种MAC地址学习时哈希冲突的同步方法
技术介绍
多芯片交换机,在硬件上MAC地址表通常是一个哈希表,芯片学习到的MAC地址可以存放在相关哈希桶的任意一空闲项里。当MAC地址的个数超过哈希桶的大小时就会出现哈希冲突,超出部分将无处可存放。例如一个16000个表项的MAC地址表要学习32000个的MAC地址时,至少有16K的MAC地址将不可避免的因为哈希冲突而被丢弃。多芯片的交换机要保证各芯片的MAC地址表保持一致。每块芯片都能自动学习MAC地址,它们学习的MAC地址可能不一样,例如在某一瞬间第一块芯片上学习到X条MAC地址,同时第二块芯片上学习到Y条MAC地址,这些MAC地址的哈希值都是同一个,芯片的哈希桶的大小均为Z,X和Y均小于Z,但是X+Y>Z,而且两个芯片上学习到的MAC地址没有交集,如何保持各芯片的MAC地址在逻辑上保持一致,如何处理超出的部分。
技术实现思路
本专利技术需解决的技术问题是克服上述的不足,提供一种MAC地址学习时哈希冲突的同步方法,包括:创建一个同步队列,芯片每学习到一个MAC地址就将MAC地址信息加入到同步队列,MAC地址信息加入同步队列为先进先出的顺序;读取同步队列的第一条MAC地址信息;判断MAC地址对应的哈希桶是否已满;若MAC地址对应的哈希桶未满,则从MAC地址信息提取地址添加到芯片,同时删除对应同步队列的MAC地址信息,否则进行哈希冲突处理步骤。进一步的,所述MAC地址信息包括MAC地址学习内容和学习MAC地址的芯片标识。进一步的,判断MAC地址对应的哈希桶是否已满的步骤包括:从MAC地址信息中提取出芯片标识;运用哈希算法得出哈希桶;判断非MAC地址学习芯片的哈希桶是否已满。进一步的,所述哈希冲突处理步骤包括:逐条读取MAC地址对应的哈希桶里的地址信息并匹配所述同步队列中的MAC地址;若哈希桶里的地址信息与同步队列中的MAC地址匹配,则在芯片中删除匹配中的地址信息,并删除同步队列中匹配中的MAC地址信息,将同步队列的第一条MAC地址信息中的MAC地址同步到芯片。进一步的,若哈希桶里的所有地址信息与同步队列中的MAC地址都不匹配,则直接删除同步队列中所有MAC地址信息。采用本专利技术的技术方案后,在MAC地址学习时发生哈希冲突,提供了一种处理方式,使多个芯片的哈希表保持MAC地址一致,且做到先学习到的MAC地址先存储到哈希表里,放弃后学习到的MAC地址。附图说明图1是本专利技术提供的MAC地址学习时哈希冲突的同步方法框图。具体实施方式为了使本领域相关技术人员更好地理解本专利技术的技术方案,下面将结合本专利技术实施方式的附图,对本专利技术实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本专利技术一部分实施方式,而不是全部的实施方式。下面结合附图和实施方式对本专利技术作进一步说明。参阅图1,本专利技术提供的一种MAC地址学习时哈希冲突的同步方法,包括:步骤S100,创建一个同步队列,芯片每学习到一个MAC地址就将MAC地址信息加入到同步队列,MAC地址信息加入同步队列为先进先出的顺序;MAC地址信息包括MAC地址学习内容和学习MAC地址的芯片标识,MAC地址学习内容即芯片学习到的MAC地址。芯片每学习到一个MAC地址,依照先后顺序放进同步队列,同步队列中,依照先进先出的原则,先进同步队列的MAC信息先同步。步骤S200,读取同步队列的第一条MAC地址信息。同步队列的第一条MAC地址,即同步队列的目标同步信息,同步队列的头部。读取第一条MAC地址信息,即MAC地址学习内容(MAC地址)和学习MAC地址的芯片标识。步骤S300,判断MAC地址对应的哈希桶是否已满;具体的,从MAC地址信息中提取出芯片标识;运用哈希算法得出哈希桶;判断非MAC地址学习芯片的哈希桶是否已满。芯片学习到的MAC地址是要同步到非学习芯片上,所以对应的哈希桶也是非学习芯片上的。步骤S400,若MAC地址对应的哈希桶未满,则将MAC地址同步到芯片;本实施例中,将MAC地址同步到芯片的步骤包括:从MAC地址信息提取地址添加到芯片;删除对应同步队列的MAC地址信息。步骤S500,若MAC地址对应的哈希桶已经满了,则进行哈希冲突处理步骤。具体的,哈希冲突处理步骤包括:逐条读取MAC地址对应的哈希桶里的地址信息并匹配所述同步队列中的MAC地址;若哈希桶里的地址信息与同步队列中的MAC地址匹配,则在芯片中删除匹配中的地址信息,并删除同步队列中匹配中的MAC地址信息,将同步队列的第一条MAC地址信息中的MAC地址同步到芯片;若哈希桶里的所有地址信息与同步队列中的MAC地址都不匹配,则直接删除同步队列中所有MAC地址信息。下面举例说明,假如现在有两个芯片,芯片对应的哈希桶容量为8,即可以存储8个MAC地址,。假设每个芯片都学习8个MAC地址,对应的哈希桶已经存储了8个MAC地址,还有8个在同步队列中。如何判断谁先学到谁后面学到呢?同步队列的顺序为准,先学到的肯定先进入队列,所以第一条MAC地址信息肯定比同步队列中的其他MAC地址先到,因为队列是按先进先出的原则操作的,第一条MAC地址信息是队列中的正在出队的MAC地址信息,其他的还在队列中。如果在一个芯片的哈希桶里面的地址信息与同步队列中MAC地址信息匹配,说明哈希桶里面的地址信息还没有完成同步,且该地址信息比同步队列第一条MAC地址信息晚学习到,应该将第一条MAC地址信息的MAC地址同步到该哈希桶,具体操作为先删除芯片中匹配的地址信息,并将同步队列中匹配中的MAC地址信息删除,再将第一条MAC地址信息中的MAC地址同步到芯片。在MAC地址对应的哈希桶满了后,通过上述步骤,提供一种哈希冲突处理机制,保证多个芯片的哈希表保持MAC地址一致,且保存先学习到的MAC地址。采用本专利技术的技术方案后,在MAC地址学习时发生哈希冲突,提供了一种处理方式,使多个芯片的哈希表保持MAC地址一致,且做到先学习到的MAC地址先存储到哈希表里,放弃后学习到的MAC地址。以上仅表达了本专利技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本专利技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本专利技术构思的前提下,还可以做出若干变形和改进,这<本文档来自技高网...
一种MAC地址学习时哈希冲突的同步方法

【技术保护点】
一种MAC地址学习时哈希冲突的同步方法,其特征在于,包括:创建一个同步队列,芯片每学习到一个MAC地址就将MAC地址信息加入到同步队列,MAC地址信息加入同步队列为先进先出的顺序;读取同步队列的第一条MAC地址信息;判断MAC地址对应的哈希桶是否已满;若MAC地址对应的哈希桶未满,则将MAC地址同步到芯片,否则进行哈希冲突处理步骤。

【技术特征摘要】
1.一种MAC地址学习时哈希冲突的同步方法,其特征在于,包括:
创建一个同步队列,芯片每学习到一个MAC地址就将MAC地址信息加入
到同步队列,MAC地址信息加入同步队列为先进先出的顺序;
读取同步队列的第一条MAC地址信息;
判断MAC地址对应的哈希桶是否已满;
若MAC地址对应的哈希桶未满,则将MAC地址同步到芯片,否则进行哈
希冲突处理步骤。
2.根据权利要求1所述的MAC地址学习时哈希冲突的同步方法,其特征
在于,将MAC地址同步到芯片的步骤包括:
从MAC地址信息提取地址添加到芯片;
删除对应同步队列的MAC地址信息。
3.根据权利要求1所述的MAC地址学习时哈希冲突的同步方法,其特征
在于,所述MAC地址信息包括MAC地址学习内容和学习MAC地址的芯片标
识。
4.根据权利要求2所述的MAC地址学习时哈希冲突的同步方...

【专利技术属性】
技术研发人员:周风林胡哲刘驰
申请(专利权)人:上海斐讯数据通信技术有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1