一种快速精确计量网络链路质量的方法和装置
技术领域
本发明涉及网络通信领域,尤其涉及一种快速精确计量网络链路 质量的方法和装置。
背景技术
目前,诊断广域网网络质量主要是依靠ping、traceroute等工 具。这两个工具都是使用ICMP协议,对目的网络发送一定的ICMP包, 然后根据ICMP返回包的时延、丢包率、经过的跳数、途经的路由等 指标来判断当前网络的情况,但其缺点是返回的以上指标零散、孤立。 而且、由于单一的工具不能同时获取到上面所有的指标,同时、适用 多个工具串行测试、耗费时间很长、操作也较为复制、并且难以从网 路上各个节点之间的数据关联、各个指标的数据关联中提取出有效的 参考信息,需要测试人员具备非常专业的网络知识和丰富的测试经验 和技巧,并且过度的依赖测试人员的经验反而引入过多的主观因素, 很容易造成网络质量的误判或者判断结果存在很大的偏差。
发明内容
基于此,本发明提供了一种快速精确计量网络链路质量的方法。
一种快速精确计量网络链路质量的方法,所述方法包括:
通过网络链路将多个ICMP请求回应包从源主机发送至目的主 机;
获取所述ICMP请求回应包通过所述网络链路的链路信息,所述 链路信息包括节点数量和各个节点的IP地址;
根据一预设策略,计算得到各个节点的丢包率、平均时延和时延 标准偏差;
设定所述各个节点的丢包率、平均时延和时延标准偏差相对应的 计算因子和权值,并根据一预设算法计算该网络链路的链路质量分 数。
在其中一个实施例中,在所述获取所述数据包通过所述网络链路 的链路信息,所述链路信息包括节点数量和各个节点的IP地址的步 骤后,所述方法还包括:
获取到链路信息后,对该网络链路上每个节点都发送N个类型 为0,代码为0的ICMP应答请求包,N>10;
根据ICMP协议,每一个节点每收到一个ICMP请求应答包后会 立即回应一个类型为8,代码值为0的ICMP请求回应包。
在其中一个实施例中,所述步骤根据一预设策略,计算得到各个 节点的丢包率、平均时延和时延标准偏差包括:
源主机根据返回的ICMP请求回应包的源ip地址判断ICMP请求 回应包的节点来源;
每个节点的时延信息各使用一个队列进行保存;
在每次发送完ICMP请求回应包后,等待接收后的一小段时间, 并统计每个节点收到ICMP请求回应包的数量、平均回应时间,进而 得到每个网络节点的丢包率、平均时延和时延标准偏差。
在其中一个实施例中,所述预设算法具体为:
链路质量分数=100-(丢包率计算因子*丢包率*丢包率权值+ 时延计算因子*时延*时延权值+跳数计算因子*跳数*跳数权值+ 时延标准偏差计算因子*时延标准偏差值*时延标准偏差权值)。
在其中一个实施例中,所述丢包率、平均时延和时延标准偏差的 计算公式包括:
其中x
i为每个ICMP请求回应包的时延,N 为收到的ICMP请求回应包的数量;
其中N为ICMP请求回应 包的数量,x
i为每个ICMP请求回应包的时延,u为所有时延样本的 平均时延。
一种快速精确计量网络链路质量的装置,所述装置包括:
第一发送模块,用于通过网络链路将多个ICMP请求回应包从源 主机发送至目的主机;
获取模块,用于获取所述数据包通过所述网络链路的链路信息, 所述链路信息包括节点数量和各个节点的IP地址;
计算模块,用于根据一预设策略,计算得到各个节点的丢包率、 平均时延和时延标准偏差;
设定模块,用于设定所述各个节点的丢包率、平均时延和时延标 准偏差相对应的计算因子和权值,并根据一预设算法计算该网络链路 的链路质量分数。
在其中一个实施例中,所述装置还包括:
第二发送模块,用于获取到链路信息后,对该网络链路上每个节 点都发送N个类型为0,代码为0的ICMP应答请求包,N>10;
回应模块,用于根据ICMP协议,每一个节点每收到一个ICMP 请求应答包后会立即回应一个类型为8,代码值为0的ICMP请求回 应包。
在其中一个实施例中,所述计算模块包括:
判断单元,用于源主机根据返回的ICMP请求回应包的源ip地址 判断ICMP请求回应包的节点来源;
保存单元,用于每个节点的时延信息各使用一个队列进行保存;
统计单元,用于在每次发送完ICMP请求回应包后,等待接收后 的一小段时间,并统计每个节点收到ICMP请求回应包的数量、平均 回应时间,进而得到每个网络节点的丢包率、平均时延和时延标准偏 差。
在其中一个实施例中,所述预设算法具体为:
链路质量分数=100-(丢包率计算因子*丢包率*丢包率权值+ 时延计算因子*时延*时延权值+跳数计算因子*跳数*跳数权值+ 时延标准偏差计算因子*时延标准偏差值*时延标准偏差权值)。
在其中一个实施例中,所述丢包率、平均时延和时延标准偏差的 计算公式包括:
其中x
i为每个ICMP请求回应包的时延,N 为收到的ICMP请求回应包的数量;
其中N为ICMP请求回应 包的数量,x
i为每个ICMP请求回应包的时延,u为所有时延样本的 平均时延。
有益效果:
本发明的一种快速精确计量网络链路质量的方法,所述方法包 括:通过网络链路将多个ICMP请求回应包从源主机发送至目的主 机;获取所述ICMP请求回应包通过所述网络链路的链路信息,所述 链路信息包括节点数量和各个节点的IP地址;根据一预设策略,计 算得到各个节点的丢包率、平均时延和时延标准偏差;设定所述各个 节点的丢包率、平均时延和时延标准偏差相对应的计算因子和权值, 并根据一预设算法计算该网络链路的链路质量分数。该网络链路质量 计量方法通过并行测试的方式使测试更加迅速、客观,用户可根据不 同的应用场景和特定的需要设置各个网络指标(时延、时延标准偏差、 跳数、丢包率)来计算网络链路质量的分数,以满足各种不同的应用 场合,计算时候充分利用源主机和目的主机之间各个网络节点间的关 联、将表征网络抖动情况的时延标准偏差纳入网络质量计量的因子, 使计算出来的质量结果相比人工经验评判更加、简单、精准、迅速、直观。
附图说明
图1是本发明的一种快速精确计量网络链路质量的方法流程图。
图2是本发明的一种快速精确计量网络链路质量的装置框图。
具体实施方式
为使本领域的普通技术人员更加清楚地理解本发明所要解决的 技术问题、技术方案和有益技术效果,以下结合附图和实施例对本发 明做进一步的阐述。
请参照图1,一种快速精确计量网络链路质量的方法,所述方法 包括:
S100:通过网络链路将多个ICMP请求回应包从源主机发送至目 的主机。
本网络链路质量计量方法的例程运行在源主机上,整个场景的实体包括: 源主机(1)、源主机和目标主机之间的网络节点(2、3、4、5、6、12、13、14、 15、16、17、18、19、20)、目标主机(7)。
需要说明的是,该方法首先使用ICMP协议找到出从源主机到目 标主机所经过的节点,首先,在源主机朝目标主机发送一个TTL为1 的IP地址的UDP数据包,该数据包的目的端口为一个不常用的端口 (大于50000),当路径上的第一个网络节点收到这个UDP数据包时, 该网络节点会因TTL减1变为0而将此UDP数据包丢掉,并返回一 个超时的ICMP报文,源主机收到这个超时消息后,便可以知道这个 网络节点存在于通往目标主机的路径上。接着源主机再使用同样的方 法朝目标主机发送一个TTL为2的UDP数据包,同样,当路径上的 第二个网络节点收到这个UDP数据包的时候也会因TTL减1变为0 而丢掉该UDP数据包并返回一个超时的ICMP报文,以此类推,源 主机每次都将送出的UDP数据包的TTL都加1来发现下一个网络节 点,重复这个动作直到某个UDP数据包到达目的地。当UDP数据包 到达目的地后时,因为UDP数据包的目的端口是一个不常用的端口 (大于50000),目的主机没有一个应用在监听这个端口,目的主机 便产生一份“端口不可达”的ICMP错误报文,收到这个消息时,便 可以知道到达了目的地。
获取到从源主机到目的主机的各个网络节点的同时,保存每一个 节点的IP地址,形成一个从源主机到目的主机的网络路径表。
S200:获取所述ICMP请求回应包通过所述网络链路的链路信 息,所述链路信息包括节点数量和各个节点的IP地址。
需要说明的是,通过上述的步骤,源主机获取到了从源主机到目的主机的 链路信息,这链路信息包括:节点的数量、即跳数,每个网络节点的IP地址。 获取到链路信息后,接着立即对该链路上每个网络节点都发送N个类型为0, 代码为0的ICMP应答请求包,发往每个网络节点的应答请求包的数量默认为 20个,可以根据测试需求来调整N的大小,N越大,计算最终结果越准,但耗 时会更长一些,但最小数量不能小于10,否则计算结果会有较大偏差,根据ICMP 协议,每一个节点每收到一个ICMP请求应答包后会立即回应一个类型为8,代 码值为0的请求回应包。
S300:根据一预设策略,计算得到各个节点的丢包率、平均时延 和时延标准偏差。
需要说明的是,源主机根据返回的回应包的源ip地址来判断回应包是从链 路上的哪个节点发来的,每个网络节点的时延信息各使用一个队列进行保存, 便于统计和计算。在每次发送完回应请求包后,等待接收回应包一小段时间(如 2、5、或10秒,默认5秒),然后统计每个节点收到回应包的数量、平均回应 时间,进而得到每个网络节点的丢包率和每个网络节点的平均时延。
S400:设定所述各个节点的丢包率、平均时延和时延标准偏差相 对应的计算因子和权值,并根据一预设算法计算该网络链路的链路质 量分数。
具体的,源主机根据返回的回应包的源ip地址来判断回应包是 从链路上的哪个节点发来的,每个网络节点的时延信息各使用一个队 列进行保存,便于统计和计算。在每次发送完回应请求包后,等待接 收回应包一小段时间(如2、5、或10秒,默认5秒),然后统计每 个节点收到回应包的数量、平均回应时间,进而得到每个网络节点的 丢包率和每个网络节点的平均时延。
在其中一个实施例中,在所述获取所述数据包通过所述网络链路 的链路信息,所述链路信息包括节点数量和各个节点的IP地址的步 骤后,所述方法还包括:
获取到链路信息后,对该网络链路上每个节点都发送N个类型 为0,代码为0的ICMP应答请求包,N>10;
根据ICMP协议,每一个节点每收到一个ICMP请求应答包后会 立即回应一个类型为8,代码值为0的ICMP请求回应包。
在其中一个实施例中,所述步骤根据一预设策略,计算得到各个 节点的丢包率、平均时延和时延标准偏差包括:
源主机根据返回的ICMP请求回应包的源ip地址判断ICMP请 求回应包的节点来源;
每个节点的时延信息各使用一个队列进行保存;
在每次发送完ICMP请求回应包后,等待接收后的一小段时间, 并统计每个节点收到ICMP请求回应包的数量、平均回应时间,进而 得到每个网络节点的丢包率、平均时延和时延标准偏差。
在其中一个实施例中,所述预设算法具体为:
链路质量分数=100-(丢包率计算因子*丢包率*丢包率权值+ 时延计算因子*时延*时延权值+跳数计算因子*跳数*跳数权值+ 时延标准偏差计算因子*时延标准偏差值*时延标准偏差权值)。
需要说明的是,每项参数的计算因子如下:丢包率的计算因子: 丢包率范围为0.00~100.00,丢包率计算因子:100/(100.00-0.00)=1; 平均时延的计算因子:平均时延值范围为0.00ms~400.00ms,平均 时延计算因子:100/(400.00-0.00)=0.25;跳数的计算因子:跳数值范 围为0.00~20.00,跳数计算因子:100/(20.00–0.00)=5;时延标准 偏差的计算因子:时延标准偏差范围为0.00~20.00,时延标准偏差 计算因子:100/(100.00-0.00)=1。接着,设定网络指标的权值,因 在应用场景,对丢包率、时延、跳数、网络抖动的侧重点各不相同, 需在计算前根据需求设置每一项指标的权值,各个参数的权值为总和为100.00%,默认情况下,丢包率的权值设置为35%,跳数权值设置 为15%,时延标准偏差位置为20%,时延权值为30%。
其次,使用如下算法计算链路的质量分数:链路质量分数算法: 链路质量分数=100-(丢包率计算因子*丢包率*丢包率权值+时延 计算因子*时延*时延权值+跳数计算因子*跳数*跳数权值+时延 标准偏差计算因子*时延标准偏差值*时延标准偏差权值)。然后,使 用丢包率降分在大丢包率的情况下,网络性能会变得非常差,甚至变 得不可用,因此,在计算链路质量分数时,需将丢包率纳入重点的计 算因子。因网络节点对数据包的处理分为接收和转发,无法判断是否 是网络拥塞引起的网络丢包还是系统本身对ICMP包做了特殊的处 理,所以需要参考每个节点的丢包率来判定是否是因为网络拥塞引发 的丢包,即需要考量各个节点之间的关联。一般情况下,如连续两个 或三个节点都出现大的丢包率(如25%以上),那么是网络拥塞引发 的丢包,因此,在相邻两个网络节点都出现大的丢包率的情况下、需 对链路质量进行惩罚降分,目前采用阶梯惩罚降分的方法,即丢包率 越大,惩罚降分越多,为阐述算法的便利,这里采用粗粒度的降分机 制来描述流程,详细如下:如果连续两个节点丢包率都超过50%,对 链路质量分数降低8分。如果连续两个节点丢包率有一个在40%- 50%之间、另一个在50%以上,对链路质量分数降低7分。如果连续 两个节点丢包率都在40%-50%之间,对链路质量分数降低6分。如 果连续两个节点丢包率有一个在30%-40%之间、另一个在40%-50% 之间,对链路质量分数降低5分。如果连续两个节点丢包率都在30% -40%之间对链路质量分数计算公式计算出来的分数降低4分。如果连续两个节点丢包率有一个在20%-30%之间、另一个在30%-40% 之间,对链路质量分数降低3分。如果连续两个节点丢包率都在20% -30%之间,对链路质量分数降低2分。如果连续两个节点丢包率有 一个在20%以下,不降低链路质量分数。
在其中一个实施例中,所述丢包率、平均时延和时延标准偏差的 计算公式包括:
其中x
i为每个ICMP请求回应包的时延,N 为收到的ICMP请求回应包的数量;
其中N为ICMP请求回应 包的数量,x
i为每个ICMP请求回应包的时延,u为所有时延样本的 平均时延。
请参照图2,一种快速精确计量网络链路质量的装置,所述装置 包括:
第一发送模块100,用于通过网络链路将多个ICMP请求回应包 从源主机发送至目的主机;
获取模块200,用于获取所述数据包通过所述网络链路的链路信 息,所述链路信息包括节点数量和各个节点的IP地址;
计算模块300,用于根据一预设策略,计算得到各个节点的丢包 率、平均时延和时延标准偏差;
设定模块400,用于设定所述各个节点的丢包率、平均时延和时 延标准偏差相对应的计算因子和权值,并根据一预设算法计算该网络 链路的链路质量分数。
在其中一个实施例中,所述装置还包括:
第二发送模块,用于获取到链路信息后,对该网络链路上每个节 点都发送N个类型为0,代码为0的ICMP应答请求包,N>10;
回应模块,用于根据ICMP协议,每一个节点每收到一个ICMP 请求应答包后会立即回应一个类型为8,代码值为0的ICMP请求回 应包。
在其中一个实施例中,所述计算模块包括:
判断单元,用于源主机根据返回的ICMP请求回应包的源ip地 址判断ICMP请求回应包的节点来源;
保存单元,用于每个节点的时延信息各使用一个队列进行保存;
统计单元,用于在每次发送完ICMP请求回应包后,等待接收后 的一小段时间,并统计每个节点收到ICMP请求回应包的数量、平均 回应时间,进而得到每个网络节点的丢包率、平均时延和时延标准偏 差。
在其中一个实施例中,所述预设算法具体为:
链路质量分数=100-(丢包率计算因子*丢包率*丢包率权值+ 时延计算因子*时延*时延权值+跳数计算因子*跳数*跳数权值+ 时延标准偏差计算因子*时延标准偏差值*时延标准偏差权值)。
在其中一个实施例中,所述丢包率、平均时延和时延标准偏差的 计算公式包括:
其中x
i为每个ICMP请求回应包的时延,N 为收到的ICMP请求回应包的数量;
其中N为ICMP请求回应 包的数量,x
i为每个ICMP请求回应包的时延,u为所有时延样本的 平均时延。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描 述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和 电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行, 取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每 个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不 应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和 方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅 仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分, 实际实现时可以有另外的划分方式,例如多个单元可以结合或者可以 集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显 示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些 接口,单元的间接耦合或通信连接,可以是电性,机械或其它的形式。 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元 中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销 售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的 理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或 者该技术方案的部分可以以软件产品的形式体现出来,计算机软件产 品存储在一个存储介质中,包括若干指令用以使得一台计算机设备 (可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施 例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动 硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器 (RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序 代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并 不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范 围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。 因此,本发明的保护范围应所述以权利要求的保护范围为准。