一种128位因特网地址并行高速路由寻址方法

文档序号:7945901阅读:119来源:国知局
专利名称:一种128位因特网地址并行高速路由寻址方法
技术领域
本发明是一种用于计算机网络IPv6 (互连网协议版本6)的并行高速路由 寻址方法,属于计算机网络与信息网络技术领域。
背景技术
随着Intemet规模的急剧膨胀,信息量的加大以及Intemet上新应用的不断涌 现,20多年前提出的IPv4网际互连协议有许多方面不适应。首先是地址的限制, 其次是日益复杂的应用业务如流式视频和音频业务等对网络性能提出新的需 求,人们对IP协议的地址空间、性能以及安全性等方面提出了更高的要求,使 IPv4的局限性越来越显现出来,迫切需要发展新一代互联网,IPv6正是为了满 足这些新的需求而提出来的。
另一方面,由于Internet规模的膨胀、信息量的加大、应用业务的多元化 导致网络流量的迅速增加,据统计,网络流量每几个月就会翻一番。为了消除 网络流量增加带来的影响,保证Internet的服务质量,我们必须消除三个主要 因素的影响链路传输速率、路由器的数据处理能力和路由查找速率。而前两 个因素都已经存在解决方案,例如,光纤的广泛应用可以保证链路的传输速率; 交换技术的应用能够使路由器以G比特的速率将数据包从输入端口转移到相 应的输出端口。而第三个因素就成为了制约网络速率的瓶颈,而当前的路由查 找算法大部分是针对IPv4,针对IPv6的路由査找算法还不够成熟。因此,有 必要进行针对于IPv6的高速路由査找算法的研究。
IPv6地址的长度为128位,也就是说可以有2的128次方的IP地址,相当于 10的后面有38个零,如此庞大的地址空间,足以保证地球上每个人拥有一个或 多个IP地址。
2. IPv6地址类型
IPv6地址分三种类型的,分别占用不同的地址空间*单点传送(unicast address):这种类型的地址是单个接口的地址。 发送到一个单点传送地址的信息包只会送到地址为这个地址的接口。
*任意点传送(anycast address):这种类型的地址是一组接口的地址, 发送到一个任意点传送地址的信息包只会发送到这组地址中的一个(根据路由 距离的远近来选择)
*多点传送(multicast address):这种类型的地址是一组接口的地址, 发送到一个多点传送地址的信息包会发送到属于这个组的全部接口。
3. IPv6寻址方法
技术领域
本发明内容只涉及对单点传送地址的寻址处理。
当IP分组进入路由器时,路由器根据IP头中的目的IP地址,在路由表 (Routing Table,又称前缀表Prefix Table)中査找相应的输出端口和下一跳 信息(Next-Hop),以便将IP分组从这个输出端口传送到对应的下一跳路由器。 在路由表中査找目的IP地址的下一跳信息的动作就是IP路由査找。与精确匹配 查找(Exact Match Search)不同的是,IP路由查找必须在前缀表中査找到和目 的地址匹配的最长前缀,这种查找是一种最长匹配査找(Longest Match Search , LMS),而匹配的最长前缀被称为最长匹配前缀(Longest Prefix Match ,LPM),所以IP路由査找问题有时也被称为LPM问题。
4. 一些名词及术语
为了便于描述,我们使用prefix32, prefix35, prefix48分别表示长度 为32, 35, 48的前缀。并称前缀的最高位为第1位,使用hx—y(prefix32)表示 取长度为32位的前缀的第x到第y位。

发明内容
技术问题本发明的目的就是提供一种128位因特网地址(IPv6)并行高 速路由寻址方法,该方法具有并行高速路由寻址方法,解决路由器由于路由寻 址而带来的数据处理工作。
技术方案随着Internet的发展,路由信息不断增加,路由表不断膨胀, 路由査找问题越来越成为影响网络通信速度的瓶颈,如何快速有效地询查路由 地址,实现数据的高效转发是提高计算机网络性能急需解决的问题,基于对 当前IPv6骨干路由器的路由表的特点进行分析总结,设计了一种适合IPv6的
4并行査找方法。该方法由四路组成(见图2),其中三路是由占了路由前缀数量 90%以上的长度为32, 35, 48的前缀组成,第四路采用硬件方法,处理除长 度为32, 35, 48外的其他前缀。对于32, 35, 48三路,本发明设计了两个数 据结构进行数据的处理,称为段表和偏移量表,它们的结构如图4、 5、 6所示。 由于该三路只要考虑确定长度的路由前缀,避免了最长前缀匹配问题。该三路 的路由査找只需要最多两次的存储器访问操作,并且可以在常量时间内实现路 由更新,存储器的需求不到lMbytes,且该需求受路由前缀数量的增加影响较 小。该方法对未来路由寻址的发展具有良好的适应性。 具体步骤为
a) 采用四路并行路由地址寻找框架,
其中三路是由占了路由前缀长度为32, 35, 48的前缀组成,第四路处理 其他长度的前缀寻址,路由寻址査找时,对并行框架中的4路同时进行査找, 然后由前缀长度比较器选出前缀最长的一路对应的下一跳;
b) 对每一路采用的寻址方法为;
1) 取目标IP地址的17到32比特做为索引,记为h17—32(IP),访问段表 的对应的表项;
2) 査看该表项的最高位即第1比特,若为0,则取出段表表项中存储的信 息,并取目标IP的前16比特,记为hl—16(IP),进行比较,若相等,则哮取 段表表项中存储的下一跳信息做为査询结果,送前缀长度比较器;若不相等, 则将0作为结果送前缀长度比较器;
3) 若段表表项的第1比特为1,则读取段表表项中存储的信息,记为 off—index,并取目标IP的前16比特,按以下公式计算散列值,记为hash:
hash = off—index * 16 + f( hi—16(IP))
然后以此hash为索引去访问偏移量表,若偏移量表对应的表项不为空, 则取出该表项中存储的信息,记为hi—16(prefix32),并与hi—16(IP)进行比 较,若相等,则读取该表项中存储的下一跳信息做为査询结果,送前缀长度比 较器;若不相等,则将O作为结果送前缀长度比较器;
4) 前缀长度比较器从并行的各个分路获得前缀长度和对应的下一跳的路 由信息,除去下一跳为零的分路后,选择前缀长度最长的分路对应的下一跳做
5为査询结果,路由寻址结束。
有益效果对当前IPv6骨干路由器的路由表的特点进行分析总结,根据 IPv6路由表的特点设计了一适合IPv6的并行查找框架。该框架由四路组成, 其中三路是由占了路由前缀数量90%以上的长度为32, 35, 48的前缀组成, 第四路采用TCAM,其中存放了除长度为32, 35, 48外的其他前缀,TCAM为硬 件实现,其査询速度很快,不会影响并行框架的整体性能。对于32, 35, 48 三路,本文设计了段表加偏移量表的数据结构,并设计了相应的hash函数。 由于该三路只要考虑确定长度的路由前缀,避免了最长前缀匹配问题。该三路 的路由査找只需要最多两次的存储器访问操作,并且可以在常量时间内实现路 由更新,存储器的需求不到lMbytes,且该需求受路由前缀数量的增加影响较 小。该算法对未来路由寻址的发展具有良好的适应性。具体表现为
(1)方法的路由查询的时间复杂度。对于32, 35, 48三个分路,算法实 现的数据结构都是段表加偏移量表,路由的査询时间体现在段表和偏移量表的 访问,最多两次对存储器的访问,便可得到査询结果,因此路由査询的时,间复 杂度为O(l)。
(2)方法的对存储容量需求。存储容量需求就是段表和偏移量表的存储需 求。段表的存储容量需求即为三个段表的需求的和,各个段表的存储容量需求 分别为
216*4*sizeof(char) = 256k (Byte),对于pref ix32;
216*4*sizeof(char) = 256k (Byte),对于pref ix35;
216*6*sizeof(char)=384k(Byte),对于prefix48. 所以,段表的储存容量需求为-
256k+256k+384k = 896k (Byte). 偏移量表的存储容量需求为解决段表冲突所需的存储容量,若前缀数量为N, 则最坏情况下,每两个前缀就会产生冲突,所以冲突数量最多为N/2,而段表 的每个冲突偏移量表用16个表项来解决,每个表项又占用4个Bytes,所以算 法的偏移量表存储容量需求最多为
N/2*16*4 = 32N (Byte). 所以,算法总的存储容量的需求为
896k + 32N (Byte).对当前的路由表,在实验中,对prefix32、 prefix35、 prefix化我们分 别使用大小为213, 21G, 21()个表项的偏移量表,则根据段表和偏移量表的存储 内容,各个分路的存储容量的需求分别为
216*4*sizeof(char) + 213*4*sizeof(char) = 256k + 32k = 288k(Byte),对于 prefix32;
216*4*sizeof(char) + 210*4*sizeof(char) = 256k + lk =257k(Byte),对于 prefix35:
216*6*sizeof(char) + 210*6*sizeof(char) = 384k+6k =390k(Byte),对于 prefix48.
所以,存储容量的总需求为
288k+257k+3卯k = 935k(Byte).


图1是单播地址格式,
图2是IPv6并行路由寻址框架,
图3是并行框架中prefix32分路的路由寻址实现结构, 图4是32bit前缀的段表和偏移量表表项的内容, 图5是35bit前缀的段表和偏移量表表项的内容, 图6是48bit前缀的段表和偏移量表表项的内容。
具体实施例方式
路由査找时,我们对并行框架中的4路同时进行査找,然后由前缀长度比 较器选出前缀最长的一路对应的Next Hop。其中,TCAM是硬件实现的,且TCAM 是根据前缀内容直接进行查找,査询速度很快,不会对并行框架的整体的査询 时间。我们重点阐述其他三路的路由査找过程。
下面对pref ix32这路进行阐述,査询过程如下
(1) 取目标IP地址的17—32比特hl7—32(IP)做为索引,访问段表对应的 表项;
(2) 査看该表项的第1比特(即最高位),若为0,则取出段表表项中存储 的hl—16(prefix32),并取目标IP的前16比特hi—16(IP),进行比较,若相
7等,则读取段表表项中存储的Next H叩做为查询结果,送前缀长度比较器; 若不相等,则将O作为结果送前缀长度比较器。
(3) 若段表表项的第1比特为1,则读取段表表项中存储的offjndex,并 取目标IP的前16比特hi—16(IP),然后以如下公式计算hash:
hash = off—index * 16 + f( hl一16(IP))
再以此hash为索引去访问偏移量表。若偏移量表对应的表项不为空,则 取出该表项中存储的hi—16(prefix32),并与hi—16(IP)进行比较,若相等, 则读取该表项中存储的Next Hop做为査询结果,送前缀长度比较器;若不相 等,则将O作为结果送前缀长度比较器。
(4) 前缀长度比较器从并行的各个分路获得前缀长度和对应的下一跳的 路由信息,除去Next Hop为零的分路后,选择前缀长度最长的分路对应的Next H叩做为查询结果。路由査找结束。算法结束。
为了便于描述,我们使用prefix32, prefix35, prefix48分别表示长度 为32, 35, 48的前缀。并称前缀的最高位为第1位,使用hx—y(prefix32)表示 取长度为32位的前缀的第x到第y位。
以prefix32为例,如图3所示,该体系结构的数据结构主要是两张表(段 表和偏移量表)。段表共有216=65536个表项,以h17—32(prefix32)做为hash 函数(也就是段表的索引),我们使用段表表项的第1个比特(记为F)来标识 是否有hash冲突发生,当F为0,表示没有冲突发生;当F为1时表示有冲突 发生。
当没有冲突发生时,段表以hl7—32(prefix32)为索引的表项中需要存储为 了精确匹配前缀的hi—16(prefix32),若目标IP的hi—16(IP)和段表表项中的 hi—16(prefix32)匹配,则说明找到了相应的路由,需要获取相应的下一跳路 由信息,所以段表表项还要存储下一跳的路由信息Next Hop。所以没有冲突时, 段表表项需要存储以下内容
(1) 标识是否有冲突的标志F=0;
(2) 为了精确匹配前缀的h1—16(prefix32);
(3) 下一跳的路由信息Next Hop。
当有冲突发生时,我们使用偏移量表来存储段表中冲突的表项,因此段表
8中要存储偏移量表中对应表项的索引,为了算法更新操作方便,我们还在段表 表项中存入对应该表项的hash冲突数量。所以有冲突时,段表表项需要存储 以下内容-
(1) 标识是否有冲突的标志F-1;
(2) 偏移量表中对应表项的索引;
(3) 该表项的hash冲突数量。
偏移量表中存储的是段表中有冲突时的表项,存储内容与段表中没有冲突 时的内容类似,只是不需要存储标识F。所以偏移量表中需要存储以下内容-
(1) 为了精确匹配前缀的h1—16(prefix32);
(2) 下一跳的路由信息Next Hop。
pref ix32段表和偏移量表的存储内容如图4所示。
前面我们都是以prefix32为例,对于prefix35和prefix48,算法的体系 结构基本相同,所不同的只是段表的hash函数,存储内容以及偏移量表的大 小和存储内容。
对prefix35段表的hash函数选择h20—35(prefix35),共216=65536个 表项。对当前IPv6路由表,我们给prefix35偏移量表分配了 21Q=1024个表 项,段表和偏移量表表项的内容如图5所示。
对prefix48段表的hash函数选择h33—48(prefix48),共216=65536个 表项。对当前IPv6路由表,我们给prefix48偏移量表分配了2W-1024个表 项,段表和偏移量表表项的内容如图6所示。
算法的hash函数的设计包括32, 35, 48三个分路的hash函数的设计, 每个分路的hash函数的设计又包括段表的hash函数的设计和偏移量表的hash 函数的设计。
对于prefix32,我们以h17—32(prefix32)做为段表的hash函数(也就是 段表的索引),我们在段表表项中存储了偏移量表的索引off_index。偏移量表 的hash函数我们设计为
hash = off—index * 16 + f( hl一16(prefix32)) (公式1)
其中,函数f(y)定义如下/O) = (Cv & 0x兩0)》12)A((y & 0jc扁)》8)A(0 & 0满)》4)A(> & 0x尸)
其中,&表示二进制按位相与,"表示二进制按位相异或。
所以,函数f(hi—16(prefix32))表示对hl一16(prefix32)即prefix32 的前16比特进行4位间的异或操作。如f (0x2001)的结果为0x2'0x0"0x(T0xl =0x3。对于hl」6(prefix32)的9个不同值,使用hash函数f ()的计算结果 如下
f(0x2001) = 0x3; f(0x2002) = 0x0; f(0x2003) = Oxl;
f(0x2400) = 0x6; f(0x2404) = 0x2; f(0x2610) = 0x5;
f(0x2800) = OxA; f(0x2A01) = 0x9; f(0x3FFE) = OxD.
我们给pref ix32偏移量表分配了 213 = 8192个表项,因为段表中每个冲突 的表项在偏移量表中用16个表项来解决冲突,所以213个表项的偏移量表可以 解决213/16 = 512个段表冲突的表项。
对于prefix35,我们选取h20_35 (pref ix35)为段表的hash函数。在偏移 量表中用16个表项来存储段表中冲突的选项,以和prefix32保持一致。若有 冲突发生,直接使用off_indeX*16为索引来访问偏移量表,偏移量表中的冲 突表项采用顺序存储的方式,
对于prefix48,我们选取h33—48(prefix48)为段表的hash函数。在偏移 量表中用也使用16个表项来存储段表中冲突的选项,以和prefix32保持一致。 偏移量表中的冲突表项也采用顺序存储。
在完成了 hash函数、前缀的段表和偏移量表的具体构造后,就可以按照 技术方案中的查询过程进行路由的地址询査。
10
权利要求
1.一种128位因特网地址并行高速路由寻址方法,其特征在于对路由寻址采用四路并行匹配方法,具体步骤为c)采用四路并行路由地址寻找框架,其中三路是由占了路由前缀长度为32,35,48的前缀组成,第四路处理其他长度的前缀寻址,路由寻址查找时,对并行框架中的4路同时进行查找,然后由前缀长度比较器选出前缀最长的一路对应的下一跳;d)对每一路采用的寻址方法为;1)取目标IP地址的17到32比特做为索引,记为h17_32(IP),访问段表的对应的表项;2)查看该表项的最高位即第1比特,若为0,则取出段表表项中存储的信息,并取目标IP的前16比特,记为h1_16(IP),进行比较,若相等,则读取段表表项中存储的下一跳信息做为查询结果,送前缀长度比较器;若不相等,则将0作为结果送前缀长度比较器;3)若段表表项的第1比特为1,则读取段表表项中存储的信息,记为off_index,并取目标IP的前16比特,按以下公式计算散列值,记为hashhash=off_index*16+f(h1_16(IP))然后以此hash为索引去访问偏移量表,若偏移量表对应的表项不为空,则取出该表项中存储的信息,记为h1_16(prefix32),并与h1_16(IP)进行比较,若相等,则读取该表项中存储的下一跳信息做为查询结果,送前缀长度比较器;若不相等,则将0作为结果送前缀长度比较器;4)前缀长度比较器从并行的各个分路获得前缀长度和对应的下一跳的路由信息,除去下一跳为零的分路后,选择前缀长度最长的分路对应的下一跳做为查询结果,路由寻址结束。
全文摘要
本发明设计了一种128位因特网地址(IPv6)的四路并行寻址方法,其中三路是由占了路由前缀数量90%以上的长度为32,35,48的前缀组成,第四路处理除长度为32,35,48外的其他前缀,采用硬件实现方法,其查询速度很快,不会影响并行框架的整体性能。对于32,35,48三路,本文设计了段表加偏移量表的数据结构,并设计了相应的hash函数。由于该三路只要考虑确定长度的路由前缀,避免了最长前缀匹配问题。该三路的路由查找只需要最多两次的存储器访问操作,并且可以在常量时间内实现路由更新,存储器的需求不到1M bytes,且该需求受路由前缀数量的增加影响较小,该算法对未来路由寻址方法的发展具有良好的适应性。
文档编号H04L12/56GK101494603SQ200910028310
公开日2009年7月29日 申请日期2009年1月13日 优先权日2009年1月13日
发明者李大伟, 庚 杨, 祁正华, 陈燕俐, 陈珊珊 申请人:南京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1