一种基于完美哈希算法的路由查找器和方法与流程

文档序号:27683287发布日期:2021-12-01 00:27阅读:271来源:国知局
一种基于完美哈希算法的路由查找器和方法与流程

1.本发明属于电子技术领域,具体属于一种基于完美哈希算法的路由查找器和方法。


背景技术:

2.现有网络路由器及交换机的路由查找器主要基于软件的trie树结构或硬件的cam/tcam实现。这种方式对存储资源的消耗较大,会导致电路面积、功耗过高。同时,传统的cam/tcam方式在fpga实现方案中不好适配,计算、存储资源消耗过大。传统路由查找方法无法满足特殊网络应用(如:传输网、自组网)中低延迟、低功耗、高带宽、低成本等需求。
3.现有的tcam路由查找及优化方式如下:
4.(1)对键值集合进行优化裁剪。通过键值前缀和后缀的匹配方法,减少有效键值的个数,进而减少所需cam的行数,最终降低cam的存储大小,同时提高查找速度。优化方式(1)的问题是降低的程度取决于输入键值集合中键值的分布,因此降低程度不稳定。另外,现有方法最多可以减少50%

95%,即使减少到95%,资源消耗仍较大。
5.(2)降低查找的并行化程度,即对cam分级查找,先对前一部分bit进行查找,得到匹配结果后,再对后一部分bit进行查找。这样降低了总的存储开销,同时也减轻了每一级的fan

in和fan

out,可以支持更高的时钟频率,从而降低查找延迟。优化方式(2)的问题是分多级查找会成倍增加查找的延迟,影响总的数据传输带宽。另外,该方式对存储资源的优化效果不明显。
6.(3)使用类似cache(缓存)的原理进行查找,即先用较小cam对高频出现的键值进行查找,若miss,则去较大的cam中进行查找。优化方式(3)的问题是查找时间不是稳定的,有时快有时慢,且存储资源消耗与之前相比并无减小。
7.综上所述,现有方案无法兼顾较低的空间资源消耗、低功耗以及低延迟。


技术实现要素:

8.为了解决现有技术中存在的问题,本发明提供一种基于完美哈希算法的路由查找器和方法,能够解决现有路由查找的资源高消耗、高功耗问题,同时保证较低延迟以及较低的键值更新延迟。
9.为实现上述目的,本发明提供如下技术方案:
10.一种基于完美哈希算法的路由查找器,包括输入模块、完美哈希函数模块和pn查找表模块;
11.所述输入模块用于输入ip地址,所述输入模块的输出端连接完美哈希函数模块的输入端,所述完美哈希函数模块的输出端连接pn查找表模块输入端。
12.优选的,所述完美哈希函数模块包括模r电路、第一存储器、murmur1哈希器和模m电路;
13.所述输入模块的输出端连接模r电路的输入端和murmur1哈希器的输入端,所述模
r电路的输出端连接第一存储器的输入端,所述第一存储器的输出端连接murmur1哈希器的输入端,所述murmur1哈希器的输出端连接模m电路的输入端。
14.进一步的,所述murmur1哈希器包括参数模块、第一p模块、第二p模块和第一乘法模块;
15.所述输入模块的输出端连接参数模块的输入端,所述参数模块的输出端连接第一p模块的输入端,所述第一存储器的输出端连接第一p模块的输入端和第二p模块的输入端,所述第一p模块的输出端连接第二p模块的输入端,第二p模块的输出端连接第一乘法模块的输入端。
16.进一步的,所述第一p模块和第二p模块结构相同。
17.进一步的,所述第一p模块包括第一异或模块、第二乘法模块、右移模块和第二异或模块;
18.所述第一异或模块的输出端连接第二乘法模块的输入端,所述第二乘法模块的输出端连接右移模块的输入端和第二异或模块的输入端,右移模块的输出端连接第二异或模块的输入端。
19.一种基于完美哈希算法的路由器查找方法,包括以下过程,将输入的ip地址进行完美哈希运算,得到一个对应的哈希值,将哈希值作为pn查找表的索引,访问pn查找表对应位置上的元素,并输出该元素,完成路由器查找。
20.优选的,具体包括以下过程,
21.将输入的ip经过模r电路形成0至(r

1)之间的整数,对模r电路生成的数值和输入的ip在murmur1哈希器中进行完美哈希运算,生成完美哈希值,将完美哈希值输入模m电路中,生成0至(m

1)之间的整数,将模m电路输出的结果作为第二存储器的索引,得到对应的输出端口号。
22.与现有技术相比,本发明具有以下有益的技术效果:
23.本发明第一个将完美哈希函数的设计方法完整地应用在自组网路由查找设计中。尽管目前已有其它的利用完美哈希原理进行路由查找的论文工作,但都是通过纯软件的方式辅助进行路由查找。本发明发现了传输网路由查找的特点:较低延迟、低功耗、低资源利用以及不需要高频率更新键值集合。同时,根据自组网的这些特点,完美哈希方案可以通过哈希函数逻辑,极大地减少键值本身承载的信息量,从而降低存储键值需要的空间。
24.在路由查找延迟上,本发明与传统的解决方案基本持平。同时,相较于传统解决方案,本发明极大地降低了硬件资源利用、路由查找系统功耗(至少一个数量级,具体对比见实施例)。为专用网络(如:传输网系统)的路由查找应用提供了全新的思路。
附图说明
25.图1为本发明完美哈希与路由查找基本概念配图;
26.图2为本发明路由查找整体设计流程图;
27.图3为本发明基于完美哈希的路由查找器原理图;
28.图4为本发明路由查找器硬件行为级设计;
29.图5为本发明murmur1哈希器硬件行为级设计;
30.图6为本发明路由查找器实施例硬件行为级设计。
具体实施方式
31.下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明的解释而不是限定。
32.本发明提供了一种基于完美哈希算法的路由查找器,包括输入模块、完美哈希函数模块和pn查找表模块;输入模块用于输入ip地址,输入模块的输出端连接完美哈希函数模块的输入端,完美哈希函数模块的输出端连接pn查找表模块输入端。
33.本发明提供了一种基于完美哈希算法的路由器查找方法,包括以下过程,将输入的ip地址进行完美哈希运算,得到一个对应的哈希值,将哈希值作为pn查找表的索引,访问pn查找表对应位置上的元素,并输出该元素,完成路由器查找。
34.完美哈希解决的数学问题是:输入n个互不相同的键值key,通过完美哈希函数的转换,输出m个互不相同的整数结果value。其中n<=m。注意:1个输入相互对应1个结果。例如:将n=10000个键值映射为独立的m个整数,算法尽量使m越小越好。(当算法能使得m=n时,完美哈希函数被称为最小完美哈希函数。)
35.如图1所示,完美哈希算法和路由查找算法在原理上解决的问题不同,但设计方式可以类比。因此,本发明借鉴完美哈希算法的设计思路,首次将路由查找算法及其硬件化通过完美哈希的方式实现。传统的路由查找技术方案并没有完全使用完美哈希的方式。
36.如图2所示,本发明的整体设计包含如下图所示三个部分:
37.首先,基于完美哈希算法的设计思路,本发明提出路由查找的硬件行为级设计。
38.其次,本发明提出针对该硬件设计的控制方法。
39.最后,本发明基于fpga的硬件资源,对路由查找器进行fpga硬件化实现。
40.如图3所示,在路由查找时,输入的某个ip地址会经过完美哈希运算,得到一个对应的哈希值(介于1

m之间),该哈希值作为pn查找表的索引,访问pn查找表对应位置上的元素,并输出该元素,完成路由查找结束。
41.为了支持这种类型的路由查找,首先需要将所有可能存在的输入ip地址进行完美哈希,得到对应的n个整数(在1

m的区间内)索引。其次,将ip地址对应的输出端口号(pn 0

pn m)放在pn查找表对应的索引位置上。本发明硬件行为级设计逻辑图如图4所示。
42.本发明包含两个硬件电路设计:1.完美哈希器设计(图4中虚线部分);2.基于完美哈希的路由查找器设计(图4)。完美哈希器可以被适用于其它完美哈希任务中,由于本发明关注点在路由查找任务,因此主要对路由查找器及其软件控制方法进行详细介绍。
43.基于该专用路由查找电路,本发明设计了对应的软件控制方法。假设输入的独立的ip地址有n个。如图4所示,完美哈希函数模块包括模r电路、第一存储器、murmur1哈希器和模m电路;输入模块的输出端连接模r电路的输入端和murmur1哈希器的输入端,模r电路的输出端连接第一存储器的输入端,第一存储器的输出端连接murmur1哈希器的输入端,murmur1哈希器的输出端连接模m电路的输入端,模m电路的输出端连接第二存储器的输入端。第二存储器用于保存最终输出的端口号。
44.图5中给出了基于murmur1哈希(将该哈希算法做了一部分修改)的实际电路设计,该设计固定了参数k2和kmul,并固化了计算流程。虚线部分对应为p模块,该模块分为异或、乘法(乘kmul)、右移47bit、异或四个步骤。
45.murmur1哈希器包括参数模块、第一p模块、第二p模块和第一乘法模块;输入模块
的输出端连接参数模块的输入端,参数模块的输出端连接第一p模块的输入端,所述第一存储器的输出端连接第一p模块的输入端和第二p模块的输入端,第一p模块的输出端连接第二p模块的输入端,第二p模块的输出端连接第一乘法模块的输入端。
46.第一p模块和第二p模块结构相同;第一p模块包括第一异或模块、第二乘法模块、右移模块和第二异或模块;第一异或模块的输出端连接第二乘法模块的输入端,所述第二乘法模块的输出端连接右移模块的输入端和第二异或模块的输入端,右移模块的输出端连接第二异或模块的输入端。
47.参数模块用于对输入参数减去k2,k2=0
×
b492b66fbe98f273ull。
48.乘法模块用于对输入参数乘以kmul,kmul=0
×
9ddfea08eb382d69ull。
49.第一p模块和第二p模块均对输入参数先进行异或处理,然后经过乘法模块,乘以kmul,再经过右移模块,右移47bit,然后再进行异或处理。
50.基于软件模拟的参数生成阶段:
51.模r电路可以保证其输出为0至(r

1)之间的整数,第一存储器的容量为r。模m电路可以保证其输出为0至(m

1)之间的整数,第二存储器的容量为m。r与m的取值由软件模拟后确定。针对每一种路由查找的应用,需要模拟出一组r和m的值,以及第一存储器和第二存储器中的原始参数数值。
52.由为了确定r及m的数值,首先将输入数据送入模拟软件,软件在一定范围内尝试r和m的数值组合。对某一组r、m数组合,模拟软件首先实现整个路由查找过程,同时搜索存储器中合理的参数数据,并使参数固化在存储器中。在硬件实现阶段,由于存储器中的参数以及r、m的取值为固定值,整个系统不需要额外参数输入,可作为整体对每一个输入ip地址进行查找,得到其正确的输出端口号。软件模拟过程如下:
53.在图4中,首先将r的数值设为第一存储器的容量;其次,针对每一组ip地址构成的集合,使用软件编程的方式对虚线部分(完美哈希)进行模拟,搜索出第一存储器每个位置上的合理数值,并预先存入至对应的第一存储器中;最后,在虚线部分具备生成n个独一无二的完美哈希结果的能力后,对哈希结果进行模m操作,m为第二存储器的容量。将模m操作的结果(1

m)作为最右端第二存储器的索引,对索引对应的m个第二存储器位置进行赋值,赋值大小为每一个输入ip地址对应正确的输出端口号。至此,软件模拟的参数生成阶段完成,得到最终实际电路的控制参数。
54.结合xilinx公司vivado以及vivado hls(2019.2)软件,可以对本发明所设计的路由查找电路进行综合,生成对应的fpga硬件逻辑以及fpga资源利用报告,并将fpga逻辑烧写至实际电路中。
55.实施例
56.本发明针对64bit固定的输入键值规模(10000个)以及4端口(0,1,2,3)输出的路由查找应用,进行专用硬件电路设计。与此同时,该设计给出了存储器的具体位宽需要,在fpga以及asic实现上均可适配相应的存储资源。
57.由于本发明的电路逻辑较为固定,在原有设计的框架下,实施例只需要确定各个参数的具体数值。实施例的具体电路行为级设计如下:
58.如图6,针对实施例的键值、端口规模,本发明给出了具体数据的位宽信息。其中,r与m的大小,第一存储器、第二存储器中数据的大小和位宽,均由对应的软件生成算法预先
确定。因此,该电路总的存储资源消耗是确定的,总的存储资源为:2503*8+10007*2=40038bit。针对不同的键值集合(10000个64

bit键值),该设计均可以支持路由查找的任务。
59.由于整体复杂性有限,该设计可以通过verilog进行仿真与综合,再经过完整asic设计流程实现。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1