# IP / BFD

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

## 基本仕様

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

- 経路制御プロトコルBGP（IPv4/IPv6）との連携をサポート（BFDによる障害検知時にBGPセッションをクローズ）
- 経路制御プロトコルOSPFとの連携をサポート（BFDによる障害検出時に経路を変更）
- OSPF仮想リンク上でのBFDをサポート
- IPv4/IPv6スタティック経路との連携をサポート（BFDによる障害検出時に経路を変更）
- BFD単独での使用もサポート（障害検出時にログを出力する）
- VRFインスタンス上でのBGP、OSPF、IPv4スタティック経路との連携をサポート
- 非同期モードのみサポート（デマンドモードは未サポート）
- エコーパケットをサポート（マルチホップセッションや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インターフェースでの使用は未サポート
- 認証機能は未サポート

## 基本設定

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

BFDとBGPを連携させるには、あらかじめBGPピアの設定が必要です。
ここでは、192.0.2.1 と 192.0.2.2の間でBGPの基本設定が完了しているものとし、これらのBGPピア間でBFDを使用するものとします。
BGPの設定方法については「IP」/「経路制御（BGP）」をご覧ください。

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

       awplus(config)# service bfd

2. BGPルーティングプロセスの設定を行うため、router bgpコマンドを実行してBGPモードに移行します。AS番号はすでに設定済みのものを指定してください。

       awplus(config)# router bgp 65010

3. 設定済みのBGPピア 192.0.2.2 との間でBFDを有効にします。これには、neighbor fall-over bfdコマンドを使います。

       awplus(config-router)# neighbor 192.0.2.2 fall-over bfd

   Note

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

4. BFDでの障害検出によるBGPの経路変更を素早く行うにはBGPコネクション確立の再試行間隔を短く設定してください。これには、neighbor timersコマンドを使います。

       awplus(config-router)# neighbor 192.0.2.2 timers connect 3

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

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

VRFインスタンス上のIPv4 BGPピアとの間でBFDを有効にする場合は、address-family ipv4コマンドで対象のVRFインスタンスを指定してBGP IPv4アドレスファミリーモードに入り、同モードでBGPピアの設定を行った上で、neighbor fall-over bfdコマンドを実行します。また、neighbor timersコマンドでコネクション確立の再試行間隔を短く設定します。

    awplus(config-router)# address-family ipv4 vrf VRF-BLUE
    awplus(config-router-af)# neighbor 192.168.1.17 remote-as 1
    awplus(config-router-af)# neighbor 192.168.1.17 fall-over bfd
    awplus(config-router-af)# neighbor 192.168.1.17 timers connect 3
    awplus(config-router-af)# neighbor 192.168.1.17 activate
    awplus(config-router-af)# exit-address-family

### 経路制御プロトコル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オプションを使います。
VRFインスタンス上のOSPFインターフェースでBFD監視を有効にする場合は、ip vrfコマンドもしくはip vrf forwardingコマンドにてVRFインスタンスを指定し、ip ospf bfdコマンドでBFDを有効にします。また、ip ospf hello-interval、ip ospf dead-intervalコマンドでタイマーを短く設定します。

    awplus(config)# interface vlan20
    awplus(config-if)# ip vrf forwarding VRF1
    awplus(config-if)# ip ospf bfd
    awplus(config-if)# ip ospf hello-interval 1
    awplus(config-if)# ip ospf dead-interval 2

### 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）でも同様に設定してください。
VRFインスタンス上のIPv4スタティック経路をBFDで監視する場合は、ip routeコマンドにてVRFインスタンスを指定した上で、fall-over bfdオプションを実行してBFDを有効に設定します。

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

### 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

VRFインスタンス上の装置との間でBFDを使用する場合は、bfd peerコマンドでVRFインスタンスを指定します。

    awplus(config)# bfd peer 192.168.20.1 vrf VRF-PINK

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