网络时延相关知识梳理

背景

最近网络上有一则新闻引发了讨论:华为战略部总裁张文林:实验室内可做到2千公里0.1毫秒时延 满足车联网精确需要

主要原因是根据标题中的描述,这种通讯方式达到了「2千公里0.1毫秒时延」。这个描述引发了两种争论:

  • 这种通讯方式的传输速度为 $2\times10^6\div10^{-4}=2\times10^{10}(m/s)$,已经超过了光速,根本是不可能的。
  • 新闻中描述的时延指的不是传播速度。

也有报道^news称原文中的描述应该是:0.1 毫秒的「抖动时延」。

借此机会,我们来复习一下网络中的时延概念。

概念

时延是一个链路层概念,指的是一个分组在链路中传输所需的时间。这个时间不是 $链路长度/光速$ 那么简单,还需要考虑其他因素。

我们通常所说的时延包括几个部分:

  • 处理时延
  • 排队时延
  • 传输时延
  • 传播时延

处理时延

处理时延是指一个节点检查分组请求头和决定将分组发送到何处(物理端口)所需的时间,包括分析首部,提取数据,差错检验,路由选择。

这个时延通常是微秒级的。

排队时延

分组在从节点进入链路前会进入一个传输队列,需要等待在它之前被分配的分组完成传输后再进行传输。

这个时延长度会根据队列中积压的分组数量决定,如果队列中没有积压的分组,那么排队时延为 0。

传输时延

由于分组是有体积的,而链路接收数据的速度是有限的。整个分组从网卡或者路由器发送到链路中所消耗的时间就是传输时延。

决定传输时延的因素是分组的大小和物理链路的传输速率(也就是带宽)。如果用 $L$ 比特表示分组的长度,用 $R$ bps 表示从路由器 A 到路由器 B 的链路传输速度。那么传输时延为 $L/R$。这个时延通常也是毫秒到微妙级别的。

传播时延

传播时延是指分组在两个节点之间,经由链路传播所需的时间。

传播时延由物理链路的长度和传输速度^velocity决定。如果使用 $d$ 表示链路的长度(或者说节点间的距离),用 $s$ 表示信号在链路中的传输速度[^speed](通常小于或略小于光速),那么传播时延为 $d/s$。

[^speed]: 这里可能会有疑问,链路传输速率 $R$ 和链路传播速度 $s$,是成正比的,只是单位不一样而已。