BGPコミュニティ、フィールドからの教訓
2つのデータセンターにまたがるBGPコミュニティによるトラフィックエンジニアリング:うまくいったこと、夜中に鳴ったページャー、そこから生まれたチェックリスト。
コミュニティはBGPの最も古いトリックであり、今も最も過少利用されている。コミュニティとはルートに付けるタグに過ぎないが、アップストリームはますます豊富な語彙を尊重する:prepend、local-preference固定、blackhole、anycastリージョンヒント。一貫して使用すれば、デュアルデータセンター構成を「フェールオーバーの願い」から実際のハンドルに変える。
この記事は、運用者環境向けの冗長ピアリングをエンジニアリングする際に本番環境で検証した内容をまとめたもので、例によって匿名化している。
ベースライン
リファレンストポロジーは、2つのデータセンターが同じ/32 RIPEプレフィックスをそれぞれ2つのトランジットプロバイダー経由でアナウンスし、状態同期用のプライベートインターコネクトで接続されている。トラフィック制御ポリシー全体は、4つのBGPコミュニティ値に集約される:prepend x1、x2、x3、そしてガードされたblackhole。両サイトで一貫して適用。
トポロジーは意図的につまらない:2つのデータセンター、両方からアナウンスされる1つの/32 RIPEブロック、同期用プライベートインターコネクト。両サイトともそれぞれ2つのトランジットからフルテーブルを受信。面白いのはダイアグラムではなく、それに付属するポリシー。
実績のあるコミュニティ
3つのBGPコミュニティ規約がすべてのトラフィック制御負荷を支えた:単一のASNが所有する標準的なprependラダー(x1、x2、x3)、エッジでのインバウンドコミュニティのその標準スペースへの書き換え、そしてファイアウォールールのようにガードされるレート制限付きblackholeコミュニティ。重要なのは、語彙をエンドツーエンドで所有すること。
3つの規約がすべての負荷を支えた:
# 読みやすく、安定しており、ピアリングDBに文書化
65000:100 タグ付きネイバーへのprepend x1
65000:200 prepend x2
65000:300 prepend x3
65000:666 blackhole(URFフィルタ済み、max-prefix保護)
2つの詳細がスキーム自体より重要:
- 1つのASNが語彙を所有する。 各トランジット独自のコミュニティテーブルと自分の番号を混在させると、早朝3時のページャーが生まれる。エッジでインバウンドコミュニティを標準スペースに書き換え、route-mapには標準スペースのみを表示する。
- blackholeコミュニティはガードされる。 正しくフィルタするアップストリームにのみアドバタイズされ、自社側でレート制限される。トラフィックをドロップするコミュニティは、ファイアウォールールと同じレビューを受ける価値がある。
チェックリスト
2つの運用人成果物が本番インシデントから生まれた:セッションに触れる前にコミュニティでトラフィックをシフトさせる、各ステップに予想パケットカウンタ付きのサービス別ドレイン手順、そして両サイト外からの合成プローブで勝者パスが意図したものと異なる場合にアラートする「証明」cron。
避けられない夜間のページャー(あるサイトのアナウンスが他サイトの受理より1分早く撤回され、何もなくなるウィンドウが生まれたメンテナンス)の後、2つの成果物が生まれた:
- ドレイン手順:セッションに触れる前にコミュニティでトラフィックをシフトさせる、サービス別・方向別のステップ。各ステップに予想パケットカウンタ。
- 「証明」cron:両サイト外からの合成プローブで、勝者パスが意図したものでない場合にアラート。観測なしの制御は単なる自信付きのレイテンシ。
違った方法でやるなら
プライマリ/バックアップではなく、初日からコミュニティベースのプリファレンスでアクティブ・アクティブで始める。バックアップ設定はすぐに石化する:必要になった日には、もはや存在しないネットワークを記述している。そしてコミュニティポリシーを実行可能な文書として扱う:書き留めることは出荷の一部。
プライマリ/バックアップから始めて後で移行するのではなく、初日から両サイトでprepend付きでアナウンスする。バックアップ設定は石化する:必要になった日には、もはや存在しないネットワークを記述している。コミュニティベースのプリファレンスによるアクティブ・アクティブは、他のどんなアクティブ構成よりも優雅に劣化していく。
この記事を一つだけ持ち帰るなら:コミュニティポリシーは設定ではなく、実行される文書。書き留めることは出荷の一部として扱うこと。