网络延迟是如何产生的 网络延迟和时间延迟

网络延迟是指一个 IP 包从源主机进程发出开始计时 , 到达目的地主机进程为止 , 所经历的时间 , 以毫秒为单位 。
IP 包从源主机一路经过多个中继设备 , 如交换机、路由器 , 最终到达终点 , 网络延迟由以下三者组成:
网络延迟 = 传输延迟 + 处理延迟 +缓冲队列延迟
【网络延迟是如何产生的 网络延迟和时间延迟】

网络延迟是如何产生的 网络延迟和时间延迟

文章插图
传输延迟
这个延迟很好理解 , 指光、电信号在有线介质上的延迟 , 或无线电信号在空气介质中的延迟 , 这种传输延迟只和光速有关、或电信号的传输速度有关 , 用户无法改变该延迟 。对于一条选定的端对端路径 , 此值是恒定的 。
网络延迟是如何产生的 网络延迟和时间延迟

文章插图
处理延迟
接收 IP 包 , 查询转发表 , 硬件、或软件转发 , 包括封装、解封装、编码、解码时间 , 经过设备越多 , 设备吞吐能力越弱(一秒可以转发多少 Gb 的数据) , 延迟越大 。但对于一条选定的端对端路径 , 此值也是恒定的 。
缓冲队列延迟
当端到端的路径上 , 没有任何网络拥塞 , 缓冲队列的延迟几户为 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 到正确的条目 。这是产品设计时候需要实现的技术要素 。