[index]
CentreCOM AR410 V2 コマンドリファレンス 2.6
IP/経路制御(BGP-4)
- プロトコル概要
- AS(Autonomous System)
- ASの種類
- ASとトラフィック
- プレフィックス
- 経路集約
- BGPスピーカー
- BGPセッション
- BGPメッセージ
- パス属性
- AS_PATH
- MULTI_EXIT_DISC
- LOCAL_PREF
- ATOMIC_AGGREGATE
- COMMUNITIES
- 設定手順
- 設定項目
- 基本設定
- 経路のフィルタリング
- 経路選択プロセス
- ASパスフィルター
- プレフィックスフィルター
- コミュニティーフィルター
- ルートマップ
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
- RFC3065, Autonomous System Confederations for BGP
BGP-4は、よりなじみの深いRIPやOSPFとは使用場所が異なります。RIPやOSPFは組織内のトラフィックを配送するために使用されます。一方、BGP-4は組織間でトラフィックを配送するために使用されます。
アルゴリズム的に見ると、BGP-4はディスタンスベクターアルゴリズム(パスベクター)を使用した比較的シンプルな設計になっています。ただし、他組織との関係(契約など)に応じた配送制御ができるよう、各ASにおいて経路情報にさまざまな情報(「属性」と呼びます)を付加して、ポリシーに基づくルーティングが可能なようになっています。
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-4の仕様では、BGP-4実装機器をBGPスピーカー(BGP speaker)と呼んでいます。BGPスピーカーは通常ルーターですが、経路情報を配布できるのであれば通常のホストであってもかまいません。
BGPスピーカーは、それぞれBGP識別子(BGP Identifier)という値を持ちます。BGP識別子は32ビットの符号なし整数値で、通常は自身のIPアドレスの1つを使います(例:10.10.10.1)。
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-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)として次のものが定義されています。
- 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を設定するための基本的な手順について説明します。具体的な設定例については、次項「基本設定」をご覧ください。
- 自AS番号を設定します。
SET IP AUTONOMOUS=65001 ↓
- 接続相手のBGPスピーカー(BGPピア)を指定します。相手のIPアドレスと相手の所属AS番号を指定してください。REMOTEASが自ASと同じならI-BGP、違うならE-BGPピアとなります。
ADD BGP PEER=10.10.10.2 REMOTEAS=65002 ↓
- 自らが提供する経路情報を設定します。たとえばインターフェース(ダイレクト)経路と静的経路をBGPで広報したいときは次のようにします。
ADD BGP IMPORT=INTERFACE ↓
ADD BGP IMPORT=STATIC ↓
広報するプレフィックスを明示的に指定したいときは、ADD BGP IMPORTコマンドでなくADD BGP NETWORKコマンドで該当プレフィックスを指定します。
ADD BGP NETWORK=192.168.10.0/24 ↓
- BGPピアとのセッションを開始します。
ENABLE BGP PEER=10.10.10.2 ↓
BGP-4のおもな設定項目について説明します。
■ 自AS番号の設定はSET IP AUTONOMOUSコマンドを使います。
SET IP AUTONOMOUS=65001 ↓
■ 本製品のデフォルト動作では、一番最初に設定した(ADD IP INTERFACEコマンドを実行した)IPアドレスがBGP識別子として使われます。明示的にBGP識別子を設定するには、SET IP LOCALコマンドでルーターのIPアドレスのうちの1つを指定します。
SET IP LOCAL IP=10.10.10.1 ↓
■ 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コマンドで変更します。ピア固有のパラメーターは、該当ピアとセッションを張っていない状態(無効状態)でしか変更できません。ADD BGP PEERコマンドでピアを追加した直後は無効状態なので、そのままSET BGP PEERコマンドによる設定が行えます。すでにセッションを開始している場合は、DISABLE BGP PEERコマンドでいったん切断し、設定を変更した後にENABLE BGP PEERコマンドでセッションを再開してください。
DISABLE BGP PEER=10.10.10.2 ↓
SET BGP PEER=10.10.10.2 OUTPATHFILTER=1 ↓
ENABLE BGP PEER=10.10.10.2 ↓
■ BGPのグローバル設定パラメーターは、SET BGPコマンドで変更できます。たとえば、E-BGPセッションで通知する経路のデフォルトMED値を10にするには、次のようにします。なお、本製品はデフォルトではMED属性を付加しません。
■ 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 ↓
■ 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の場合、次のように設定します。
SET IP AUTONOMOUS=65001 ↓
SET BGP CONFEDERATIONID=65000 ↓
ADD BGP PEER=192.168.10.2 REMOTEAS=65002 ↓
ADD BGP CONFEDERATIONPEER=65002 ↓
ADD BGP IMPORT=INTERFACE ↓
ADD BGP IMPORT=STATIC ↓
ENABLE BGP PEER=192.168.10.2 ↓
シンプルなBGP-4ネットワークの設定例を示します。ここでは、次のようなネットワーク構成を例に解説します。

ルーターAの設定
- 専用線とPPPの設定を行います。
SET BRI=0 MODE=TDM ACTIVATION=ALWAYS TDMSLOTS=1-2 ↓
CREATE TDM GROUP=remote INT=bri0 SLOTS=1-2 ↓
CREATE PPP=0 OVER=TDM-remote ↓
- IPモジュールを有効にします。
- 各インターフェースにIPアドレスを割り当てます。
ADD IP INT=vlan1 IP=10.10.0.1 MASK=255.255.255.0 ↓
ADD IP INT=ppp0 IP=192.168.100.1 MASK=255.255.255.0 ↓
- LAN側(vlan1)インターフェースでRIP2を有効にします。
ADD IP RIP INT=vlan1 SEND=RIP2 RECEIVE=RIP2 ↓
- 自AS番号を設定します。
SET IP AUTONOMOUS=65010 ↓
- BGPピアを指定します。
ADD BGP PEER=192.168.100.2 REMOTEAS=65020 ↓
- BGPで通知する経路情報を指定します。ここでは静的経路とRIP経由で学習した経路を相手に通知します。
ADD BGP IMPORT=STATIC ↓
ADD BGP IMPORT=RIP ↓
- BGPピアとのセッションを開始します。
ENABLE BGP PEER=192.168.100.2 ↓
ルーターBの設定
- 専用線とPPPの設定を行います。
SET BRI=0 MODE=TDM ACTIVATION=ALWAYS TDMSLOTS=1-2 ↓
CREATE TDM GROUP=remote INT=bri0 SLOTS=1-2 ↓
CREATE PPP=0 OVER=TDM-remote ↓
- IPモジュールを有効にします。
- 各インターフェースにIPアドレスを割り当てます。
ADD IP INT=vlan1 IP=10.20.0.1 MASK=255.255.255.0 ↓
ADD IP INT=ppp0 IP=192.168.100.2 MASK=255.255.255.0 ↓
- LAN側(vlan1)インターフェースでRIP2を有効にします。
ADD IP RIP INT=vlan1 SEND=RIP2 RECEIVE=RIP2 ↓
- 自AS番号を設定します。
SET IP AUTONOMOUS=65020 ↓
- BGPピアを指定します。
ADD BGP PEER=192.168.100.1 REMOTEAS=65010 ↓
- BGPで通知する経路情報を指定します。ここでは静的経路とRIP経由で学習した経路を相手に通知します。
ADD BGP IMPORT=STATIC ↓
ADD BGP IMPORT=RIP ↓
- BGPピアとのセッションを開始します。
ENABLE BGP PEER=192.168.100.1 ↓
設定は以上です。
■ 経路表を確認するには、SHOW IP ROUTEコマンドを使います。
■ BGPピアの状態はSHOW BGP PEERコマンドで確認します。
SHOW BGP PEER ↓
SHOW BGP PEER=192.168.100.2 ↓
■ BGP-4の経路表を確認するには、SHOW BGP ROUTEコマンドを使います。
■ BGP-4の設定情報を確認するにはSHOW BGPコマンドを使います。
BGP-4の運用においては、どの経路情報を受け入れるかといったフィルタリング機能、また、特定の経路情報に付加的情報を追加するポリシー設定機能が重要な意味を持ちます。本製品のBGP-4実装には、次の示すフィルタリング/ポリシー設定機能が用意されています。
- プレフィックスフィルター(特定のプレフィックス宛ての経路を許可・拒否する)
- ASパスフィルター(AS_PATH属性の内容にしたがって経路を許可・拒否する)
- コミュニティーフィルター(COMMUNITIES属性の内容にしたがって経路を許可・拒否する)
- ルートマップ(AS_PATH、COMMUNITIES属性の内容にしたがって経路をふるいわけ、マッチした経路の属性を変更する)
Note
- ここでの「許可」とは、他のルーターから受信した経路情報を受け入れること、また、他のルーターに経路情報を通知することを意味しています。同様に「拒否」とは、他のルーターから受信した経路情報を受け入れずに破棄すること、また、他のルーターに特定の経路情報を通知しないことを意味します。

また、BGP経由で学習した経路をルーターの経路表に取り込むときにも、一定の基準にしたがって経路の選択が行われます。
BGP-4経由で学習した経路情報の中には、同じプレフィックスを持つものが複数存在する可能性があります。一般的にこれは、該当プレフィックス宛ての経路が複数あることを意味しますが、この場合どの経路をルーターの経路表に取り入れるかが重要になってきます。
あるプレフィックスへの経路が1つしか存在しない場合は、その経路を使用します。しかし、複数の経路が存在する場合は、次の流れにしたがって1つの経路に絞ります。
- LOCAL_PREF属性の大きい経路
LOCAL_PREF属性は、各AS内でポリシーにしたがって変更・設定されます。BGP経由で学習した経路のデフォルトは100。その他のソースから学習した経路のデフォルトは0です。LOCAL_PREF属性値のデフォルト値は、SET BGPコマンドのLOCALPREFパラメーターで変更できます。また、ルートマップ(ADD IP ROUTEMAPコマンドのSET LOCALPREFパラメーター)により特定経路のLOCAL_PREF値を変更することもできます。
- AS_PATHの短い経路
経由するASの数が少ない経路を選択します。ルートマップを使うと、特定経路のAS_PATH属性を変更することができます。たとえば、他のASからのトラフィックが自ASを通ることを少なくするため、AS_PATHに自AS番号を複数個含めるようなことが可能です。AS_PATHの変更はADD IP ROUTEMAPコマンドのSET ASPATHパラメーターで行います。
- MULTI_EXIT_DISC属性の小さい経路
隣接ASと複数点で接続している場合、隣接ASから通知された経路のMULTI_EXIT_DISC属性値に基づいて経路を選択します。
- NEXT_HOPへのコストが小さい経路
ルーターの経路表に基づき、NEXT_HOPへのコストがもっとも小さい経路を選択します。
- E-BGP経路(ルーターIDが小さい経路)
選択対象の経路すべてをI-BGP経由で学習した場合は次のステップに進みます。選択対象の経路のうち1つだけがE-BGP経由で学習したものであるならば、その経路を選択します。複数のE-BGP経路がある場合は、学習元BGPピアのBGPスピーカーIDがもっとも小さい経路を選択します。
- I-BGP経路(ルーターIDが小さい経路)
選択対象の経路すべてをI-BGP経由で学習した場合は、学習元BGPピアのBGP識別子がもっとも小さい経路を選択します。
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起源の経路(ローカル経路)だけを通知するには、次のようにします。
- ASパスフィルター「1」を作成し、AS_PATH属性が空のUPDATEメッセージだけを許可するエントリーを追加します。1つでもエントリーを持つASパスフィルターは、末尾にすべて破棄の暗黙のエントリーが存在するため、この例ではASパスが空でないUPDATEはすべて破棄されます。
ADD IP ASPATHLIST=1 INCLUDE="^$" ↓
- 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メッセージを受信しないよう設定するには、次のようにします。
- ASパスフィルター「1」を作成し、AS_PATH属性の末尾が「65100」のUPDATEメッセージを拒否するエントリーを追加します(AS_PATH属性はUPDATEメッセージが通過してきたASのリストで、リストの末尾(右端)に起源ASが置かれます)。
ADD IP ASPATHLIST=1 EXCLUDE="65100$" ↓
- ASパスフィルター「1」にすべてのUPDATEメッセージを許可するエントリーを追加します。1つでもエントリーを持つASパスフィルターは、末尾にすべて破棄の暗黙のエントリーが存在するので注意してください。
ADD IP ASPATHLIST=1 INCLUDE=".*" ↓
- 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パスの表現に特化した限定版です。
表 4: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」など)
- 末尾が「65012」のASパスにマッチ(例:「65012」「65001 65002 65012」など)
- 末尾に「65300」、「65310」、「65330」をこの順番で含むASパスにマッチ(例:「65300 65310 65330」「65100 65300 65310 65330」など)
- AS「65110」だけからなるASパスにマッチ(例:「65110」のみ)
- AS「65300」を含むASパスにマッチ(例:「65001 65300」「65300」など)
- AS「65300」、「65310」、「65330」をこの順番で含むASパスにマッチ(例:「65300 65310 65330」「65299 65300 65310 65330 65432」など)
- AS「65300」、「65330」の間に任意のAS番号が1つだけ入るパスにマッチ(例:「65300 65311 65330」など)
- AS「65300」、「65330」の間に1個以上の任意のAS番号がくるパスにマッチ(例:「65300 65311 65330」「65300 65311 65324 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フィールドの内容)を除去するためのフィルターです。
この機能を使うと、特定のプレフィックス宛ての経路情報だけを受け取ったり、特定のプレフィックス宛ての経路情報だけを通知したりすることができます。
プレフィックスフィルターは、ADD IP FILTERコマンドで作成(フィルター番号300〜399)し、ADD BGP PEERコマンド、SET BGP PEERコマンドのINFILTER、OUTFILTERパラメーターでBGPピアごとに適用します。
■ 「10.10.10.1」とのBGPセッションにおいて、プレフィックス「172.20.0.0/16」だけを通知するようにするには、次のようにします。これにより、自AS宛てでないトラフィックが自ASに流れ込むことを防ぎます。
- 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 ↓
その他のプレフィックスは暗黙の拒否エントリーにより除去(EXCLUDE)されます。
- BGPピア「10.10.10.1」(所属ASは65001)を追加します。OUTFILTERパラメーターにプレフィックスフィルター「300」を指定し、該当ピアに送信するUPDATEメッセージにはプレフィックス「172.20.0.0/16」だけが含まれるようにします。
ADD BGP PEER=10.10.10.1 REMOTEAS=65001 OUTFILTER=300 ↓
■ 「1.2.2.2」とのBGPセッションにおいて、プレフィックス「172.16.0.0/19」の経路情報を受信しないよう設定するには、次のようにします。
- IPプレフィックスフィルター「300」を作成し、UPDATEメッセージのNLRIフィールドから、プレフィックス「172.16.0.0/19」を除去するエントリーを追加します。プレフィックスフィルターには、フィルター番号300〜399を使います。
ADD IP FILTER=300 SOURCE=172.16.0.0 SMASK=255.255.224.0 ACTION=EXCLUDE ↓
- IPプレフィックスフィルター「300」にすべてのプレフィックスを通過させるエントリーを追加します。IPプレフィックスフィルターの末尾には、すべてのプレフィックスを除去する暗黙のエントリーが存在するので注意してください。
ADD IP FILTER=300 SOURCE=0.0.0.0 ACTION=INCLUDE ↓
- BGPピア「1.2.2.2」(所属ASは65112)を追加します。INFILTERパラメーターにプレフィックスフィルター「300」を指定し、該当ピアから受信したUPDATEメッセージからプレフィックス「172.16.0.0/19」の情報を削除するよう設定します。
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 ↓
コミュニティーフィルターは、UPDATEメッセージのCOMMUNITIES属性に基づいて、経路情報を許可するか拒否するかを決定するフィルターです。
COMMUNITIES属性は経路制御ポリシーを実施するために設けられた属性で、同じ性質を持つ経路をグループ化するために使用されます。
コミュニティーフィルターはルートマップと組み合わせて使用するもので、特定のCOMMUNITIES属性を持つ経路情報を受け取らないように設定したり、特定のCOMMUNITIES属性を持つ経路情報になんらかの「経路制御ポリシー」を与えるために使用できます。
コミュニティーフィルターは、ADD IP COMMUNITYLISTコマンドで作成し、ADD IP ROUTEMAPコマンドのMATCH COMMUNITYパラメーターでルートマップエントリーの選別条件として指定します。
■ コミュニティーフィルター「1」を作成し、UPDATEメッセージのCOMMUNITIES属性にコミュニティー「10000」が含まれている場合にマッチするよう設定する。
ADD IP COMMUNITYLIST=1 INCLUDE=10000 ↓
Note
- コミュニティーフィルターは、必ずルートマップと組み合わせて使用します。ADD IP COMMUNITYLISTコマンドでフィルターを作成しただけでは、何も行われません。
ルートマップは、AS_PATH、COMMUNITIES属性の内容に基づいて選択した経路に対し、属性の書き換えを行うための機能です。おもに経路制御ポリシーを実施するために使用します。
ルートマップは、経路エントリーを選別するMATCH節と、マッチしたエントリーの属性を変更するSET節からなります。
ルートマップはADD IP ROUTEMAPコマンドで作成します。ルートマップの設定は、次のステップで行います。
- UPDATEメッセージを選別するためのASパスフィルターかコミュニティーフィルターを作成します。
- ルートマップエントリーを作成し、MATCH節でASパスフィルターかコミュニティーフィルターの番号を指定します。
- ルートマップエントリーにSET節を追加し、属性変更の設定を追加します。
作成したルートマップは、次に示す箇所に適用することで初めて効果を発揮します。
以下、ルートマップのサンプルをいくつか示します。
■ コミュニティー値「100」を設定するルートマップ「comm100」を作成します。エントリーは1個だけです。この例のようにMATCH節のないエントリーはすべてにマッチします。
ADD IP ROUTEMAP=comm100 ENTRY=1 SET COMMUNITY=100 ↓
ローカルプレフィックス「172.16.0.0/16」にコミュニティー値「100」を設定するには、作成したルートマップを使って次のようにします。
ADD BGP NETWORK=172.16.0.0/16 ROUTEMAP=comm100 ↓
■ MED値「1000」をセットするルートマップ「med1000」を作成します。エントリーは1個だけです。この例のようにMATCH節のないエントリーはすべてにマッチします。
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ピアとセッションが張られている場合は、DISABLE BGP PEERコマンドでいったんセッションを落としてから、SET BGP PEERコマンドのOUTROUTEMAPパラメーターでルートマップを指定し、その後ENABLE BGP PEERコマンドでセッションを再開してください。
■ コミュニティー値「1234」を持つ経路にMED値「200」を付加し、ASパスに「3 3」を付加するルートマップ「med_n_prepend」を作成します。MATCH節でコミュニティーフィルターを使っています。MATCH COMMUNITYパラメーターにコミュニティー値そのものではなく、コミュニティーフィルターの番号を指定している点に注意してください。
ADD IP COMMUNITYLIST=1 INCLUDE=1234 ↓
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=3,3 ↓
作成したルートマップ「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ピアとセッションが張られている場合は、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に流れ込む可能性を低くします。
- ルートマップ「mark_it_slow」を作成し、すべてにマッチするエントリー「1」を作成します(MATCH節のないエントリーはすべてにマッチ)。また、属性設定のためのSET節を追加します。ここではマッチした経路にコミュニティー値「1000」を設定し、この値を「自AS番号を2個追加すべき経路」という意味にします。
ADD IP ROUTEMAP=mark_it_slow ENTRY=1 SET COMMUNITY=1000 ↓
- BGPで通知するネットワークとして「172.16.20.0/24」を追加します。このとき、ルートマップ「mark_it_slow」を適用するよう指定します。これにより、プレフィックス「172.16.20.0/24」がBGP経路に取り込まれるときに、COMMUNITIES属性「1000」が設定されます。
ADD BGP NETWORK=172.16.20.0/24 ROUTEMAP=mark_it_slow ↓
- コミュニティー「1000」に属する経路にマッチするコミュニティーフィルター「1」を作成します。
ADD IP COMMUNITYLIST=1 INCLUDE=1000 ↓
- BGPピア「10.10.10.1」とのセッションにおいて、経路を通知するときに適用するルートマップ「add_myasn_twice」を作成し、コミュニティー「1000」を持つ経路にマッチするエントリー「1」を作成します。COMMUNITYパラメーターには、前の手順で作成したコミュニティーフィルター「1」を指定します。
ADD IP ROUTEMAP=add_myasn_twice ENTRY=1 MATCH COMMUNITY=1 ACTION=INCLUDE ↓
- ルートマップ「add_myasn_twice」のエントリー「1」に自AS番号(65002)を追加するSET節を追加します。
ADD IP ROUTEMAP=add_myasn_twice ENTRY=1 SET ASPATH=65002,65002 ↓
- BGPピア「10.10.10.1」(所属ASは65001)を追加します。OUTROUTEMAPパラメーターにルートマップ「add_myasn_twice」を指定し、該当ピアに送信する経路情報のうち、コミュニティー「1000」に属するものにAS_PATHを追加します。
ADD BGP PEER=10.10.10.1 REMOTEAS=65001 OUTROUTEMAP=add_myasn_twice ↓
(C) 2002 - 2008 アライドテレシスホールディングス株式会社
PN: J613-M3048-01 Rev.M