Session Goal
Router-LSA を field の集まりとして説明できるようにする
OSPF の後半は LSDB と SPF が中心になります。その前に Router-LSA が何を持っている object なのか、identity と payload を分けて読む必要があります。
Read The Source
header, links, stub networks を分けて見る
@dataclass(frozen=True)
class RouterLSA:
header: LSAHeader
area_id: str
links: tuple[LinkDescription, ...] = ()
stub_networks: tuple[StubNetwork, ...] = ()header は version と identity、`links` は graph の入力、`stub_networks` は route derivation の入力です。ここを分けると flood と SPF の責務が見やすくなります。
Walkthrough
1 つの Router-LSA を作って key を見る
cd protocol-in-code PYTHONPATH=src python3 examples/ospf/session_04_walkthrough.py
walkthrough では LSA key、link count、stub prefix を出して、identity と payload の切れ目を確認します。
Done Check
Session 04 を終えたと言える条件
- Router-LSA を識別する field を挙げられる
- links と stub networks の役割を分けて説明できる
- newer / older の比較が sequence と age で決まると説明できる
Next Session
次はその LSA をどこへ流すかを決めます
Session 05 では flood を読みます。受け取った LSA を forward する interface 集合がどう決まるかを見ます。