[index] CentreCOM 8700SLシリーズ コマンドリファレンス 2.9

# IP/経路制御（BGP-4）

備考：フィーチャーライセンス AT-FL-08 が必要

      - プロトコル概要
       - AS（Autonomous System）
        - ASの種類
        - ASとトラフィック
       - プレフィックス
        - 経路集約
       - BGPスピーカー
       - BGPセッション
       - BGPメッセージ
       - パス属性
        - AS_PATH
        - MULTI_EXIT_DISC
        - LOCAL_PREF
        - ATOMIC_AGGREGATE
        - COMMUNITIES
      - 基本設定手順
       - 設定項目詳細
      - 経路のフィルタリング
       - 経路選択プロセス
       - ASパスリスト
       - プレフィックスフィルター
       - コミュニティーリスト
       - プレフィックスリスト
       - ルートマップ
      - I-BGPフルメッシュの回避
       - ルートリフレクション
       - ASコンフェデレーション
      - その他の機能
       - TCP MD5認証
       - プライベートASフィルター
       - BGPピアテンプレート
       - システム資源の調整
        - メモリー不足時の一時停止
        - メモリー使用量の制限
       - トリガー
        - MEMORYイベント
        - PEERSTATEイベント

BGP-4（Border Gateway Protocol 4）について解説します。
BGP-4はISPなどのネットワーク運用組織（経路制御ドメインまたは自律システム（AS）と呼びます）間で経路情報の交換を行うためのプロトコルです。組織内で経路情報をやりとりするOSPFやRIPなどのIGP（Interior Gateway Protocol）に対し、BGP-4のようなプロトコルはEGP（Exterior Gateway Protocol）と呼ばれます。BGP-4は現在のインターネットを支える基幹的な経路制御プロトコルです。

> Note - BGP-4を使用するにはフィーチャーライセンスAT-FL-08が必要です。

プロトコル概要

BGP-4（Border Gateway Protocol 4）は、インターネットに代表される相互接続型ネットワークにおいて、自律システム（AS）と呼ばれる組織（ISPや企業など）間で経路情報をやりとりするための経路制御プロトコルです。次に、BGP-4に関連するおもなRFCを挙げます。

- RFC1771, A Border Gateway Protocol 4 (BGP-4)
- RFC1772, Application of the Border Gateway Protocol in the Internet
- RFC1997, BGP Communities Attribute
- RFC2385, Protection of BGP Sessions via the TCP MD5 Signature Option
- RFC2796, BGP Route Reflection - An Alternative to Full Mesh IBGP
- RFC2842, Capabilities Advertisement with BGP-4
- RFC2918, Route Refresh Capability for BGP-4
- RFC3065, Autonomous System Confederations for BGP

BGP-4は、よりなじみの深いRIPやOSPFとは使用場所が異なります。RIPやOSPFは組織内のトラフィックを配送するために使用されます。一方、BGP-4は組織間でトラフィックを配送するために使用されます。
アルゴリズム的に見ると、BGP-4はディスタンスベクターアルゴリズム（パスベクター）を使用した比較的シンプルな設計になっています。ただし、他組織との関係（契約など）に応じた配送制御ができるよう、各ASにおいて経路情報にさまざまな情報（「属性」と呼びます）を付加して、ポリシーに基づくルーティングが可能なようになっています。

AS（Autonomous System）

BGP-4は組織間で経路情報を交換するEGP（Exterior Gateway Protocol）です。
ここでいう「組織」は、より正確には「AS（Autonomous System = 自律システム）」と呼ぶべきものです。BGP-4では、RIPやOSPFでいうASと比べ、若干その意味が拡張されています。すなわち、「1つの経路制御プロトコルとメトリックを使って経路情報を交換しあっているルーターの集まり」という旧来の定義ではなく、「外部から見たときに、首尾一貫した経路制御ポリシーを持つように見えるルーターの集合（ネットワーク）。内部では複数の経路制御プロトコルやメトリックを使用していてもよい」という意味でASという言葉を使っています。ASは通常同一組織の管理下に置かれており、経路制御ドメインなどと呼ばれることもあります。
ASは1〜65535の番号（ASN = AS番号）によって識別されます。AS番号はICANN（Internet Corporation for Assigned Names and Numbers）が管理していますが、64512〜65535はプライベートAS番号として予約されており、各組織内で自由に使用できます。ただし、プライベートAS番号は絶対にインターネット上に流してはなりません。
RFC1930, Guidelines for creation, selection, and registration of an Autonomous System (AS)

#### ASの種類

ASは他ASとの接続形態やトラフィックの配送ポリシーによって次のように分類できます。

表 1：ASの種類
名称 | 説明
スタブAS（Stub AS） | 1つのASとだけ1点で接続しているAS。自AS宛てのトラフィックだけを受け入れる。
マルチホームAS（Multihomed AS） | 1つのASと複数点で接続している、あるいは、複数のASと接続しているASのうち、自AS宛てのトラフィックだけを受け入れ、他AS宛てのトラフィックは通過させないもの
トランジットAS（Transit AS） | 複数のASと接続しており、自AS宛てのトラフィックだけでなく、他AS宛てのトラフィックも（ポリシーに応じて）通過を許可するAS

#### ASとトラフィック

AS間の関係を考慮した場合、トラフィックは次の2つに分類して考えることができます。

- ローカルトラフィック：始点か終点のどちらかが自AS内のアドレスであるトラフィック。すなわち、自AS宛てのトラフィックや自ASから他ASに向けて送られるトラフィック。
- トランジットトラフィック：始点と終点の両方が他ASのアドレスであるトラフィック。すなわち、自ASを単なる通過点とするトラフィック。

また、BGP-4では、トラフィックの配送ポリシーを表すときに「トランジット」「非トランジット」という言葉が使われます。この場合それぞれの意味は次のとおりです。

- トランジット：他AS宛てトラフィックが自ASを通過することを許可する。
- 非トランジット：他AS宛てトラフィックが自ASを通過することを許可しない（自AS宛てのトラフィックしか受け取らない）。

BGP-4の基本は、自AS内のプレフィックスを他ASに通知することで自AS宛てのトラフィックを受け取れるようにすること、および、他ASから経路を学習することで他AS宛てにトラフィックを送信できるようにすることです。
また、トランジットASの場合は、特定のトランジットトラフィックだけが自ASを通過できるよう、他ASに通知する経路情報を操作することも重要になります。BGP-4には、このようなポリシーを実施するために必要な機能が備えられています。

プレフィックス

プレフィックスとは、IPネットワーク（IPアドレスの範囲）をネットワークアドレスとネットマスクの組で表したものです。次に表記例を挙げます。

`172.16.10.0/24
172.16.10.0/255.255.255.0
`

2つの例は同じプレフィックス（IPアドレス 172.16.10.0〜172.16.10.255の範囲）を表しています。最初の例では、ネットマスクをマスク長（ビット数）で表しています。一方2番目の例では、ネットマスクをIPアドレスと同じ形式で表しています。どちらも同じ意味ですが、（文字数が少ないためか）どちらかというと最初の例のほうがよく使われています。
このように、ナチュラルサブネットマスク（クラスA、B、C）にこだわらないネットワークの設定方法を「CIDR」（Classless Inter-Domain Routing）と呼びます。
RFC1519, Classless Inter-Domain Routing (CIDR): an Address Assignment and Aggregation Strategy
CIDRは、限られたIPアドレスを効率的に割り当てるため、また、次に述べる経路集約によってインターネット上の経路数を少なくするために役立っています。

#### 経路集約

経路集約とは、複数のプレフィックスを1つのプレフィックスにまとめることを言います。たとえば、172.16.0.0/24、172.16.1.0/24、172.16.2.0/24〜172.16.255.0/24という256個のプレフィックスは、172.16.0.0/16という1個のプレフィックスに集約することができます。
経路情報を適切に集約することで、ネットワーク全体に通知される経路エントリーの数を減らし、経路制御にかかる負荷を軽減することができます。

BGPスピーカー

BGP-4の仕様では、BGP-4実装機器をBGPスピーカー（BGP speaker）と呼んでいます。BGPスピーカーは通常ルーターですが、経路情報を配布できるのであれば通常のホストであってもかまいません。
BGPスピーカーは、それぞれBGP識別子（BGP Identifier）という値を持ちます。BGP識別子は32ビットの符号なし整数値で、通常は自身のIPアドレスの1つを使います（例：10.10.10.1）。BGP識別子はルーターIDとも呼ばれます。

BGPセッション

BGP-4はTCP上で動作するため、必ず2つのBGPスピーカー間でセッションを張ることになります。互いにセッションを張っているBGPスピーカーを「BGPピア」と呼びます。また、BGPセッションを張って経路情報を交換することを「ピアリングする」などと呼ぶこともあります。
異なるASに属するスピーカー同士のセッションをE-BGP（External BGP）、同じASに属するスピーカー同士のセッションをI-BGP（Internal BGP）と呼びます。
E-BGPはAS間で経路情報を交換するためのセッション、I-BGPは他ASから学習した経路情報を同一AS内の他のスピーカーに伝えるためのセッションです。
E-BGPとI-BGPは原則的に同じ動作ですが、学習した経路を他のBGPピアに再通知するときのルールに違いがあります。BGPスピーカーは、あるI-BGPピアから学習した経路を別のI-BGPピアに通知することができません。これはAS内における経路情報のループを防ぐためです。I-BGPで学習した経路をE-BGPピアに通知すること、E-BGPピアから学習した経路をI-BGPで通知することは問題ありません。
このような制限があるため、BGPスピーカーは同一ASに所属する他のすべてのBGPスピーカーとセッションを張る必要があります。結果としてAS内にはメッシュ状にI-BGPセッションが張られることになります。メッシュ構成の煩雑さを避けるための手段として「ルートリフレクション」や「ASコンフェデレーション」があります。

BGPメッセージ

BGP-4メッセージはTCPを使って送信されます。TCPポート番号は179です。
BGP-4のメッセージには以下の種類があります。

表 2
タイプ | メッセージ名 | 説明
1 | OPEN | BGPセッションを開始するためのメッセージ。ルーター間にTCPコネクションが確立した直後に送られる。各ルーターの所属ASを通知しあったり、タイマー値のネゴシエーションを行ったりする
2 | UPDATE | 経路情報の通知に使うメッセージ。新規プレフィックスの通知や無効になったプレフィックスの取り消し依頼などを相手に通知する
3 | NOTIFICATION | プロトコル上のエラーを相手に通知するためのメッセージ。BGPセッションの終了通知にも使われる
4 | KEEPALIVE | BGPセッションが有効であることを確認するためのメッセージ。定期的に送信される
5 | ROUTE-REFRESH | BGPピアに対し、すべての経路情報を送信しなおすよう要求するためのメッセージ（RFC2918による拡張）

パス属性

BGP-4では、UPDATEメッセージで送信される経路情報にさまざまな情報を付加することができます。この付加情報をパス属性と呼びます。属性はポリシールーティングの基礎となる情報を相手に提供します。属性には以下の種類があります。

表 3：BGP属性の種類
タイプ | 属性名 | 種類 | 説明
1 | ORIGIN | well-known mandatory | プレフィックスがどのようにしてBGPに取り込まれたかを示す
2 | AS_PATH | well-known mandatory | プレフィックスがどのような経路をたどって通知されてきたかを示す
3 | NEXT_HOP | well-known mandatory | プレフィックス宛トラフィックのネクストホップアドレスを示す
4 | MULTI_EXIT_DISC | optional non-transitive | 隣接ASと複数点で接続している場合に、特定プレフィックス宛トラフィックのNEXTHOPとしてどちらが適切であるかを（隣接ASに対して）示す一種のメトリック（コスト）。小さいほどコストが低い（優先度が高い）
5 | LOCAL_PREF | well-known discretionary | AS内における（I-BGP）経路選択のための優先度。大きいほど優先度が高い
6 | ATOMIC_AGGREGATE | well-known discretionary | プレフィックスが集約されたものであることを示す
7 | AGGREGATOR | optional transitive | プレフィックスを集約したASおよびBGPスピーカーのBGP識別子を示す
8 | COMMUNITIES | optional transitive | コミュニティーを示す（RFC1997による拡張属性）
9 | ORIGINATOR_ID | optional non-transitive | 該当経路を最初に学習したI-BGPピアのBGP識別子（ルーターID）を示す。ルートリフレクション使用時に経路情報のループを防ぐために使われる（RFC2796による拡張属性）
10 | CLUSTER_LIST | optional non-transitive | AS内における該当経路のリフレクトパスを示す。ルートリフレクターは、経路を再通知（リフレクト）するときに自身のクラスターID（CLUSTER_ID）を本属性に付加する。ルートリフレクション使用時に経路情報のループを防ぐために使われる（RFC2796による拡張属性）

以下、おもなパス属性について説明します。

#### AS_PATH

AS_PATH（ASパス）とは、あるプレフィックスの経路情報がどのASをどんな順番で経由してきたのかを示すAS番号のリストです。
たとえば、次の図ではAS 10が「10.0.0.0/12」というプレフィックスを他のASに通知しています。AS 10は同プレフィックスのAS_PATH属性に「10」をセットしてAS 20に通知します。
AS 20から見ると、プレフィックス10.0.0.0/12へは、AS 10経由で到達できるという意味になります。次にAS 20は、同プレフィックスのAS_PATH属性に自AS番号を追加し、「20 10」としてAS 30に通知します。
AS 30から見ると、プレフィックス10.0.0.0/12へは、AS 20、AS 10の順番に経由して到達できるという意味になります。

一般的に、AS_PATH属性は「30 20 10」のように表します。「30」「20」「10」はいずれもAS番号を示します。先ほどの例にもあるように、リストの末尾（右端）がプレフィックスの通知元（起源AS）、リストの先頭（左端）が直前のASとなります。
BGPスピーカーは、あるプレフィックスへの経路が複数ある場合、AS_PATHの短い経路を優先します。この仕組みを利用し、自ASに向かうトラフィックを操作することもできます。たとえば、自AS内のプレフィックスを通知するときに、AS_PATH属性に自AS番号を複数回含めることがあります。こうすることにより、AS_PATHを長くし、他ASにとって該当経路の優先度を引き下げさせることができます。
AS_PATHは、経路情報のループを検出するためにも使用されます。BGPスピーカーは、受信した経路情報のうち、AS_PATHに自AS番号を含むものを受け取らずに破棄します。これによりループを防いでいます。

#### MULTI_EXIT_DISC

MULTI_EXIT_DISC（MED = MULTI-EXIT DISCRIMINATOR）属性は、隣接ASと複数点で接続している場合に、特定プレフィックスへのNEXT HOPとしてどちらの接続点がより望ましいかを通知するために使用する一種のメトリック（コスト指標）です。
次の図では、AS 20がAS 10に対して2つのプレフィックス「1.1.0.0/16」と「2.0.0.0/12」を通知しようとしています。
AS 20とAS 10はA-C、B-Dという2つの回線で接続しています。ここで、AS 20はAS 10に対し、「1.1.0.0/16」宛てのトラフィックはA-C経由で、「2.0.0.0/12」宛てのトラフィックはB-D経由で送ってほしいと考えています。そのほうがAS 20内での配送コストが低いためです。MED属性はこのような場合に使います。
MED属性は小さい値ほどコストが低いことを示します。そのため、AS 20はAS 10にプレフィックスを通知するにあたり、「1.1.0.0/16」のMED属性はA-Cのほうが小さくなるようにし、「2.0.0.0/12」のMED属性はB-Dのほうが小さくなるようにします。
これにより、AS 10でMED属性を考慮するポリシーが運用されていれば、AS 20の意図通り、「1.1.0.0/16」宛てのトラフィックはA-C経由で、「2.0.0.0/12」宛てのトラフィックはB-D経由でAS 20に送信されることになります。

本製品は、デフォルトでは経路情報にMED属性を含めません。しかし、後述するルートマップを使えば、特定の経路に任意のMED値を設定することができます。

#### LOCAL_PREF

LOCAL_PREF属性は、1つのAS内部において、特定プレフィックスへの経路としてどれがもっとも望ましいかを選択するための優先度です。複数のASと接続しているなど、あるプレフィックス宛ての経路が複数存在する場合に使用します。
たとえば次の図では、AS 10からプレフィックス「2.0.0.0/12」への経路として、AS 20経由とAS 40経由の2通りがあります。
ここで、AS 10ではAS 40経由のほうが回線が太いなど条件がよいことを知っているとします。このような場合、AS 10ではルーターA、Bに設定を施し、プレフィックス「2.0.0.0/12」のLOCAL_PREF属性値をBのほうが高くなるよう設定することで、「2.0.0.0/12」宛ての経路としてルーターB側を使うようにできます。

本製品は、I-BGPセッションにおけるデフォルトLOCAL_PREF値として100を通知します。後述するルートマップを使えば、特定の経路情報に任意のLOCAL_PREF値を設定することも可能です。

#### ATOMIC_AGGREGATE

ATOMIC_AGGREGATE属性は、プレフィックスが集約されたものであることを示すフラグ属性（「あり」か「なし」だけが意味を持つ属性）です。

経路情報がATOMIC_AGGREGATE属性付きで通知された場合、通知されたプレフィックスに含まれる特定のプレフィックスへの経路がAS_PATHとは異なることがあります。

#### COMMUNITIES

COMMUNITIES属性は、BGP-4のポリシー運用を簡略化するために追加された属性です。共通の性質を持つプレフィックスを「コミュニティー」にグループ化し、コミュニティー単位でポリシー制御を行うことを目的としています。
「コミュニティー」は32ビットの整数値で表します。コミュニティー値の意味は各ASが独自に定義できます。たとえば、コミュニティー「100」はトランジットさせる経路、コミュニティー「200」はトランジットさせない経路、といった使い方ができます。慣例として、コミュニティーの前半16ビットは自AS番号、後半16ビットは自AS内でのコミュニティー識別子とします。この場合、読みやすさを考慮して「65001:100」といった表記がよく使われます。
デフォルトでは、すべてのプレフィックスが「インターネット」コミュニティーに所属していると仮定されます。また、0x00000000〜0x0000FFFF（0:0〜0:65535）の範囲と、0xFFFF0000〜0xFFFFFFFF（65535:0〜65535:65535）の範囲は予約済みとなっています。
また、定義済みの特殊なコミュニティー（Well-known Communities）として次のものが定義されています。

- NO_EXPORT（0xFFFFFF01）：NO_EXPORTコミュニティーに属する経路情報を受け取った場合、その経路を他のAS（正確にはASコンフェデレーション）に再通知してはならない。
- NO_ADVERTISE（0xFFFFFF02）：NO_ADVERTISEコミュニティーに属する経路情報を受け取った場合、その経路を他のBGPスピーカーに再通知してはならない。
- NO_EXPORT_SUBCONFED（0xFFFFFF03）：NO_EXPORT_SUBCONFEDコミュニティーに属する経路情報を受け取った場合、その経路を他のAS（同一ASコンフェデレーション内の他のメンバーASも含む）に再通知してはならない。

本製品では、ルートマップを使って、特定の経路情報に任意のコミュニティー値を設定することができます。

基本設定手順

BGP-4を設定するための基本的な手順について説明します。

1. 自AS番号を設定します。

   `SET IP AUTONOMOUS=65001 ↓`
2. 自身のBGP識別子（ルーターID）を設定します。

   `SET BGP ROUTERID=10.10.10.1 ↓`
3. 自らが提供する経路情報を設定します。たとえばインターフェース（ダイレクト）経路と静的経路をBGPで広報したいときは次のようにします。

   `ADD BGP IMPORT=INTERFACE ↓
   ADD BGP IMPORT=STATIC ↓
   `
   広報するプレフィックスを明示的に指定したいときは、ADD BGP IMPORTコマンドでなくADD BGP NETWORKコマンドで該当プレフィックスを指定します。

   `ADD BGP NETWORK=192.168.10.0/24 ↓`
4. 接続相手のBGPスピーカー（BGPピア）を指定します。相手のIPアドレスと相手の所属AS番号を指定してください。REMOTEASが自ASと同じならI-BGP、違うならE-BGPピアとなります。

   `ADD BGP PEER=10.10.10.2 REMOTEAS=65002 ↓`
5. BGPピアとのセッションを開始します。

   `ENABLE BGP PEER=10.10.10.2 ↓`

設定項目詳細

BGP-4のおもな設定項目について説明します。
■ 自AS番号の設定はSET IP AUTONOMOUSコマンドを使います。

`SET IP AUTONOMOUS=65001 ↓
`

■ 本製品のデフォルト動作では、インターフェースに設定されたIPアドレスの中でもっとも大きなものがBGP識別子（ルーターID）として使われます。ただし、SET BGPコマンドのROUTERIDパラメーターでルーターIDを明示的に指定した場合はその値が使われます。また、明示的に指定していない場合でも、SET IP LOCALコマンドでデフォルトローカルIPインターフェース（LOCAL）のアドレスを指定している場合は、そのアドレスがルーターIDとして使われます。

- ルーターIDを明示的に指定するには、SET BGPコマンドのROUTERIDパラメーターを使います。ROUTERIDパラメーターが設定されている場合は、この値がルーターIDとして使われます。

  `SET BGP ROUTERID=10.1.1.1 ↓
  `
- SET BGPコマンドのROUTERIDパラメーターが設定されていない場合、SET IP LOCALコマンドでデフォルトローカルIPインターフェース（LOCAL）のアドレスを指定していれば、その値がルーターIDとして使われます。デフォルトローカルIPインターフェースのアドレスには、実インターフェースに設定されているIPアドレスのうちの1つを指定します。

  `SET IP LOCAL IP=10.10.10.1 ↓
  `
- 上記の方法でルーターIDが指定されていない場合は、インターフェースに設定されたIPアドレスの中でもっとも大きなものがBGP識別子（ルーターID）として使われます。

■ BGPプロセスに導入する経路情報はADD BGP IMPORTコマンドで指定します。インターフェース（ダイレクト）経路、静的経路、RIP経路、OSPF経路のそれぞれについて、取り込み時にルートマップによる属性設定が可能です。

`ADD BGP IMPORT=INTERFACE ↓
ADD BGP IMPORT=STATIC ↓
ADD BGP IMPORT=RIP ROUTEMAP=set_rip_attr ↓
`

■ 経路情報のソースではなく、プレフィックスによってBGPへの導入を指定することもできます。ADD BGP NETWORKコマンドでプレフィックスを指定してください。ルートマップを指定することによって、取り込み時の属性設定も可能です。

`ADD BGP NETWORK=172.16.0.0/16 ↓
ADD BGP NETWORK=10.0.0.0/12 ROUTEMAP=set_ten_net ↓
`

ADD BGP NETWORKコマンドで指定したプレフィックスは、静的設定やRIP、OSPFなどにより同一のプレフィックスがルーターの経路表に登録された場合に、BGP経路表に取り込まれます。
■ 経路情報を集約したいときは、ADD BGP AGGREGATEコマンドを使います。同コマンドで指定したプレフィックスよりも狭い経路（マスクが長い経路）がルーターのBGP経路表に現れた場合、BGP経路表に集約された経路も登録されます。SUMMARYパラメーターにYESを指定した場合は集約経路だけが通知され、NOを指定した場合は集約経路と個々の経路の両方がBGPで通知されます。集約経路の取り込み時に適用するルートマップを指定することもできます。

`ADD BGP AGGREGATE=10.0.0.0/12 SUMMARY=YES ↓
ADD BGP AGGREGATE=172.16.0.0/12 SUMMARY=YES ROUTEMAP=set_aggr_attr ↓
`

■ BGPピアの指定はADD BGP PEERコマンドで行います。PEERにピアのIPアドレスを、REMOTEASにピアの所属ASを指定してください。REMOTEASと自AS番号が違うならE-BGPピア（外部ピア）、同じならI-BGPピア（内部ピア）となります。ピアを追加した直後は無効（IDLE）状態です。その他の設定を行った後、ENABLE BGP PEERコマンドでセッションを開始してください。

`ADD BGP PEER=10.10.10.2 REMOTEAS=65002 ↓
`

■ BGPピアの有効・無効（BGPセッションの開始・切断）はENABLE BGP PEERコマンド、DISABLE BGP PEERコマンドで行います。ADD BGP PEERコマンドで追加したばかりのピアは無効状態であり、ENABLE BGP PEERコマンドを実行するまでセッションは張られません。

`ENABLE BGP PEER=10.10.10.2 ↓
ENABLE BGP PEER=ALL ↓
`

■ BGPピア固有の設定パラメーターはSET BGP PEERコマンドで変更します。

`SET BGP PEER=10.10.10.2 OUTPATHFILTER=1 ↓
`

変更内容を反映するには、RESET BGP PEERコマンドをSOFTパラメーター付きで実行してください（ソフトリセット）。

`RESET BGP PEER=10.10.10.2 SOFT=ALL ↓
`

> Note - SOFTパラメーターを付けずに実行すると、BGPセッションがいったん切断されるのでご注意ください。SOFTパラメーターを付けた場合は、BGPセッションをクローズせずに経路情報を更新します。

また、ENABLE BGP AUTOSOFTUPDATEコマンドで自動ソフトリセットを有効にしている場合は、SET BGP PEERコマンドの実行後ただちに変更が反映されます。自動ソフトリセットは、デフォルトでは無効です。

`ENABLE BGP AUTOSOFTUPDATE ↓
`

■ BGPのグローバル設定パラメーターは、SET BGPコマンドで変更できます。たとえば、E-BGPセッションで通知する経路のデフォルトMED値を10にするには、次のようにします。なお、本製品はデフォルトではMED属性を付加しません。

`SET BGP MED=10 ↓
`

■ 本製品はBGP4-MIBをサポートしています。SNMPの設定をしておけば、ネットワーク管理ステーションからBGPに関するMIB情報を引き出すことができます。SNMPの設定については、「運用・管理」/「SNMP」をご覧ください。

経路のフィルタリング

BGP-4の運用においては、どの経路情報を受け入れるかといったフィルタリング機能、また、特定の経路情報に付加的情報を追加するポリシー設定機能が重要な意味を持ちます。本製品のBGP-4実装には、次に示すフィルタリング/ポリシー設定機能が用意されています。

表 4
名称 | 比較対象 | 単独使用 | MATCH節 | 許可・破棄 | 属性設定 | 備考
ASパスリスト | AS_PATH属性 | ○ | ○ | ○ | △ | ADD IP ASPATHLISTコマンドで作成。単独使用時は、ADD BGP PEERコマンドのINPATHFILTER、OUTPATHFILTERで指定。マッチ条件として使うときは、ADD IP ROUTEMAPコマンドのMATCH ASPATHで指定
プレフィックスフィルター | プレフィックス | ○ | × | ○ | × | ADD IP FILTERコマンドで作成。ADD BGP PEERコマンドのINFILTER、OUTFILTERで指定
コミュニティーリスト | COMMUNITIES属性 | × | ○ | △ | △ | ADD IP COMMUNITYLISTコマンドで作成。ADD IP ROUTEMAPコマンドのMATCH COMMUNITYで指定
プレフィックスリスト | プレフィックス / 長さ | × | ○ | △ | △ | ADD IP PREFIXLISTコマンドで作成。ADD IP ROUTEMAPコマンドのMATCH PREFIXLISTで指定
ルートマップ | 各種（後述） | ○ | × | ○ | ○ | ADD IP ROUTEMAPコマンドで作成。ADD BGP PEERコマンドのINROUTEMAP、OUTROUTEMAPで指定

記号で示されている各欄の意味は次のとおりです（○ = 可能。△ = ルートマップと併用することで可能。× = 不可能）。

- 「単独使用」：該当機能を単独で使用できるかどうか
- 「MATCH節」: 該当機能をルートマップのマッチ条件として使用できるかどうか。
- 「許可・破棄」: 該当機能で経路情報のフィルタリング（許可・破棄）が可能かどうか。
- 「属性設定」: 該当機能で経路情報の属性設定が可能かどうか。

> Note - フィルタリングにおける「許可」とは、他のルーターから受信した経路情報を受け入れること、また、他のルーターに経路情報を通知することを意味しています。同様に「拒否」とは、他のルーターから受信した経路情報を受け入れずに破棄すること、また、他のルーターに特定の経路情報を通知しないことを意味します。

また、BGP経由で学習した経路をルーターの経路表に取り込むときにも、一定の基準にしたがって経路の選択が行われます。

経路選択プロセス

BGP-4経由で学習した経路情報の中には、同じプレフィックスを持つものが複数存在する可能性があります。一般的にこれは、該当プレフィックス宛ての経路が複数あることを意味しますが、この場合どの経路をルーターの経路表に取り入れるかが重要になってきます。
あるプレフィックスへの経路が1つしか存在しない場合は、その経路を使用します。しかし、複数の経路が存在する場合は、次の流れにしたがって1つの経路に絞ります。

1. LOCAL_PREF属性の大きい経路を優先。
   E-BGP経由で学習した経路やIGP・静的設定で学習した経路の場合は、自ら計算した値を用いる。I-BGP経由で学習した経路の場合は、LOCAL_PREF属性の値を用いる。
2. 経路のソース（起源）。次の順序で優先。
   (1) 手動で取り込んだ経路
   (2) 集約経路エントリーから学習した経路
   (3) その他の方法で学習した経路（I-BGPピア、E-BGPピア、コンフェデレーションE-BGPピア（C-BGPピア））
3. AS_PATH属性の短い経路を優先。
4. ORIGIN属性。次の順序で優先。
   (1) IGP
   (2) EGP
   (3) INCOMPLETE
5. MULTI_EXIT_DISC属性の小さい経路を優先。
6. AS_PATH属性の内容。次の順序で優先。
   (1) AS_PATH属性に外部のAS番号だけが含まれている経路
   (2) AS_PATH属性にASコンフェデレーションのAS番号が含まれている経路
7. NEXT_HOP属性へのコストが小さい経路を優先。
8. 学習元BGPピアのルーターIDが小さい経路を優先。
9. CLUSTER_LIST属性の短い経路を優先。
10. 学習元BGPピアのIPアドレス（BGPセッションで使用しているアドレス）が小さい経路を優先。

ASパスリスト

ASパスリストは、UPDATEメッセージのAS_PATH属性に基づいて、経路情報を許可するか拒否するかを決定するフィルターです。
この機能を使うと、特定のAS経由で通知された経路情報を送受信しないよう設定したり、特定のASを起源とする経路情報を送受信しないよう設定したりすることができます。
また、ASパスリストをルートマップと組み合わせることにより、特定のAS経由で通知された経路情報の属性を変更して、なんらかの「経路制御ポリシー」を与えることもできます。
ASパスリストは、ADD IP ASPATHLISTコマンドで作成し、ADD BGP PEERコマンド、SET BGP PEERコマンドのINPATHFILTER、OUTPATHFILTERパラメーターでBGPピアごとに適用します。また、ルートマップと併用する場合は、ADD IP ROUTEMAPコマンドのMATCH ASPATHパラメーターでルートマップエントリーの選別条件として指定します。
■ E-BGPピア「10.10.10.2」に対し、自AS起源の経路（ローカル経路）だけを通知するには、次のようにします。

1. ASパスリスト「1」を作成し、AS_PATH属性が空のUPDATEメッセージだけを許可するエントリーを追加します。1つでもエントリーを持つASパスリストは、末尾にすべて破棄の暗黙のエントリーが存在するため、この例ではASパスが空でないUPDATEはすべて破棄されます。

   `ADD IP ASPATHLIST=1 INCLUDE="^$" ↓
   `
2. BGPピア「10.10.10.2」（所属ASは65002）を追加します。OUTPATHFILTERパラメーターにASパスリスト「1」を指定し、ASパスが空のUPDATEメッセージ（ローカル経路）だけを送信するよう設定します。

   `ADD BGP PEER=10.10.10.2 REMOTEAS=65002 OUTPATHFILTER=1 ↓
   `

■ E-BGPピア「10.10.10.2」とのBGPセッションにおいて、AS 65100を起源とするUPDATEメッセージを受信しないよう設定するには、次のようにします。

1. ASパスリスト「1」を作成し、AS_PATH属性の末尾が「65100」のUPDATEメッセージを拒否するエントリーを追加します（AS_PATH属性はUPDATEメッセージが通過してきたASのリストで、リストの末尾（右端）に起源ASが置かれます）。

   `ADD IP ASPATHLIST=1 EXCLUDE="65100$" ↓
   `
2. ASパスリスト「1」にすべてのUPDATEメッセージを許可するエントリーを追加します。1つでもエントリーを持つASパスリストは、末尾にすべて破棄の暗黙のエントリーが存在するので注意してください。

   `ADD IP ASPATHLIST=1 INCLUDE=".*" ↓
   `
3. BGPピア「10.10.10.2」（所属ASは65002）を追加します。INPATHFILTERパラメーターにASパスリスト「1」を指定し、該当ピアから受信したUPDATEメッセージのうち、AS「65100」を起源とするものだけは受け取らないよう設定します。

   `ADD BGP PEER=10.10.10.2 REMOTEAS=65002 INPATHFILTER=1 ↓
   `

■ ASパスリストでは、UPDATEメッセージに含まれるAS_PATH属性とのマッチングに簡易的な正規表現（Regular Expression）を使用できます。正規表現とは、特殊文字（メタ文字）を使って文字列を一定の「パターン」として表すための表記法で、ファイル名指定に使う「ワイルドカード」といくらか似ています。
正規表現には様々な方言がありますが、ASパスリストで使用できるのはASパスの表現に特化した限定版です。

表 5：ASパス正規表現の構成要素
構成要素 | 意味 | 例
^ | ASパスの先頭にマッチ | ^65010（ASパスの先頭が65010のときにマッチ）
$ | ASパスの末尾にマッチ | 65100$（ASパスの末尾が65100のときにマッチ）
（スペース） | 個々のASを区切る | 65001 65002（ASパスに「65001 65002」という並びが含まれればマッチ）
（AS番号） | 個々のASを表す（単独の数字ではないことに注意） | 65123（ASパスにAS「65123」が含まれていればマッチ）
. | 任意のAS番号にマッチ。*や+と組み合わせて使うことが多い | 65010 . 65030（65010と65030の間に任意のAS番号がくる場合にマッチ）
* | 直前の正規表現が0個以上続く場合に最長マッチ | .*（空のASパスを含むすべてのASパスにマッチ）
+ | 直前の正規表現が1個以上続く場合に最長マッチ | .+（空でないすべてのASパスにマッチ）

> Note - ASパス正規表現では、スペースとメタ文字を除き、AS番号が最小単位となります。したがって、「1」という正規表現はAS「1」にマッチしますが、AS「12」にはマッチしません。また、「.」という正規表現はAS「1」、「12」、「65001」のいずれにもマッチします。

以下、正規表現の例をいくつか示します。

- 空のASパスにマッチ（例：「」のみ）

  `^$
  `
- 空を含むすべてのASパスにマッチ（例：「」「65111」「65111 65222」など）

  `.*
  `
- 空でないすべてのASパスにマッチ（例：「65001」「65002 65003」など）

  `.+
  `
- ASを1つだけ含むASパスにマッチ（例：「65001」「65002」など）

  `^.$
  `
- ASを2つだけ含むASパスにマッチ（例：「65001 65002」「65002 65100」など）

  `^. .$
  `
- 先頭が「65200」のASパスにマッチ（例：「65200」「65200 65001 65002」など）

  `^65200
  `
- 末尾が「65012」のASパスにマッチ（例：「65012」「65001 65002 65012」など）

  `65012$
  `
- 末尾に「65300」、「65310」、「65330」をこの順番で含むASパスにマッチ（例：「65300 65310 65330」「65100 65300 65310 65330」など）

  `65300 65310 65330$
  `
- AS「65110」だけからなるASパスにマッチ（例：「65110」のみ）

  `^65110$
  `
- AS「65300」を含むASパスにマッチ（例：「65001 65300」「65300」など）

  `65300
  `
- AS「65300」、「65310」、「65330」をこの順番で含むASパスにマッチ（例：「65300 65310 65330」「65299 65300 65310 65330 65432」など）

  `65300 65310 65330
  `
- AS「65300」、「65330」の間に任意のAS番号が1つだけ入るパスにマッチ（例：「65300 65311 65330」など）

  `65300 . 65330
  `
- AS「65300」、「65330」の間に1個以上の任意のAS番号がくるパスにマッチ（例：「65300 65311 65330」「65300 65311 65324 65330」など）

  `65300 .+ 65330
  `

■ ASパスリストの内容を表示するには、SHOW IP ASPATHLISTコマンドを使います。

`SHOW IP ASPATHLIST ↓
SHOW IP ASPATHLIST=1 ↓
`

■ 特定ピアとのBGPセッションに適用されるASパスリストの情報は、SHOW BGP PEERコマンドで確認できます。「Filtering」セクションの「In path filter」（受信時）、「Out path filter」（送信時）をご覧ください。

`SHOW BGP PEER=10.10.10.2 ↓
`

プレフィックスフィルター

プレフィックスフィルターは、UPDATEメッセージに含まれる宛先ネットワークプレフィックス（NLRIフィールドの内容）の値（プレフィックスのみ。プレフィックス長には関知しない）に基づいて、経路情報を許可するか拒否するかを決定するフィルターです。
この機能を使うと、特定のプレフィックス宛ての経路情報だけを受け取ったり、特定のプレフィックス宛ての経路情報だけを通知したりすることができます。

> Note - プレフィックスフィルターは、経路エントリーの「プレフィックス長」には関知しません。経路エントリーの「プレフィックス長」を意識したフィルタリングを行うには、プレフィックスリスト（ADD IP PREFIXLISTコマンド）とルートマップ（ADD IP ROUTEMAPコマンド）を組み合わせて使用してください。

プレフィックスフィルターは、ADD IP FILTERコマンドで作成（フィルター番号300〜399）し、ADD BGP PEERコマンド、SET BGP PEERコマンドのINFILTER、OUTFILTERパラメーターでBGPピアごとに適用します。
■ 「10.10.10.1」とのBGPセッションにおいて、先頭が「172.20」のプレフィックスだけを通知するようにするには、次のようにします。これにより、自AS宛てでないトラフィックが自ASに流れ込むことを防ぎます。

1. IPプレフィックスフィルター「300」を作成し、UPDATEメッセージのNLRIフィールドから、先頭が「172.20.0.0/16」のプレフィックスだけを許可し、それ以外は除去するように設定します。プレフィックスフィルターには、フィルター番号300〜399を使います。

   `ADD IP FILTER=300 SOURCE=172.20.0.0 SMASK=255.255.0.0 ACTION=INCLUDE ↓
   `
   SMASKパラメーターは、SOURCEパラメーターの指定値とプレフィックスを比較するときに、どの部分（ビット）を比較するか指定するものです。この例（SMASK=255.255.0.0）では、先頭16ビットを比較します。
   なお、先頭が「172.20」でないプレフィックスは、暗黙の拒否エントリーによりすべて除去（EXCLUDE）されます。
2. BGPピア「10.10.10.1」（所属ASは65001）を追加します。OUTFILTERパラメーターにプレフィックスフィルター「300」を指定し、該当ピアに送信するUPDATEメッセージには「172.20」で始まるプレフィックスだけが含まれるようにします。

   `ADD BGP PEER=10.10.10.1 REMOTEAS=65001 OUTFILTER=300 ↓
   `

■ 「1.2.2.2」とのBGPセッションにおいて、先頭が「172.16」のプレフィックスを受信しないよう設定するには、次のようにします。

1. IPプレフィックスフィルター「300」を作成し、UPDATEメッセージのNLRIフィールドから、先頭が「172.16」のプレフィックスを除去するエントリーを追加します。プレフィックスフィルターには、フィルター番号300〜399を使います。

   `ADD IP FILTER=300 SOURCE=172.16.0.0 SMASK=255.255.0.0 ACTION=EXCLUDE ↓
   `
   SMASKパラメーターは、SOURCEパラメーターの指定値とプレフィックスを比較するときに、どの部分（ビット）を比較するか指定するものです。この例（SMASK=255.255.0.0）では、先頭16ビットを比較します。
2. IPプレフィックスフィルター「300」にすべてのプレフィックスを通過させるエントリーを追加します。IPプレフィックスフィルターの末尾には、すべてのプレフィックスを除去する暗黙のエントリーが存在するので注意してください。

   `ADD IP FILTER=300 SOURCE=0.0.0.0 ACTION=INCLUDE ↓
   `
3. BGPピア「1.2.2.2」（所属ASは65112）を追加します。INFILTERパラメーターにプレフィックスフィルター「300」を指定し、該当ピアから受信したUPDATEメッセージから「172.16」で始まるプレフィックスを削除するよう設定します。

   `ADD BGP PEER=1.2.2.2 REMOTEAS=65112 INFILTER=300 ↓
   `

■ IPプレフィックスフィルターの内容を表示するには、SHOW IP FILTERコマンドを使います。

`SHOW IP FILTER ↓
SHOW IP FITLER=300 ↓
`

■ 特定ピアとのBGPセッションに適用されるIPプレフィックスフィルターの情報は、SHOW BGP PEERコマンドで確認できます。「Filtering」セクションの「In filter」（受信時）、「Out filter」（送信時）をご覧ください。

`SHOW BGP PEER=10.10.10.1 ↓
`

■ プレフィックスフィルターは、経路エントリーの「プレフィックス長」には関知しません。経路エントリー「prefix」、「prefixlen」に対して、プレフィックスフィルター「SOURCE」、「SMASK」が存在する場合、(prefix & SMASK) == (SOURCE & SMASK) が真のときにマッチとなります（ここで「&」はビットごとのAND演算、「==」は等号を示す）。たとえば、SOURCE=192.168.10.0 SMASK=255.255.255.0のプレフィックスフィルターは、192.168.10.0/24、192.168.10.0/28、192.168.10.128/25のいずれにもマッチします。
経路エントリーの「プレフィックス長」を意識したフィルタリングを行うには、プレフィックスリスト（ADD IP PREFIXLISTコマンド）とルートマップ（ADD IP ROUTEMAPコマンド）を組み合わせて使用してください。
■ プレフィックスフィルターの末尾には、すべてのプレフィックスを破棄（EXCLUDE）する暗黙のエントリーが存在するので注意してください。

コミュニティーリスト

コミュニティーリストは、UPDATEメッセージのCOMMUNITIES属性に基づいて、経路情報を許可するか拒否するかを決定するフィルターです。
COMMUNITIES属性は経路制御ポリシーを実施するために設けられた属性で、同じ性質を持つ経路をグループ化するために使用されます。
コミュニティーリストはルートマップと組み合わせて使用するもので、特定のCOMMUNITIES属性を持つ経路情報を受け取らないように設定したり、特定のCOMMUNITIES属性を持つ経路情報になんらかの「経路制御ポリシー」を与えるために使用できます。
コミュニティーリストは、ADD IP COMMUNITYLISTコマンドで作成し、ADD IP ROUTEMAPコマンドのMATCH COMMUNITYパラメーターでルートマップエントリーの選別条件として指定します。
■ コミュニティーリスト「1」を作成し、UPDATEメッセージのCOMMUNITIES属性にコミュニティー「65001:10000」が含まれている場合にマッチするよう設定する。

`ADD IP COMMUNITYLIST=1 INCLUDE=65001:10000 ↓
`

> Note - コミュニティーリストは、必ずルートマップと組み合わせて使用します。ADD IP COMMUNITYLISTコマンドでリストを作成しただけでは、何も行われません。

プレフィックスリスト

プレフィックスリストは、UPDATEメッセージに含まれる宛先ネットワークプレフィックス（NLRIフィールドの内容）の値（プレフィックスとプレフィックス長）に基づいて、経路情報を許可するか拒否するかを決定するフィルターです。
プレフィックスリストはルートマップと組み合わせて使用するもので、特定のプレフィックス宛ての経路情報だけを受け取ったり、特定のプレフィックス宛ての経路情報だけを通知したりすることができます。また、特定のプレフィックス宛ての経路情報に対してのみ、属性を設定するようなことが可能です。
プレフィックスリストは、ADD IP PREFIXLISTコマンドで作成し、ADD IP ROUTEMAPコマンドのMATCH PREFIXLISTパラメーターでルートマップエントリーの選別条件として指定します。
■ プレフィックスリスト「inbound」を作成し、プレフィックスが「10.98.0.0」、プレフィックス長が16〜24ビットの経路にマッチするアクション「MATCH」のエントリー「1」を作成する。

`ADD IP PREFIXLIST=inbound ENTRY=1 ACTION=MATCH PREFIX=10.98.0.0 MASKLENGTH=16-24 ↓
`

> Note - プレフィックスリストは、必ずルートマップと組み合わせて使用します。ADD IP PREFIXLISTコマンドでリストを作成しただけでは、何も行われません。

■ プレフィックスリストの内容を表示するには、SHOW IP PREFIXLISTコマンドを使います。

`SHOW IP PREFIXLIST ↓
SHOW IP PREFIXLIST=inbound ↓
`

■ プレフィックスリストの末尾には、すべてのプレフィックスにマッチするアクション「NOMATCH」の暗黙のエントリーが存在しています。

ルートマップ

ルートマップは、さまざまな基準に基づいて経路を選別し、該当経路を許可・破棄したり、属性を書き換えたりするための機能です。おもに経路制御ポリシーを実施するために使用します。
ルートマップは、経路エントリーと照合するためのMATCH節（0〜1個）、マッチ時のアクション（INCLUDEかEXCLUDE）、アクションがINCLUDEだった場合にマッチした経路の属性を変更するためのSET節（0〜複数個）からなります。
MATCH節では、以下の情報を条件として使用できます。

- AS_PATH属性（ASパスリストで指定）
- COMMUNITIES属性（コミュニティーリストで指定）
- NEXT_HOP属性
- ORIGIN属性
- NLRIフィールド内のプレフィックス（プレフィックスリストで指定）

また、SET節では以下の情報を変更できます。

- AS_PATH属性（AS番号の追加）
- COMMUNITIES属性
- LOCALPREF属性
- MED属性
- ORIGIN属性

ルートマップはADD IP ROUTEMAPコマンドで作成します。ルートマップの設定は、次のステップで行います。

1. （必要ならば）UPDATEメッセージを選別するためのASパスリスト、コミュニティーリスト、プレフィックスリストを作成します。
2. ルートマップエントリーを作成し、アクションを指定します。
3. 手順2で作成したエントリーに対し、MATCH節を追加して条件を指定します。このとき、（必要に応じて）ASパスリストやコミュニティーリスト、プレフィックスリストの番号を指定します。なお、MATCH節がないエントリーは、すべての経路にマッチします。
4. 手順2で作成したエントリーのアクションがINCLUDEの場合、（必要ならば）該当エントリーにSET節を追加して属性変更の設定を追加します。

作成したルートマップは、次に示す箇所に適用することで初めて効果を発揮します。

- BGPピアに経路を通知する直前（ADD BGP PEERコマンド、SET BGP PEERコマンドのOUTROUTEMAPパラメーター）
- BGPピアから経路を受信した直後（ADD BGP PEERコマンド、SET BGP PEERコマンドのINROUTEMAPパラメーター）
- 経路をBGPに登録するとき（ADD BGP NETWORKコマンドコマンドのROUTEMAPパラメーター）
- 経路を集約するとき（ADD BGP AGGREGATEコマンド、SET BGP AGGREGATEコマンドのROUTEMAPパラメーター）
- 静的経路やIGP経路をBGPにインポートするとき（ADD BGP IMPORTコマンド、SET BGP IMPORTコマンドのROUTEMAPパラメーター）
- BGP経路をルーターの経路表に登録するとき（SET BGPコマンドのTABLEMAPパラメーター）

以下、ルートマップのサンプルをいくつか示します。
■ コミュニティー値「65001:100」を設定するルートマップ「comm100」を作成します。エントリーは1個だけです。この例のようにMATCH節のないエントリーはすべてにマッチします。

`ADD IP ROUTEMAP=comm100 ENTRY=1 ACTION=INCLUDE ↓
ADD IP ROUTEMAP=comm100 ENTRY=1 SET COMMUNITY=65001:100 ↓
`

ローカルプレフィックス「172.16.0.0/16」にコミュニティー値「65001:100」を設定するには、作成したルートマップを使って次のようにします。

`ADD BGP NETWORK=172.16.0.0/16 ROUTEMAP=comm100 ↓
`

■ MED値「1000」をセットするルートマップ「med1000」を作成します。エントリーは1個だけです。この例のようにMATCH節のないエントリーはすべてにマッチします。

`ADD IP ROUTEMAP=med1000 ENTRY=1 ACTION=INCLUDE ↓
ADD IP ROUTEMAP=med1000 ENTRY=1 SET MED=1000 ↓
`

BGPピア「10.2.1.1」（AS番号65020）に通知する経路すべてにMED値「1000」を設定するには、作成したルートマップを使って次のようにします。

`ADD BGP PEER=10.2.1.1 REMOTEAS=65020 OUTROUTEMAP=med1000 ↓
`

> Note - すでにBGPピアとセッションが張られている場合は、SET BGP PEERコマンドのOUTROUTEMAPパラメーターでルートマップを指定し、その後RESET BGP PEERコマンドをSOFTパラメーター付きで実行してください（ソフトリセット）。なお、ENABLE BGP AUTOSOFTUPDATEコマンドで自動ソフトリセット機能を有効化している場合は、自動的に経路情報が更新されるので、RESET BGP PEERコマンドは不要です。

■ コミュニティー値「65003:1234」を持つ経路にMED値「200」を付加し、AS_PATH属性に自AS番号「65003」を2個追加するルートマップ「med_n_prepend」を作成します。この例ではMATCH節でコミュニティーリストを使っています。MATCH COMMUNITYパラメーターにコミュニティー値そのものではなく、コミュニティーリストの番号を指定している点に注意してください。

`ADD IP COMMUNITYLIST=1 INCLUDE=65003:1234 ↓
ADD IP ROUTEMAP=med_n_prepend ENTRY=1 ACTION=INCLUDE ↓
ADD IP ROUTEMAP=med_n_prepend ENTRY=1 MATCH COMMUNITY=1 ↓
ADD IP ROUTEMAP=med_n_prepend ENTRY=1 SET MED=200 ↓
ADD IP ROUTEMAP=med_n_prepend ENTRY=1 SET ASPATH=65003,65003 ↓
`

作成したルートマップ「med_n_prepend」を、BGPピア「10.2.1.1」（AS番号65020）に通知する経路に適用するには次のようにします。

`ADD BGP PEER=10.2.1.1 REMOTEAS=65020 OUTROUTEMAP=med_n_prepend ↓
`

> Note - すでにBGPピアとセッションが張られている場合は、SET BGP PEERコマンドのOUTROUTEMAPパラメーターでルートマップを指定し、その後RESET BGP PEERコマンドをSOFTパラメーター付きで実行してください（ソフトリセット）。なお、ENABLE BGP AUTOSOFTUPDATEコマンドで自動ソフトリセット機能を有効化している場合は、自動的に経路情報が更新されるので、RESET BGP PEERコマンドは不要です。

■ 「10.10.10.1」とのBGPセッションにおいて、プレフィックス「172.16.20.0/24」のAS_PATH属性に自AS番号（65002）を2個追加します。これにより、自ASを経由して「172.16.20.0/24」に向かう経路が高コストであることを他ASに通知し、結果として「172.16.20.0/24」宛てのトラフィックが自ASに流れ込む可能性を低くします。

1. ルートマップ「mark_it_slow」を作成し、すべてにマッチするエントリー「1」を作成します（MATCH節のないエントリーはすべてにマッチ）。また、属性設定のためのSET節を追加します。ここではマッチした経路にコミュニティー値「65002:1000」を設定し、この値を「自AS番号を2個追加すべき経路」という意味にします。

   `ADD IP ROUTEMAP=mark_it_slow ENTRY=1 ACTION=INCLUDE ↓
   ADD IP ROUTEMAP=mark_it_slow ENTRY=1 SET COMMUNITY=65002:1000 ↓
   `
2. BGPで通知するネットワークとして「172.16.20.0/24」を追加します。このとき、ルートマップ「mark_it_slow」を適用するよう指定します。これにより、プレフィックス「172.16.20.0/24」がBGP経路に取り込まれるときに、COMMUNITIES属性「65002:1000」が設定されます。

   `ADD BGP NETWORK=172.16.20.0/24 ROUTEMAP=mark_it_slow ↓
   `
3. コミュニティー「65002:1000」に属する経路にマッチするコミュニティーリスト「1」を作成します。

   `ADD IP COMMUNITYLIST=1 INCLUDE=65002:1000 ↓
   `
4. BGPピア「10.10.10.1」とのセッションにおいて、経路を通知するときに適用するルートマップ「add_myasn_twice」を作成し、コミュニティー「65002:1000」を持つ経路にマッチするエントリー「1」を作成します。COMMUNITYパラメーターには、前の手順で作成したコミュニティーリスト「1」を指定します。

   `ADD IP ROUTEMAP=add_myasn_twice ENTRY=1 ACTION=INCLUDE ↓
   ADD IP ROUTEMAP=add_myasn_twice ENTRY=1 MATCH COMMUNITY=1 ↓
   `
5. ルートマップ「add_myasn_twice」のエントリー「1」に自AS番号（65002）を追加するSET節を追加します。

   `ADD IP ROUTEMAP=add_myasn_twice ENTRY=1 SET ASPATH=65002,65002 ↓
   `
6. BGPピア「10.10.10.1」（所属ASは65001）を追加します。OUTROUTEMAPパラメーターにルートマップ「add_myasn_twice」を指定し、該当ピアに送信する経路情報のうち、コミュニティー「65002:1000」に属するものにAS_PATHを追加します。

   `ADD BGP PEER=10.10.10.1 REMOTEAS=65001 OUTROUTEMAP=add_myasn_twice ↓
   `

I-BGPフルメッシュの回避

AS内部でBGP-4を使用する環境、すなわちI-BGP環境においては、経路情報がループすることを防ぐため、すべてのBGPスピーカーがフルメッシュでセッションを張る必要があります。このため、BGPスピーカーの数が N のとき、I-BGPセッション数 nSess は次のようになります。

`nSess = N × (N - 1) ÷ 2
`

たとえば、BGPスピーカーが4台のとき、セッション数は 6 （= 4 × (4 - 1) ÷ 2）ですが、8台のときは 28 （= 8 × (8 - 1) ÷ 2）となります。
このように、BGPスピーカーの数が少ないうちはそれほど問題になりませんが、数が増えてくると、システム資源（メモリーやCPU）や設定作業にかかる負荷が非常に大きくなります。
この問題を回避するための手段として、本製品は「ルートリフレクション」と「ASコンフェデレーション」をサポートしています。以下、それぞれについて解説します。

ルートリフレクション

ルートリフレクションは、「ルートリフレクター」（RR）と呼ばれる特殊な役割のI-BGPスピーカーを導入して、I-BGPセッション数を削減するための仕組みです（RFC2796）。
次図の左側は通常のフルメッシュ構成を示しています。ここでは、I-BGPスピーカーが5台あるため、合計10本のBGPセッションが必要になります。ここで、5台のうちの1台をRRにすると、右側のような構成となり、必要なセッション数は4本に削減されます。

通常のI-BGPスピーカーは、他のI-BGPピアから学習した経路を別のI-BGPピアに通知することができませんが、RRとして設定されたルーターにはこれ（I-BGPで学習した経路の再通知）が許可されます。RRは、他のI-BGPピアを次の2種類に分けて扱います。

- クライアントピア（CP）: RRに依存しており、RR経由で経路情報の送受信を行っているI-BGPピア。RRは、CPから受信した経路を他のCPおよびNCPに再通知（リフレクト）します。
- ノンクライアントピア（NCP）: RRに依存していない通常のI-BGPピア。RRは、NCPから受信した経路をCPにだけ再通知（リフレクト）します。

RRが経路を再通知するときは、該当経路にORIGINATOR_ID属性が付加されているかどうかを確認し、付加されていなければ通知元のBGP識別子（ルーターID）を値としてこれを追加します。
ルートリフレクションでは、RRとそれに依存するCPで「クラスター」と呼ばれるグループを構成します。各クラスターは4バイトのクラスターID（通常はRRのBGP識別子となる）で識別されます。クラスター外部のBGPスピーカー（NCP）からは、クラスターは1つの大きなNCPとしか意識されないことになります。

RRが経路を再通知するときは、該当経路にCLUSTER_LIST属性が付加されているかどうかを確認し、付加されていなければ自身のクラスターIDを値としてこれを追加します。すでにCLUSTER_LIST属性が付加されていたときは、自身のクラスターIDが含まれていないかどうかを確認し、含まれている場合は経路がループしているとみなして該当経路を破棄します。自身のクラスターIDが含まれていない場合は、これを追加して再通知します。
■ ルートリフレクションを使用するには、RRとして動作させるルーター上でBGPピアを指定するとき（ADD BGP PEERコマンド、SET BGP PEERコマンド）、CLIENTパラメーターで該当ピアがCPであるかNCPであるかを指定します。

- ピアがCPのときは、CLIENT=YESを指定します。

  `ADD BGP PEER=172.28.28.7 REMOTEAS=65001 CLIENT=YES ↓`
- ピアがNCPのときは、CLIENT=NOを指定します（CLIENTパラメーター省略時はCLIENT=NOと見なされるため、実際にはCLIENT=NOを指定する必要はありません）

  `ADD BGP PEER=172.28.28.8 REMOTEAS=65001 CLIENT=NO ↓`

> Note - ルートリフレクションに対応している必要があるのはRRだけです。RR以外のCP、NCPは通常のI-BGPの動作をするだけなので、RRをピアとして指定するときにも特殊な設定は必要ありません（デフォルトのCLIENT=NOでよい）。また、CP、NCPは、ルートリフレクションに対応していない機器でもかまいません。

> Note - CLIENTパラメーターはI-BGPピアの設定時にだけ意味を持ちます。

■ RRとして動作している場合、デフォルトではクラスターIDとして自身のBGP識別子（ルーターID）を使います。通常はこれで問題ありませんが、次図の右側の構成のようにクラスター内に複数のRRを置いて冗長性を確保する場合は、クラスター内のすべてのRRに同じクラスターID（いずれかのRRのBGP識別子）を設定する必要があります。これには、SET BGPコマンドのCLUSTERパラメーターを使います。

`SET BGP CLUSTER=172.28.28.1 ↓`

クラスターIDの設定はSHOW BGPコマンドで確認できます。「Cluster ID」欄に「Not defined」と表示されている場合は、デフォルトの設定（未指定）であることを示しています。この場合は自身のBGP識別子が使われます。「Cluster ID」欄に具体的なIDが表示されている場合は、その値が使われます。

`SHOW BGP ↓`

■ ルートリフレクションの設定は、SHOW BGP PEERコマンドでピアごとに確認します。「Role」欄に「Client」と表示されている場合、該当ピアはCPであり、自身は該当ピアのRRとして動作しています。「Non-Client」と表示されている場合、該当ピアはNPです。また、「eBGP」や「eBGP Peer」と表示されている場合、該当ピアはE-BGPピアです。

`SHOW BGP PEER ↓
SHOW BGP PEER=172.28.28.7 ↓
`

ASコンフェデレーション

ASコンフェデレーションは、大きなASを複数の「サブAS」に分割することで、I-BGPセッション数を削減するための仕組みです（RFC3065）。
次図の左側は、あるAS（65001）内における通常のフルメッシュ構成を示しています。ここでは、I-BGPスピーカーが5台あるため、合計10本のBGPセッションが必要になります。ここで、AS 65001を2つのサブAS「65101」と「65102」に分割し、全体をASコンフェデレーション「65001」として設定すると、右側のような構成となり、必要なセッション数は5本に削減されます。

サブAS「65101」「65102」間は、コンフェデレーションE-BGP（C-BGP）と呼ばれる特殊なE-BGPセッションで接続しています。サブASはコンフェデレーションの中からしか見えず、コンフェデレーションの外部（図ではルーターF）からは単一のAS（ここではAS 65001）として見えます。
■ ASコンフェデレーションを使用するために必要な設定項目を示します。

> Note - ASコンフェデレーションを使用する場合は、コンフェデレーション内のすべてのBGPスピーカーにASコンフェデレーションの設定をする必要があります。

- サブASの番号を自AS番号として設定する（SET IP AUTONOMOUSコマンド）。

  `SET IP AUTONOMOUS=65102 ↓`
- ASコンフェデレーションの番号を指定する（SET BGPコマンドのCONFEDERATIONIDパラメーター）。

  `SET BGP CONFEDERATIONID=65001 ↓`
- ピアを設定するときは次のようにする（ADD BGP PEERコマンド）。
  - ASコンフェデレーション内のピアを指定するときは、REMOTEASパラメーターにピアのサブAS番号を指定する。
    サブAS番号が同じピアは、I-BGPピアとなる。

    `ADD BGP PEER=172.28.28.5 REMOTEAS=65101 ↓`
    サブAS番号が異なるピアを指定する場合は、ADD BGP PEERコマンドのほかに、ADD BGP CONFEDERATIONPEERコマンドを実行して、ピアのサブAS番号を指定する。このようにして設定したピアは、コンフェデレーションE-BGPピア（C-BGPピア）となる。

    `ADD BGP PEER=172.28.29.10 REMOTEAS=65102 ↓
    ADD BGP CONFEDERATIONPEER=65102 ↓
    `
  - ASコンフェデレーション外部のピアを指定するときは、REMOTEASパラメーターにピアのAS番号を指定する。このピアは、E-BGPピアとなる。

    `ADD BGP PEER=10.10.10.2 REMOTEAS=65002 ↓
    `

■ ASコンフェデレーションの設定は、SHOW BGP CONFEDERATIONコマンドで確認できます。

`SHOW BGP CONFEDERATION ↓`

■ SHOW BGP PEERコマンドの「Role」欄には、通常のE-BGPピア、コンフェデレーションE-BGPピア（C-BGPピア）のどちらとも「eBGP Peer」と表示されますが、「Connection type」欄を見れば両者を区別できます。同欄には、E-BGPピアなら「EXTERNAL」、C-BGPピアなら「CONFEDERATION」と表示されます（I-BGPピアなら「INTERNAL」）。

`SHOW BGP PEER ↓
SHOW BGP PEER=172.28.29.10 ↓
`

その他の機能

TCP MD5認証

TCP MD5認証は、TCPのオプション機能であるMD5ダイジェスト認証を利用して、BGPセッションの信頼性・安全性を高めるための機能です（RFC2385）。
■ TCP MD5認証を使用するには、ADD BGP PEERコマンド、SET BGP PEERコマンドのAUTHENTICATIONパラメーターにMD5を指定します。また、PASSWORDパラメーターでパスワード（認証鍵）を指定します。パスワードはピアと同じ値を指定してください。

`ADD BGP PEER=10.10.10.2 REMOTEAS=65002 AUTHENTICATION=MD5 PASSWORD=himitsu ↓
`

■ TCP MD5認証の設定は、SHOW BGP PEERコマンドで確認できます。「Authentication」、「Password」欄をご覧ください。

`SHOW BGP PEER=10.10.10.2 ↓`

プライベートASフィルター

プライベートASフィルターは、UPDATEメッセージの送信時にAS_PATH属性からプライベートAS番号（64512〜65535）を取り除く機能です。
■ プライベートASフィルターを使用するには、ADD BGP PEERコマンドのPRIVATEASFILTERパラメーターでピアごとに設定します。同パラメーターにYESを指定すると、該当ピアに送信するUPDATEメッセージのAS_PATH属性からプライベートAS番号が取り除かれます。

`ADD BGP PEER=10.10.10.2 REMOTEAS=12345 PRIVATEASFILTER=YES ↓`

■ プライベートASフィルターの設定は、SHOW BGP PEERコマンドで確認できます。「Private AS Filter」欄をご覧ください。

`SHOW BGP PEER=10.10.10.2 ↓`

BGPピアテンプレート

BGPピアテンプレートは、同じフィルタリングポリシーを適用する多数のピアとセッションを張る場合に、設定の手間を軽減するための機能です。
フィルタリングポリシーや各種制限値など、通常はピアごとに設定するパラメーターを、「ピアテンプレート」と呼ばれるひな形にまとめておき、個々のピアを指定するときにはパラメーターを提供するテンプレートの番号を指定するようにします。
■ ピアテンプレートを作成するには、ADD BGP PEERTEMPLATEコマンドを使います。

`ADD BGP PEERTEMPLATE=1 INROUTEMAP=common1-in OUTROUTMAP=common1-out ↓
`

■ ピアテンプレートを使用してBGPピアの設定をするには、ADD BGP PEERコマンドのPOLICYTEMPLATEパラメーターにテンプレートの番号を指定します。大部分のパラメーターはテンプレートで指定するため、POLICYTEMPLATE以外に指定できるパラメーターはPEER、REMOTEAS、DESCRIPTION、AUTHENTICATION、PASSWORD、FASTFALLOVER、EHOPSだけとなります。このうち、必須なのはPEERとREMOTEASです。

`ADD BGP PEER=10.10.10.2 POLICYTEMPLATE=1 REMOTEAS=65002 ↓
ADD BGP PEER=10.10.10.3 POLICYTEMPLATE=1 REMOTEAS=65003 ↓
ADD BGP PEER=10.10.10.4 POLICYTEMPLATE=1 REMOTEAS=65004 ↓
`

■ テンプレートによって設定したピアのパラメーターを変更したいときは、該当パラメーターをテンプレートで指定可能かどうかによって、次のいずれかの方法を使います。
該当パラメーターをテンプレートで指定できる場合は、SET BGP PEERTEMPLATEコマンドでテンプレートの設定を変更します。これにより、テンプレートを使用しているすべてのピアの設定が変更されます。

`SET BGP PEERTEMPLATE=1 INROUTEMAP=common1a-in ↓
`

SET BGP PEERコマンドのPOLICYTEMPLATEパラメーターで異なるテンプレートを指定すれば、新しいテンプレートが該当ピアに適用されます。テンプレートを使っていないピアに対して実行した場合は、該当ピアのパラメーターのうちテンプレートで指定可能なものすべてが、テンプレートの設定値で上書きされます。

`SET BGP PEER=10.10.10.2 POLICYTEMPLATE=2 ↓
`

該当パラメーターをテンプレートで指定できない場合は、個々のピアに対してSET BGP PEERコマンドを実行してパラメーターを変更します。

`SET BGP PEER=10.10.10.3 AUTHENTICATION=MD5 PASSWORD=foobarbar ↓
`

■ ピアからテンプレートを取り除くには、SET BGP PEERコマンドのPOLICYTEMPLATEパラメーターを「POLICYTEMPLATE=」のように指定します。

`SET BGP PEER=10.10.10.4 POLICYTEMPLATE= ↓
`

このようにしてテンプレートを解除した場合、テンプレートが提供していたパラメーターはそのまま引き継がれます（ADD BGP PEERコマンドで指定したのと同じ扱い）。テンプレートを解除した後は、SET BGP PEERコマンドで通常どおり各パラメーターを変更できます。

`SET BGP PEER=10.10.10.4 INFILTER=300 OUTFILTER=301 ↓
`

■ ピアの変更を反映するには、RESET BGP PEERコマンドをSOFTパラメーター付きで実行してください（ソフトリセット）。

`RESET BGP PEER=ALL SOFT=ALL ↓
`

> Note - SOFTパラメーターを付けずに実行すると、BGPセッションがいったん切断されるのでご注意ください。SOFTパラメーターを付けた場合は、BGPセッションをクローズせずに経路情報を更新します。

また、ENABLE BGP AUTOSOFTUPDATEコマンドで自動ソフトリセットを有効にしている場合は、パラメーターの変更後、ただちに変更が反映されます。自動ソフトリセットは、デフォルトでは無効です。

`ENABLE BGP AUTOSOFTUPDATE ↓
`

■ ピアテンプレートの設定内容は、SHOW BGP PEERTEMPLATEコマンドで確認できます。

`SHOW BGP PEERTEMPLATE ↓
SHOW BGP PEERTEMPLATE=1 ↓
`

■ 特定のピアにどのテンプレートが適用されているかは、SHOW BGP PEERコマンドで確認できます。「Policy Template」欄をご欄ください。

`SHOW BGP PEER=10.10.10.2 ↓
`

システム資源の調整

#### メモリー不足時の一時停止

通常運用時には、BGP-4以外にも多くの機能（モジュール）が動作しています。このような環境では、他のモジュールが一時的にメモリーを大量に使用し、BGP-4モジュールの実行に必要なメモリーが足りなくなる可能性があります。
本製品には、メモリー不足時に（セッションを維持したまま）BGP-4の処理を一時停止（バックオフ）し、メモリー不足が解消するまで待機する機能があります。
デフォルトでは、システム全体のメモリー使用量が95%に達すると、BGP-4の処理を10秒間停止します。10秒待機してもメモリー使用率が95%以上だった場合は、再び10秒間待機します。連続5回待機してもメモリー使用量が95%より下がらない場合は、回復の見込みなしと判断して、すべてのBGPセッションを切断（ピアを無効化）します。
BGPバックオフ機能の動作は、以下のパラメーターを変更することで調整可能です。

表 6
パラメーター名 | 意味 | 解説 | デフォルト値
BACKOFF | バックオフしきい値（%） | システム全体のメモリー使用量が本しきい値に達した場合、BGP-4の処理は一時停止（バックオフ）される。LOWパラメーターよりも大きい値に設定しなくてはならない | 95
LOW | バックオフ解除しきい値（%） | BGP-4の処理が一時停止（バックオフ）された後、システム全体のメモリー使用量が本しきい値を下回ると、BGP-4の処理が再開される。BACKOFFパラメーターよりも小さい値に設定しなくてはならない | 90
BASETIME | バックオフ時間の基準値（秒） | 実際のバックオフ時間はBASETIME、MULTIPLIER、STEPの組み合わせと何回目のバックオフであるかによって決まる | 10
CONSECUTIVE | 連続したバックオフの制限回数（回） | バックオフがCONSECUTIVE回連続して発生した場合は、回復不可能と判断してすべてのBGPセッションを停止する | 5
MULTIPLIER | バックオフ時間を決定するための係数 | 初回のバックオフ時間はBASETIME × MULTIPLIER ÷ 100で求められる（小数点以下は切り捨て）。バックオフが連続して発生した場合、初回を含めてSTEP回は同じバックオフ時間が用いられる、その次の回のバックオフ時間は前回のバックオフ時間 × MULTIPLIER ÷ 100（小数点以下は切り捨て）となる。すなわち、MULTIPLIERを100より大きく設定すればバックオフ時間は次第に長くなり、100より小さく設定すればバックオフ時間は次第に短くなる | 100
STEP | 同一バックオフ時間を使用する回数（回） | バックオフが連続して発生した場合、何回ごとにバックオフ時間を再計算するか | 1
TOTALLIMIT | バックオフの合計制限回数（回） | バックオフが合計TOTALLIMIT回発生した場合（システム起動後の合計回数。連続していなくてもよい）は、すべてのBGPセッションを切断（ピアを無効化）する。0は無制限を意味する | 0

■ BGPバックオフ機能のパラメーターを変更するには、SET BGP BACKOFFコマンドを使います。

`SET BGP BACKOFF BASETIME=60 CONSECUTIVE=6 MULTIPLIER=110 STEP=2 ↓
`

このように設定した場合、メモリー使用量95%以上の状態が続くと、バックオフ時間は次のように推移します。

表 7
- | バックオフ時間（秒） | 備考
1 | 66 | ≒ 60 × 110 ÷ 100 ＝ 60 × 1.1
2 | 66 |
3 | 72 | ≒ 66 × 110 ÷ 100 ＝ 66 × 1.1
4 | 72 |
5 | 79 | ≒ 72 × 110 ÷ 100 ＝ 72 × 1.1
6 | 79 |
7 | - | すべてのBGPセッションを切断

■ BGPバックオフ機能の設定を確認するには、SHOW BGP BACKOFFコマンドを使います。

`SHOW BGP BACKOFF ↓
`

#### メモリー使用量の制限

通常運用時には、BGP-4以外にも多くの機能（モジュール）が動作しています。BGP-4モジュールが大量にメモリーを消費すると、他のモジュールの実行に必要なメモリーが足りなくなる可能性があります。
本製品には、BGP-4に割り当て可能なメモリー量を制限する機能があります。
デフォルトでは、BGP-4に割り当て可能なメモリー量はシステム全体の85%に制限されています。BGP-4モジュールのメモリー使用量が85%に達した場合は、すべてのBGPセッションを切断（ピアを無効化）します。
■ BGP-4に割り当て可能なメモリー量は、SET BGP MEMLIMITコマンドで変更できます。

`SET BGP MEMLIMIT=75 ↓
`

■ BGP-4に割り当て可能なメモリー量の設定、および、実際のメモリー使用量は、SHOW BGP MEMLIMITコマンドで確認できます。

`SHOW BGP MEMLIMIT ↓
`

トリガー

モジュールトリガーを使用すると、BGPピアの状態変化時やBGP用のメモリー領域が不足したときに、任意のスクリプトを実行させることができます。
BGPのモジュールトリガーを作成するには、CREATE TRIGGER MODULEコマンドのMODULEパラメーターにBGPを指定し、EVENTパラメーターにイベント名を指定します。
イベントには次のものがあります。以下、各イベントを捕捉するトリガーの設定方法について解説します。

- MEMORY：メモリー不足のためBGPの経路情報を破棄しなくてはならなくなったときに発生
- PEERSTATE：BGPピアとの通信状態が変化したときに発生

#### MEMORYイベント

BGP MEMORYイベントは、メモリー不足によりBGPモジュールが経路情報を破棄しなくてはならなくなったときに発生します。
MEMORYイベントを捕捉するには、CREATE TRIGGER MODULEコマンドを次の構文で使用します。MODULE、EVENT以外にBGPモジュール固有のパラメーターはありません。

`CREATE TRIGGER=trigger-id MODULE=BGP EVENT=MEMORY [AFTER=time] [BEFORE=time] [{DATE=date|DAYS=day-list}] [NAME=string] [REPEAT={YES|NO|ONCE|FOREVER|count}] [SCRIPT=filename...] [STATE={ENABLED|DISABLED}] [TEST={YES|NO|ON|OFF}]
`

BGP MEMORYトリガーから実行されるスクリプトには、特殊な引数として%D（日付）、%T（時刻）、%N（システム名）、%S（シリアル番号）が渡されます（これらの引数はすべてのトリガーに共通です）。なお、BGP MEMORYトリガー固有の引数（%1など）はありません。
■ メモリー不足によりBGPの経路情報が破棄されはじめたときにスクリプトmemlow.scpを実行するトリガー「1」を作成するには、次のようにします。

`CREATE TRIGGER=1 MODULE=BGP EVENT=MEMORY SCRIPT=memlow.scp ↓
`

#### PEERSTATEイベント

BGP PEERSTATEイベントは、BGPピアとの通信状態が変化したときに発生します。
PEERSTATEイベントを捕捉するには、CREATE TRIGGER MODULEコマンド、SET TRIGGER MODULEコマンドを次の構文で使用します。MODULE、EVENT以外に、BGP PEERSTATEトリガー固有のパラメーターとして、PEER、BGPSTATE、DIRECTIONの3つがあります。

`CREATE TRIGGER=trigger-id MODULE=BGP EVENT=PEERSTATE PEER={ANY|ipadd} BGPSTATE={IDLE|CONNECT|ACTIVE|OPENSENT|OPENCONFIRM|ESTABLISHED|ANY} DIRECTION={ENTER|LEAVE|ANY} [AFTER=time] [BEFORE=time] [{DATE=date|DAYS=day-list}] [NAME=string] [REPEAT={YES|NO|ONCE|FOREVER|count}] [SCRIPT=filename...] [STATE={ENABLED|DISABLED}] [TEST={YES|NO|ON|OFF}]
`

`SET TRIGGER=trigger-id [PEER={ANY|ipadd}] [BGPSTATE={IDLE|CONNECT|ACTIVE|OPENSENT|OPENCONFIRM|ESTABLISHED|ANY}] [DIRECTION={ENTER|LEAVE|ANY}] [AFTER=time] [BEFORE=time] [{DATE=date|DAYS=day-list}] [NAME=string] [REPEAT={YES|NO|ONCE|FOREVER|count}] [TEST={YES|NO|ON|OFF}]
`

BGP PEERSTATEトリガーは、PEERパラメーターで指定したBGPピア（との通信）の状態が、BGPSTATEパラメーターで指定した状態に遷移した場合（DIRECTION=ENTER）、または、BGPSTATEパラメーターで指定した状態から他の状態に遷移した場合（DIRECTION=LEAVE）、または、その両方の場合（DIRECTION=BOTH）に起動されます。
BGPSTATEパラメーターで指定する状態については、SHOW BGP PEERコマンドの表（State欄）をご参照ください。
DIRECTIONパラメーターは、次のような意味を持ちます。

- ENTER：他の状態からBGPSTATEパラメーターで指定した状態への遷移
- LEAVE：BGPSTATEパラメーターで指定した状態から他の状態への遷移
- BOTH：ENTERとLEAVEの両方

> Note - BGPSTATEパラメーターにANYを指定し、DIRECTIONパラメーターにBOTHを指定した場合、1つの状態遷移にともなって2つのイベントが発生します。たとえば、BGPピア10.10.10.2がIdelからConnect状態に遷移した場合、Connect状態へのENTERイベントとIdle状態からのLEAVEイベントの2つが発生します。

BGP PEERSTATEトリガーから実行されるスクリプトには、特殊な引数として%D（日付）、%T（時刻）、%N（システム名）、%S（シリアル番号）が渡されます（これらの引数はすべてのトリガーに共通です）。また、BGP PEERSTATEトリガー固有の引数として、以下の値も渡されます。

- %1：状態遷移したBGPピアのIPアドレス
- %2：遷移後（ENTERイベントのとき）または遷移前（LEAVEイベントのとき）の状態
- %3：状態遷移の方向（enterまたはleave）

■ BGPピア10.10.10.2との通信状態がEstablishedでなくなったときにスクリプトpeerdown.scpを実行するトリガー「2」を作成するには、次のようにします。

`CREATE TRIGGER=2 MODULE=BGP EVENT=PEERSTATE PEER=10.10.10.2 BGPSTATE=ESTABLISHED DIRECTION=LEAVE SCRIPT=peerdown.scp ↓
`

(C) 2003 - 2010 アライドテレシスホールディングス株式会社

PN: J613-M0019-01 Rev.P