クイックダウンロード:
BGPルートリフレクターは、1つのルーターがAS内のすべてのピアにルートを反映できるようにすることで、フルメッシュiBGPの要件を不要にし、大規模なBGP展開を運用上実現可能にします。
-
ルートリフレクタがない場合、N個のルーターを持つASではN*(N-1)/2個のiBGPセッションが必要となり、ルーターが100個の場合、管理すべきセッション数は4,950個になります。
-
ルートリフレクタは、クラスタIDとORIGINATOR_ID属性を使用して、ルーティングループを防ぎつつ、スプリットホライズンルールを緩和します。
-
ルートリフレクタの冗長性は非常に重要です。単一のルートリフレクタは、iBGPトポロジー全体にとって単一障害点となります。
-
冗長性を確保するためにルートリフレクターをペアで配置し、iBGPセッションの状態とルーティングテーブルの健全性を監視して、AS全体の第一段階の可観測性シグナルとします。
フルメッシュネットワークトポロジーは、耐障害性の高いネットワークにとって不可欠な要素です。しかし、iBGPルータはiBGPネイバーから学習したルートをアドバタイズしません。BGPルートリフレクタはこの問題を解決し、AS内でのフルメッシュトポロジーとAS間でのルート伝播を可能にします。さらに、ルートリフレクタはiBGPネイバーシップの観点からネットワーク構成を簡素化し、スケーラビリティを向上させます。
BGPルートリフレクターを使い始めるにあたって、その仕組みを詳しく見ていき、実際に操作できるようにBGPルートリフレクターの設定手順を解説します。
BGPを理解する
ボーダーゲートウェイプロトコル(BGP)は、インターネット全体の運用を支える基盤となるプロトコルです。インターネットサービスプロバイダ(ISP)や大企業は、BGPを使用して自律システム(AS)を相互接続し、AS内のトラフィックをルーティングします。
BGPには、内部BGP(iBGP)と外部BGP(eBGP)の2種類があります。iBGPは同一自律システム(AS)内のルーターを接続し、外部BGP(eBGP)は異なる自律システム内のルーターを接続します。
BGPルートリフレクターを理解するには、iBGPがどのようにしてネットワークパスをネイバーにアドバタイズするのかを理解することが重要です。
eBGPはAS_PATH属性を使用してルーティングループを回避します。ルーターは、リストに自身のAS番号が含まれている場合、そのルートを破棄します。一方、iBGPはAS内で完全に動作するため、異なるアプローチが必要です。iBGPはスプリットホライズンルールを使用するため、BGPルーターがiBGPピアリングからルートを受信しても、そのルートを他のiBGPピアにアドバタイズしません。
iBGPルートアドバタイズメントの仕組み上、管理者は完全な接続性を確保するために、その仕組みを回避する必要があります。そのための3つの選択肢は以下のとおりです。
- フルメッシュトポロジー フルメッシュトポロジーでは、すべてのルーターが他のすべてのルーターとピアリングを確立する必要があります。その計算式はN(N-1)/2です。例えば、ルーターが10台ある場合、10(10-1)/2 = 45個のピアリングが必要になります。このトポロジーは、ネットワーク規模が大きくなるとすぐに手に負えなくなる可能性があります。
- ルートリフレクター ルートリフレクタとは、他のiBGPピアから学習したルートを反映する専用ルータです。すべてのルータは、ルートリフレクタとのみピアリング関係を確立します。10台のルータの場合、フルメッシュトポロジーと比較して、ピアリング数は45ではなく9になります。
- BGP連合 BGPコンフェデレーションは、必要なピアリング数を削減する代替手段であり、ルートリフレクタと併用される場合もあります。コンフェデレーションでは、ネストされた自律システムが元のASに組み込まれ、外部ピアに対しては単一のASとしてアドバタイズされます。ネストされた自律システムは相互にeBGPピアリングを形成するため、ルートリフレクタの使用を回避できます。
標準ルートリフレクタートポロジー
ルートリフレクタは、iBGPネットワークにおける経路伝播を簡素化する。しかし、同時に単一障害点も生み出す。ルートリフレクタがクラッシュすると、ネットワーク全体に影響が及ぶ。
ルートリフレクタをクラスタリングすることは、この問題に対する標準的な解決策です。クラスタ構成では、各ルートリフレクタにクラスタID(手動で設定することも、ルータIDから取得することもできる4バイトの文字列)が割り当てられます。クラスタ構成によっては、各ルートリフレクタに同じクラスタIDを割り当てる場合もあれば、それぞれに固有のIDを割り当てる場合もあります。
BGPルートリフレクタとiBGPルータの種類
iBGPルーターは大きく分けて、ルートリフレクター、ルートリフレクタークライアント、およびルートリフレクター非クライアントに分類されます。
BGPルートリフレクターは、ルート伝播に関していくつかのルールに従います。
- Route Reflectorクライアントから学習したルートは、他のRRクライアントおよびRR非クライアントに公開されます。
- RRの非顧客から受け取ったルート情報は、RRの顧客のみに広告されます。
- eBGPネイバーから学習した経路は、RRクライアントとRR非クライアントの両方に反映されます。
- 複数の経路が考えられる場合は、最適な経路のみが表示されます。
- ルートリフレクターは、ネクストホップアドレスを含むいかなる属性も変更できません。
Route Reflector を使用したルーティング ループの回避
ルートリフレクタを備えた iBGP ネットワークは、オプションの非推移的 BGP属性 ルーティングループを回避するための発信者IDとクラスタID。
発信元IDは、ルートを生成した実際のルーターIDです。ルーターがリスト内で自身の発信元IDを見つけると、そのルートを破棄するため、ループ防止に役立ちます。
Cluster-IDは、ルートリフレクタのルーターIDです。ルートリフレクタは、自身のCluster-IDから送信されたルートを破棄します。
ルートリフレクターを使用する場合、パス選択プロセスは、通常どおり標準のBGP属性に従って行われ、その後、オリジネーターIDとクラスタIDが評価されます。
- 発信者IDのない経路は、発信者IDのある反射経路よりも優先されます。
- クラスタリストが短いルートは、クラスタリストが長いルートよりも優先されます。
上記の基準が同点の場合、追加のBGP属性が考慮される可能性があります。
BGPルートリフレクターの設定方法
今回のチュートリアルでは、3台のルーターと中央に配置された1台のルートリフレクターというシンプルな構成を使用します。

この構成を作成するには、まず以下のコマンドを実行してください。
R1(config)#router bgp 100
R1(config-router)#neighbor 10.1.1.2 remote-as 100R3(config)#router bgp 100
R3(config-router)#neighbor 10.2.2.2 remote-as 100R2-RR(config)#router bgp 100
R2-RR(config-router)#neighbor 10.1.1.1 remote-as 100
R2-RR(config-router)#neighbor 10.1.1.1 route-reflector-client
R2-RR(config-router)#neighbor 10.2.2.3 remote-as 100
R2-RR(config-router)#neighbor 10.2.2.3 route-reflector-client上記のコードスニペットに示すように、ルートリフレクターの設定のみが異なります。この例では、R1とR3をRRクライアントとして指定しています。
次に、以下のコマンドを実行してR1にループバックアドレスを設定し、ルートリフレクタを介してR3にそのアドレスを通知できることを確認します。
R1(config)#router bgp 100
R1(config-router)#network 5.5.5.5 mask 255.255.255.255以下の「show」コマンドは、ルートリフレクターがRRクライアントからルートを受信したことを示しています。さらに、R3が1.1.1.1ループバックアドレスを認識しているかどうかを確認できます。
R2-RR#show ip bgp 5.5.5.5
BGP routing table entry for 5.5.5.5/32, version 2
Paths: (1 available, best #1, table default)
Advertised to update-groups:
2
Refresh Epoch 1
Local, (Received from a RR-client)
10.1.1.1 from 10.1.1.1 (10.1.1.1)
Origin IGP, metric 0, localpref 100, valid, internal, best
rx pathid: 0, tx pathid: 0x0R2-RR#show ip bgp neighbors 10.2.2.3 advertised-routes
BGP table version is 2, local router ID is 10.2.2.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*>i 5.5.5.5/32 10.1.1.1 0 100 0 i
Total number of prefixes 1最後に、以下のコマンドは、R3 がループバック アドレスを学習したことを示しており、注目すべき興味深いフィールドは「Originator」と「Cluster list」です。
ルートリフレクタは、スプリットホライズンルールをバイパスすることでネットワーク内のループに対処するため、オリジネーターを導入しました。この例では、オリジネーターはR1のIPアドレスです。iBGPルータは、自身のオリジネーターIPアドレスを含むルートを受け入れません。
もう一方の「クラスタリスト」フィールドは、ルートリフレクターのルーターIDです。単一のクラスタとは、ルートリフレクターとそのすべてのクライアントを指します。
R3#show ip bgp 5.5.5.5
BGP routing table entry for 5.5.5.5/32, version 0
Paths: (1 available, no best path)
Not advertised to any peer
Refresh Epoch 1
Local
10.1.1.1 (inaccessible) from 10.2.2.2 (10.2.2.2)
Origin IGP, metric 0, localpref 100, valid, internal
Originator: 10.1.1.1, Cluster list: 10.2.2.2
rx pathid: 0, tx pathid: 0製品概要
BGPルートリフレクターは、iBGPネットワークにおけるフルメッシュ接続に必要なピアリング数を削減します。BGPルートリフレクターの仕組みを理解すれば、これを利用してiBGPトポロジーを最適化し、ネットワークの耐障害性を向上させることができます。
覚えておくべき重要なポイントは以下のとおりです。
- BGPルートリフレクタは、iBGPネットワークにおけるルート伝播を簡素化します。
- ルートリフレクターのクラスタは、単一障害点を排除します。
- 発信者IDとクラスタIDを使用することで、ルーティングループを軽減できます。
BGPトポロジーを健全かつ監視可能な状態に維持してください。
LogicMonitorは、iBGPセッションの状態、ルートリフレクタの健全性、ルーティングテーブルの安定性を監視するため、コアルーティングインフラストラクチャに何らかの変更があった場合、チームはすぐにそれを把握できます。
よくあるご質問
BGPルートリフレクターとは何ですか?
BGPルートリフレクタ(RR)は、iBGPクライアントから受信したルートを他のiBGPピアに再アドバタイズするように設定されたiBGPルータです。これにより、iBGPルータがiBGPネイバーから学習したルートをアドバタイズすることを防止する通常のスプリットホライズンルールが緩和されます。このため、AS内のすべてのルータが他のすべてのルータと直接iBGPセッションを維持する必要がなくなります。
iBGPフルメッシュはなぜスケーラブルではないのですか?
フルメッシュ型のiBGPトポロジーでは、すべてのルータがAS内の他のすべてのルータと直接セッションを確立する必要があります。必要なセッション数はN*(N-1)/2の2乗に比例して増加します。ルータが50台のネットワークでは1,225セッション、100台では4,950セッションになります。各セッションは両方のエンドポイントでメモリとCPUを消費するため、運用が複雑でリソースも大量に消費されます。
ルートリフレクタークラスターとは何ですか?
ルートリフレクタクラスタは、ルートリフレクタとそのクライアントで構成されます。各クラスタには一意のクラスタIDが割り当てられ、ルートリフレクタはこのIDをリフレクトされたルートのCLUSTER_LIST属性に含めます。この属性はルーティングループの検出と防止に使用されます。ルータがCLUSTER_LISTに自身のクラスタIDを含むルートを受信した場合、そのルートは破棄されます。
同じAS内に複数のルートリフレクターを設置することはできますか?
はい、強く推奨します。複数のルートリフレクタを導入することで冗長性が確保され、いずれか1つが故障しても、他のルートリフレクタを通じてiBGPピアリングが維持されます。同じクラスタ内のルートリフレクタには、ループ検出の一貫性を確保するために、同じクラスタIDを設定する必要があります。大規模ネットワークの場合、階層型ルートリフレクタ設計(上位レベルのルートリフレクタとピアリングする)により、スケーラビリティをさらに向上させることができます。




