BGP の経路収束とフラップ・ダンプニング
経路変動がなぜ世界規模で揺れ続けるのかを理解し、ダンプニングで揺れを抑えつつ、経路リークやハイジャックをRPKIで止める実務の勘所がつかめる。
- 1.経路変動はUPDATEとWITHDRAWの連鎖で全インターネットへ伝播し、MRAIタイマやパス探索(path exploration)のせいで収束は秒〜分単位で遅れる。
- 2.ルートフラップダンプニングは振動する経路にペナルティを積み、半減期で減衰させて閾値超過で一時抑制する仕組みだが、設定を誤ると正常経路まで殺すため運用が難しい。
- 3.経路リークやプレフィックスハイジャックはAS_PATHやポリシーの破綻で起き、RPKI/ROAによるオリジン検証(ROV)とAS_PATH検証が主要な防御線になる。
なぜ「収束」が難所なのか
BGP は 経路選択 で1本の最良経路を選び、伝播ルール に従って隣接へ配ります。問題は、ある経路が落ちたときその事実が全 AS に行き渡り、全員が新しい安定状態に落ち着くまでに時間がかかることです。この「全員が一致した最良経路に落ち着く」状態を収束(convergence)と呼びます。BGP はパスベクタ型で各 AS が独立にポリシーで判断するため、収束は IGP のような数十ミリ秒では終わらず、しばしば秒から分のオーダーになります。遅延の正体を内部動作から押さえることが、障害解析の出発点です。
経路変動の伝播:UPDATE と WITHDRAW
BGP の経路情報は2種類のメッセージで動きます。新しい・変わった経路は属性付きの UPDATE、消えた経路は宛先プレフィックスだけを並べた WITHDRAW です。リンクが落ちると、影響を受けたルータは該当経路を RIB から外し、隣接へ WITHDRAW を送る、あるいは代替経路を UPDATE で広告します。これが AS をまたいで連鎖し、波として広がります。
| 事象 | 送るメッセージ | 受信側の動き |
|---|---|---|
| 経路が新規・改善 | UPDATE(属性一式) | best path 再計算、必要なら再広告 |
| 経路が消失 | WITHDRAW(プレフィックスのみ) | 該当経路を削除、代替を再探索 |
| 代替経路へ切替 | UPDATE(別のAS_PATH) | 新経路で再収束 |
ここで厄介なのが**パス探索(path exploration)**です。最良経路が消えると、各ルータは手元に残る次善経路を一時的に広告しますが、その次善経路も実は同じ障害の影響下にあることが多く、無効と分かると再び別経路へ切り替えます。この「だめな経路を順に試す」過程で UPDATE と WITHDRAW が大量に飛び交い、収束が長引きます。最悪のケースは指数的な経路試行になりうることが知られ、これが BGP 収束の理論的な難しさの核心です。
MRAI タイマと収束遅延
収束を直接左右するのが **MRAI(Minimum Route Advertisement Interval)**です。これは「同じ宛先について隣接へ連続して UPDATE を送る最小間隔」で、eBGP では既定 30 秒程度が典型でした。
MRAI の狙い:
経路が短時間で何度も変わるとき、変化のたびに広告すると
メッセージが爆発する。そこで一定間隔だけ広告をまとめ、
間隔内の中間状態を飛ばして「落ち着いた最新」だけを送る。
副作用:
間隔内に来た変化が抑えられるため、本当に必要な最終経路の
広告も最大で MRAI 分だけ遅れる。パス探索と相まって、
数ホップ先まで届くころには遅延が積み上がる。
MRAI は「無駄な広告を間引いて安定化させる」効果と「最終収束を遅らせる」副作用の両面を持ちます。値を小さくすれば収束は速くなりますが、振動時のメッセージ量が増えます。近年は per-prefix で間隔を管理する実装や MRAI を短縮する設計が主流で、収束時間とメッセージ量のトレードオフを運用者が選ぶ構図です。WITHDRAW は一般に MRAI の制約を受けにくく、悪い知らせは速く伝わる設計になっています。
BGP 自体の収束に加え、転送を素早く切り替える BFD(障害を数十〜数百ミリ秒で検知)、計算済みの迂回経路へ瞬時に切る BGP PIC(Prefix Independent Convergence)、IGP 側の高速収束などを組み合わせるのが実務の定石です。BGP の制御平面の収束と、データ平面の切替速度は別物として設計します。
ルートフラップダンプニング
リンクやセッションが短時間に上下を繰り返す現象を**フラップ(flap)と呼びます。1本の不安定な回線が UPDATE と WITHDRAW を撒き散らし、遠く離れた AS の CPU まで消費させるのは深刻な負荷です。これを抑えるのがルートフラップダンプニング(RFD)**です。考え方は単純で、暴れる経路にペナルティを積み、一定を超えたら広告を一時的に止める、というものです。
RFD の動作(経路ごとにペナルティ値を持つ):
経路がフラップするたび → ペナルティを加算(WITHDRAW は例 +1000、
属性変化や再広告も加算)
時間が経つと → 半減期(half-life、例 15分)で指数減衰
ペナルティが suppress 閾値 を超える → その経路を抑制(広告停止)
ペナルティが reuse 閾値 を下回る → 抑制解除して再び広告
max-suppress-time → 抑制し続ける上限時間(青天井を防ぐ)
ペナルティが半減期で減衰する点が肝です。フラップが続けば積み上がって閾値を超え、静まれば自然に減ってやがて reuse 閾値を下回り復帰します。揺れの激しさに応じて抑制時間が伸びる、自己調整的な仕組みです。
RFD には重大な副作用があります。AS_PATH の長い経路ほど途中の各ホップでペナルティが累積し、わずかなフラップでも長距離経路が過剰に抑制されて到達性が落ちる「ダンプニングの過剰抑制」問題が指摘されました。このため一時は RFD を一律無効化する運用が広まりました。現在は RIPE 580 などのガイドラインに沿い、ごく不安定なプレフィックスにだけ穏やかな閾値で適用するのが推奨です。安易な有効化は正常経路を殺します。
経路リークとハイジャック
収束が正しく進んでも、広告された経路情報そのものが誤りや悪意で汚染されれば事故になります。代表が経路リークとプレフィックスハイジャックです。
| 種類 | 何が起きるか | 典型原因 |
|---|---|---|
| 経路リーク | 本来流すべきでない経路を隣接へ漏らし、意図しないトランジットが発生 | Gao-Rexfordポリシー違反、フィルタ設定漏れ |
| オリジンハイジャック | 他者のプレフィックスを自AS発として広告し、トラフィックを吸い込む | 誤設定、または悪意ある広告 |
| パスハイジャック | AS_PATH を偽装して正規の発信元ASを詐称 | AS_PATH の改ざん |
経路リークの典型は、伝播ポリシー で触れた「ピアやプロバイダから学んだ経路を別のプロバイダへ流さない」という規律を破るケースです。設定漏れのある AS がフルルートを上流へ漏らすと、自分が巨大なトランジットを肩代わりする形になり、輻輳と遅延が広域に波及します。ハイジャックはさらに直接的で、より細かいプレフィックス(more specific)を広告すれば 最長プレフィックス一致 によって正規経路を上書きでき、トラフィックを攻撃者へ引き込めます。過去には大手サービス宛トラフィックが誤った AS へ吸い込まれる事故が繰り返し起きてきました。
RPKI と ROA による防御
これらの根本原因は、BGP に**「この AS がこのプレフィックスを広告してよい」という認証が無い**ことです。それを補うのが **RPKI(Resource Public Key Infrastructure)**です。IP アドレス資源の割り当てを証明書で裏付け、**ROA(Route Origin Authorization)**という署名済みオブジェクトで「プレフィックス P を AS X が最大長 L まで発信してよい」と宣言します。
ROA の中身(概念):
prefix = 203.0.113.0/24
origin AS = AS64500
maxLength = 24 # この長さまでの more-specific を許可
ROV(Route Origin Validation)の判定:
経路の発信元ASとプレフィックスが ROA と一致 → Valid
該当プレフィックスの ROA が存在しない → NotFound(不明)
ROA はあるが発信元ASや長さが食い違う → Invalid(拒否対象)
ルータは RPKI バリデータが配布する検証済みデータを受け取り、受信経路を Valid / NotFound / Invalid に分類します(ROV)。**Invalid を拒否(drop-invalid)**するポリシーを入れれば、オリジンハイジャックの多くを入口で止められます。NotFound はまだ ROA を出していない正規経路も含むため、移行期は受理しつつ Invalid だけ落とすのが定石です。
RPKI/ROV が検証するのは「発信元 AS が正しいか」だけで、AS_PATH の中間が正しいかは保証しません。発信元 AS を正しく詐称したうえで経路に割り込むパスハイジャックは ROV を素通りします。AS_PATH 自体の真正性は ASPA(Autonomous System Provider Authorization)や BGPsec といった追加の仕組みが担いますが、BGPsec は計算コストと展開の難しさから普及が限定的で、軽量な ASPA への期待が高まっています。
- 収束遅延の三要素: パス探索(次善経路の連鎖試行)、MRAI(広告間隔)、各 AS の独立なポリシー判断。
- RFD のパラメータ: ペナルティ加算・半減期・suppress/reuse 閾値・max-suppress-time。過剰抑制の副作用で一律無効化された歴史も問われる。
- リーク(ポリシー違反による意図しないトランジット)とハイジャック(発信元やパスの詐称)の区別。
- RPKI/ROA/ROV は「オリジン検証」。Valid/NotFound/Invalid の3値と、Invalid のみ落とす運用。AS_PATH は守らない点が頻出。
一段でまとめると
BGP の収束は、UPDATE と WITHDRAW の波が MRAI とパス探索を伴って世界を巡る過程であり、その揺れを抑える局所最適化が MRAI とフラップダンプニングです。一方で経路情報の正しさは別問題で、リークやハイジャックには RPKI/ROA によるオリジン検証が効きますが、AS_PATH の真正性までは届きません。経路選択 と 伝播ポリシー が「どれを選びどこへ配るか」を決める静的な規律なら、本稿は「変動と汚染にどう耐えるか」という動的な側面です。実機では show ip bgp dampening 系や RPKI バリデータの状態を確認し、収束の遅れと検証結果を トラブルシュート で必ず裏取りしてください。
ネットワーク Article
BGP の経路収束とフラップ・ダンプニングを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
BGP
比較で見る軸
難易度: advanced / カテゴリ: ネットワーク / タグ数: 5
導入後に効く点
ルートフラップダンプニングは振動する経路にペナルティを積み、半減期で減衰させて閾値超過で一時抑制する仕組みだが、設定を誤ると正常経路まで殺すため運用が難しい。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- ネットワーク
- タグ数
- 5
判断チェックリスト
- 自社の用途が「BGP / ルーティング」に近いか確認する。
- 強みである「経路変動はUPDATEとWITHDRAWの連鎖で全インターネットへ伝播し、MRAIタイマやパス探索(path exploration)のせいで収束は秒〜分単位で遅れる。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。