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  5などを通過します。この場合、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-path ステートメントと as-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回、せいぜいntermを繰り返す。mnはどちらも正の整数でなければならず、mnより小さくなければなりません。

{m}

term m の正確な m 回の繰り返しは正の整数でなければなりません。

{m,}

m またはそれ以上 termを繰り返す。 m は正の整数でなければなりません。

*

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

+

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

?

termを0回または1回繰り返す。これは {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

最初の 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 が 1 回以上出現 番号 3

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 3 に向かって AS 2 を経由するトランジットトラフィックを許可します。トランジットトラフィックを防ぐために、エクスポートポリシー only-my-routes がAS 1に適用されます。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 パスに一致させ、設定を変更した後に受け入れます。