[发明专利]一种基于内存的IP地址最长匹配快速查找的方法有效

专利信息
申请号: 200610024890.5 申请日: 2006-03-21
公开(公告)号: CN101043421A 公开(公告)日: 2007-09-26
发明(设计)人: 王磊 申请(专利权)人: 上海激动通信有限公司
主分类号: H04L12/56 分类号: H04L12/56;H04L29/06;G06F17/30
代理公司: 上海申汇专利代理有限公司 代理人: 翁若莹
地址: 200030上海*** 国省代码: 上海;31
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明涉及一种基于内存的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 地址 最长 匹配 快速 查找 方法
【主权项】:
1.一种基于内存的IP地址最长匹配快速查找的方法,其特征在于,采用C、C++语言编程实现,运行于基于X86架构的PC服务器,或运行在防火墙、路由器网络设备中,其方法为:(一):创建IP地址库加载到内存中的数据结构1)首先执行初始化操作,将IP地址库加载到内存中来,建立“第一段表”进行A、B类地址分别进行处理,将高8位<128的IP地址库列入A类,强高8位>128IP的地址库列入B类,并初始化该表中的内容为0;2)如果没有更多的IP地址记录,则结束;否则读取一个IP地址库中的IP地址/MASK对,先根据IP地址判断是A类还是B类地址,如果在“第一段表”中的指针为0,并且是A类地址,执行步骤3);如果在“第一段表”中的指针为0,并且是B类地址,则执行步骤6);如果在“第一段表”中的指针不为0,并且是A类地址,得到表项中指针指向的“MASK桶索引表”,并转向步骤4);否则,得到表项中指针指向的“MASK桶索引表”,执行步骤7);3)创建一个表项数为24个的“MASK桶索引表”,将所有表项初始化为0;4)根据掩码1的位数在“MASK桶索引表”中定位到相应的表项,如果该表项的指针为0,创建一个新的“IP顺序查找表”,并将该表项的指针指向新的“IP顺序查找表”;5)在上一步得到的“IP顺序查找表中”将新的IP插入,并转到步骤2);6)创建一个新的“第二段表”,将所有表项初始化为0,并将“第一段表”中该项的指针指向新创建的“第二段表”;7)根据IP地址的次高8定位当前“第二段表”中的表项,判断表项中的指针值是否为0,如果是,创建一个表项数为16个的“MASK桶索引表”,并将所有表项初始化为0,并最后转到步骤4);(二)快速查找的方法:1)根据传入的IP地址判断是A类还是B类地址,并根据IP地址高8位在“第一段表”中定位表项,如果表项中的指针值为0,则返回未匹配错误;2)如果是A类地址,根据步骤1)中得到的指针,获取“MASK桶索引表”的地址,并转到步骤4)执行。3)如果是B类地址,根据步骤1)中得到的指针,获取“第二段表”的地址,并根据IP地址次高8位在当前“第二段表”中定位表项,如果表项中的指针值为0,则返回未匹配错误。否则,根据该指针值,得到“MASK桶索引表”的地址;4)对得到的“MASK桶索引表”的地址,按照掩码1的位数,从多到少,依次对“IP顺序查找表”进行二分查找,如果找到,则返回匹配正确信息,否则返回未匹配错误。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海激动通信有限公司,未经上海激动通信有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/200610024890.5/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top