本申请实施例涉及网络探测技术领域,特别涉及一种网络质量的探测方法、装置、服务器及存储介质。
背景技术
当前互联网已渗透到社会生产生活的各个方面,如网络社交平台、电子商务、电子政务等领域。随着用户请求的增多,互联网公司的网络规模将越来越大、网络结构越来越复杂,一旦发生网络故障会造成较为严重的影响。为及时发现网络故障,减少运维成本,进行网络质量探测机具必要性。
相关技术中,网络质量探测的一种方式是使网络中的服务器两两相互执行因特网包探索器(Packet Internet Groper,PING)程序;另一种方式是分层探测,将同一个顶式(Top of Rank,TOR)交换机下的服务器形成完全图探测,将统一数据中心(Data Center,DC)中的TOR交换机视为虚拟节点形成完全图探测,将所有数据中心形成一个完全图探测。
然而,由于不同机房之间、不同交换机之间的服务器数量差异较大,导致探测流的分布并不均衡,部分DC或TOR交换机下服务器较少,导致相应的探测流较少,容易造成结果的波动,产生误告警,而部分服务器承担了较多的探测任务,导致负载过高。
技术实现要素:
本申请实施例提供了一种网络质量的探测方法、装置、服务器及存储介质。所述技术方案如下:
一方面,本申请实施例提供了一种网络质量的探测方法,所述方法包括:
确定探针池中服务器的层次关系,所述探针池由待探测网络中的服务器组成,所述层次关系用于指示服务器所属的交换机以及数据中心;
基于所述层次关系以及各个探测层次对应的任务分配条件,构建探测关系池,所述探测层次包括数据中心间探测、交换机间探测以及交换机内探测,所述任务分配条件包括不存在重复探测流以及服务器的出入度不超过出入度上限,所述探针池中的服务器用于从所述探测关系池中拉取目标探测流以及按照所述目标探测流进行网络探测;
响应于网络探测完成,基于服务器上报的探测数据确定所述待探测网络的网络质量,所述探测数据包括探测流对应的丢包率。
另一方面,本申请实施例提供了一种网络质量的探测装置,所述装置包括:
第一确定模块,用于确定探针池中服务器的层次关系,所述探针池由待探测网络中的服务器组成,所述层次关系用于指示服务器所属的交换机以及数据中心;
生成模块,用于基于所述层次关系以及各个探测层次对应的任务分配条件,构建探测关系池,所述探测层次包括数据中心间探测、交换机间探测以及交换机内探测,所述任务分配条件包括不存在重复探测流以及服务器的出入度不超过出入度上限,所述探针池中的服务器用于从所述探测关系池中拉取目标探测流以及按照所述目标探测流进行网络探测;
第二确定模块,用于响应于网络探测完成,基于服务器上报的探测数据确定所述待探测网络的网络质量,所述探测数据包括探测流对应的丢包率。
另一方面,本申请实施例提供了一种服务器,所述服务器包括处理器和存储器;所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述方面所述的网络质量的探测方法。
另一方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条计算机程序,所述计算机程序由处理器加载并执行以实现如上述方面所述的网络质量的探测方法。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。服务器的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该服务器执行上述方面的各种可选实现方式中提供的网络质量的探测方法。
本申请实施例提供的技术方案至少包括以下有益效果:
本申请实施例中,采用分层探测的方式对待探测网络中同一交换机下、不同交换机之间以及不同数据中心之间的服务器的网络通信质量进行探测,通过对各个探测层次分别进行探测流分配,实现完整的网络质量探测覆盖,同时,通过控制服务器的出度和入度,以及不生成重复的探测流,确保探测流均匀分配到各个探测节点的服务器中,避免部分数据中心或交换机下服务器较少导致探测流较少造成误告警的情况,以及部分服务器承担较多的探测任务导致服务器负载过高影响正常业务的情况,实现负载均衡。
附图说明
图1是本申请一个示例性实施例提供的实施环境的示意图;
图2是本申请一个示例性实施例提供的网络质量的探测方法的流程图;
图3是本申请一个示例性实施例提供的探测流分配过程的示意图;
图4是本申请另一个示例性实施例提供的网络质量的探测方法的流程图;
图5是本申请一个示例性实施例提供的数据中心间探测流分配过程的示意图;
图6是本申请另一个示例性实施例提供的网络质量的探测方法的流程图;
图7是本申请一个示例性实施例提供的探针和探测流维护过程的示意图;
图8是本申请一个示例性实施例提供的网络质量的探测装置的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
相关技术中,为了及时发现网络故障,减少运维成本,进行网络质量探测极具必要性。一种做法是将待探测网络中的服务器两两配对进行PING操作,形成有向完全图探测,然而服务器数量庞大,导致无法实现服务器之间完整的探测。另一种方法是选取少量服务器作为固定探针,探测网络中其他的服务器,但该方法由于探测流过少,无法很好地覆盖网络路径,容易漏告警,或者因探针本身的性能抖动、短期的网络输入输出异常等导致误告警,无法正确反映网络质量。
第三种做法是分层探测,让同一个TOR交换机下所有的服务器形成完全图探测,在数据中心内部级别,将每个交换机视为虚拟节点,让交换机形成完全图探测,在数据中心间级别,将每个数据中心视为虚拟节点,形成完全图探测。即,对每个数据中心、每个交换机下的主机进行排序和标号,对每一台主机,将该主机所属数据中心的其它交换机下、与其编号相同的主机设置为需要探测的目标主机,将该主机不属于的其它数据中心的各交换机下、与其编号相同的主机设置为需要探测的目标主机。该方法能够实现网络探测的完整性并能够生成较多的探测流。然而,由于机房间、交换机间的服务器数量差异巨大,每个节点被分配到的探测流的数量并不均衡(主机数量较少的交换机和数据中心被分配到的探测流较少,主机较多的交换机和数据中心所承担的探测任务较多),部分维度的探测流生成过少容易导致结果波动,产生误告警;此外,同一交换机下对应较多服务器,完全图探测会导致探测流过多,耗费较多计算资源。
为了解决上述技术问题,本申请实施例提供了一种网络质量的探测方法。图1示出了该方法的一种实施环境。该实施环境中包括中心控制服务器101、待探测网络中的交换机102以及待探测网络中的服务器103。其中,中心控制服务器101中部署有中心控制程序,该中心控制服务器101通过运行中心控制程序,按照不存在重复探测流以及服务器的出入度不超过出入度上限的原则,针对各个网络探测层次进行探测流分配,并定时更新和维护探测流。交换机102用于实现服务器103之间的通信连接,同一交换机102下部署有至少一个服务器103,同一数据中心(机房)内设置有至少一个交换机102以及对应的服务器103。中心控制服务器101进行探测流生成时,将数据中心或交换机102作为探测节点,对服务器103进行分组,提取合适的服务器103生成探测流,使探测流均衡分布在各个探测节点,实现负载均衡。
图2示出了本申请一个示例性实施例提供的网络质量的探测方法的流程图。本实施例以该方法应用于网络中用于分配探测任务和监控网络质量的中心控制服务器为例进行说明,该方法包括如下步骤。
步骤201,确定探针池中服务器的层次关系,探针池由待探测网络中的服务器组成,层次关系用于指示服务器所属的交换机以及数据中心。
在一种可能的实施方式中,待测试网络中负责网络探测流分配以及监控告警任务的中心控制服务器中部署有“中心控制器”,该服务器初次启动中心控制器后,获取待探测网络中可用的服务器,作为初始的探针池,其中可用的服务器是指不存在运行故障、能够正常执行探测指令的服务器,实际上,探针池中的服务器既可以作为探测流中的探测源,也可以作为探测目标被探测。
由于本申请实施例中的网络探测是分层次进行的,包括同一交换机内各个服务器之间的网络质量探测、同一数据中心(机房)内不同交换机下服务器之间的网络质量探测,以及不同数据中心的服务器之间的网络质量探测,因此中心控制服务器在进行探测流分配之前,首先需要获取服务器的层次关系,确定各个服务器所属的交换机和数据中心,以便进行任务分配。例如,在针对数据中心间探测进行探测流生成与分配时,需要按照数据中心对探针池中的服务器进行分组,在针对交换机间探测进行探测流生成与分配时,需要按照数据中心和交换机对探针池中的服务器进行分组。
步骤202,基于层次关系以及各个探测层次对应的任务分配条件,构建探测关系池。
其中,探测层次包括数据中心间探测、交换机间探测以及交换机内探测,任务分配条件包括不存在重复探测流以及服务器的出入度不超过出入度上限,探针池中的服务器用于从探测关系池中拉取目标探测流以及按照目标探测流进行网络探测。
为了使探测流能够覆盖完整的待探测网络,对各种不同的网络通信方式进行探测,同时确保各个数据中心、交换机下的服务器负载均衡,避免出现部分数据中心、交换机对应探测流过多或过少的情况,中心控制服务器按照不存在重复探测流、服务器的出入度不超过出入度上限的原则进行探测流分配。
负责探测流分配的服务器中部署有中心控制器,待探测网络的其余服务器中部署有服务器代理(Agent),中心控制器生成三种探测层次的探测流,形成探测关系池,待探测网络中的各个服务器Agent定时从探测关系池中拉取探测流并执行对应的探测任务,然后将探测结果上报至中心控制器。如图3所示,初次探测任务分配过程中,待探测网络中的中心控制器和服务器Agent执行的步骤如下:步骤301,中心控制器构建探针池;步骤302a,中心控制器生成机房间探测流;步骤302b,中心控制器生成TOR间探测流;步骤302c,中心控制器生成TOR内探测流;步骤303,中心控制器生成探测关系池;步骤304,中心控制器下发探测任务;步骤305,服务器Agent拉取探测任务,进行探测。
步骤203,响应于网络探测完成,基于服务器上报的探测数据确定所述待探测网络的网络质量,所述探测数据包括探测流对应的丢包率。
在一种可能的实施方式中,服务器Agent按照拉取到的探测任务进行探测后,将探测数据上报至中心控制器,中心控制器基于收集到的探测数据监控待探测网络各层级的网络质量。
示意性的,作为探针的服务器按照拉取到的探测流,作为探测源,对探测流中的探测目标执行PING操作,确定该条探测流的丢包率,同一服务器可能会拉取到各个层级的多条探测流,当所有PING操作执行完成后,将各个探测流对应的丢包率发送至中心控制器。
综上所述,本申请实施例中,采用分层探测的方式对待探测网络中同一交换机下、不同交换机之间以及不同数据中心之间的服务器的网络通信质量进行探测,通过对各个探测层次分别进行探测流分配,实现完整的网络质量探测覆盖,同时,通过控制服务器的出度和入度,以及不生成重复的探测流,确保探测流均匀分配到各个探测节点的服务器中,避免部分数据中心或交换机下服务器较少导致探测流较少造成误告警的情况,以及部分服务器承担较多的探测任务导致服务器负载过高影响正常业务的情况,实现负载均衡。
中心控制器一方面通过限制不存在重复的探测流,使探测流数量减少;另一方面,还限制各个服务器的出入度,以及同一探测层次内节点之间的探测流数量,从而实现探测流的均衡分配。图4示出了本申请另一个示例性实施例提供的网络质量的探测方法的流程图。本实施例以该方法应用于网络中用于分配探测任务和监控网络质量的中心控制服务器为例进行说明,该方法包括如下步骤。
步骤401,确定探针池中服务器的层次关系,探针池由待探测网络中的服务器组成,层次关系用于指示服务器所属的交换机以及数据中心。
步骤401的具体实施方式可以参考上述步骤201,本申请实施例在此不再赘述。
步骤402,确定探测层次对应的探测流上限。
其中,探测流上限是以第一探测节点为探测源,以第二探测节点为探测目标的探测流数量上限,第一探测节点和第二探测节点为同一探测层次中两个不同的探测节点。
在一种可能的实施方式中,中心控制器对各个探测节点之间的探测流设置有探测流上限。具体的,探测节点之间某一方向的探测关系称为探测维度,每个探测维度对应的探测流数量不超过探测流上限。同一探测层次间不同探测维度对应的探测流上限相同,不同探测层次的探测流上限可能不同。在限制服务器出入度和探测流不重复的基础上,进一步限制每个探测维度有探测流数量上限,在保证探测流覆盖完整的基础上限制探测流总数,减少探测资源消耗。
示意性的,对于数据中心间探测,数据中心A指向数据中心B的探测流(即以数据中心A中的服务器为探测源,以数据中心B中的服务器为探测目标的探测流)属于同一探测维度的探测流,总数不超过1000条,同样地,数据中心B指向数据中心A的探测流(即以数据中心B中的服务器为探测源,以数据中心A中的服务器为探测目标的探测流)属于同一探测维度的探测流,总数不超过1000条。
步骤403,基于探测流上限、层次关系以及任务分配条件,生成各个探测层次对应的探测流,构建探测任务池。
在一种可能的实施方式中,探测层次为数据中心间探测,数据中心探测是以待探测网络中的数据中心为探测节点的有向完全图探测,步骤403包括如下步骤:
步骤403a,基于第i轮探测流生成结果,更新各个数据中心对应的第一探针队列。其中第一探针队列是以服务器的出入度为主序,以服务器编号为次序的服务器队列,i为小于探测流上限的正整数。
中心控制器在分配数据中心间探测流之前,按照数据中心对服务器进行分组,同一数据中心的服务器属于同一队列,随机进行编号,并以服务器的出入度(由低到高)为主序,以服务器编号为次序进行排序。中心控制器每一轮针对各个探测维度生成一个探测流,然后更新第一探针队列,进行下一轮探测流生成,直至探测流生成的轮数达到数据中心间探测层次对应的探测流上限。可选的,中心控制器在每一轮探测流生成过程中,每生成一个探测流即更新相应的两个第一探针队列(该探测流中探测源所在的第一探针队列以及探测目标所在的第一探测队列)。
值得一提的是,中心控制器首先确保每个服务器的出入度不超过出入度上限,以及不存在重复的探测流,因此对于服务器较少的数据中心,可能存在最后n轮没有探测流生成的情况。
步骤403b,按照任务分配条件,从第一探针队列中提取服务器,进行第i 1轮探测流生成。
在一种可能的实施方式中,步骤403b包括如下步骤:
步骤一,基于以数据中心为探测节点的有向完全图,从各个第一探针队列中提取服务器,构建第一探测流。
例如,若待探测网络包含数据中心A、数据中心B、和数据中心C,则基于有向完全图确定探测维度包括A—B、A—C、B—A、B—C、C—A、C—B,针对每个探测维度均生成一条探测流。第一探测流是指数据中心间探测层次的探测流。
在一种可能的实施方式中,中心控制器从各个第一探针队列的顶端提取服务器生成探测流,并更新各个服务器的出入度(出度为发送数据包的数量,入度为接收数据包的数量)以及各个探测维度对应的探测流数量。
步骤二,响应于探测关系池中不存在第一探测流,且第一探测流中任意服务器的出入度总数均未超过出入度上限,在探测关系池中加入第一探测流。
步骤三,响应于探测关系池中存在第一探测流,或,第一探测流中存在服务器的出入度超过出入度上限,基于第一探针队列中的服务器排序重新确定探测流。
其中,出入度总数是指一个服务器的出度和入度之和。
按照不存在重复探测流、服务器的出入度不超过出入度上限的原则,中心控制器确定第一探测流是否合规,响应于探测关系池中不存在第一探测流,且第一探测流中任意服务器的出入度总数均未超过出入度上限,在探测关系池中加入第一探测流。
示意性的,图5示出了数据中心间的探测流分配过程,其中(x,y)表示探针x的出入度总数为y。待探测网络中的数据中心包括机房A、机房B和机房C,图中示出了第一轮探测流分配过程,中心控制器首先进行以机房A中服务器为探测源的两个探测维度的探测流分配,按照队列中服务器的排序,生成探测流A1—B1和探测流A2—C1,并更新队列,相应地,继续进行以机房B中服务器为探测源的两个探测维度的探测流分配,和以机房C中服务器为探测源的两个探测维度的探测流分配,本轮共生成6个探测流。
示意性的,中心控制器针对数据中心间探测生成一条探测流的伪代码如下:
本算法可以将探测流均匀地分配至各个探针,同时保证每个机房公平地竞争到探测流。
步骤403c,响应于探测流生成轮数与探测流上限一致,完成数据中心间探测的探测流分配。
例如,数据中心间探测的各个探测维度对应的探测流上限为1000,则中心控制器按照上述探测流生成步骤执行1000次,完成数据中心间探测的探测流分配。
在一种可能的实施方式中,探测层次为交换机间探测,交换机间探测是以同一数据中心的交换机为探测节点的有向完全图探测,步骤403包括如下步骤:
步骤403d,基于第j轮探测流生成结果,更新各个交换机对应的第二探针队列,第二探针队列是以服务器的出入度总数为主序,以服务器编号为次序的服务器队列,j为小于探测流上限的正整数。
在一种可能的实施方式中,交换机间探测的探测流分配过程与数据中心间探测的探测流分配过程类似。对于交换机间探测,其探测维度是指同一数据中心内两个交换机之间某一方向的探测关系。例如交换机a—交换机b为一探测维度,交换机b—交换机a为另一探测维度。
中心控制器在分配交换机间探测流之前,按照交换机对同一数据中心内的服务器进行分组,同一交换机的服务器属于同一队列,随机进行编号,并以服务器的出入度(由低到高)为主序,以服务器编号为次序进行排序。中心控制器每一轮针对各个探测维度生成一个探测流,然后更新第二探针队列,进行下一轮探测流生成,直至探测流生成的轮数达到交换机间探测层次对应的探测流上限。
步骤403e,按照任务分配条件,从第二探针队列中提取服务器,进行第j 1轮探测流生成。
在一种可能的实施方式中,步骤403e包括如下步骤:
步骤四,基于以交换机为探测节点的有向完全图,从各个第二探针队列中提取服务器,构建第二探测流。
例如,若待探测网络包含交换机A、交换机B、和交换机C,则基于有向完全图确定探测维度包括A—B、A—C、B—A、B—C、C—A、C—B,针对每个探测维度均生成一条探测流。
在一种可能的实施方式中,中心控制器从各个第二探针队列的顶端提取服务器生成探测流,并更新各个服务器的出入度(出度为发送数据包的数量,入度为接收数据包的数量)以及各个探测维度对应的探测流数量。第二探测流是指交换机间探测层次的探测流。
步骤五,响应于探测关系池中不存在第二探测流,且第二探测流中任意服务器的出入度总数均未超过出入度上限,在探测关系池中加入第二探测流。
步骤六,响应于探测关系池中存在第二探测流,或,第二探测流中存在服务器的出入度超过出入度上限,基于第二探针队列中的服务器排序重新确定探测流。
按照不存在重复探测流、服务器的出入度不超过出入度上限的原则,中心控制器确定第一探测流是否合规,响应于探测关系池中不存在第一探测流,且第一探测流中任意服务器的出入度总数均未超过出入度上限,在探测关系池中加入第一探测流。
可选的,本申请实施例中的出入度上限是指一个服务器对应某一探测层次的收发数据上限,例如服务器对应数据中心间探测的出入度上限为800,对应交换机间探测的出入度上限为1000;或者,该出入度上限指一个服务器对应所有层次探测任务的收发数据上限,例如服务器的出入度上限为3000,即该服务器对应数据中心间探测的出入度、交换机间探测的出入度和交换机内探测的出入度之和不超过3000。本申请实施例对此不作限定。
步骤403f,响应于探测流生成轮数与探测流上限一致,完成交换机间探测的探测流分配。
例如,交换机间探测的各个探测维度对应的探测流上限为1000,则中心控制器按照上述探测流生成步骤执行1000次,完成交换机间探测的探测流分配。
在一种可能的实施方式中,探测层次为交换机内探测,交换机内探测是以同一个交换机下的服务器为探测节点的非完全图探测,任务分配条件还包括服务器的探测发起次数不超过次数阈值,且被探测次数不超过次数阈值。步骤403还包括如下步骤:
步骤403g,随机确定两个服务器对应的第三探测流。
中心控制器针对同一个TOR交换机,设置两个相同的数组,用于存储该交换机下的服务器编号和出入度。中心控制器针对某一交换机进行交换机内探测流分配时,分别从两个数组中随机抽取一个服务器,分别作为探测源和探测目标,若抽取到的服务器相同则重新抽取,形成第三探测流。第三探测流是指TOR交换机内探测层次的探测流。
步骤403h,响应于第三探测流中探测源的探测发起次数未超过次数阈值,探测目标的被探测次数未超过次数阈值,且探测关系池中不存在由两个服务器组成的探测流,将第三探测流加入探测关系池。
若直接生成以探针为节点的有向完全图探测流,则会导致每个交换机下均生成N*(N-1)条探测流(N为服务器数量),导致探测流过多,且存在不必要的重复探测。因此,本申请实施例中,提出了一种k探测流覆盖法,规定每个探针均由另外k个探针对其发起探测,且每个探针均负责对另外k个探针进行探测,k为次数阈值。即,中心控制器循环随机提取两个服务器生成探测流,直至每个服务器被其他K个服务器探测、每个服务器向其他K个服务器发起探测,且任意两个服务器之间只存在一个探测流(若已存在服务器A—服务器B的探测流,则无法再生成服务器A—服务器B或服务器B—服务器A的探测流)。由此可见,本申请实施例中,针对交换机间探测,服务器的出入度上限为2k。
对于每个交换机,其生成的探测流数量如公式(1)所示:
由此可见,该方法保证探针均参与探测的同时,探测流数量的数量级从O(N2)降至O(N)。
步骤403i,响应于所述第三探测流中探测源的探测发起次数超过次数阈值,或探测目标的被探测次数超过次数阈值,或探测关系池中存在由两个服务器组成的探测流,重新确定第三探测流。
步骤403j,响应于交换机下各个服务器的探测发起次数和被探测次数均达到次数阈值,完成交换机内探测的探测流分配。
中心控制器对于同一交换机下的服务器集合,随机选择两个不同的服务器serverx和servery进行配对;判断探测源serverx发起探测次数是否超过k(发出的包数是否超过k),若未超过,则作为探测源,否则跳过;判断探测目标servery被探测次数是否超过k(接收的包数是否超过k),若未超过,则作为探测目标,否则跳过;判断serverx和servery之间是否已存在探测关系(serverx—servery或servery—serverx),若不存在,则生成探测流serverx—servery。即同一交换机下任意两个服务器之间最多存在一条探测流。
示意性的,中心控制器针对交换机内探测生成一条探测流的伪代码如下:
中心控制器按照上述代码进行循环,循环结束后该交换机下所有服务器均发出K次探测并接收K次探测。
步骤404,响应于网络探测完成,基于服务器上报的探测数据确定所述待探测网络的网络质量,所述探测数据包括探测流对应的丢包率。
在一种可能的实施方式中,各个探针每隔预定时长按照拉取到的探测流进行探测,并在每次探测结束后将探测数据上报至中心控制器,由中心控制器进行异常监控和告警,步骤404包括如下步骤:
步骤404a,响应于目标交换机对应的交换机内探测流的平均丢包率高于第一丢包率阈值,确定目标交换机网络质量异常。
对于交换机内探测,由于同一交换机下服务器之间的通信数据经由交换机转发,因此该类探测主要用于确定交换机的网络通信质量,服务器执行PING操作后记录探测流对应的丢包率,上报至中心控制器。若某一交换机对应的交换机内探测流的平均丢包率高于第一丢包率阈值,确定该交换机网络质量异常。
示意性的,平均丢包率是指剔除最高和最低丢包率后计算得到的丢包率平均值。
步骤404b,响应于第一交换机与第二交换机之间的交换机间探测流的平均丢包率高于第二丢包率阈值,确定第一交换机与第二交换机之间网络质量异常。
对于交换机间探测,中心控制器基于具体的探测维度确定网络质量。例如,若交换机A—交换机B探测维度对应的平均丢包率高于第二丢包率阈值,则确定由交换机A到交换机B的网络质量存在异常,若交换机B—交换机A探测维度对应的平均丢包率高于第二丢包率阈值,则确定由交换机B到交换机A的网络质量存在异常。
步骤404c,响应于第一数据中心与第二数据中心之间的数据中心间探测流的平均丢包率高于第三丢包率阈值,确定第一数据中心与第二数据中心之间网络质量异常。
对于数据中心间探测,中心控制器基于具体的探测维度确定网络质量。例如,若数据中心A—数据中心B探测维度对应的平均丢包率高于第三丢包率阈值,则确定由数据中心A到数据中心B的网络质量存在异常,若数据中心B—数据中心A探测维度对应的平均丢包率高于第三丢包率阈值,则确定由数据中心B到数据中心A的网络质量存在异常。
在一种可能的实施方式中,中心控制器确定交换机或数据中心存在网络质量异常时,向对应的计算机设备发送告警信息,以便运维人员能够及时进行维护。
同样的,对于交换机间探测以及数据中心间探测,中心控制器均剔除最高丢包率和最低丢包率后,基于其它数据计算平均丢包率,避免网络抖动或个别服务器异常导致探测结果错误,进行误告警等。
本申请实施例中,针对不同的探测层次设置相应的任务分配条件,限制服务器的输入度以及各个探测维度的探测流数量,使探测流均匀分布至各个探测节点,同时不生成重复探测流,避免探测资源的浪费,保证了各个探测节点、各个服务器公平竞争探测任务,实现负载均衡。
上述实施例示出了探测流的分配过程,在一种可能的实施方式中,为了避免探针自身的异常状况影响网络质量的探测结果,产生误告警的情况,中心控制器还需要对探针池进行维护,以确保探针池中尽可能覆盖待探测网络的可用服务器。图6示出了本申请另一个示例性实施例提供的网络质量的探测方法的流程图。本实施例以该方法应用于网络中用于分配探测任务和监控网络质量的中心控制服务器为例进行说明,该方法包括如下步骤。
步骤601,响应于信息上报时长内未接收到目标服务器发送的状态信息,将目标服务器从探针池中剔除,以及将目标服务器对应的探测流从探测关系池中剔除。
探针池中的服务器定时向中心控制器所在服务器拉取探测任务,并在拉取探测任务的同时,上报状态信息(例如服务器的心跳信息),对于长时间未上报状态信息的探针,中心控制器诊断其发生异常故障,将其加入服务器黑名单中,并从探针池中剔除。
在另一种可能的实施方式中,由于进行探测的首要条件是确保探测任务不影响探针中运行的正常业务,且负载过高的服务器在进行PING操作时可能会导致严重的丢包和延时,上报的探测数据可能无法反映网络质量的真实情况,因此中心控制器还通过监控系统获取各个探针的负载,将负载过高的服务器从探针池中剔除。
步骤602,基于剔除的探测流对应的探测层次、探测节点以及各个探测层次对应的任务分配条件,向探测关系池中补充探测流。
中心控制器还设置有一个监控任务,即定时检测是否有新剔除的探针,若存在,则对探测关系池中的探测流进行遍历,删除与该探针相关的探测流,即该探针作为探测源的探测流和作为探测目标的探测流,统计各个探测维度中删除的探测流数量,并进行补流,即针对各个探测维度生成新的探测流加入探测关系池中,等待服务器Agent拉取任务。
例如,中心控制器检测到剔除了探针m,探测关系池中存在探测流探针m(数据中心A)—探针n(数据中心B)、探针m(交换机a)—探针p(交换机c)、探针m(交换机a)—探针q(交换机a),则删除上述探测流,并针对探测维度数据中心A—数据中心B添加一条新的探测流,针对探测维度交换机a—交换机c添加一条新的探测流,针对探测维度交换机a—交换机a添加一条新的探测流。
中心控制器除了需要及时剔除异常以及负载过高的服务器,保持探针池中探针的可用性,还需要基于待探测网络的变动,将新的服务器加入探针池中,以确保探针池的覆盖性和完整性,并为后续补充探测流提供充足的探测资源。探针池的更新流程如图7所示,
本申请实施例中,在进行探测流的分配之外,还进行探针的选取和维护,及时剔除异常或负载过高的探针,保证网络质量探测结果不受探针影响,并且对于剔除的探针相关的探测流进行补充,保证网络探测的完整性。
图8是本申请一个示例性实施例提供的网络质量的探测装置的结构框图,该装置包括:
第一确定模块801,用于确定探针池中服务器的层次关系,所述探针池由待探测网络中的服务器组成,所述层次关系用于指示服务器所属的交换机以及数据中心;
生成模块802,用于基于所述层次关系以及各个探测层次对应的任务分配条件,构建探测关系池,所述探测层次包括数据中心间探测、交换机间探测以及交换机内探测,所述任务分配条件包括不存在重复探测流以及服务器的出入度不超过出入度上限,所述探针池中的服务器用于从所述探测关系池中拉取目标探测流以及按照所述目标探测流进行网络探测;
第二确定模块803,用于响应于网络探测完成,基于服务器上报的探测数据确定所述待探测网络的网络质量,所述探测数据包括探测流对应的丢包率。
可选的,所述生成模块802,包括:
第一确定单元,用于确定探测层次对应的探测流上限,所述探测流上限是以第一探测节点为探测源,以第二探测节点为探测目标的探测流数量上限,所述第一探测节点和所述第二探测节点为同一探测层次中两个不同的探测节点;
生成单元,用于基于所述探测流上限、所述层次关系以及所述任务分配条件,生成各个探测层次对应的探测流,构建所述探测任务池。
可选的,所述探测层次为所述数据中心间探测,所述数据中心探测是以所述待探测网络中的数据中心为所述探测节点的有向完全图探测;
所述生成单元,还用于:
基于第i轮探测流生成结果,更新各个数据中心对应的第一探针队列,所述第一探针队列是以服务器的出入度总数为主序,以服务器编号为次序的服务器队列,i为小于所述探测流上限的正整数;
按照所述任务分配条件,从所述第一探针队列中提取服务器,进行第i 1轮探测流生成;
响应于探测流生成轮数与所述探测流上限一致,完成所述数据中心间探测的探测流分配。
可选的,所述生成单元,还用于:
基于以所述数据中心为探测节点的有向完全图,从各个第一探针队列中提取服务器,构建第一探测流;
响应于所述探测关系池中不存在所述第一探测流,且所述第一探测流中任意服务器的出入度总数均未超过所述出入度上限,在所述探测关系池中加入所述第一探测流;
响应于所述探测关系池中存在所述第一探测流,或,所述第一探测流中存在服务器的出入度超过所述出入度上限,基于所述第一探针队列中的服务器排序重新确定探测流。
可选的,所述探测层次为所述交换机间探测,所述交换机间探测是以同一数据中心的交换机为所述探测节点的有向完全图探测;
所述生成单元,还用于:
基于第j轮探测流生成结果,更新各个交换机对应的第二探针队列,所述第二探针队列是以服务器的出入度总数为主序,以服务器编号为次序的服务器队列,j为小于所述探测流上限的正整数;
按照所述任务分配条件,从所述第二探针队列中提取服务器,进行第j 1轮探测流生成;
响应于探测流生成轮数与所述探测流上限一致,完成所述交换机间探测的探测流分配。
可选的,所述生成单元,还用于:
基于以所述交换机为探测节点的有向完全图,从各个第二探针队列中提取服务器,构建第二探测流;
响应于所述探测关系池中不存在所述第二探测流,且所述第二探测流中任意服务器的出入度总数均未超过所述出入度上限,在所述探测关系池中加入所述第二探测流;
响应于所述探测关系池中存在所述第二探测流,或,所述第二探测流中存在服务器的出入度超过所述出入度上限,基于所述第二探针队列中的服务器排序重新确定探测流。
可选的,所述探测层次为所述交换机内探测,所述交换机内探测是以同一个交换机下的服务器为所述探测节点的非完全图探测,所述任务分配条件还包括服务器的探测发起次数不超过次数阈值,且被探测次数不超过所述次数阈值;
所述生成单元,还用于:
随机确定两个服务器对应的第三探测流;
响应于所述第三探测流中探测源的探测发起次数未超过所述次数阈值,探测目标的被探测次数未超过所述次数阈值,且所述探测关系池中不存在由所述两个服务器组成的探测流,将所述第三探测流加入所述探测关系池;
响应于所述第三探测流中探测源的探测发起次数超过所述次数阈值,或探测目标的被探测次数超过所述次数阈值,或所述探测关系池中存在由所述两个服务器组成的探测流,重新确定第三探测流;
响应于交换机下各个服务器的探测发起次数和被探测次数均达到所述次数阈值,完成所述交换机内探测的探测流分配。
可选的,所述装置还包括:
第一更新模块,用于响应于信息上报时长内未接收到目标服务器发送的所述状态信息,或,所述目标服务器的负载高于负载阈值,将所述目标服务器从所述探针池中剔除,以及将所述目标服务器对应的探测流从所述探测关系池中剔除;
第二更新模块,用于基于剔除的探测流对应的探测层次、探测节点以及各个探测层次对应的任务分配条件,向所述探测关系池中补充探测流。
可选的,所述第二确定模块803,包括:
第二确定单元,用于响应于目标交换机对应的交换机内探测流的平均丢包率高于第一丢包率阈值,确定所述目标交换机网络质量异常;
第三确定单元,用于响应于第一交换机与第二交换机之间的交换机间探测流的平均丢包率高于第二丢包率阈值,确定所述第一交换机与所述第二交换机之间网络质量异常;
第四确定单元,用于响应于第一数据中心与第二数据中心之间的数据中心间探测流的平均丢包率高于第三丢包率阈值,确定所述第一数据中心与所述第二数据中心之间网络质量异常。
综上所述,本申请实施例中,采用分层探测的方式对待探测网络中同一交换机下、不同交换机之间以及不同数据中心之间的服务器的网络通信质量进行探测,通过对各个探测层次分别进行探测流分配,实现完整的网络质量探测覆盖,同时,通过控制服务器的出度和入度,以及不生成重复的探测流,确保探测流均匀分配到各个探测节点的服务器中,避免部分数据中心或交换机下服务器较少导致探测流较少造成误告警的情况,以及部分服务器承担较多的探测任务导致服务器负载过高影响正常业务的情况,实现负载均衡。
在示例性的实施例中,还提供了一种服务器,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由所述处理器加载并执行以实现如上述实施例中提供的由服务器执行的网络质量的探测方法。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如上各个实施例所述的网络质量的探测方法。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。服务器的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该服务器执行上述方面的各种可选实现方式中提供的网络质量的探测方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读存储介质中或者作为计算机可读存储介质上的一个或多个指令或代码进行传输。计算机可读存储介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。