Packet Delay, Forwarding, and Routing(分组时延、转发与路由)思考记录

背景

学习《Computer Networking: A Top-Down Approach》1.3 分组交换时,围绕以下问题反复确认:

  • 单条链路上有 N 个 packet 时,为什么总发送时延是 N(L/R)
  • 1 个 packet 经过 N 条链路时,为什么也是 N(L/R)
  • 传播时延、排队时延分别发生在哪里
  • 书上为什么只提发送时延、排队时延、传播时延
  • forwardingrouting 到底分别在做什么
  • packet loss 是丢一个 packet,还是把相关 packet 一起丢掉

Q1:单条链路上有 N 个 packet,为什么总时间是 N(L/R)?

初始疑问

直觉里容易把“链路上传输一个 packet”理解成一次性完成。

但如果有 N 个 packet 连续通过同一条链路,最后一个 packet 什么时候完成发送?

思考过程

每个 packet 的长度是 L,链路速率是 R

把一个 packet 的所有比特完整推出发送端口,需要:

L / R

如果是 N 个 packet 连续发送,那么每个 packet 都要占用一次发送过程。

因此最后一个 packet 完成发送时,总发送时延是:

N(L / R)

这里先只看发送时延,不把传播时延混进去。

结论

N 个 packet 经过同一条链路时,总发送时延 = N(L / R)

Q2:1 个 packet 经过 N 条链路,为什么也是 N(L/R)?

初始疑问

我一开始以为 1 个 packet 走多跳时,可能只算成 2L/R 之类的形式。

思考过程

这里的关键是:一个 packet 经过多少条链路,就要被完整发送多少次

如果路径上有:

N 条链路
N - 1 台路由器

那么 packet 会被存储转发:

  1. 在第 1 条链路上完整发送一次
  2. 到达路由器后,再在第 2 条链路上完整发送一次
  3. 依次类推

所以发送时延累加后得到:

N(L / R)

如果只有 2 条链路,那才会是 2(L/R)

结论

1 个 packet 经过 N 条链路时,总发送时延 = N(L / R)

Q3:书上这部分里的三种时延分别发生在哪里?

初始疑问

这一节看到的是:

  • 发送时延
  • 排队时延
  • 传播时延

那它们分别对应网络里的什么位置?

思考过程

按这一节的简化视角,可以先这样理解:

  • 排队时延:packet 在输出缓存里等
  • 发送时延:packet 被完整推出端口
  • 传播时延:信号在链路上传过去

也就是:

flowchart LR
    A[输出缓存] -->|排队时延| B[发送端口]
    B -->|发送时延 L/R| C[物理链路]
    C -->|传播时延 d/s| D[下一跳]

这一节先不单列处理时延,所以学习时可以先把它放在后面,不和当前模型混在一起。

结论

这一节的主线是:

排队时延 + 发送时延 + 传播时延

Q4:处理时延为什么没有在这一节单独提?

初始疑问

完整的节点时延常常会提到处理时延,但 1.3 里没有展开。

思考过程

这一节的重点是先让读者抓住分组交换里最核心、最直观的三件事:

  1. packet 在节点里等多久
  2. packet 被推出去要多久
  3. 信号在链路上跑多久

所以处理时延在这一节里被省略了。

这不表示它不存在,只是当前章节先不把它作为主线。

结论

1.3 关注三种时延;处理时延是更完整模型里再补充的内容。

Q5:forwarding 和 routing 分别是什么?

初始疑问

书上提到转发表和路由选择协议:

  • 转发表把目的 IP 映射为输出链路
  • 路由选择协议用于自动设置转发表

思考过程

可以先把它们理解为两层不同的事情:

  • forwarding:router 收到 packet 后,立刻查表,决定从哪个输出口发出去
  • routing:网络里通过路由选择协议,自动算出这些表项,并维护它们

简单说就是:

  • forwarding 负责“走哪条口”
  • routing 负责“表怎么来”

结论

forwarding = 依据转发表转发 packet
routing = 自动生成 / 维护转发表

Q6:packet loss 是丢一个 packet,还是把相关 packet 一起丢掉?

初始疑问

输出缓存满了时,丢的是哪个范围?

思考过程

在当前学习阶段里,可以先把它理解为:

  • 丢的是进不去的那个 packet
  • 其他已经在队列里的 packet 继续保留和转发

也就是说,packet loss 一般是“按 packet 发生”的,不会把无关的其他 packet 一起带走。

结论

packet loss 通常表示某一个 packet 被丢弃,不是把一批 packet 全丢掉。

Q7:节点四大延时的物理位置与单跳/多跳逻辑

初始疑问

nodal processing delayqueuing delay 是在节点内部产生,而 transmission delaypropagation delay 容易混淆。单看一根网线传播似乎不明显,结合多跳网络拓扑应该怎么理解?

思考过程

  1. 节点内部 vs 链路产生
    • (芯片查表/校验)与 (RAM 缓存等待)完全发生在路由器内部。
    • (网卡把所有 bit 推向网线,)发生在输出接口硬件。
    • (信号在物理介质中传播,)发生在介质链路上。
  2. 多跳拓扑的视角
    • 存储转发(Store-and-Forward)导致经过 跳时,发送延时会被重推 次()。
    • 跨国/大范围拓扑下,物理距离累加导致传播延时 成为主导因素;多路流量在路由器交汇爆发排队延时

结论

单跳节点延时 d_nodal = d_proc + d_queue + d_trans + d_prop 纯串行相加。
多跳下 d_trans 逐跳重推,d_prop 距离累加,d_queue 动态爆发。

Q8:为了减少时延与保障可用性,Packet 是跳向唯一下一跳还是跳向所有下级路由?

初始疑问

能否通过向所有可能的下级路由复制群发包(Flooding)来寻找最快路径并防单点故障?

思考过程

  1. 绝不能群发:群发会导致指数级广播风暴(Broadcast Storm)与路由环路,瞬间塞满队列,导致 全网瘫痪。
  2. 设计逻辑:数据平面采用单播(Unicast),后台控制平面(Control Plane)提前通过路由协议计算出全局最优路径并烧录 FIB 转发表;高可用依靠快速重路由(IP FRR)毫秒级切线。

结论

控制平面提前算路,数据平面单播查表转发,兼顾低时延、高吞吐与高可用。

Q9:排队时延占比与 Amdahl 定律的应用

初始疑问

在网络拥塞时,排队时延占比大概是多少?能否用 Amdahl 定律解释网络优化的收益?

思考过程

  1. 占比:排队时延无固定占比。空闲时占比为 0%;严重拥塞时,排队时延占比可超过 95% 甚至 99%。
  2. Amdahl 定律
    • 可优化部分 (拥塞时 )。
    • 不可优化的物理底噪 (物理距离与网卡速率)。
    • 最大理论加速比 。当 时,若理想化消除这 99% 的排队部分,理论上可带来最高 100 倍的延迟降低。Google TCP BBR 算法的目标之一,就是通过控制发送速率来减少不必要的排队。

结论

严重拥塞时,排队时延可能占据主导;根据 Amdahl 定律,优化收益取决于排队时延在总时延中的占比,理论上限为 S_max = 1 / (1 - f)。

Q10:流量强度 La/R 为什么绝不能大于 1?

初始疑问

如何数学刻画(表征)排队时延?流量强度 会发生什么?

思考过程

  1. 定义:流量强度 ,其中 为比特到达速率(bps), 为网卡发射速率。
  2. 状态
    • :长期平均到达速率超过推出能力,队列会持续增长,最终导致 Buffer 溢出与丢包(Packet Loss)。
    • :由于到达突发性,排队时延呈 非线性暴涨。
    • 工程设计要求将平均流量强度压在

结论

La/R > 1 是系统物理不可持续的临界点;控速协议(TCP)本质上都在动态控制 a 使得 La/R < 1。

Q11:为什么 Traceroute 无法追踪使用 CDN 服务的源站?

初始疑问

对使用 CDN 的域名做 traceroute,为什么追踪不到端系统(源站)?

思考过程

  1. DNS 覆盖:DNS 返回的是距离用户最近的 CDN 边缘节点 IP,traceroute 发包目标从一开始就是边缘节点。
  2. L7 反向代理截断:客户端与 CDN 建立 TCP 连接,CDN 如果未命中缓存,由 CDN 节点自己发起第二条 TCP 连接回源。L3 层的 ICMP 探针无法感知 L7 代理后面的第二条连接。
  3. 安全隔离:隐藏源站 IP 是 CDN 防 DDoS 攻击的核心功能。

结论

Traceroute 终止于 CDN 边缘节点,无法跨越 L7 反向代理感知源站网络路径。

最终理解

分组交换中单跳延时由四大串行部分相加组成;后台控制平面通过预先算路保证数据平面单播快速转发;在严重拥塞时,排队时延可能成为主导部分,因此将流量强度 控制在安全区、减少不必要排队,能显著降低端到端时延。而 CDN 等 L7 反向代理架构则会在边缘节点截断 L3 层 traceroute 的网络探测。


总结模型

flowchart TD
    A[packet 到达节点] --> B[Processing 查表校验 d_proc]
    B --> C[Queueing 缓存排队 d_queue]
    C --> D[Transmission 推出网口 d_trans]
    D --> E[Propagation 介质传播 d_prop]
    E --> F[下一跳节点接收]

    C -->|流量强度 La/R > 1| C1[排队爆发/Buffer 溢出丢包]
    B -->|控制平面提前算好 FIB| B1[单播转发而非泛洪]
    D -->|受限于瓶颈链路 Min R| D1[决定端到端吞吐量 Throughput]

关联概念