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 では as-number:community-value 表記が使用されており、各値は 10 進数です。0と65,535のAS値は予約されており、これらのAS番号内のすべてのコミュニティ値も予約されています。各コミュニティ、またはコミュニティのセットには、 [edit policy-options] 設定階層内で名前が付けられます。コミュニティ名は、ルーティングデバイスに対してコミュニティを一意に識別し、ルートを分類する方法として機能します。たとえば、コミュニティ値 64510:1111 のルートは、 AS64510-routes という名前のコミュニティに属している可能性があります。コミュニティ名は、ルーティングポリシー内で一致条件またはアクションとしても使用されます。コミュニティを作成するためのコマンド構文は次のとおりです。ポリシーオプション community name members [community-ids]community-idsは、単一のコミュニティ値または複数のコミュニティ値のいずれかです。コミュニティ名に複数の値が割り当てられている場合、ルーティングデバイスはこれをコミュニティ値の論理 AND として解釈します。つまり、ルートには、コミュニティ名が割り当てられる前に、設定された値がすべて含まれている必要があります。

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

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

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

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

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

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

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

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

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

注:

BGPラージコミュニティ属性値の長さは、ゼロ以外の12の倍数でなければなりません。

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

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

要件

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

概要

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

図 1: 特定のコミュニティタグを持つBGPルートをIS-ISに再配布する特定のコミュニティタグを持つBGPルートをIS-ISに再配布する

この例では、機器A、機器B、機器C、機器Dは自律システム(AS)1に属し、IS-ISを実行しています。デバイスDを除くすべてのAS1デバイスは、内部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でのすべてのデバイスの設定を示しています。セクション #d205e62__d205e383 では、デバイス C とデバイス E の手順について説明します。

設定

手順

CLIクイック構成

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

1 デバイスA 1

1 デバイスB 1

1 デバイスC 1

1 デバイスD 1

1 デバイスE 1

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

次の例では、設定階層のいくつかのレベルに移動する必要があります。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-ISISポリシーを適用します。

  5. EBGP を介して、デバイス E にルートを再配布する送信-isis-and-directポリシーを設定します。

    このポリシーがない場合、デバイスEはAS1のネットワークに接続できません。

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

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

結果

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

1 デバイスE 1

1 デバイスC 1

デバイスの設定が完了したら、設定モードから 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 ポリシーコミュニティを削除する BGP ポリシー

設定

CLIクイック構成

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

デバイスR1

デバイスR2

手順

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

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

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

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

トポロジー

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

図 3: 受け入れるコミュニティの数に制限を設けたBGPポリシー受け入れるコミュニティの数に制限を設けたBGPポリシー

設定

CLIクイック構成

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

デバイスR1

デバイスR2

手順

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

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

Device 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ルートは非表示ではなくなります。