Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

ルーティングポリシー一致条件として使用するASパス正規表現の理解

BGP AS パス とは、ネットワーク パケットが特定のルータに行き着くまでに通過する自律システムによるシーケンスです。AS番号は右から左に読まれるシーケンスで組み立てられます。たとえば、AS パス 5 4 3 2 1 のルートで宛先に到達するパケットの場合、パケットは最初に AS 5 を通過して、AS 1 に到着するまでルーターの通過を繰り返します。この場合、AS 1はパケットの宛先前の最後のASであり、パケット送信元がピアするASとなります。

AS パスとルーティング ポリシーの一致条件を使用する場合は、正規表現を使用してルートを検索できます。これを実行するには、ASパスの一部または全部に基づいて1つ以上の一致条件を作成し、それをルーティングポリシーに含めます。

以下のセクションでは、ASパス正規表現を説明し、設定の例を示します。

ASパス正規表現の設定

名前付きASパス正規表現を作成し、as-path 一致条件を使ってルーティングポリシーに含めることができます(詳細はルーティングポリシー一致条件を参照)。名前付きASパス正規表現を作成するには、as-pathステートメントを含めます。

AS パス正規表現をルーティング ポリシーに含めるには、from ステートメントに as-path 一致致条件を含めます。

また、AS パス正規表現で構成された名前付き AS パス グループを作成して、それを as-path-group 一致条件を使ってルーティング ポリシーに含めることもできます。名前付き AS パス グループを作成するには、以下に示すように as-path-group ステートメントを含めます。

AS パス グループ内の AS パス正規表現をルーティング ポリシーに含めるには、from ステートメントに as-path-group 一致条件を含めます。

注:

as-pathas-path-group の両方のステートメントを同じポリシー条件に含めることはできません。

注:

fromステートメントのas-path一致条件に、複数のASパス正規表現の名前を含めることができます。これを実行すると、ASパス正規表現が1つでも一致すれば、一致が成立します。AS パス正規表現による一致は、本質的には論理的 OR 演算です。

AS パス名は正規表現で指定します。ここでは、文字、数字、ハイフン(-)を含め、最大65,536文字までを使用できます。名前にスペースを含めるには、名前全体を引用符(“ ”)で囲みます。

正規表現は、AS パスの全部または一部と一致するために使用します。この正規表現は、2つの要素で構成され、以下の形式で指定します。

  • term - AS を指定します。以下のいずれかの方法で指定できます。

    • AS番号 - AS 番号全体で1つの項を形成します。POSIX 1003.2 で定義されている正規表現とは異なり、AS 番号内の個々の文字を参照することはできません。

    • ワイルドカード文字 - 任意の単一の AS 番号に一致させます。ワイルドカード文字はピリオド(.)です。複数のワイルドカード文字を指定できます。

    • AS パス - 単一の AS 番号、または丸カッコで囲んだ AS 番号のグループ。この方法で正規表現をグループ化すれば、グループ全体で共通の動作を実行し、グループに優先順位を付けることができます。グループ化されたパスは、それ自体が演算子を含むことができます。

      Junos OSリリース9.1以降では、RFC 4893の4オクテットAS番号スペースのBGPサポートに定義されている4バイトAS番号と、Junos OS旧リリースがサポートする2バイトAS番号の両方を指定できます。1~4,294,967,295 の範囲で値を設定できます。

  • operator—(オプション)項の一致要件を指定する演算子。ほとんどの演算子は、一致しているとみなされるために必要な項の検出回数を表しています(たとえば、任意の出現回数、0回、1回など)。表 1は、ASパスがサポートする正規表現の演算子のリストです。演算子は、term の直後に記述し、間にスペースは入れません。ただし、2つの項の間にパイプ(|)やダッシュ(–)演算子を記述する場合と、項を丸カッコで囲む場合は除きます。

1つの正規表現で1つ以上の項と演算子のペアを指定できます。

表 2 は、AS パスの一致要件を正規表現で定義する方法を示します。

表 1: AS パス正規表現演算子

オペレータ

一致定義

{m,n}

少なくとも m 回最大で n term を繰り返す。m および n はともに正数。mn よりも小さい値でなければならない。

{m}

正確に mterm を繰り返す。m は必ず正数。

{m,}

m 回以上 termを繰り返す。mは必ず正数。

*

0回以上term を繰り返す。これは {0,} と同義。

+

1回以上 term を繰り返す。これは {1,} と同義。

?

0回または1回 term を繰り返す。これは {0,1} と同義。

|

パイプの両側の2項のうちの1項が一致。

開始項と終了項の範囲に含まれる値。

^

コミュニティ属性の正規表現の先頭の文字。この文字は暗黙的に追加されるため、使用は任意。

$

コミュニティ属性の正規表現の末尾の文字。この文字は暗黙的に追加されるため、使用は任意。

( )

丸カッコで囲まれた項のグループ。カッコと項の間のスペースは無視される。"()" のように丸カッコを引用符で囲み、間にスペースを入れなければ、NULL パスを指す。

[ ]

AS 番号のセット。このセットから必ず1つのAS番号が一致する。ハイフン(-)を使って範囲の開始と終了を指定する。セット内の特定のAS番号を一致条件から除外するには、[^123]のようにキャレット(^)を使用。

表 2: AS パス正規表現の例

一致するASパス

正規表現

一致結果の例

ASパスが1234

1234

1234

AS番号1234が0回以上出現

1234*

1234

1234 1234

1234 1234 1234

NULL ASパス

AS番号1234が0回以上出現

1234? または 1234{0,1}

1234

NULL ASパス

AS番号1234が1~4回出現

1234{1,4}

1234

1234 1234

1234 1234 1234

1234 1234 1234 1234

AS番号12が1~4回出現し、続いてAS番号34が1回出現

12{1,4} 34

12 34

12 12 34

12 12 12 34

12 12 12 12 34

単一AS番号と一致するAS番号の範囲

123–125

123

124

125

[123–125]*

NULL ASパス

123

124 124

125 125 125

123 124 125 123

2番目のAS番号が必ず56または78のパス

(.  56) | (. 78) または .  (56 | 78)

1234 56

1234 78

9876 56

3857 78

2番目のAS番号が56または78のパス

. (56 | 78)?

1234 56 52

34 56 1234

1234 78 39

794 78 2

1番目のAS番号が123で、2番目のAS番号が56または78のパス

123 (56|78)

123 56

123 78

存在しないものを除くすべての長さのパスで、2番目のAS番号は存在しないものも含めて何でも可

. .* または . .{ 0,}

1234 1234 5678 1234 5 6 7 8

ASパスが1 2 3

1 2 3

1 2 3

AS番号1および2の出現回数が1回、続いてAS番号3の出現回数が1回以上

1 2 3+

1 2 3

1 2 3 3

1 2 3 3 3

AS番号1の出現回数が1回以上、続いてAS番号2の出現回数が1回以上、 続いてAS番号3の出現回数が1回以上

1+ 2+ 3+

1 2 3

1 1 2 3

1 1 2 2 3

1 1 2 2 3 3

AS番号4、5、6で始まる任意の長さのパス

4 5 6 .*

4 5 6

4 5 6 7 8 9

AS番号4、5、6 で終わる任意の長さのパス

.* 4 5 6

4 5 6

1 2 3 4 5 6

4 9 4 5 6

ASパス5、12、または18

5 | 12 | 18

5

12

18

NULL ASパスの設定

AS パスの正規表現を使えば、自身の AS を起点としたルート(プレフィックス)に一致する NULL AS パスを作成できます。これらのルートは、どの外部ピアからもASにアドバタイズされていません。NULL ASパスを作成するには、スペースを入れずに引用符で丸カッコの演算子を囲みます。

以下の例では、ローカル管理された AS 2 が AS 1(10.2.2.6)と AS 3 接続されます。AS 3はAS 2にそのルートをアドバタイズしますが、AS 2の管理者は、AS 3のルートをAS 1にアドバタイズすることを望まないため、AS 1からAS 2を経由してAS 3へのトランジットトラフィックを許可します。トランジット トラフィックを防ぐには、AS 1 に only-my-routes エクスポート ポリシーを適用します。これで、AS 2 から AS 1 へのルートのアドバタイズは許可されますが、AS 3 へのルート(または他の接続 AS のルート)の AS 1 へのアドバタイズは抑制されます。

AS パス の正規表現の評価方法

ASパス正規表現は、POSIX 1003.2に定義されている拡張(最新)正規表現を実装しています。これらは、次の例外を除いてUNIX正規表現と同等です。

  • AS パス番号の正規表現に一致させる基本単位は、AS 番号であり、個々の文字でありません。

  • 正規表現では、ルート内の AS パスが regular-expression と完全に一致する場合のみルートに一致します。これと同等の UNIX 正規表現は、^regular-expression$ です。たとえば、AS パス正規表現の 1234 は、UNIX正規表現の ^1234$ と同等です。

  • ワイルドカード演算子を使用して、正規表現を指定できます。

例:AS パス正規表現の構成

ルートを AS 1234 56 78 9 パスと完全に一致させ、受け入れます。

代替パスをASに一致させ、設定を変更した後に受け入れます。

ルートを 123、124、または 125 の AS パスに一致させ、設定を変更した後に受け入れます。