# IP / BFD

BFD（Bidirectional Forwarding Detection）は、ネットワーク上の2点間において通信の正常性を監視する機能です。
BFDセッションを確立した2台の装置（BFDピア）は定期的に監視パケットを送受信し、一定時間受信できない場合に障害が発生したとみなします。
BFDを経路制御プロトコルと連携させることで、ルーター間にスイッチが存在していて対向機器のリンクダウンを直接検知できない環境においても障害を早期に検知し、経路制御プロトコル自身のメカニズム（Hello、Keepaliveなど）より素早い経路変更が可能になります。

## 基本仕様

本製品のBFDの仕様は次のとおりです。

- 経路制御プロトコルOSPFとの連携をサポート（BFDによる障害検出時に経路を変更）
- OSPF仮想リンク上でのBFDをサポート
- IPv4/IPv6スタティック経路との連携をサポート（BFDによる障害検出時に経路を変更）
- BFD単独での使用もサポート（障害検出時にログを出力する）
- 非同期モードのみサポート（デマンドモードは未サポート）
- エコーパケットをサポート（マルチホップセッションやIPv6ピアとの間では使用不可）
- VCS構成でBFDを使用する場合、BFDコントロールパケットによる障害検出時間（Detection time）が 6000ミリ秒以上になるように設定する必要があります。Detection timeは、transmit-interval、transmit-intervalコマンドの設定値であるBFDピアのコントロールパケット送信間隔（ミリ秒）に、detect-multiplier、detect-multiplierコマンドの設定値をかけることで決定されます。

      Detection time = transmit-interval × detection-multiplier

- LAGインターフェースでの使用は未サポート
- 認証機能は未サポート

## 基本設定

### 経路制御プロトコルOSPFとの連携

BFDとOSPFを連携させるには、あらかじめOSPFの設定が必要です。
OSPFの設定方法については「IP」/「経路制御（OSPF）」をご覧ください。
ここではOSPF基本設定の単一エリア構成のような設定が完了しているものとします。
ルーターAとルーターB間でBFDによる監視を行うように設定します。

1. BFDサービスを有効にします。これにはservice bfdコマンドを使います。

       awplus(config)# service bfd

2. OSPFによる経路通知を行っているVLANインターフェースにおいて、BFDを有効化します。これにはip ospf bfdコマンドを使います。

       awplus(config)# interface vlan20
       awplus(config-if)# ip ospf bfd

3. BFDでの障害検出によるOSPFの経路変更を素早く行うにはOSPFのHello IntervalタイマーとDead Intervalタイマーを短く設定してください（Dead Interval は Hello Interval より長く設定する必要があります）。これには、ip ospf hello-interval、ip ospf dead-intervalコマンドを使います。

       awplus(config-if)# ip ospf hello-interval 1
       awplus(config-if)# ip ospf dead-interval 2

ルーターA側の設定は以上です。ルーターB側も同様に設定してください。
OSPFの仮想リンク上でBFDによる監視を行うように設定するには、area virtual-linkコマンドのfall-over bfdオプションを使います。

### IPv4スタティック経路との連携

通常のIPv4スタティック経路をBFDで監視するには、以下のように設定します。
IPv4スタティック経路の設定方法については「IP」/「経路制御」をご覧ください。

1. BFDサービスを有効にします。これにはservice bfdコマンドを使います。

       awplus(config)# service bfd

2. BFDを有効化したスタティック経路を追加します。これには、ip routeコマンドでfall-over bfdを指定します。

       awplus(config)# ip route 192.168.30.0/24 192.168.20.2 fall-over bfd

ネクストホップ側の装置（例では192.168.20.2）でも同様に設定してください。

### IPv6スタティック経路との連携

通常のIPv6スタティック経路をBFDで監視するには、以下のように設定します。
IPv6スタティック経路の設定方法については「IPv6」/「経路制御」をご覧ください。

1. BFDサービスを有効にします。これにはservice bfdコマンドを使います。

       awplus(config)# service bfd

2. BFDを有効化したスタティック経路を追加します。これには、ipv6 routeコマンドでfall-over bfdを指定します。

       awplus(config)# ipv6 route 2001:db8:10:30::/64 2001:db8:10:20::2 fall-over bfd

ネクストホップ側の装置（例では2001:db8:10:20::2）でも同様に設定してください。

### BFD単独で使用する

BFDは単独で使用することもできます。その場合は、障害検出時にログを出力するだけの動作となります。
ここでは、10.1.1.1 と 10.1.1.2 の間でBFDを使用するものとします。

1. BFDサービスを有効にします。これにはservice bfdコマンドを使います。

       awplus(config)# service bfd

2. 10.1.1.2 との間でBFDを有効にします。これには、bfd peerコマンドを使います。

       awplus(config)# bfd peer 10.1.1.2
       awplus(config-peer)# exit

   Note

   マルチホップBFDセッション（BFDピアまでのホップ数が2以上）の場合はmultihopとlocal-addressオプションを指定してください。

10.1.1.1 側の設定は以上です。10.1.1.2 側も同様に設定してください。
これで、10.1.1.1 と 10.1.1.2 がBFDピアとして動作するようになり、障害検出時にログを出力するようになります。
BFDピアとの通信に関する詳細動作は、bfd peerコマンドでBFDピアモードに移動した上で、同モードの各種コマンドを利用して変更します。
たとえば、BFDピア 10.1.1.2 との間における、BFDコントロールパケットの送信間隔を変更するには、bfd peerコマンドとtransmit-intervalコマンドを用いて次のようにします。

    awplus(config)# bfd peer 10.1.1.2
    awplus(config-peer)# transmit-interval 500

BFDピアの情報はshow bfd peerコマンドで確認できます。
BFDピアの統計情報はshow bfd peer countersコマンドで確認できます。
BFDピアの統計情報はclear bfd peer countersコマンドでクリアできます。