MTU値の設定もれによってOSPFがうまく動かなかった話
問題発生
mtr -r -c 1 <自分のIP>
をしたところエッジルーターに向かった後、再びエッジルーターに向かい、コアルーターにルーティングされました。一見問題なさそうに見えますが、私が意図した設定にはなってないです。本来であれば、エッジルーターに向かった後、すぐにコアルーターにルーティングされないといけません。
原因究明
とりあえず、OSPFがうまく動いていないのかな?と思って、
sudo birdc show ospf neighbors
を実行したところ、該当するOSPFでExStartで止まっていました。再起動で解決することを期待して、ルーターごと再起動を試したところ、再び同様の問題が発生したため、根本的な問題が発生しているのだと思いました。そこで、いろいろ調べてみたところ、OSPFの隣接として使っているインターフェイスのMTUがコアルーターと異なっていると起こる問題だと書かれていたので、
ip a
でMTU値を調べてみたところ、エッジルーター側のMTU値が9000、コアルーター側のMTU値が1500となっていました。そのため、MTU値の不一致が直接的な原因だと判明したので、急いで修正しました。
 なぜMTU値が9000と設定してしまったか?
ルーター同士などをTagged VLANで結んでおりまして、Tagged VLANを使用していますと、VLANのヘッダーが追加される関係でMTU値が小さくなります。そのため、MTU値をあらかじめ9000に設定しておけば、そういった減少問題を意識する必要がないだろうと思っていました。VLANインターフェイスのMTU値を1500に設定している関係で、エッジルーター側でもMTU値を変更がありました。しかし、私が設定するのを怠ってしまったために、エッジルーターのMTU値が9000となってしまいました。
最後に
OSPFというのは大変癖の強い動的ルーティングだと思っています。iBGPはかなり素直でよい子なのですが、OSPFは全然それほどではないです。
悲しいな。
参考記事
Discussion