[Network] OSPFの設定を見つめ直す

困ってること

以前からこんな図をチョイチョイ載せていたかと思います。

これ、何かというとインターネット経路、つまりはデフォルト経路の切り替えに関して過去、Pythonやら使いながら切り替える制御を考えたりしていたのですが、そもそも「これってOSPFで切り替えられるものやないん?」というのが有り。

たしかにそこはおっしゃる通りで、結構前ににOSPFで制御しようとしてきたのですが、どうしてもデフォルトゲートウェイが想定したとおりにならんのです。本来UTM9に向いてほしいんですが、RTX-3000に向いてしまい、主/副関係が逆転するのです。ちなみにRTXがダウンするとちゃんとUTM9に切り替わります。

OSPFのコスト

OSPFはコストと言う概念があり、エリアやインタフェースに対してコストを設定することで、優先経路の制御ができるのです。各設定は以下のパラメータにしてました。

  • UTM9:エリア/インタフェース共に0(デフォルト値。backboneは変更不可)
  • RTX-1100(当時):cost=10を設定。UTM9のコストが物凄く低いからと判断。

UTM9側のOSPF設定はGUIでやります。以下のような設定になっており、コストはゼロに設定されていました。当時はAstaroでしたが、その頃から基本的な設定はいじっていません。

ところが、主/副の逆転現象は変わらず、あるぇ?変わらんなーとかおもったり。それでスタティック設定をしたまま放置をすることになりまして、今に至っております。

ところで、JANOG Day2が終わり、宿に返った後に何気なくOSPFについて調べて見るとこんな記述がありました。

コスト = 100(Mbps) ÷ リンクの帯域

ん・・・・・・・・・・・・・・・ん?しかも

つまり、10Mbpsのコスト値は 10、100Mbpsのコスト値は 1、1Gbpsのコスト値は、計算上0.1ですが 1 。

とある。あれ?もしかしてUTM9の「コスト0」って設定おかしくない?と気付き、インタフェースのコストを確認してみた所、

 eth0.10 is up
 ifindex 4, MTU 1500 bytes, BW 0 Kbit 
 Internet Address 192.168.100.4/24, Broadcast 192.168.100.255, Area 0.0.0.0
 MTU mismatch detection:enabled
 Router ID 192.168.100.4, Network Type BROADCAST, Cost: 10
  :
(以下略)

あー、コストが10になってるー!どうやらエリア設定やインタフェース設定の「コスト0」と言うのは「自動」を意味しているようです。そのことに数年レベルで気づかなかった私・・・Orz

挑んだ当時は、コストを10に設定したところで結局UTM9側もコスト10なので、Router IDを優先順位に位置づけるとRTX-1100の方が優先されますよねそうですよね~と言う状態になっていたことがわかりました。

というわけで、ちゃんと設定し直すことにしました。

  • UTM9のコストはイジらない。基本はデフォルト設定のままとする。
  • RTX-3000のコストをLAN1/1、LAN3に対して100に設定する

設定変更実施

静的ルートを外し、OSPFだけでやってる状態のルート情報は以下のような感じです。(コアL3スイッチから確認)

# show ip route

O IA 10.5.1.0 [110/2] via 192.168.100.1, 01:51:11, Vlan10
O*E2 0.0.0.0/0 [110/1] via 192.168.100.1, 00:00:06, Vlan10

RTX-3000側のOSPFインタフェース情報を確認します。RTX-3000のOSPFデフォルトコストはどうやら1のようです。そりゃぁまぁ優先経路こっちになっちゃいますよね。。。

# show status ospf interface

LAN1/1: Area backbone
 Router ID: 192.168.100.1, Interface address: 192.168.100.1/24
 Interface type: BROADCAST cost=1
 Interface state: DROTHER priority=1
 Designated router ID: 192.168.220.254, IP address: 192.168.100.254
 Backup designated router ID: 192.168.100.3, IP address: 192.168.100.3

LAN3: Area 0.0.0.5
 Router ID: 192.168.100.1, Interface address: 10.5.1.3/24
 Interface type: BROADCAST cost=1
 Interface state: DROTHER priority=1
 Designated router ID: 10.5.1.1, IP address: 10.5.1.1
 Backup designated router ID: 192.168.100.4, IP address: 10.5.1.2

RTX-3000側で以下の設定を投入します。

# ip lan1/1 ospf area backbone cost=100
# ip lan3 ospf area 0.0.0.5 cost=100
# save
# ospf configure refresh -> この後接続が落ちたが、すぐ復帰。

設定変更後の確認

設定変更後のルーティング情報をコアL3側から確認します。関連箇所のみ記載します。

# show ip route
O IA 10.5.1.0 [110/11] via 192.168.100.4, 00:00:33, Vlan10
O*E2 0.0.0.0/0 [110/1] via 192.168.100.4, 00:00:06, Vlan10

おお、切り替わった!

RTX-3000側のOSPFインタフェース情報を確認します。

# show status ospf interface

LAN1/1: Area backbone
 Router ID: 192.168.100.1, Interface address: 192.168.100.1/24
 Interface type: BROADCAST cost=100
 Interface state: DROTHER priority=1
 Designated router ID: 192.168.220.254, IP address: 192.168.100.254
 Backup designated router ID: 192.168.100.3, IP address: 192.168.100.3

LAN3: Area 0.0.0.5
 Router ID: 192.168.100.1, Interface address: 10.5.1.3/24
 Interface type: BROADCAST cost=100
 Interface state: DROTHER priority=1
 Designated router ID: 10.5.1.1, IP address: 10.5.1.1
 Backup designated router ID: 192.168.100.4, IP address: 10.5.1.2

コスト値が100に変更されていることがわかります。

念のためUTM9側の設定も確認してみます。

 eth0.10 is up
 ifindex 4, MTU 1500 bytes, BW 0 Kbit 
 Internet Address 192.168.100.4/24, Broadcast 192.168.100.255, Area 0.0.0.0
 MTU mismatch detection:enabled
 Router ID 192.168.100.4, Network Type BROADCAST, Cost: 10
  :
(以下略)

コスト値は10のまま変わっていません。つまりは、コスト値は10<100と評価されて、より低いUTM9を優先するようになったということですね。

なお、インターネットに出られるゲートウェイはUTM9とRTX-3000とは別にXG Firewallもあるんですが、こいつは基本的にインターネットゲートウェイとして機能してほしくないので、エリアに対してコスト=200を設定してあります。

まとめ

今回、OSPFのこの動きについて、なんで捉えられなかったのかを振り返りました。

その時、そう言えばちゃんとメトリックについて理解ができてなかったなぁ・・・アドミニストレーティブ・ディスタンスと区別ついてないなぁ・・・と感じて改めてshow ip routeの表示内容を調べてみました。

こんな感じなんすね。[]で囲ってる左側の値がアドミニストレーティブ・ディスタンス、右がメトリック。コアL3で表示させた経路は自身のホップしか挟んでないので1ですが、採用するにあたってはUTM9の持つコストとRTX-3000の持つコストを比較していると思われます。

アドミニストレーティブ・ディスタンスはconnected/static/dynamic単位で「どれを採用するか」の基準値で、一番強いのがconnected(0)、続いてstatic(1)、その後にdynamic(5以降)が続くみたいです。OSPFには110が、RIPには120が適用されており、RIPよりもOSPFが優先されると言う理解で良さそうです。

[]中の値、基本的には右側の数字がmetricということで判断基準になりそうということと、エリア/インタフェース双方のコスト値を確認することが肝要なのかなと感じました。ちなみにRouterboardのデフォルトコスト値も10でした。RB2011からみたルーティングテーブル、関連箇所は以下のような形になっています。

 # DST-ADDRESS STATE COST GATEWAY INTERFACE
 0 10.5.0.0/24 inter-area 220 10.5.1.2 bridge-external
 1 10.5.1.0/24 intra-area 10 0.0.0.0 bridge-external
 7 192.168.100.0/24 inter-area 20 10.5.1.2 bridge-external

今回、RTX側のコストを変更することで、UTM9側のコストを相対的に下げ、優先経路としてUTM側を通るようにした・・・と言う感じになります。おかげさまでしちめんどくさい制御を入れる必要がなくなりました。

痛感したのは「力不足」でした。分かってしまえば「あー」で済む話なんですが、わからないうちは何をどう眺めてもわからない。こういう所は本当に何らかの気づきなりきっかけなりないとダメなんだなーと。今回は特によくまぁ気づいたなぁという感じです。

ネットワーク周りの知識はこんなふうに穴だらけな感じになっていると思われるので、引き続き勉強しながら改修を続けていくしかないっすね・・・

タイトルとURLをコピーしました