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

一种网络质量的探测方法、系统及装置

文献发布时间:2023-06-19 10:14:56


一种网络质量的探测方法、系统及装置

技术领域

本发明涉及互联网技术领域,特别涉及一种网络质量的探测方法、系统及装置。

背景技术

在当前的CDN(Content Delivery Network,内容分发网络)中,通常需要对基于IP的静态库进行维护,从而根据静态库中的IP地址进行调度前的静态规划。由于静态库中的IP地址可能存在通信质量不佳的情况,因此需要对其中的IP地址进行网络质量的探测。

目前,通常是基于PING(Packet Internet Groper,因特网包探索器)来探测IP地址的网络质量,但由于有些主机可能不会对PING的探测数据包进行响应,因此会导致探测效果不好。

发明内容

本申请的目的在于提供一种网络质量的探测方法、系统及装置,能够提高网络质量的探测效率。

为实现上述目的,本申请一方面提供一种网络质量的探测方法,所述方法包括:当针对目标主机的探测失败时,设置存活时间的参考追踪跳数;利用探测协议组对所述目标主机进行探测,若探测成功,记录对应的往返时延,并结束针对所述目标主机的探测;若所述探测协议组探测失败,判断是否对所述参考追踪跳数进行更新,以及判断是否结束针对所述目标主机的探测。

为实现上述目的,本申请另一方面还提供一种网络质量的探测系统,所述系统包括:追踪跳数设置单元,用于当针对目标主机的探测失败时,设置存活时间的参考追踪跳数;时延记录单元,用于利用探测协议组对所述目标主机进行探测,若探测成功,记录对应的往返时延,并结束针对所述目标主机的探测;判断单元,用于若所述探测协议组探测失败,判断是否对所述参考追踪跳数进行更新,以及判断是否结束针对所述目标主机的探测。

为实现上述目的,本申请另一方面还提一种网络质量的探测装置,所述探测装置包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现上述的网络质量的探测方法。

由上可见,本申请提供的技术方案,当采用常规的PING方式对目标主机探测失败时,可以设置存活时间(Time To Live,TTL)的参考追踪跳数。然后,可以采用预先设置的探测协议组对目标主机进行探测,该探测协议组中可以包括多个探测协议。如果该探测协议组对目标主机探测成功,便可以记录对应的往返时延(RTT,Round-Trip Time),该RTT便可以表征目标主机的网络通信质量。而如果探测协议组对目标主机也探测失败,那么可以根据当前的参考追踪跳数的实际数值,判断是否对该参考追踪跳数进行更新,以开启新一轮的探测过程。此外,还可以根据当前的参考追踪跳数来判断目标主机是否存在异常,从而判断是否结束针对目标主机的探测。可见,通过本申请提供的技术方案,在参考追踪跳数的限制下,可以通过探测协议组对目标主机进行多次探测,最终,如果探测依然失败,可以判断是否需要对参考追踪跳数进行更新,以进行新的一轮探测。通过这种多次探测的方式,能够极大地提高目标主机的探测效率。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施方式中网络质量的探测方法步骤示意图;

图2是本发明实施方式中网络质量的探测方法流程示意图;

图3是本发明实施方式中网络质量的探测系统功能模块图;

图4是本发明实施方式中网络质量的探测装置的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

本申请一个实施方式提供一种网络质量的探测方法,请参阅图1,所述方法可以包括以下多个步骤。

S1:当针对目标主机的探测失败时,设置存活时间的参考追踪跳数。

在本实施方式中,为了减少探测的IP地址数量,可以将IP池中的IP地址按照指定网段进行聚合。这样,IP池中的IP地址可以聚合为多个IP组,同一个IP组中的指定网段是相同的。例如,考虑到一个C段内的IP地址,归属基本一致,对应的网络质量也基本一致,因此可以对同一个C段内的部分IP地址进行探测,从而汇总出该C段内IP地址的整体网络质量。具体地,可以将静态库中的IP地址按照C段进行聚合,这样,静态库中的IP地址可以聚合为多个IP组,同一个IP组中的C段是相同的。

在按照指定网段对IP地址进行聚合之后,针对聚合后的IP组,可以随机抽取其中的一部分IP地址作为待探测的目标IP地址。在一个实际应用示例中,可以通过预设配置文件,限定抽取IP地址的规则。例如,在预设配置文件中,可以限定IP步长和IP步数,其中,IP步长可以代表每隔多少个IP地址可以抽取一个目标IP地址。例如,IP步长为20,那么在聚合后的IP组中,可以每隔20个IP地址抽取一个待探测的目标IP地址。IP步数可以表示最终需要抽取的IP数量。例如,IP步数可以是1万,那么在同一个IP组中,可以抽取其中的1万个IP地址作为待探测的目标IP地址。

在本实施方式中,抽取出的目标IP地址指向的主机,便可以作为待探测的目标主机。针对该目标主机,可以尝试通过常规的PING命令进行探测。具体地,在使用PING命令对目标主机进行探测时,可以将TTL值设置为最大值(例如可以是64),然后再利用PING命令对目标主机发送请求数据包。如果目标主机没有针对PING命令反馈响应数据包,则表征常规的探测手段探测失败。此时,可以执行本申请的探测方案。

在本实施方式中,执行本申请的探测方案时,可以将TTL值修改为当前的参考追踪跳数,该参考追踪跳数默认可以是32。该参考追踪跳数可以随着后续多轮的探测过程进行更新,并作为是否需要开启新一轮探测的依据。

需要说明的是,在一些对于归属比较敏感的地区,如果统一地按照指定网段对IP地址进行聚合,可能会导致聚合后的IP地址组中涵盖了不同地区的归属,这样会导致最终的探测精度不高。鉴于此,在一个实施方式中,可以确定指定网段中待聚合的主机号位数,该主机号位数通常可以小于指定网段的总位数。这样,按照所述主机号位数对所述IP池中的IP地址进行聚合时,便可以将原先按照指定网段进行聚合后的IP地址组,再次细分为更多的小组。然后,针对细分得到的小组,可以按照类似的方式进行IP地址的抽取。

举例来说,原先可以将IP地址按照C段进行聚合,由于C段中包含8位主机号,因此在进行细分时,可以对其中的7位或者更少位的主机号进行聚合,这样,聚合后的小组中,可以仅包含相同的7位主机号,或者更少的主机号。相同的主机号越少,聚合得到的小组便越多,从而达到细分IP地址组的目的。

S3:利用探测协议组对所述目标主机进行探测,若探测成功,记录对应的往返时延,并结束针对所述目标主机的探测。

在本实施方式中,为了提高目标主机的探测成功率,可以采用traceroute与探测协议相结合的方式对目标主机进行探测。具体地,traceroute方式可以解析目标主机反馈的响应数据包中的TTL字段,或者可以解析中间网关反馈的超时数据包中的TTL字段,从而识别响应数据包或者超时数据包携带的TTL值。而通过不同的探测协议对目标主机进行探测,可以兼容不同的网络场景,从而提高探测成功率。

具体地,多个探测协议可以共同构成探测协议组,在该探测协议组中,可以按照优先级对多个探测协议进行排序。例如,可以按照优先级从高到低的顺序对探测协议进行排序。然后,可以逐一利用各个所述探测协议对所述目标主机进行探测。

在本实施方式中,针对探测协议组中当前的探测协议,可以基于该探测协议向目标主机发送请求数据包,若所述目标主机针对所述请求数据包反馈响应数据包,可以计算所述请求数据包和所述响应数据包之间的时间差,并将所述时间差作为探测成功对应的往返时延。

在实际应用中,随着探测协议的不同,请求数据包和响应数据包的类型也可以不同。例如,所述探测协议组中的探测协议包括UDP,那么请求数据包可以为UDP探测数据包,对应的响应数据包可以为ICMP Destination Unreachable数据包。当所述探测协议组中的探测协议包括TCP时,请求数据包可以为TCP SYN探测数据包,对应的响应数据包可以为TCPACK数据包。当探测协议组中的探测协议包括ICMP时,请求数据包可以为ICMP EchoRequest探测数据包,对应的响应数据包可以为ICMP Echo reply数据包。

然而,在基于探测协议对目标主机进行探测时,如果目标主机未针对发出的请求数据包反馈响应数据包时,可以获取中间网关发回的存活时间最大的超时数据包。具体地,探测装置可以接收到不同的中间网关发来的超时数据包,这些超时数据包中的TTL字段中可以携带对应的TTL值。通常而言,距离目标主机越近的中间网关,携带的TTL值也会越大。因此,在目标主机无法反馈响应数据包时,可以对获取的中间网关的超时数据包进行解析,并识别出TTL值最大的超时数据包。然后,可以计算该超时数据包与请求数据包之间的时间差,并将该时间差作为探测成功对应的往返时延。

在一个实施方式中,发回TTL值最大的超时数据包的中间网关,可能距离目标主机也比较远,如果利用该超时数据包计算得到的时间差,不能准确地反应目标主机与探测装置之间的网络质量,因此,可以给TTL值设置一个指定存活时间阈值,该指定存储时间阈值可以作为TTL的下限值。如果超时数据包对应的存活时间大于或者等于该指定存活时间阈值,则表示该超时数据包是有效的数据包,此时可以按照上述的方案,计算所述超时数据包与所述请求数据包之间的时间差。而如果所述超时数据包对应的存活时间小于所述指定存活时间阈值,则表示发回超时数据包的中间网关距离目标主机过远,因此可以丢弃所述超时数据包,并利用下一个探测协议对所述目标主机进行探测。

S5:若所述探测协议组探测失败,判断是否对所述参考追踪跳数进行更新,以及判断是否结束针对所述目标主机的探测。

在本实施方式中,若按照优先级逐一利用各个探测协议均探测失败时,则表明本轮的探测协议组探测失败。此时,可以根据按参考追踪跳数的数值,判断是否对所述参考追踪跳数进行更新,以及判断是否结束针对所述目标主机的探测。

具体地,若当前的参考追踪跳数大于最小追踪跳数,则可以减小所述参考追踪跳数,并将减小后的追踪跳数作为下一轮探测的参考追踪跳数。其中,最小追踪跳数可以是网络质量探测过程中的经验值,例如该最小追踪跳数可以是6,那么如果当前的参考追踪跳数大于6,可以将当前的参考追踪跳数减1,并将得到的结果作为下一轮探测的参考追踪跳数。这样,下一轮探测过程中,可以按照上述的方案,逐一利用探测协议组中的各个探测协议对目标主机进行探测,如果依然探测失败,可以将更新后的参考追踪跳数与最小追踪跳数进行对比,以判断是否继续对参考追踪跳数进行更新,从而进行再下一轮的探测过程。

如果在探测协议组探测失败后,当前的参考追踪跳数小于或者等于最小追踪跳数,此时,可以判定所述目标主机探测失败,并结束针对所述目标主机的探测。该目标主机的RTT值可以记录为异常值,在统计对应网段的整体RTT值时可以不予考虑。

这样,按照上述的方式,可以对IP池中的IP地址进行一定程度的聚合,并在聚合后的IP地址组中抽取待探测的IP地址。针对待探测的IP地址指向的目标主机,如果探测成功,则可以记录对应的RTT值。而如果探测失败,则可以将该目标主机的RTT值标记为异常,不予采用。当从聚合后的IP地址组中记录了指定数量的RTT值后,便可以针对这些RTT值进行数学统计(例如计算中位数),从而得到当前IP地址组整体的RTT值,该整体的RTT值便可以代表IP地址组的网络质量。

需要说明的是,传统的网络质量探测手段基本都是通过Linux下的PING命令对目标主机进行探测,每次探测都需要起用一个进程,对系统资源的消耗较大。同时,每次探测都是记录探测起始状态,并阻塞等待探测返回的响应数据包,探测效率低,不利于大批量探测。

而本申请提供的技术方案,探测过程中发送请求数据包和接收响应数据包可以分离进行,各自由独立的模块负责,这将大大减少收发同步等待时间和内存读写锁等待时间,进而极大地提升了探测的效率。在探测过程中,计算RTT值所需要的标识、发包时间、TTL值及其他所需要的字段,都可以通过封装到协议包头和协议包体的方式记录,并在协议返回时解析获取。

请参阅图2,在一个实际应用场景中,在从聚合后的IP地址组中抽取到新的目标IP地址后,可以针对该目标IP地址指向的目标主机发起多协议的探测过程。在该过程中,请求数据包和响应数据包可以进行分离,由不同的模块分别负责。通过计算RTT值,可以将有效的RTT值更新至RTT数据库中,通过检测该RTT数据库中的数据量是否足够,可以判断是否能够统计出当前IP地址组的整体RTT值。如果数据足够,可以结束探测过程,并计算整体RTT值。而如果数据不够,则可以按照设定的步长和步数再次抽取目标IP地址。

在一个具体应用场景中,可以按照UDP、TCP以及ICMP的探测顺序进行探测。具体地,探测过程可如下所示:

1)UDP模式:

探测机向目标主机发送UDP探测数据包;

当目标主机发回ICMP Destination Unreachable数据包,则计算ICMPDestination Unreachable数据包和UDP探测数据的时间差,该时间差即为往返时延rtt值;

当目标主机不响应ICMP Destination Unreachable数据包,则获取TTL值最大的中间网关发回的ICMP TTL超时数据包,并计算ICMP TTL超时数据包和UDP探测数据包的时间差,即为往返时延rtt值;

当最大的TTL值小于最新允许的TTL值,则丢弃对应的ICMP TTL超时数据包,并尝试其他协议。

2)TCP模式:

探测机向目标主机发送TCP[SYN]探测数据包;

当目标主机发回TCP[SYN ACK]数据包,则计算TCP[SYN ACK]数据包和TCP[SYN]探测数据包的时间差,即为往返时延rtt值;

当目标主机不响应TCP[SYN ACK]数据包,则获取TTL值最大的中间网关发回的ICMP TTL超时数据包,并计算ICMP TTL超时数据包和TCP[SYN]探测数据包的时间差,即为往返时延rtt值;

当最大的TTL值小于最新允许的TTL值,则丢弃ICMP TTL超时数据包,并尝试其他协议。

3)ICMP模式:

探测机向目标主机发送ICMP Echo Request探测数据包;

当目标主机发回ICMP Echo reply数据包,则计算ICMP Echo reply数据包和ICMPEcho Request探测数据包的时间差,即为往返时延rtt值;

当目标主机不响应ICMP Echo reply数据包,则获取TTL值最大的中间网关发回的ICMP TTL超时数据包,并计算ICMP TTL超时数据包和ICMP Echo Request探测数据包的时间差,即为往返时延rtt值;

当最大的TTL值小于最新允许的TTL值,则丢弃ICMP TTL超时数据包,并记录目标IP不可探测。

请参阅图3,本申请一个实施方式还提供一种网络质量的探测系统,所述系统包括:

追踪跳数设置单元,用于当针对目标主机的探测失败时,设置存活时间的参考追踪跳数;

时延记录单元,用于利用探测协议组对所述目标主机进行探测,若探测成功,记录对应的往返时延,并结束针对所述目标主机的探测;

判断单元,用于若所述探测协议组探测失败,判断是否对所述参考追踪跳数进行更新,以及判断是否结束针对所述目标主机的探测。

请参阅图4,本申请一个实施方式还提供一种网络质量的探测装置,所述探测装置包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现上述的网络质量的探测方法。

由上可见,本申请提供的技术方案,当采用常规的PING方式对目标主机探测失败时,可以设置存活时间的参考追踪跳数。然后,可以采用预先设置的探测协议组对目标主机进行探测,该探测协议组中可以包括多个探测协议。如果该探测协议组对目标主机探测成功,便可以记录对应的往返时延,该RTT便可以表征目标主机的网络通信质量。而如果探测协议组对目标主机也探测失败,那么可以根据当前的参考追踪跳数的实际数值,判断是否对该参考追踪跳数进行更新,以开启新一轮的探测过程。此外,还可以根据当前的参考追踪跳数来判断目标主机是否存在异常,从而判断是否结束针对目标主机的探测。可见,通过本申请提供的技术方案,在参考追踪跳数的限制下,可以通过探测协议组对目标主机进行多次探测,最终,如果探测依然失败,可以判断是否需要对参考追踪跳数进行更新,以进行新的一轮探测。通过这种多次探测的方式,能够极大地提高目标主机的探测效率。

本说明书中的各个实施方式均采用递进的方式描述,各个实施方式之间相同相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。尤其,针对系统和装置的实施方式来说,均可以参照前述方法的实施方式的介绍对照解释。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 一种网络质量的探测方法、系统及装置
  • 一种网络质量探测方法、装置、终端设备及介质
技术分类

06120112476793