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

