BGP Well Known Mandatoryアトリビュートとは
BGPでアドバタイズするルート情報にはさまざまなパスアトリビュートが付加
されます。パスアトリビュートによって、BGPのベストパスを選択し、AS間の
ルーティングを制御することができます。
パスアトリビュート野中でWell known Mandatoryアトリビュートは、どのよう
なBGPルートにも必ず付加されるという最も基本的なパスアトリビュートです。
以降で、Well known Mandatoryの
- ORIGIN
- AS_PATH
- NEXT_HOP
の3つのパスアトリビュートについて解説します。
※以降の説明の中の図では、説明の都合上、BGPルートに付加されているパス アトリビュートを限定して記述していますが、実際にはORIGIN、AS_PATH、 NEXT_HOPの3つのWell known Mandatoryアトリビュートすべてが付加されて います。
ORIGINアトリビュート
ORIGINアトリビュートは、BGPルートの生成元を示すパスアトリビュートで、 次の3つの種類があります。
- IGP
- EGP
- Incomplete
「IGP」
IGPのORIGINアトリビュートは、BGPルートがAS内のIGPから生成されていると
いうことを示しています。BGPテーブル上では、「i」で表されます。
AS内のネットワークは、IGPでルーティングできるようになっていることを思
い出してください。AS内のIGPから生成されている、つまり、IGPのORIGINアト
リビュートが付加されているBGPルートは、生成したルータが所属するASのも
のであることを示しています。
Ciscoルータでは、networkコマンド、aggregate-addressコマンドでBGPルート
を生成した場合にIGPのORIGINアトリビュートが付加されます。
「EGP」
EGPのORIGINアトリビュートは、BGPルートがEGP(Exterior Gateway Protocol)
から生成されていることを示しています。EGPはBGPの前身のプロトコルです。
BGPテーブル上では「e」で表されます。
「Incomplete」
IncompleteのORIGINアトリビュートは、BGPルートの生成元が不明であること
を示しています。BGPテーブル上では「?」で表されます。
Ciscoルータでは、AS内のIGPのルートをBGPに再配送してBGPルートを生成した
場合にIncompleteのORIGINアトリビュートが付加されます。ただし、ルートの
生成元が不明であるIncompleteのORIGINアトリビュートを付加したまま、他の
ASにアドバタイズするのは好ましくありません。IncompleteのORIGINアトリビ
ュートが付加されているルートを他のASにアドバタイズするときには、IGPの
ORIGINアトリビュートに変更するのが一般的です。
AS_PATHアトリビュート
AS_PATHアトリビュートは、文字列でBGPルートが経由してきたAS番号のリスト
を表します。networkコマンドなどでBGPルートを生成したとき、初期のAS_PATH
アトリビュートは空白です。他のASのネイバーであるEBGPネイバーにBGPルー
トをアドバタイズするとき、AS_PATHアトリビュートの左端に自AS番号を追加
します。AS_PATHアトリビュートの左端に追加することを特に「プリペンド(prepend)」
といいます。
このようなAS_PATHアトリビュートのプリペンドの動作から、AS_PATHアトリビ
ュートの右端のAS番号はそのルートの生成元のASと見なされます。
※AS_PATHアトリビュートのAS番号の間には空白を入れます。
IBGPネイバーにBGPルートをアドバタイズするときには、AS_PATHアトリビュー トは変更されません。これは、BGPではルートをAS単位で考えていることを表 しています。AS_PATHアトリビュートのプリペンドの様子を表したのが次の図 です。
この図は、AS1の中の100.0.0.0/8のルート情報に対して、AS_PATHアトリビュ ートがどのように変更されているかを示しています。
初期のAS_PATHアトリビュートは空白です。AS1からAS2のEBGPネイバーに100.0.0.0/8
をアドバタイズするときにAS番号「1」がプリペンドされます。
AS2内のIBGPネイバーにアドバタイズするときには、100.0.0.0/8のAS_PATHア
トリビュートは変更されません。AS2からAS3のEBGPネイバーに100.0.0.0/8を
アドバタイズするときにAS番号「2」がプリペンドされて、AS_PATHアトリビュ
ートは「2 1」となります。
BGPは「パスベクタ型」ルーティングプロトコルと呼ばれることもあります。
これは、パスアトリビュートの特別な変更を行っていなければ、AS_PATHアト
リビュートが最も短いルートをベストパスとして決定することを表しています。
AS_PATHアトリビュートは、BGPルートがループすることを防止するという重要 な役割も果たしています。受信したBGPルートのAS_PATHアトリビュートの中に 自AS番号が入っているルートはループしているものと見なして破棄します。
前述したようにBGPでは、ルート情報をAS単位で考えるのが基本です。そのた
め、BGPのルートが経由してきたAS番号をリストしているAS_PATHアトリビュー
トは重要なアトリビュートです。ルートをフィルタしたり、他のパスアトリビ
ュートを付加したりするときにAS_PATHアトリビュートを基準にして行うこと
がよくあります。
AS_PATHアトリビュートを参照してBGPルートの制御を行うためには、AS_PATH
アクセスリストという特殊なアクセスリストを利用します。
AS_PATHアクセスリストは、AS_PATHアトリビュートが文字列であることを利用
します。AS_PATHアトリビュートの文字列のパターンを正規表現で指定するこ
とで、AS_PATHアトリビュートを基準にしたルート情報を識別することができ
ます。
NEXT_HOPアトリビュート
NEXT_HOPアトリビュートは、その名前の通り、ルートに対するネクストホップ
アドレスを示しています。ただし、BGPではルート情報をAS単位で考えること
に注意してください。アドバタイズするネイバーによって、NEXT_HOPアトリビ
ュートの扱い方が異なります。
BGPルートを生成したときの初期のNEXT_HOPアトリビュートは、「0.0.0.0」も
しくはAS内のIGPのネクストホップアドレスです。そして、他のASのネイバー
であるEBGPネイバーにBGPルートをアドバタイズするとき、NEXT_HOPアトリビ
ュートを自分のIPアドレスに変更してアドバタイズします。このIPアドレスは
ネイバーを構成しているIPアドレスです。
また、次のような場合、NEXT_HOPアトリビュートは変更されません。
1.マルチアクセスネットワーク上のEBGPネイバーにBGPルートをアドバタイズ
するとき
2.IBGPネイバーにBGPルートをアドバタイズするとき
1.でNEXT_HOPアトリビュートが変更されないのは、実際のIPパケットのルーテ ィングの効率を考えてのためです。次のような構成を考えます。
図では、R1(AS1)、R2(AS2)、R3(AS3)がイーサネットで同じサブネットに接続
されています。EBGPネイバーはR1(AS1)-R2(AS2)間とR2(AS2)-R3(AS3)間で構成
されています。
R2からR3へ100.0.0.0/8をアドバタイズするときにNEXT_HOPアトリビュートを
R2の10.0.0.2に変更すると、実際のIPパケットのルーティングの効率が悪くな
ります。R3からは直接R1へパケットをルーティングする方が効率がよいです。
そのため、NEXT_HOPアトリビュートのIPアドレスと同じネットワーク上のEBGP
ネイバーにBGPルートをアドバタイズするときは、NEXT_HOPアトリビュートを
変更しません。
2.は、BGPではAS単位でルート情報を考えるためです。次の図のように、IBGP ネイバーに対してBGPルートをアドバタイズするときは、デフォルトではNEXT_HOP アトリビュートを変更しません。
NEXT_HOPアトリビュートは、IPパケットをルーティングするときの中継先です 。ですから、NEXT_HOPアトリビュートのIPアドレスに到達できないとIPパケッ トをルーティングできません。そのため、BGPルートを利用する大前提として、 付加されているNEXT_HOPアトリビュートに到達できることが必要です。
さらにBGPの詳細について勉強したい方は、↓の「BSCIテキスト」をご覧ください。
http://www.amazon.co.jp/exec/obidos/ASIN/4822283305/networkstudy-22/ref=nosim/








