网络健康状态分析方法、装置、计算机设备和存储介质

文档序号:490595 发布日期:2022-01-04 浏览:5次 >En<

阅读说明:本技术 网络健康状态分析方法、装置、计算机设备和存储介质 (Network health state analysis method and device, computer equipment and storage medium ) 是由 周玉坤 黄政威 王正 古亮 于 2021-11-19 设计创作,主要内容包括:本申请提出一种网络健康状态分析方法、装置、计算机设备和存储介质,该方法包括:根据预设探测频率通过第一主机和第二主机之间的至少一条链路向集群内对应的第二主机发送多个探测包,获取探测周期内第一主机的第一网口的每条链路的探测数据,根据探测数据确定探测周期内每条链路的丢包率和第一时延;根据探测周期内第一网口的所有链路的第一时延和丢包率确定第一网口及对应的网络是否为亚健康状态,若为亚健康状态,记录亚健康状态对应的原因信息。本申请能够兼容各种不同的应用场景,准确识别分析出网口及对应网络的健康状态及导致亚健康状态的原因。(The application provides a network health state analysis method, a device, computer equipment and a storage medium, wherein the method comprises the following steps: sending a plurality of detection packets to a corresponding second host in the cluster through at least one link between the first host and the second host according to a preset detection frequency, acquiring detection data of each link of a first network port of the first host in a detection period, and determining packet loss rate and first time delay of each link in the detection period according to the detection data; and determining whether the first network port and the corresponding network are in the sub-health state or not according to the first time delay and the packet loss rate of all links of the first network port in the detection period, and recording reason information corresponding to the sub-health state if the first network port and the corresponding network are in the sub-health state. The method and the device can be compatible with various different application scenes, and can accurately identify and analyze the health states of the network outlet and the corresponding network and the reasons causing the sub-health state.)

网络健康状态分析方法、装置、计算机设备和存储介质

技术领域

本申请涉及通信技术领域,尤其涉及一种网络健康状态分析方法、装置、计算机设备和存储介质。

背景技术

在公有云和私有云场景中,分布式存储系统承载着客户核心业务运行。通常为了保证分布式网络可靠性,采用聚合网络提供可靠性和双倍网络传输带宽。分布式存储网络聚合配置方案中支持单交换机链路聚合和双交换机链路聚合,目的是解决端口冗余和负载均衡的需求。正常的业务场景中,链路聚合后存在单链路异常导致网络性能受到影响,例如单网口物理亚健康状态(受电压、电流和温度等影响),光模块故障和光纤线接触不良等原因。链路聚合单条链路异常会导致IO延时大,影响范围是集群中所有虚拟机,进而导致客户业务性能下降,出现卡顿等问题。

为了解决聚合网络的亚健康问题,现有技术采用例如ping包探测法、集群内探测法、存储网链路管理和监控法。

然而,以上方案在使用场景、性能和应用难度方面存在不足和局限性。具体而言,Ping包探测法只能确定故障主机,无法确定具体是哪条链路的故障,因此不适合聚合网络。而集群内探测法缺乏对不同原因的具体分析手段。存储网链路管理和监控法能够准确地反映时延和丢包率对业务影响,但是需要对整个网络链路进行改造,具有侵入性,适用性和兼容性较差,且主动发探测包对业务有较大影响,实现难度大。

发明内容

为了解决现有技术中对网络亚健康状态分析在使用场景、性能和应用难度方面存在不足和局限性以及无法兼容的技术问题。本申请提供了一种网络健康状态分析方法、装置、计算机设备和存储介质,其主要目的在于兼容各种不同的应用场景,准确识别分析出网络亚健康状态所导致的原因,对于快速恢复网络健康状态提供依据。

为实现上述目的,本申请提供了一种网络健康状态分析方法,该方法包括:

根据预设探测频率通过第一主机和第二主机之间的至少一条链路向集群内对应的第二主机发送多个探测包,获得探测周期内第一主机的第一网口的每条链路的探测数据,根据探测数据确定探测周期内每条链路的丢包率和第一时延;

根据探测周期内第一网口的所有链路的第一时延和丢包率确定第一网口对应的网络是否为亚健康状态,若为亚健康状态,记录亚健康状态对应的原因信息。

此外,为实现上述目的,本申请还提供了一种网络健康状态分析装置,该装置包括:

探测模块,用于根据预设探测频率通过第一主机和第二主机之间的至少一条链路向集群内对应的第二主机发送多个探测包,获得探测周期内第一主机的第一网口的每条链路的探测数据,根据探测数据确定探测周期内每条链路的丢包率和第一时延;

分析模块,用于根据探测周期内第一网口的所有链路的第一时延和丢包率确定第一网口对应的网络是否为亚健康状态,若为亚健康状态,记录亚健康状态对应的原因信息。

为实现上述目的,本申请还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可读指令,处理器执行计算机可读指令时执行如前面任一项的网络健康状态分析方法的步骤。

为实现上述目的,本申请还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行如前面任一项的网络健康状态分析方法的步骤。

本申请提出的网络健康状态分析方法、装置、计算机设备和存储介质,通过自动向集群中的其他主机发送探测包进行探测以收集第一主机每个第一网口对应的每条链路的探测数据,并对探测数据进行分析,得到每条链路的丢包率和第一时延,以根据丢包率和第一时延准确识别分析出网络亚健康状态所导致的原因。且兼容各种不同的应用场景,对于快速恢复网络健康状态提供有力依据。

附图说明

图1为本申请一实施例中网络健康状态分析方法的应用场景图;

图2为本申请一实施例中网络健康状态分析方法的流程示意图;

图3为本申请一具体实施例中两主机网口通信的示意图;

图4为本申请一实施例中网络健康状态分析方法的时序图;

图5为本申请一实施例中网络健康状态分析装置的结构框图;

图6为本申请一实施例中计算机设备的内部结构框图。

本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请提供的网络健康状态分析方法可应用在如图1的应用环境中,其中,主机121、主机122和主机123位于同一个集群中,且集群中包括至少两个主机,主机之间通过网络通信。主机可以是终端也可以是服务器。终端可以但不限于各种个人计算机、笔记本电脑等。

主机121、主机122、主机123中任意一个主机都可以作为第一主机、其他主机作为第二主机。且,两两主机之间有存在至少一条链路。每条链路除了包括两个主机之外,还包括交换机(图中未示出)。

以主机121为第一主机、主机122和主机123为第二主机为例,主机121根据预设探测频率通过第一主机和第二主机之间的至少一条链路向集群内对应的第二主机(主机122、主机123等第二主机)发送多个探测包,获得探测周期内第一主机的第一网口的每条链路的探测数据,根据探测数据确定探测周期内每条链路的丢包率和第一时延;根据探测周期内第一网口的所有链路的第一时延均和丢包率确定第一网口及对应的网络是否为亚健康状态,若为亚健康状态,则记录亚健康状态对应的原因信息。

图2为本申请一实施例中网络健康状态分析方法的流程示意图。参考图2,以该方法应用在图1中的主机为例进行说明。该网络健康状态分析方法包括以下步骤S100-S200。

S100:根据预设探测频率通过第一主机和第二主机之间的至少一条链路向集群内对应的第二主机发送多个探测包,获得探测周期内第一主机的第一网口的每条链路的探测数据,根据探测数据确定探测周期内每条链路对应的丢包率和第一时延。

具体地,本实施例以集群中某个主机作为第一主机,其他主机作为第二主机,以第一主机作为本地主机和执行主体来进行说明。集群中每个主机都可以作为执行主体主动向其他主机发送探测包,即,集群内各主机之间互相主动探测发包,以检测自身网口是否正常。本实施例采用raw socket二层通信,直接通过Mac地址在主机网口间发包和收包。

第一主机包含至少一个第一网口,集群包括至少一个第二主机,每个第二主机包括至少一个第二网口,网口具体为物理网络接口。第一主机通过第一网口向任意一个第二主机对应的第二网口发送多个探测包,并根据第二主机通过对应的第二网口返回的回复包获取到接收时间戳等数据。本实施例实现了通过主机之间互发探测包收集每个主机对应的链路的探测数据,其中,链路为第一主机的第一网口与一个第二主机中对应的第二网口之间的通信通道。

第一主机的每个第一网口与不同第二主机对应的第二网口形成不同的链路,因此,每个第一网口可能有多条链路。

探测数据为第一主机可用的第一网口向对应的第二网口发送探测包到接收第二网口返回的回复包的整个事件所对应的数据。同一个第一网口会根据预设探测频率向对应的第二网口发送探测包,因此,每条链路对应的探测数据包括了所有次探测对应产生的数据或累计数据。

每次探测时每条链路的子探测数据包括对应的第一网口的网口信息及第二网口的网口信息、对应第一网口每次探测的发包数和收包数及每次探测的第二时延。

每次探测每条链路的第二时延的计算公式为:T=(T4-T1)-(T3-T2)。其中,T1为在端到端主机通信中,第一主机通过第一网口向第二主机对应的第二网口发送数据包P时的第一发送时间戳T1,T2为第二主机的第二网口收到数据包P的第一接收时间戳,T3为第二主机通过第二网口向第一主机的第一网口返回回复包H的第二发送时间戳,T4为第一主机通过第一网口接收到回复包H的第二接收时间戳。

图3为一个具体实施例示出了第一主机的多个第一网口与第二主机的多个第二网口通信的示意图。第一主机A包含第一网口1和第一网口2两个第一网口,第二主机B包含第二网口1和第二网口2。第一网口1通过交换机与第二网口1通信形成第一链路,第一网口2通过交换机与第二网口2通信形成第二链路,第一网口1通过交换机与第二网口2通信形成第三链路,第一网口2通过交换机与第二网口1通信形成第四链路。

第一主机A可以通过第一链路、第二链路、第三链路、第四链路中的任意一条链路与第二主机B通信。第一链路、第二链路、第三链路、第四链路中的每条链路除了包括两个主机之外,还包括交换机等转发设备。

本实施例具体基于滑动窗口协议和预设探测频率来控制第一主机的第一网口向第二主机对应的第二网口发送探测包,以收集获取探测数据。

滑动窗口协议用于在任意时刻维护一个连续且定长的发送数据包序号,用于网络数据传输时的流量控制,以避免拥塞的发生。该协议允许发送方在停止并等待确认前发送多个数据分组,可以加速数据的传输,提高网络吞吐量。本实施例通过滑动窗口协议协调第一主机向第二主机发送探测包的发送速度,同时根据预设探测频率进一步约束发包频率,使得探测操作既能满足一定的网络健康分析需求,又尽量避免了网络阻塞。

另外,网口信息具体可以包括网口的Mac地址,也可以包括网口的Mac地址、交换机与之连接的端口等不局限于此。

探测周期具体为网络健康分析的时间间隔。第一主机向第二主机发送探测包获取探测数据,但是获取到的探测数据不需要实时处理,而是每间隔一个探测周期提取一个探测周期的探测数据分析一次网口及对应网络的健康状态。

探测周期内每条链路的丢包率=(该链路网口发包数-该链路网口收包数)/该链路网口发包数*100%。

链路网口发包数为在探测周期内该链路的第一网口发送的探测包的数量,链路网口收包数为该链路的第一网口接收到该链路的第二网口返回的回复包的数量。

S200:根据探测周期内第一网口的所有链路的第一时延和丢包率确定第一网口对应的网络是否为亚健康状态,若为亚健康状态,记录亚健康状态对应的原因信息。

具体地,在一个探测周期内,每条链路会有多次探测,即,某条链路的第一网口会按照预设探测频率向对应的第二网口多次发送探测包,每次探测每条链路都会产生第二时延,因此,在一个探测周期内同一条链路会对应有多个第二时延。且,该链路的第一网口的发包数和收包数分别是多次探测发包和收包的累加。每个第一网口可能与不同第二主机对应的第二网口通信形成不同链路,第一时延是根据探测周期内对应链路的所有第二时延计算得到的。本申请的第一时延为探测周期内对应链路的P99时延或平均时延等不局限于此。链路的丢包率具体为一条链路在一个探测周期内对应的丢包率。

第一主机有至少一个第一网口,每个第一网口及对应网络的健康状态都是通过该第一网口的所有链路的第一时延和丢包率综合评判得到的。第一网口的健康状态可能为正常状态,也可能为亚健康状态,还可能为无连接状态等不局限于此。其中,第一网口的健康状态为亚健康状态时,其对应的网络的健康状态也为亚健康状态;第一网口的健康状态为无连接状态时,其对应的网络的健康状态也为无连接状态;第一网口的健康状态为正常状态时,其对应的网络的健康状态可能为正常状态可能为亚健康状态,此时亚健康导致的原因不是该第一网口引起的,可能是与第一网口通信的第二网口引起的。另外,亚健康状态也可能由不同的原因造成。同一个主机的所有第一网口中不同的第一网口及对应网络的健康状态可能相同也可能不同。本实施例通过判断网口的健康状态来判断对应网络的健康状态。

系统可以根据网络链路的亚健康状态进行告警和处置,从而解决网络亚健康状态导致业务性能下降问题。

本实施例通过确定集群内主机端口到端口链路,主动发送探测包收集指定链路的时延、丢包率得到探测数据;并根据探测数据分析集群内所有链路的状态,采用经验阈值来判断网络链路的亚健康状态;准确识别分析出网络亚健康状态所导致的原因。且兼容各种不同的应用场景,对于快速恢复网络健康状态提供有力依据。

在一个实施例中,步骤S200具体包括:

若在探测周期内第一网口的所有链路的第一时延均超过第一阈值,和/或,第一网口的所有链路的丢包率均超过第二阈值,则确定第一网口及对应网络的健康状态为亚健康状态;

记录亚健康状态对应的第一原因信息。

具体地,第一阈值和第二阈值都可以为灵敏值(根据实际情况可调整的值)或迟钝值(固定值),且第一阈值为时延对应异常的上限取值,第二阈值为丢包率对应异常的上限取值。本实施例在所有链路的第一时延均超过第一阈值的情况下确定第一网口的健康状态为亚健康状态,即该第一网口为亚健康网口,以及确定该亚健康网口对应网络的健康状态为亚健康状态;在所有链路的丢包率均超过第二阈值的情况下,也确定第一网口的健康状态为亚健康状态,即该第一网口为亚健康网口,以及确定该亚健康网口对应网络的健康状态为亚健康状态;在所有链路的第一时延均超过第一阈值且所有链路的丢包率均超过第二阈值的情况下,也确定该第一网口的健康状态为亚健康状态,即该第一网口为亚健康网口,以及确定该亚健康网口对应网络的健康状态为亚健康状态。

第一原因信息具体可以为链路故障。网络亚健康状态是指vs聚合网络单条链路出现丢包、延时大和协商成低带宽等问题时网络的状态;虽然以上问题不会导致网络中断,但是会不同程度影响网络传输性能。网口处于亚健康状态时其对应网络也处于亚健康状态仍然可以工作,但是效率低性能差。

在一个实施例中,探测数据包括对应链路的发包数和收包数及多个探测包对应的的多个第二时延;

该方法还包括:

根据第一网口所有链路对应的第二时延计算在探测周期内第一网口的平均时延,以及根据第一网口所有链路的发包数和收包数计算在探测周期内第一网口的丢包率。

具体地,第一网口的平均时延可以为探测周期内该第一网口所有链路对应的所有第二时延的均值,也可以是在一个探测周期内该第一网口所有链路的P99时延的均值。P99时延的计算方式为:将一个探测周期内任意一条链路的第二时延按照升序排列,在排序中顺序处于99%位置的第二时延即为该链路的P99时延。对该第一网口所有链路的P99时延求均值得到该第一网口的平均时延。或者,P99时延的计算方式为:对多个第二时延进行降序排序,将排序后的多个第二时延中前1%的第二时延作为P99时延。

第一网口的丢包率为在一个探测周期内该第一网口所有链路的发包数之和与所有链路的收包数之和的差值除以所有链路的发包数之和得到的。

当然,还可以记录在该探测周期内该第一网口每条链路的丢包率及所有的第二时延、第一时延。

在一个实施例中,步骤S200还包括:

在探测周期内第一网口的所有链路的第一时延均小于第一阈值且丢包率均小于第二阈值的情况下,若第一网口的所有链路的第一时延均超过第三阈值,和/或,第一网口的所有链路的丢包率均超过第四阈值,则确定第一网口及对应网络的健康状态为亚健康状态,记录亚健康状态对应的第二原因信息,其中,第三阈值小于第一阈值,第四阈值小于第二阈值;

该方法还包括:

若在探测周期内第一网口的所有链路中存在第一时延小于第三阈值且链路的丢包率小于第四阈值的链路,则确定第一网口的健康状态为正常状态。

具体地,在探测周期内第一网口的所有链路的第一时延均小于第一阈值且丢包率均小于第二阈值的情况下,如果满足第一网口的所有链路的第一时延均超过第三阈值、第一网口的所有链路的丢包率均超过第四阈值中的至少一个条件,则确定该第一网口及对应网络的健康状态为亚健康状态。且,前面实施例中第一网口的所有链路的第一时延均超过第一阈值和/或所有链路的丢包率均超过第二阈值的情况下确定的亚健康状态比本实施例的亚健康状态较严重些。

在第一网口的所有链路中存在第一时延小于第三阈值且链路的丢包率小于第四阈值的链路的情况下,则表明该第一网口存在链路状态为正常状态的链路。即,在探测周期内第一网口的所有链路中非所有链路的第一时延均超过第一阈值,且,非所有链路的第一时延均超过第三阈值且小于第一阈值,且,第一网口的所有链路中非所有链路的丢包率均超过第二阈值,且,非所有链路的丢包率均超过第四阈值且小于第二阈值,此情况下该第一网口存在链路状态为正常状态的链路,该第一网口是正常的,而引起该第一网口存在不正常的链路的原因是其他网口或其他原因导致第一网口部分链路出现问题。因此,确定并记录第一网口的健康状态为正常状态。

第一阈值、第二阈值、第三阈值和第四阈值都可以为灵敏值(根据实际情况可调整的值)或迟钝值(固定值)。第三阈值为时延对应异常的下限取值,第四阈值为丢包率对应异常的下限取值。第二原因信息具体可以为超过阈值。

若第一网口的健康状态判定为正常,则其状态原因可以记录为未知或Null。当第一网口的健康状态为正常时,此时第一网口对应的所有链路中存在部分链路的第一时延小于第三阈值且丢包率小于第四阈值,且这部分链路是正常的,之所以会引起部分链路的第一时延或丢包率过大可能是其他主机的第二网口或交换机故障等原因导致的。

在一个实施例中,探测数据包括探测周期内对应链路的发包数和收包数及对应链路中多个探测包对应的多个第二时延,该方法还包括:根据探测数据确定在探测周期内第一网口的平均时延,以及根据探测数据确定在探测周期内第一网口的丢包率。

具体地,第一网口被判定为正常或为亚健康状态时,都可以计算该第一网口在该探测周期内的平均时延,以及计算该第一网口在该探测周期内的丢包率。

第一网口的平均时延可以为在探测周期内该第一网口对应的所有链路的所有第二时延的均值,也可以是在一个探测周期内所有链路的P99时延的均值。P99时延的计算方式为:将一个探测周期内任意一条链路的第二时延按照升序排列,在排序中顺序处于99%位置的第二时延即为该链路的P99时延。对该第一网口所有链路的P99时延求均值得到该第一网口的平均时延。或者,P99时延的计算方式为:对多个第二时延进行降序排序,将排序后的多个第二时延中前1%的第二时延作为P99时延。

第一网口的丢包率为在一个探测周期内该第一网口所有链路的发包数之和与所有链路的收包数之和的差值除以所有链路的发包数之后得到的。

得到的探测周期内第一网口的平均时延和/或在探测周期内第一网口的所有第二时延,以及在探测周期内第一网口的丢包率可以记录到日志文件中输出,方便工程人员根据输出的日志文件快速排除并定位到发生网络故障的原因。

在一个实施例中,在步骤S100之前,该方法还包括:

基于第一主机与集群中第二主机之间的网络聚合模式信息,通过集群拓扑生成探测列表,探测列表包括第一主机与集群中第二主机之间每条链路的链路信息,链路信息包括第一主机的第一网口的网口信息、与第一网口对应的用于收包的第二主机的第二网口的网口信息。

具体地,网络聚合模式信息包括单交换机链路聚合模式和双交换机链路聚合模式。在单交换机链路聚合模式下,集群中的主机之间通过同一个交换机进行通信,且,任意两个主机之间通过该交换机的链路包括至少一条。在双交换机链路聚合模式下,集群中的任意两个主机之间可以通过两个交换机进行通信,且对于这两个主机来说,不同交换机所对应的链路不同。

具体地,第一主机分别向集群中每个第二主机发送集群拓扑探测请求,根据第二主机返回的的主机信息生成探测列表。主机信息包括主机名、IP地址、该主机所包含的网口及网口的Mac地址。

每个第二主机包括至少一个第二网口。

步骤S100具体包括:

根据探测列表和预设探测频率,通过第一主机的第一网口向对应的第二网口发送多个探测包。

具体地,在单交换机链路聚合模式下,两个网口Mac地址不同,通过目标端(第二主机)的Mac地址来确定第二主机的哪个第二网口来收包。在双交换机链路聚合模式下,两个网口Mac地址相同,两条链路不同,指定网口发包,则对方一定是固定网口收包。具体而言,主机A在发包时指定第一网口A-eth3发包,则第一网口A-eth3对应的主机B的第二网口一定是B-eth3收包;主机B的第二网口B-eth3收到探测包后,通过第二网口B-eth3向第一网口A-eth3回复数据包。

在一个实施例中,在步骤S100之前,该方法还包括:

通过获取到的第一主机的第一网口的网口状态确定第一网口是否为可用网口,网口状态包括连接状态和无连接状态。

步骤S100具体包括:

根据预设探测频率通过可用网口与对应的第二网口形成的链路向集群内对应的第二主机发送多个探测包。

具体地,检测第一网口的网口状态link status即检测第一网口的网络连通性。第一主机通过检查连通性命令:realethtool eth4|grep"Link detected"|awk-F:'{print$2}'来获取第一网口的网口状态。如果第一主机调用检测连通性命令后,返回结果为yes,则第一网口的网口状态为连接状态,判定该第一网口为可用网口。如果第一主机调用检测连通性命令后,返回结果为no,则第一网口的网口状态为无连接状态,判定该第一网口为不可用网口。

本实施例提前检测网口的连通性,只调用为可用网口的第一网口向第二主机对应的第二网口发送探测包,对于为不可用网口的第一网口则无需发送探测包,不仅减少了无效探测,且减少了不可用网口或连通性对网口健康分析的干扰。同时,也可以提前对各个第一网口进行初步的网口健康诊断。

在一个实施例中,在步骤S100之前,该方法还包括:

通过获取到的第一主机的第一网口的网口状态确定第一网口是否为可用网口,网口状态包括连接状态和无连接状态,

获取可用网口的协商带宽和额定带宽,若协商带宽小于对应的额定带宽,则确定对应的可用网口协商带宽降级。

步骤S100具体包括:

根据预设探测频率通过协商带宽未降级的可用网口与对应的第二网口形成的链路向集群内对应的第二主机发送多个探测包。

具体地,在检测到第一网口的网口状态为连接状态,即该第一网口为可用网口后,还需要检测该第一网口的协商带宽是否正常。获取网口协商带宽命令为以下任意一种:

realethtool eth4|grep Speed|awk-F:'{print$2}',

realethtool eth4|grep Duplex|awk-F:'{print$2}'。

如果获取到的第一网口的协商带宽小于对应的额定带宽,则判定该第一网口带宽协商异常或协商带宽降级,该第一网口属于故障网口。故障网口也不能用来发送探测包,最后只能同时满足为可用网口写协商带宽没有降级的第一网口才能向对应的第二网口发送探测包。其中,额定带宽为lspci物理网卡带宽。本实施例提前检测第一网口的连通性和协商带宽,进一步排除了连通性和协商带宽对网口健康诊断的干扰。

在一个实施例中,该方法还包括:

若第一网口的网口状态为无连接,则确定第一网口及对应网络的健康状态为无连接状态,确定无连接状态对应的第三原因信息。

在一个实施例中,该方法还包括:若第一网口协商带宽降级,则确定第一网口及对应的网络的健康状态为亚健康状态,确定亚健康状态对应的第四原因信息。

具体地,对于为不可用网口的第一网口,由于不会向第二网口发送探测包,且可以直接判定其网口及对应网络的健康状态,因此,直接记录其健康状态为无连接(no link)状态,第三原因具体可以为无连接(no link)。

如果第一网口为可用网口但协商带宽降级,则直接记录第一网口及对应网络的健康状态为亚健康状态,无需向第二网口发送探测包。并记录亚健康状态对应的第四原因信息为速率协商失败(Speed Negotiation Failed)。

在一个实施例中,该方法还包括:

若第一网口及对应的网络的健康状态为亚健康状态,则监控第一网口的网口运行数据;

根据网口运行数据确定在预设时间段内网口运行数据中的各个运行指标是否增加,网口运行数据的运行指标包括第一错误包数量和第二错误包数量,第一错误包数量为多种原因产生的错误包的总数量,第二错误包数量为同一个原因产生的错误包的数量;

若在预设时间段内网口运行数据中存在数值增加的运行指标,则将亚健康状态对应的第一原因信息更新为第五原因信息。

具体地,如果第一网口及对应网络的健康状态为亚健康状态,则继续深层次的分析挖掘导致第一网口亚健康状态的原因。

第一错误包数量包括fifo_errors,即包括统计的缓冲区错误包的总数量,第一错误包数量包括rx_fifo_errors(接收队列统计到的错误收包的数量)和tx_fifo_errors(发送队列统计到的错误发包的数量)。这包括由too-long-frames错误、Ring Buffer溢出错误、crc校验错误、帧同步错误、fifo overruns以及missedpkg等等原因产生的错误包。

第二错误包数量为某个原因产生的错误包的数量,例如overruns。Overruns:表示fifo的overruns,即,接收队列溢出产生错误,当抵达的包多于内核可以处理的包时,计算机会产生漫溢(overruns)。更具体地,这个数据包还没有被进入到网卡的接收缓存fifo队列就被丢掉,因为此时网卡的fifo是满的。因为系统繁忙,来不及响应网卡中断,导致网卡里的数据包没有及时的拷贝到系统内存,fifo是满的就导致后面的数据包进不来,即这个数据包被网卡硬件丢掉。这是由于Ring Buffer(aka Driver Queue)传输的IO大于kernel能够处理的IO导致的,而Ring Buffer则是指在发起IRQ请求之前的那块buffer。很明显,overruns的增大意味着数据包没到Ring Buffer就被网卡物理层给丢弃了,而CPU无法及时的处理中断是造成Ring Buffer满的原因之一。

第一主机通过ethtool或/proc/net/dev可以查看丢弃的包统计,在统计项中以errors标识:

realethtool-S eth4|grep tx_fifo|awk-F:'{print$1}',

realethtool-S eth4|grep rx_fifo|awk-F:'{print$2}'。

第一主机通过以下命令可以获取到overruns值。

for i in`seq 1100`;do ifconfig ethX|grep RX|grep overruns|awk‘{print$3}’|awk-F:‘{print$2}’;sleep 1;done,

for i in`seq 1100`;do ifconfig ethX|grep TX|grep overruns|awk‘{print$3}’|awk-F:‘{print$2}’;sleep 1;done。

预设时间段可以设置为2s、1分钟、2分钟等不局限于此。

如果在预设时间段内至少一个运行指标的数值增加,则将引起该第一网口及对应网络的亚健康的原因由第一原因信息更新为第五原因信息,第五原因信息具体可以为网口故障(interface fault)。

在一个实施例中,该方法还包括:

若在预设时间段内网口运行数据中存在数值增加的运行指标,则检测第一网口是否包含对应的光模块;

若第一网口包含对应的光模块,则检测光模块的温度、输入功率和输出功率是否正常;

若光模块的温度、输入功率和输出功率中至少一个异常,则将亚健康状态对应的第五原因信息更新为第六原因信息。

具体地,如果第一网口的运行指标在预设时间段内没有增加,则继续深层次的分析挖掘导致第一网口不健康的原因。

第一主机自动检测第一网口是否包含光模块以及光模块的多个运行参数。

第一主机侧检测光模块信息,两端光模块类型是否匹配,使用以下命令:

realethtool-m ethX|grep"Transceiver type",此命令用于检查光模块传输类型。

realethtool-m ethX|grep"Length(OM3)",此命令用于检查传输距离。

realethtool-m ethX|grep"Laserwavelength",此命令用于检查光模块波长。

如果输出为error,则表示没有光模块,相反,则存在光模块。如果没有光模块,则记录第一网口及对应网络的健康状态仍然为亚健康,第五原因信息不变。

如果存在光模块,则通过ethtool-m命令可以获取光模块温度、输入功率和输出功率。判断该光模块的温度、输入功率和输出功率是否正常,如果至少其中一个不正常,则第一网口及对应网络的健康状态仍然为亚健康状态,以及将第五原因信息更新为第六原因信息。第六原因信息具体为光模块异常(optical module fault)。

如果存在光模块,且光模块的温度、输入功率和输出功率都正常,则记录第一网口及对应网络的健康状态仍然为亚健康状态,以及记录此时亚健康状态对应的第七原因信息,第七原因信息具体可以为链路故障(link fault)。

在一个实施例中,该方法还包括:

统计第一主机中为亚健康状态的第一网口的故障网口数量;

在集群的网络聚合模式为单交换机链路聚合模式且网口的绑定模式为第七种模式的情况下,若故障网口数量为第一主机所包含的第一网口的总数量,则更新亚健康状态对应的原因信息为单交换机故障;

在集群的网络聚合模式为双交换机链路聚合模式且网口的绑定模式为第一种模式的情况下,若故障网口数量小于第一主机所包含的第一网口的总数量,则更新亚健康状态对应的原因信息为双交换机模式下单交换机故障,

若故障网口数量为第一主机所包含的第一网口的总数量,则更新亚健康状态对应的原因信息为双交换机模式下双交换机故障。

具体地,第一种模式:mod=0,即:(balance-rr)Round-robin policy(平衡抡循环策略)。特点:传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1…一直循环下去,直到最后一个传输完毕),此模式提供负载平衡和容错能力;但是我们知道如果一个连接或者会话的数据包从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降。第七种模式:mod=6,即:(balance-alb)Adaptive load balancing(适配器适应性负载均衡)。特点:该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receive load balance,rlb),而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。

图4为本申请一实施例中网络健康状态分析方法的时序图;参考图4,该第一主机中配置有网络健康分析程序。该网络健康分析程序包括探测工具、分析工具和拓扑探测工具(图中未示出)。网络健康分析程序启动后,第一主机给网络健康分析程序分配一个主进程,该主进程调用拓扑探测工具通过集群拓扑探测生成探测列表。主进程还调用分析工具检测第一网口的网口状态是否正常,如果网口状态为无连接,则判定第一网口异常,为不可用接口。此情况在网口状态文件中记录该第一网口及对应的网络的健康状态为无连接状态,对应的原因为无连接。

如果第一网口的网口状态为连接,则主进程继续调用分析工具检查第一网口的协商带宽是否小于额定带宽,如果第一网口的协商带宽小于额定带宽,则判定该第一网口协商带宽降级。此情况在网口状态文件中记录该第一网口及对应的网络的健康状态为亚健康状态,对应的原因为速率协商失败。

如果第一网口的网口状态为连接,且协商带宽大于或等于额定带宽即协商带宽未降级,则主进程调用探测工具,探测工具根据预设探测频率通过协商带宽未降级的可用网口向集群内的第二主机发送探测包,以收集探测数据,计算链路的第一时延和链路的丢包率。

主进程定时或每间隔一段时间判断在探测周期内第一网口的所有链路的第一时延是否均超过第一阈值,或,第一网口的所有链路的丢包率是否均超过第二阈值。如果在探测周期内第一网口的所有链路的第一时延均超过第一阈值,或,第一网口的所有链路的丢包率均超过第二阈值,则在网口状态文件中记录该第一网口及对应的网络的健康状态为亚健康状态,对应的原因为链路故障,并记录第一网口的平均时延和/或所有第一时延以及丢包率。

如果在探测周期内第一网口的所有链路的第一时延均小于第一阈值且丢包率均小于第二阈值的情况下,若第一网口的所有链路的第一时延均超过第三阈值,和/或,第一网口的所有链路的丢包率均超过第四阈值,则在网口状态文件中记录该第一网口及对应的网络的健康状态为亚健康状态,对应的原因为超过阈值,记录第一网口的平均时延和/或所有第一时延以及丢包率。

如果在探测周期内第一网口的所有链路中存在第一时延小于第三阈值且链路的丢包率小于第四阈值的链路,则在网口状态文件中记录该第一网口的健康状态为正常状态,对应的原因为Null(或空)。

如果在探测周期内第一网口的所有链路的第一时延均大于或等于第一阈值,或,第一网口的所有链路的丢包率均大于或等于第二阈值,则主进程继续调用分析模块监控第一网口的网口运行数据,以判断在预设时间段内网口运行数据中的各个运行指标是否增加,如果在预设时间段内网口运行数据中存在数值增加的运行指标,则在网口状态文件中记录该第一网口及对应网络的健康状态为亚健康状态,对应的原因为网口故障,并记录第一网口的平均时延和/或所有第一时延以及丢包率。

如果在预设时间段内网口运行数据中的各个运行指标没有增加,则进程继续调用分析模块检测第一网口是否包含对应的光模块,以及获取并检测光模块的温度、输入功率和输出功率是否正常。如果存在光模块,且光模块的温度、输入功率和输出功率中至少一个异常,则在网口状态文件中记录该第一网口及对应网络的健康状态为亚健康状态,对应的原因为光模块异常,并记录第一网口的平均时延和/或所有第一时延以及丢包率。

本申请通过准确识别所有链路并主动发探测包,然后获取链路数据用来分析网络健康状态。特别适用于分布式存储聚合网络的网络健康分析。特别是对于协商带宽降级、时延高或丢包大等亚健康状态问题,用于支持亚健康状态链路的告警和处置,为亚健康状态链路的处置和恢复提供依据。

由于网络问题种类特别多,导致的后果也不相同。本申请特别适用于对存储聚合网络单网口(单链路)网络亚健康状态的分析。具体而言,解决存储聚合网络问题。其中单链路亚健康状态问题是指网络连通,但是性能下降。单链路亚健康状态问题的原因很多,本次主要分析单链路出现丢包问题,时延大问题,单条链路协商成低带宽等问题。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

图5为本申请一实施例中网络健康状态分析装置的结构框图。参考图5,该网络健康状态分析装置应用于为本地主机的第一主机,该网络健康状态分析装置包括:

探测模块100,用于根据预设探测频率通过第一主机和第二主机之间的至少一条链路向集群内对应的第二主机发送多个探测包,获得探测周期内第一主机的第一网口的每条链路的探测数据,根据探测数据确定探测周期内每条链路对应的丢包率和第一时延;

分析模块200,用于根据探测周期内第一网口的所有链路的第一时延和丢包率确定第一网口对应的网络是否为亚健康状态,若为亚健康状态,记录亚健康状态对应的原因信息。

在一个实施例中,分析模块200包括:

第一分析模块,用于若在探测周期内第一网口的所有链路的第一时延均超过第一阈值,和/或,第一网口的所有链路的丢包率均超过第二阈值,则确定第一网口对应网络的健康状态为亚健康状态;

第一原因记录模块,用于记录亚健康状态对应的第一原因信息。

网络健康状态分析装置一般设置于服务器/终端设备中。

在一个实施例中,分析模块200还包括:

第二分析模块,用于在探测周期内第一网口的所有链路的第一时延均小于第一阈值且丢包率均小于第二阈值的情况下,若第一网口的所有链路的第一时延均超过第三阈值,和/或,第一网口的所有链路的丢包率均超过第四阈值,则确定第一网口对应的网络的健康状态为亚健康状态,记录亚健康状态对应的第二原因信息,其中,第三阈值小于第一阈值,第四阈值小于第二阈值。

在一个实施例中,该装置还包括:

第三分析模块,若在探测周期内第一网口的所有链路中存在第一时延小于第三阈值且链路的丢包率小于第四阈值的链路,则确定第一网口的健康状态为正常状态。

在一个实施例中,第一时延包括平均时延或P99时延,探测数据包括对应链路的发包数和收包数及对应链路中多个探测包对应的多个第二时延,探测模块100具体用于:根据发包数和收包数确定丢包率,

根据多个第二时延计算平均时延,或者,对多个第二时延进行降序排序,将排序后的多个第二时延中前1%的第二时延作为P99时延。

在一个实施例中,该装置还包括:

拓扑探测模块,用于基于第一主机与集群中第二主机之间的网络聚合模式信息,通过集群拓扑生成探测列表,探测列表包括第一主机与集群中第二主机之间每条链路的链路信息,链路信息包括第一主机的第一网口的网口信息、与第一网口对应的用于收包的第二主机的第二网口的网口信息;

探测模块100具体用于根据探测列表和预设探测频率,通过第一主机的第一网口向对应的第二网口发送多个探测包。

在一个实施例中,该装置还包括:

连接状态判断模块,用于通过获取到的第一主机的第一网口的网口状态确定第一网口是否为可用网口,网口状态包括连接状态和无连接状态;

探测模块100具体用于根据预设探测频率通过可用网口与对应的第二网口形成的链路向集群内对应的第二主机发送多个探测包。

在一个实施例中,该装置还包括:

连接状态判断模块,用于通过获取到的第一主机的第一网口的网口状态确定第一网口是否为可用网口,网口状态包括连接状态和无连接状态,

带宽协商判断模块,用于获取可用网口的协商带宽和额定带宽,若协商带宽小于对应的额定带宽,则确定对应的可用网口协商带宽降级,

探测模块100具体用于根据预设探测频率通过协商带宽未降级的可用网口与对应的第二网口形成的链路向集群内对应的第二主机发送多个探测包。

在一个实施例中,该装置还包括:

第四分析模块,用于若第一网口的网口状态为无连接状态,则确定第一网口对应网络的健康状态为无连接状态,确定无连接状态对应的第三原因信息。

在一个实施例中,该装置还包括:

第五分析模块,用于若第一网口协商带宽降级,则确定第一网口对应网络的健康状态为亚健康状态,确定亚健康状态对应的第四原因信息。

在一个实施例中,探测数据包括探测数据包括对应链路的发包数和收包数及多个探测包对应的的多个第二时延,该装置还包括:

第二计算模块,用于根据第一网口所有链路对应的第二时延计算在探测周期内第一网口的平均时延,以及根据第一网口所有链路的发包数和收包数计算在探测周期内第一网口的丢包率。

在一个实施例中,该装置还包括:

监控模块,用于若第一网口对应网络的健康状态为亚健康状态,则监控第一网口的网口运行数据,

运行数据判断模块,用于根据网口运行数据确定在预设时间段内网口运行数据中的各个运行指标是否增加,网口运行数据的运行指标包括第一错误包数量和第二错误包数量,第一错误包数量为多种原因产生的错误包的总数量,第二错误包数量为同一个原因产生的错误包的数量;

第一更新模块,用于若在预设时间段内网口运行数据中存在数值增加的运行指标,则将亚健康状态对应的第一原因信息更新为第五原因信息。

在一个实施例中,该装置还包括:

光模块检测模块,用于若在预设时间段内网口运行数据中不存在数值增加的运行指标,则检测第一网口是否包含对应的光模块;

光模块运行数据获取模块,用于若第一网口包含对应的光模块,则检测光模块的温度、输入功率和输出功率是否正常;

第二更新模块,用于若光模块的温度、输入功率和输出功率中至少一个异常,则将亚健康状态对应的第五原因信息更新为第六原因信息。

其中上述模块/单元中的“第一”和“第二”的意义仅在于将不同的模块/单元加以区分,并不用于限定哪个模块/单元的优先级更高或者其它的限定意义。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本申请中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式。

关于网络健康状态分析装置的具体限定可以参见上文中对于网络健康状态分析方法的限定,在此不再赘述。上述网络健康状态分析装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

图6为本申请一实施例中计算机设备的内部结构框图。该计算机设备具体可以是图1中的任意一个主机。如图6所示,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,该计算机设备的处理器用于提供计算和控制能力。存储器包括存储介质和内存储器。存储介质可以是非易失性存储介质,也可以是易失性存储介质。存储介质存储有操作系统,还可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器实现网络健康状态分析方法。该内存储器为存储介质中的操作系统和计算机可读指令的运行提供环境。该内存储器中也可储存有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行网络健康状态分析方法。该计算机设备的网络接口用于与外部服务器通过网络连接通信。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可读指令(例如计算机程序),处理器执行计算机可读指令时实现上述实施例中网络健康状态分析方法的步骤,例如图2所示的步骤S100至步骤S200及该方法的其它扩展和相关步骤的延伸。或者,处理器执行计算机可读指令时实现上述实施例中网络健康状态分析装置的各模块/单元的功能,例如图5所示模块100至模块200的功能。为避免重复,这里不再赘述。

处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。

存储器可用于存储计算机可读指令和/或模块,处理器通过运行或执行存储在存储器内的计算机可读指令和/或模块,以及调用存储在存储器内的数据,实现计算机装置的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、视频数据等)等。

存储器可以集成在处理器中,也可以与处理器分开设置。

本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机可读指令,计算机可读指令被处理器执行时实现上述实施例中网络健康状态分析方法的步骤,例如图2所示的步骤S100至步骤S200及该方法的其它扩展和相关步骤的延伸。或者,计算机可读指令被处理器执行时实现上述实施例中网络健康状态分析装置的各模块/单元的功能,例如图5所示模块100至模块200的功能。为避免重复,这里不再赘述。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指示相关的硬件来完成,所述的计算机可读指令可存储于一计算机可读取存储介质中,该计算机可读指令在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双倍速率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。

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

以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

23页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种通信优化方法和装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类