CS 168 · DISCUSSION 07 · GUIDED REASONING WORKBOOK

快速恢复、AIMD 与吞吐

把 cwnd 当成 sender 的动态 state:每个 ACK/loss event 都要先判断类型,再应用 transition,最后检查还能发多少新数据。

现在轮到你推

无需离开 CourseStack:先预测,再在表格、时间线或状态空间里完成推导;卡住时逐层打开提示,最后才展开解释与变式。

已阅读 Spring 2026 worksheet 与 official solution;以下是原创等价练习。官方 IDs 用于 coverage,对精确原题请回到页末 PDF。

忘记机制?回到 L13 Congestion Control →

对应官方 1.1、1.2、1.3、1.4、1.5

1 · 先分清谁被保护、哪个 sample 可相信

Why the official problem exists:把 reliability、flow control、congestion control 和 Karn ambiguity 放进具体 failure。

receiver buffer 充足;路由器 queue 满;某 packet 被重传后收到 ACK。

先预测:重传 packet 的 ACK 可直接更新 RTT estimator 吗?

Work It Out

为 receiver slow、network overloaded、packet lost 各填 mechanism/state/signal;再比较 AIMD、AIAD、MIMD、MIAD 的 fairness 轨迹。

Hint 1 · Concept

先问被保护的是 receiver 还是 network。

Hint 2 · State / Invariant

干净 RTT sample 必须对应唯一发送时刻。

Hint 3 · First Step

AIMD 的加性阶段保持差距,乘性阶段缩小差距。

Reveal · 展开完整推导

flow control 看 rwnd;congestion control 看 cwnd 与 loss/ECN/RTT;reliability 看 seq/ACK/timer。重传 ACK 不用于 RTT sample。理想模型中 AIMD 同时趋向效率与公平。

Why This Works

同样的“慢下来”输出若依据不同 state,就解决不同问题。

Variation

receiver rwnd=4、cwnd=10;网络发生 loss 后 cwnd=5。两次可发送上限分别是多少?

对应官方 2.1、2.2

2 · 同一 ACK timeline 对照 fast recovery

Why the official problem exists:检查 triple duplicate ACK 的计数、重传时刻和退出 recovery 的新 ACK。

CA 状态,last ACK=101,cwnd=10 packets;seq102 首次丢失,103–111 到达并持续产生 ACK102,RTT=1s。

先预测:何时触发 fast retransmit?

Work It Out

eventdup countcwnd no recoverycwnd with recoverysend
new ACK102010.110.1111
第三 dup ACK1023________reTX ____
额外 dup ACK4+________新数据?
new ACK112____________
Hint 1 · Concept

先设 ssthresh=floor(cwnd/2)。

Hint 2 · State / Invariant

recovery 中每个额外 dup ACK 表示一包离开网络。

Hint 3 · First Step

覆盖缺口的新 ACK 才退出 recovery。

Reveal · 展开完整推导

第三 dup ACK 时两者都重传 102、ssthresh≈5;无 recovery 的 cwnd=5 且不因重复 ACK 增长。fast recovery 先设 cwnd=8,额外 dup ACK 逐一膨胀并可发送,ACK112 后退回 ssthresh=5。

Why This Works

dup ACK 在 recovery 中近似提供“一包已离开 pipe”的 clock,但不能推进累计 ACK 边界。

Variation

若 103/104 发生重排但 102 最终到达,阈值为何能减少伪重传却不能完全避免?

对应官方 3.1、3.2、3.3

3 · 从锯齿面积推 throughput

Why the official problem exists:1/(RTT√p) 成为可复现推导,而非背诵。

general AIMD:每 RTT 加 A;到 W 发生一次 loss;乘 M<1,窗口回到 MW。

先预测:一个 cycle 的平均 window?

Work It Out

求 cycle rounds=(W-MW)/A;用梯形面积估计发送 packets,令每 cycle 一次 loss 得 p;最后代 M=.5,A=1。

Hint 1 · Concept

throughput=average window/RTT。

Hint 2 · State / Invariant

loss probability≈1/(cycle packets)。

Hint 3 · First Step

先由 p 解出 W,再代 throughput。

Reveal · 展开完整推导

平均窗口=W(M+1)/2;throughput=W(M+1)/(2RTT)。cycle packets 与 W² 成正比,所以 W 与 1/√p 成正比;M=.5,A=1 时得到约 3/(RTT√(2p))

Why This Works

平方根来自“线性增长的轮数×平均窗口”形成的三角/梯形面积。

Variation

A 加倍会怎样改变 cycle 长度、loss probability 与 fairness aggressiveness?

Closed-book reconstruction

自选 cwnd=12、丢 seq205 的 timeline,分别画有/无 fast recovery;再从一般 A、M 重新推一次 average throughput。

一手资料