BGPの全体像
BGP は、AS 間で経路情報を交換し、経路属性とポリシーに基づいて経路を選ぶ Path Vector 型のルーティングプロトコル。
BGP は Border Gateway Protocol の略で、インターネットの AS 間ルーティングで使われる。OSPF や EIGRP のように組織内の最短経路を求める IGP とは違い、BGP は「どの AS を通るか」「どの経路を優先するか」というポリシー制御が重要になる。
何のためにあるのか
Section titled “何のためにあるのか”BGP は、組織や事業者の境界を越えて経路情報を交換するために使う。
主な用途は次のとおり。
- インターネット接続
- 複数 ISP とのマルチホーム
- AS 間の経路制御
- 大規模ネットワーク内の経路ポリシー制御
- VPN や EVPN などでの経路情報配布
AS は Autonomous System の略で、単一の管理ポリシーで運用されるネットワークの単位である。
AS 65001 ↓ eBGPAS 65002 ↓ eBGPAS 65003BGP は AS 番号を使って経路の通過経路を表す。AS_PATH 属性には、経路が通ってきた AS の列が入る。
iBGPとeBGP
Section titled “iBGPとeBGP”| 種類 | 意味 |
|---|---|
| eBGP | 異なる AS 間で張る BGP |
| iBGP | 同じ AS 内で張る BGP |
eBGP は AS 間で経路を交換するために使う。iBGP は、外部から受け取った BGP 経路を同じ AS 内へ配布するために使う。
iBGP には、学習した iBGP 経路を別の iBGP ピアへそのまま広告しないという重要な性質がある。そのため、大きな AS ではフルメッシュ、Route Reflector、Confederation などを考える必要がある。
BGP は属性を使って経路を選ぶ。
代表的な属性は次のとおり。
| 属性 | 役割 |
|---|---|
| AS_PATH | 経路が通ってきた AS の列 |
| NEXT_HOP | 次に転送すべきルータ |
| LOCAL_PREF | AS 内でどの出口を優先するか |
| MED | 隣接 AS にどの入口を使ってほしいかを伝える値 |
| ORIGIN | 経路の由来 |
| COMMUNITY | 経路へ付けるタグのような属性 |
BGP は単純にホップ数や帯域だけで経路を決めるわけではない。属性とポリシーによって、意図した経路制御を行う。
基本的な動き
Section titled “基本的な動き”1. TCP 179 で BGP ピアを確立する2. OPEN メッセージで能力や AS 番号などを確認する3. UPDATE メッセージで経路情報を交換する4. 属性に基づいてベストパスを選ぶ5. 選んだ経路をルーティングテーブルへ反映する6. 必要に応じて他のピアへ広告するBGP は TCP を使う。OSPF や EIGRP のように直接 IP 上で独自の隣接関係を作るのではなく、TCP セッション上で経路情報を交換する。
よくある誤解
Section titled “よくある誤解”| 誤解 | 実際 |
|---|---|
| BGP は常に最短経路を選ぶ | BGP は属性とポリシーに基づいて経路を選ぶ |
| BGP はインターネット専用である | 大規模内部ネットワークや VPN / EVPN でも使われる |
| iBGP と eBGP は AS 番号以外同じである | 経路広告ルールや next-hop の扱いなどが異なる |
| AS_PATH が短ければ必ず勝つ | LOCAL_PREF など、より先に評価される属性がある |