BGP-4
BGP-4 とは
インターネットの IP アドレスは ICANN が管理しており、AS(Aytibiniys System)と呼ばれる組織(ISP 等)に IP アドレスを割り振っている。 この AS 間でルーティング情報をやり取りするプロトコルを EGP(Exterior Gateway Protocol)と呼び、AS 内でのプロトコルを IGP(Interior Gateway Protocol)と呼ぶ。
AS にもいくつかの種類が存在する
type | 説明 |
---|---|
Multihomed AS | 複数の他の AS への接続を維持する AS。ある AS から別の AS に向かう途中でトラフィックを通過させることはできない |
Stub AS | 他の 1 つの AS だけに接続されている AS |
Transit AS | ある AS とリンクしている別の AS の間でデータトラフィックを伝送する |
Internet Exchange Point AS | ISP またはコンテンツ配信ネットワーク(CDN) が自律システム間でインターネットトラフィックを交換するための物理インフラストラクチャ |
BGP は EGP のプロトコルであり、Border Gateway Protocol の略である。
BGP は TCP を使用しており、AS 間の死活監視は KEEPALIVE メッセージを送信し合い接続できることを確認している。また、 NOTIFICATION メッセージは、エラーまたは特別な条件に応答して送信される。 異なる AS とのピアを EBGP(External BGP)と呼び、同じ AS とのピアを IBGP(Internal BGP)と呼ぶ。
BGP の主な機能は、他の BGP システムとルーティング情報を交換することであり、このルーティング情報には、通過する自律システム(AS)のリストに関する情報が含まれている。
BGP で使用されるメッセージは以下である。
- OPEN
- CP 接続が確立された後、両側から送信される最初のメッセージ
- UPDATE
- BGP ピア間でルーティング情報を転送
- KEEPALIVE
- 死活監視
- NOTIFICATION
- エラー時に送信
以後、BGP スピーカという言葉登場するが、これは BGP を実装するルータのことを意味している。また、図に登場する赤色で塗られたものが BGP スピーカを表す。
UPDATE メッセージではネットワーク層到達可能性情報(Network Layer Reachability Information)とパス属性がやり取りされる。
ネットワーク層到達可能性情報とは IP アドレスプレフィックスのことを指し、ネットワークアドレスのことである。メッセージ内では各パス属性は、可変長の 3 つの属性タイプ
, 属性長
, 属性値
で構成されている。
パス属性には様々な種類が存在する。
-
ORIGIN
パス情報の起点を定義する。IGP, EGP, それ以外(INCOMPLETE)の 3 種類が存在する。
-
AS_PATH
伝達されるルーティング情報が通過した自律システムを識別する。各 AS_PATH セグメントは、3 つの
パスセグメントタイプ
,パスセグメント長
,パスセグメント値
で構成している。AS_PATH には 2 種類パスセグメントタイプ存在し、
AS_SET
とAS_SEQUENCE
がある。-
AS_SET
UPDATE メッセージ内のルートが通過した無順序の AS
-
AS_SEQUENCE
UPDATE メッセージ内のルートが通過した AS の順序
BGP スピーカーは、別の BGP スピーカーの UPDATE メッセージから学習したルートを伝播するときに、ルートの送信先の BGP スピーカーの場所に基づいてルートの AS_PATH 属性を変更する。
-
内部ピアの場合(IBGP)
AS_PATH を変更しない
-
外部ピアの場合(EBGP)
外部ピアの場合は次の 3 パターンに分かれる。AS_PATH は先頭が一番最後とみなされるため、先頭に要素を追加する。
-
AS_PATHの最初のパスセグメントのタイプがAS_SEQUENCEの 場合
独自の AS 番号を最後の要素として付加する。ただし、AS_PATH セグメントでオーバーフローが発生する場合(つまり、255 AS を超える場合)、タイプ AS_SEQUENCE の新しいセグメントを追加し、この新しいセグメントに独自の AS 番号を追加する。
-
AS_PATHの最初のパスセグメントがタイプAS_SETである場合
タイプ AS_SEQUENCE の新しいパスセグメントを AS_PATH に追加し、そのセグメント内の独自の AS 番号を追加する。
-
AS_PATHが空の場合
AS_SEQUENCE タイプのパスセグメントを作成し、独自の AS をそのセグメントに配置し、そのセグメントを AS_PATH に配置する。
-
BGP スピーカーがルートを発信する場合は次の 2 パターンになる。
-
内部ピアの場合
空の AS_PATH 属性を追加する。
-
外部ピアの場合
AS_PATH 属性に、タイプ AS_SEQUENCE のパスセグメントの独自の AS 番号を追加する。
-
-
NEXT_HOP
次の宛先として使用する必要があるルーターの IP アドレスを定義する。
-
MULTI_EXIT_DISC
外部(AS 間)リンクで使用して、同じ隣接 AS への複数の出口または入口を区別する。 外部の AS から自 AS へ向かってくる、内向きの通信を制御しており、隣接 AS から受信した MULTI_EXIT_DISC 属性は、他の隣接 AS に送信する UPDATE メッセージにこの属性を含めない。
送信元から宛先 A へは 1,2 の経路を使った方がよく、宛先 B へは 3,4 の経路を使った方がいい場合などに、MULTI_EXIT_DISC を設定することで宛先に応じて使用する経路を変更することができる。(ここでの宛先は
1.1.1.0/24
などのネットワークを表す。) -
LOCAL_PREF
BGP スピーカーはこれを使用して、広告されたルートに対する広告するスピーカーの優先度を他の内部ピアに通知する。 外部(AS 間)リンクで使用して、同じ隣接 AS への複数の出口または入口を区別する。 自 AS から外部へ送信される、外向きの通信を制御し、外部ピアに送信する UPDATE メッセージにこの属性を含めない。
以下の図のように宛先への経路が 2 通りあり、片方が帯域幅が広いということが事前にわかっている場合などに、LOCAL_PREF を設定することで帯域幅の広い経路を優先して使用するようになる。
-
ATOMIC_AGGREGATE
プレフィックスが集約されたものであることを表す。(フラグの役割)
-
AGGREGATOR
プレフィックスを集約した (最後の)AS 番号および BGP スピーカーの BGP 識別子を表す。
経路を決定する優先度は以下の表の上から順に優先的に判断される。(ネットワークスペシャリスト 令和 3 年 午後 2 問 2 より)
評価順 | 説明 |
---|---|
1 | LOCAL_PREF の値が最も大 きい経路情報を選択 |
2 | AS_PATH の長さが最も短い経路情報を選択 |
3 | ORIGIN の値が IGP, EGP, INCOMPLETE の順で選択 |
4 | MULTI_EXIT_DISC の値が最も低い経路情報を選択 |
5 | eBGP ピアで受信した経路情報, iBGP ピアで受信した経路情報の順で選択 |
6 | NEXT_HOP が最も近い経路情報を選択 |
7 | ルータ ID が最も小さい経路情報を選択 |
8 | ピアリングに使用する IP アドレスが最も小さい経路情報を選択 |
例えば、同じ宛先ネットワークアドレスの経路情報が 2 つ存在した場合(以下の図)に上から順に評価し、どちらか 1 つに絞ることができた時点で評価を終了する。
AS 1 から AS7 までのパスは 2 つ存在する。
- AS1, AS4, AS5, AS7
- AS1, AS2, AS3, AS6, AS7
2 つのLOCAL_PREF
が同じであった場合に、AS_PATH の長さで経路を判定し、
1 の方が 2 よりも長さが短いので、1 番の経路が選択される。
参考
- https://www.nic.ad.jp/ja/newsletter/No35/0800.html
- https://www.allied-telesis.co.jp/support/list/router/ar450s/docs/overview_20IP_24RTBGP.html
- https://www.allied-telesis.co.jp/support/list/switch/x930/rel/5.4.5-0.1/002105b/docs/overview-35.html
- https://en.wikipedia.org/wiki/Autonomoussystem(Internet)