跳转至

分组交换与网络性能

为什么把数据切成分组

网络中的业务大多是突发的:加载网页时短时间发送许多数据,阅读页面时连接可能几乎空闲。如果为每个用户永久保留一条专线,大量容量会在空闲期浪费。

分组交换把消息切成较小分组,让多个用户按需交替使用链路,这叫统计复用。路由器只需短暂保存分组并逐跳转发,不必为每个应用预留完整端到端电路。

与电路交换相比:

方式 优点 代价 适合直觉
电路交换 资源和时延更可预测 空闲时仍占资源,建立电路有成本 持续稳定流量
分组交换 利用率高、对突发业务灵活 会排队、丢包,时延有抖动 数据通信与大量共享用户

互联网主要采用分组交换,但实时业务可以通过预留、优先级、冗余和自适应编码改善体验。

存储转发

在典型存储转发中,路由器收到完整分组后才向下一条链路发送。长度为 \(L\) 比特的分组经过速率为 \(R\) bit/s 的链路,发送时延为:

\[ d_{trans}=\frac{L}{R}. \]

一个 1500 字节帧在 100 Mb/s 链路上的发送时延约为:

\[ \frac{1500\times 8}{100\times 10^6}=120\ \mu s. \]

注意这是“把所有比特推上链路”的时间,不是信号走到远端的时间。

四类节点时延

一个分组在节点处的总时延常分为:

\[ d_{node}=d_{proc}+d_{queue}+d_{trans}+d_{prop}. \]
  • 处理时延 \(d_{proc}\):检查首部、校验并查询转发表。
  • 排队时延 \(d_{queue}\):等待前面的分组发送,变化最大。
  • 发送时延 \(d_{trans}\):由分组长度和链路速率决定。
  • 传播时延 \(d_{prop}\):信号在介质中传播,近似为距离除以传播速度。

若光纤路径长 1000 km,传播速度粗略取 \(2\times 10^8\) m/s,单程传播时延约 5 ms。即使把带宽无限提高,传播距离仍存在,所以高带宽不等于低时延。

最小完整例子:为什么下载忽快忽慢

假设家中电脑经 1 Gb/s 局域网、100 Mb/s 接入链路和 10 Gb/s 骨干访问服务器。忽略协议开销,长流的端到端吞吐上限受最窄瓶颈限制:

\[ T\leq \min(1\ \mathrm{Gb/s},100\ \mathrm{Mb/s},10\ \mathrm{Gb/s})=100\ \mathrm{Mb/s}. \]

如果同一接入链路上有多个活跃大流,每个流获得的份额还会下降。若服务器本身只能以 20 Mb/s 读取文件,那么服务器也会成为瓶颈。端到端性能由整条路径共同决定,不能只看本机网卡标称速率。

排队、丢包与抖动

当分组到达速率短时间高于输出链路速率,分组进入缓冲区。缓冲区吸收突发,却不能创造带宽:

到达速率 < 服务速率:队列通常较短
到达速率接近服务速率:排队时延快速上升
持续到达速率 > 服务速率:队列最终溢出并丢包

因此丢包常是拥塞结果,而不是线缆损坏。过大的缓冲区也并非总是更好,它可能让分组长期排队,形成“缓冲膨胀”:吞吐看似正常,交互延迟却很高。

时延随时间变化称为抖动。语音和视频播放通常设置播放缓冲,用增加一点固定等待换取连续播放;缓冲过小容易卡顿,过大则增加端到端延迟。

分组大小的权衡

大分组减少首部占比并提高处理效率,但一旦出错或丢失,需要重传更多数据,而且会让后到的小分组等待更久。小分组响应更灵活,却有更高首部比例和每包处理开销。路径最大传输单元 MTU 给分组大小设置现实边界;端系统通常尽量避免在路径中发生 IPv4 分片,IPv6 路由器则不执行途中分片。

性能指标不能混为一谈

  • 带宽是链路理论发送能力。
  • 吞吐是实际成功交付速率。
  • 好吞吐只计算应用有效负载,不含重传和首部。
  • 时延描述一次数据到达要等多久。
  • 丢包率描述未成功交付的比例。

批量备份更看重好吞吐,在线游戏更看重时延和抖动,控制系统还可能要求可预测的尾部时延。不存在对所有应用都唯一最优的网络配置。

自测

带宽升级后测速很快,但视频会议仍卡顿,至少应继续检查什么?

检查往返时延、抖动、丢包、上行带宽、无线干扰、队列是否膨胀以及会议服务器路径。测速得到的单个吞吐数字不能概括交互业务质量。