このHPはBGP(EBGP・IBGP・パス属性)についてまとめたものです
1-1 IBGPとEBGP
同一のAS内部で使うBGPはIBGPと呼ばれている。一方異なるAS間で使うBGPは,
EBGPと呼ばれている。
1-2 BGPピアのタイプ(EBGPとIBGP)
BGPのピアには、大きく分けて『EBGPピア』と『IBGPピア』という2種類がある。
■EBGPピア
EBGPピアは、自ASと異なるASに所属しているピアを言う。
EBGPではAS間における経路情報の交換を行う。
通常、EBGPピアは直接接
続されたルータとの間で構成する。これは、EBGPピアを確立するメッセージを運ぶIPヘッダのTTLが1になっているため、直接接続され
ていないピアには到達できないため。
■IBGPピア
同一のAS内部でピアを張る接続形態をIBGP ピアと呼ぶ。IBGPでは、外部 ASから受信したBGP経路情報をそのまま通過させたり、自ASから外部経路に宛てたトラフィックに対する最適 な出口を決定させたりできる。
また、IBGPピアは原則として、AS内の全てのスピーカーでフルメッシュに構成する必要がある。 これは、IBGPスプリットホラ イズンという「IBGPピアから受信したルートを他のIBGPにアドバタイズしない」という規則があり、これに より、AS内でルートがループされることを回避する。
1-3 BGPの基本設定
以下のネットワークで、CiscoルータでのBGPの基本ステップは、以下の通り。
(1)BGPを有効にする
【書式】(config)#router bgp【ルータが属するAS番号】
(2)BGPピアを設定
【書式】 (config-router)#neighbor【ピアルータのIPアドレス】remote-as【ピアが属するAS番号( 自身のAS番号と一致すればIBGPピア、異なればEBGPピアと認識)】
(3)アドバタイズするプレフィクス及 びプレフィクス長を指定する
【書式】(config-router)#network【ルータがアドバタイズするネットワークのネットワークアドレ ス】{ mask 【サブネットマスク】}
2-1 パス属性の分類
BGPで交換される経路情報には、あて先プレフィクス以外にも、 経路の優先度やループ検知等に利用されるパス属性と呼ばれる情報 が付加されている。
★【パス属性のカテゴリ】
パス属性は、以下の4つのカテ ゴリのいずれかに該当するように定義されれている。
●Well-Known Mandatory(周知強制)
●Well-Known Discretionary(周知任意)
●Optional Transitive(オプショナル通過)
●Optional Nontransitive(オプショナル非通過)
■【Well-Known Mandatory(周知強制)】
全てのBGPルータがサポートし、かつ全てのupdateメッセ ージに必ず含まれなければならない属性。このタイプの属性には以下のものが ある。
★Origin
★As-Path
★Next-Hop
■【Well-Known Discretionary(周知任意)】
全てのBGPルータがサポートしていなければならない属性 だが、updateメッセージには付加される場合とされない場合がある。このタイ プの属性には、以下の物がある。
★Local_Preference
★Atomic_Aggregate
■【Optional Transitive(オプショナル通過)】
全てのBGPルータがサポートしている必要はない。しかし 、その属性がupdateメッセージに含まれている場合は、それを他のBGPルータに伝える必要があるもの。 このタイプの属性には、次のものがある
★Aggregator
★Community
■【Optional Nontransitive(オプショナル非通過)】
必ずしもサポートする必要はない属性。ただし、その属 性をサポートしていないルータはこのカテゴリの属性を通過させてはならない。このタイプの属性には、次のものがある
★MED
★Originator_ID
★Cluster_List
2-2 BGPパス属性の種類
BGPには、以下の様なパス属性が存在する。
ここでは、Origin、AS_Path、Next-Hop、MED、Local_Preference、Weight、Community属性を説明する。
●【ORIGIN属性】
ORIGIN属性は、Well-Known Mandatory(周知強制)属性の1つで、必ずupdateメッセージに含まれ、IBGPピア及びEBGPピアに送信される 。ORIGIN属性で示される値は、以下の3つ。
ルートがAS内のIGPによって作 成された場合は、Origin属性はIGPに、EGPによって学習されたルートの場合はOrigin属性はEGPに、その他の 手段で学習された場合はORIGIN属性はINCOMPLETEとなる。
●【AS_PATH属性】
AS_PATH属性は、Well-Known Mandatory(周知強制)。全てのupdateメッセージに必ず含まれ、全てのBGPピアに伝わっていく。
経路更新がASを通過するたびに、自分のAS番号を付加し 次ルータへ渡していくことにより、ASパスリストを形成していく。
もし自分のAS番号が含まれているUPDATEメッセージを受け取った場合、 その情報はデフォルトでは無視する。このことでルーティングル ープを防止する。
ただし、AS番号を追加するのは EBGPピアにアドバタイズする時だけで、IBGPでアドバタイズするときはAS番号を追加することはない。
また、特に何もBGPのパス属性の調整を行っていなければ、経路の選択をする際にAS_属性に含まれるAS番号のリストの長さが短い方(経由し てきたASの数が少ない方)が優先される。
●【 NEXT_HOP属性】
NEXT_HOP属性は、 Well-Known Mandatory(周知強制)。トラフィックを転送すべきネクストホップのIPアドレスを示し、必ずupdateメッセ ージに必ず含まれ、IBGPピアとEBGPピアに送信される。
ただし、BGPでは以下の条件にもとづいてネクストホップアドレス情報
がアナウンスされる。
●EBGPの場合は、相手ルータとピアを張っている自分自身のアドレスに変更してアナウンスする。
●IBGPの場合は、AS内で発信されたルートは、ルートをアナウンスした隣接ルータのIPアドレスがネクストホ ップアドレスとなり、EBGPを通じてAS内に注入されたルート では、EBGPから学習したネクストホップがそのまま書き換えら れずにIBGPで運ばれる。
●EBGPの場合、受信した経路情報の送信元ルータと経路のアナウンス先ルータが同一セグメント上に存在す る場合、受信した経路情報のネクストホップアドレスは変更されないでアナウンスされる。
●【Multi_Exit_DISCRIMINATOR(MED)属性】
MED属性は、Optional Nontransitive(オプショナル非通過)な属性で、必ずしも全てのBGPピアがサポートしている必要はなく、そのUPDATEメッセージを受信したピアは、他のピア(EBGPピア)にさらに伝える必要はない。
MEDはマルチホーム環境で、複数のパスがあるような場合に、外部ASから自ASへの入力トラフィックでどのパスを優先させるかを決定するような時に使用し、MED属性値の比較で、より値の小さなMED属性値の付加されている経路情報が優先される。
MED属性はAS間で交換されるが、そのASからさらに別のASへ伝達されることはない。また、MED属性の値は、隣接した同一のASから受信した経路情報のものだけが比較され、異なるASから受信した経路情報に付加されているMED属性値の比較は行われない。MED値が付与されていない場合、MED値はデフォルトで"0"が付与される。
●【Local_ Preference属性】
Local_ Preference属性は、Well-Known
Discretionary(周知任意)属性で、自ASから外部ASへの出力トラフィックでどのパスを優先させるかを決定する。
つまり、Local_
Preferenceは、IBGPピア間だけで交換され、AS内部だけで通用する優先度になり、EBGPピアはLocal-Preference属性を無視する。
優先度はLocal_Preference値の大きいパスが優先される。Local_Preference値はルータ自身に設定される値であり、デフォルトで「
100 」。
下の図で、AS1(172.16.0.0/16)の経路をAS10でルータA経由のルートを優先させたいという場合は、ルータAでルータBより大きい属性値を設定し、、IBGPピアルータCにアドバタイズする。
ルータCのBGPテーブルには、172.16.0.0/16に関して2つのパスが保持されるが、Local_Preference値の大きなパスが優先される。
●【weight属性(Cisco独自)】
WEIGHT属性はCisco独自の属性で、ローカルルータにおいて、どのBGPピアを優先するかを定義するための属性。設定したローカルルータだけで使用され、他のBGPピアへ通知しない。
Weight属性は,0〜65535の値をとり、それ以外のルートの値は"0"になる。WEIGHT属性が大きいパスが優先される。デフォルトは自身直接接続しているルートは32768。
下図のマルチホーミングのネットワーク構成で、AS1のBGPルータのWeigh値を、 AS2のBGPルータに対して『200』、AS3のBGPピアルータに対して『100』 とした場合、「172.16.0.0/16」の経路に向かうAS1のBGPルータ は、ネクストホップを強制的に「AS2のBGPルータ」にする。
●【Community属性】
Community属性 は、Optional Transitive(オプショナル通過)な属性。複数のルートにタグを付け、グループ化して取り扱うことが出来るので、発信、着信のBGPルートをフィルタリングしたり、タグに基づいて、特定の経路を優先させることもできる。
Cmmunity属性の中には、あらかじめそのCommunity属性値のポリシーが定義されているものとそうでないものがある。
前者をWell-Known Communityと呼び、後者をPrivate Communityと呼ぶ。
Well-Known Communityとしては以下のものがある。