手当たり次第に書くんだ

飽きっぽいのは本能

OSPF プロセスを分ける意味 – LSDB と再配送境界で考える

OSPF の設計レビューをしていると、「なぜ OSPF プロセスを複数に分けているのか」という構成を見ることがあります。Cisco 系の設定では router ospf 1 のようにプロセス ID を指定するため、最初は隣接ルーターと合わせる番号のようにも見えます。

しかし、OSPF のプロセス ID は隣接関係を作るための共通番号ではありません。ルーター内部で OSPF インスタンスを識別するためのローカルな番号です。だから、隣接ルーター同士でプロセス ID が違っていても、エリア、Hello / Dead interval、認証、MTU、ネットワークタイプなどが合っていれば Neighbor は成立します。

では、OSPF プロセスを分ける意味は何か。結論から言えば、同一ルーター内に別の OSPF ドメインを作り、LSDB、SPF 計算、経路再配送の境界を分けることにあります。

参考
書籍
参考書籍

マスタリング TCP/IP ルーティング編

OSPF、経路制御、ルーティング設計の基礎を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

まず結論

OSPF プロセスを分ける効果は、単にプロセス ID を変えることではありません。別の OSPF ドメインを同じルーター上に持ち、両者を自動的には混ぜないことに意味があります。

  • LSDB をプロセス単位で分けられる
  • SPF 計算の単位を分けられる
  • 経路を自動的に混ぜず、再配送を明示できる
  • 再配送時に prefix-list、route-map、metric、tag で制御できる
  • OSPF エリア設計とは別の経路制御境界を作れる

つまり、OSPF プロセス分割は、エリア設計では表現しづらい経路制御境界を作るための手段です。通常の OSPF エリア設計で済むなら、無理にプロセスを分ける必要はありません。しかし、経路を混ぜる場所と混ぜない場所を明確にしたい場合には、設計上の意味があります。

OSPF は LSDB を共有して最短経路を計算する

RFC 2328 では、OSPF はリンクステート型ルーティングプロトコルであり、各 OSPF ルーターが自律システム内のトポロジーを表すデータベースを持ち、そのデータベースから shortest-path tree を構築してルーティングテーブルを計算すると説明されています。

ここで重要なのは、OSPF が「同じ世界を共有して、そこから最短経路を計算する」プロトコルだという点です。BGP のように経路属性やポリシーを前提に細かく経路を流し分けるプロトコルではありません。

OSPF エリアは、その OSPF ドメインの中で LSDB や経路情報を階層化する仕組みです。一方で、OSPF プロセスを分けると、同じルーターの中でも別の OSPF インスタンスとして動きます。この違いを混同すると、設計意図が曖昧になります。

プロセス ID は Neighbor 条件ではない

OSPF のプロセス ID は、隣接ルーター間で一致させる必要はありません。たとえば片方が router ospf 1、もう片方が router ospf 100 でも、隣接条件が一致していれば Neighbor は形成できます。

router ospf 1
 network 10.0.0.0 0.0.0.255 area 0

router ospf 100
 network 10.0.0.0 0.0.0.255 area 0

もちろん、運用上はプロセス ID を揃えることがあります。設定例、設計書、運用手順を読みやすくするためです。ただし、それは管理上の判断であり、OSPF の隣接関係を成立させるための必須条件ではありません。

エリア分割とプロセス分割は違う

OSPF にはエリアという設計要素があります。エリアは、同一 OSPF ドメインの中で LSDB と経路計算を階層化し、経路情報や LSA の広がり方を制御するための仕組みです。

一方、プロセス分割は、同じルーター内で OSPF ドメインそのものを分ける考え方です。エリア分割とプロセス分割は似て見えることがありますが、設計上の意味はかなり違います。

観点OSPF エリア分割OSPF プロセス分割
位置づけ同一 OSPF ドメイン内の階層化別 OSPF ドメインを同一ルーター上に作る
経路の流れABR を通じて OSPF の仕組みで伝播する再配送しない限り混ざらない
LSDBエリア単位で分かれるプロセス単位で分かれる
制御点エリアタイプ、集約、フィルタリングなど再配送、route-map、metric、tag など
主な目的OSPF ドメインのスケールと階層化経路制御境界の明示

プロセス分割で分かれるもの

OSPF プロセスを分けると、それぞれのプロセスは独立した OSPF インスタンスとして動作します。単に設定ブロックが分かれるだけではなく、経路情報の扱い方も変わります。

分かれるもの意味
Neighbor各プロセスが別々に Neighbor を持つ
LSDBリンクステート情報がプロセス間で直接共有されない
SPF 計算経路計算がプロセスごとに行われる
OSPF 経路再配送しない限り別プロセスへ入らない
ポリシープロセス間の再配送点で明示的に制御できる

このため、OSPF プロセス分割は「経路を混ぜない状態を作り、必要なものだけ再配送する」ための構成として理解できます。

再配送境界として使う

OSPF は、ドメイン内で同じトポロジーを共有し、最短経路を計算することに向いたプロトコルです。そのため、OSPF 内で強いポリシー境界を作りたい場合、エリア設計だけでは足りないことがあります。

このとき、OSPF プロセスを分け、プロセス間を再配送でつなぐと、境界で経路を選別できます。どの prefix を渡すのか、metric をどう付けるのか、tag を付けて再流入を防ぐのか、といった判断を明示できます。

制御項目
prefix の選別特定 prefix だけ別プロセスへ渡す
metric の変更再配送時に cost を調整する
route tag再配送された経路に tag を付け、再流入や loop を防ぐ
経路集約境界で summary route として扱う
片方向制御片方のプロセスからだけ経路を渡す

使いどころ

OSPF プロセス分割は、常に使うべきものではありません。むしろ、通常はエリア設計で済むならエリア設計の方が素直です。プロセスを増やすほど、設計も障害解析も複雑になります。

それでも、次のような場合にはプロセス分割を検討する価値があります。

  • 管理主体が異なる OSPF ドメインを同一ルーターで接続する場合
  • 既存ネットワークと新規ネットワークの間に明確な経路制御境界を作りたい場合
  • 一部 prefix だけを選別して OSPF ドメイン間で渡したい場合
  • OSPF エリア設計では表現しづらいポリシー境界が必要な場合
  • 移行期間中に、経路を段階的に混ぜたい場合
  • VRF や別管理ネットワークとの境界で、経路の持ち込み方を明確にしたい場合

注意点

OSPF プロセス分割は便利ですが、設計を複雑にします。安易に使うと、かえってトラブルシュートが難しくなります。

注意点内容
再配送 loop双方向再配送で同じ経路が戻ってくる可能性がある
経路属性の変化OSPF 内部経路が外部経路として扱われる場合がある
metric 設計プロセス間で cost の意味が変わることがある
障害解析どのプロセスで経路が見えているかを追う必要がある
設定量の増加route-map、prefix-list、tag 制御が増える

特に双方向再配送を行う場合は、route tag などで再流入を防ぐ設計が重要です。何を渡すかだけではなく、戻ってきた経路をどう扱うかまで決めておく必要があります。

OSPF が扱いづらく見える理由

OSPF はリンクステート型プロトコルとしては非常によくできています。一方で、ポリシー型の経路制御を強く求めると扱いづらく感じます。

OSPF は、ドメイン内でトポロジーを共有し、最短経路を計算することに向いたプロトコルです。BGP のように、経路を選び、属性を付け、ポリシーで流すことを主目的にしたプロトコルではありません。

そのため、OSPF で強い制御境界を作ろうとすると、エリアタイプ、集約、フィルタリング、再配送、プロセス分割といった複数の手段を組み合わせることになります。ここを理解せずに設定だけを見ると、OSPF は急に複雑なものに見えます。

この点は、OSPF の扱いづらさについての考察 ともつながります。

まとめ

OSPF プロセスを分ける効果は、同一ルーター内で OSPF の世界を分離し、プロセス間を再配送境界として扱えることです。

プロセス ID は Neighbor 間で一致させる必要はありません。あくまでルーター内のローカルな識別子です。

エリア分割は同一 OSPF ドメイン内の階層化であり、プロセス分割は別 OSPF ドメインを作るような設計です。この違いを混同しないことが重要です。

プロセス分割は、経路制御の柔軟性を増やします。しかし同時に、再配送 loop、metric 設計、route tag、障害解析の複雑さも増やします。

したがって、OSPF プロセス分割は「なんとなく分ける」ものではなく、明確な経路制御境界を作りたいときに使う設計手段として扱うのがよいと思います。

参考情報

参考:

関連する記事

あわせて読みたい:

OSPF プロセスを分ける意味 – LSDB と再配送境界で考える

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る