Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

BGPコミュニティのルーティングポリシー

ルーティングポリシーの一致条件としてのBGPコミュニティ、拡張コミュニティ、大規模コミュニティを理解する

BGPコミュニティは、共通のプロパティを共有する宛先のグループです。コミュニティ情報は、BGP更新メッセージのパス属性として含まれています。この情報によりコミュニティーメンバーが識別され、各メンバーについて詳しく説明しなくてもグループに対してアクションを実行できます。コミュニティ属性と拡張コミュニティ属性を使用して、受け入れ、拒否、優先、再配布などのルーティング決定をトリガーできます。

コミュニティタグは、設定(スタティックルート、集約ルート、生成ルート)またはインポートルーティングポリシーを介して、非 BGP ルートに割り当てることができます。これらのタグは、BGPがルートをエクスポートするときに照合できます。

コミュニティ値は、2 つの主要なセクションに分かれた 32 ビット フィールドです。値の最初の 16 ビットはコミュニティを発信したネットワークの AS 番号をエンコードし、最後の 16 ビットは AS によって割り当てられた一意の番号を伝えます。このシステムは、インターネット内の各 AS に対して、グローバルに一意のコミュニティ値のセットを保証しようとします。Junos OS では、各値が 10 進数である as-number:community-value の表記を使用します。AS値の0および65,535は予約されており、それらのAS番号内のすべてのコミュニティ値も予約されています。各コミュニティ(またはコミュニティのセット)には、 [edit policy-options] 設定階層内で名前が付けられます。コミュニティの名前は、ルーティングデバイスに対してそれを一意に識別し、ルートを分類する方法として機能します。例えば、コミュニティ値が64510:1111のルートは、 AS64510-routesという名前のコミュニティに属している可能性があります。コミュニティ名は、ルーティングポリシー内で一致基準またはアクションとしても使用されます。コミュニティを作成するためのコマンド構文は、policy-options community name members [community-ids]です。 community-ids は、単一のコミュニティ値または複数のコミュニティ値のいずれかです。コミュニティ名に複数の値が割り当てられている場合、ルーティングデバイスはこれをコミュニティ値の論理的なANDとして解釈します。つまり、コミュニティ名が割り当てられる前に、ルートが設定された値すべてを持っている必要があります。

通常のコミュニティ属性は 4 オクテットです。VPN などのネットワーク拡張機能には、コミュニティなどの属性によって満たすことができる機能要件があります。ただし、4オクテットのコミュニティ値は、VPN要件に対応するのに十分な拡張性と柔軟性を提供しません。これが拡張コミュニティの創造につながります。拡張コミュニティは8オクテット値であり、2つの主要なセクションに分かれています。コミュニティの最初の 2 オクテットは type フィールドをエンコードし、最後の 6 オクテットは type フィールドで定義された形式で一意のデータ セットを伝送します。拡張コミュニティでは、コミュニティをグループ化または分類する範囲が広がります。

BGP拡張コミュニティ属性フォーマットには、 type:administrator:assigned-numberの3つのフィールドがあります。ルーティング デバイスは、タイプ フィールドを表すために target または origin という単語を使用することを想定しています。管理者フィールドはASまたはIPv4アドレスに10進数を使用しますが、割り当てられた番号フィールドはフィールドのサイズ(2オクテットで65,535、4オクテットで4,294,967,295)以下の10進数を想定します。

標準および拡張コミュニティ属性にコミュニティIDを指定する場合、UNIXスタイルの正規表現を使用できます。唯一の例外はVPNインポートポリシー(vrf-import)で、拡張コミュニティ属性の正規表現をサポートしていません。

通常の BGP コミュニティ属性は、16 ビット値に分割された 1 つ以上の 4 バイト値のセットで構成される可変長属性です。最上位ワードはAS番号として解釈され、最下位ワードはASの運用担当者によって割り当てられたローカル定義値です。4バイトASNの採用以降、4バイトBGP通常コミュニティと6バイトBGP拡張コミュニティは、BGPコミュニティ属性をサポートしられなくなりました。オペレーターは多くの場合、AS 番号を BGP コミュニティのローカル部分でエンコードします。つまり、コミュニティの形式が ASN:ASN である場合もあります。4バイトASNでは、エンコードに8バイトが必要です。BGP拡張コミュニティでは、グローバル管理者フィールドとして4バイトのASをエンコードできますが、ローカル管理者フィールドには2バイトの空き領域しかありません。したがって、6バイト拡張コミュニティ属性も適していません。これを克服するために、Junos OSでは、オプションの推移的パス属性、つまり12バイトのBGPラージコミュニティを設定し、グローバル管理者として自律システム番号をエンコードするための最上位の4バイト値と、RFC 8092で定義されているローカル値をエンコードするための残りの2つの4バイト割り当て番号を提供します。大規模なコミュニティBGP [edit policy-options community community-name members] および [edit routing-options static route ip-address community] 階層レベルで設定できます。BGP大規模なコミュニティ属性フォーマットには、 large:global administrator:assigned number:assigned numberの4つのフィールドがあります。

注:Junos OSでは、スタティックルートは設定で標準(ネイティブ)BGPコミュニティのみをサポートします。拡張コミュニティは、スタティックルートではサポートされていません。

BGP IPv6 ユニキャストアドレス固有の拡張コミュニティは、20 バイト値のセットとしてエンコードされます。20バイトの値は、以下の形式で解釈されます。

  • 最上位 2 バイトは、タイプとサブタイプの値 (高値 (最上位バイト) と低値 (2 番目最上位バイト)) をエンコードします。

  • 次の16バイトで、IPv6ユニキャストアドレスをエンコードします。これは、IETF RFC のグローバル管理者です。

  • 最後の 2 バイトは、運用担当者定義のローカル値をエンコードします。IETF RFCではローカル管理者です。

IPv6 ユニキャスト アドレス固有のBGP拡張コミュニティ属性は、キーワード ipv6-targetipv6-origin、または ipv6-extended の後に IPv6 とローカル管理者が続き、<、>、で区切って表されます。

注:

BGPの大規模コミュニティ属性値の長さは、12のゼロ以外の倍数である必要があります。

例:特定のコミュニティタグを持つBGPルートをIS-ISに再配布するルーティングポリシーの設定

この例では、 Edu コミュニティからBGPルートを取得し、メトリック63 のIS-ISに配置するポリシーを定義します。

要件

この例を設定する前に、デバイスの初期化以外の特別な設定を行う必要はありません。

概要

図1 は、この例で使用されているトポロジーを示しています。

図1:特定のコミュニティタグを持つBGPルートをIS-ISRedistributing BGP Routes with a Specific Community Tag into IS-ISに再配布する

この例では、デバイスA、デバイスB、デバイスC、デバイスDは自律システム(AS)1に属し、IS-ISを実行しています。デバイス D を除くすべての AS 1 デバイスは、内部 BGP(IBGP)を実行しています。

デバイス E は AS 2 に存在し、デバイス C と外部 BGP(EBGP)ピアリング セッションを持っています。デバイス E には、10.2.0.0/16 と 10.3.0.0/16 の 2 つのスタティック ルートがあります。これらのルートは、Edu 2:5コミュニティ属性でタグ付けされ、EBGPを介してデバイスCにアドバタイズされます。

デバイスCは、Edu 2:5コミュニティ属性でタグ付けされたBGPルートを受信し、ルートをIS-ISに再配布し、これらのルートに63のIS-ISメトリックを適用します。

CLIクイックコンフィグレーション は、 図1に示すすべてのデバイスの構成を示しています。セクション #d10e65__d10e386 では、デバイスCとデバイスEの手順を説明しています。

設定

手順

CLIクイックコンフィグレーション

この例をすばやく設定するには、以下のコマンドをコピーしてテキストファイルに貼り付け、改行を削除して、ネットワーク構成に合わせて必要な詳細を変更してから、コマンドを [edit] 階層レベルのCLIにコピー&ペーストします。

デバイスA

デバイスB

デバイスC

デバイスD

デバイスE

ステップバイステップの手順

次の例では、設定階層のさまざまなレベルに移動する必要があります。CLIのナビゲーションについては、『CLIユーザーガイド』の「設定モードでのCLIエディターの使用」を参照してください。

デバイスEを設定するには:

  1. インターフェイスを設定します。

  2. スタティックルートにEduコミュニティ属性を追加するstaticsポリシーを設定します。

  3. EBGPを設定し、 statics ポリシーを適用します。

  4. 静的ルートを設定します。

  5. ルーターIDとAS番号を設定します。

ステップバイステップの手順

次の例では、設定階層のさまざまなレベルに移動する必要があります。CLIのナビゲーションについては、『CLIユーザーガイド』の「設定モードでのCLIエディターの使用」を参照してください。

デバイスCを設定するには:

  1. インターフェイスを設定します。

  2. IBGPを設定します。

  3. デバイス E から学習した Edu タグ付き BGP ルートを再分配し、メトリック 63 を適用する Edu-to-isis ポリシーを設定します。

  4. インターフェイスで IS-IS を有効にし、Edu-to-isポリシーを適用します。

  5. EBGPを介してデバイスEへのルートを再分配するsend-isis-and-directポリシーを設定します。

    このポリシーがなければ、デバイスEはAS 1のネットワークに接続できません。

  6. EBGPを設定し、send-isis-and-directポリシーを適用します。

  7. ルーターIDと自律システム(AS)番号を設定します。

結果

設定モードから、 show interfacesshow protocolsshow policy-options、および show routing-options コマンドを入力して設定を確認します。出力に意図した設定が表示されない場合は、この例の手順を繰り返して設定を修正します。

デバイスE

デバイスC

デバイスの設定が完了したら、設定モードから commit を入力します。

検証

設定が正常に機能していることを確認します。

IS-ISネイバーの検証

目的

デバイス E からの BGP ルートが AS 1 の IS-IS ネットワーク上で通信されていることを確認します。

アクション

動作モードから、 show route protocol isis コマンドを入力します。

意味

予想通り、10.2.0.0/16および10.3.0.0/16ルートは、メトリックが73のIS-IS外部ルートとしてデバイスDのルーティングテーブルにあります。デバイス C がメトリックに 63 を追加していない場合、デバイス D はこれらのルートのメトリック 10 を持つことになります。

例:BGPコミュニティを削除するルーティングポリシーの設定

この例では、BGPルートを受け入れるが、ルートからBGPコミュニティを削除するポリシーを作成する方法を示します。

要件

この例を設定する前に、デバイスの初期化以外の特別な設定は必要ありません。

概要

この例では、外部 BGP(EBGP)接続を持つ 2 つのルーティング デバイスを示しています。デバイスR2は、BGPセッションを使用して、デバイスR1に2つのスタティックルートを送信します。デバイスR1では、インポートポリシーで、すべてのBGPコミュニティをルートから削除する必要があることが指定されています。

デフォルトでは、EBGPピアでコミュニティが設定されると、コミュニティが送信され、受け入れられます。ネイバーから受信したコミュニティの受け入れを抑制するには、すべてのコミュニティまたは指定されたコミュニティのセットを削除します。ポリシーの結果がコミュニティの空のセットである場合、コミュニティ属性は含まれません。すべてのコミュニティを削除するには、まずコミュニティのワイルドカードセットを定義します(ここでは、コミュニティの名前 はwild)。

次に、ルーティングポリシーステートメントで、 community delete アクションを指定します。

自律システム(AS)から特定のコミュニティを抑制するには、コミュニティを community wild members "*:community-value"として定義します。

トポロジー

図 2 は、サンプル ネットワークを示しています。

図2:コミュニティBGP Policy That Removes Communitiesを排除するBGPポリシー

設定

CLIクイックコンフィグレーション

この例をすばやく設定するには、以下のコマンドをコピーしてテキストファイルに貼り付け、改行を削除して、ネットワーク構成に合わせて必要な詳細を変更してから、コマンドを [edit] 階層レベルのCLIにコピー&ペーストします。

デバイスR1

デバイスR2

手順

ステップバイステップの手順

次の例では、設定階層内のさまざまなレベルに移動する必要があります。CLIのナビゲーションについては、『Junos OS CLIユーザーガイド』の「設定モードでのCLIエディターの使用」を参照してください。

デバイスR1を設定するには:

  1. インターフェイスを設定します。

  2. BGPを設定します。

    デバイスR2とのBGPピアリングセッションにインポートポリシーを適用します。

  3. コミュニティを削除するルーティングポリシーを設定します。

  4. 自律システム(AS)番号とルーターIDを設定します。

ステップバイステップの手順

次の例では、設定階層内のさまざまなレベルに移動する必要があります。CLIのナビゲーションについては、『Junos OS CLIユーザーガイド』の「設定モードでのCLIエディタの使用」を参照してください。

デバイスR2を設定するには:

  1. インターフェイスを設定します。

  2. ルーターIDと自律システム(AS)番号を設定します。

  3. BGPを設定します。

  4. 複数のコミュニティを設定するか、複数のメンバーを持つ単一のコミュニティを設定します。

  5. 静的ルートを設定します。

  6. 静的ルートをBGPにアドバタイズし、ルートにBGPコミュニティを追加するルーティングポリシーを設定します。

  7. エクスポートポリシーを適用します。

結果

設定モードから、 show interfacesshow protocolsshow policy-options、および show routing-options コマンドを入力して設定を確認します。出力に意図した設定が表示されない場合は、この例の手順を繰り返して設定を修正します。

デバイスR1

デバイスR2

デバイスの設定が完了したら、設定モードから commit を入力します。

検証

設定が正常に機能していることを確認します。

BGPルートの検証

目的

デバイスR1のルーティングテーブルにBGPコミュニティが含まれていないことを確認します。

アクション
  1. デバイスR1で、 show route protocols bgp extensive コマンドを実行します。

  2. デバイスR1で、インポートポリシーの community remove 設定を無効にします。

  3. デバイスR1で、 show route protocols bgp extensive コマンドを実行して、アドバタイズされたコミュニティを表示します。

意味

出力は、デバイスR1のルーティングテーブルで、デバイスR2から送信されたBGPルートでコミュニティが抑制されていることを示しています。デバイスR1のインポートポリシーの community remove 設定が無効になると、コミュニティは抑制されなくなります。

例:BGPコミュニティ数に基づくルーティングポリシーの設定

この例では、BGPコミュニティの数に基づいてBGPルートを受け入れるBGPルートを受け入れるポリシーを作成する方法を示します。

要件

この例を設定する前に、デバイスの初期化以外の特別な設定は必要ありません。

概要

この例では、外部 BGP(EBGP)接続を持つ 2 つのルーティング デバイスを示しています。デバイスR2は、BGPセッションを使用して、デバイスR1に2つのスタティックルートを送信します。デバイスR1では、インポートポリシーで、BGP受信ルートに最大5つのコミュニティを含めることができ、一致と見なされることができるように指定されています。例えば、ルートに 3 つのコミュニティが含まれている場合、それは一致しているとみなされ、受け入れられます。ルートに 6 つ以上のコミュニティが含まれている場合、そのルートは不一致と見なされて拒否されます。

EBGPのデフォルトポリシーは、すべてのルートを受け入れることであることを覚えておくことが重要です。一致しないルートを確実に拒否するには、ポリシー定義の最後に then reject アクションを含める必要があります。

トポロジー

図3 は、サンプルネットワークを示しています。

図3:受け入れ可能なコミュニティ数に制限のあるBGPポリシー BGP Policy with a Limit on the Number of Communities Accepted

設定

CLIクイックコンフィグレーション

この例をすばやく設定するには、以下のコマンドをコピーしてテキストファイルに貼り付け、改行を削除して、ネットワーク構成に合わせて必要な詳細を変更してから、コマンドを [edit] 階層レベルのCLIにコピー&ペーストします。

デバイスR1

デバイスR2

手順

ステップバイステップの手順

次の例では、設定階層内のさまざまなレベルに移動する必要があります。CLIのナビゲーションについては、『Junos OS CLIユーザーガイド』の「設定モードでのCLIエディターの使用」を参照してください。

デバイスR1を設定するには:

  1. インターフェイスを設定します。

  2. BGPを設定します。

    デバイスR2とのBGPピアリングセッションにインポートポリシーを適用します。

  3. 直接ルートを送信するルーティングポリシーを設定します。

  4. 自律システム(AS)番号とルーターIDを設定します。

ステップバイステップの手順

次の例では、設定階層内のさまざまなレベルに移動する必要があります。CLIのナビゲーションについては、『Junos OS CLIユーザーガイド』の「設定モードでのCLIエディタの使用」を参照してください。

デバイスR2を設定するには:

  1. インターフェイスを設定します。

  2. ルーターIDと自律システム(AS)番号を設定します。

  3. BGPを設定します。

  4. 複数のコミュニティを設定するか、複数のメンバーを持つ単一のコミュニティを設定します。

  5. 静的ルートを設定します。

  6. 静的ルートをBGPにアドバタイズし、ルートにBGPコミュニティを追加するルーティングポリシーを設定します。

  7. エクスポートポリシーを適用します。

結果

設定モードから、 show interfacesshow protocolsshow policy-options、および show routing-options コマンドを入力して設定を確認します。出力に意図した設定が表示されない場合は、この例の手順を繰り返して設定を修正します。

デバイスR1

デバイスR2

デバイスの設定が完了したら、設定モードから commit を入力します。

検証

設定が正常に機能していることを確認します。

BGPルートの検証

目的

デバイスR1のルーティングテーブルに、予想されるBGPルートが含まれていることを確認します。

アクション
  1. デバイスR1で、 show route protocols bgp コマンドを実行します。

  2. デバイスR1で、インポートポリシーで community-count 設定を変更します。

  3. デバイスR1で、 show route protocols bgp コマンドを実行します。

  4. デバイスR1で、 show route protocols bgp extensive コマンドを実行して、アドバタイズされたコミュニティを表示します。

意味

出力は、デバイスR1のルーティングテーブルで、デバイスR2から送信されたBGPルートが非表示になっていることを示しています。デバイスR1のインポートポリシーの community-count 設定を変更すると、BGPルートは非表示にはなりません。