CN110049133A - 一种dns区文件全量下发的方法和装置 - Google Patents
一种dns区文件全量下发的方法和装置 Download PDFInfo
- Publication number
- CN110049133A CN110049133A CN201910324544.6A CN201910324544A CN110049133A CN 110049133 A CN110049133 A CN 110049133A CN 201910324544 A CN201910324544 A CN 201910324544A CN 110049133 A CN110049133 A CN 110049133A
- Authority
- CN
- China
- Prior art keywords
- dns
- message
- data
- zone file
- full dose
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4505—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
- H04L61/4511—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种DNS区文件全量下发的方法和装置,该方法包括:基于目标全量下发请求,加载基于文本格式DNS区文件预先编码为网络数据格式的目标DNS区文件的索引区域至内存获得DNS报文索引列表;基于目标全量下发请求遍历DNS报文索引列表,按照顺序依次采用零拷贝技术下发目标DNS区文件的数据区域中各个DNS报文至网络设备。可见,将文本格式的区文件预先编码为可直接全量下发的网络数据格式,无需重复解析和编码提升DNS数据处理性能;结合零拷贝技术下发目标DNS区文件,消除DNS报文的数据拷贝,无需切换内核空间与用户空间,减小DNS的运行成本,适用于高并发全量下发场景。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种DNS区文件全量下发的方法和装置。
背景技术
随着计算机科学技术的快速发展,互联网业务逐渐渗透至社会各个领域,在各个领域中的应用越来越广泛。全球互联网域名数量已十分庞大并与日俱增,域名***(英文:Domain Name System,缩写:DNS)作为全球互联网域名的管理和解析***,其数据处理性能是互联网基础建设领域所关心的焦点。
由于DNS是典型的分布式***,一般采用区传送方式完成各级节点间数据的同步,因此区传送性能决定DNS的数据同步性能。其中,区传送方式在下行方向分为增量下发和全量下发两种方式,全量下发相较于增量下发数据传输量十分巨大,全量下发消耗大量***资源,则提高全量下发性能将对提升DNS整体区传送性能具有重要意义。
现有技术中,区文件通常以文本格式存储于磁盘中,区文件全量下发发过程如下:首先利用传统DNS解析软件将区文件的全部数据加载并解析在内存中,然后将内存中的区数据编码并组包为DNS网络数据报文,最后全量下发DNS网络数据报文。
发明人经过研究发现,在高并发全量下发场景中,需要进行大量重复的解析和编码操作,会消耗大量的CPU资源,造成DNS数据处理性能急剧下降;而且下发DNS网络数据报文过程中涉及内核空间与用户空间的环境切换和数据拷贝,以及内核空间与套接字缓冲区的数据拷贝,同样消耗大量的CPU资源,使得DNS的运行成本加大。因此,高并发全量下发场景大量CPU资源的消耗既降低DNS的数据处理性能又增加DNS的运行成本。
发明内容
本申请所要解决的技术问题是,提供一种DNS区文件全量下发的方法和装置,无需重复解析和编码,降低CPU资源消耗,从而提升DNS数据处理性能;无需切换内核空间与用户空间以及数据拷贝,节省CPU资源的消耗,从而减小DNS的运行成本,适用于高并发全量下发场景。
第一方面,本申请实施例提供了一种DNS区文件全量下发的方法,应用于DNS服务器,该方法包括:
基于目标全量下发请求,加载目标DNS区文件的索引区域至内存获得DNS报文索引列表;所述目标DNS区文件是基于文本格式DNS区文件按照DNS报文格式预先生成包括所述索引区域和数据区域的网络数据格式DNS区文件,所述DNS报文索引列表包括所述数据区域中各个DNS报文的起始偏移量和报文大小;
基于所述目标全量下发请求遍历所述DNS报文索引列表中各个所述DNS报文的起始偏移量和报文大小,按照顺序依次利用零拷贝技术下发所述数据区域中各个DNS报文至网络设备。
可选的,所述目标DNS区文件生成包括:
加载并解析文本格式DNS区文件至内存获得内存区数据,所述内存区数据以资源记录为数据单元;
基于文本格式DNS区文件相关信息和所述内存区数据,按照DNS报文格式顺序生成多个所述DNS报文作为所述数据区域;每个所述DNS报文的报文大小不超过预设报文大小;
基于所述数据区域中各个所述DNS报文的起始偏移量和报文大小生成DNS报文索引列表作为所述索引区域;
根据所述数据区域和所述索引区域生成所述目标DNS区文件。
可选的,所述基于文本格式DNS区文件相关信息和所述内存区数据,按照DNS报文格式顺序生成多个所述DNS报文作为所述数据区域,包括:
将所述内存区数据编码为网络数据格式内存区数据;
基于所述文本格式DNS区文件相关信息和所述网络数据格式内存区数据,按照所述DNS报文格式顺序生成多个所述DNS报文作为所述数据区域。
可选的,所述数据区域中各个所述DNS报文不包括报文大小字段、ID字段和标志字段。
可选的,所述下发所述数据区域中每个所述DNS报文至所述网络设备,包括:
根据所述目标全量下发请求和所述DNS报文的报文大小,生成并下发对应所述DNS报文的报文大小字段数据、ID字段数据和标志字段数据;
利用零拷贝技术下发所述DNS报文至所述网络设备。
可选的,所述根据所述目标全量下发请求和所述DNS报文的报文大小,生成并下发对应所述DNS报文的报文大小字段数据、ID字段数据和标志字段数据,包括:
根据所述目标全量下发请求生成对应所述DNS报文的所述ID字段数据和所述标志字段数据;根据所述DNS报文的报文大小生成对应所述DNS报文的报文大小字段数据;
单独下发对应所述DNS报文的所述报文大小字段数据、所述ID字段数据和所述标志字段数据。
可选的,若所述内存的内核空间不存在所述DNS报文,所述利用零拷贝技术下发所述DNS报文至所述网络设备,包括:
利用零拷贝技术将所述DNS报文从磁盘直接搬移至所述内核空间的页高速缓存;
利用零拷贝技术将所述DNS报文从所述页高速缓存直接搬移至所述网络设备;
若所述内存的内核空间存在所述DNS报文,所述利用零拷贝技术下发所述DNS报文至所述网络设备,包括:
利用零拷贝技术将所述DNS报文从所述内核空间的页高速缓存直接搬移至所述网络设备。
可选的,所述利用零拷贝技术将所述DNS报文从磁盘直接搬移至内核空间的页高速缓存,具体为:
基于所述DNS报文的起始偏移量和报文大小通过DMA将所述DNS报文从所述磁盘直接搬移至所述内核空间的页高速缓存。
可选的,所述利用零拷贝技术将所述DNS报文从所述内核空间的页高速缓存直接搬移至所述网络设备,包括:
读取所述内核空间的套接字缓冲区中所述页高速缓存的描述符和数据长度,所述页高速缓存的描述符和数据长度是预先存储在所述套接字缓冲区的;
根据所述页高速缓存的描述符和数据长度通过DMA将所述DNS报文从所述页高速缓存直接搬移至所述网络设备。
第二方面,本申请实施例提供了一种DNS区文件全量下发的装置,应用于DNS服务器,该装置包括:
获得单元,用于基于目标全量下发请求,加载目标DNS区文件的索引区域至内存获得DNS报文索引列表;所述目标DNS区文件是基于文本格式DNS区文件按照DNS报文格式预先生成包括所述索引区域和数据区域的网络数据格式DNS区文件,所述DNS报文索引列表包括所述数据区域中各个DNS报文的起始偏移量和报文大小;
下发单元,用于基于所述目标全量下发请求遍历所述DNS报文索引列表中各个所述DNS报文的起始偏移量和报文大小,按照顺序依次利用零拷贝技术下发所述数据区域中各个DNS报文至网络设备。
第三方面,本申请实施例提供了一种DNS服务器,该DNS服务器包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行上述第一方面任一项所述的DNS区文件全量下发的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质用于存储程序代码,所述程序代码用于执行上述第一方面任一项所述的DNS区文件全量下发的方法。
与现有技术相比,本申请至少具有以下优点:
采用本申请实施例的技术方案,基于目标全量下发请求,加载基于文本格式DNS区文件预先编码为网络数据格式的目标DNS区文件的索引区域至内存获得DNS报文索引列表;基于目标全量下发请求遍历DNS报文索引列表中各个DNS报文的起始偏移量和报文大小,按照顺序依次采用零拷贝技术下发目标DNS区文件的数据区域中各个DNS报文至网络设备。由此可见,将文本格式的区文件预先编码为可直接全量下发的网络数据格式,无需重复解析和编码,降低CPU资源消耗,从而提升DNS数据处理性能;结合零拷贝技术下发目标DNS区文件,消除DNS报文的数据拷贝,且无需切换内核空间与用户空间,节省CPU资源的消耗,从而减小DNS的运行成本,适用于高并发全量下发场景。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请实施例中一种应用场景所涉及的***框架示意图;
图2为本申请实施例提供的一种DNS区文件全量下发的方法的流程示意图;
图3为本申请实施例提供的DNS报文格式的示意图;
图4为本申请实施例提供的目标DNS区文件的示意图;
图5为本申请实施例提供的磁盘至网络设备零拷贝技术操作示意图;
图6为本申请实施例提供的一种DNS区文件全量下发的装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
DNS作为典型的分布式***,完成其各级节点间数据的同步采用区传送方式,区传送性能决定DNS的数据同步性能。其中,区传送方式在下行方向分为增量下发和全量下发两种方式,增量下发是指通过特定方法将区文件在一段时间内被更新数据下行传输至名级节点;全量下发是指将区文件的全部数据下行传输至名级节点。全量下发相较于增量下发数据传输量十分巨大,消耗大量***资源,降低DNS的数据同步性能,同时影响其他DNS业务,因此,对于DNS而言提高全量下发性能具有重要意义。
现阶段,区文件通常以文本格式存储于磁盘中,全量下发该区文件需要利用传统DNS解析软件将区文件的全部数据加载并解析在内存中,将内存中的区数据编码并组包为DNS网络数据报文进行下发。但是,发明人经过研究发现,在高并发全量下发场景中,需要进行大量重复的解析和编码操作,会消耗大量的CPU资源,造成DNS数据处理性能急剧下降;而且下发涉及内核空间与用户空间的环境切换和数据拷贝,以及内核空间与套接字缓冲区的数据拷贝,同样消耗大量的CPU资源,使得DNS的运行成本加大。因此,高并发全量下发场景大量CPU资源的消耗既降低DNS的数据处理性能又增加DNS的运行成本。
为了解决这一问题,在本申请实施例中,基于目标全量下发请求,加载基于文本格式DNS区文件预先编码为网络数据格式的目标DNS区文件的索引区域至内存获得DNS报文索引列表;基于目标全量下发请求遍历DNS报文索引列表中各个DNS报文的起始偏移量和报文大小,按照顺序依次采用零拷贝技术下发目标DNS区文件的数据区域中各个DNS报文至网络设备。由此可见,将文本格式的区文件预先编码为可直接全量下发的网络数据格式,无需重复解析和编码,降低CPU资源消耗,从而提升DNS数据处理性能;结合零拷贝技术下发目标DNS区文件,消除DNS报文的数据拷贝,且无需切换内核空间与用户空间,节省CPU资源的消耗,从而减小DNS的运行成本,适用于高并发全量下发场景。
举例来说,本申请实施例的场景之一,可以是应用到如图1所示的场景中,该场景包括DNS服务器101和网络设备102,当DNS服务器101需要对其他各级DNS服务器进行区文件全量下发时,DNS服务器101利用本申请实施例的方式将区文件搬移至网络设备102,由网络设备102发送给其他各级DNS服务器。
可以理解的是,在上述应用场景中,虽然将本申请实施方式的动作描述由DNS服务器101执行,但是,本申请在执行主体方面不受限制,只要执行了本申请实施方式所公开的动作即可。
可以理解的是,上述场景仅是本申请实施例提供的一个场景示例,本申请实施例并不限于此场景。
下面结合附图,通过实施例来详细说明本申请实施例中DNS区文件全量下发的方法和装置的具体实现方式。
示例性方法
参见图2,示出了本申请实施例中一种DNS区文件全量下发的方法的流程示意图,应用于DNS服务器。在本实施例中,所述方法例如可以包括以下步骤:
步骤201:基于目标全量下发请求,加载目标DNS区文件的索引区域至内存获得DNS报文索引列表;所述目标DNS区文件是基于文本格式DNS区文件按照DNS报文格式预先生成包括所述索引区域和数据区域的网络数据格式DNS区文件,所述DNS报文索引列表包括所述数据区域中各个DNS报文的起始偏移量和报文大小。
可以理解的是,由于现阶段DNS中的DNS区文件是以文本格式存储在磁盘中的,在全量下发该DNS区文件时首先需要利用传统DNS解析软件将该DNS区文件加载并解析至内存,然后编码为符合全量下发数据格式要求的DNS网络数据报文以便进行全量下发,导致高并发全量下发场景产生大量重复的解析和编码操作,消耗大量的CPU资源,造成DNS数据处理性能急剧下降。因此,为了避免大量重复的解析和编码操作,可以将文本格式DNS区文件预先生成可直接全量下发的网络数据格式DNS区文件作为目标DNS区文件。
具体地,由于将文本格式DNS区文件转换为网络数据格式DNS区文件需要在内存中执行,则首先需要将文本格式DNS区文件加载并解析至内存得到内存区数据,其中,内存区数据以资源记录为数据单元。然后,考虑DNS下发数据采用如图3所示的DNS报文格式,需要将加息得到的内存区数据中所有资源记录以预设报文大小进行划分,得到多个DNS报文的应答部分数据;并基于目标区文件相关信息对应得到多个DNS报文的查询部分数据和COUNT字段数据,组装得到多个DNS报文按顺序作为目标DNS区文件的数据区域。其次,确定上述每个DNS报文在数据区域中起始位置的绝对偏移量和实际报文大小,对应每个DNS报文生成DNS报文索引按顺序组成DNS报文索引列表作为目标DNS区文件的索引区域。最后,索引区域结合数据区域得到如图4所示的目标DNS区文件。因此,在本申请实施例的一些实施方式中,所述目标DNS区文件生成步骤例如包括以下步骤:
步骤A:加载并解析文本格式DNS区文件至内存获得内存区数据,所述内存区数据以资源记录为数据单元。
可以理解的是,由于文本格式DNS区文件中数据是以资源记录为数据单元进行存储的,则按照DNS协议加载并解析文本格式DNS区文件至内存得到的内存区数据同样是以资源记录为数据单元。
步骤B:基于文本格式DNS区文件相关信息和所述内存区数据,按照DNS报文格式顺序生成多个所述DNS报文作为所述数据区域;每个所述DNS报文的报文大小不超过预设报文大小。
其中,需要说明的是,对内存区数据以预设报文大小进行划分之前,首先需要将内存区数据编码为符合可直接全量下发的网络数据格式内存区数据,以便后续进行全量下发,网络数据格式内存区数据同样是以资源记录为数据单元。因此,在本申请实施例的一些实施方式中,所述步骤B例如可以包括以下步骤:
步骤B1:将所述内存区数据编码为网络数据格式内存区数据。
步骤B2:基于所述文本格式DNS区文件相关信息和所述网络数据格式内存区数据,按照所述DNS报文格式顺序生成多个所述DNS报文作为所述数据区域。
还需要说明的是,由于DNS报文格式的报文大小字段数据是由DNS报文的实际报文大小决定的,DNS报文格式的ID字段和标志字段数据是由全量下发请求决定的,则在预先生成DNS报文时无法明确其对应的报文大小字段、ID字段和标志字段的数据,应当将DNS报文格式中除报文大小字段、ID字段和标志字段之外的各个字段数据作为数据区域中DNS报文。因此,在本申请实施例的一些实施方式中,所述数据区域中各个所述DNS报文不包括报文大小字段、ID字段和标志字段。
步骤C:基于所述数据区域中各个所述DNS报文的起始偏移量和报文大小生成DNS报文索引列表作为所述索引区域。
步骤D:根据所述数据区域和所述索引区域生成所述目标DNS区文件。
步骤202:基于所述目标全量下发请求遍历所述DNS报文索引列表中各个所述DNS报文的起始偏移量和报文大小,按照顺序依次利用零拷贝技术下发所述数据区域中各个DNS报文至网络设备。
可以理解的是,现阶段DNS区文件全量下发过程中必然涉及到内核空间与用户空间的环境切换和数据拷贝以及内核空间与套接字缓冲区的数据拷贝,环境切换和数据拷贝操作同样消耗大量的CPU资源,加大DNS的运行成本。因此,为了避免环境切换和数据拷贝操作对CPU资源的消耗,可以采用零拷贝技术下发目标DNS区文件的数据区域中各个DNS报文,其中,各个DNS报文是基于目标全量下发请求遍历目标DNS区文件的索引区域中DNS报文索引列表依次确定以便进行全量下发。
需要说明的是,由于数据区域中各个DNS报文不包括报文大小字段、ID字段和标志字段,而全量下发过程中需要下发各个DNS报文对应的报文大小字段、ID字段和标志字段,则针对每个DNS报文实际下发过程中,首先应该根据目标全量下发请求和DNS报文的报文大小确定其对应的报文大小字段、ID字段和标志字段的数据并下发,然后再利用零拷贝技术下发改DNS报文。因此,在本申请实施例的一些实施方式中,针对步骤202,所述下发所述数据区域中每个所述DNS报文至所述网络设备的步骤例如可以包括以下步骤:
步骤E:根据所述目标全量下发请求和所述DNS报文的报文大小,生成并下发对应所述DNS报文的报文大小字段数据、ID字段数据和标志字段数据。
其中,需要说明的是,目标全量下发请求可以决定对应DNS报文的报文大小字段和ID字段的数据,DNS报文索引列表中DNS报文的报文大小决定对应DNS报文的报文大小字段数据,则根据目标全量下发请求可生成对应DNS报文的报文大小字段和ID字段的数据,根据DNS报文的报文大小可生成对应DNS报文的报文大小字段数据,在对应DNS报文的所述报文大小字段数据、所述ID字段数据和所述标志字段数据生成后需要单独下发,以便后续下发对应的DNS报文。因此,在本申请实施例的一些实施方式中,所述步骤E例如可以包括以下步骤:
步骤E1:根据所述目标全量下发请求生成对应所述DNS报文的所述ID字段数据和所述标志字段数据;根据所述DNS报文的报文大小生成对应所述DNS报文的报文大小字段数据。
步骤E2:单独下发对应所述DNS报文的所述报文大小字段数据、所述ID字段数据和所述标志字段数据。
步骤F:利用零拷贝技术下发所述DNS报文至所述网络设备。
可以理解的是,在步骤E下发对应DNS报文的报文大小字段数据、ID字段数据和标志字段数据之后,该DNS报文有可能不存在内存的内核空间中;也可能存在内存的内核空间中,例如,在此全量下发请求之前曾下发该DNS报文。当内存的内核空间不存在该DNS报文时,DNS服务器需要利用零拷贝技术将DNS报文先从磁盘直接搬移至内核空间的页高速缓存再直接搬移至网络设备。当内存的内核空间存在该DNS报文时,DNS服务器只需要利用零拷贝技术将DNS报文从内核空间的页高速缓存直接搬移至网络设备。
因此,在本申请实施例的一些实施方式中,若所述内存的内核空间不存在所述DNS报文,所述步骤F例如可以包括步骤F1-步骤F2,若所述内存的内核空间存在所述DNS报文,所述步骤F例如具体可以为步骤F2,步骤F1和步骤F2如下:
步骤F1:利用零拷贝技术将所述DNS报文从磁盘直接搬移至所述内核空间的页高速缓存。
步骤F2:利用零拷贝技术将所述DNS报文从所述页高速缓存直接搬移至所述网络设备。
其中,需要说明的是,将存储于磁盘的目标DNS区文件的数据区域中的DNS报文直接搬移至内核空间的页高速缓存采用的是DMA技术,DNS报文是基于DNS报文索引列表对应该DNS报文的起始偏移量和报文大小确定的。因此,在本申请实施例的一些实施方式中,所述步骤F1例如具体可以为:基于所述DNS报文的起始偏移量和报文大小通过DMA将所述DNS报文从所述磁盘直接搬移至所述内核空间的页高速缓存。
其中,需要说明的是,将缓存在内核空间的页高速缓存中DNS报文直接搬移至网络设备同样采用的是DMA技术,此时DMA的数据源指向内核的页高速缓存,DNS报文是基于预先存储在内核的套接字缓冲区中的页高速缓存的描述符和数据长度确定的。因此,在本申请实施例的一些实施方式中,所述步骤F2,例如可以包括以下步骤:
步骤F21:读取所述内核空间的套接字缓冲区中所述页高速缓存的描述符和数据长度,所述页高速缓存的描述符和数据长度是预先存储在所述套接字缓冲区的。
步骤F22:根据所述页高速缓存的描述符和数据长度通过DMA将所述DNS报文从所述页高速缓存直接搬移至所述网络设备。
例如,如图5所示的磁盘至网络设备零拷贝技术操作示意图,将存储于磁盘的目标DNS区文件的数据区域中的DNS报文直接搬移至内核空间的页高速缓存,再直接搬移至网络设备均采用的是DMA技术,内核空间的套接字缓冲区中预先存储页高速缓存的描述符和数据长度。
通过本实施例提供的各种实施方式,基于目标全量下发请求,加载基于文本格式DNS区文件预先编码为网络数据格式的目标DNS区文件的索引区域至内存获得DNS报文索引列表;基于目标全量下发请求遍历DNS报文索引列表中各个DNS报文的起始偏移量和报文大小,按照顺序依次采用零拷贝技术下发目标DNS区文件的数据区域中各个DNS报文至网络设备。由此可见,将文本格式的区文件预先编码为可直接全量下发的网络数据格式,无需重复解析和编码,降低CPU资源消耗,从而提升DNS数据处理性能;结合零拷贝技术下发目标DNS区文件,消除DNS报文的数据拷贝,且无需切换内核空间与用户空间,节省CPU资源的消耗,从而减小DNS的运行成本,适用于高并发全量下发场景。
示例性装置
参见图6,示出了本申请实施例中一种DNS区文件全量下发的装置的结构示意图。在本实施例中,所述装置例如具体可以包括:
获得单元601,用于基于目标全量下发请求,加载目标DNS区文件的索引区域至内存获得DNS报文索引列表;所述目标DNS区文件是基于文本格式DNS区文件按照DNS报文格式预先生成包括所述索引区域和数据区域的网络数据格式DNS区文件,所述DNS报文索引列表包括所述数据区域中各个DNS报文的起始偏移量和报文大小;
下发单元602,用于基于所述目标全量下发请求遍历所述DNS报文索引列表中各个所述DNS报文的起始偏移量和报文大小,按照顺序依次利用零拷贝技术下发所述数据区域中各个DNS报文至网络设备。
在本申请实施例一种可选的实施方式中,所述目标DNS区文件的生成单元包括:
加载获得子单元,用于加载并解析文本格式DNS区文件至内存获得内存区数据,所述内存区数据以资源记录为数据单元;
第一生成子单元,用于基于文本格式DNS区文件相关信息和所述内存区数据,按照DNS报文格式顺序生成多个所述DNS报文作为所述数据区域;每个所述DNS报文的报文大小不超过预设报文大小;
第二生成子单元,用于基于所述数据区域中各个所述DNS报文的起始偏移量和报文大小生成DNS报文索引列表作为所述索引区域;
第三生成子单元,用于根据所述数据区域和所述索引区域生成所述目标DNS区文件。
在本申请实施例一种可选的实施方式中,所述第一生成子单元包括:
编码模块,用于将所述内存区数据编码为网络数据格式内存区数据;
第一生成模块,用于基于所述文本格式DNS区文件相关信息和所述网络数据格式内存区数据,按照所述DNS报文格式顺序生成多个所述DNS报文作为所述数据区域。
在本申请实施例一种可选的实施方式中,所述数据区域中各个所述DNS报文不包括报文大小字段、ID字段和标志字段。
在本申请实施例一种可选的实施方式中,所述下发单元602包括:
第四生成子单元,用于根据所述目标全量下发请求和所述DNS报文的报文大小,生成并下发对应所述DNS报文的报文大小字段数据、ID字段数据和标志字段数据;
下发子单元,用于利用零拷贝技术下发所述DNS报文至所述网络设备。
在本申请实施例一种可选的实施方式中,所述第四生成子单元包括:
第二生成模块,用于根据所述目标全量下发请求生成对应所述DNS报文的所述ID字段数据和所述标志字段数据;根据所述DNS报文的报文大小生成对应所述DNS报文的报文大小字段数据;
下发模块,用于单独下发对应所述DNS报文的所述报文大小字段数据、所述ID字段数据和所述标志字段数据。
在本申请实施例一种可选的实施方式中,若所述内存的内核空间不存在所述DNS报文,所述下发子单元包括:
第一搬移模块,用于利用零拷贝技术将所述DNS报文从磁盘直接搬移至所述内核空间的页高速缓存;
第二搬移模块,用于利用零拷贝技术将所述DNS报文从所述页高速缓存直接搬移至所述网络设备;
若所述内存的内核空间存在所述DNS报文,所述下发子单元包括:
第三搬移模块,用于利用零拷贝技术将所述DNS报文从所述内核空间的页高速缓存直接搬移至所述网络设备。
在本申请实施例一种可选的实施方式中,所述第一搬移模块具体用于:
基于所述DNS报文的起始偏移量和报文大小通过DMA将所述DNS报文从所述磁盘直接搬移至所述内核空间的页高速缓存。
在本申请实施例一种可选的实施方式中,所述第二搬移模块包括:
读取子模块,用于读取所述内核空间的套接字缓冲区中所述页高速缓存的描述符和数据长度,所述页高速缓存的描述符和数据长度是预先存储在所述套接字缓冲区的;
搬移子模块,用于根据所述页高速缓存的描述符和数据长度通过DMA将所述DNS报文从所述页高速缓存直接搬移至所述网络设备。
通过本实施例提供的各种实施方式,基于目标全量下发请求,加载基于文本格式DNS区文件预先编码为网络数据格式的目标DNS区文件的索引区域至内存获得DNS报文索引列表;基于目标全量下发请求遍历DNS报文索引列表中各个DNS报文的起始偏移量和报文大小,按照顺序依次采用零拷贝技术下发目标DNS区文件的数据区域中各个DNS报文至网络设备。由此可见,将文本格式的区文件预先编码为可直接全量下发的网络数据格式,无需重复解析和编码,降低CPU资源消耗,从而提升DNS数据处理性能;结合零拷贝技术下发目标DNS区文件,消除DNS报文的数据拷贝,且无需切换内核空间与用户空间,节省CPU资源的消耗,从而减小DNS的运行成本,适用于高并发全量下发场景。
此外,本申请实施例还提供了一种DNS服务器,所述DNS服务器包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行上述方法实施例任一种实施方式所述的DNS区文件全量下发的方法。
本申请实施例还提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行上述方法实施例任一种实施方式所述的DNS区文件全量下发的方法。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述,仅是本申请的较佳实施例而已,并非对本申请作任何形式上的限制。虽然本申请已以较佳实施例揭露如上,然而并非用以限定本申请。任何熟悉本领域的技术人员,在不脱离本申请技术方案范围情况下,都可利用上述揭示的方法和技术内容对本申请技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本申请技术方案的内容,依据本申请的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本申请技术方案保护的范围内。
Claims (12)
1.一种DNS区文件全量下发的方法,其特征在于,应用于DNS服务器,所述方法包括:
基于目标全量下发请求,加载目标DNS区文件的索引区域至内存获得DNS报文索引列表;所述目标DNS区文件是基于文本格式DNS区文件按照DNS报文格式预先生成包括所述索引区域和数据区域的网络数据格式DNS区文件,所述DNS报文索引列表包括所述数据区域中各个DNS报文的起始偏移量和报文大小;
基于所述目标全量下发请求遍历所述DNS报文索引列表中各个所述DNS报文的起始偏移量和报文大小,按照顺序依次利用零拷贝技术下发所述数据区域中各个DNS报文至网络设备。
2.根据权利要求1所述的方法,其特征在于,所述目标DNS区文件生成包括:
加载并解析文本格式DNS区文件至内存获得内存区数据,所述内存区数据以资源记录为数据单元;
基于文本格式DNS区文件相关信息和所述内存区数据,按照DNS报文格式顺序生成多个所述DNS报文作为所述数据区域;每个所述DNS报文的报文大小不超过预设报文大小;
基于所述数据区域中各个所述DNS报文的起始偏移量和报文大小生成DNS报文索引列表作为所述索引区域;
根据所述数据区域和所述索引区域生成所述目标DNS区文件。
3.根据权利要求2所述的方法,其特征在于,所述基于文本格式DNS区文件相关信息和所述内存区数据,按照DNS报文格式顺序生成多个所述DNS报文作为所述数据区域,包括:
将所述内存区数据编码为网络数据格式内存区数据;
基于所述文本格式DNS区文件相关信息和所述网络数据格式内存区数据,按照所述DNS报文格式顺序生成多个所述DNS报文作为所述数据区域。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述数据区域中各个所述DNS报文不包括报文大小字段、ID字段和标志字段。
5.根据权利要求1所述的方法,其特征在于,所述下发所述数据区域中每个所述DNS报文至所述网络设备,包括:
根据所述目标全量下发请求和所述DNS报文的报文大小,生成并下发对应所述DNS报文的报文大小字段数据、ID字段数据和标志字段数据;
利用零拷贝技术下发所述DNS报文至所述网络设备。
6.根据权利要求5所述的方法,其特征在于,所述根据所述目标全量下发请求和所述DNS报文的报文大小,生成并下发对应所述DNS报文的报文大小字段数据、ID字段数据和标志字段数据,包括:
根据所述目标全量下发请求生成对应所述DNS报文的所述ID字段数据和所述标志字段数据;根据所述DNS报文的报文大小生成对应所述DNS报文的报文大小字段数据;
单独下发对应所述DNS报文的所述报文大小字段数据、所述ID字段数据和所述标志字段数据。
7.根据权利要求5所述的方法,其特征在于,若所述内存的内核空间不存在所述DNS报文,所述利用零拷贝技术下发所述DNS报文至所述网络设备,包括:
利用零拷贝技术将所述DNS报文从磁盘直接搬移至所述内核空间的页高速缓存;
利用零拷贝技术将所述DNS报文从所述页高速缓存直接搬移至所述网络设备;
若所述内存的内核空间存在所述DNS报文,所述利用零拷贝技术下发所述DNS报文至所述网络设备,包括:
利用零拷贝技术将所述DNS报文从所述内核空间的页高速缓存直接搬移至所述网络设备。
8.根据权利要求7所述的方法,其特征在于,所述利用零拷贝技术将所述DNS报文从磁盘直接搬移至内核空间的页高速缓存,具体为:
基于所述DNS报文的起始偏移量和报文大小通过DMA将所述DNS报文从所述磁盘直接搬移至所述内核空间的页高速缓存。
9.根据权利要求7所述的方法,其特征在于,所述利用零拷贝技术将所述DNS报文从所述内核空间的页高速缓存直接搬移至所述网络设备,包括:
读取所述内核空间的套接字缓冲区中所述页高速缓存的描述符和数据长度,所述页高速缓存的描述符和数据长度是预先存储在所述套接字缓冲区的;
根据所述页高速缓存的描述符和数据长度通过DMA将所述DNS报文从所述页高速缓存直接搬移至所述网络设备。
10.一种DNS区文件全量下发的装置,其特征在于,应用于DNS服务器,所述装置包括:
获得单元,用于基于目标全量下发请求,加载目标DNS区文件的索引区域至内存获得DNS报文索引列表;所述目标DNS区文件是基于文本格式DNS区文件按照DNS报文格式预先生成包括所述索引区域和数据区域的网络数据格式DNS区文件,所述DNS报文索引列表包括所述数据区域中各个DNS报文的起始偏移量和报文大小;
下发单元,用于基于所述目标全量下发请求遍历所述DNS报文索引列表中各个所述DNS报文的起始偏移量和报文大小,按照顺序依次利用零拷贝技术下发所述数据区域中各个DNS报文至网络设备。
11.一种DNS服务器,其特征在于,所述DNS服务器包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行权利要求1-9任一项所述的DNS区文件全量下发的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行权利要求1-9任一项所述的DNS区文件全量下发的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910324544.6A CN110049133B (zh) | 2019-04-22 | 2019-04-22 | 一种dns区文件全量下发的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910324544.6A CN110049133B (zh) | 2019-04-22 | 2019-04-22 | 一种dns区文件全量下发的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110049133A true CN110049133A (zh) | 2019-07-23 |
CN110049133B CN110049133B (zh) | 2021-10-22 |
Family
ID=67278353
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910324544.6A Active CN110049133B (zh) | 2019-04-22 | 2019-04-22 | 一种dns区文件全量下发的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110049133B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111586040A (zh) * | 2020-05-06 | 2020-08-25 | 北京中科海讯数字科技股份有限公司 | 高性能网络数据接收方法及其*** |
CN111711512A (zh) * | 2020-07-01 | 2020-09-25 | 中国银行股份有限公司 | 报文发送方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101178694A (zh) * | 2006-11-07 | 2008-05-14 | 莱克斯信息技术(北京)有限公司 | Intel e1000零拷贝的方法 |
CN102194010A (zh) * | 2011-06-16 | 2011-09-21 | 华中科技大学 | 虚拟文件***碎片的零拷贝整理方法 |
CN103259865A (zh) * | 2013-05-23 | 2013-08-21 | 中国科学院计算机网络信息中心 | 一种基于网络编码的自适应dns区文件传输方法和*** |
CN103685585A (zh) * | 2012-09-07 | 2014-03-26 | 中国科学院计算机网络信息中心 | 一种高可靠的dns数据更新方法及*** |
CN105812261A (zh) * | 2016-03-07 | 2016-07-27 | 北京交通大学 | 信息中心网络中的报文转发方法和*** |
US10015094B1 (en) * | 2015-06-19 | 2018-07-03 | Amazon Technologies, Inc. | Customer-specified routing policies |
CN108449444A (zh) * | 2018-03-29 | 2018-08-24 | 江苏省未来网络创新研究院 | 区域数据传输方法、自循环域名解析***及方法 |
CN108600405A (zh) * | 2018-03-14 | 2018-09-28 | 中国互联网络信息中心 | 一种加速dns解析软件日志记录的方法和*** |
-
2019
- 2019-04-22 CN CN201910324544.6A patent/CN110049133B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101178694A (zh) * | 2006-11-07 | 2008-05-14 | 莱克斯信息技术(北京)有限公司 | Intel e1000零拷贝的方法 |
CN102194010A (zh) * | 2011-06-16 | 2011-09-21 | 华中科技大学 | 虚拟文件***碎片的零拷贝整理方法 |
CN103685585A (zh) * | 2012-09-07 | 2014-03-26 | 中国科学院计算机网络信息中心 | 一种高可靠的dns数据更新方法及*** |
CN103259865A (zh) * | 2013-05-23 | 2013-08-21 | 中国科学院计算机网络信息中心 | 一种基于网络编码的自适应dns区文件传输方法和*** |
US10015094B1 (en) * | 2015-06-19 | 2018-07-03 | Amazon Technologies, Inc. | Customer-specified routing policies |
CN105812261A (zh) * | 2016-03-07 | 2016-07-27 | 北京交通大学 | 信息中心网络中的报文转发方法和*** |
CN108600405A (zh) * | 2018-03-14 | 2018-09-28 | 中国互联网络信息中心 | 一种加速dns解析软件日志记录的方法和*** |
CN108449444A (zh) * | 2018-03-29 | 2018-08-24 | 江苏省未来网络创新研究院 | 区域数据传输方法、自循环域名解析***及方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111586040A (zh) * | 2020-05-06 | 2020-08-25 | 北京中科海讯数字科技股份有限公司 | 高性能网络数据接收方法及其*** |
CN111586040B (zh) * | 2020-05-06 | 2021-02-09 | 北京中科海讯数字科技股份有限公司 | 高性能网络数据接收方法及其*** |
CN111711512A (zh) * | 2020-07-01 | 2020-09-25 | 中国银行股份有限公司 | 报文发送方法及装置 |
CN111711512B (zh) * | 2020-07-01 | 2022-10-18 | 中国银行股份有限公司 | 报文发送方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110049133B (zh) | 2021-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lam et al. | XML document parsing: Operational and performance characteristics | |
CN103020315B (zh) | 一种基于主从分布式文件***的海量小文件存储方法 | |
US8175875B1 (en) | Efficient indexing of documents with similar content | |
KR20200027413A (ko) | 데이터 저장 방법, 장치 및 시스템 | |
US8495166B2 (en) | Optimized caching for large data requests | |
Wu | Notes on design and implementation of compressed bit vectors | |
US8719254B2 (en) | Efficient querying using on-demand indexing of monitoring tables | |
CN111026727A (zh) | 基于日志文件的表维度检索数据同步方法、***及装置 | |
KR101581980B1 (ko) | 계층적 데이터의 페이징 | |
Greenberg et al. | {MDHIM}: A Parallel {Key/Value} Framework for {HPC} | |
Xie et al. | Evaluation of a hybrid approach for efficient provenance storage | |
US20120330909A1 (en) | System and Method for Storing Data Streams in a Distributed Environment | |
CN103678172A (zh) | 一种本地数据缓存管理方法及装置 | |
CN106570113B (zh) | 一种海量矢量切片数据云存储方法及*** | |
CN103885887A (zh) | 用户数据存储方法、读取方法及*** | |
CN110049133A (zh) | 一种dns区文件全量下发的方法和装置 | |
CN104519103A (zh) | 网络数据的同步处理方法、服务器及相关*** | |
Zhai et al. | Hadoop perfect file: A fast and memory-efficient metadata access archive file to face small files problem in hdfs | |
CN103150145A (zh) | 数据仓库环境中的语义分组数据的并行处理 | |
CN101576919B (zh) | 标识生成方法和装置 | |
Wu et al. | NFL: robust learned index via distribution transformation | |
CN109086462A (zh) | 一种分布式文件***中元数据的管理方法 | |
Abad et al. | Generating request streams on Big Data using clustered renewal processes | |
CN110720097A (zh) | 图数据库中元组和边的功能性等价 | |
Zhu et al. | An IoT-oriented real-time storage mechanism for massive small files based on Swift |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |