2026年7月18日

2026年7月18日

OSPF で経路を切り替える方法|コスト変更による計画的な迂回と、静的ルートからの移行手順

OSPF の経路は「宛先までのコストの合計が最も小さい経路」が選ばれるので、経路を切り替えたいときはコストを変えるのが基本です。この記事では、メンテナンスのために通信を予備回線へ逃がす手順、機器ごと経路から外す方法、そして静的ルートで組んだネットワークを OSPF に切り替える手順を、FRRouting(FRR)と Cisco IOS の例で説明します。切り替えの前後で何を確認すれば安全に戻せるかも合わせて扱います。

切り替えの仕組みを理解しておく

OSPF の各ルーターは、エリア内のリンク情報(LSA)を全員で共有し、それぞれが最短経路を計算します。そのため、あるリンクのコストを一台で変えると、その情報が LSA で広がり、エリア内の全ルーターが経路を計算し直します。経路の切り替えは「一台の設定変更がネットワーク全体の経路に影響する」操作だと考えてください。

インターフェースのコストは、明示しなければ「基準帯域 ÷ インターフェース帯域」で決まります。基準帯域の既定値は 100Mbps なので、100Mbps 以上のリンクはすべてコスト 1 になり、1Gbps と 10Gbps の区別がつきません。基準帯域を上げる(auto-cost reference-bandwidth)場合は、エリア内のすべてのルーターで同じ値にしないと、機器ごとにコストの尺度が違ってしまい、意図しない経路になります。

もう一つの前提は、コストが等しい経路が複数あると等コストマルチパス(ECMP)で分散されることです。「主回線と予備回線」にしたいのに、コストが同じで両方に流れていた、というのはよくある見落としです。

現状を記録する

切り替え作業の前に、現在の状態を保存しておきます。戻すときに「元はどうだったか」が分からないと、切り戻しに時間がかかるためです。

sudo vtysh -c "show running-config" > ospf-before.txt
sudo vtysh -c "show ip ospf neighbor" >> ospf-before.txt
sudo vtysh -c "show ip ospf interface" >> ospf-before.txt
sudo vtysh -c "show ip route ospf" >> ospf-before.txt

Cisco IOS なら show running-config、show ip ospf neighbor、show ip ospf interface brief、show ip route ospf を同様に保存します。あわせて、切り替え対象の宛先へ traceroute を取り、現在どのルーターを経由しているかを記録してください。

方法1:リンクのコストを上げて予備回線へ逃がす

主回線のメンテナンスや回線業者の工事に備えて、通信を予備回線へ移す場合の手順です。主回線のインターフェースのコストを予備回線より大きくすると、経路が予備回線へ移ります。リンクの両端でコストを上げておくと、行きと戻りの経路がそろい、非対称ルーティングによる切り分けの混乱を避けられます。

FRR の例です。

configure terminal
interface eth1
 ip ospf cost 1000
exit
end

Cisco IOS では、インターフェース設定で ip ospf cost 1000 と入れます。

投入後、経路が移ったかを確認します。

sudo vtysh -c "show ip route 10.20.0.0/16"
traceroute -n 10.20.0.10

ルーティングテーブルのネクストホップが予備回線側に変わり、traceroute の経路も変わっていれば成功です。作業中は別端末から ping を流し続けておくと、切り替えの瞬間に何パケット落ちたかが分かり、次回の作業計画に役立ちます。OSPF のコスト変更による切り替えは、ネイバーを切らずに経路だけを移すので、インターフェースを shutdown するより影響が小さく済みます。

作業が終わったら、コストを元の値に戻し(または no ip ospf cost)、同じ確認をもう一度行います。

方法2:ルーターごと経路から外す(max-metric)

ルーターの再起動や OS 更新のように、機器全体を止めたい場合は、各インターフェースのコストを一つずつ変えるより、そのルーターが自分のリンクを最大コストで広報する機能を使うほうが簡単です。これは RFC 6987 で整理されている「スタブルーター」の考え方で、他のルーターはそのルーターを通過経路として使わなくなります。ルーター自身に直結したネットワークへの到達性は残ります。

! FRR
router ospf
 max-metric router-lsa administrative
!
! Cisco IOS
router ospf 1
 max-metric router-lsa

設定後、周辺のルーターで経路が迂回したことを確認してから作業に入ります。作業が終わったら no max-metric router-lsa administrative(Cisco では no max-metric router-lsa)で戻します。起動直後に一定時間だけ最大コストで広報する on-startup の指定もあり、再起動直後に経路表が揃う前に通信が流れ込むのを防げます。対応する書式はバージョンで異なるので(2026年10月現在)、使用中のドキュメントを確認してください。

方法3:静的ルートから OSPF へ切り替える

拠点が増えて静的ルートの管理が大変になったとき、OSPF に移行するケースです。ここで重要なのは管理距離です。静的ルートの管理距離は既定で 1、OSPF は 110 なので、OSPF を有効にしても静的ルートが残っている間は静的ルートが優先されます。この性質を使うと、通信を止めずに段階的に移行できます。

手順の流れ

  1. OSPF を有効にし、ネイバーと LSA を確認する。 この時点ではまだ静的ルートが使われています。
router ospf
 ospf router-id 10.255.0.1
 auto-cost reference-bandwidth 100000
!
interface eth1
 ip ospf area 0
 ip ospf network point-to-point
!
interface lo
 ip ospf area 0

auto-cost reference-bandwidth の単位は Mbps で、例の 100000 は 100Gbps を基準にする設定です。ip ospf network point-to-point は二台を直結するリンク向けの指定で、対向側もネットワークタイプをそろえないとネイバーが正常に張れないことがあります。

show ip ospf neighbor で相手が Full になっていること、show ip ospf database に相手のルーター LSA が載っていることを確認します。show ip route 10.20.0.0/16 longer-prefixes などで、OSPF の経路が候補として見えているかも確認します。

  1. 静的ルートを一つずつ「浮動静的ルート」に置き換える。 管理距離を OSPF より大きい値にした静的ルートを用意し、元の静的ルートを削除します。OSPF が正常なら OSPF の経路が使われ、OSPF が全滅したときだけ静的ルートが使われる、安全網になります。
! FRR:管理距離 250 の浮動静的ルートを追加してから、元の静的ルートを削除
ip route 10.20.0.0/16 10.0.12.2 250
no ip route 10.20.0.0/16 10.0.12.2
  1. 一経路ごとに確認する。 show ip route 10.20.0.0/16 で採用されている経路が OSPF(表示の先頭が O)になっていること、traceroute で想定した経路を通ることを確かめてから次に進みます。
  1. すべて移行できたら、浮動静的ルートを残すか決める。 残すと障害時の保険になりますが、OSPF の迂回経路より優先される場面がないか(OSPF が部分的に生きているのに静的ルートへ落ちる状況はないか)を設計上確認してください。

切り替えの速さを決める要素

障害時の自動切り替えにかかる時間は、障害の検知時間と再計算時間で決まります。ブロードキャスト型のリンクでは Hello 10秒、Dead 40秒が既定で、リンクダウンを機器が直接検知できない構成(間にスイッチがある場合など)では、最大で Dead 間隔ほど待つことになります。タイマーは両端で一致しないとネイバーになれないため、変更は対向と同時に行います。検知を速めたいなら、タイマーを極端に短くするより BFD を併用するのが一般的です。

まとめ

  • OSPF の経路切り替えはコストで行う。リンク単位ならインターフェースのコスト、機器単位なら max-metric を使う。
  • 基準帯域はエリア内で統一し、等コストで意図せず分散していないか確認する。
  • 作業前に設定・ネイバー・経路を保存し、切り替え中は ping を流して影響を測る。
  • 静的ルートからの移行は管理距離の差を利用し、浮動静的ルートに置き換えながら一経路ずつ確認する。
  • 変更は検証環境で手順を確かめ、切り戻し手順を用意してから本番で行う。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲