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

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

Info

Publication number
CN101494603A
CN101494603A CNA2009100283103A CN200910028310A CN101494603A CN 101494603 A CN101494603 A CN 101494603A CN A2009100283103 A CNA2009100283103 A CN A2009100283103A CN 200910028310 A CN200910028310 A CN 200910028310A CN 101494603 A CN101494603 A CN 101494603A
Authority
CN
China
Prior art keywords
list item
prefix
routing
segment table
prefix length
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2009100283103A
Other languages
English (en)
Other versions
CN101494603B (zh
Inventor
杨庚
陈燕俐
李大伟
祁正华
陈珊珊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NANJING RONGFEI TECHNOLOGY CO., LTD.
Original Assignee
Nanjing Post and Telecommunication University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing Post and Telecommunication University filed Critical Nanjing Post and Telecommunication University
Priority to CN2009100283103A priority Critical patent/CN101494603B/zh
Publication of CN101494603A publication Critical patent/CN101494603A/zh
Application granted granted Critical
Publication of CN101494603B publication Critical patent/CN101494603B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明设计了一种128位因特网地址(IPv6)的四路并行寻址方法,其中三路是由占了路由前缀数量90%以上的长度为32,35,48的前缀组成,第四路处理除长度为32,35,48外的其他前缀,采用硬件实现方法,其查询速度很快,不会影响并行框架的整体性能。对于32,35,48三路,本文设计了段表加偏移量表的数据结构,并设计了相应的hash函数。由于该三路只要考虑确定长度的路由前缀,避免了最长前缀匹配问题。该三路的路由查找只需要最多两次的存储器访问操作,并且可以在常量时间内实现路由更新,存储器的需求不到1M bytes,且该需求受路由前缀数量的增加影响较小,该算法对未来路由寻址方法的发展具有良好的适应性。

Description

一种128位因特网地址并行高速路由寻址方法
技术领域
本发明是一种用于计算机网络IPv6(互连网协议版本6)的并行高速路由寻址方法,属于计算机网络与信息网络技术领域。
背景技术
随着Internet规模的急剧膨胀,信息量的加大以及Internet上新应用的不断涌现,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 MatchSearch,LMS),而匹配的最长前缀被称为最长匹配前缀(Longest PrefixMatch,LPM),所以IP路由查找问题有时也被称为LPM问题。
4.一些名词及术语
为了便于描述,我们使用prefix32,prefix35,prefix48分别表示长度为32,35,48的前缀。并称前缀的最高位为第1位,使用hx_y(prefix32)表示取长度为32位的前缀的第x到第y位。
发明内容
技术问题:本发明的目的就是提供一种128位因特网地址(IPv6)并行高速路由寻址方法,该方法具有并行高速路由寻址方法,解决路由器由于路由寻址而带来的数据处理工作。
技术方案:随着Internet的发展,路由信息不断增加,路由表不断膨胀,路由查找问题越来越成为影响网络通信速度的瓶颈,如何快速有效地询查路由地址,实现数据的高效转发是提高计算机网络性能急需解决的问题,基于对当前IPv6骨干路由器的路由表的特点进行分析总结,设计了一种适合IPv6的并行查找方法。该方法由四路组成(见图2),其中三路是由占了路由前缀数量90%以上的长度为32,35,48的前缀组成,第四路采用硬件方法,处理除长度为32,35,48外的其他前缀。对于32,35,48三路,本发明设计了两个数据结构进行数据的处理,称为段表和偏移量表,它们的结构如图4、5、6所示。由于该三路只要考虑确定长度的路由前缀,避免了最长前缀匹配问题。该三路的路由查找只需要最多两次的存储器访问操作,并且可以在常量时间内实现路由更新,存储器的需求不到1M bytes,且该需求受路由前缀数量的增加影响较小。该方法对未来路由寻址的发展具有良好的适应性。
具体步骤为:
a)采用四路并行路由地址寻找框架,
其中三路是由占了路由前缀长度为32,35,48的前缀组成,第四路处理其他长度的前缀寻址,路由寻址查找时,对并行框架中的4路同时进行查找,然后由前缀长度比较器选出前缀最长的一路对应的下一跳;
b)对每一路采用的寻址方法为;
1)取目标IP地址的17到32比特做为索引,记为h1732(IP),访问段表的对应的表项;
2)查看该表项的最高位即第1比特,若为0,则取出段表表项中存储的信息,并取目标IP的前16比特,记为h1_16(IP),进行比较,若相等,则读取段表表项中存储的下一跳信息做为查询结果,送前缀长度比较器;若不相等,则将0作为结果送前缀长度比较器;
3)若段表表项的第1比特为1,则读取段表表项中存储的信息,记为off_index,并取目标IP的前16比特,按以下公式计算散列值,记为hash:
hash=off_index*16+f(h1_16(IP))
然后以此hash为索引去访问偏移量表,若偏移量表对应的表项不为空,则取出该表项中存储的信息,记为h1_16(prefix32),并与h1_16(IP)进行比较,若相等,则读取该表项中存储的下一跳信息做为查询结果,送前缀长度比较器;若不相等,则将0作为结果送前缀长度比较器;
4)前缀长度比较器从并行的各个分路获得前缀长度和对应的下一跳的路由信息,除去下一跳为零的分路后,选择前缀长度最长的分路对应的下一跳做为查询结果,路由寻址结束。
有益效果:对当前IPv6骨干路由器的路由表的特点进行分析总结,根据IPv6路由表的特点设计了一适合IPv6的并行查找框架。该框架由四路组成,其中三路是由占了路由前缀数量90%以上的长度为32,35,48的前缀组成,第四路采用TCAM,其中存放了除长度为32,35,48外的其他前缀,TCAM为硬件实现,其查询速度很快,不会影响并行框架的整体性能。对于32,35,48三路,本文设计了段表加偏移量表的数据结构,并设计了相应的hash函数。由于该三路只要考虑确定长度的路由前缀,避免了最长前缀匹配问题。该三路的路由查找只需要最多两次的存储器访问操作,并且可以在常量时间内实现路由更新,存储器的需求不到1M bytes,且该需求受路由前缀数量的增加影响较小。该算法对未来路由寻址的发展具有良好的适应性。具体表现为:
(1)方法的路由查询的时间复杂度。对于32,35,48三个分路,算法实现的数据结构都是段表加偏移量表,路由的查询时间体现在段表和偏移量表的访问,最多两次对存储器的访问,便可得到查询结果,因此路由查询的时间复杂度为0(1)。
(2)方法的对存储容量需求。存储容量需求就是段表和偏移量表的存储需求。段表的存储容量需求即为三个段表的需求的和,各个段表的存储容量需求分别为:
216*4*sizeof(char)=256k(Byte),对于prefix32;
216*4*sizeof(char)=256k(Byte),对于prefix35;
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、prefix48我们分别使用大小为213,210,210个表项的偏移量表,则根据段表和偏移量表的存储内容,各个分路的存储容量的需求分别为:
216*4*sizeof(char)+213*4*sizeof(char)=256k+32k=288k(Byte),对于prefix32;
216*4*sizeof(char)+210*4*sizeof(char)=256k+1k=257k(Byte),对于prefix35;
216*6*sizeof(char)+210*6*sizeof(char)=384k+6k=390k(Byte),对于prefix48.
所以,存储容量的总需求为:
288k+257k+390k=935k(Byte).
附图说明
图1是单播地址格式,
图2是IPv6并行路由寻址框架,
图3是并行框架中prefix32分路的路由寻址实现结构,
图4是32bit前缀的段表和偏移量表表项的内容,
图5是35bit前缀的段表和偏移量表表项的内容,
图6是48bit前缀的段表和偏移量表表项的内容。
具体实施方式
路由查找时,我们对并行框架中的4路同时进行查找,然后由前缀长度比较器选出前缀最长的一路对应的Next Hop。其中,TCAM是硬件实现的,且TCAM是根据前缀内容直接进行查找,查询速度很快,不会对并行框架的整体的查询时间。我们重点阐述其他三路的路由查找过程。
下面对prefix32这路进行阐述,查询过程如下:
(1)取目标IP地址的17-32比特h17_32(IP)做为索引,访问段表对应的表项;
(2)查看该表项的第1比特(即最高位),若为0,则取出段表表项中存储的h1_16(prefix32),并取目标IP的前16比特h1_16(IP),进行比较,若相等,则读取段表表项中存储的Next Hop做为查询结果,送前缀长度比较器;若不相等,则将0作为结果送前缀长度比较器。
(3)若段表表项的第1比特为1,则读取段表表项中存储的off_index,并取目标IP的前16比特h1_16(IP),然后以如下公式计算hash:
hash=off_index*16+f(h1_16(IP))
再以此hash为索引去访问偏移量表。若偏移量表对应的表项不为空,则取出该表项中存储的h1_16(prefix32),并与h1_16(IP)进行比较,若相等,则读取该表项中存储的Next Hop做为查询结果,送前缀长度比较器;若不相等,则将0作为结果送前缀长度比较器。
(4)前缀长度比较器从并行的各个分路获得前缀长度和对应的下一跳的路由信息,除去Next Hop为零的分路后,选择前缀长度最长的分路对应的NextHop做为查询结果。路由查找结束。算法结束。
为了便于描述,我们使用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时表示有冲突发生。
当没有冲突发生时,段表以h17_32(prefix32)为索引的表项中需要存储为了精确匹配前缀的h1_16(prefix32),若目标IP的h1_16(IP)和段表表项中的h1_16(prefix32)匹配,则说明找到了相应的路由,需要获取相应的下一跳路由信息,所以段表表项还要存储下一跳的路由信息Next Hop。所以没有冲突时,段表表项需要存储以下内容:
(1)标识是否有冲突的标志F=0;
(2)为了精确匹配前缀的h1_16(prefix32);
(3)下一跳的路由信息Next Hop。
当有冲突发生时,我们使用偏移量表来存储段表中冲突的表项,因此段表中要存储偏移量表中对应表项的索引,为了算法更新操作方便,我们还在段表表项中存入对应该表项的hash冲突数量。所以有冲突时,段表表项需要存储以下内容:
(1)标识是否有冲突的标志F=1;
(2)偏移量表中对应表项的索引;
(3)该表项的hash冲突数量。
偏移量表中存储的是段表中有冲突时的表项,存储内容与段表中没有冲突时的内容类似,只是不需要存储标识F。所以偏移量表中需要存储以下内容:
(1)为了精确匹配前缀的h1_16(prefix32);
(2)下一跳的路由信息Next Hop。
prefix32段表和偏移量表的存储内容如图4所示。
前面我们都是以prefix32为例,对于prefix35和prefix48,算法的体系结构基本相同,所不同的只是段表的hash函数,存储内容以及偏移量表的大小和存储内容。
对prefix35段表的hash函数选择h20_35(prefix35),共216=65536个表项。对当前IPv6路由表,我们给prefix35偏移量表分配了210=1024个表项,段表和偏移量表表项的内容如图5所示。
对prefix48段表的hash函数选择h33_48(prefix48),共216=65536个表项。对当前IPv6路由表,我们给prefix48偏移量表分配了210=1024个表项,段表和偏移量表表项的内容如图6所示。
算法的hash函数的设计包括32,35,48三个分路的hash函数的设计,每个分路的hash函数的设计又包括段表的hash函数的设计和偏移量表的hash函数的设计。
对于prefix32,我们以h17_32(prefix32)做为段表的hash函数(也就是段表的索引),我们在段表表项中存储了偏移量表的索引off_index。偏移量表的hash函数我们设计为:
hash=off_index*16+f(h1_16(prefix32))        (公式1)
其中,函数f(y)定义如下:
f(y)=((y&0xF000)>>12)^((y&0xF00)>>8)^((y&0xF0)>>4)^(y&0xF)其中,&表示二进制按位相与,^表示二进制按位相异或。
所以,函数f(h1_16(prefix32))表示对h1_16(prefix32)即prefix32的前16比特进行4位间的异或操作。如f(0x2001)的结果为:0x2^0x0^0x0^0x1=0x3。对于h1_16(prefix32)的9个不同值,使用hash函数f()的计算结果如下:
f(0x2001)=0x3;f(0x2002)=0x0;f(0x2003)=0x1;
f(0x2400)=0x6;f(0x2404)=0x2;f(0x2610)=0x5;
f(0x2800)=0xA;f(0x2A01)=0x9;f(0x3FFE)=0xD.
我们给prefix32偏移量表分配了213=8192个表项,因为段表中每个冲突的表项在偏移量表中用16个表项来解决冲突,所以213个表项的偏移量表可以解决213/16=512个段表冲突的表项。
对于prefix35,我们选取h20_35(prefix35)为段表的hash函数。在偏移量表中用16个表项来存储段表中冲突的选项,以和prefix32保持一致。若有冲突发生,直接使用off_index*16为索引来访问偏移量表,偏移量表中的冲突表项采用顺序存储的方式,
对于prefix48,我们选取h33_48(prefix48)为段表的hash函数。在偏移量表中用也使用16个表项来存储段表中冲突的选项,以和prefix32保持一致。偏移量表中的冲突表项也采用顺序存储。
在完成了hash函数、前缀的段表和偏移量表的具体构造后,就可以按照技术方案中的查询过程进行路由的地址询查。

Claims (1)

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比特,按以下公式计算散列值,记为hash:
hash=off_index*16+f(h1_16(IP))
然后以此hash为索引去访问偏移量表,若偏移量表对应的表项不为空,则取出该表项中存储的信息,记为h1_16(prefix32),并与h1_16(IP)进行比较,若相等,则读取该表项中存储的下一跳信息做为查询结果,送前缀长度比较器;若不相等,则将0作为结果送前缀长度比较器;
4)前缀长度比较器从并行的各个分路获得前缀长度和对应的下一跳的路由信息,除去下一跳为零的分路后,选择前缀长度最长的分路对应的下一跳做为查询结果,路由寻址结束。
CN2009100283103A 2009-01-13 2009-01-13 一种128位因特网地址并行高速路由寻址方法 Expired - Fee Related CN101494603B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009100283103A CN101494603B (zh) 2009-01-13 2009-01-13 一种128位因特网地址并行高速路由寻址方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009100283103A CN101494603B (zh) 2009-01-13 2009-01-13 一种128位因特网地址并行高速路由寻址方法

Publications (2)

Publication Number Publication Date
CN101494603A true CN101494603A (zh) 2009-07-29
CN101494603B CN101494603B (zh) 2011-02-09

Family

ID=40925018

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009100283103A Expired - Fee Related CN101494603B (zh) 2009-01-13 2009-01-13 一种128位因特网地址并行高速路由寻址方法

Country Status (1)

Country Link
CN (1) CN101494603B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101834802A (zh) * 2010-05-26 2010-09-15 华为技术有限公司 转发数据包的方法及装置
CN108965136A (zh) * 2018-07-16 2018-12-07 清华大学 基于空间网络层次化ip编址的转发方法及装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101834802A (zh) * 2010-05-26 2010-09-15 华为技术有限公司 转发数据包的方法及装置
CN101834802B (zh) * 2010-05-26 2012-08-08 华为技术有限公司 转发数据包的方法及装置
US8879555B2 (en) 2010-05-26 2014-11-04 Huawei Technologies Co., Ltd. Method and apparatus for forwarding packets by obtaining addresses of the packets using a preset forwarding information base entry
CN108965136A (zh) * 2018-07-16 2018-12-07 清华大学 基于空间网络层次化ip编址的转发方法及装置

Also Published As

Publication number Publication date
CN101494603B (zh) 2011-02-09

Similar Documents

Publication Publication Date Title
Yu et al. BUFFALO: Bloom filter forwarding architecture for large organizations
CN104104604A (zh) 网络交换机设备中的准确匹配哈希查找数据库
CN102970150A (zh) 用于数据中心的可扩展组播转发方法和设备
US8798066B2 (en) Method for IPv6 longest prefix match
US8848707B2 (en) Method for IP longest prefix match using prefix length sorting
US10547547B1 (en) Uniform route distribution for a forwarding table
CN107528783A (zh) 利用对前缀长度进行两个搜索阶段的ip路由缓存
CN107547407A (zh) 报文传输方法、装置和实现装置
CN104462144B (zh) 一种包分类规则的查找方法及装置
CN102291472A (zh) 一种网络地址查找方法及装置
CN101620623A (zh) 内容可寻址存储器表项管理方法和装置
CN100426791C (zh) 一种路由转发表地址查找引擎装置
CN106453091B (zh) 路由器转发平面的等价路由管理方法和装置
CN102325077B (zh) 分支机构间的通信方法及分支机构的出口路由器
CN103973571A (zh) 网络处理器及其路由查找方法
CN101494603B (zh) 一种128位因特网地址并行高速路由寻址方法
JP2006246488A (ja) ネットワーク・ルータ、アドレス処理方法及びコンピュータ・プログラム
Erdem et al. Hierarchical hybrid search structure for high performance packet classification
CN105122744B (zh) 通过按需路径更新的msdc扩展
CN105721627B (zh) 一种ip网络流数据在线匿名化方法
KR20130093707A (ko) 패킷 분류 장치 및 그것의 패킷 분류 방법
CN103209128A (zh) 同时支持数据报和虚电路服务的数据转发方法及路由器
Rojas-Cessa et al. Helix: IP lookup scheme based on helicoidal properties of binary trees
CN105323175A (zh) 一种地址解析协议表的扩展方法和装置
Ghosh et al. A hash based architecture of longest prefix matching for fast IP processing

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: RONGFEI SCIENCE AND TECHNOLOGY CO., LTD., NANJING

Free format text: FORMER OWNER: NANJING POST + TELECOMMUNICATION UNIV.

Effective date: 20130507

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20130507

Address after: 8, 210003 building, Science Park, 66 Science Park, new exemplary Road, Nanjing, Jiangsu

Patentee after: NANJING RONGFEI TECHNOLOGY CO., LTD.

Address before: 210003 Nanjing City, Jiangsu Province, the new model road No. 66

Patentee before: Nanjing Post & Telecommunication Univ.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110209

Termination date: 20150113

EXPY Termination of patent right or utility model