[index] CentreCOM 9600シリーズ コマンドリファレンス 2.7

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パスリスト
   - プレフィックスフィルター
   - コミュニティーリスト
   - ルートマップ
  - トリガー
   - 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を挙げます。


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つに分類して考えることができます。


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


BGP-4の基本は、自AS内のプレフィックスを他ASに通知することで自AS宛てのトラフィックを受け取れるようにすること、および、他ASから経路を学習することで他AS宛てにトラフィックを送信できるようにすることです。

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

 

プレフィックス

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


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セッションが有効であることを確認するためのメッセージ。定期的に送信される


 

パス属性

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による拡張属性)


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

 

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)として次のものが定義されています。


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

 

基本設定手順

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

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


  2. 自らが提供する経路情報を設定します。たとえばインターフェース(ダイレクト)経路と静的経路をBGPで広報したいときは次のようにします。


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


  3. 接続相手のBGPスピーカー(BGPピア)を指定します。相手のIPアドレスと相手の所属AS番号を指定してください。REMOTEASが自ASと同じならI-BGP、違うならE-BGPピアとなります。


  4. BGPピアとのセッションを開始します。


 

設定項目詳細

BGP-4のおもな設定項目について説明します。

■ 自AS番号の設定はSET IP AUTONOMOUSコマンドを使います。


■ 本製品のデフォルト動作では、インターフェースに設定されたIPアドレスの中でもっとも大きなものがBGP識別子(ルーターID)として使われます。明示的にBGP識別子を設定するには、SET IP LOCALコマンドでルーターのIPアドレスのうちの1つを指定します。


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


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


ADD BGP NETWORKコマンドで指定したプレフィックスは、静的設定やRIP、OSPFなどにより同一のプレフィックスがルーターの経路表に登録された場合に、BGP経路表に取り込まれます。

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


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


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


■ BGPピア固有の設定パラメーターはSET BGP PEERコマンドで変更します。ピア固有のパラメーターは、該当ピアとセッションを張っていない状態(無効状態)でしか変更できません。ADD BGP PEERコマンドでピアを追加した直後は無効状態なので、そのままSET BGP PEERコマンドによる設定が行えます。すでにセッションを開始している場合は、DISABLE BGP PEERコマンドでいったん切断し、設定を変更した後にENABLE BGP PEERコマンドでセッションを再開してください。


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


■ ASコンフェデレーションの設定はSET BGPコマンドのCONFEDERATIONIDパラメーターでコンフェデレーションAS番号を、ADD BGP CONFEDERATIONPEERコマンドで同じコンフェデレーションに所属するピアのサブAS(メンバーAS)番号を指定します。ADD BGP CONFEDERATIONPEERコマンドで指定するのは、直接セッションを張っているピアのサブAS番号だけです。コンフェデレーションに所属するすべてのサブASを指定する必要はありません。また、コンフェデレーションASを構成するときは、自AS番号としてサブAS番号(メンバーAS番号)を設定します。

たとえば、自分のサブAS番号が65001、コンフェデレーションAS番号が65000、コンフェデレーションEBGP(C-EBGP)ピア192.168.10.2のサブAS番号が65002の場合、次のように設定します。


■ 本製品は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 ROUTEMAPコマンドで作成。ADD BGP PEERコマンドのINROUTEMAP、OUTROUTEMAPで指定


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


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


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

 

経路選択プロセス

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

あるプレフィックスへの経路が1つしか存在しない場合は、その経路を使用します。しかし、複数の経路が存在する場合は、次の流れにしたがって1つの経路に絞ります。

  1. LOCAL_PREF属性の大きい経路を優先。
    E-BGP経由で学習した経路やIGP・静的設定で学習した経路の場合は、自ら計算した値を用いる。I-BGP経由で学習した経路の場合は、LOCAL_PREF属性の値を用いる。

  2. 経路のソース(起源)。次の順序で優先。
    (1) 手動で取り込んだ経路
    (2) I-BGPまたはコンフェデレーションE-BGPピア(C-BGPピア)から学習した経路
    (3) E-BGPピアから学習した経路
    (4) 集約経路エントリーから学習した経路

  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はすべて破棄されます。


  2. BGPピア「10.10.10.2」(所属ASは65002)を追加します。OUTPATHFILTERパラメーターにASパスリスト「1」を指定し、ASパスが空のUPDATEメッセージ(ローカル経路)だけを送信するよう設定します。


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

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


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


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


■ 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パスリストの内容を表示するには、SHOW IP ASPATHLISTコマンドを使います。


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


 

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

プレフィックスフィルターは、UPDATEメッセージに含まれる宛先ネットワークプレフィックス(NLRIフィールドの内容)の値(プレフィックスのみ。プレフィックス長には関知しない)に基づいて、経路情報を許可するか拒否するかを決定するフィルターです。

この機能を使うと、特定のプレフィックス宛ての経路情報だけを受け取ったり、特定のプレフィックス宛ての経路情報だけを通知したりすることができます。

Note - プレフィックスフィルターは、経路エントリーの「プレフィックス長」には関知しません。

プレフィックスフィルターは、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を使います。


    SMASKパラメーターは、SOURCEパラメーターの指定値とプレフィックスを比較するときに、どの部分(ビット)を比較するか指定するものです。この例(SMASK=255.255.0.0)では、先頭16ビットを比較します。

    なお、先頭が「172.20」でないプレフィックスは、暗黙の拒否エントリーによりすべて除去(EXCLUDE)されます。

  2. BGPピア「10.10.10.1」(所属ASは65001)を追加します。OUTFILTERパラメーターにプレフィックスフィルター「300」を指定し、該当ピアに送信するUPDATEメッセージには「172.20」で始まるプレフィックスだけが含まれるようにします。


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

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


    SMASKパラメーターは、SOURCEパラメーターの指定値とプレフィックスを比較するときに、どの部分(ビット)を比較するか指定するものです。この例(SMASK=255.255.0.0)では、先頭16ビットを比較します。

  2. IPプレフィックスフィルター「300」にすべてのプレフィックスを通過させるエントリーを追加します。IPプレフィックスフィルターの末尾には、すべてのプレフィックスを除去する暗黙のエントリーが存在するので注意してください。


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


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


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


■ プレフィックスフィルターは、経路エントリーの「プレフィックス長」には関知しません。経路エントリー「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のいずれにもマッチします。

■ プレフィックスフィルターの末尾には、すべてのプレフィックスを破棄(EXCLUDE)する暗黙のエントリーが存在するので注意してください。

 

コミュニティーリスト

コミュニティーリストは、UPDATEメッセージのCOMMUNITIES属性に基づいて、経路情報を許可するか拒否するかを決定するフィルターです。

COMMUNITIES属性は経路制御ポリシーを実施するために設けられた属性で、同じ性質を持つ経路をグループ化するために使用されます。

コミュニティーリストはルートマップと組み合わせて使用するもので、特定のCOMMUNITIES属性を持つ経路情報を受け取らないように設定したり、特定のCOMMUNITIES属性を持つ経路情報になんらかの「経路制御ポリシー」を与えるために使用できます。

コミュニティーリストは、ADD IP COMMUNITYLISTコマンドで作成し、ADD IP ROUTEMAPコマンドのMATCH COMMUNITYパラメーターでルートマップエントリーの選別条件として指定します。

■ コミュニティーリスト「1」を作成し、UPDATEメッセージのCOMMUNITIES属性にコミュニティー「10000」が含まれている場合にマッチするよう設定する。


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

 

ルートマップ

ルートマップは、さまざまな基準に基づいて経路を選別し、該当経路を許可・破棄したり、属性を書き換えたりするための機能です。おもに経路制御ポリシーを実施するために使用します。

ルートマップは、経路エントリーと照合するためのMATCH節(0〜1個)、マッチ時のアクション(INCLUDEかEXCLUDE)、アクションがINCLUDEだった場合にマッチした経路の属性を変更するためのSET節(0〜複数個)からなります。

MATCH節では、以下の情報を条件として使用できます。


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


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

  1. (必要ならば)UPDATEメッセージを選別するためのASパスリスト、コミュニティーリスト、プレフィックスリストを作成します。

  2. ルートマップエントリーを作成し、アクションを指定します。

  3. 手順2で作成したエントリーに対し、MATCH節を追加して条件を指定します。このとき、(必要に応じて)ASパスリストやコミュニティーリストの番号を指定します。なお、MATCH節がないエントリーは、すべての経路にマッチします。

  4. 手順2で作成したエントリーのアクションがINCLUDEの場合、(必要ならば)該当エントリーにSET節を追加して属性変更の設定を追加します。

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


以下、ルートマップのサンプルをいくつか示します。

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


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


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


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


Note - すでにBGPピアとセッションが張られている場合は、DISABLE BGP PEERコマンドでいったんセッションを落としてから、SET BGP PEERコマンドのOUTROUTEMAPパラメーターでルートマップを指定し、その後ENABLE BGP PEERコマンドでセッションを再開してください。

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


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


Note - すでにBGPピアとセッションが張られている場合は、DISABLE BGP PEERコマンドでいったんセッションを落としてから、SET BGP PEERコマンドのOUTROUTEMAPパラメーターでルートマップを指定し、その後ENABLE 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節を追加します。ここではマッチした経路にコミュニティー値「1000」を設定し、この値を「自AS番号を2個追加すべき経路」という意味にします。


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


  3. コミュニティー「1000」に属する経路にマッチするコミュニティーリスト「1」を作成します。


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


  5. ルートマップ「add_myasn_twice」のエントリー「1」に自AS番号(65002)を追加するSET節を追加します。


  6. BGPピア「10.10.10.1」(所属ASは65001)を追加します。OUTROUTEMAPパラメーターにルートマップ「add_myasn_twice」を指定し、該当ピアに送信する経路情報のうち、コミュニティー「1000」に属するものにAS_PATHを追加します。


 

トリガー

モジュールトリガーを使用すると、BGPピアの状態変化時やBGP用のメモリー領域が不足したときに、任意のスクリプトを実行させることができます。

BGPのモジュールトリガーを作成するには、CREATE TRIGGER MODULEコマンドのMODULEパラメーターにBGPを指定し、EVENTパラメーターにイベント名を指定します。

イベントには次のものがあります。以下、各イベントを捕捉するトリガーの設定方法について解説します。


 

MEMORYイベント

BGP MEMORYイベントは、メモリー不足によりBGPモジュールが経路情報を破棄しなくてはならなくなったときに発生します。

MEMORYイベントを捕捉するには、CREATE TRIGGER MODULEコマンドを次の構文で使用します。MODULE、EVENT以外にBGPモジュール固有のパラメーターはありません。


BGP MEMORYトリガーから実行されるスクリプトには、特殊な引数として%D(日付)、%T(時刻)、%N(システム名)、%S(シリアル番号)が渡されます(これらの引数はすべてのトリガーに共通です)。なお、BGP MEMORYトリガー固有の引数(%1など)はありません。

■ メモリー不足によりBGPの経路情報が破棄されはじめたときにスクリプトmemlow.scpを実行するトリガー「1」を作成するには、次のようにします。


 

PEERSTATEイベント

BGP PEERSTATEイベントは、BGPピアとの通信状態が変化したときに発生します。

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



BGP PEERSTATEトリガーは、PEERパラメーターで指定したBGPピア(との通信)の状態が、BGPSTATEパラメーターで指定した状態に遷移した場合(DIRECTION=ENTER)、または、BGPSTATEパラメーターで指定した状態から他の状態に遷移した場合(DIRECTION=LEAVE)、または、その両方の場合(DIRECTION=BOTH)に起動されます。

BGPSTATEパラメーターで指定する状態については、SHOW BGP PEERコマンドの表(State欄)をご参照ください。

DIRECTIONパラメーターは、次のような意味を持ちます。

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トリガー固有の引数として、以下の値も渡されます。


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








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

PN: J613-M6873-04 Rev.E