分组交换与网络性能¶
为什么把数据切成分组¶
网络中的业务大多是突发的:加载网页时短时间发送许多数据,阅读页面时连接可能几乎空闲。如果为每个用户永久保留一条专线,大量容量会在空闲期浪费。
分组交换把消息切成较小分组,让多个用户按需交替使用链路,这叫统计复用。路由器只需短暂保存分组并逐跳转发,不必为每个应用预留完整端到端电路。
与电路交换相比:
| 方式 | 优点 | 代价 | 适合直觉 |
|---|---|---|---|
| 电路交换 | 资源和时延更可预测 | 空闲时仍占资源,建立电路有成本 | 持续稳定流量 |
| 分组交换 | 利用率高、对突发业务灵活 | 会排队、丢包,时延有抖动 | 数据通信与大量共享用户 |
互联网主要采用分组交换,但实时业务可以通过预留、优先级、冗余和自适应编码改善体验。
存储转发¶
在典型存储转发中,路由器收到完整分组后才向下一条链路发送。长度为 \(L\) 比特的分组经过速率为 \(R\) bit/s 的链路,发送时延为:
一个 1500 字节帧在 100 Mb/s 链路上的发送时延约为:
注意这是“把所有比特推上链路”的时间,不是信号走到远端的时间。
四类节点时延¶
一个分组在节点处的总时延常分为:
- 处理时延 \(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 骨干访问服务器。忽略协议开销,长流的端到端吞吐上限受最窄瓶颈限制:
如果同一接入链路上有多个活跃大流,每个流获得的份额还会下降。若服务器本身只能以 20 Mb/s 读取文件,那么服务器也会成为瓶颈。端到端性能由整条路径共同决定,不能只看本机网卡标称速率。
排队、丢包与抖动¶
当分组到达速率短时间高于输出链路速率,分组进入缓冲区。缓冲区吸收突发,却不能创造带宽:
因此丢包常是拥塞结果,而不是线缆损坏。过大的缓冲区也并非总是更好,它可能让分组长期排队,形成“缓冲膨胀”:吞吐看似正常,交互延迟却很高。
时延随时间变化称为抖动。语音和视频播放通常设置播放缓冲,用增加一点固定等待换取连续播放;缓冲过小容易卡顿,过大则增加端到端延迟。
分组大小的权衡¶
大分组减少首部占比并提高处理效率,但一旦出错或丢失,需要重传更多数据,而且会让后到的小分组等待更久。小分组响应更灵活,却有更高首部比例和每包处理开销。路径最大传输单元 MTU 给分组大小设置现实边界;端系统通常尽量避免在路径中发生 IPv4 分片,IPv6 路由器则不执行途中分片。
性能指标不能混为一谈¶
- 带宽是链路理论发送能力。
- 吞吐是实际成功交付速率。
- 好吞吐只计算应用有效负载,不含重传和首部。
- 时延描述一次数据到达要等多久。
- 丢包率描述未成功交付的比例。
批量备份更看重好吞吐,在线游戏更看重时延和抖动,控制系统还可能要求可预测的尾部时延。不存在对所有应用都唯一最优的网络配置。
自测
带宽升级后测速很快,但视频会议仍卡顿,至少应继续检查什么?
检查往返时延、抖动、丢包、上行带宽、无线干扰、队列是否膨胀以及会议服务器路径。测速得到的单个吞吐数字不能概括交互业务质量。