CN107154899B - 一种用后缀索引查找ip路由的系统 - Google Patents

一种用后缀索引查找ip路由的系统 Download PDF

Info

Publication number
CN107154899B
CN107154899B CN201710178297.4A CN201710178297A CN107154899B CN 107154899 B CN107154899 B CN 107154899B CN 201710178297 A CN201710178297 A CN 201710178297A CN 107154899 B CN107154899 B CN 107154899B
Authority
CN
China
Prior art keywords
string
address
searching
hash
backtracking
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.)
Active
Application number
CN201710178297.4A
Other languages
English (en)
Other versions
CN107154899A (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.)
SYSU CMU Shunde International Joint Research Institute
National Sun Yat Sen University
Original Assignee
SYSU CMU Shunde International Joint Research Institute
National Sun Yat Sen 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 SYSU CMU Shunde International Joint Research Institute, National Sun Yat Sen University filed Critical SYSU CMU Shunde International Joint Research Institute
Priority to CN201710178297.4A priority Critical patent/CN107154899B/zh
Publication of CN107154899A publication Critical patent/CN107154899A/zh
Application granted granted Critical
Publication of CN107154899B publication Critical patent/CN107154899B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明提供一种用后缀索引查找IP路由的系统,该系统通过构造模块根据路由表中的IP地址信息,完成加速表以及后缀数组的构造,并记录相关的数组信息,以待查询模块的调用;查找模块利用哈希表查找和后缀数组的快速查询,实现从构造好的IP字符串中查找出目的IP;定位模块,处理匹配数据在原文字符串V中的定位,实现在路由表中快速准确查找目标IP地址。

Description

一种用后缀索引查找IP路由的系统
技术领域
本发明涉及IP地址字符串序列查找技术领域,更具体地,涉及一种用后缀索引查找IP路由的系统。
背景技术
互联网上的每台主机都有一个唯一的IP地址,其中IPv4地址是32位。对于每一个进入路由器的数据报,都必须根据其目的IP地址查路由表从而找到相关的路由信息。目前的路由表查找算法一般集中于二分查找、平衡二叉树、哈希索引等,它们的查找时间随路由表中IP地址数量增长。
以下相关专利对当前IP地址查找的问题给出多个具体技术方案,这些方案的适用范围、原理及具体设计等都区别于本发明。
现有技术中有提出IP地址最长匹配快速查找的方法。其中涉及一种基于内存的IP地址最长匹配快速查找的方法,该方法首先对IP地址分成A类,B类,对IP按照8位一段的方式建立索引树,A类地址只有1层,B类地址有2层。对最底层,建立一个MASK桶索引,每个MASK下面挂接一个IP顺序表,在此顺序表中存放最终的IP项,查找的时候,根据传入的IP地址判定是A类还是B类地址,如果是A类地址,根据得到的MASK桶索引,从32位MASK的 IP列表开始,采用二分法进行匹配,直到找到或者查找失败。如果是B类地址,则引导到第二段表中,用IP地址的次8位在第二段表中进行定位,并最终跟A 类地址一样引导到MASK桶索引,进行查找。还有提出了一种IP段地址集中查找IP地址的方法。本发明涉及一种在IP段地址集中查找IP地址的方法,步骤为:1)选取一个IP段地址,根据IP段的变化范围将IP段分为相邻域,并建立多个哈希链表存储所述IP段;2)在所述多个哈希链表中按照顺序查找出待查找的 IP地址;3)在每个哈希链表中查找所述IP地址的方式为,先确定哈希位置,再遍历哈希链表。这种方法的Hash表结构进行IP查找,最坏情况是访问了全部3 张Hash表,然而绝大多数IP地址段的变化范围集中在最后两个域,通常情况的查找在24位Hash表中就能完成,而24位Hash表每个索引位置允许变化的IP 地址也就255个,它查找时间基本与IP段地址集的大小无关。
发明内容
本发明提供一种加快查找速率的用后缀索引查找IP路由的系统。
为了达到上述技术效果,本发明的技术方案如下:
一种用后缀索引查找IP路由的系统,包括:
构造模块,根据路由表中的IP地址信息,完成哈希表以及后缀数组的构造,并记录相关的数组信息,以待查询模块的调用;
查询模块,利用哈希表查找和后缀数组的快速查询,实现从构造好的IP字符串中查找出目的IP;
定位模块,处理匹配数据在原文字符串V中的定位,实现在路由表中快速准确查找目标IP地址。
进一步地,所述构造模块利用路由表中的IP地址信息,完成哈希表以及后缀数组的构造,并记录相关的数组信息的具体过程如下:
S21:将路由表里面的每个IP地址进行前后倒置运算,并且在每个IP地址后面加上一个结束符$,从而得到一个新的IP地址的字符串U。在字符串中,$是最小的字符,比0,1都要小;
S22:把步骤一中的N个新的IP地址U串接起来,得到一个总的字符串V;
S23:将U串的后3个字节,后2个字节,后1个字节依次构造哈希表1、哈希表2、哈希表3,每个哈希表有N个数据链表头,每个数据链表头指定其第一个数据节点的储存位置;再根据IP地址的字节数据逐个算出Hash值,并将其链接至该Hash值相应的数据链表头指定的第一个数据节点的存储位置,若第一个数据节点已存储有数据时,则存储至其指向的下一个储存位置,依次类推;哈希表中key表示为U串中后3个字节,后2个字节,后1个字节的具体组合形式,表1的索引范围为0-(2^24-1);表2的索引范围为0-(2^16-1),表3的索引范围为0-(2^8-1),value值存放位置,顺序存放每个U串中U[8]、U[16]、U[24]在 V串中对应的索引位置,通过查询这三张哈希表实现字节定位,减少回溯的次数,进一步加速查找;
S24:把V串按后缀数组构造算法构造,得到V的后缀数组A;
S25:从A和V计算得到V的BWT,记为B,B[i]=V[A[i]-1],如果A[i]-1=0 则B[i]=$;
S26 :扫描V计算数组C[0]和C[1],对于A[i],C[0][i]=B[0,i]中0的个数, C[1][i]=B[0,i]中1的个数,得出V的BWT中0与1字符的Rank值。
进一步地,所述查询模块利用哈希表查找和后缀数组的快速查询,实现从构造好的IP字符串中查找出目的IP,该过程具体步骤如下:
S31:把要查询的目的IP地址倒置,得到Q串,将Q串看成模式进行查找;
S32 :根据Q查询构造模块中的哈希表,加快回溯查找过程中开始位置的定位问题;首先查表1,对Q后3个字节用Hash算法计算Hash值,按其Hash值,找到相应的数据链表头,再根据数据链表头指向的存储位置进行逐一的查找比对 key值;如果有匹配key,则返回表1中与之对应的value值,即原文中的索引值;如果在表1中没有找到位置和key值都相等的表项,则开始定位Q的后2个字节有无匹配,同样的原理查表2,返回匹配的索引值,如果无则用表3定位Q的后1个字节有无匹配,返回匹配的索引值,如无则返回最近的’$’所对应的索引值;
S33:遍历后缀数组A,找到第二步返回的索引值A[i],A[i]对应的字符即为开始点O,以此为基点开始回溯查找,得到Q串的最长公共前缀LCP;从BWT 变换过程中存在B[i]=V[A[i]-1]的关系,通过查找后缀数组A[i]位置上的字符,得到A[i]的前继字符,遍历C[0]和C[1],用来计算Rank[0]与Rank[1];回溯至最长公共前缀LCP与目标IP地址Q串完全匹配,则查找成功,记录与Q串匹配的最终字符在路由表中的位置,若无匹配结果,则在路由表中无此目的IP地址。
进一步地,所述步骤S33中回溯查找的过程如下:
对IP地址V串进行循环移位之后按字典序排序,排序后的矩阵产生的第一列,记为First列,简写为F列,最后一列记为Last列,简写为L列,对F列以固定步长d进行标记,并且将这些标记字符,对应在V中的索引位置也标记下来。实现上述第二步中查哈希表定位字节之后,从定位点O点开始,利用SA对 V串进行回溯查找,从右往左的逐个字符进行回溯转换;
在上述排序产生的矩阵具有如下性质:取L列,F列中任意两个相同的字符 (0,1,$),若这两个相同的字符的Rank值相同,则这两个相同的字符将映射到原文(即V串)的同一个位置;若回溯转换后得到的行数所映射的L列的字符,与目标IP地址Q串中的前继字符一致,则表明该目标IP地址在路由表中存在,继续查找直至完全匹配;若不一致,则表明Q不存在,IPv4地址只由几个字符组成,在进行查找的过程中,一般前继字符经常相同,所以回溯转换得到的位置将不止1个,而是一个区间。该范围内所有结果皆是与Q部分匹配的解,直到Q 完全匹配成功,则最后一次回溯转换将得到一个在F列中行数。
进一步地,定位模块处理匹配数据在原文字符串V中的定位的过程如下:
1)判断这个从查询模块中传递过来的这个F列的行数,是不是在查询模块中以d的步长选取的标记字符点;
2)获取目标IP地址Q在路由表字符串V中的准确位置;如果判断为标记点,直接获得Q在V串中的位置;若不是标记点,则继续使用回溯转换,同时记录使用次数num,直至回溯到V串中最近的一个标记点;最后将标记点所对应的位置减去回溯转换次数num,得到Q在V串中的准确位置,返回结果,从而实现在路由表中快速准确查找目标IP地址。
与现有技术相比,本发明技术方案的有益效果是:
本发明通过构造模块根据路由表中的IP地址信息,完成哈希表以及后缀数组的构造,并记录相关的数组信息,以待查询模块的调用;查询模块利用哈希表查找和后缀数组的快速查询,实现从构造好的IP字符串中查找出目的IP;定位模块,处理匹配数据在原文字符串V中的定位,实现在路由表中快速准确查找目标IP地址。
附图说明
图1为本发明中具体实施案例的系统模块架构图;
图2为本发明中具体实施案例的整个系统模块的流程图;
图3为本发明中具体实施案例中在构造模块中哈希表1的数据结构图;
图 4为本发明中具体实施案例中在查询模块中哈希表找匹配项的流程图;
图 5为本发明中具体实施案例中在查询模块中查询哈希表加速IP地址字节定位的流程图。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
下面结合附图和实施例对本发明的技术方案做进一步的说明。
实施例1
如图1-2所示,一种用后缀索引查找IP路由的系统,本实例以存储在路由表项中的路由IP地址X,Y,Z,M为例,对本实施例提供的路由表项快速查找方法进行举例说明。其中路由IP地址X至M具体如下:
路由IP地址X:11010100011000101010001011000111
路由IP地址Y:00010010001000100111010111100110
路由IP地址Z:00100010001011001001010101100001
路由IP地址M:01010100100010001010111000010010
第一步:将路由表里面的每个IP地址d1d2d3d4(其中d代表一个8位由0, 1字符组成的字符串)进行前后倒置运算,并且在每个IP地址后面加上一个结束符$,从而得到一个新的IP地址的字符串U(d4d3d2d1$)。
倒置后的字符串U(x):11100011010001010100011000101011$
倒置后的字符串U(y):01100111101011100100010001001000$
倒置后的字符串U(z):10000110101010010011010001000100$
倒置后的字符串U(m):01001000011101010001000100101010$
第二步:把N个IP地址U串接起来,得到一个总的字符串V串 (11100011010001010100011000101011$01100111101011100....)
第三步:将U串的后3个字节,后2个字节,后1个字节依次构造哈希表1、哈希表2、哈希表3。每个哈希表有N个数据链表头,每个数据链表头指定其第一个数据节点的储存位置;再根据IP地址的字节数据逐个算出Hash值,并将其链接至该Hash值相应的数据链表头指定的第一个数据节点的存储位置,若第一个数据节点已存储有数据时,则存储至其指向的下一个储存位置,依次类推;这三张表的key值分别为(d3<<16)+(d2<<8)+d1、(d2<<8)+d1以及d1,value值存放位置,顺序存放每个U串中U[8]、U[16]、U[24]在V串中对应的索引位置。这样key最多有2^24,2^16,2^8种情况。哈希表具体的结构如下图3所示。构造这样的Hash表用来定位最开始的查找点O。
按上述步骤构造好Hash表后,其中每个数据节点中的表项具体如下:
Hash表1
Figure GDA0002605462880000061
Hash表2
Figure GDA0002605462880000062
Hash表3
Figure GDA0002605462880000063
第四步:把V串按后缀数组构造算法构造得到V的后缀数组A。
S=S[0...n)=是后缀数组SA的输入,在本发明中,这个输入就是指路由表中的IP地址序列,后缀数组的创建其实就是将输入字符串的所有后缀从小到大进行排序之后,然后将排好序的后缀的开头位置,顺次存入一个一维数组,这个一维数组就是SA。即SA={A[0],A[1],A[2]……}={第1行后缀开头在原文的索引位置,第2行后缀开头在原文的索引位置,第3行后缀开头在原文的索引位置……}。
第五步:从A和V计算得到V的BWT,记为B,B[i]=V[A[i]-1],如果A[i]-1=0 则B[i]=$。查找后缀数组A[i]位置上的字符,可以得到A[i]的前继字符B[i]。
第六步:记录V计算数组C[0]和C[1],对于A[i],C[0][i]等于B[0,i]中0 的个数,C[1][i]等于B[0,i]中1的个数,得出V的BWT中0与1字符的Rank 值。
在构造好路由表之后,调用查询模块,具体查询步骤如下:
第一步:把要查询的目的IP地址e1e2e3e4(其中e代表一个8位由0,1字符组成的字符串)倒置,得到Q(e4e3e2e1)。
第二步:根据Q查询在构造模块中构造好的哈希表,来加快回溯查找中开始点的定位问题。首先查表1,用Hash算法计算Q的前3个字节(从后往前数,下同)的哈希值,找到相应的数据链表头,再根据数据链表头指向的存储位置进行逐一的查找比对key值。如果有匹配key,则取出匹配IP地址U[8]的索引值,具体步骤如图4所示。如果在表1中没有找到位置和key值都相等的表项,则开始定位Q的前2个字节有无匹配,同样的原理查表2,(如有则返回value中的索引值U[16],以便回溯查找第3个字节),如果无则查表3,定位Q的第一个字节有无匹配(如有则返回value中的索引值U[24],以便回溯查找第2个字节),如无则回溯查找第1个字节,具体步骤如图5所示。例如,目的IP地址倒置串 Q为01010101111000100100011000101011,查找构造模块举例的三张Hash表,查找表1无与之匹配的表项;则返回查找表2,计算目的IP后两个字节Hash值,找到相等的Hash(x),在这一数据链表头下有匹配的表项0100011000101011,则取出key对应的value为16。
第三步:遍历后缀数组A,则A[i]=16对应的字符即为最开始的查找点O,然后以O点依次回溯查找,得到Q串的最长公共前缀LCP(从右至左)。从BWT 变换过程中存在B[i]=V[A[i]-1]的关系,因此通过查找后缀数组A[i]位置上的字符,可以得到A[i]的前继字符。比如查找到A[1],可得到A[1]的前继字符B[1],所以利用这个性质,逐个比较目的IP与字符串V的字符。遍历C[0]和C[1],用来计算Rank[0]与Rank[1],在后缀数组中Rank值相同的同一字符一一映射对应,当最长公共前缀LCP与目标IP地址Q串完全匹配,则查找成功,定位查找最后一个匹配字符在路由表中的索引位置,若与无匹配结果,则在路由表中无此目的 IP地址。
根据图5所示流程找到O点的索引位置后,实现字节匹配,只需要从这个索引位置开始匹配Q串剩余的字符,因为每一个IPv4地址有32位,由N个IP 地址组成的字符串V数据庞大,介于篇幅有限,下面我们以字符串”110101001110$”为例代表字符串V,实现从V中查找目标子串=”100”,来展示这一个回溯查找余下字符的具体过程。
索引:0 1 2 3 4 5 6 7 8 9 10 11 12
V:1 1 0 1 0 1 0 0 1 1 1 0 $
Q:0 0 1
Figure GDA0002605462880000081
此例回溯查询的具体步骤如下:
第一步,通过构造模块,我们将原文V=”110101001110$”构造后缀数组我们得到SA={{12}{11,6,4,2,7}{5,3,1,9,0,8}},根据桶排序我们可知F 数组中第0位为{$},第1-5位为{1},第6-12位为{1},从而得到F列中0与1 的Rank数值,V的BWT可以表示为B[i]=V[A[i]-1],即为L数组,在本例中为 {0 1 1 1 1 0 1 0 0 1 1 $ 0}。
第二步,调用搜索模块,在本发明的系统中可以通过查哈希表确定开始查找点O的位置,此例需根据要搜索的目标字符串Q=”001”,根据B[i]数组,定位到B[i]=’1’的B[1]-B[4],B[6],B[9]-B[10]这几个开始查找点的位置,通过计数数组 C[0]与C[1]的数值,得出相应B[i]对应的Rank值,Rank值表示的就是当前数组中某个字符出现的次数。由后缀数组Rank值的一个性质,Rank值相等即表示此字符在两列都是在出现的第几次的位置上,向前回溯至在F中Rank值相等并且 F[i]=’1’的对映位置,此过程为一个映射的过程。
根据对映位置的B[i]=V[A[i]-1]可以计算得到下一个待匹配的字符,通过轮询只有B[7],B[8],B[12]与待匹配的目的地址IP第二个字符’0’相符,由此同样的原理按照Rank值相等继续回溯至F[3]-F[5]。根据对映位置B[i]=V[A[i]-1]得 B[3]=V[6-1]=v[5]=’1’,B[4]=V[2-1]=’1’,B[5]=v[6]=’0’由此得到,与目标IP地址完全匹配的最后一行只有B[5]=’0’,然后根据’0’的Rank值回溯查找至F[2]。
第三步,定位模块:将目标IP在V串中的具体位置返回给存储器。
具体位置返回主要分为两种情况:如果F[2]是路由表中以定长为d标记得标记点,在查询模块中已经将对F数组中标记点所对应的V串的位置信息一起记录下来了,则返回位置为标记点F[2]所对应的在V串中位置信息V[2]=6,可得目标IP字符串Q在V串索引为6的位置;若是不为标记点,则继续回溯至最近的标记点,最后将标记点所对应的原文位置信息减去回溯转换次数c,从而得到目标IP地址的准确位置。
相同或相似的标号对应相同或相似的部件;
附图中描述位置关系的用于仅用于示例性说明,不能理解为对本专利的限制;
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

Claims (4)

1.一种用后缀索引查找IP路由的系统,其特征在于,包括:构造模块,根据路由表中的IP地址信息,完成哈希表以及后缀数组的构造,并记录相关的数组信息,以待查询模块的调用;
查询模块,利用哈希表查找和后缀数组的快速查询,实现从构造好的IP字符串中查找出目的IP;
定位模块,处理匹配数据在原文字符串V中的定位,实现在路由表中快速准确查找目标IP地址;
所述构造模块利用路由表中的IP地址信息,完成哈希表以及后缀数组的构造,并记录相关的数组信息的具体过程如下:
S21:将路由表里面的每个IP地址进行前后倒置运算,并且在每个IP地址后面加上一个结束符$,从而得到一个新的IP地址的字符串U,在字符串中,$是最小的字符,比0,1都要小;
S22:把步骤S21中的N个新的IP地址U串接起来,得到一个总的字符串V;
S23:将U串的后3个字节,后2个字节,后1个字节依次构造哈希表1、哈希表2、哈希表3,每个哈希表有N个数据链表头,每个数据链表头指定其第一个数据节点的储存位置;再根据IP地址的字节数据逐个算出Hash值,并将其链接至该Hash值相应的数据链表头指定的第一个数据节点的存储位置,若第一个数据节点已存储有数据时,则存储至其指向的下一个储存位置,依次类推;哈希表中key表示为U串中后3个字节,后2个字节,后1个字节的具体组合形式,表1的索引范围为0-(2^24-1);表2的索引范围为0-(2^16-1),表3的索引范围为0-(2^8-1),value值存放位置,顺序存放每个U串中U[8]、U[16]、U[24]在V串中对应的索引位置,通过查询这三张哈希表实现字节定位,减少回溯的次数,进一步加速查找;
S24:把V串按后缀数组构造算法构造,得到V的后缀数组A;
S25:从A和V计算得到V的BWT,记为B,B[i]=V[A[i]-1],如果A[i]-1=0则B[i]=$;
S26:扫描V计算数组C[0]和C[1],对于A[i],C[0][i]=B[0,i]中0的个数,C[1][i]=B[0,i]中1的个数,得出V的BWT中0与1字符的Rank值。
2.根据权利要求1所述的用后缀索引查找IP路由的系统,其特征在于,所述查询模块利用哈希表查找和后缀数组的快速查询,实现从构造好的IP字符串中查找出目的IP,该过程具体步骤如下:
S31:把要查询的目的IP地址倒置,得到Q串,将Q串看成模式进行查找;
S32:根据Q查询构造模块中的哈希表,加快回溯查找过程中开始位置的定位问题;首先查表1,对Q后3个字节用Hash算法计算Hash值,按其Hash值,找到相应的数据链表头,再根据数据链表头指向的存储位置进行逐一的查找比对key值;如果有匹配key,则返回表1中与之对应的value值,即原文中的索引值;如果在表1中没有找到位置和key值都相等的表项,则开始定位Q的后2个字节有无匹配,同样的原理查表2,返回匹配的索引值,如果无则用表3定位Q的后1个字节有无匹配,返回匹配的索引值,如无则返回最近的$所对应的索值;
S33:遍历后缀数组A,找到S32步返回的索引值A[i],A[i]对应的字符即为开始点O,以此为基点开始回溯查找,得到Q串的最长公共前缀LCP;从BWT变换过程中存在B[i]=V[A[i]-1]的关系,通过查找后缀数组A[i]位置上的字符,得到A[i]的前缀字符,遍历C[0]和C[1],用来计算Rank[0]与Rank[1];回溯至最长公共前缀LCP与目标IP地址Q串完全匹配,则查找成功,记录与Q串匹配的最终字符在路由表中的位置,若无匹配结果,则在路由表中无此目的IP地址。
3.根据权利要求2所述的用后缀索引查找IP路由的系统,其特征在于,所述步骤S33中回溯查找的过程如下:
对IP地址V串进行循环移位之后按字典序排序,排序后的矩阵产生的第一列,记为First列,简写为F列,最后一列记为Last列,简写为L列,对F列以固定步长d进行标记,并且将这些标记字符,对应在V中的索引位置也标记下来,实现上述S32步中查哈希表定位字节之后,从定位点O点开始,利用SA对V串进行回溯查找,从右往左的逐个字符进行回溯转换;
在上述排序产生的矩阵具有如下性质:取L列,F列中任意两个相同的字符(0,1,$),若这两个相同的字符的Rank值相同,则这两个相同的字符将映射到原文字符串 V 的同一个位置;若回溯转换后得到的行数所映射的L列的字符,与目标IP地址Q串中的前缀字符一致,则表明该目标IP地址在路由表中存在,继续查找直至完全匹配;若不一致,则表明Q不存在,IPv4地址只由几个字符组成,在进行查找的过程中,一般前缀字符经常相同,所以回溯转换得到的位置将不止1个,而是一个区间,该范围内所有结果皆是与Q部分匹配的解,直到Q完全匹配成功,则最后一次回溯转换将得到一个在F列中行数。
4.根据权利要求3所述的用后缀索引查找IP路由的系统,其特征在于,定位模块处理匹配数据在原文字符串V中的定位的过程如下:
1)判断这个从查询模块中传递过来的这个F列的行数,是不是在查询模块中以d的步长选取的标记字符点;
2)获取目标IP地址Q在路由表字符串V中的准确位置;如果判断为标记点,直接获得Q在V串中的位置;若不是标记点,则继续使用回溯转换,同时记录使用次数num,直至回溯到V串中最近的一个标记点;最后将标记点所对应的位置减去回溯转换次数num,得到Q在V串中的准确位置,返回结果,从而实现在路由表中快速准确查找目标IP地址。
CN201710178297.4A 2017-03-23 2017-03-23 一种用后缀索引查找ip路由的系统 Active CN107154899B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710178297.4A CN107154899B (zh) 2017-03-23 2017-03-23 一种用后缀索引查找ip路由的系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710178297.4A CN107154899B (zh) 2017-03-23 2017-03-23 一种用后缀索引查找ip路由的系统

Publications (2)

Publication Number Publication Date
CN107154899A CN107154899A (zh) 2017-09-12
CN107154899B true CN107154899B (zh) 2021-01-08

Family

ID=59792162

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710178297.4A Active CN107154899B (zh) 2017-03-23 2017-03-23 一种用后缀索引查找ip路由的系统

Country Status (1)

Country Link
CN (1) CN107154899B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107967219B (zh) * 2017-11-27 2021-08-06 北京理工大学 一种基于tcam的大规模字符串高速查找方法
CN108664459B (zh) * 2018-03-22 2021-09-17 佛山市顺德区中山大学研究院 一种后缀数组自适应的合并方法及其装置
CN109445749A (zh) * 2018-09-14 2019-03-08 高斯贝尔数码科技股份有限公司 一种不重复随机序列号生成方法及计算机终端
CN110597855B (zh) * 2019-08-14 2022-03-29 中山大学 一种数据查询方法、终端设备及计算机可读存储介质
CN110598057B (zh) * 2019-08-30 2022-08-19 北京电子工程总体研究所 一种面向遥测数据的数据搜索方法及装置
CN111008625B (zh) * 2019-12-06 2023-07-18 建信金融科技有限责任公司 一种地址校正方法、装置、设备及存储介质
CN111694559B (zh) * 2020-05-21 2023-07-21 北京云杉世纪网络科技有限公司 Gc程序语言中哈希表的实现方法及装置
CN113286013B (zh) * 2021-05-19 2023-11-07 苏州瑞立思科技有限公司 一种子网匹配方法和装置
CN113726660B (zh) * 2021-08-27 2022-11-15 西安微电子技术研究所 一种基于完美哈希算法的路由查找器和方法
CN113726661B (zh) * 2021-08-27 2022-10-18 西安微电子技术研究所 一种高性能低功耗的路由哈希器及其控制方法
CN115065661A (zh) * 2022-06-29 2022-09-16 广州方硅信息技术有限公司 网络地址转换方法、装置、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1787477A (zh) * 2004-12-09 2006-06-14 北京三星通信技术研究有限公司 IPv6路由表的查找方法
CN101286935A (zh) * 2008-05-07 2008-10-15 中兴通讯股份有限公司 一种基于ip地址范围的路由查找方法
CN102088418A (zh) * 2008-02-05 2011-06-08 华为技术有限公司 一种建立路由的方法和装置
CN102438018A (zh) * 2011-12-16 2012-05-02 北京邮电大学 基于自治域的P2P-VoIP 网络中继节点选择方法
CN105335481A (zh) * 2015-10-14 2016-02-17 广东顺德中山大学卡内基梅隆大学国际联合研究院 一种大规模字符串文本的后缀索引构造方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9143271B2 (en) * 2010-04-01 2015-09-22 Lg Electronics Inc. Broadcasting signal transmitting apparatus, broadcast signal receiving apparatus, and broadcast signal transceiving method in a broadcast signal transceiving apparatus

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1787477A (zh) * 2004-12-09 2006-06-14 北京三星通信技术研究有限公司 IPv6路由表的查找方法
CN102088418A (zh) * 2008-02-05 2011-06-08 华为技术有限公司 一种建立路由的方法和装置
CN101286935A (zh) * 2008-05-07 2008-10-15 中兴通讯股份有限公司 一种基于ip地址范围的路由查找方法
CN102438018A (zh) * 2011-12-16 2012-05-02 北京邮电大学 基于自治域的P2P-VoIP 网络中继节点选择方法
CN105335481A (zh) * 2015-10-14 2016-02-17 广东顺德中山大学卡内基梅隆大学国际联合研究院 一种大规模字符串文本的后缀索引构造方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Two Efficient Algorithms for Linear Time Suffix Array Construction;Ge Nong etc.;《IEEE》;20100923;第1471-1484页 *

Also Published As

Publication number Publication date
CN107154899A (zh) 2017-09-12

Similar Documents

Publication Publication Date Title
CN107154899B (zh) 一种用后缀索引查找ip路由的系统
US7633960B2 (en) Dense mode coding scheme
US6691124B2 (en) Compact data structures for pipelined message forwarding lookups
KR100586461B1 (ko) 파이프라인 이진 트리를 이용한 ip 어드레스 검색 방법,하드웨어 구조 및 기록매체
US7418505B2 (en) IP address lookup using either a hashing table or multiple hash functions
US7715385B2 (en) Default route coding
US8325721B2 (en) Method for selecting hash function, method for storing and searching routing table and devices thereof
US20040015494A1 (en) Multi-bit patricia trees
TWI645694B (zh) 用於處理交替配置的最長首碼匹配表的裝置和方法
US20050187898A1 (en) Data Lookup architecture
CN112131356B (zh) 一种基于tcam的报文关键字匹配方法和装置
KR20120081090A (ko) 최장 프리픽스 매치의 확장성을 개선하기 위한 방법 및 장치
US20040044868A1 (en) Method and apparatus for high-speed longest prefix match of keys in a memory
US20180145911A1 (en) Ip routing search
KR20170067804A (ko) 라우팅 테이블의 유지 방법, 장치 및 저장매체
CN112256821B (zh) 中文地址补全的方法、装置、设备及存储介质
CN104052669B (zh) 用于处理交替配置的最长前缀匹配表的装置
CN106302178B (zh) 一种路由查询方法及装置
CN102984071B (zh) 分段地址路由的路由表组织方法及查找路由的方法
CN109831384A (zh) 名字查找方法及路由器
CN107807976A (zh) Ip归属地查询方法和装置
CN115086221B (zh) 一种报文处理方法、装置、转发设备和存储介质
KR101587756B1 (ko) 블룸 필터 선-검색을 이용한 스트링 정보 검색 장치 및 방법
CN100484084C (zh) 一种检索ip地址的方法
JP2018081611A (ja) 辞書検索方法、装置、およびプログラム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant