前回の「第2回 BGPの役割と仕組み」では、AS間で経路情報の交換を行うプロトコル「BGP」の基本的な仕組みついて解説しました。企業ユーザーが自社ネットワークをインターネットに接続する場合、少なからずこのBGPを意識する必要が出てきます。今回は、BGPを用いてインターネットに接続する場合に、その運用のヒントとなるトピックスを紹介していきましょう(編集局)
インターネットに接続する場合、その接続形態にはいくつかの種類があります。ここでは、BGP(Border Gateway Protocol)の接続形態を説明します。
・インターネット・フルルート
通常、インターネットに接続したBGPルータは、接続プロバイダよりインターネット上のすべての経路情報を受け取ります。これを「フルルート」といいます。各AS(Autonomous System)はフルルートを受け取り、自ASのローカル経路のアナウンスを行うことで、インターネットと相互に通信できる状態となります。
・トランジット
接続先より受け取った経路情報をほかのASにアナウンスすると、自ASを経由したルーティングが可能になることから、受け取った経路をアナウンスするASを「トランジットAS」といいます。一方、受け取った経路はアナウンスせず、自ASのローカル経路のみをアナウンスするASを「非トランジットAS」といいます。インターネットに接続しているということは、接続プロバイダよりフルルートのトランジット・サービスを受けているということになります。
・シングルホームとマルチホーム
シングルホームとは、外部との接続を1つしか持たないネットワークを指します。これに対し、マルチホームは複数の接続を持つネットワークを指します。
*1異なるプロバイダにマルチホームを行う場合、プロバイダより提供されたプライベートASやIPアドレスを利用することはできません。これは、以下のような理由によります。
このため、異なるプロバイダにマルチホームをする場合は、AS番号とIPアドレスを取得して運用することを念頭に置く必要があります
BGPを使用する場合、まず、自ASの接続形態に応じたフィルタリングを行う必要があります。またBGPは、帯域の使用状況やトラフィックの種別を判断し、自動的に最適パスを選択するという動作は行いません。このため、トラフィックをコントロールしたい場合、基本的には手動で操作する必要があります。
これらの点を踏まえ、ここでは、一般的な企業においてマルチホーム接続をしている場合の経路制御について説明します。
・非トランジットASのためのフィルタリング
マルチホーム接続を行っている場合、多くのBGPルータは、1つのピアから受信した経路情報を他方のピアに対しアナウンスするという基本動作を行います。この場合、自ASはトランジットASとなります。しかし、一般的な企業がマルチホーム接続を行う場合、通常は非トランジットASを構成します。
ISP-AおよびISP-Bから受信した経路情報を他方にアナウンスしないようにします
自ASは、ISP-AおよびISP-Bという2つのプロバイダにマルチホーム接続を行っています。この場合、基本的には各ISPから受信した経路情報が自ASを経由して他方のISPにアナウンスされてしまいます
このため、各ISPから受信した経路情報をアナウンスしないようにするためのフィルタリングを行います。通常は、自ASのローカル経路のみをアナウンスします
結果、外部AS間のトラフィック(例えばISP-AからISP-Bあてのトラフィックなど)が、自ASを経由することはなくなります
・出力トラフィックのコントロール
自ASからの出力トラフィックをコントロールする場合、LOCAL_PREF属性の操作が有効です。ここでは、LOCAL_PREF属性を利用した出力トラフィックのコントロールを例に挙げてみます。
自ASからISP-Aあてのトラフィックが、ISP-Bを経由するようにコントロールします
自ASは、ISP-AおよびISP-B経由でISP-Aのローカル経路を受信しています。通常では、ASパス長の比較により、自ASからISP-Aあてのトラフィックは直接ISP-Aに流れることになります
ここで、ISP-BからISP-Aのローカル経路を受信する際に、「LOCAL_PREF値:300」を設定します
自ASでは、より大きな値である「LOCAL_PREF値:300」の経路情報を最適経路として選択します。このため、ISP-AあてのトラフィックはISP-Bを経由するようになります(パス属性と経路選択の関係については、「第2回 BGPの役割と仕組み:BGPの経路選択アルゴリズム」を参照)
・入力トラフィックのコントロール
自ASへの入力トラフィックをコントロールする*2場合、ASパス属性の操作が有効です。ここでは、ASパス属性の操作による入力トラフィックのコントロールを例に挙げてみます。
ISP-Aから自ASあてのトラフィックが、ISP-Bを経由するようにコントロールします
自ASは、ISP-AおよびISP-Bに対してローカル経路をアナウンスしています。通常では、ISP-Aから自ASあてのトラフィックは、ASパス長の比較により直接流れてくることになります
ここで、自ASよりISP-A側にアナウンスしているローカル経路にダミーのAS番号を追加し(ASパス・プリペンド)、ASパス長を長くします
ISP-Aでは、ASパス長の短い経路情報を最適経路として選択します。このため、ISP-Aから自ASあてのトラフィックは、ISP-Bを経由するようになります(パス属性と経路選択の関係については、「第2回 BGPの役割と仕組み:BGPの経路選択アルゴリズム」を参照)
*2入力トラフィックのコントロールは、出力トラフィックのコントロールよりも難しくなります。これは、出力トラフィックが“自”AS内のどの出口を優先するのかというポリシーだけを考慮すればよいのに対し、入力トラフィックは、“外部”ASの持つポリシーとの整合性を考慮する必要があるからです
また、プロバイダによっては、COMMUNITY属性を利用したサービスを行っている場合があります。このような場合には、それらを利用した入力トラフィックのコントロールも可能です。
ここでは、一般的な企業がインターネット接続を運用する場合の注意点について考察します。
・ローカル経路のアナウンス
ローカル経路をアナウンスするためには、主に2つの方法が考えられます。
(1) スタティック・ルートのリディストリビュート
アナウンスしたいローカル経路を、仮想インターフェイスあてのスタティック・ルートとして作成し、これをBGPルートとしてアナウンスする方法です。このように作成された経路は、常にアクティブな状態となります。
(2) ダイナミックに作成された経路のアナウンス
個々の経路情報を集約元とした集約経路を動的に作成し、BGPルートとしてアナウンスする方法です。このように作成された集約経路は、集約元となる経路が1つでも存在すると自動的に作成され、これらすべてがなくなると自動的に消滅します。
(1)の場合の長所と短所は、以下のとおりです。
長所 | 集約経路を常に安定した状態でアナウンスできること |
---|---|
短所 | ダイナミックにう回ルートが有効にならないこと |
この方法では、BGPルータがAS内で孤立してしまった場合でも、集約経路は常にアナウンスされます。このため、外部ASとの接続パスを持つほかのBGPルータが存在する場合でも、そちらを経由するう回ルートが有効になりません。結論として、シングルホームや1台のBGPルータでマルチホーム接続をしているASに有効な方法であるといえます。
(2)の場合の長所と短所は、以下のとおりです。
長所 | ダイナミックにう回ルートが有効になること |
---|---|
短所 | 集約元の全経路情報が不安定になると、集約経路自体も不安定になること |
この方法では、BGPルータがAS内で孤立してしまった場合、集約経路も自動消滅します。このため、外部ASとの接続パスを持つほかのBGPルータが存在する場合、そちらを経由するう回ルートが有効になります。結論として、複数台のBGPルータを利用したマルチホーム環境に有効な方法であるといえます。
このように、各手法には長所と短所があるため、これらを理解したうえで運用する必要があります。
・不正な経路情報
一般的に、自ASの経路をアナウンスする場合、経路集約を行うことによりプリフィックス数を減少/抑制します。ただし、必要に応じてプリフィックス長の長い、ある特定の経路情報をアナウンスして、経路制御を行う場合があります。意識的にアナウンスする場合は特に問題にはなりませんが、意図しないプリフィックス長の長い特定の経路情報をアナウンスすることにより、トラフィックが最適な経路を経由しない可能性が出てきます。また、不要な経路をアナウンスすることにより、予期せぬパケットのブラックホールの発生が考えられます。
ISP、キャリアなどとは異なり、一般企業におけるBGPの運用では、非トランジットなASを構成することがほとんどです。このような場合、自ASの経路のみのアナウンス、不正経路の受信拒否など、自ASの入力/出力のフィルタリングを明確に設定する必要があります。
・フラップとダンプニング
BGPにてフルルートを観察していると、まれに経路の追加/削除や属性の変更などが頻繁に繰り返される不安定な経路情報を見つけることがあります(ルート・フラップ)。このような状況下では、「UPDATE / WITHDRAW」メッセージが大量に発生し、その処理によりルータのリソース(CPU/メモリ)が必要以上に消費されます。また、この状況がインターネット全般に影響を及ぼす恐れがあります。
このため、BGPには、不安定な経路情報にペナルティ(ルート・ダンプニング)を付加し、これが一定値を超えるとその経路を抑制する機能があります。一度抑制された経路は、ある条件をクリアすることで再び採用されるようになります。ルート・ダンプニングを利用することで、ルート・フラップや変動によってネットワークが不安定になることを、最小限に抑えられます。
・ネクスト・ホップ・アドレスの解決
BGPでは、通常のIGPにおけるネクスト・ホップの概念とは異なる部分があるため、ネクスト・ホップの解決にも注意を払う必要があります(ネクスト・ホップの概念については、「第2回 BGPの役割と仕組み:パス属性とは?」を参照)。
このため、BGPのネクスト・ホップ・アドレスとなるネットワーク・セグメント(EBGPピアと接続されているセグメント)をAS内で運用しているIGPルートに流すか、ネクスト・ホップ・アドレスを、BGP経路をアナウンスしているルータ自身のアドレスに変更するなどの設定を行う必要があります。
・ルート・キャッシュの無効化
BGPでは、受信している経路情報の属性値などを変更した場合、再度、経路情報の読み込みを行う必要があります。このため、従来はピアとのTCPセッションを一度切断して、経路情報を受信し直す必要がありました。
その対策として、ルータ内部のメモリに未修正の経路情報をキャッシュし、ここから経路情報を読み込む機能がサポートされました(ルート・キャッシュ機能)。ただし、ルートキャッシュ機能の利用は、ルータのリソース、特にメモリを多く消費します。現在は、より優れた機能として、ピアとのTCPセッションを維持したまま経路情報の再送信を要求する機能がサポートされています(ルート・リフレッシュ機能)。このため、ルート・キャッシュ機能を利用する必要性はほとんどありません。
一昔前は、BGP対応ルータといえば、限られたメーカーの製品しかなかったと思います。しかし現在では、各ネットワーク機器製造会社よりBGPルータが提供されるようになりました。これは、インターネットの普及により、各社がこの市場に着目し、インターネットにおける経路制御プロトコルであるBGPが重要視されたからではないでしょうか。
各社から提供されているBGPルータは、BGPのサポート機能も洗練され、相互接続性もほぼ問題ないように見受けられます。ただし、各社製品にはおのおのの特徴や癖があります。この違いを把握し、自社の運用形態に合った製品を選択することも大切です。
筆者が所属する株式会社デジタル・マジック・ラボでは、「マルチベンダ・BGP・トレーニング」を定期開催しています。このトレーニングでは、実際のフルルート(10万経路)を用いて、実環境で必要となる経路制御を学習することが可能です。本トレーニングが、皆さまにとって、各社製品によるBGP運用の一助となれば幸いに思います。
Copyright © ITmedia, Inc. All Rights Reserved.