UnixPower on Networking
  http://www.unix-power.net/

 
 Top - Cisco - Cisco BGPの概要




■BGPの概要


BGP( Border Gateway Protocol )はインターネット用ルーティングプロトコルとして知られています。インターネットはAS( Autonomouse System )の集合体です。BGPは異なるAS間でルーティング情報を共有するために使われています。


BGPは信頼性のある転送プロトコルが利用されます。具体的にはTCP/179を使用します。


BGPについて注意すべき点はAS内ルーティングについては一切気にしないということです。BGPはASで使われているOSPFやEIGRPなど( IGP )にAS内ルーティングは一任しています。BGPが扱うのはあくまでAS間ルーティングです。


■BGPの用語


 AS( Autonomouse System) AS内ルーティングを管理する1つまたは複数のIGPと
AS間ルーティングのためのBGPを使った同一の運営管理下にあるデバイスの集合体。
 BGPスピーカー BGPが稼働しているルーターのこと。
 BGPピア 2つのBGPスピーカーが相互に形成しているTCPコネクションのこと。
 eBGP 異なるASのBGPピア間でルーティング情報を交換するためのプロトコル。
 iBGP 同一のAS内にあるBGPピア間でルーティング情報を交換するためのプロトコル。
 AS間ルーティング 異なる自律システム間で行われるルーティング。
 AS内ルーティング 同一自律システム内で行われるルーティング。


■BGPの動作


BGPにより世界中に広がったAS間におけるルーティング情報のやりとりが可能になります。


同一AS内でBGPを使うデバイスは全てiBGPを使って相互に通信します。iBGPを使うデバイスが多くある場合について注意すべき点はデバイスの全てが相互にピアをはる必要があることです。iBGPが適切に動作するには安全メッシュを構成する必要があります。BGPを使うデバイスは全てにレイヤ3到達可能性が必要であるからです。ただし、オプションを使うことによりフルメッシュ構成は必須ではありません。詳細は後述。


eBGPは異なるASのBGPを使うデバイス同士で利用されます。iBGPと同様にeBGPピアリングセッションでもBGPを使う参加デバイスが相互にレイヤ3接続性を持つ必要があります。


ピアの形成後にBGPを使うデバイスはピアリング情報を使って関係のあるASのループなしのグラフは作成します。これをBGPツリーと言います。BGPデバイスはピアを形成して自分のBGPツリーを作成すると経路情報を交換します。それ以降、ピアは自分たちのBGPルーティングテーブルの増分更新を交換しコネクションを維持させておくためにkeepaliveメッセージの交換を行います。


■BGPのネゴシエーション


ピア形成の第一歩はTCP179ポートを使ってBGPスピーカーが相互にTCPセッションをはることです。これが行われないとBGPスピーカーはお互いにピアになることができません。TCPセッションの確立後、BGPスピーカーは相互にOPENメッセージを送信します。それ以降、BGPスピーカーは増分のUPDATEメッセージ、NOTIFICATIONメッセージ、KEEPALIVEメッセージを送信します。


 BGPメッセージの種類
Open BGPセッション確立時にcapabilityを交換
UPDATE NLRI( マスク長、ネットワーク番号 )、Path Attributesなどから構成される
KEEPALIVE BGPセッションの継続のため定期的に交換。デフォルトで60秒ごとに送信、holdtimeは180秒
NOTIFICATION エラー時に送信。その後、BGPセッションを切断する。


BGPピアがEstablished状態に達するとルーティング情報の交換を始めます。上記のUPDATEメッセージのところでBGPではルート情報を管理するためのBGPアトリビュートを付与してメッセージを送付します。アトリビュートには以下のものがあげられ、厳密には以下だけではありませんが簡単に紹介致します。


BGPアトリビュート一覧 
 属性のタイプ  アトリビュート名  説明
 Well-Known Mandatory  Origin (type code 1)  BGPがどうやって経路を学習したのか。IGP / EGP / incompleteのいずれか。
 AS-PATH (type code 2)  通過したAS番号のリスト
 Next Hop (type code 3)  ネクストホップルータ / ASのIPアドレス
 Well-Known Discretionary  Local-Preference (type code 5)  他ASへの出口ポイントを設定する際に使用。影響範囲はAS内
 Atomic Aggregate (type code 6)  集成前の詳細経路に付加されていた情報が欠落していたことを示す
 Optional No-Transitive  Multi_Exit_Discriminator
(type code 4)
 複数の入り口ポイントを持つASが他のASへ優先度を強制させる
 Optional Transitive   Aggregator (type code 7)  集約ルートを生成したAS番号およびルータを示す
 Communities (type code 8)  ルーティングポリシーを簡潔化するために使用
 共通の特性を共有するルートをグループ化
 ルートにコミュニティタグを付与


BGPスピーカ同士が隣接関係を形成する際には以下のステップを踏みます。


BGPピアの状態 
 IDLE状態  BGPセッションをはじめる際の最初の状態。
 Connection状態  BGPスピーカーがTCPコネクション形成を待っている状態。
 Active状態  BGPスピーカーがピアを張りたいと希望するルータとTCPセッションを開始しようとしている状態。
 OpenSent状態  リモートのBGPスピーカーからOpenメッセージの受信を待っている状態。
 OpenConfirm状態  リモートのBGPスピーカーからKEEPALIVEメッセージ受信を待っている状態。
 Established状態  ネゴシエーションの全てが完了した状態。


■BGPの経路選択


BGPスピーカーが経路を学習する際、その経路はBGPスピーカーのルーティング情報ベース( Routing Information Base : RIB )を通る必要があります。BGPを使うデバイスは全てRIBを持っています。RIBは次の3つの部分で構成されています。


・Adj-RIB-In


BGPスピーカーが持つピア1つに対して1つのAdj-RIB-Inがあります。
このRIBは受信したBGP経路が格納されるところです。BGP経路は中に入れられると入力ポリシーエンジンにかけられます。
入力ポリシーエンジンとはルータのアドミニストレータが設定した事前定義ポリシーに基づいて
経路のフィルタリングやその属性の処理が行われるところです。


・Loc-RIB


Loc-RIBはルータが自分自身のBGPルーティング決定を行うために使うものです。
次にルータはLoc-RIBに入ったすべてのBGP経路を出力ポリシーエンジンにおくります。
出力ポリシーエンジンとはBGP経路をAdj-RIB-Outに入れる前にフィルタリングと処理を行うために
ルータのアドミニストレータが設定した事前定義ポリシーです。


・Adj-RIB-Out


BGP経路が出力ポリシーエンジンを通過できるとその経路はAdj-RIB-Outに入ります。
Adj-RIB-OutはBGPスピーカーのピアごとにあります。Adj-RIB-Outに入った経路はBGPスピーカーごとにピアにアドバタイズされます。


BGP経路はそのアドバタイズ先であるBGPスピーカーごとにこのルーチンを繰り返します。


①BGPスピーカーがBGP経路を受信します。
②受信したBGP経路がAdj-RIB-Inに入れられます。
③BGP経路が入力ポリシーエンジンに送られます。
④入力ポリシーエンジンは管理者が設定したポリシーに基づいてフィルタリングと処理を行います。
  入力ポリシーエンジンによって振るい落とされたBGP経路はここで破棄されます。
⑤残りのBGP経路がLoc-RIBに転送されます。
⑥BGPスピーカーはLoc-RIBに経路を格納します。これらの経路を使って経路を決定します。
⑦BGP経路は出力ポリシーエンジンに転送されます。
⑧出力ポリシーエンジンは管理者が設定したポリシーに基づいてフィルタリングと処理を行います。
  出力ポリシーエンジンによって振るい落とされたBGP経路はここで破棄されます。
⑨出力ポリシーエンジンを通過できたBGP経路はAdj-RIB-Outに転送されます。
⑩受信した経路はAdj-RIB-Outに格納されます。
⑪Adj-RIB-Outに格納されたすべての経路がBGPスピーカーのすべてのピアにアドバタイズされます。


BGPスピーカーがどの経路を受け入れるのか、ローカルで使用する経路、ピアにアドバタイズする経路を決定するプロセスのことを決定プロセスと言います。


決定プロセスは次の3つのフェーズで成り立っています。


 Phase-1 フェーズ1では近隣するASから学習した経路の優先度を計算します。優先度の最も高い経路のローカルASのBGPスピーカーへのアドバタイズも行います。
 Phase-2 指定した宛先までどの経路が最適か決定します。次にこの経路をLoc-RIBに格納します。BGPスピーカーはこのフェーズの間にインストールされた経路を使ってBGPルーティングの決定を行います。
 Phase-3 出力ポリシーエンジンに設定されたポリシーに基づいて近隣するASのピアにどの経路をアドバタイズするか決定するフェーズです。また、このフェーズの間に経路集約を行うこともできます。


CiscoのBGP実装では経路選択のために以下の10個のステップを取り入れています。


  1. 経路がアクセス不能なネクストホップを指定している場合、その経路を破棄
  2. weightの最も大きい経路を優先
  3. weightが同じ場合、local preferenceの最も大きい経路を選択
  4. local preferenceが同じ場合、自身を送信元とする経路を優先
  5. 経路が送信されなかった場合、AS_PATHの最も短い経路を優先     
  6. AS_PATH長が同じ場合、orijinタイプの最も低い経路を優先
  7. originコードが同じ場合、MED属性の最も低い経路を優先 <------ 通常はここまでで勝負あり!
  8. MEDが同じ場合、内部経路よりも外部経路を優先
  9. それも同じ場合、最低メトリックのIGP近隣ルータを通る経路を優先
  10. BGPネイバールータIDが最も低い経路を優先


■経路フィルタリング


BGP経路フィルタリングは様々な理由で使われます。BGPの属性の処理に使われると経路に対する見方に影響を及ぼすことになります。経路フィルタリングを使って特定の経路に関しBGPスピーカでの受け入れやスピーカーによる経路広報を許可または拒絶することもできます。BGP経路フィルタリングは入力または出力ののどちらかとして行われ、以下の複数の方法があります。

  1. route-mapに基づくフィルタ
  2. ネットワーク番号に基づくフィルタ( distribute-list )
  3. AS-Pathに基づくフィルタ( filter-list )
  4. Prefixに基づくフィルタ( prefix-list )

実際の設定方法については後述します。



 関連記事
 BGPの経路フィルタリング
 BGPの経路制御
 BGP (GlobalAS)の設定
 BGP (PrivateAS)の設定
 Copyright(C) 2003-2015 UnixPower on Networking All rights reserved.