Packet Delay, Forwarding, and Routing(分组时延、转发与路由)思考记录
背景
学习《Computer Networking: A Top-Down Approach》1.3 分组交换时,围绕以下问题反复确认:
- 单条链路上有
N个 packet 时,为什么总发送时延是N(L/R) - 1 个 packet 经过
N条链路时,为什么也是N(L/R) - 传播时延、排队时延分别发生在哪里
- 书上为什么只提发送时延、排队时延、传播时延
forwarding和routing到底分别在做什么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 条链路上完整发送一次
- 到达路由器后,再在第 2 条链路上完整发送一次
- 依次类推
所以发送时延累加后得到:
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 里没有展开。
思考过程
这一节的重点是先让读者抓住分组交换里最核心、最直观的三件事:
- packet 在节点里等多久
- packet 被推出去要多久
- 信号在链路上跑多久
所以处理时延在这一节里被省略了。
这不表示它不存在,只是当前章节先不把它作为主线。
结论
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 delay 与 queuing delay 是在节点内部产生,而 transmission delay 与 propagation delay 容易混淆。单看一根网线传播似乎不明显,结合多跳网络拓扑应该怎么理解?
思考过程
- 节点内部 vs 链路产生:
- (芯片查表/校验)与 (RAM 缓存等待)完全发生在路由器内部。
- (网卡把所有 bit 推向网线,)发生在输出接口硬件。
- (信号在物理介质中传播,)发生在介质链路上。
- 多跳拓扑的视角:
- 存储转发(Store-and-Forward)导致经过 跳时,发送延时会被重推 次()。
- 跨国/大范围拓扑下,物理距离累加导致传播延时 成为主导因素;多路流量在路由器交汇爆发排队延时 。
结论
单跳节点延时 d_nodal = d_proc + d_queue + d_trans + d_prop 纯串行相加。
多跳下 d_trans 逐跳重推,d_prop 距离累加,d_queue 动态爆发。Q8:为了减少时延与保障可用性,Packet 是跳向唯一下一跳还是跳向所有下级路由?
初始疑问
能否通过向所有可能的下级路由复制群发包(Flooding)来寻找最快路径并防单点故障?
思考过程
- 绝不能群发:群发会导致指数级广播风暴(Broadcast Storm)与路由环路,瞬间塞满队列,导致 全网瘫痪。
- 设计逻辑:数据平面采用单播(Unicast),后台控制平面(Control Plane)提前通过路由协议计算出全局最优路径并烧录 FIB 转发表;高可用依靠快速重路由(IP FRR)毫秒级切线。
结论
控制平面提前算路,数据平面单播查表转发,兼顾低时延、高吞吐与高可用。Q9:排队时延占比与 Amdahl 定律的应用
初始疑问
在网络拥塞时,排队时延占比大概是多少?能否用 Amdahl 定律解释网络优化的收益?
思考过程
- 占比:排队时延无固定占比。空闲时占比为 0%;严重拥塞时,排队时延占比可超过 95% 甚至 99%。
- Amdahl 定律:
- 可优化部分 (拥塞时 )。
- 不可优化的物理底噪 (物理距离与网卡速率)。
- 最大理论加速比 。当 时,若理想化消除这 99% 的排队部分,理论上可带来最高 100 倍的延迟降低。Google TCP BBR 算法的目标之一,就是通过控制发送速率来减少不必要的排队。
结论
严重拥塞时,排队时延可能占据主导;根据 Amdahl 定律,优化收益取决于排队时延在总时延中的占比,理论上限为 S_max = 1 / (1 - f)。Q10:流量强度 La/R 为什么绝不能大于 1?
初始疑问
如何数学刻画(表征)排队时延?流量强度 会发生什么?
思考过程
- 定义:流量强度 ,其中 为比特到达速率(bps), 为网卡发射速率。
- 状态:
- :长期平均到达速率超过推出能力,队列会持续增长,最终导致 Buffer 溢出与丢包(Packet Loss)。
- :由于到达突发性,排队时延呈 非线性暴涨。
- 工程设计要求将平均流量强度压在 。
结论
La/R > 1 是系统物理不可持续的临界点;控速协议(TCP)本质上都在动态控制 a 使得 La/R < 1。Q11:为什么 Traceroute 无法追踪使用 CDN 服务的源站?
初始疑问
对使用 CDN 的域名做 traceroute,为什么追踪不到端系统(源站)?
思考过程
- DNS 覆盖:DNS 返回的是距离用户最近的 CDN 边缘节点 IP,traceroute 发包目标从一开始就是边缘节点。
- L7 反向代理截断:客户端与 CDN 建立 TCP 连接,CDN 如果未命中缓存,由 CDN 节点自己发起第二条 TCP 连接回源。L3 层的 ICMP 探针无法感知 L7 代理后面的第二条连接。
- 安全隔离:隐藏源站 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]
关联概念
- Packet:分组本身
- Router:转发 packet 的网络设备
- Host & End System:packet 的产生端和接收端
- Throughput:端到端传输吞吐量
- Bottleneck Link:路径上的瓶颈链路
- Packet Switching:分组交换的机制总结
- Amdahl Law:在排队时延优化中的理论加速比应用