CS 168 · DISCUSSION 04 · GUIDED REASONING WORKBOOK

链路状态与 IP 地址

你将分别推“控制平面尚未收敛时 packet 实际走哪”和“prefix 怎样切分”;本页额外用同一地址题做一次 LPM transfer。

现在轮到你推

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

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

忘记机制?回到 L7 Link State 与 Addressing →

对应官方 1.1、1.2、1.3、1.4、1.5、1.6、1.7、1.8

1 · belief path 与 actual packet path 可以不同

Why the official problem exists:检查每跳 router 用自己的当前 FIB,源节点写下的“整条路径”只是预测。

R7 仍认为去 B 应走 R8→R9;R8 已知 R8—R9 断开并改走 R4→R5;R7 尚未收到更新。

先预测:packet 从 R7 发出后实际下一段?

Work It Out

router它相信的 suffix收到 packet 后 output
R7R8→R9→R5R8
R8R4→R5____
R4R5____

再构造 R2 与 R6 对 A 的互指 state,判断是否形成 microloop。

Hint 1 · Concept

packet 不携带源 router 预测的完整路径。

Hint 2 · State / Invariant

forwarding invariant 只依赖当前节点 FIB;不一致可产生 transient loop。

Hint 3 · First Step

从 R7 的 first hop 开始逐跳查。

Reveal · 展开完整推导

实际路径 R7→R8→R4→R5→B。若 R2 新 FIB 指向 R6、而 R6 旧 FIB 仍指向 R2,则 packet 在两者间 loop,直到 TTL 或 convergence 打断。必须让所有受影响 router 收到 state,不能只更新断链端点。

Why This Works

控制平面状态分布式到达,数据面每跳消费各自版本,因此 convergence 是时序问题。

Variation

给 update 加版本并要求下游先更新,能否避免此 microloop?列出需要的更新顺序。

对应官方 2.1、2.2、2.3、2.4

2 · 最短路、故障收敛与图割

Why the official problem exists:把“有很多最短路”与“网络真的抗故障”分开。

A 与 B 之间有三条等成本中路,但所有路径都必须经过入口边 A—X 和出口边 Y—B。

先预测:哪条边加倍最可能提升所有 A→B 最短路径成本?

Work It Out

列出所有等成本 paths;求一条 edge cut 与 node cut;再用 hop distance 估计 link-state flood 到最远节点的时间。

Hint 1 · Concept

先找所有 path 的交集。

Hint 2 · State / Invariant

可靠性看 cut,不只看 path count。

Hint 3 · First Step

control message delay 按 hop,而非 data link cost。

Reveal · 展开完整推导

冗余中路提供 ECMP,但共同入口/出口仍是 cut edge。加倍共同边影响所有 path;加倍单一冗余边只让流量改走别路。收敛上界取 failure LSA 到最远 router 的传播 hop 数,再加 local SPF。

Why This Works

路径多样性只有在 failure domain 独立时才等于 resilience。

Variation

加入一条 A 到另一入口的边,重新计算 min-cut 与哪条 cost change 能影响 shortest path。

对应官方 3.1、3.2、3.3

3 · Prefix 切分与 LPM transfer

Why the official problem exists:检查地址数量、对齐和 longest-prefix choice 是否来自同一 bit model。

组织拥有 10.20.0.0/16。把 10.20.192.0/18 平分给 EE 与 CS;新小组需要至少 50 addresses。

先预测:/18 平分成两个相等子网,新 prefix length?

Work It Out

写两个 /19 的 network address;为 50 hosts 选择最小 2 的幂地址块并说明对齐。然后用表 /8→A, /16→B, /24→C, /0→D 查询 10.1.2.87。

Hint 1 · Concept

地址数是 2^(32-prefix)。

Hint 2 · State / Invariant

切成两份只多固定一 bit。

Hint 3 · First Step

LPM 先列所有匹配,再选 prefix length 最大。

Reveal · 展开完整推导

两个 /19 为 10.20.192.0/19 与 10.20.224.0/19。至少 50 需要 64 addresses,即 /26,并必须落在 64-address 边界。10.1.2.87 同时匹配 /0、/8、/16、/24,选择 /24→C。

Why This Works

subnet allocation 与 forwarding 都在同一前缀树上操作:一个创建更具体节点,一个选择最具体祖先。

Variation

加入 10.1.2.128/25→E,分别查询 .87、.129 和 11.0.0.1。

Closed-book reconstruction

画一个 5-router link-state 图,制造一次两版本 FIB 的 microloop;再从 /20 切出一个 /22 和两个 /24,写边界并做三次 LPM。

一手资料