专利名称:一种基于用户ip地址路由的路由选择方法
技术领域:
本发明涉及数据通讯领域,尤其涉及该领域中的一种路由选择方法。
本发明所提方法包括以下步骤第一步根据设备允许接入的用户数初始化路由信息表,将用户IP地址的四个字段从高到低依次标记为a1,a2,a3,a4;
第二步建立对应关系建立第一层空间,以用户IP地址的a3、a4字段唯一确定第一层空间中的一块存储空间,使用户IP地址的a3、a4字段和该第一层空间建立一一对应关系;第三步判断是否有新活动用户加入,如果不是则转第五步;第四步添加用户关系1.设置指针PTR(x)指向该新活动用户的路由表项信息;然后根据该新活动用户的IP地址的a3(x),a4(x)字段确定与其一一对应的存储空间N,如果该存储空间N没有另一个原活动用户的记录,则将指针PTR(x)存入该存储空间N;2.如果该存储空间N已存有另一个原活动用户的记录,则建立第二层空间;同时在存储空间N里填入一个指向该第二层空间的信息;将新活动用户的IP地址a2字段与第二层空间建立一一对应关系;如果指针PTR(x)指向的位置没有一个或多个活动用户的信息,则把指向新活动用户路由表项信息的指针PTR(x)填入第二层空间中相应的位置;3.如果指针PTR(x)指向的位置已经有一个或多个活动用户的信息,则建立第三层空间,将新活动用户的IP地址a1字段与第三层空间建立一一对应关系,填入指向新活动用户路由表项的信息;第五步判断是否有活动用户的数据包进来,如果不是则转第七步;第六步查找用户关系,根据数据包的用户IP地址来决定数据包的转发路径;1.首先用该地址的a3、a4字段在第一层空间里找到对应的位置,如果该位置为空,说明该用户不存在,丢弃该数据包;2.如果该位置已存有一个指向路由表项的指针,用该指针指向的路由表项里的用户IP地址进行精确匹配,如果符合,即可认为该指针指向的路由信息是该用户的,根据该信息来进行数据包的转发;3.如果该位置存的是指向一个第二层空间的指针,则用该指针和该用户的a2字段定位的位置中取出另一指针,如果该另一指针是指向某用户路由表项信息,即可进行步骤2中的操作;
4.如果3中再次定位的指针是指向第三层空间的指针,则用该指针和a1字段继续定位,取出该位置存放的内容即为指向x用户的路由信息的指针;第七步判断是否需要删除用户关系,如果不是,则转第九步;第八步删除用户关系,当需要删除一个活动用户的记录时,首先用该用户的IP地址进行用户关系查找,找到该用户的路由表信息,标记为空;1.如果该指针是在第一层空间找到的,删除过程即可结束;2.如果该指针是在第二层空间或第三层空间,还需要判断这个空间里还存有多少个活动用户记录,在空间建立时用一个临时变量记录,在用户记录填加时加一,在记录删除时减一;3.如果该临时变量为1,说明该空间已不需要,将记录取出,返回到上一层空间,将该记录存放在上一层空间的相应位置;第九步结束。
所述的第一层空间、第二层空间和第三层空间都是指内存中一块连续的存储空间。
在所述的步骤二中,用户IP地址的a3、a4字段和第一层空间通过指针建立一一对应关系。
本发明所述的方法通过设定三层空间存储用户IP路由地址,并采用静态索引表的方式,最多只需读三次就可以找到对应的路由表项,使得任何表项的查找非常快速。尤其是在目前用户的IP地址的分配方案中,对于容量不大的用户接入,IP地址中低16bit重复的概率非常小,甚至可以说没有,所以需要建立的二级表和三级表会非常少,不需要占用额外的存储空间,可认为在64K量级。从而极大的节省了采用源地址路由的小容量汇接设备里需要的硬件搜索引擎,降低了整个系统的硬件复杂度和成本,同时具有和硬件搜索引擎完全相同的搜索效率,提高了整个系统的性能。
下面结合附图和实施例对本发明进行进一步描述。
根据全球IP地址的管理方法,一般某一ISP或某一区域分配得到的IP地址都是属于同一个B类地址或比较有限的几个B类地址。所以基于用户IP地址路由的接入层及汇接层设备,可以利用这种特殊性,采用本发明所述的方法来实现对IP地址的快速查找。在
图1中,首先根据设备允许接入的用户数初始化路由信息表。由于IP地址是由四个字节组成,把这四个字节从高到低依次标记为a1,a2,a3,a4,目的是根据收到的数据包里的用户的IP地址找到对应的路由信息。在初始化完路由信息表之后,就开始建立用户IP地址与存储空间之间的对应关系,建立64K个连续的存储空间(每个存储空间的大小视具体需要而定,一般为几个字节),这个空间称为第一层空间,用用户IP地址的a3、a4字段和这64K个存储空间建立一一对应关系。然后判断是否添加用户关系,当有一个新的活动用户x加入时,就进行用户关系的添加,先得到一个指针PTR(x)指向该用户的路由表项信息,再根据该用户的IP地址的a3(x),a4(x)字段找到与其一一对应的存储空间N,把PTR(x)存入该存储空间N;如果该存储空间N已存有一个活动用户y的记录,说明x用户和y用户的a3、a4字段相同,这时候就要用a2字段来区分这两个用户,再建立第二层空间,在存储空间N里填入一个指向这个空间的信息。用a2字段和这个二层空间建立一一对应关系;把指向x用户和y用户路由表项的指针分别填入相应的位置;如果该位置没有其他活动用户的信息,则在二层空间中相应位置上填入指向x用户路由表项的指针;如果在二层空间中所指向的位置已经有一个或活动用户的信息,则同理用a1建立三层空间,找到相应的三层空间,填入指向x用户路由表项的信息。
对于用户关系的查找,本方法按下述方式处理当一个活动用户的数据包进来时,根据数据包的用户IP地址来决定数据包的转发路径,并且采用和前面添加用户关系同样的定位方法进行查找;如果不是查找用户关系,则判断是否进行用户关系的删除,当需要删除一个活动用户的记录时,首先用该用户的IP地址按查找用户关系的步骤找到该用户的路由表信息,将之标记为空;如果该指针是在第一层空间找到的,删除过程即可结束;如果该指针是在第二层或第三层的空间,还需要判断这个空间里还存有多少个活动用户记录,这可以在空间建立时用一个临时变量记录,在用户记录填加时加一,在记录删除时减一;如果该临时变量为1,说明该空间已不需要,将记录取出,返回到上一层空间,将该记录存放在上一层空间的相应位置,从而完成删除过程。
第二步对应关系建立建立一个64K 32bit的存储空间M,即64K个32bit大小的空间。用源IP地址的a3、a4字段和存储空间M的64K个位置建立一一对应关系(a3、a4字段的大小为65535,刚好是64K,能够实现这种对应关系)。
第三步判断是否进行用户关系的添加,如果不是,则转第五步;第四步用户关系添加1.当有一个新的活动用户x加入时,首先得到一个指针PTRx指向该用户的路由表项信息。然后根据该用户的IP地址的a3x,a4x字段找到对应的32bit空间,如果该位置为空,说明目前的活动用户的IP地址没有和a3x及a4x相同的。这样,就直接把PTRx存入该位置;2.如果该位置已存有一个活动用户y的记录,说明x用户和y用户的a3、a4字段相同,这时候就要用a2字段来区分这两个用户;3.建立一个256个32bit大小的空间,这个空间称为第二层空间,把这个空间的起始地址填入存储空间M中的记录里。然后用a2字段和这256个位置建立一一对应关系;把指向x用户和y用户路由表项的指针分别填入相应的位置;4.如果该位置存的是指向一个256 32bit存储空间的指针,说明此时有两个以上的活动用户和x用户具有相同的a3、a4字段,根据该指针和x用户的a1字段合起来指向的位置则用于存放指向x用户路由表项的指针;5.如果4中所指向的位置已经有一个活动用户的指针或者是指向另一个25632bit存储空间的指针,说明此时有多个活动用户和x用户的a2、a3、a4字段都相同,同3或4进行相同的定位,填入指向x用户路由表项的指针;第五步判断是否要查找用户关系,如果不是,则转第七步;第六步用户关系查找当一个活动用户x的数据包进来时,根据数据包的源IP地址来决定数据包的转发路径;1.首先用该地址的a3、a4字段在存储空间M里找到对应的位置,如果该位置为空,说明x用户不存在,丢弃该数据包;2.如果该位置已存有一个指向路由表项的指针,用该指针指向的路由表项里的用户IP地址进行精确匹配,如果符合,即可认为该指针指向的路由信息是x用户的,可以根据该信息来进行数据包的转发;3.如果该位置存的是指向一个256 32bit存储空间的指针,用该指针和x用户的a2字段定位的位置中取出另一个指针,如果该指针是指向某用户的路由表项信息,即可进行3中的操作;4.如果3中再次定位的指针仍是指向一个256 32bit存储空间的指针,用该指针和a1字段继续定位,取出该位置存放的内容即为指向x用户的路由信息的指针;第七步用户关系删除1.当需要删除一个活动用户的记录时,首先用该用户的IP地址按第四步的步骤找到指向该用户路由信息的指针,将该路由表项标记为空;2.如果该指针是在M里找到的,删除过程即可结束3.如果该指针是在第二层或第三层的空间,还需要判断这个空间里还存有多少个活动用户记录,这可以在空间建立时用一个临时变量记录,在用户记录填加时加一,在记录删除时减一;4.如果该临时变量为1,说明该空间已不需要,将记录取出,返回到上一层空间,将该记录存放在上一层空间的相应位置。
权利要求
1.一种基于用户IP地址路由的路由选择方法,包括以下步骤第一步根据设备允许接入的用户数初始化路由信息表,将用户IP地址的四个字段从高到低依次标记为a1,a2,a3,a4;第二步建立对应关系建立第一层空间,以用户IP地址的a3、a4字段唯一确定第一层空间中的一块存储空间,使用户IP地址的a3、a4字段和该第一层空间建立一一对应关系;第三步判断是否有新活动用户加入,如果不是则转第五步;第四步添加用户关系1.设置指针PTR(x)指向该新活动用户的路由表项信息;然后根据该新活动用户的IP地址的a3(x),a4(x)字段确定与其一一对应的存储空间N,如果该存储空间N没有另一个原活动用户的记录,则将指针PTR(x)存入该存储空间N;2.如果该存储空间N已存有另一个原活动用户的记录,则建立第二层空间;同时在存储空间N里填入一个指向该第二层空间的信息;将新活动用户的IP地址a2字段与第二层空间建立一一对应关系;如果指针PTR(x)指向的位置没有一个或多个活动用户的信息,则把指向新活动用户路由表项信息的指针PTR(x)填入第二层空间中相应的位置;3.如果指针PTR(x)指向的位置已经有一个或多个活动用户的信息,则建立第三层空间,将新活动用户的IP地址a1字段与第三层空间建立一一对应关系,填入指向新活动用户路由表项的信息;第五步判断是否有活动用户的数据包进来,如果不是则转第七步;第六步查找用户关系,根据数据包的用户IP地址来决定数据包的转发路径;1.首先用该地址的a3、a4字段在第一层空间里找到对应的位置,如果该位置为空,说明该用户不存在,丢弃该数据包;2.如果该位置已存有一个指向路由表项的指针,用该指针指向的路由表项里的用户IP地址进行精确匹配,如果符合,即可认为该指针指向的路由信息是该用户的,根据该信息来进行数据包的转发;3.如果该位置存的是指向一个第二层空间的指针,则用该指针和该用户的a2字段定位的位置中取出另一指针,如果该另一指针是指向某用户路由表项信息,即可进行步骤2中的操作;4.如果3中再次定位的指针是指向第三层空间的指针,则用该指针和a1字段继续定位,取出该位置存放的内容即为指向x用户的路由信息的指针;第七步判断是否需要删除用户关系,如果不是,则转第九步;第八步删除用户关系,当需要删除一个活动用户的记录时,首先用该用户的IP地址进行用户关系查找,找到该用户的路由表信息,标记为空;1.如果该指针是在第一层空间找到的,删除过程即可结束;2.如果该指针是在第二层空间或第三层空间,还需要判断这个空间里还存有多少个活动用户记录,在空间建立时用一个临时变量记录,在用户记录填加时加一,在记录删除时减一;3.如果该临时变量为1,说明该空间已不需要,将记录取出,返回到上一层空间,将该记录存放在上一层空间的相应位置;第九步结束。
2.根据权利要求1所述的基于用户IP地址路由的路由选择方法,其特征在于,所述的所述的第一层空间、第二层空间和第三层空间都是指一块连续的存储空间。
3.根据权利要求1所述的基于用户IP地址路由的路由选择方法,其特征在于,在所述的第三步中,用户IP地址的a3、a4字段和第一层空间通过指针建立一一对应关系。
全文摘要
本发明提出一种基于用户IP地址路由的路由选择方法,包括1、根据设备允许接入的用户数初始化路由信息表;2、建立对应关系;3、判断是否添加用户关系,如否转步骤5;4、添加用户关系;5、判断是否查找用户关系,如否转步骤7;6、查找用户关系;7、判断是否删除用户关系,如否转步骤9;8、删除用户关系;9、结束。本发明通过设定三层空间存储用户IP路由地址,并采用静态索引表的方式,最多只需读三次就可以找到对应的路由表项,使得表项查找快速,同时降低了硬件复杂度和成本,具有和硬件搜索引擎完全相同的搜索效率,提高了整个系统的性能。
文档编号H04L12/24GK1406073SQ0112645
公开日2003年3月26日 申请日期2001年8月14日 优先权日2001年8月14日
发明者严超, 蔡惊哲 申请人:深圳市中兴通讯股份有限公司上海第二研究所