BFD (Bidirectional Forwarding Ditection)

BFDとは

通信キャリアでは、1秒以上の通信断でさえも致命的な遅延になることがある。
障害が発生した際、通信パケットが迂回路を回るためには、

  1. Helloパケットのやり取りが途絶える事でプロトコルのDeadタイマーが切れ、ネイバーがダウンする
  2. ルータは再計算した別経路(もしくは事前に計算済みの別経路)に切り替える

のだが、これでは数秒の時間を要する。
これは『1. プロトコルのDeadタイマーが切れ、ネイバーがダウンする』に一番時間がかかっている。

1の時間を短縮するためにHelloパケットの送信頻度を上げる事は、送信間隔が短すぎると通信路に負荷を与えてしまうのでよくない。そこで使われるのがBFDである。

BFDとは、隣同士のルータ(これをアジャセンシールータという)間との障害検知を早めるプロトコルであり、L2層で実施する。OSFPやBGPといったルーティングプロトコルはL3層でやり取りをしている。

障害検知用の小さなパケットを短時間に送り合うことで、帯域に負荷をかけることなく障害検知を行うことが出来る。

設定コマンド (IOS-vXR)

各プロトコルにおけるBFDの設定コマンドは以下の通りである。

  • IS-IS
router isis <Instance-ID>
interface <Interface-ID>
bfd fast-detect [ipv4|ipv6]
bfd minimum-interface <ミリ秒>
bfd multipriler <回数>
!
!
  • OSPF
router isis <Process-ID>
area <Area-ID>
interface <Interface-ID>
bfd fast-detect
bfd minimum-interface <ミリ秒>
bfd multipriler <回数>
!
!
  • BGP
router bgp <AS>
neighbor <IP-Address>
bfd fast-detect
bfd minimum-interval <ミリ秒>
bfd multiplier <回数>
!
!

BFDの設定では直接秒数を指定せず、最小間隔とBFDパケット数を定義する。

  • bfd fast-detect
    必須コマンド
  • bfd minimum-interval <ミリ秒>
    BFDパケットの送信間隔
  • bfd multiplier <回数>
    BFDパケットを何回受信に失敗したらBFD断と判定するか

つまり、BFDでは<ミリ秒>×<回数>以上BFDパケットを受信しなかった場合、BFD断とみなす。
例として以下の場合、3.2秒以上(=8ミリ秒×4回)BFDパケットを受信しなければBFD断とみなす。

Ex.)
router isis 1
interface Gi0/0/0/0
bfd fast-detect ipv4
bfd minimum-interval 800
bfd multiplier 4
!
!

確認コマンド (IOS-XR)

BFDで使用する確認コマンドは以下の通り。

  • show bfd session
    アジャセンシールータとのBFDセッションを表示

検証

目的

BFDの設定と出力を理解する。

物理構成

論理構成

アドレス設計

初期コンフィグ

R1
conf t
!
hostname R1
!
int lo 0
description /// IS-IS ///
ipv4 add 11.11.11.11/32
!
int lo 20
description /// BGP ///
ipv4 add 1.1.1.1/32
!
int gi0/0/0/0
ipv4 add 192.168.12.1/24
no sh
!
int gi0/0/0/2
ipv4 add 192.168.13.1/24
no sh
!
router isis 1
net 49.0000.1.1.1.1.00
add ipv4 uni
metric-style wide
!
int lo 0
passive
add ipv4 uni
!
int gi0/0/0/0
point-to-point
add ipv4 uni
!
!
!
router bgp 1
bgp router-id 192.168.13.1
add ipv4 uni
net 1.1.1.1/32
!
neighbor 192.168.13.3
remote-as 1
add ipv4 uni
!
!
!
R2
conf t
!
hostname R2
!
int lo 0
description /// IS-IS ///
ipv4 add 22.22.22.22/32
!
int lo 10
description /// OSPF ///
ipv4 add 22.22.22.22/32
!
int gi0/0/0/0
ipv4 add 192.168.12.2/24
no sh
!
int gi0/0/0/1
ipv4 add 192.168.23.2/24
no sh
!
router isis 1
net 49.0000.2.2.2.2.00
add ipv4 uni
metric-style wide
!
int lo 0
passive
add ipv4 uni
!
int gi0/0/0/0
point-to-point
add ipv4 uni
!
!
!
router ospf 1
area 0
int lo 10
passive
!
int gi0/0/0/1
net point-to-point
!
!
!
R3
conf t
!
hostname R3
!
int lo 10
description /// OSPF ///
ipv4 add 33.33.33.33/32
!
int lo 20
description /// BGP ///
ipv4 add 3.3.3.3/32
!
int gi0/0/0/1
ipv4 add 192.168.23.3/24
no sh
!
int gi0/0/0/2
ipv4 add 192.168.13.3/24
no sh
!
router ospf 1
area 0
int lo 10
passive
!
int gi0/0/0/1
net point-to-point
!
!
!
router bgp 1
bgp router-id 192.168.13.3
add ipv4 uni
net 3.3.3.3/32
!
neighbor 192.168.13.1
remote-as 1
add ipv4 uni
!
!
!
ダウンロードはこちら

検証問題

問1. 以下の条件を満たすように設定せよ。ただし、IS-IS, OSPF, BGPの全ネイバーに対して同じ条件を課すものとする。

  • BFDパケットの送信間隔を0.6秒とする
  • BFDパケットが4.2秒以上届かなかった場合、BFDセッションダウンとする

コメント

タイトルとURLをコピーしました