要約
- RFC 3137はrouter-LSAを残し、stub linkの通常costを維持したまま、non-stub linkを16 bit最大値
0xFFFFにした。冗長経路があれば、他のrouterはそのnodeを中継に使わず迂回する。 - これは強い選好であり、withdrawalでもdrain完了証明でもない。代替経路がなければ、RFC 1583以後のOSPFは高costの唯一経路を使い続け得る。
消すと、管理のための道まで消えた
故障は一瞬の出来事とは限らない。CPUが危険な水準に達したrouter、全LSAやrouting tableを保持するmemoryが足りないrouter、あるいはmaintenance直前のrouterは、protocolを話し管理通信を受ける力を残しながら、transit loadを担う余力を失うことがある。
router-LSAをflushすれば、他nodeはそのrouterを経路計算に使わなくなる。しかしOSPFは単なる宛先表ではなく、link-state graphを計算する。RFC 2328ではrouterとtransit networkを使って第一段階のshortest-path treeを作り、stub networkを後から葉として加える。XのLSAを消すと、Xから出るlinkだけでなく、Xへ到達する計算に必要なbacklinkも失われる。中継を止める代わりに、X自身への到達性まで失いかねない。
2001年6月のInformational RFC 3137は、Xをgraphに残した。存在を撤回せず、linkの役割ごとにpriceを変えたのである。
最大値は「いない」ではなく「できれば通るな」だった
Xはrouter-LSA内の全non-stub linkを16 bitのall-ones、0xFFFFで広告する。本文はこれをLSInfinityと呼び、summary LSAやAS-external LSAの24 bit最大値0xFFFFFFとは別物だとした。type 3のstub linkだけはinterface output costを保つ。
non-stub linkは、shortest pathがrouterやtransit networkを通過する面を作る。そのcostが最大なら、通常の冗長経路の方が安い。一方、stub linkは直接接続prefixを葉として表す。そこを通常costのままにすることで、受信者はXを越えて別の場所へ行くことを避けながら、Xに付属する目的地では経路を終えられる。
したがって、到達性と中継適格性が別々のclaimになった。Xが見えることは健康の証明ではない。中継経路から外れたことも、Xのidentityや管理面を消す命令ではない。
RFCはcritical condition、routerのgraceful introductionやremoval、その他のadministrativeまたはtraffic-engineering理由を挙げた。ただし、これは完全なmaintenance workflowではない。local configが受理されても、remote LSDBへの到達、SPF、FIB更新、flow移動はそれぞれ別のeventである。
迂回路は外部条件ではなく、成立条件だった
RFC 3137は、少なくとも一定の冗長性があるnetworkでこそ実益があると強調した。metricは新しいlinkを作れない。各routerは受け取ったLSAと手元のdatabaseから独自にpathを決める。topologyがalternativeを持つときだけ、最大costは迂回を実現する。
代替がない場合、0xFFFFを絶対的なunreachableと読むのは誤りになり得る。RFC 1583以後の計算では、それは有限の最大metricだった。Xが唯一の道なら、受信者はなおXを選ぶ可能性がある。continuityを守るfallbackである一方、守りたいrouterへloadを戻す仕組みでもある。
operatorが保存すべきproofは連鎖する。設定は意図を示す。originated LSAはXが何を述べたかを示す。remote databaseは伝播を示す。RIB/FIBは選択を示す。flow counterはtransitが減ったかを示す。service probeは利用結果を示す。前のproofから次を推定してはならない。
OSPFの世代差は、唯一経路で表面化した
RFC 1247に従うrouterは、router-LSAのLSInfinity link recordを捨てた。RFC 1583以後は、最大metricをunreachableとして扱わなかった。この差がRFC 3137のcompatibility sectionに残っている。
alternative pathがあれば、どちらも安い迂回路を選ぶ。Xだけが道なら、古い計算はXをtransitに使わず、新しい計算は高costでも使い得る。RFC 3137は、この限定された不一致からrouting loopは生じないと述べた。
その文を、全ての収束がloop-freeだという保証に拡張してはならない。複数routerのFIB更新時刻がずれるtransient microloopは別問題であり、後のRFC 6976がordered FIBとして扱った。RFC 3137が説明したのは、最大値の静的な解釈差である。
LSInfinityという名前は二つの意味を覆っていた。一部には除外、一部には最終候補である。この曖昧さを利用してbackward compatibilityを得たとも言える。
12年後、値の名前が意味に追いついた
RFC 6987は2013年にRFC 3137をobsoleteにした。基本設計を残しながら、0xFFFFをMaxLinkMetricという固定architectural valueとして定義した。infinityではなく最大metricと呼ぶことで、唯一経路なら使われ得る事実が見えやすくなった。
改訂版はOSPFv2とOSPFv3の双方に適用し、OSPFv3のR-bitも代案に加えた。R-bitをclearしたrouterはtransitに使われない。RFC 6987は選択をoperatorに委ねつつ、違いを明示した。MaxLinkMetricは代替がなければ唯一経路を残す。R-bitはより一貫してtransitを拒む。
前者はcontinuity、後者はisolationを優先する。これは2013年の明文化であり、2001年のRFCに遡って帰属させてはならない。歴史的には、元の中間状態が残り、そのtrade-offの表現だけが正確になった。
graceful restartは逆向きの要求だった
RFC 3623のOSPF graceful restartは、routing softwareのrestart中にもrouterをforwarding pathに残そうとする。forwarding stateが保たれ、topologyが安定し、neighborが拡張を支援することが条件である。RFC 3137は、見えているrouterをforwarding pathからできるだけ外そうとする。
どちらもtransitionを滑らかにするが、transitに求める結果は逆である。言葉の近さを理由に同じreceiptを使えば、保護対象へtrafficを寄せる危険がある。
RFC 5817は後にMPLS/GMPLS TE networkのplanned shutdownを扱い、RFC 6976はlink-state convergence中のFIB更新順序を扱った。それぞれ別のauthorityとstateを持つ。RFC 3137のmaximum-metric LSAは、tunnel撤去、maintenance承認、drain完了、あるいは普遍的なloop-free convergenceを証明しない。
到達できることと、使えることを分けた歴史
RFC 3137の価値は65535という数ではなく、routerを一つのbooleanで表さなかった点にある。protocolを送れ、managementで到達できても、transitには危険かもしれない。正しいLSAを送れても、remote pathと実flowはまだ変わっていないかもしれない。
Xは広告を支配する。receiverはSPFとFIBを支配する。topologyはalternativeの有無を支配する。operationsは開始と復帰を決める。measurementだけがtrafficとserviceの結果を言える。
著者たちはideaのoriginalityを主張せず、Informational publicationもdeploymentを証明しない。それでも、この文書は重要な語彙を残した。役割を撤回してもidentityは撤回しない。routerは到達先としてgraphに残り、他所へ向かう道路としてだけ高価になった。
出典
- https://www.rfc-editor.org/rfc/rfc3137.txt
- https://www.rfc-editor.org/info/rfc3137
- https://datatracker.ietf.org/doc/rfc3137/
- https://www.rfc-editor.org/rfc/rfc2328.txt
- https://www.rfc-editor.org/rfc/rfc1247.txt
- https://www.rfc-editor.org/rfc/rfc1583.txt
- https://www.rfc-editor.org/rfc/rfc6987.txt
- https://www.rfc-editor.org/info/rfc6987
- https://www.rfc-editor.org/rfc/rfc5340.txt
- https://www.rfc-editor.org/rfc/rfc3623.txt
- https://www.rfc-editor.org/rfc/rfc5817.txt
- https://www.rfc-editor.org/rfc/rfc6976.txt
会員向け解説
プロフィールの詳細
適切な会員レベルでログインすると、解説全文と出典メモをご覧いただけます。
Strategic Circle 限定
Strategic Circle
すべての読者に公開されています。参加してログインすると プロフィール解説 を閲覧できます。
Strategic Circle に参加Leadership Alliance 会員限定
Leadership Alliance
対象となる IP 資産の所有者・管理者向けです。ログインすると Leadership Alliance の解説を閲覧できます。
Leadership Alliance に参加
