BGPとは
BGP ( Border Gateway Protocol )とはルーティングプロトコル(パスベクタ型)の一つです
主に大規模なネットワーク構成で使用されます。
AS内のルート情報に付加されたパスアトリビュートを送信して最適経路を決定します。
宛先ネットワークまでに経由するASが少ない経路が最短ルートとなります。
TCPポート179を使用して、TCP接続を行い信頼性のあるルーティングアップデートを実行します。
定期的なルーティングアップデートを行わず、変更発生時にのみ差分アップデートを実行します。
BGP用語 | 説明 |
BGPスピーカー | BGPを実行しているルータ |
パスアトリビュート | 最適ルートを判断するために経路情報に付けられる値 |
BGPネイバー | BGPを交換する相手の事。BGPでは手動でネイバーを定義する必要がある |
BGPネイバーテーブル | ネイバー情報が記載されているデータテーブル |
BGPテーブル | ネイバーと交換するUpdateパケットにあるルート情報がインストールされたBGPのルーティングテーブル。 「ルート情報とパスアトリビュート」の情報が含まている。 BGPで学習した複数のルート情報のなかで、ルート選択の決定プロセスで選択されたルートだけがルーティングテーブルにインストールされる(宛先への経路は1つだけが選択される) |
BGPピア | BGPネイバールータのこと。 |
ASとは
ASとはAutonomous Systemの略で、自律システムとも呼ばれています。
ASは会社・国などが1つにまとまったグループのようなイメージです。
・グローバルAS番号:1〜64511
インターネット全体で一意のAS番号となり、個人で勝手に使用できずIANAによって管理されています。
・プライベートAS番号:64512〜65535
組織内部で自由に使用できるAS番号となり、他のNWと被っていても問題ない。
ASの種類 | 説明 |
スタブAS | 外部の1つのASとだけ接続しているASの事 |
トランジットAS | 複数のASと接続していて、外部AS間のトラフィックを通過させるASの事 |
非トランジットAS | 複数のASと接続しているが、外部AS間のトラフィックは通過させないASの事 |
iBGP eBGPとは
同じAS内で接続するグループをiBGPと言い、異なるASで接続するグループをeBGPと言います。
iBGPピア・・・同じAS内でBGPを交換するルータ
eBGPピア・・・異なるASをでBGPを交換するルータ
iBGPは
経路のルーティングループを防ぐため、iBGPで受信した経路はiBGP経路に送信しないスプリットホライズンという仕様となっています。
なのでAS内のiBGPピアに経路を教えるためにはフルメッシュで接続します。
IBGPパケットのTTLが「255」でAD値が「200」です
eBGPは
eBGPで受信した経路は他のeBGPに送信します。iBGPから受信した経路もeBGPに送信します。
eBGPでは自身のAS番号をAS-Pathアトリビュートに追加して経路を広報します。
経路を受信する際は自身のASが含む経路を廃棄する事で経路のルーティングループを防ぎます。
eBGPのパケットのTTLは「1」となるので、経路交換をするeBGPピアとは直接接続している必要があります。
BGPフロー
OPEN | ルータ間でBGPピアを確立し、情報交換を実施 |
KeepAlive | 生存確認 |
UPDATE | ルーティング情報の更新 |
NoTIFICATION | BGPピア切断 |
BGP状態 | 説明 |
Idle | BGPの設定直後の状態でBGPネイバーへのIP到達性があればTCP接続を開始する BGPネイバーへのIP到達性があれば「Connect」状態へ遷移する。 |
Connect | TCP接続完了待ち状態。 TCP接続が成功した場合はOPENメッセージを送信して「OPENSent」状態へ遷移する。 TCP接続が失敗した場合は「Active」状態へ遷移。 |
Active | TCP接続を試行している状態。 ネイバーのIPアドレス、AS番号、認証パスワードの設定ミスがある場合、「idle→Active→idle」という状態を繰り返す。 |
OpenSent | OPENメッセージを送信し、ネイバーからのOPENメッセージ確認を待っている状態。 OPENメッセージが受理できる場合、KEEPALIVEメッセージの送信を開始して、OPENConfirm状態に遷移。 受理できない場合は、NOTIFICATIONを送信してidle状態へ遷移。 |
OpenConfirm | KEEPALIVEメッセージ、または、NOTIFICATIONメッセージを待っている状態。 KEEPALIVEを受信すれば「Established」状態へ遷移(BGPネイバー確立の成功) AS番号の不一致などによってNOTIFICATIONを受信した場合は「idle」状態へ遷移。 |
Established | BGPネイバーが正常に確立している状態。 UPDATEメッセージを交換できBGPテーブルやルーティングテーブルが生成される。 NOTIFICATIONメッセージを受信した場合には「idle」状態へ遷移する |
パスアトリビュート
パスアトリビュートはBGPで複数のルート候補がある場合に最適ルートを判断するために経路情報に付けられる値です。
タイプ | パスアトリビュート | 説明 |
Well-known mandatory | ORIGIN | 全ての BGP ルータが認識すべき必須属性 全てのUpdateメッセージに含まれていて、 この属性に値が無いとエラーになる |
AS_PATH | ||
NEXT_HOP | ||
Well-known discretinary | LOCAL_PREF | 全ての BGP ルータが認識できる任意属性 Updateメッセージに含むかは任意 |
ATOMIC_AGGREGATE | ||
Optional transitive | AGGREGATOR | ルータは認識できない可能性があるが、受け取ったら他のネイバーにもアドバタイズする |
COMMUNITY | ||
Optional Non-transitive | MULTI_EXIT_DISC | ルータは認識できない可能性がある 受け取っても他のネイバーにもアドバタイズしない |
ORIGINATOR_ID | ||
CLUSTER_LIST |
BGPルーティングベストパス選択手順
優先度 | 属性名 | 説明 |
1 | WEIGHT | 最も大きいルートを優先。 ローカルルータのみで使用、ネイバーにアドバタイズはしない デフォは ローカルルータで追加したルートが「32768」、それ以外のルートは「0」 |
2 | LOCAL_PREF | 値が大きいルートを優先される。 自身が所属するAS内でのみ有効 ※デフォルト値は「100」 |
3 | BGP設定時のコマンド | ローカルルータ自身(networkコマンドなど)で追加したルート |
4 | AS_PATH | 経由したAS数が最も少ないルートが優先 |
5 | ORIGIN | ( IGP < EGP < Incomplete )の順で優先 |
8 | MED (MULTI_EXIT_DISC) |
(メトリック)が最も小さいルートを優先 デフォルト値は「0」 |
9 | - | IBGPで学習したルートよりもEBGPで学習したルートを優先 |
10 | - | ネクストホップに対して最小のIGPメトリックを持つルートを優先 |
コメント