应用于dns查询的ip地址列表存储和查询方法

文档序号:9870455阅读:719来源:国知局
应用于dns查询的ip地址列表存储和查询方法
【技术领域】
[0001] 本发明属于信息技术、DNS技术领域,具体设及一种应用于DNS查询的IP地址列表 存储和查询方法。
【背景技术】
[0002] IP地址的匹配广泛存在于DNS(Domain Name System,域名系统)查询过程中,比如 服务器端的查询黑白名单、View(视图)的客户端的IP地址列表、递归服务器的Sodlist(路 由重定向)配置等等,IP地址列表的快速匹配在一定程度上影响着查询的效率。
[0003] Radix Tree(基数树)是常用的IP路由存储结构,实际上IP路由查找正是Radix 化ee最常用的领域之一。在存储IP数据,尤其是CIDR(无类别域间路由,Classless Inter-Domain Routing) 的 时候, Radix 退化成一种二叉树 ,左右子树分别表示 IP 的二进制表示的 1 或者0,所W对于IPv4,Radix树的最大高度是32。对于CIDR的存储,只需要存储前缀位就可 W了,比如存储130.50.30.40/18,只需要存储前18位即可,后面的14位不用存储,因为在查 找ACL(访问控制列表)的时候,只要对比到第18位就可W确定是否让此IP通过验证。BIND9 中A化的实现就是基于Radix Tree eNginx(-种高性能的服务器,Engine X)中的Geo模块 (用于作全局负载功能)也用Radix化ee存储CIDR形式的IP。
[0004] 除此之外常用的IP存储结构还有顺序表、四级HA甜表等。各结构的复杂度如表1所 示:
[0005] 表1.不同IP存储结构的复杂度
[0007] 运些结构有个共同的缺点,W Vi ew为例,配置N个Vi ew时,就需要建立N个树(表), 匹配一条IP时,最坏的情况是需要查找N次。如果业务较多的情况下(先匹配黑白名单、再匹 配权威View,最后匹配递归Sodlist),查询次数(时间)不论采用哪种结构都会成倍增长。

【发明内容】

[0008] 本发明针对上述问题,提供一种应用于DNS查询的IP地址列表存储和查询方法,能 够快速进行IP匹配,提高DNS查询的效率,并降低配置的策略与业务对查询效率的影响。
[0009] 本发明中,"业务"是指需要实现的不同功能,比如视图功能、访问控制功能等;"策 略"是指每个功能下的不同策略标识,比如视图功能下配置视图一、视图二,或者访问控制 功能配置允许访问、拒绝访问等。
[0010] 本发明采用的技术方案如下:
[0011] -种IP地址列表存储方法,其特征在于,包括如下步骤:
[0012] I)将每个策略的IP地址列表进行去重处理,然后进行存储;
[0013] 2)将每个业务的不同策略的IP地址列表进行合并,构建成"IP地址列表+策略"的 形式并存储,合并过程中视业务要求遵循IP最长匹配原则或者优先级原则;
[0014] 3)将不同业务的"IP地址列表+策略"存储结构继续进行合并,构建成"IP地址列表 +业务+策略"的形式并存储;
[0015] 4)对"IP地址列表+业务+策略"的存储结构按照IP地址列表起始地址大小进行排 序。
[0016] 进一步地,步骤2)所述IP最长匹配原则是指收到一个IP数据包时,将数据包的目 的IP地址与IP列表中的表项进行逐位查找,直到找到匹配度最长的条目;所述优先级原则 是指收到一个IP数据包时,将数据包的目的IP地址与IP列表中的表项进行匹配,找到匹配 时优先级最局的条目。
[0017] 进一步地,步骤1)采用下列方式之一存储每个策略的IP地址列表:红黑树、数组、 链表。
[0018] 进一步地,步骤2)和步骤3)采用下列方式之一存储合并后的IP地址列表:数组、 Radi X树、四级HA甜表。
[0019] 进一步地,步骤2)和步骤3)采用数组存储合并后的IP地址列表,并将形成的"IP地 址列表+业务+策略"的数组拆为两个数组W提高查询效率,其中,数组一存储IP起始地址, 数组二存储"IP结束地址+业务+策略";在查询时对IP起始地址的数组采用二分法进行查 询,查到后获取数组下标,到对应的另一 IP数组中获取对应的业务及策略。
[0020] 进一步地,步骤2)在合并的过程中根据优先级进行IP段的拆分、去重,优先级相同 时按照IP最长匹配进行拆分、去重。
[0021] 进一步地,步骤3)在不同业务直接合并时不存在优先级的区别,W保证数组覆盖 每个业务的每个策略的所有IP段。
[0022] -种DNS查询方法,首先权威服务器或递归服务器采用上述方法对IP地址列表进 行存储,然后通过存储的IP地址列表进行DNS查询。
[0023] 进一步地,将形成的"IP地址列表+业务+策略"拆为两个数组W提高查询效率,其 中,数组一存储IP起始地址,数组二存储"IP结束地址+业务+策略",然后对IP起始地址的数 组采用二分法进行查询,查到后获取数组下标,到对应的另一IP数组中获取对应的业务及 策略。
[0024] 本发明的关键点是:1)每个策略的IP地址列表储存时,可W采用红黑树的方式进 行存储,WIP段为key,W业务数据为infO;也可W视情况采用其他方式存储,如采用数组、 链表等方式存储IP地址。2)合并IP地址列表时有两种原则,IP最长匹配原则和优先级原则。 根据业务的不同,在策略合并的过程中采用不同的原则,因此,每个业务的保存结构需要进 行相应的变化。W红黑树为例,key值均为IP地址,info的值需要视业务的不同存储view, id/acl_denyW及优先级。3)二分法查询需要对数组进行排序,不同的业务的IP数组进行合 并后,需要进一步排序。4)该存储结构对配置的策略个数与业务个数不做限制。本发明对配 置的业务类型、策略类型都不作要求,可作为通用模块广泛应用于权威、递归服务器。
[0025] 本发明的技术核屯、在于通过IP地址的合并、拆分将不同业务的IP地址列表整合到 一起,对于整合后的IP地址列表的存储方式和查询方法除了上述实施方式提出的通过两个 数组进行存储并利用二分法进行查询W外,可根据具体应用场景进行灵活调整,并不局限 于利用数组的方式进行存储,也不局限于利用二分法的方式进行查询。前文提到的Radix 树、四级HASH表都可W用于存储合并拆分后的IP地址列表,具体使用时根据存储空间和时 间复杂度的取舍,选择合适的存储方式和查询算法。
[00%]与现有技术相比,本发明的有益效果如下:
[0027] 1)二分法查询的复杂度为0(L〇G2(N)),W2个View为例,每个View的match_ clients(客户端IP列表)的IP列表为2~10,传统的二分法最坏查找次数为10+10次,合并为2 ' 10巧的数组后,最坏查找次数为11次。
[00%] 2)DNS查询过程中需要进行多次IP匹配,采用上述结构后,只需要一次查询就可 W,减少查询次数,W查询黑白名单+View为例,黑白名单IP列表为2~10,View的match, clients的IP列表为2~10,采用传统的结构查询的次数为10+10次,采用新的存储方式后,查 询的次数为11次。
[0029] 3)采用W上方案后,DNS查询过程中,策略W及业务的配置个数对查询时间的影响 大大降低。本发明在现有的IP存储结构上上进行了改进,操作简单,能够减少查询次数,提 高查询效率。
【附图说明】
[0030] 图1是实施例1中按照优先级原则进行业务合并的示意图。
[0031] 图2是实施例1中按照IP最长匹配原则进行业务合并的示意图。
[0032] 图3是实施例1中合并后的数组示意图。
[0033] 图4是实施例2中按照各IP数组内合并的示意图。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1