BGPについての基本

CCNP受験のためにBGPについてまとめました。

要約

BGP(Border Gateway Protocol)はルーティングプロトコルの一つ EGP(Exterior Gateway Protocol)に分類 AS(Autonoumous System)の番号が同じ場合はiBGP/違う場合はeBGP ルーティングアルゴリズムはパスベクタプロトコル(path vector protocol;pvp)を使用 TCP179を使用 CIDR(Classless Inter-Domain Routing)対応 IPv6対応

BGPはルーティングプロトコルの一つ

ルーティングプロトコルはざっくり言ってしまえば、ネットワークの端から端まで繋がるためのプロトコルです。OSI参照モデルでいうところのレイヤー3のプロトコルに該当します。IPアドレスを用いた通信の到達可能性(reachability)を担保するためにルーティングプロトコルは存在します。 BGP(Border Gateway Protocol)はそのルーティングプロトコルの一種です。

EGPに分類される

ルーティングプロトコルはさらにIGP(Interior Gateway Protocol)とEGP(Exterior Gateway Protocol)に分類されます。IGPは主にイントラネット(個人的もしくは企業内部でのみ使用されるネットワーク)で使用されます。一方EGPはISP(Internet Service Provider)、いわゆるプロバイダー同士を結び付けられるために使用されることを目的としています(例外は後述のiBGP)。

TCPポート179を使用した隣接関係

BGPで隣接関係(ルート情報を交換し合う関係)を築くためには特定のピア(peer)のIPアドレスを指定する必要があります。また、そのIPアドレスが到達可能であることも必要です。隣接関係を構築やルート情報を交換するために使用するポートがTCPポート179です。

eBGPとiBGP

BGPはIANA(Internet Assigned Number Authority)によって管理されるAS(Autonoumous System)番号を用いて動作します。AS番号は16bitから構成され、個人的に使用できる番号は64512から65535の範囲であり、特にプライベートAS番号と呼ばれます。BGPが動作する際に同じAS番号同士の場合はiBGP(internal BGP)、異なるAS番号同士の場合はeBGP(external Border Gateway Protocol)が動作します。 iBGPとeBGPではルート情報の伝播の仕方が異なります。eBGPがピアとして追加された場合はeBGPとiBGP全てにルート情報が伝播します。しかしiBGPがあるiBGPに追加された場合、eBGPへはルート情報が伝播しますが他のiBGPに伝播しません。これはiBGPがフルメッシュで繋がっていることを前提としているため、ピア関係をそれぞれのiBGPピアと隣接関係を築く必要があります。 またeBGPは直接繋がっていることを前提としているためTTLがデフォルトで1に設定されています。一方iBGPはそういった制限がありません。

パスベクタプロトコル(Path Vector Protocol;PVP)

BGPはルーティングアルゴリズムにパスベクタプロトコルを採用しています。パスベクタプロトコルは、IGPで使用されるような帯域幅やホップ数といったメトリックを使用しません。代わりにルート情報に属性(attribute)を埋め込んでピアに伝達し、そのピアはルートに紐づいた属性に基づいたルーティングが行われます。

CIDR(Classless Inter Domain Routing)対応

IPアドレスをクラスA,クラスB,クラスCに分類したクラスフルアドレッシングだとルートが集約できずに余分なルート情報を送ることになり、ルーターのリソースが無駄となります。BGPは現在一般的に用いられているversion4でCIDRをサポートすることで柔軟なルート集約が行えるようになっています。