iBGPはルータ間をフルメッシュに接続する必要があります。
iBGPの解説記事
iBGPはルーティングループを回避するためにフルメッシュでは接続するなど、iBGPおよびeBGPの解説記事
iBGPのルータをフルメッシュに接続する必要性があるため、AS内のBGPルータの台数が増えるとiBGPのpeerの数が多くなりスケールの問題が発生します。
AS内のルータn台 peer数 = n * (n - 1) / 2 例:4台構成 4 x (4-1) / 2 = 6 peer
iBGPのpeer数を接続数を減らす技術として
- ルートリフレクタ
- コンフェデレーション
があります。今回はルートリフレクタ(RFC4456)の解説します。
BGP ルートリフレクタ
iBGPを受信した経路をiBGPに反射(リフレクタ)する機能がルートリフレクタ(以下RRと記載)になります。
図1ではAS10が3台(R11,R12,R13)のルータで構成されています。本来はフルメッシュに接続する必要があるため、R11-R13間にiBGPの設定が必要です。RRの設定がない場合はAS20からの20.0.0.0/8の経路をR12でiBGPで受信した経路はiBGPに送信しないルールがあるため、R13に経路が到達しません。
今回はRRを利用することでR11-R13間のiBGPのpeer設定なしでR12がRRとしてクライアントの経路を反射することでR13まで経路が到達する形になります。
ルートリフレクタ用語
- ルートリフレクタ
経路を反射するルータがルートリフレクタ - クライアント
反射する経路を受け取るルータをクライアント - 非クライアント
上記図では登場しませんが、通常のiBGPを接続されているのは非クライアント - クラスタ
ルートリフレクタとクライアントの集まりをクラスタ
ルートリフレクタ動作
クライントから受信した経路 | ベストパスの経路は、全てのクライアント、非クライントともにリフレクタする。 |
非クライントから受信した経路 | ベストパスの経路は、全てのクライントにリフレクタする。非クライントには経路を送信しない |
eBGPから受信した経路 | ベストパスの経路は、 全てのクライアント、非クライントに経路を送信(従来(ルートリフレクタ設定前)と同じ動作) |
ルーティングループを回避のため追加されたパスアトリビュート
フルメッシュで接続する目的の一つにiBGPの経路をスプリットホライズンにすることでループを回避していました。RRはルーティングループを回避するために、下記2つのアトリビュートを追加することで実現しています。
ORIGINATOR_ID (Type 9)
RRが反射する際に追加されるパスアトリビュート
経路を反射する元のルータのRouter_IDを ORIGINATOR_ID として格納されます。ただし、すでに ORIGINATOR_ID が既に格納されている場合は変更しません。結果、ルートリフレクタを複数通過してもLocalAS内での経路の起点となる識別情報となります。
経路を受け取った側は、 ORIGINATOR_ID と自身のROUTER_IDが一致した経路を廃棄します。
Updateメッセージ パラメータ | 説明 |
---|---|
Type Code | 9 |
属性 | Optional Non Transitive ( 実装によっては識別できない可能性がある。その場合には、他BGPネイバーには通知しない。) |
CLUSTER_LIST (Type10)
図1のようにセグメント内にRRを1台しかない場合はシングル構成はRRが障害が発生するとセグメント内のBGPを維持することができない。そのため実際の構成はセグメント内にRRを複数台用意して冗長化する。冗長化するにあたりループを防止する仕組みに利用される。
RRが反射する際に追加されるパスアトリビュート(MUST)
RRが反射する際に自身の CLUSTER_ID を CLUSTER_LIST に追記します。別のRRがさらに反射する際も同様にRRのCLUSTER_ID を CLUSTER_LISTの先頭に追加することでリストを作成する。
RRが受信した経路の CLUSTER_LIST 内に自身の CLUSTER_ID が含まれる場合は経路を廃棄します。(e-BGP のAS-PATH と同様のループ防止の仕組み)
ベストパスセレクションの際に CLUSTER_LIST の長さが短い経路を優先します。CLUSTER_LISTがない場合は長さを0とする。
CLUSTER_ID はクラスタ内のRRは同一の値を設定する必要があります。CLUSTER_IDを設定していない場合は、自身のROUTER_IDがCLUSTER_IDとなります。
Updateメッセージ パラメータ | 説明 |
---|---|
Type Code | 10 |
属性 | Optional Non Transitive ( 実装によっては識別できない可能性がある。その場合には、他BGPネイバーには通知しない。) |
BGPテーブル
R11 show ip bgp 20.0.0.0 の結果
1 2 3 4 5 6 7 8 9 10 11 12 |
R11#show ip bgp 20.0.0.0 BGP routing table entry for 20.0.0.0/8, version 4 Paths: (1 available, best #1, table default) Advertised to update-groups: 3 Refresh Epoch 1 20 20.11.20.20 from 20.11.20.20 (20.20.20.20) Origin IGP, metric 0, localpref 100, valid, external, best rx pathid: 0, tx pathid: 0x0 Updated on Dec 26 2021 08:44:13 UTC R11# |
R20(AS20)からeBGPで経路を受信 external
R12 show ip bgp 20.0.0.0 の結果
1 2 3 4 5 6 7 8 9 10 11 12 |
R12#show ip bgp 20.0.0.0 BGP routing table entry for 20.0.0.0/8, version 6 Paths: (1 available, best #1, table default) Advertised to update-groups: 2 Refresh Epoch 1 20, (Received from a RR-client) 20.11.20.20 (metric 2) from 10.11.11.11 (10.11.11.11) Origin IGP, metric 0, localpref 100, valid, internal, best rx pathid: 0, tx pathid: 0x0 Updated on Dec 26 2021 08:44:13 UTC R12# |
R11(ルートリフレクタ クライント)からiBGPでクライントからの経路を受信 Pathアトリビュートに変化なし external -> から internal に変わる
R13 show ip bgp 20.0.0.0 の結果
1 2 3 4 5 6 7 8 9 10 11 12 |
R13#show ip bgp 20.0.0.0 BGP routing table entry for 20.0.0.0/8, version 6 Paths: (1 available, best #1, table default) Not advertised to any peer Refresh Epoch 2 20 20.11.20.20 (metric 3) from 10.12.12.12 (10.12.12.12) Origin IGP, metric 0, localpref 100, valid, internal, best Originator: 10.11.11.11, Cluster list: 10.12.12.12 rx pathid: 0, tx pathid: 0x0 Updated on Dec 26 2021 08:44:13 UTC R13# |
R12(ルートリフレクタ)は R11(ルートリフレクタクライアント)からの 20.0.0.0 の経路を反射するそのさいに、 Originator 10.11.11.11 ( R11のRouter-ID ) , Cluster List 10.12.12.12 ( R12 のCLUSTER_ID) のパスアトリビュートが追加される。
※Cluster IDが設定していないため、Router-ID(10.12.12.12)が格納されます
パケットキャプチャー
BGP UPDATE Message 20.0.0.0/8 From R11 To R12
BGP UPDATE Message 20.0.0.0/8 From R12 To R13
リフレクタ(反射)した経路には Path Attribute ORIGINATOR_ID ( 10.11.11.11) CLUSTER_LIST ( 10.12.12.12 ) が追加される。
Cisco IOS-XE 設定Config
図ⅠをCiscoIOS-XEで設定したshow run の結果
スポンサーリンク
RFC
BGP記事一覧
- BGPとは
- BGP Message (メッセージ)
- BGP neighbor 状態
- BGP i-BGP/e-BGP の違い
- BGP next-hop-self
- BGP ルートリフレクタ ( Route-Reflector )
- BGP パスアトリビュート
BGP RFC/関連サイト
- RFC4271 A Border Gateway Protocol 4 (BGP-4)
- RFC6793 BGP Support for Four-Octet Autonomous System (AS) Number Space
- IANA Border Gateway Protocol (BGP) Parameters
BGP参考図書
私が所持しているBGP関連の本を紹介します。ただし絶版になっている本も紹介していますのでご容赦ください。