CS 168 · DISCUSSION 01 · GUIDED REASONING WORKBOOK
这次不背架构目标:你要拿一个看似合理的设计,指出它把可靠性、异构性、自治或成本中的哪一项推向了错误的位置。
无需离开 CourseStack:先预测,再在表格、时间线或状态空间里完成推导;卡住时逐层打开提示,最后才展开解释与变式。
已阅读 Spring 2026 worksheet 与 official solution;以下是原创等价练习。官方 IDs 用于 coverage,对精确原题请回到页末 PDF。
对应官方 2.1、2.2、2.3、2.4、2.5、2.6、2.7
Why the official problem exists:检查你能否用目标和 end-to-end principle 评价设计,而不是凭“集中式/分布式听起来先进”作答。
三个提案:A. 每个 carrier router 都为每个 packet 做可靠 next-hop handshake;B. 全球只有一个 controller,carrier 只能听它更新;C. 某个无线园区为性能在本域加 link-layer recovery。
先预测:哪一个最不妨碍其他网络保持自治?
| 提案 | 受益者 | 新增 state 在哪 | 失败域 | 违反目标? |
|---|---|---|---|---|
| A | 单跳可靠 | 每台 router | 全网每跳 | ____ |
| B | 统一视图 | 中央 controller | 全球 | ____ |
| C | 无线本域 | 该园区 | 局部 | ____ |
先问这个目标是否必须由网络核心实现。
不变量是一个自治域的选择不应强迫无关自治域升级。
先圈出每个提案需要改变的设备集合。
A 把 per-packet 可靠 state 强加给所有 router,伤害异构兼容、成本和 fate sharing。B 让 controller 成为大 failure domain,也破坏 distributed management。C 只在能观察无线 loss 的本域优化,不削弱端点仍可实现的可靠性。
架构目标不是互斥 checkbox;真正的推理是把 mechanism 的 state、部署范围和 failure blast radius 对应到目标。
Amazon 在自己 AS 内采用 controller,但对外仍说标准 BGP。重新判断:自治边界变小后,B 的哪些风险消失,哪些仍存在?
对应官方 3.1、3.2、3.3、3.4
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 应是多少?
| packet | src/dst IP | TTL before | event | TTL/output |
|---|---|---|---|---|
| probe | A→B | 1 at R2 | decrement | ____ |
| ICMP response | ____ | new | route toward A | ____ |
区分触发错误的 packet 与承载错误消息的 packet。
每个新 IP datagram 有自己的 header 生命周期。
先写 response 的 src=R2、dst=A。
probe 在 R2 变为 TTL=0 并被丢弃。R2 创建 src=R2、dst=A 的新 IP datagram,使用本机正常初始 TTL(例如 64),payload 是 ICMP header 加原 probe 的必要前缀。
TTL 限制的是一个 datagram 的 hop lifetime;ICMP 把失败变成另一条可路由的证据链。
如果 ICMP response 自己在回程环路中 TTL 归零,会发生什么?它不会复活原 probe;最多产生/抑制另一个错误。
对应官方 3.5、3.6、3.7、3.8、3.9
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?
| response | ICMP type/code | quoted dst IP | quoted dst port | 接受? |
|---|---|---|---|---|
| r1 | Time Exceeded | B | 33435 | ____ |
| r2 | Time Exceeded | X | 33434 | ____ |
| r3 | Port Unreachable | B | 33436 | ____ / stop? |
合法 ICMP 与相关 ICMP 是两道 gate。
不变量:接受结果必须匹配目标和本轮 probe identity。
先检查 quoted destination,再检查 quoted port。
r1 接受并记录外层 source;r2 虽格式合法却属于别的目的,忽略;r3 匹配且 Port Unreachable 来自最终主机,记录并终止。对多路径结果按 TTL 聚合 responder set,而非假设每轮只有一个地址。
ICMP quote 提供反向关联;外层 header 提供 responder identity。两层信息职责不同。
把 r1 延迟到 TTL=4 才到达。仅凭端口能否识别旧轮次?设计 destination port 或本地 pending set 的生命周期。
从 TTL=1 开始,为一个有两条 ECMP 路径的 4-hop 网络画三 probes/TTL 的 send、ICMP quote、validation 与 termination,不参考任何 header 图。