Protocol in Code · OSPF Session 10

Topology Change Recomputes The RIB

Session 10 では recompute.py を読み、changed Router-LSA が route diff をどう起こすかを end-to-end で追います。

IntermediateSession 10recomputeOSPF

Bridge

LSA change が SPF, route, winner selection を一気に呼ぶ

Session 07-09 で graph, routes, cost comparison を分けて読みました。Session 10 はそれらを一つの recompute step に束ねて、「LSA が変わったらどの prefix が動くか」を見えるようにします。

Read The Source

before / after を作って changed prefixes を抽出する

before = recompute_area_routes(lsdb, root_router_id, lsa.area_id)
installed = lsdb.install_router_lsa(lsa)
after = recompute_area_routes(lsdb, root_router_id, lsa.area_id)

この session では recompute を「SPF を呼ぶこと」ではなく、「before と after の route set を見比べること」として読みます。だから `changed_prefixes` が中心になります。

Walkthrough

stub metric change だけで 1 prefix の cost が動く例を見る

cd protocol-in-code
PYTHONPATH=src python3 examples/ospf/session_10_walkthrough.py

walkthrough では remote Router-LSA の link set は保ったまま stub metric だけを変えて、同じ prefix が別 cost で recompute されることを見ます。

Done Check

Session 10 を終えたと言える条件

  • Router-LSA change が area-wide recompute を起こすと説明できる
  • `changed_prefixes` が route diff の結果だと説明できる
  • SPF, route derivation, winner selection の呼び順を説明できる

Next Session

次は area boundary で見え方が変わるところです

Session 11 では summary route を読みます。source area の route view が target area でどう書き換わるかを見ます。