BGP Network

BGP経路切り替え時のパケットロスの話

2020年3月16日

BGP による経路切り替え時にパケットロスをするはずが無いと思っていたら、実際はパケットロスが起きてたようだと言われ、「?」と思ったら、そういう事があるようです。

原因は、MRAI (Minimum Route Advertisement Interval)という BGP のルートの広報 をどのくらいのインターバルで行うか。という機能のせいらしい。ムライ?。人の名前みたいで覚えやすいです。

BGP update と MRAI (Minimum Route Advertisement Interval)

BGP ルーターは、複数のピアから同じネットワークに対するルート情報を受け取る事があります。その中から一番ベストと思われるルート( ベストパス) だけを自分のルーティングテーブルに載せます。

実際には幾つか条件がありますが、例えばあるネットワークに到達するために 5個の AS を経由しなければいけないパスと、1個の AS の経由だけで済むパスがあった場合、後者の方がベストパスになります。

ピアからのルートの更新情報は「BGP Update Message 」によって伝わってきます。

ルートの update 情報を受けた BGPルーターは、新しい情報を元にベストパスを再計算するので、貧弱な BGP ルーターの場合は、更新頻度が多いとCPUパワーを使ってアップアップになってしまいます。

MRAI は、インターバル時間を設けて ピアに BGP update メッセージを送る事で、ピアのへの負荷を軽減するという機能になります。

MRAI とパケットロス

ただ、この MRAI を使用している BGP ルーターがインターネット上に存在している場合は、ネットワークを削除する場合に、パケットロスに繋がる事があるようです。


確かに既存のパスがインターネット上に広報されている状況で、削除の広報を出す+さらに途中のルーターが一定時間広報を待つ機能を持っている場合は、上図のようなループがインターネットのどこかで簡単に発生しそうです。そして、これがパケットロスに繋がります。

私のケースも BGP の経路をある AS から、元の AS に戻した時に起きたので、まさにこれにヒットしたようです。

ネットワークの「追加」は、新しいネットワークの情報はピアからピアに伝わっていくので、ある BGPルーターが、その新しいネットワークの情報を持っている場合は、隣接するピアも必ず情報を持っているはずなので、ピアを伝って新しいネットワークまでたどり着けるはずです。この場合は、インターネット上の全ての BGP ルーターが新しいネットワークの情報を持つまで必用はありません。

一方でネットワークの「削除」については、インターネット上の全ての BGPルーターに情報が伝わるまで問題が起きえます。ある BGPルーターが自分が経路情報を持っているあるネットタークの情報を隣のピアに聞いた時、そのBGPルーターは既にそのネットワーク情報を削除したルーティングテーブルを生成済みで、単にピアに伝えて無い可能性があります

削除の場合は、原理的にこの現象は避けられないようです。

今回私が遭遇したケースは、ASが持っている /24 ネットワークを他の AS に移動させたい。という要件だったので、これが発生したようです。

インターネット上にあるネットワーク機器は、ベンダーもバラバラで、管理者もバラバラなので、何か改良できるアイディアが出ても全体に反映されるという事は現実的ではありません。恐らく、この仕様は永久に続くと思われます。

参考

-BGP, Network

Copyright© エンジニアの何でもメモ帳 , 2020 All Rights Reserved.