首页> 中国专利> 一种电话号码映射域名服务器的内存处理方法及装置

一种电话号码映射域名服务器的内存处理方法及装置

摘要

本发明公开了一种电话号码映射域名服务器的内存处理方法,包括:在内存中为每个域申请域名数据区和资源记录数据区,且所述每个域包含至少一域名;在内存中设置至少一哈希表和查找树,该哈希表的节点存储有域名非数字部分及其对应的查找树位置,该查找树的节点存储有域名数字部分及其对应的域名数据区位置;动态申请资源记录,将每个域名对应的首个资源记录地址放入域名数据区,并将每个域名对应的资源记录放入资源记录数据区。本发明还相应地提供一种电话号码映射域名服务器。本发明可实现在客户端请求域名查询时,快速地定位到该域名对应的资源记录,同时能满足短时间内加载百万条级的资源记录的要求。

著录项

  • 公开/公告号CN101102336A

    专利类型发明专利

  • 公开/公告日2008-01-09

    原文格式PDF

  • 申请/专利权人 中兴通讯股份有限公司;

    申请/专利号CN200710118921.8

  • 发明设计人 许可喜;

    申请日2007-06-14

  • 分类号H04L29/12(20060101);G06F17/30(20060101);

  • 代理机构11006 北京律诚同业知识产权代理有限公司;

  • 代理人梁挥;刘健

  • 地址 518057 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦

  • 入库时间 2023-12-17 19:32:51

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-08-04

    未缴年费专利权终止 IPC(主分类):H04L29/12 授权公告日:20090923 终止日期:20160614 申请日:20070614

    专利权的终止

  • 2009-09-23

    授权

    授权

  • 2008-02-27

    实质审查的生效

    实质审查的生效

  • 2008-01-09

    公开

    公开

说明书

技术领域

本发明涉及通信技术领域,尤其涉及一种电话号码映射(TelephoneNumber Mapping,ENUM)域名服务器(Domain Name System,DNS)的内存处理方法及处理装置。

背景技术

电话号码映射(Telephone Number Mapping,ENUM)是互联网工程任务组(Intemet Engineering Task Force,IETF)定义的一个协议-RFC 2916。其利用域名服务器(Domain Name System,DNS)机制,将E.164号码与基于DNS架构的业务资源即统一资源标识(Uniform Resource Identifier,URI)相结合。

国际标准通过在DNS系统中增加一个新域名e164.arpa存放各资源的URI,建立E.164号码与可访问资源的映射,为电话号码访问资源提供了一种实现途径。所述可访问资源可以包括电话(Phone)、电子邮件(Email)、传真(Fax)等。

ENUM的查询是基于客户端-服务器(Client-Server)方式进行,其Client端可以驻留在多媒体短信业务中心(Multimedia Messaging Service Center,MMSC)、无线应用协议网关(Wireless Application Protocol Gateway,WAPGW)、Email系统、增值应用等平台上。

随着ENUM-DNS的Client种类的不断增加,为了保证查询的效率和便于不同业务的数据管理,要求ENUM-DNS Client(包括WAP网关,彩信中心等)能够根据自己承担的业务,在查询的时候送往不同的ENUM-DNS域名。对于多媒体短信业务,使用子域名mms.e164.gprs;对于个人信息管理(PersonalInformation Manager,PIM)业务,使用pim.e164.gprs;对于WAPGW接口,使用wapgw.e164.gprs,因而要求ENUM-DNS服务器能够根据client端要求的不同业务,正确解析其业务。

与此同时,对电话号码映射域名服务器(ENUM-DNS)的性能要求也越来越高,其要求ENUM-DNS服务器在程序启动时,须在很短的时间内将上百万条的资源记录加载到内存,同时在程序启动后,要保证按域名查询的速度,即在ENUM-DNS服务器存储数据量百万级的情况下能够完成客户端每秒至少200次的请求。而现有的ENUM-DNS服务器技术尚不能满足在短时间内加载上百万条的资源记录同时,还能保证按域名查询的速度。

发明内容

针对上述的缺陷,本发明的目的在于提供一种电话号码映射域名服务器的内存处理方法及装置,可实现在客户端请求域名查询时,快速地定位到该域名对应的资源记录,同时能满足短时间内加载百万条级的资源记录的要求。

为了实现上述目的,本发明提供一种电话号码映射域名服务器的内存处理方法,包括:

申请数据区步骤,在内存中为每个域申请域名数据区和资源记录数据区,且所述每个域包含至少一域名;

设置哈希表和查找树步骤,在内存中设置至少一哈希表和查找树,该哈希表的节点存储有域名非数字部分及其对应的查找树位置,该查找树的节点存储有域名数字部分及其对应的域名数据区位置;

读入资源记录步骤,动态申请资源记录,将每个域名对应的首个资源记录地址放入域名数据区,并将每个域名对应的资源记录放入资源记录数据区。

根据本发明的内存处理方法,所述申请数据区步骤中,所述域名数据区是用于存储各域名的首个资源记录地址的指针数组,而所述资源记录数据区是用于存储各域名的资源记录的指针数组。

根据本发明的内存处理方法,所述两种指针数组的大小由系统的配置文件中配置的各域支持的最大域名个数和最大资源记录个数决定。

根据本发明的内存处理方法,所述每个域名包括若干条资源记录,且在所述存储资源记录的指针数组中,将同一域名的资源记录用指针串联。

根据本发明的内存处理方法,所述读入资源记录步骤包括:

在内存初始化时读入域的资源记录;或者

通过后台系统读入域的资源记录。

根据本发明的内存处理方法,所述读入资源记录的步骤中,根据系统的配置文件读取各域的序列号得到全域文件的名称,并将指定目录下该全域文件中的资源记录逐一读入内存。

根据本发明的内存处理方法,所述读入资源记录步骤还包括:

查询存储于数据库中各域的序列号;

查询存储于配置文件中各域的序列号;

将该数据库中的序列号与配置文件中的序列号进行比较,若相同,则不做任何操作;若不同,根据该数据库中的序列号,配置文件中的序列号和对应的域得到增量文件的名称,然后将指定目录下增量文件中的资源记录逐一读入内存。

根据本发明的内存处理方法,进一步包括通过后台系统修改资源记录的步骤,该后台系统包括维护台、维护管理模块以及内存管理模块,其修改资源记录的步骤如下:

维护台修改资源记录,把资源记录更新内容生成增量文件后存储到指定目录,并发送第一消息来通知维护管理模块;

维护管理模块根据第一消息解析出域名及其序列号,更新数据库的运行表,并发送第二消息来通知内存管理模块,再给维护台回应;

内存管理模块从第二消息中解析出增量文件的名称,从指定目录中读取增量文件,将增量文件中的资源记录逐一读入内存。

根据本发明的内存处理方法,进一步包括域名查询的步骤:

收到客户端的查询域名后,服务器解析出域名的数字部分和非数字部分;

以域名的非数字部分为键值查询哈希表,然后从相应哈希表的节点中找到对应的查找树位置;

以域名的数字部分为键值查询查找树,然后从相应查找树的节点中找到对应的域名数据区位置;

根据域名数据区存储的所述域名的首个资源记录地址,在资源记录数据区中找到所述域名的首个资源记录,再遍历资源记录的指针找到所述域名的全部资源记录。

本发明还提供一种电话号码映射域名服务器的内存处理装置,包括:

数据区申请模块,用于在内存中为每个域申请域名数据区和资源记录数据区,且所述每个域包含至少一域名;

哈希表和查找树设置模块,用于在内存中设置至少一哈希表和查找树,该哈希表的节点存储有域名非数字部分及其对应的查找树位置,该查找树的节点存储有域名数字部分及其对应的域名数据区位置;

资源记录读入模块,用于动态申请资源记录,将各域名对应的首个资源记录地址放入域名数据区,并将各域名对应的资源记录放入资源记录数据区。

本发明通过在电话号码映射域名服务器中动态申请内存,避免了程序初始化时申请大块内存,并能满足短时间内加载百万条级的资源记录的要求。并且本发明在内存中设置哈希表和查找树,通过哈希表来查询域名的非数字部分,再通过查找树来查询域名的数字部分,从而实现了客户端向其请求域名查询时快速地定位到此域名对应的资源记录。

附图说明

图1是本发明提供的ENUM-DNS服务器的内存处理装置的结构框架图;

图2是本发明一实施例中ENUM-DNS服务器的内存处理结构示意图;

图3是本发明提供的ENUM-DNS服务器的内存处理方法流程图;

图4是本发明ENUM-DNS服务器的优选的内存处理方法流程图;

图5是本发明通过后台系统修改资源记录的方法流程图;

图6是本发明资源记录查询的方法流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明的基本思想为:在ENUM-DNS服务器中动态申请内存,并且在该内存中设置哈希表和查找树,该哈希表的节点存储有域名非数字部分及其对应的查找树位置,该查找树的节点存储有域名数字部分及其对应的域名数据区位置。借此,实现域名查询时快速地定位到该域名对应的资源记录,同时能实现短时间内加载百万条级的资源记录。

图1是本发明提供的ENUM-DNS服务器100的内存处理装置100a,包括数据区申请模块101、哈希表和查找树设置模块102以及资源记录读入模块103。

其中,数据区申请模块101,用于在内存中为每个域(zone)申请至少两个数据区:域名数据区和资源记录数据区。其中,所述域名数据区是用于存储各域名(domain)的首个资源记录地址的指针数组,而所述资源记录数据区是用于存储各域名的资源记录的指针数组,这里所说的资源记录实际本身就是地址。该域名指针数组和资源记录指针数组的大小由系统的配置文件中配置的各zone支持的最大域名个数和最大资源记录个数决定,且在所述资源记录指针数组中,将同一域名的资源记录用指针串联起来。

在系统中可以根据需要配置多个zone,如6.8.e164.gprs,7.8.e164.gprs等。每个zone至少包括一个domain,而每个domain又可以支持多个资源记录。每个域所支持的最大域名个数,以及每个域支持的最大资源记录个数可以在系统的配置文件中根据需要进行配置。在所述配置文件中,一个zone对应一个序列号(serial),可以通过读取序列号获得全域文件,所述全域文件是DNS协议标准文件,命名规则为zone.[%10d]serial.axf),包含有所代表域的全部资源记录,该全域文件可存储在数据库中。

哈希表和查找树设置模块102,用于在内存中设置至少一哈希表和查找树,域名的非数字部分通过哈西表查找,且该哈希表的节点存储有域名非数字部分及其对应的查找树位置;域名的数字部分通过查找树查询,且该查找树的节点存储有域名数字部分及其对应的域名数据区位置。

ENUM-DNS的域名可以解析为非数字部分和数字部分,且域名的非数字部分一般代表一个域。例如域名2.2.2.2.1.2.3.4.8.3.1.6.8.mms.e164.gprs,其数字部分则为8613843212222,非数字部分为mms.e164.gprs。该数字部分存储在查找树的节点上,非数字部分则以字符串形式储存在哈希表的节点上,当客户端向ENUM-DNS服务器查询时,以域名的非数字部分为键值,采用字符串哈希算法查找域名的非数字部分,得到哈希表的节点,再通过查找哈希节点的查找树,找到此域名对应的资源记录。

资源记录读入模块103,用于动态申请资源记录,将各域名对应的首个资源记录地址放入域名数据区,并将各域名对应的资源记录放入资源记录数据区。

图2是本发明提供的第一实施例中ENUM-DNS服务器的内存结构示意图,包括查找树201、域名数据区202和资源记录数据区203。本实施例中,

ENUM-DNS客户端通过用户数据报协议(User Datagram Protocol,UDP)或传输控制协议(Transport Control Protocol,TCP)向ENUM-DNS服务器请求域名查询。服务器解析出该所查询域名的数字部分和非数字部分,域名的非数字部分通过哈希表(图中未示)查询找出对应的查找树201位置。本实施例中域名的数字部分包括号码409和404157849,这两个号码分别通过查找树201查询相应的域名数据区位置,该号码409与域名1关联,该域名1存储的是号码409所映射的首个资源记录(资源记录1)的地址。该号码404157849与域名n关联,该域名n存储的是号码404157849所映射的首个资源记录(资源记录M)的地址。而域名1与资源记录1相关联,域名n与资源记录M相关联。属于同一域名的资源记录按顺序用指针串联,其串联指针头地址为域名数据区202所存储的地址。本实施例中,资源记录M、资源记录N和资源记录P同属于域名n,其通过指针按顺序串联起来,资源记录M为该指针串的指针头,其在内存中的地址存放在域名数据区203的域名n中。以号码409为例,从查找树201查找节点4、0、9,然后找到域名数据区202的域名1,再由域名1查找到资源记录数据区203对应的资源记录1,最后遍历资源记录的next指针即可。本发明通过哈希表来查询域名的非数字部分,再通过查找树来查询域名的数字部分,进而提高了域名查询速度。

另外,所述查找树201与域名数据区202可以一对一的对应关系,也可以多对一的对应关系,只要保证资源记录更新后,通过查找树201可以查找到域名数据区202的数据即可。优选地,可以使用两个查找树201对应一个域名数据区202,以满足双缓冲需求和节省内存。

本发明ENUM-DNS服务器的内存处理方法如图3所示,包括

步骤S301,在内存中申请若干数据区,每个zone对应申请域名数据区和资源记录数据区,且每个zone包含至少一域名。所述域名数据区是用于存储各域名的首个资源记录地址的指针数组,而所述资源记录数据区是用于存储各域名的资源记录的指针数组。

步骤S302,在内存中设置至少一哈希表和查找树,该哈希表的节点存储有域名非数字部分及其对应的查找树位置,该查找树的节点存储有域名数字部分及其对应的域名数据区位置。

步骤S303,在内存中读入资源记录,动态申请资源记录,将每个域名对应的首个资源记录地址放入域名数据区,并将每个域名对应的资源记录放入资源记录数据区。

本步骤是根据系统的配置文件读取各域的序列号得到全域文件的名称,并将指定目录下该全域文件中的资源记录逐一读入内存。其可以在内存初始化时读入域的资源记录,也可以通过后台系统读入域的资源记录。

图4是本发明ENUM-DNS服务器的内存处理方法的一个具体实施例流程图,具体包括:

步骤S401,在配置文件中配置多个zone,如6.8.e164.gprs,7.8.e164.gprs,并且配置每个zone支持最大域名个数以及每个zone支持最大资源记录个数。配置文件中,一个zone对应一个序列号。

步骤S402,在内存中为每个zone申请域名数据区和资源记录数据区,且每个zone包含至少一域名。

所述域名数据区是用于存储各域名的首个资源记录地址的指针数组,而所述资源记录数据区是用于存储各域名的资源记录的指针数组。所述每个域名包括若干条资源记录,且在所述存储资源记录的指针数组中,将同一域名的资源记录用指针串联。

步骤S403,在内存中设置至少一哈希表和查找树,该哈希表的节点存储有域名非数字部分及其对应的查找树位置,该查找树的节点存储有域名数字部分及其对应的域名数据区位置。

步骤S404,根据系统的配置文件读取各域的序列号得到全域文件,并将该全域文件中的资源记录逐一读入内存,该全域文件可存于数据库中。

本步骤还进一步包括:

步骤S501,动态申请资源记录。

只在读入资源记录时动态申请内存,可以避免程序初始化时申请大块内存。所述动态申请的过程为,先申请两个空的指针数组:域名指针数组和资源记录指针数据,再将相应的资源记录动态输入指针数组。

步骤S502,将每个域名对应的首个资源记录地址放入域名数据区,并将每个域名对应的资源记录放入资源记录数据区;

步骤S503,将哈希表、查找树、域名数据区和资源记录数据区四者彼此关联。

步骤S405,查询存储于数据库中各域的序列号。

步骤S406,查询存储于配置文件中各域的序列号。

步骤S407,将该数据库中的序列号与配置文件中的序列号进行比较,若相同,则不做任何操作;若不同,进行步骤S408。

步骤S408,根据该数据库中的序列号,配置文件中的序列号和对应的域得到增量文件的名称,然后将指定目录下增量文件中的资源记录逐一读入内存。

通过比较数据库中的序列号与配置文件中的序列号,在序列号不一致情况下,则生成增量文件,然后将增量文件中的资源记录逐一读入内存,可以防止程序突然异常停止后无法加载运维新加的数据至内存。

本发明还可以通过后台系统修改资源记录,该后台系统包括维护台、维护管理模块以及内存管理模块,其修改资源记录的步骤如下:

维护台修改资源记录,把资源记录更新内容生成增量文件后存储到指定目录,并发送第一消息来通知维护管理模块;

维护管理模块根据第一消息解析出域名及其序列号,更新数据库的运行表,并发送第二消息来通知内存管理模块,再给维护台回应;

内存管理模块从第二消息中解析出增量文件的名称,从指定目录中读取增量文件,将增量文件中的资源记录逐一读入内存。

图5是本发明通过后台系统修改资源记录的一个实施例流程图,其与ENUM-DNS服务器的线程结合,该ENUM-DNS服务器的主要线程为:本地查询线程,内存管理线程,维护管理线程,迭代查询线程,UDP(TCP)通讯线程等。具体过程如下:

步骤S610,维护台60通过本地查询线程,向数据库61查询每个zone在数据库61中的序列号,并比较配置文件中域的序列号与数据库61中域的序列号,若配置文件的序列号小于数据库61中的序列号,进行步骤S620,若域的序列号与数据库中的序列号一致,结束本流程,不做任何操作。

通常情况下,可以直接查询数据库61的运行表查询数据,如序列号等。该数据库61与服务器连接,用于数据的维护管理,同时作为内存数据的来源和备份。

步骤S620,维护台60修改资源记录,将资源纪录更新内容生成相应的增量文件63后存储到指定目录。

步骤S630,通过维护管理线程,维护台60发送第一消息,通知维护管理模块62更新数据库61的运行表。

步骤S640,维护管理模块62通过维护管理线程,根据第一消息解析出域名及其序列表,读取更新内容。

步骤S650,维护管理模块62通过维护管理线程更新数据库61的运行表。

步骤S660,维护管理模块62通过维护管理线程响应维护台60的通知。

步骤S670,维护管理模块62通过维护管理线程发送第二消息通知内存管理模块64。

步骤S680,内存管理模块64从第二消息中解析出增量文件的名称,从指定目录中获取增量文件63,将增量文件63中的资源记录逐一读入内存。

通过系统后台来修改资源记录,提高了资源记录的可操作性。本实施例中,数据库61只与维护管理模块62交互操作,而内存管理模块62只负责根据增量文件63更新内存,大大提高了内存更新处理效率以及提高ENUM-DNS服务器的可操作性。

图6示出了本发明应用于域名查询的具体过程,包括:

步骤S701,ENUM-DNS客户端向ENUM-DNS服务器发送域名查询请求消息。

步骤S702,ENUM-DNS服务器将域名解析为数字部分和非数字部分。

步骤S703,以所述域名的非数字部分为键值查询哈希表,从相应的哈希表的节点找到对应的查找树位置。

哈希表的节点存储有:字符串形式的域名非数字部分及其对应的查找树位置。一般每个域名非数字部分对应一个域,例如mms.e164.gprs对应多媒体短信业务域。查找树的节点存储有:域名数字部分及其对应的首个资源记录地址。

步骤S704,以域名的数字部分为键值查询查找树,从相应查找树的节点中找到对应的域名数据区位置。

步骤S705,根据域名数据区存储的所述域名的首个资源记录地址,在资源记录数据区中找到所述域名的首个资源记录,遍历资源记录的next指针找到所述域名的全部资源记录。

步骤S706,ENUM-DNS服务器响应客户端的域名查询请求,返回资源记录。由于分散的资源记录是按照哈希表结构和查找树结构相并用的方式组织起来,大大提高了域名的查询速度。

综上所述,本发明通过在电话号码映射域名服务器中动态申请内存,避免了程序初始化时申请大块内存,并能满足短时间内加载百万条级的资源记录的要求。并且本发明在内存中设置哈希表和查找树,通过哈希表来查询域名的非数字部分,再通过查找树来查询域名的数字部分,从而实现了客户端向其请求域名查询时快速的定位到此域名对应的资源记录。

当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号