BGPとは
BGP(Border Gateway Protocol)とは、AS間(自律システム)を制御する動的ルーティングプロトコルです。ルーティングプロトコルにはIGPとEGPがあります。EGPが外部で使用するルーティングプロトコルでありBGPを指すものとなります。参考ですがIGPは内部で使用するルーティングプロトコルでありOSPFやEIGRPなどがあります。
BGPはパスベクタ型(パスベクトル型)ルーティングプロトコルと言われパスアトリビュートと言われる情報をもとに最適なルートを計算、制御します。
BGPで使用されるAS
BGPでは上述した通りAS間を制御するプロトコルですがそのASを識別するために番号を割り当てます。AS番号は16ビットで構成されるため6553通りの番号が使用できますがそのうち1から64511はグローバルASとしてインターネットで一意のAS番号として使用されています。
64512から65535はプライベートで使えるAS番号となっており、企業内で使用する番号です。企業内ではこの範囲の数字が使用されていると思いますが制限があるからこの数字のみ使用されています。
また、BGPではそれぞれのASの接続のパターンによってASの種類が変わってきます。以下3つのASの種類が存在します。
- スタブAS
- トランジットAS
- 非トランジットAS
スタブAS
スタブASとは、1つのASとだけ接続してるASのことです。シングルホームASともいわれます。スタブは英語で端などの意味があり、その名の通り行き止まりのASのことをスタブASと言います。スタブASは自ASのルートしかもっていないため外部へ通信するときは基本的にデフォルトルートのみをアドバタイズします。

トランジットAS
トランジットASは複数のASに対して他ASのルート情報をアドバタイズするASのことを指します。RT1はRT2を経由してRT4に通信することができます。ほかのAS形態と同じく自ASのルート情報もアドバタイズします。

非トランジットAS
非トランジットASは複数のASに対して他ASのルート情報をアドバタイズしないASのことを指します。RT1はRT2を経由してRT4に通信することができません。非トランジットASは自ASのルート情報のみアドバタイズします。

BGPの通信の流れ
BGPの通信の流れを以下に示します。

| 通信 | 内容 |
|---|---|
| ①TCP3ウェイハンドシェイク | BGPではTCPのポート番号179を使用して信頼性のある通信を行っています。 そのためまずBGPの通信を行う際や終了するはTCPの3ウェイハンドシェイクを行います。 OSPF等ほかのルーティングプロトコルはUDPを使用しているので他とは違う特徴となっています。 |
| ②BGP Open | BGPルータ同士でネイバーとセッションを確立するためのメッセージです。 Openメッセージには自分のASやBGPのバージョン、HoleTime、ルータIDなどが含まれています。 |
| ③BGP KeepAlive | BGPのネイバー関係を維持するためのメッセージです。 対向からHoleTimeの時間よりも長くKeepAliveメッセージが届かなくなったらダウンしたと判断します。 Openメッセージに対する反応にも使用されます。 |
| ④BGP Update | 経路情報を更新するためのメッセージです。 トポロジの変更など経路情報が変更した際に送信します。 |
| ⑤BGP Notification | エラー等を通知するためのメッセージです。 ネイバーが張れないなどのエラーを検知してNotificationメッセージを送信した後、BGPセッションの切断に進みます。 |
BGPの基本設定
IP ルーティングを有効にします。
Router(config)#ip routing
BGP ルーティング プロセスを有効にし、AS 番号を割り当てて、ルータ設定モードに入ります。AS 番号は 1 ~ 65535 の範囲で指定でき、64512 ~ 65535 はプライベート自律番号として指定されます。
Router(config)#router bgp autonomous-system
ネットワークをこの AS に対してローカルとして設定し、BGP テーブルに入力します。
Router(config-router)#network network-number [mask network-mask] [route-map route-map-name]
IP アドレスによって識別されるネイバーが指定された AS に属することを指定して、BGP ネイバー テーブルにエントリを追加します。
Router(config-router)#neighbor {ip-address | peer-group-name} remote-as number
EBGP の場合、ネイバーは通常直接接続され、IP アドレスは接続のもう一方の端にあるインターフェースのアドレスになります。
IBGP の場合、IP アドレスは任意のルータ インターフェイスのアドレスにすることができます。
(オプション) BGP と IGP 間の同期を有効にします。
Router(config-router)#synchronization
(オプション) スイッチで NSF 認識を有効にします。デフォルトでは、NSF 認識は無効になっています。
Router(config-router)#bgp graceful-restart