概要

ルートダンプニングは、BGPルートがフラップしたときにその影響を小さくするための機能です。BGPルートダンプニングの仕組みとCisco IOSでの設定コマンドについて解説します。

ルートダンプニングとは

特定のネットワークがアップダウンを繰り返してフラップ状態になると、トリガードアップデートにより、BGPのコンバージェンスプロセスが発生します。そのため、BGPを実行しているルータに大きな負荷がかかることがあります。また、BGPアップデートの頻発によってネットワークリソースの無駄にもなります。BGPでは、ルートのフラップの影響を小さくするためのルートダンプニング機能があります。

ルートダンプニングは、ルートのフラップが発生するとそのルートにペナルティを与えます。ペナルティが一定のしきい値(サプレスリミット)を超えるとそのルートをダンプニング状態として利用できないようにします。

ルートのペナルティは時間の経過とともに低下します。ダンプニング状態のルートはペナルティが再利用のしきい値(リユースリミット)を下回ると、再度利用できるようになります。

図 ルートダンプニングの制御
図 ルートダンプニングの制御

この図は、ルートダンプニングの制御の様子を表しています。ルートダンプニングを有効にしているルートに対するペナルティと時間のグラフです。

時間t1でルートがフラップすると、そのルートにペナルティが与えられます。デフォルトでペナルティの値は1000です。まだこの状態では、ペナルティはサプレスリミットを超えていませんのでダンプニングされずに、通常のトリガードアップデートが行われます。ルートに与えられたペナルティは時間の経過とともに低下します。デフォルトは15分ごとにペナルティは半分になります。この時間を半減期といいます。

時間t2で再度フラップすると、再びペナルティが与えられます。サプレスリミットを超えてしまったので、ルートはダンプニング状態となりルートが利用できなくなります。時間が経過してペナルティが減少して時間t3でリユースリミットを下回ると、ルートを再利用できるようになります。なお、フラップが継続してペナルティがリユースリミットを下回らなくても、最大抑制時間を経過するとダンプニング状態は解除されます。次の表に、ルートダンプニングの動作のパラメータをまとめています。

パラメータ意味デフォルト
ペナルティルートがフラップしたときに与えられるペナルティ値。変更不可1000
サプレスリミットルートをダンプニング状態にするときのペナルティのしきい値2000
リユースリミットダンプニング状態を解除するペナルティのしきい値750
半減期ルートのペナルティ値が半分になるまでの時間15分
最大抑制時間ルートをダンプニング状態とする最大の時間60分
表 1 ルートダンプニングのパラメータ

なお、ルートダンプニングはEBGPネイバーから受信したBGPルートのみが対象です。IBGPネイバーから学習したルートは、ルートダンプニングは有効ではありません。

ルートダンプニングの設定コマンド

ルートダンプニングの設定は次のコマンドを使います。

ルートダンプニングの設定

(config)#router bgp <AS>
(config-router)#bgp dampening [<half-life> <reuse-limit> <suppress-limit> <max-suppress-time>]

<AS>:AS番号
<half-life>:半減期。デフォルト15分
<reuse-limit>:リユースリミット。デフォルト750
<suppress-limit>:サプレスリミット。デフォルト2000
<max-suppress-time>:最大抑制時間。デフォルト60分

このコマンドですべてのEBGPルートについてルートダンプニングを有効にします。bgp dampeningコマンドのみを入力すると、すべてのパラメータはデフォルトの値でルートダンプニングが有効になります。

また、特定のルートに対してのみルートダンプニングを有効にしたい場合は、ルートマップを関連付けます。

ルートダンプニングの設定 ルートマップの関連付け

(config)#router bgp <AS>
(config-router)#bgp dampening route-map <route-map-name>

<AS>:AS番号
<route-map-name>:ルートマップ名

関連付けたルートマップのmatch条件に一致したBGPルートについてルートダンプニングが有効化されます。また、ダンプニングのパラメータも細かく設定できます。ルートマップでダンプニングのパラメータを指定するのは、set dampeningコマンドを使います。

ルートマップ ダンプニングのパラメータ設定

(config)#route-map <map-tag> permit <seq>
(config-route-map)#match <condition>
(config-route-map)#set dampening <half-life> <reuse-limit> <suppress-limit> <max-suppress-time>

<map-tag>:ルートマップ名
<seq>:シーケンス番号
<condition>:match条件
<half-life>:半減期。デフォルト15分
<reuse-limit>:リユースリミット。デフォルト750
<suppress-limit>:サプレスリミット。デフォルト2000
<max-suppress-time>:最大抑制時間。デフォルト60分

なお、ルートのペナルティはshow ip bgp <prefix>で確認することができます。clear ip bgp flap-statisticsコマンドで、ペナルティをクリアしてダンプニング状態を手動で解除することもできます。

ルートダンプニングの設定例

次のネットワーク構成でルートダンプニングを設定します。

R1でルートダンプニングを有効にします。ダンプニングのパラメータは以下の通りです。

ペナルティルートがフラップしたときに与えられるペナルティ値。変更不可1000
サプレスリミットルートをダンプニング状態にするときのペナルティのしきい値1500
リユースリミットダンプニング状態を解除するペナルティのしきい値600
半減期ルートのペナルティ値が半分になるまでの時間5分
最大抑制時間ルートのダンプニング状態におく最大の時間20分

R1 ダンプニング有効化

router bgp 100
 bgp dampening 5 600 1500 20

ISP1で100.1.1.0/24、100.1.2.0/24、100.1.3.0/24はループバックインタフェースでエミュレートしています。そのループバックインタフェースをシャットダウンします。すると、R1のBGPテーブルは次のようになります。

R1 BGPテーブル(初回のフラップ時)

R1#show ip bgp
BGP table version is 13, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
 h 100.1.1.0/24     172.16.1.11              0             0 1 i
 h 100.1.2.0/24     172.16.1.11              0             0 1 i
 h 100.1.3.0/24     172.16.1.11              0             0 1 i
R1#show ip bgp 100.1.1.0
BGP routing table entry for 100.1.1.0/24, version 5
Paths: (1 available, no best path)
Flag: 0x820
  Not advertised to any peer
  1 (history entry)
    172.16.1.11 from 172.16.1.11 (111.1.1.11)
      Origin IGP, metric 0, localpref 100, external
      Dampinfo: penalty 977, flapped 1 times in 00:00:12

ISP1でループバックインタフェースがシャットダウンされているにもかかわらず、R1のBGPテーブルに100.1.1.0/24、100.1.2.0/24、100.1.3.0/24が存在しているかのように見えますが、これは無効なルートです。ダンプニングを有効にしているため、フラップしたルートの履歴を記録しています。「h」はルートの履歴という意味です。詳細なルート情報を確認すると、フラップしたためにペナルティが与えられていることがわかります。

ISP1でループバックインタフェースを有効化します。そして、再びシャットダウンしてから有効化して、ルートをフラップさせます。R1でBGPテーブルを見ると、次のようになります。

R1 BGPテーブル(2回目のフラップ時)

R1#show ip bgp
BGP table version is 13, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*d 100.1.1.0/24     172.16.1.11              0             0 1 i
*d 100.1.2.0/24     172.16.1.11              0             0 1 i
*d 100.1.3.0/24     172.16.1.11              0             0 1 i
R1#show ip bgp 100.1.1.0
BGP routing table entry for 100.1.1.0/24, version 11
Paths: (1 available, no best path)
Flag: 0x820
  Not advertised to any peer
  1, (suppressed due to dampening)
    172.16.1.11 from 172.16.1.11 (111.1.1.11)
      Origin IGP, metric 0, localpref 100, valid, external
      Dampinfo: penalty 1761, flapped 2 times in 00:01:32, reuse in 00:07:50

2回目のフラップによって、ペナルティがサプレスリミットを超えたためにルートがダンプニング状態になっていることがわかります。ルートはR1のBGPテーブル上に存在していて、validであるもののそのルートを利用できずに、ネイバーにルートを送信しません。そのため、次のようにR3のBGPテーブルにはルートが存在しません。

R3 BGPテーブル(ダンプニング時)

R3#show ip bgp

R3#

まとめ

ポイント

  • BGPルートダンプニングは、ルートのフラップの影響を小さくするための機能です。
  • BGPルートがフラップするとペナルティを与えて、しきい値を超えたBGPルートを一定時間利用不可能にします。
  • ルートダンプニングは、そのルータで扱うBGPルート一括で有効化することができます。
  • ルートマップによって特定の条件に基づいたBGPルートのみを対象にダンプニングを有効化できます。

BGPの仕組み