ルーティングポリシー一致条件としての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という名前のコミュニティに属している可能性があります。コミュニティ名は、ルーティングポリシー内で一致条件またはアクションとしても使用されます。コミュニティを作成するためのコマンド構文は、policy-options community name members [community-ids]です。 community-ids は、単一のコミュニティ値または複数のコミュニティ値のいずれかです。コミュニティ名に複数の値が割り当てられた場合、ルーティング デバイスはこれをコミュニティ値の論理 AND と解釈します。つまり、ルートには、コミュニティ名が割り当てられる前に、設定された値がすべて含まれている必要があります。
通常のコミュニティ属性は4オクテットです。VPN などのネットワーク拡張には、コミュニティなどの属性で満たすことができる機能要件があります。しかし、4オクテットのコミュニティ値では、VPN要件を満たすのに十分な拡張性と柔軟性が得られません。これは、拡張されたコミュニティの創造につながります。拡張コミュニティは 8 オクテット値であり、2 つの主要なセクションに分かれています。コミュニティの最初の 2 オクテットはタイプ フィールドをエンコードし、最後の 6 オクテットは タイプ フィールドで定義された形式で一意のデータ セットを伝送します。拡張コミュニティーでは、コミュニティーのグループ化や分類の範囲が広がります。
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コミュニティ属性をサポートできなくなりました。演算子は、BGPコミュニティのローカル部分でAS番号をエンコードすることがよくあります。つまり、コミュニティの形式はASN:ASNである場合があります。4 バイトの ASN では、エンコードに 8 バイトが必要です。BGP拡張コミュニティではグローバル管理者フィールドとして4バイトASをエンコードできますが、ローカル管理者フィールドには2バイトの空き領域しかありません。そのため、6バイトの拡張コミュニティ属性も不適当です。これを克服するために、Junos OSでは、オプションの推移パス属性、つまり、グローバル管理者として自律システム番号をエンコードするための最上位の4バイト値と、RFC 8092で定義されているローカル値をエンコードするために割り当てられた残りの2つの4バイト割り当てられた番号を提供する12バイトのBGPラージコミュニティを設定することができます。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 つのフィールドがあります。
BGP IPv6ユニキャストアドレス固有の拡張コミュニティは、20バイト値のセットとしてエンコードされます。20 バイト値は、次の形式で解釈されます。
-
最上位の 2 バイトは、タイプとサブタイプの値 (上位値 (最上位バイト) と低値 (最上位バイト 2 番目)) をエンコードします。
-
次の 16 バイトは、IPv6 ユニキャスト アドレスをエンコードします。これは、IETF RFC のグローバル管理者です。
-
最後の 2 バイトは、演算子定義のローカル値をエンコードします。これは、IETF RFC のローカル管理者です。
IPv6ユニキャストアドレス固有のBGP拡張コミュニティ属性は、キーワード ipv6-target、 ipv6-origin、または ipv6-extended で表され、その後にIPv6とローカル管理者が続き、<、>、:で区切られます。
BGPラージコミュニティ属性値の長さは、0以外の12の倍数でなければなりません。