构造路由表及用其查找路由项的方法

文档序号:7626898阅读:327来源:国知局
专利名称:构造路由表及用其查找路由项的方法
技术领域
本发明属于数据通讯技术领域,特别涉及互联网中进行路由选择技术。
背景技术
在互联网中进行路由选择要使用路由器,路由器根据所收到的IP数据报文上的目的IP地址决定将报文向何处发送。所谓IP地址就是给每一个连接在Internet上的端口分配的一个唯一的32位地址。IP地址由两部分组成第一部分为网络号,第二部分为主机号。但是由于网络发展的需要,现在已进一步将主机号再分成一个子网号和一个主机号。子网掩码就是用来确定IP地址中多少位用于子网号,多少位用于主机号的。为了指导路由器转发报文的工作,每一台路由器都有一个路由表,路由表中存放路由项。每一个路由项都包含如下信息1、目的IP地址它既可以是一个完整的主机地址,也可以是一个网络地址,主机地址有一个非0的主机号,以指定某一特定的主机,而网络地址中的主机号为0,以指定某一网络中的所有主机。2、子网掩码通过子网掩码可以进一步知道目的IP地址的子网号。3、输出端口说明IP数据报文应从路由器哪个端口发送出去。4、下一跳IP地址说明IP数据报文要到达的下一个设备的IP地址。路由器收到IP数据报文后,根据报文中的目的IP地址在路由表中查找到匹配的路由项,然后从路由项中指明的输出端口将报文转发出去。
在路由表中可能出现路由覆盖的现象,即对于某个特定的目的IP地址,有多个子网掩码不同的路由项对应。目的IP地址相同的情况下,子网掩码长的路由项是子网掩码短的路由项的子路由项,子网掩码短的路由项是子网掩码长的路由项的父路由项。查找路由表的目标就是为了找到一个最能匹配给定目的IP地址的特定路由项。所谓最能匹配的路由项,也就是说,一个网络号、子网号、主机号都能够匹配的路由项要优于一个网络号、子网号能匹配的路由项;而一个网络号、子网号能匹配的路由项要优于一个网络号匹配的路由项。
路由器每转发一次IP数据报文就要通过路由表查找一遍路由项,因此路由表的查找速率是影响路由器转发效率的关键因素。同时,路由项可以通过用户手工配置得到,也可以通过运行动态路由协议自动得到。动态路由协议可能在短时间内学习到成千上万条路由项,所以,在路由表中快速添加删除路由项的能力也很重要。
现有的常见的构建路由表的方法是利用二叉树来构建路由表,如图1所示,根据目的IP地址从高位到低位,每一位是0或1来确定是在二叉树的左分支还是右分支。用这种结构的路由表存放路由项的方法,比较直观,有层次,但是添加删除过程复杂,查找效率低。由图1可见,如果要查找一条子网掩码长度为4的路由项,要查找4次,而如果要查找一条子网掩码长度为32位的主机路由项,则需要查找32次。
用二叉树形式的路由表来存放路由项,在查找时几乎每一个路由项都要经过数次或数十次的查找才能找到,极大影响了路由器的转发效率。此外该方法的扩充性不好,例如对于128位的IPv6地址,找一个路由项的查找次数可能达到上百次,这几乎是不能忍受的。

发明内容
本发明的目的是为克服已有技术的不足之处,提供一种构造路由表及用其查找路由项的方法,本发明具有维护方便,查找路由项高效快速,且可自动扩充的特点。
本发明提出的一种构造路由表的方法,包括a、生成一级或多级索引表;b、将路由项按照所述各级索引表长度分段存储在所述的索引表中。
所述第i级索引表的长度可为Ni,其中Ni为自然数。
所述第i级索引表中可包括2Ni个索引结点。
所述索引结点可顺序排列。
所述多级索引表中第一级索引表固定生成,其它各级索引表可在添加新路由项的过程中动态产生。
除所述第一级以外的其它各级索引表的表项还可包括表头域,该表头域中包含一个计数器。
所述索引结点指向内容可包括指向某一路由项、指向下一级索引表、指向空。
所述生成索引表可包括以下步骤1)路由器启动时即创建一级索引表,有2N1个索引结点,索引结点都指向空;2)在添加新路由项的过程中,如果有路由项的子网掩码长度大于N1,小于等于N1+N2,会创建二级索引表,如果有路由项的子网掩码长度大于N1+N2,小于等于N1+N2+N3,会创建二级和三级索引表,以此类推;3)如果不再有子网掩码长度大于N1+N2+...+Np-1,小于等于N1+N2+...+Np-1+Np的路由项,会删除第p级索引表,p为当前索引表的最高级数。
所述添加新路由项,具体可包括以下步骤1)如果路由项的子网掩码长度L小于等于N1位,在一级索引表中找到索引号和目的IP地址的前N1位值相同的索引结点,从这个结点开始,索引号依次递增的2(N1-L)个索引结点都指向此路由项;2)如果路由项的子网掩码长度L大于N1位,小于等于N1+N2位,在一级索引表中找到索引号和目标IP地址的前N1位值相同的索引结点,判断此索引结点的内容21)如果此索引结点没有指向一个二级索引表,先建立一个设有表头域的二级索引表,这个表有2N2个索引结点,索引结点的索引号依次为0到2N2,表头域中计数器值为0,找到索引号和路由项的目的IP地址的第N1+1至N1+1+N2位值相同的索引结点,从此结点开始,往后的2(N2-(L-N1))个索引结点都指向该路由项,其它索引结点指向空;
22)如果此索引结点指向一个二级索引表,直接在这个二级索引表中找到索引号和路由项的目的IP地址的第N1+1至N1+1+N2位值相同的索引结点,从此结点开始,往后的2(N2-(L-N1))个索引结点都指向该路由项;3)如果路由项的子网掩码长度L大于N1+N2,小于等于N1+N2+N3,则要在三级索引表中添加路由项,则具体步骤和在二级索引表中添加路由项类似,以此类推;4)如果要指向新路由项的索引结点原来并不指向空,而指向一个已有的路由项,则需要判断两个路由项的子网掩码长度;41)如果新路由项的子网掩码长度小于已有的路由项的,则新路由项为父路由项,直接将已有的路由项指向新路由项,索引结点内容不变;42)如果新路由项的子网掩码长度大于已有的路由项的,则已有路由项为父路由项,将新路由项指向已有的路由项,索引结点指向新路由项;5)如果要指向新路由项的索引结点原来是指向下一级索引表表头域的,则直接将表头域指向新路由项;如果表头域原来也指向了一个已有的路由项,则比较已有的路由项和新路由项的子网掩码的长度,最终由表头域指向子路由项,子路由项指向父路由项;6)如果索引结点需要指向新建立的下一级索引表,而该索引结点原来已指向一已有路由项,只需要将该索引结点指向下一级索引表表头域,将表头域指向已有路由项。
所述删除路由项,具体可包括以下步骤1)如果要删除的路由项不指向其它路由项,则直接将指向要删除的路由项的索引结点或子路由项指向空,将存放要删除的路由项的内存释放;2)如果要删除的路由项指向父路由项,则将指向要删除的路由项的索引结点或子路由项直接指向父路由项,将存放要删除的路由项的内存释放;3)如果删除路由项后,使动态生成的索引表中表头里的计数器值为0,即索引表中没有索引结点指向路由项了,要将此索引表删除;
4)如果待删索引表表头域指向空,则指向它的上一级索引表中的索引结点也指向空;5)如果待删索引表表头域指向一父路由项,则将指向表头域的索引结点指向父路由项;将存放动态索引表的内存释放。
本发明提出的一种查找路由项的方法,其特征在于,采用分级索引表构造路由表,查找路由项包括以下步骤1)对IP数据报文中目的IP地址取前N1位,在一级索引表中找到索引号与之相等的索引结点;2)如果此索引结点指向路由项,则表明路由项找到;3)如果索引结点指向空,表明路由项没有找到;4)如果索引结点指向下一级索引表,则在二级索引表中找到索引号和目的IP地址第N1+1位至第N1+1+N2位的值相等的索引结点,如果该索引结点指向路由项,表明路由项找到;5)如果该索引结点指向空,则看本级索引表的表头域,如果表头域指向某一路由项,表明路由项找到,如果表头域指向空,表明路由项没有找到;6)如果索引结点指向下一级索引表,则根据目的IP址的第N1+N2+1位至第N1+N2+1+N3位的值在三级索引表中继续查找,查找方法和在二级索引表中查找的方法一样,以此类推查找到目的IP地址的最后位。
本发明带来的有益效果利用本发明的技术方案构造路由表,根据任何目的IP地址查找路由项,最多只需要查找M次(M值为索引表的级数),而且很大部分的路由项可以一次查到,大大提高了路由表的查找效率。其次,这种方法也很好的解决了路由表的维护问题,无论添加删除路由项,操作步骤都较少,维护效率高。同时,由于低级索引表是动态产生,动态删除的,可以节省内存资源。
本发明的扩展性也很好,索引表的级数可根据情况调整,每一级索引结点的数目也可以根据具体情况设定。例如,可以将索引表设为三级,该三级索引表的一级索引表有216个索引结点,每个二级索引表有28个索引结点,每个三级索引表也有28个索引结点。在三级分级索引表中查找路由项,简单快速,最多查找3次即能找到需要的路由项。
也可以将索引表设为四级,第一级有220个索引结点,第二级、第三级、第四级都有24个索引结点,这样虽然一级索引表占用的内存大一些,但是可以确保有62.5%的目的IP地址可以一次查到路由,提高总体转发速率。在IPv6协议里,IPv6地址长度达到128位,采用本方法可以建立更多级的索引表来适应,而且只要控制好索引表的级数,路由查找的效率仍然是非常高的。


图1为现有的利用二叉树来存放路由路由的方法示意图。
图2为本发明构造的多级索引表形式的路由表中各级索引表、索引结点、路由项关系图。
图3为本发明采用三级索引表形式的路由表查找路由项的方法流程图。
具体实施例方式
本发明提出的构造的路由表及用其查找路由项的方法,下面结合实施例及附图进行详细说明。
一、本发明采用多级索引表构造的路由表,如图2所示,详细说明如下查找路由项的主要线索是路由项中的目的IP地址,所以本发明以索引表的形式构建路由表,索引表中每一表项的索引号和路由项中的目的IP地址建立某种联系,达到快速查找的目的。同时,利用路由项有子网掩码的特点,本发明将索引表分级,子网掩码短的路由项放在高级索引表中,子网掩码长的路由项放在低级索引表中。最高级的索引表,即一级索引表固定生成,其它低级索引表动态产生,这种分级的索引表在确保查找效率的同时,又大大节省了内存。
本发明称索引表中的每一个表项为一个索引结点,每个索引结点有一个索引号,索引号按照索引结点的排列从0依次递增,如第一个索引结点的索引号为0,第二个索引结点的索引号为1,以此类推。索引结点可能指向三种内容1、指向某一路由项;2、指向下一级索引表;3、指向空。当然,最后一级索引表的索引结点不能指向下一级索引表,只能指向路由项或空。除了一级索引表,其它各级索引表还设有表头域,表头域内可包含一个计数器,记录本索引表中有多少个索引结点不指向空,以便在本索引表中所有索引结点都指向空时删除此表。
索引表具体分为几级,每一级有多少个结点,没有特定值,但必须满足以下要求假设索引表分为m级,每一级的结点数必须是2的Ni次幂(Ni为自然数),对于32位地址,需要满足以下公式N1+N2+......+Nm=32;对于128位的IPv6地址,则N1+N2+......+Nm=128。
本发明以一个三级索引表为实施例,详细介绍分级索引表的建立、添加、删除路由项和查找路由项方法。
在本实施例中,一级索引表由索引结点构成,二、三级索引表由表头域和索引结点构成,其中,三级索引表中的一级索引表有216个索引结点,每个二级索引表有28个索引结点,每个三级索引表也有28个索引结点。
本实施例的构造路由表的方法为路由器启动时即创建一级索引表,有216个索引结点,索引结点都指向空。当有新路由项产生时,根据路由项中的目的IP地址和子网掩码将合适的索引结点指向此路由项,具体构造步骤如下1、如果路由项的子网掩码长度L小于等于16位,找到索引号和目的IP地址的前16位值相同的索引结点,从这个结点开始,索引号依次递增的2(16-L)个索引结点都指向此路由项。
2、如果路由项的子网掩码长度L大于16位,小于等于24位,在一级索引表中找到索引号和目标IP地址的前16位值相同的索引结点,判断此索引结点的内容21、如果此索引结点没有指向一个二级索引表,先建立一个设有表头域的二级索引表,这个表有28个索引结点,索引结点的索引号依次为0到28,表头域中计数器值为0,找到索引号和路由项的目的IP地址的第17至24位值相同的索引结点,从此结点开始,往后的2(8-(L-16))个索引结点都指向该路由项,其它索引结点指向空;22、如果此索引结点指向一个二级索引表,直接在这个二级索引表中找到索引号和路由项的目的IP地址的第17至24位值相同的索引结点,从此结点开始,往后的2(8-(L-16))个索引结点都指向该路由项;3、如果路由项的子网掩码长度L大于24,小于等于32,则要在二级索引表的基础上继续创建三级索引表。具体步骤和创建二级索引表类似,这里就不赘述了。
4、如果要指向新路由项R2的索引结点原来并不指向空,而指向一个已有的路由项R1,则需要判断两个路由项的子网掩码长度;41、如果R2的子网掩码长度小于R1的,说明R2是R1的父路由项,只用直接将R1指向R2就行了,索引结点内容不变;42、如果R2的子网掩码长度大于R1的,说明R1是R2的父路由项,将R2指向R1,索引结点指向R2;5、如果要指向新路由项R2的索引结点原来是指向下一级索引表表头域的,则直接将表头域指向R2;6、如果表头域原来也指向了一个已有的路由项R1,也要比较一下R1和R2的子网掩码的长度,最终表头域指向子路由项,子路由项指向父路由项;7、如果指向新路由项R2的索引结点需要指向新建立的下一级索引表,而该索引结点原来已指向一已有路由项R1,只需要将索引结点指向下一级索引表表头域,将表头域指向R1就行了。
本实施例在路由表中内容的删除的方法,具体步骤如下1、如果要删除的路由项R2不指向其它路由项,则直接将指向R2的索引结点或子路由项指向空,将存放路由项R2的内存释放;2、如果要删除的路由项R2指向了父路由项R1,则将指向R2的索引结点或子路由项直接指向R1,将存放路由项R2的内存释放;3、如果删除路由项后,动态生成的索引表中表头里的计数器值为0,即索引表中没有索引结点指向路由项了,要将此索引表删除4、如果待删索引表表头域指向空,则指向它的上一级索引表中的索引结点也指向空;5、如果待删索引表表头域指向一路由项R1,则将指向表头域的索引结点指向R1。将存放动态索引表的内存释放。
由上面描述可见,除了一级索引表是固定产生的外,其它各级索引表都是动态产生,动态删除的,可以节省大量内存。而表头域的存在除了可以方便的判断删除动态索引表的时机外,还带来了一个很直接的好处,这就是在一个索引表中增加或删除路由结点时,不会影响到它所有的下级索引表,至多会修改某些下级索引表中表头域的一个指针。通过这种特殊的结构,极大提高了路由表的维护效率,即使有路由覆盖的情况,维护路由表的操作也较简单。
二、本发明采用上述路由表查找路由项的方法实施例,如图3所示,详细说明如下路由器转发IP数据报文时要查找路由表中的路由项;查找的依据是IP数据报文中所带的目的IP地址,即路由项中的内容。本实施例的路由表为三级索引表,具体查找方法的步骤如下1、取IP数据报文中目的IP地址的前16位;2、在一级索引表中找到索引号与之相等的索引结点,3、判断索引结点内容4、如果此索引结点指向路由项,则表明路由项找到,返回;5、如果索引结点指向空,表明路由项没有找到,返回;
6、如果索引结点指向下一级索引表,则在二级索引表中找到索引号和目的IP地址第17位至第24位的值相等的索引结点;7、判断索引结点内容8、如果该索引结点指向路由项,表明路由项找到,返回;9、如果该索引结点指向空,则看本级索引表的表头域,如果表头域指向某一路由项,表明路由项找到,返回;10、如果表头域指向空,表明路由项没有找到,返回;11、如果索引结点指向下一级索引表,则根据目的IP地址的第25位至32位的值在三级索引表中继续查找,查找方法和在二级索引表中查找的方法一样,如步骤7、8、9、10所述。
在三级分级索引表中查找路由项,简单快速,最多查找3次即能找到需要的路由项。
本发明的索引表不限于用三级,可根据情况调整为更多或更少级,每一级索引结点的数目也可以根据具体情况设定。例如,可以将索引表设为四级,第一级有220个索引结点,第二级、第三级、第四级都有24个索引结点,这样虽然一级索引表占用的内存大一些,但是可以确保有62.5%的目的IP地址可以一次查到路由,提高总体转发速率。
权利要求
1.一种构造路由表的方法,其特征在于a、生成一级或多级索引表;b、将路由项按照所述各级索引表长度分段存储在所述的索引表中。
2.如权利要求1所述语构造路由表的方法,其特征在于,所述第i级索引表的长度为Ni,其中Ni为自然数。
3.如权利要求2所述语构造路由表的方法,其特征在于,所述第i级索引表中包括2Ni个索引结点。
4.如权利要求3所述语构造路由表的方法,其特征在于,所述索引结点顺序排列。
5.如权利要求1所述的构造路由表的方法,其特征在于,所述多级索引表中第一级索引表固定生成,其它各级索引表在添加新路由项的过程中动态产生。
6.如权利要求1所述的构造路由表的方法,其特征在于,除所述第一级以外的其它各级索引表的表项还包括表头域,该表头域中包含一个计数器。
7.如权利要求3所述的构造路由表的方法,其特征在于,所述索引结点指向内容包括指向某一路由项、指向下一级索引表、指向空。
8.如权利要求3所述的构造路由表的方法,其特征在于,所述生成索引表包括以下步骤1)路由器启动时即创建一级索引表,有2N1个索引结点,索引结点都指向空;2)在添加新路由项的过程中,如果有路由项的子网掩码长度大于N1,小于等于N1+N2,会创建二级索引表,如果有路由项的子网掩码长度大于N1+N2,小于等于N1+N2+N3,会创建二级和三级索引表,以此类推;3)如果不再有子网掩码长度大于N1+N2+...+Np-1,小于等于N1+N2+...+Np-1+Np的路由项,会删除第p级索引表,p为当前索引表的最高级数。
9.如权利要求5或8所述的构造路由表的方法,其特征在于,所述添加新路由项,具体包括以下步骤1)如果路由项的子网掩码长度L小于等于N1位,在一级索引表中找到索引号和目的IP地址的前N1位值相同的索引结点,从这个结点开始,索引号依次递增的2(N1-L)个索引结点都指向此路由项;2)如果路由项的子网掩码长度L大于N1位,小于等于N1+N2位,在一级索引表中找到索引号和目标IP地址的前N1位值相同的索引结点,判断此索引结点的内容21)如果此索引结点没有指向一个二级索引表,先建立一个设有表头域的二级索引表,这个表有2N2个索引结点,索引结点的索引号依次为0到2N2,表头域中计数器值为0,找到索引号和路由项的目的IP地址的第N1+1至N1+1+N2位值相同的索引结点,从此结点开始,往后的2(N2-(L-N1))个索引结点都指向该路由项,其它索引结点指向空;22)如果此索引结点指向一个二级索引表,直接在这个二级索引表中找到索引号和路由项的目的IP地址的第N1+1至N1+1+N2位值相同的索引结点,从此结点开始,往后的2(N2-(L-N1))个索引结点都指向该路由项;3)如果路由项的子网掩码长度L大于N1+N2,小于等于N1+N2+N3,则要在三级索引表中添加路由项,则具体步骤和在二级索引表中添加路由项类似,以此类推;4)如果要指向新路由项的索引结点原来并不指向空,而指向一个已有的路由项,则需要判断两个路由项的子网掩码长度;41)如果新路由项的子网掩码长度小于已有的路由项的,则新路由项为父路由项,直接将已有的路由项指向新路由项,索引结点内容不变;42)如果新路由项的子网掩码长度大于已有的路由项的,则已有路由项为父路由项,将新路由项指向已有的路由项,索引结点指向新路由项;5)如果要指向新路由项的索引结点原来是指向下一级索引表表头域的,则直接将表头域指向新路由项;如果表头域原来也指向了一个已有的路由项,则比较已有的路由项和新路由项的子网掩码的长度,最终由表头域指向子路由项,子路由项指向父路由项;6)如果索引结点需要指向新建立的下一级索引表,而该索引结点原来已指向一已有路由项,只需要将该索引结点指向下一级索引表表头域,将表头域指向已有路由项。
10.如权利要求8所述的构造路由表的方法,其特征在于,所述删除路由项,具体包括以下步骤1)如果要删除的路由项不指向其它路由项,则直接将指向要删除的路由项的索引结点或子路由项指向空,将存放要删除的路由项的内存释放;2)如果要删除的路由项指向父路由项,则将指向要删除的路由项的索引结点或子路由项直接指向父路由项,将存放要删除的路由项的内存释放;3)如果删除路由项后,使动态生成的索引表中表头里的计数器值为0,即索引表中没有索引结点指向路由项了,要将此索引表删除;4)如果待删索引表表头域指向空,则指向它的上一级索引表中的索引结点也指向空;5)如果待删索引表表头域指向一父路由项,则将指向表头域的索引结点指向父路由项;将存放动态索引表的内存释放。
11.一种查找路由项的方法,其特征在于,采用多级索引表构造路由表,查找路由项包括以下步骤1)对IP数据报文中目的IP地址取前N1位,在一级索引表中找到索引号与之相等的索引结点;2)如果此索引结点指向路由项,则表明路由项找到;3)如果索引结点指向空,表明路由项没有找到;4)如果索引结点指向下一级索引表,则在二级索引表中找到索引号和目的IP地址第N1+1位至第N1+1+N2位的值相等的索引结点,如果该索引结点指向路由项,表明路由项找到;5)如果该索引结点指向空,则看本级索引表的表头域,如果表头域指向某一路由项,表明路由项找到,如果表头域指向空,表明路由项没有找到;6)如果索引结点指向下一级索引表,则根据目的IP址的第N1+N2+1位至第N1+N2+1+N3位的值在三级索引表中继续查找,查找方法和在二级索引表中查找的方法一样,以此类推查找到目的IP地址的最后位。
全文摘要
本发明属于数据通讯技术领域,涉及构造路由表及用其查找路由项的方法。本方法包括路生成一级或多级索引表;将路由项按照所述各级索引表长度分段存储在所述的索引表中。本发明具有维护方便,查找路由项高效快速,且可自动扩充的特点。
文档编号H04L12/28GK1553655SQ03140559
公开日2004年12月8日 申请日期2003年5月29日 优先权日2003年5月29日
发明者朱英明, 郭宁 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1