掌桥专利:专业的专利平台
掌桥专利
首页

一种基于时间窗的域名缓存替换方法和系统

文献发布时间:2023-06-19 19:28:50


一种基于时间窗的域名缓存替换方法和系统

技术领域

本发明涉及互联网信息技术领域,特别是一种基于时间窗的域名缓存替换方法和系统。

背景技术

随着互联网技术的发展,DNS在常规将域名解析到IP的功能外,经常作为一个有效的渠道进行服务间的通信;然而随着DNS应用范围的扩展带也来了域名滥用问题,出现了出于临时用途,即具有“一次性”的使用模式和极高的数量域名。其主要特性是使得DNS缓存中充满了命中率接近零的条目,且多次访问域名被提前替换出缓存。因此,这种一次性域名使得缓存命中率降低,造成转发流量增多、服务器负载加重等问题。

同时,随着域名请求行为以及名称特征的复杂化,现有的一次性域名识别方法面临着精准度下降的问题,在一些场景下,比如与某云平台下载活动有关的域名请求,这类请求具有相同区域,该区域下域名结构完全一致,具有相同深度,请求数量庞大。虽然,此类域名名称特征具备一次性域名特点,但需要被再次访问,如不被保存则会造成一定缓存缺失,即这类被再次访问的“一次性”域名无法单纯凭借名称特征对其进行区分。同时,现有方法在一次性域名方法识别上不管是基于名称特征、语义特征还是名称结构等分析,都无法保证做到完全精确识别,且一次性域名中仍存在一些特例,造成缓存命中率降低,进而也对递归服务器和远端服务器之间流量负载和用户查询延迟造成影响。

文献1:中国公开发明专利CN202111452686.4要求保护一种域名筛选方法、系统、装置及计算机可读存储介质,通过精简数据量来确保获取到的域名大概率是经常使用的,但是其作用在于利用DNS解析日志从所得到的域名中去除异常域名,得到有效域名;并不能解决一次性域名识别处理的问题。

发明内容

本发明的目的在于提供一种基于时间窗的域名缓存替换方法和系统,根据提取名称特征方式构建域名分类器,利用时间窗增加时间特征对域名进行二次识别,结合域名缓存替换功能,仅将被识别为非一次性域名的资源记录放入缓存,实现对一次性域名的有效去除。

实现本发明目的的技术解决方案为:

一种基于时间窗的域名缓存替换方法,其特征在于:该方法包括:

响应DNS实时接收域名的查询请求,通过域名分类器将接收到的域名分类为一次性域名或非一次性域名;

若接收到的域名为非一次性域名,则当前域名直接进入分级缓存处理;若接收到的域名为一次性域名,则预先对当前域名进行时间窗处理后进入分级缓存处理。

进一步的,域名的查询请求在DNS内形成对应的资源记录,其中,一次性域名表示在DNS内存在对应资源记录为一次的域名,非一次性域名表示在DNS内存在对应资源记录大于一次的域名。

进一步的,时间窗处理为:

在预先设置时间周期内,当当前域名的查询次数达到阈值时,对当前域名的资源记录进行分级缓存处理;

若当前域名的查询次数未达到阈值,则丢弃当前域名的资源记录,返回继续响应DNS实时接收域名的查询请求;

其中,当前域名的查询次数是通过累计得到的,包括外来客户端的查询次数以及域名分类器发送的同一域名出现的次数。

进一步的,分级缓存包括低级缓存和高级缓存,具体处理步骤为:

判断当前域名的资源记录是否为第一次存放,若是,则将当前域名的资源记录放入低级缓存中;反之,将当前域名的资源记录放入高级缓存中,并累计当前域名的资源记录的缓存次数;

当高级缓存被填满时,累计所有缓存域名的资源记录缓存次数,并且将其中缓存次数最少的域名降级存放至低级缓存中;当低级缓存被填满时,累计所有缓存域名的资源记录缓存次数,并且并移除其中缓存次数最少的域名。

本发明还提供了一种基于时间窗的域名缓存替换系统,包括域名分类单元、时间窗处理单元以及分级缓存单元,其中:

域名分类单元,用于获取DNS接收的域名查询请求,根据名称特征分类法对域名进行分类,并将分类结果发送至时间窗处理单元;

时间窗处理单元,用于基于分类结果对域名在预先设置时间周期内的查询次数进行记录;

分级缓存单元,用于接收满足缓存阈值条件的域名进行分级缓存处理,并移除其中缓存次数最少的域名。

进一步的,域名的查询请求在DNS内形成对应的资源记录,分类结果为统计所述域名在DNS内存在对应的资源记录次数。

进一步的,时间窗处理单元包括若干个滑动时间窗,若干个滑动时间窗设置有不同的时间范围和查询阈值,每个滑动时间窗内置有过期缓存库,过期缓存库为带有过期自动刷新属性的有序字典。

进一步的,时间窗处理单元的具体处理流程为:

选定任意一个滑动时间窗,判断在滑动时间窗的时间范围内,域名的查询次数是否达到查询阈值;若达到,则将域名的资源记录存放至分级缓存单元,反之,则丢弃域名;

其中,域名的查询次数通过累计得到,包括外来客户端的查询次数以及域名分类单元发送的分析结果中同一域名出现的次数。

进一步的,分级缓存单元包括低级缓存区和高级缓存区,具体操作步骤为:

判断域名的资源记录是否是第一次存放,若是,则将域名的资源记录放入低级缓存区中;反之,将域名的资源记录放入高级缓存区中,并累计域名的资源记录的缓存次数;

采用LRU算法对存放的所有域名的缓存次数进行统计排序,当高级缓存区被填满时,将缓存次数最少的域名降级移存到低级缓存区;当低级缓存区被填满时,将缓存次数最少的域名直接移除。

本发明与现有技术相比,其显著优点是:采用了在域名名称特征基础上增加时间窗判断一次性域名的方法,解决了现有的域名分类方法容易误判的问题,避免丢弃非一次性域名造成的负面影响,提升域名识别的准确率。同时,通过对时间窗处理后的域名进行分级缓存,及时剔除查询使用次数较少的域名,减轻服务器的负载,减少用户查询延迟。

附图说明

图1为本发明的一种基于时间窗的域名缓存替换系统的结构示意图。

具体实施方式

以下结合附图,详细说明本发明的实施方式。

一种基于时间窗的域名缓存替换方法,其特征在于:该方法包括:

响应DNS实时接收域名的查询请求,通过域名分类器将接收到的域名分类为一次性域名或非一次性域名;

若接收到的域名为非一次性域名,则当前域名直接进入分级缓存处理;若接收到的域名为一次性域名,则预先对当前域名进行时间窗处理后进入分级缓存处理。

具体的,域名的查询请求在DNS内形成对应的资源记录,其中,一次性域名表示在DNS内存在对应资源记录为一次的域名,非一次性域名表示在DNS内存在对应资源记录大于一次的域名。

其中,域名在DNS内存在对应的资源记录包括:

A记录:表示主机记录,是DNS名称到IP地址的映射,用于正向解析;

CNAME记录:表示别名记录,用于定义A记录的别名;

MX记录(mail exchange):表示邮件交换器记录,用于告知邮件服务器进程将邮件发送到指定的另一台邮件服务器;

NS记录:用于标识区域的DNS服务器,一个区域可能存在多条ns记录,例如一个主服务器和多个辅助服务器;

PTR记录:用于反向解析,是IP地址到DNS名称的映射;

SOA记录:用于一个区域的开始,SOA记录后的所有信息均是用于控制这个区域的,每个区域数据库文件都必须包谷一个SOA记录,并且必须是其中的第一个资源记录,用以标识DNS服务器管理的起始位置,SOA记录能解析这个区域的DNS服务器中哪个是主服务器。

具体的,时间窗处理为:

在预先设置时间周期内,当当前域名的查询次数达到阈值时,对当前域名的资源记录进行分级缓存处理;

若当前域名的查询次数未达到阈值,则丢弃当前域名的资源记录,返回继续响应DNS实时接收域名的查询请求;

其中,当前域名的查询次数是通过累计得到的,包括外来客户端的查询次数以及域名分类器发送的同一域名出现的次数。

具体的,分级缓存包括低级缓存和高级缓存,处理步骤为:

判断当前域名的资源记录是否为第一次存放,若是,则将当前域名的资源记录放入低级缓存中;反之,将当前域名的资源记录放入高级缓存中,并累计当前域名的资源记录的缓存次数;

当高级缓存被填满时,累计所有缓存域名的资源记录缓存次数,并且将其中缓存次数最少的域名降级存放至低级缓存中;当低级缓存被填满时,累计所有缓存域名的资源记录缓存次数,并且并移除其中缓存次数最少的域名。

如图1所示,本发明还提供了一种基于时间窗的域名缓存替换系统,包括域名分类单元、时间窗处理单元以及分级缓存单元,其中:

域名分类单元,用于获取DNS接收的域名查询请求,根据名称特征分类法对域名进行分类,并将分类结果发送至时间窗处理单元;

时间窗处理单元,用于基于分类结果对域名在预先设置时间周期内的查询次数进行记录;

分级缓存单元,用于接收满足缓存阈值条件的域名进行分级缓存处理,并移除其中缓存次数最少的域名。

具体的,域名的查询请求在DNS内形成对应的资源记录,分类结果为统计所述域名在DNS内存在对应的资源记录次数,包括:

将在DNS内存在对应的资源记录且资源记录仅有一次的域名,分为一次性域名;

将在DNS内存在对应的资源记录且资源记录大于一次的域名,分为非一次性域名。

具体的,时间窗处理单元包括若干个滑动时间窗,若干个滑动时间窗设置有不同的时间范围和查询阈值,每个滑动时间窗内置有过期缓存库,过期缓存库为带有过期自动刷新属性的有序字典。

具体的,时间窗处理单元的具体处理流程为:

选定任意一个滑动时间窗,判断在滑动时间窗的时间范围内,域名的查询次数是否达到查询阈值;若达到,则将域名的资源记录存放至分级缓存单元,反之,则丢弃域名;

其中,域名的查询次数通过累计得到,包括外来客户端的查询次数以及域名分类单元发送的分析结果中同一域名出现的次数。

具体的,分级缓存单元包括低级缓存区和高级缓存区,具体操作步骤为:

判断域名的资源记录是否是第一次存放,若是,则将域名的资源记录放入低级缓存区中;反之,将域名的资源记录放入高级缓存区中,并累计域名的资源记录的缓存次数;

采用LRU算法对存放的所有域名的缓存次数进行统计排序,当高级缓存区填满时,将缓存次数最少的域名降级移存到低级缓存区;当低级缓存区填满时,将缓存次数最少的域名直接移除。

具体举例如下:

S1、本地递归服务器从远端服务器接收到DNS回复的域名的查询请求;

S2、使用域名分类器对域名进行分类;分类结果的处理为:如果识别为非一次域名则直接放入分级缓存中,否则送到时间窗处理器进一步处理;

S3、时间窗处理器按照预先设置好的时间和阈值作判断,例如:设置100秒时间内查询次数为3次,即该域名在100秒内被请求超过3次则将其域名对应的资源记录放入分级缓存中,反之丢弃;继续接收下一个域名的查询请求;

S4、判断缓存中否存在该域名所对应的资源记录,若有则直接返回查询结果,反之继续向下查询,查到返回S1循环执行。

步骤S3中的时间窗处理步骤具体为:

S31、设置不同滑动时间窗和不同阈值测试缓存命中率;

S32、评估存命中率及占用存储空间;

S33、根据实际情况选定时间窗和阈值,本方案中选择100秒3次;

S34、时间窗处理器记录时间窗内记录次数,时间窗处理器内置了ExpiringDict(过期字典),ExpiringDict是一种带有过期自动刷新属性的有序字典,通过设置自动过期值即可记录滑动时间窗内的域名请求次数。

S35、根据ExpiringDict的记录作逻辑处理,即100秒内请求次数超过3次的域名对应的资源记录放入分级缓存并返回响应结果。

步骤S35中放入分级缓存的具体处理操作如下:

S351、一个新的资源记录被缓存时,先放入低级缓存中;

S352、当它再次命中时被升级到高级缓存中;

S353、当低级缓存填满时,直接依据LRU(Least Recently Used)算法将最近最少使用的资源记录移除。

S354、当高级缓存填满时,则依据LRU算法将最近最少使用的资源记录降级到低级缓存中。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

技术分类

06120115926413