CS 168 · DISCUSSION 01 · GUIDED REASONING WORKBOOK

分层、设计原则与 Traceroute

这次不背架构目标:你要拿一个看似合理的设计,指出它把可靠性、异构性、自治或成本中的哪一项推向了错误的位置。

现在轮到你推

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

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

忘记机制?回到 L1 架构原则 →

对应官方 2.1、2.2、2.3、2.4、2.5、2.6、2.7

1 · 把设计提案放进架构压力测试

Why the official problem exists:检查你能否用目标和 end-to-end principle 评价设计,而不是凭“集中式/分布式听起来先进”作答。

三个提案:A. 每个 carrier router 都为每个 packet 做可靠 next-hop handshake;B. 全球只有一个 controller,carrier 只能听它更新;C. 某个无线园区为性能在本域加 link-layer recovery。

先预测:哪一个最不妨碍其他网络保持自治?

Work It Out

提案受益者新增 state 在哪失败域违反目标?
A单跳可靠每台 router全网每跳____
B统一视图中央 controller全球____
C无线本域该园区局部____
Hint 1 · Concept

先问这个目标是否必须由网络核心实现。

Hint 2 · State / Invariant

不变量是一个自治域的选择不应强迫无关自治域升级。

Hint 3 · First Step

先圈出每个提案需要改变的设备集合。

Reveal · 展开完整推导

A 把 per-packet 可靠 state 强加给所有 router,伤害异构兼容、成本和 fate sharing。B 让 controller 成为大 failure domain,也破坏 distributed management。C 只在能观察无线 loss 的本域优化,不削弱端点仍可实现的可靠性。

Why This Works

架构目标不是互斥 checkbox;真正的推理是把 mechanism 的 state、部署范围和 failure blast radius 对应到目标。

Variation

Amazon 在自己 AS 内采用 controller,但对外仍说标准 BGP。重新判断:自治边界变小后,B 的哪些风险消失,哪些仍存在?

对应官方 3.1、3.2、3.3、3.4

2 · TTL 到 0 后,到底诞生了哪个新 packet?

Why the official problem exists:检查你是否把原始 probe 与 router 新建的 ICMP response 当成两个独立 IP packets。

Host A 发 UDP probe,初始 TTL=2。R1 转发后 TTL=1;R2 收到后减到 0。R2 丢弃 probe,并向 A 新建 ICMP Time Exceeded。

先预测:ICMP response 的外层 IP TTL 应是多少?

Work It Out

packetsrc/dst IPTTL beforeeventTTL/output
probeA→B1 at R2decrement____
ICMP response____newroute toward A____
Hint 1 · Concept

区分触发错误的 packet 与承载错误消息的 packet。

Hint 2 · State / Invariant

每个新 IP datagram 有自己的 header 生命周期。

Hint 3 · First Step

先写 response 的 src=R2、dst=A。

Reveal · 展开完整推导

probe 在 R2 变为 TTL=0 并被丢弃。R2 创建 src=R2、dst=A 的新 IP datagram,使用本机正常初始 TTL(例如 64),payload 是 ICMP header 加原 probe 的必要前缀。

Why This Works

TTL 限制的是一个 datagram 的 hop lifetime;ICMP 把失败变成另一条可路由的证据链。

Variation

如果 ICMP response 自己在回程环路中 TTL 归零,会发生什么?它不会复活原 probe;最多产生/抑制另一个错误。

对应官方 3.5、3.6、3.7、3.8、3.9

3 · 从嵌套 header 判定这是不是我的 probe

Why the official problem exists:检查 traceroute 的每个 hop 是否都能追溯到本轮某个 UDP probe,而非“看到 ICMP 就收下”。

A 对 B 发送三个 UDP probes:TTL=3,destination ports 33434、33435、33436。收到 response 时可见外层 IP、ICMP、quoted IP、quoted UDP。

先预测:哪个字段最能区分三个 probes?

Work It Out

responseICMP type/codequoted dst IPquoted dst port接受?
r1Time ExceededB33435____
r2Time ExceededX33434____
r3Port UnreachableB33436____ / stop?
Hint 1 · Concept

合法 ICMP 与相关 ICMP 是两道 gate。

Hint 2 · State / Invariant

不变量:接受结果必须匹配目标和本轮 probe identity。

Hint 3 · First Step

先检查 quoted destination,再检查 quoted port。

Reveal · 展开完整推导

r1 接受并记录外层 source;r2 虽格式合法却属于别的目的,忽略;r3 匹配且 Port Unreachable 来自最终主机,记录并终止。对多路径结果按 TTL 聚合 responder set,而非假设每轮只有一个地址。

Why This Works

ICMP quote 提供反向关联;外层 header 提供 responder identity。两层信息职责不同。

Variation

把 r1 延迟到 TTL=4 才到达。仅凭端口能否识别旧轮次?设计 destination port 或本地 pending set 的生命周期。

Closed-book reconstruction

从 TTL=1 开始,为一个有两条 ECMP 路径的 4-hop 网络画三 probes/TTL 的 send、ICMP quote、validation 与 termination,不参考任何 header 图。

一手资料