無料ブログはココログ

トップページ | 【BFD】 2. BFDの設定(Juniper) »

【BFD】 1. BFDについて

1. BFDについて

IETF Bidirectional Forwarding Detection WGで検討中のBFDについて考えてみたいと思います。

【参考】http://www.ietf.org/html.charters/bfd-charter.html

まずは、現実の世界でのBFDの存在意義について考えます。

隣接ルータへの到達可能性を素早く検知して意味があるのは、迂回路があるケースです。 迂回路がなければどうがんばっても通信は途絶えてしまうので、障害を素早く検知しても意味がありません。

相手ルータへのリーチャビリティを失ったら、それを契機として迂回動作を取る。 それをいかに短時間で行ってダウンタイムを短くするかがポイントなわけです。

BFDを使うと本当にダウンタイムが短くなるのか? 逆に言えば、普通にルーティングで迂回したら、実用にならないほど遅いのか、ってことですね。

ここではOSPFを使うことを想定してみます。

Ciscoの場合、SPF Delay=5秒がデフォルトなので、 ルータが障害を検知してから迂回するまで約5秒強で迂回可能です。 このタイマ値は設定変更可能なので、もっと短くできます。

Juniperはかなり強気でSPF Delay=0秒です。なので障害を検知すれば即、迂回可能です。 つまり障害を知りさえすれば、OSPFの切り替えは十分高速なのです。

問題は、ルータが隣接ノードの障害を知らずにいるケースというのはどの程度あるかということになります。

ケース1

一般的に問題だとされているのは、LANスイッチを経由した場合のリンク状態の伝搬です。 次のようなネットワークでR1のイーサ①がリンクダウンしたとします。 R1-R2間にはL2スイッチが介在していますので、R2はリンクダウンしません。

で、このケースでOSPFでのルーティングは遅いのでしょうか?

実際にやってみると分かるのですが、切り替えは高速です。 ほとんどパケットロスしません。 Juniperでやってみると、SPF Delayがゼロなので、瞬時に経路が切り替わります。 R1はリンクダウンと同時にルータLSAを作り直してフラッディングするからです。 迂回路さえあれば、そのLSAはR2にも届きますので、すぐに切り替わるわけです。

ということでこのケースにBFDの出番はありません。 (というよりも、こんなネットワーク自体、出番がありません)

ケース2

もう少し現実的なネットワークは、アップリンクが2本あって、別のルータに繋がっているケースでしょう。

この場合も、リンク①がダウンした程度では、BFDの意味はありません。 ルータR1が責任もってルータLSAを更新、フラッディングするからです。

では、ルータR1そのものが突然ダウンした場合はどうでしょう。

R3はリンクダウンしないので、R1は生きていると思っています。 R1からのOSPF Helloがしばらく来ないとRouter Dead Interval(普通40秒)に達します。 その時点でOSPFは経路を切り替えます。

どうやら、このケースでBFDは生きてきそうです。 R1-R3間でBFDを適用すれば、OSPF Helloに頼らず、相手ルータの死活状態を高速に検知できるからです。

ケース3

広域イーサ接続で、リンクステータスが伝わらないケースを考えてみましょう。

広域イーサ①に障害が発生すると、ルータR1,R3はリンクアップしているのに通信できないという状況に陥ります。

こういう場合もBFDは有効でしょう。

ただし、広域イーサにBFDの制御パケットを投げすぎると回線帯域を無駄に消費してしまいます。 現実的には使えないんでしょうね。

ケース4

L3スイッチ同士の接続で、レイヤ3から見たときのインタフェースがVLANになっている場合について考えてみます。

リンク①が抜けても、同じVLANに参加しているポートが他にあれば、VLANそのものはダウンしません。 したがって、L3SW1, L3SW2共にOSPF Helloを待って切り替えるしかありません。

このケースもBFDが有効に生きるでしょう。

ということで、BFDは場面を選べば使えそうです。

次は実機で試してみましょう。

つづく。

トップページ | 【BFD】 2. BFDの設定(Juniper) »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/54859/1546219

この記事へのトラックバック一覧です: 【BFD】 1. BFDについて:

トップページ | 【BFD】 2. BFDの設定(Juniper) »