网络延迟

网络延迟是指一个IP包从源主机进程发出开始计时,到达目的地主机进程为止,所经历的时间,以毫秒为单位。

ping

ping可以测试计算机名和计算机的 ip 地址,验证与远程计算机的连接

通过将 icmp 回显数据包发送到计算机并侦听回显回复数据包来验证与一台或多台远程计算机的连接

该命令只有在安装了 tcp/ip 协议后才可以使用。

 

traceroute  / tracert

互联网中,信息的传送是通过网中许多段的传输介质和设备(路由器,交换机,服务器,网关等等)从一端到达另一端。每一个连接在Internet上的设备,如主机、路由器、接入服务器等一般情况下都会有一个独立的IP地址。通过Traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能还不一样,但基本上来说大部分时候所走的路由是相同的。

UNIX命令为 traceroute,Windows命令为 tracert 

Traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备Traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。

命令示例:

$ ping www.baidu.com      
PING www.a.shifen.com (220.181.38.150): 56 data bytes
64 bytes from 220.181.38.150: icmp_seq=0 ttl=54 time=6.051 ms
64 bytes from 220.181.38.150: icmp_seq=1 ttl=54 time=5.588 ms
64 bytes from 220.181.38.150: icmp_seq=2 ttl=54 time=8.579 ms

--- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 5.588/6.739/8.579/1.315 ms
$ 
$ traceroute www.baidu.com
traceroute: Warning: www.baidu.com has multiple addresses; using 220.181.38.150
traceroute to www.a.shifen.com (220.181.38.150), 64 hops max, 52 byte packets
 1  bogon (192.168.1.1)  1.642 ms  1.187 ms  0.968 ms
 2  100.92.0.1 (100.92.0.1)  3.848 ms  3.386 ms  277.463 ms
 3  36.112.253.49 (36.112.253.49)  4.427 ms *  4.203 ms
 4  220.181.0.54 (220.181.0.54)  4.587 ms  19.050 ms  4.539 ms
 5  * * *
 6  220.181.182.26 (220.181.182.26)  9.483 ms
    220.181.17.22 (220.181.17.22)  6.049 ms
    220.181.182.170 (220.181.182.170)  17.750 ms
 7  * * *

IP包从源主机一路经过多个中继设备,如交换机、路由器、网关等,最终到达终点,网络延迟由以下三者组成:

网络延迟 = 传输延迟 + 处理延迟 + 缓冲队列延迟

 

1、介质传输延迟

这个延迟很好理解,指光、电信号在有线介质上的延迟,或无线电信号在空气介质中的延迟,

这种传输延迟只和光速有关、或电信号的传输速度有关,用户无法改变该延迟。

对于一条选定的端对端路径,此值是恒定的。

 

2、打包处理延迟

接收IP包,查询转发表,硬件、或软件转发,包括封装、解封装、编码、解码时间

经过设备越多,设备吞吐能力越弱(一秒可以转发多少Gb的数据),延迟越大。

但对于一条选定的端对端路径,此值也是恒定的。

 

3、缓冲队列延迟

当端到端的路径上,没有任何网络拥塞,缓冲队列的延迟几乎为0,网络转发性能达到线速度,好像两端用一根线直连。

但是网络拥堵经常发生,因为主机对带宽的需求无止境,所以拥堵是常态。

当网络拥堵时,路由器将无法及时转发的流量缓冲在出口队列,可能采用加权公平队列WFQ(Weighted FairQueue)、或低延迟队列LLQ (Low Latency Queue),或默认的先进先出队列FIFO(First In FirstOut)这个队列可能会造成几百毫秒或更多的延迟,此值是可变的,可以接近0或几秒不等,依赖网络的拥堵程度

1)加权公平队列 WFQ

将不同的种类流量放入不同的队列,预先给不同的队列分配一个权值、或百分比,采用公平轮转的方式来依次发送每个队列的缓冲数据。

 

2)低延迟队列 LLQ

依据IP优先级,高优先级的语音流量(Precedence =5),最先发送,可以插队,VIP客户。

 

3)先进先出队列 FIFO

先到的先发,后到的后发。

 

所以,过大的网络延迟主要是由缓冲队列延迟过大造成的!

Google最新的TCP BBR算法,就是积极主动测量网络的延迟,运用智能算法,获知网络的最大可利用带宽,使发送速率 ≤ 最大可利用带宽,最大限度减少路由器的缓冲队列的深度,最大限度减少延迟。

 

综上可知

网络延迟是由不受人类控制的传输延迟,以及人类可以控制的处理延迟、队列延迟所组成。

很显然,如果想减小IP报文的整体延迟,必须从后两者入手,即如何降低处理延迟、队列延迟

处理延迟是一个衡量一台设备是否牛叉的关键指标。以路由器为例,拥有近百万条路由表的路由器,如何用最快速度匹配到正确的路由条目,包含着满满的黑科技。

采用多级查询,只需要查询几百、最多几千次条目,就可以hit到正确的条目。这是产品设计时候需要实现的技术要素。

 

 

参考推荐:

ping, tracert, traceroute, netstat 命令详解

网关、默认网关、自动网关、路由、网关与路由器的关系

Mac 终端出现 bogon 的原因和解决办法

八个免费在线网站速度测试服务

运维人员常用软件总结

2018年互联网 DDoS 攻击趋势分析

2018年互联网恶意爬虫与反爬虫的分析报告