冗長構成時のTrap:雑記
Trapを探せ
Trapが行方不明に
回線冗長をRouter1つで組んでいました。
Main・BackUpの構成で普段はMainでしか通信していません。
Router2つないとSingleポイントFailureだよって言ったんですが、金がかかるということで無視されました。
特に問題なく普段は運用できていたので、話題にはあがらなかったのですが、ある日、回線障害がおきました。
特に通信には影響なく切り替わり、復旧時には元の構成に戻っていました。
が、運用チームからInterfaceDownのTrapがきていないとクレームです。
Trapの内容
運用チームからはTrapが以下の順番で飛んできていると聞きました。
※詳細は省略
・BGP Down
・Interface UP
・BGP UP
InterfaceのDownが最初じゃないの?と聞かれたのですが、ログを見てもDownは届いていないので詳細を確認することにしました。
検証
Trapが届いていないとのことだったので、まずは仮設を2つほどたてました。
1.Routerがそもそも飛ばしていない。(設定は正しい前提:UPがとんでるため)
RouterってInterfaceDownするとRoutingTableが切り替わってTrap飛ばすよねって、考えたため有力は2としつつもパケットキャプチャをしつつ検証を実施しました。
また、RouterのTrapを出すタイミングにも問題がある可能性があるため、Debugを実施しInterfaceを落としました。
結果
結果として、RouterがRoutingTableを切り替える前にTrapを送信していました。
そのため、DownしているInterfaceに送信しようとし、破棄されていたのです。
なぜ、そんなことになったのかというと、Interface管理やRouting、SNMPのプロセスが別々で動作しているからです。
事象的には以下の順番で動いています。
※詳細は略
1.InterfaceDown(L2レベル)
2.SNMPTrapの作成
3.SNMPTrapの送信
4.InterfaceDown(L1レベル)
5.RoutingTableの切り替わり
これが2秒以内ので実施されています。
1と4の間はいわゆるキャリアディレイといわれるものでInterfaceのフラッピングを防ぐものです。
対策
結局、Trapはルーターから出力されていないことがわかり、また、キャリアディレイが原因であることと、それは設定で変更できることを報告しました。
さらに、該当機器ではSNMPTrapの送信ディレイをかけれないことも追加しています。
しかし、拠点数が千を超えるため、設定変更による影響を検討した結果、InterfaceDownはこないものだということで運用することになりました。
総評
これは装置としていいのかどうかはおいといて、思い込みによるTrap行方不明事件でした。
そもそも、Router2つ用意して、回線も冗長化するもんなんじゃないのかなぁ。
機器と回線と故障率はどっちが高いんだろうか・・・。
無駄な構成にして金を巻き上げるってのは古今東西どこでもやっているんですね・・・。
私は構成を最適化しようとして怒られました。