ベーシック BGP の概要
Cisco NX-OS は BGP バージョン 4 をサポートします。BGP v4 に組み込まれているマルチプロトコル拡張機能を使用すると、IP マルチキャスト ルートおよび複数のレイヤ 3 プロトコル アドレス ファミリに関するルーティング情報を BGP に伝送させることができます。BGP では、他の BGP 対応デバイスとの間で TCP セッションを確立するための、信頼できるトランスポート プロトコルとして TCP を使用します。
BGP ではパスベクトル ルーティング アルゴリズムを使用して、BGP 対応ネットワーク デバイスまたは BGP スピーカ 間でルーティング情報を交換します。各 BGP スピーカはこの情報を使用して、特定の宛先までのパスを判別し、なおかつルーティング ループを伴うパスを検出して回避します。ルーティング情報には、宛先の実際のルート プレフィクス、宛先に対する AS(自律システム)のパス、およびその他のパス アトリビュートが含まれます。
BGP はデフォルトで、宛先ホストまたはネットワークへのベスト パスとして、1 つだけパスを選択します。各パスは、BGP ベストパス分析で使用される well-known 必須、well-known ディスクレショナリ、およびオプションのトランジット アトリビュートを伝送します。BGP ポリシーを設定し、これらのアトリビュートの一部を変更することによって、BGP パス選択を制御できます。詳細については、「ルート ポリシーおよび BGP セッションのリセット」を参照してください。
BGP は、ロード バランシングまたは ECMP(等コスト マルチパス)もサポートします。詳細については、「ロード シェアリングおよびマルチパス」を参照してください。
ネットワークにベーシック BGP を導入して設定するには、次の概念を理解しておく必要があります。
•
「BGP AS」
•
「管理ディスタンス」
•
「BGP ピア」
•
「BGP ルータ ID」
•
「BGP パス選択」
•
「BGP およびユニキャスト RIB」
•
「BGP の仮想化」
BGP AS
AS( 自律システム )は、単一の技術管理エンティティによって制御されるネットワークです。「自律システム」を参照してください。AS は 1 つまたは複数の IGP および整合性のある一連のルーティング ポリシーを使用して、ルーティング ドメインを形成します。BGP は 16 ビットおよび 32 ビットの AS 番号をサポートします。
個々の BGP AS は external BGP(eBGP; 外部 BGP)ピアリング セッションを通じて、ルーティング情報をダイナミックに交換します。同じ AS 内の BGP スピーカは、internal BGP(iBGP; 内部 BGP)を通じて、ルーティング情報を交換できます。
管理ディスタンス
管理ディスタンス は、ルーティング情報源の信頼性に関する格付けです。「管理ディスタンス」を参照してください。
BGP はデフォルトで、 表9-1 の管理ディスタンスを使用します。
表9-1 デフォルトの BGP 管理ディスタンス
|
|
|
外部 |
20 |
eBGP から学習したルートに適用 |
内部 |
200 |
iBGP から学習したルートに適用 |
ローカル |
200 |
ルータを起点とするルートに適用 |
(注) 管理ディスタンスが BGP パス選択アルゴリズムに影響を与えることはありませんが、BGP で学習されたルートが IP ルーティング テーブルに組み込まれるかどうかを左右します。
BGP ピア
BGP スピーカが別の BGP スピーカを自動的に検出することはありません。ユーザ側で BGP スピーカ間の関係を設定する必要があります。 BGP ピア は、もう 1 つの BGP スピーカとの間にアクティブな TCP 接続が存在する BGP スピーカです。
BGP は TCP ポート 179 を使用して、ピアとの TCP セッションを作成します。ピア間で TCP 接続が確立されると、各 BGP ピアは最初に相手と、それぞれのすべてのルートを交換し、BGP ルーティング テーブルを完成させます。初期交換以後、BGP ピアはネットワーク トポロジが変化したとき、またはルーティング ポリシーが変更されたときに、差分アップデートだけを送信します。このようなアップデートからアップデートまでの非アクティブ期間中に、ピアは キープアライブ という特殊なメッセージを交換します。 ホールド タイム は、次の BGP アップデートまたはキープアライブ メッセージを受信するまでに経過することが許容される、最大時間限度です。
BGP ルータ ID
ピア間で BGP セッションを確立するには、BGP に ルータ ID を与える必要があります。ルータ ID は BGP セッションの確立時に、OPEN メッセージで BGP ピアに送信されます。BGP ルータ ID は 32 ビット値であり、IPv4 アドレスで表すことがよくあります。ルータ ID はユーザ側で設定できます。ルータ ID はデフォルトで、Cisco NX-OS によってルータのループバック インターフェイスの IPv4 アドレスに設定されます。ルータ上でループバック インターフェイスが設定されていない場合は、ルータ上の物理インターフェイスに設定されている最大の IPv4 アドレスが BGP ルータ ID を表すものとして、ソフトウェアによって選択されます。
BGP にルータ ID が設定されていない場合、BGP ピアとのピアリング セッションを確立することはできません。
BGP パス選択
BGP は複数の送信元から、同じルートのアドバタイズメントを受信する可能性があります。BGP はベスト パスとして、パスを 1 つだけ選択します。BGP はパスを選択すると、そのパスを IP ルーティング テーブルに格納し、ピアにパスを伝達します。
所定のネットワークでパスが追加または削除されるたびに、ベストパス アルゴリズムが実行されます。ベストパス アルゴリズムは、ユーザが BGP 設定を変更した場合にも実行されます。BGP は所定のネットワークで使用できる一連の有効パスの中から、最適なパスを選択します。
Cisco NX-OS は 3 つの部分に分けて、BGP ベストパス アルゴリズムを実行します。
•
パート 1 ― 2 つのパスを比較し、どちらが適切かを判別します(パス ペアの比較を参照)。
•
パート 2 ― すべてのパスを繰り返し、全体として最適なパスを選択するためにパスを比較する順序を決定します(比較順序を参照)。
•
パート 3 ― 新しいベスト パスを使用するに足るだけの差が新旧のベスト パスにあるかどうかを判別します(ベスト パス変更の抑制を参照)。
(注) 重要なのは、パート 2 で決定される比較順序です。A、B、C という 3 つのパスがあるとします。A と B を比較した場合、Cisco NX-OS は A を選択します。B と C を比較した場合、Cisco NX-OS は B を選択します。しかし、A と C を比較した場合、Cisco NX-OS は A を選択しません。これは一部の BGP メトリックが同じ隣接 AS からのパスだけに適用され、すべてのパスにわたっては適用されないからです。
パス選択には、BGP AS パス アトリビュートが使用されます。AS パス アトリビュートには、アドバタイズされたパスでたどる AS 番号のリストが含まれます。BGP AS を AS の集合または連合に細分化する場合は、AS パスにローカル定義の AS を指定した連合セグメントが含まれます。
パス ペアの比較
次に、Cisco NX-OS が2 つのパスを比較して、より適切なパスを判別する基本的なステップについて説明します。
1.
比較する有効なパスを選択します(たとえば、到達不能なネクストホップがあるパスは無効です)。
2.
重み値が最大のパスを選択します。
3.
ローカル プリファレンスが最大のパスを選択します。
4.
パスの一方がローカル起点の場合、そのパスを選択します。
5.
AS パス が短い方のパスを選択します。
(注) AS パス長を計算するときに、Cisco NX-OS は連合セグメントを無視し、AS セットを 1 として数えます。詳細については、「AS 連合」を参照してください。
6.
オリジンが低い方のパスを選択します。IGP は EGP より低いとみなされます。
7.
multi exit discriminator(MED)が小さい方のパスを選択します。
このステップが実行されるされないを左右する、一連のオプションを選択できます。Cisco NX-OS が MED を比較するのは、通常、同じ AS のピアから両方のパスを受け取った場合です。それ以外の場合、Cisco NX-OS は MED の比較を省略します。
パスのピア AS に関係なく、ベストパス アルゴリズムの MED 比較が必ず実行されるように、Cisco NX-OS を設定することもできます。詳細については、「ベストパス アルゴリズムの調整」を参照してください。この設定を行わなかった場合、MED 比較が実行されるかどうかは次のように、比較する 2 つのパスの AS パス アトリビュートによって決まります。
a.
パスに AS パス または AS_SET から始まる AS パス がない場合、パスは内部であり、他の内部パスに対して MED が比較されます。
b.
AS パスが AS_SEQUENCE から始まる場合、ピア AS がシーケンスで最初の AS 番号になり、同じピア AS を持つ他のパスに対して MED が比較されます。
c.
AS パス に連合セグメントだけが含まれている場合、または連合セグメントで始まり、AS_SET が続いている場合、パスは内部であり、他の内部パスに対して MED が比較されます。
d.
AS パスが連合セグメントで始まり、AS_SEQUENCE が続いている場合、ピア AS が
AS_SEQUENCE で最初の AS 番号になり、同じピア AS を持つ他のパスに対して MED が比較されます。
(注) Cisco NX-OS がパスの指定された MED アトリビュートを受信しなかった場合、欠落 MED が使用可能な最大値になるように、ユーザがベストパス アルゴリズムを設定していない限り、Cisco NX-OS は MED を 0 とみなします。詳細については、「ベストパス アルゴリズムの調整」を参照してください。
e.
非決定性の MED 比較機能がイネーブルの場合、ベスト パス アルゴリズムでは IOS スタイルの MED 比較が使用されます。詳細については、「ベストパス アルゴリズムの調整」を参照してください。
8.
一方のパスが内部ピアから、他方のパスが外部ピアからの場合、外部ピアからのパスが選択されます。
9.
ネクストホップ アドレスへの IGP メトリックが異なるバスの場合、IGP メトリックが小さい方のパスを選択されます。
10.
最後に実行したベストパス アルゴリズムによって選択されたパスが使用されます。
ステップ 1 ~ 9 のすべてのパス パラメータが同じ場合、ルータ ID を比較するようにベスト パス アルゴリズムを設定できます。詳細については、「ベストパス アルゴリズムの調整」を参照してください。パスに送信元アトリビュートが含まれている場合、Cisco NX-OS はそのアトリビュートをルータ ID として使用して比較します。発信もとアトリビュートが含まれていない場合、Cisco NX-OS はパスを送信したピアの ルータ ID を使用します。パス間でルータ ID が異なる場合、Cisco NX-OS はルータ ID が小さい方のパスを選択します。
(注) 送信元をルータ ID として使用する場合は、2 つのパスに同じルータ ID を与えることができます。また、同じピア ルータとの 2 つの BGP セッションが可能です。したがって、同じルータ ID で 2 つのパスを受信できます。
11.
クラスタ長が短い方のパスが選択されます。クラスタ リスト アトリビュートの指定されたパスを受け取らなかった場合、クラスタ長は 0 です。
12.
IP アドレスが小さい方のピアから受信したパスが選択されます。ローカル発生のパス(再配布のパスなど)は、ピア IP アドレスが 0 になります。
(注) ステップ 9 以降が同じパスは、マルチパスを設定している場合、マルチパスに使用できます。詳細については、「ロード シェアリングおよびマルチパス」を参照してください。
比較順序
BGP ベストパス アルゴリズム実行の 2 番めの部分で、パスの比較順序が決定されます。Cisco NX-OS は次のように、比較順序を決定します。
1.
各グループ内ではすべてのパスにわたって MED を比較できるような形で、パスをグループに分けます。「パス ペアの比較」と同じ規則を使用して、2 つのパス間で MED を比較できるかどうかが決定されます。この比較では通常、ネイバー AS ごとに 1 つずつグループができます。 bgp bestpath med always コマンドを設定した場合、すべてのパスが含まれたグループが 1 つだけ存在することになります。
2.
常に最適な方を維持しながら、グループのすべてのパスを反復することによって、各グループのベスト パスが決定されます。各パスをそれまでの一時的なベスト パスと比較し、それまでのベスト パスより適切な場合は、そのパスが新しく一時的なベスト パスになり、グループの次のパスとの比較が行われます。
3.
ステップ 2 の各グループで選択されたベスト パスからなる、パス セットが形成されます。このパス セットでもステップ 2 と同様、それぞれの比較を繰り返すことによって、全体としてのベスト パスが選択されます。
ベスト パス変更の抑制
アルゴリズム実行の次の部分は、新しいベスト パスを使用するかどうかの決定です。ベストパス選択アルゴリズムが任意になるまで、新しいベスト パスがまったく同じ場合、ルータは引き続き既存のベスト パスを使用できます(ルータ ID が同じ場合)。引き続き既存のベスト パスを使用することによって、ネットワークにおけるルート変更を回避できます。
抑制をオフにするには、ルータ ID を比較するようにベスト パス アルゴリズムを設定します。詳細については、「ベストパス アルゴリズムの調整」を参照してください。この機能を設定すると、新しいベスト パスがつねに既存のベスト パスより優先されます。
この機能を設定しないと、次の条件が発生した場合に、ベスト パス変更を抑制できません。
•
既存のベスト パスが無効になった。
•
既存または新しいベスト パスを内部(または連合)ピアから受信したか、またはローカルに発生した(再配布などによって)。
•
同じピアからパスを受信した(パスのルータ ID が同じ)。
•
パス間で重み値、ローカル プリファレンス、オリジン、またはネクストホップ アドレスに対する IGP メトリックが異なっている。
•
パス間で MED が異なっている。
BGP およびユニキャスト RIB
BGP はユニキャスト RIB(ルーティング情報ベース)と通信して、ユニキャスト ルーティング テーブルに IPv4 ルートを格納します。ベスト パスの選択後、ベスト パスの変更をルーティング テーブルに反省させる必要があると BGP が判別した場合、BGP はユニキャスト RIB にルート アップデートを送信します。
BGP はユニキャスト RIB における BGP ルートの変更に関して、ルート通知を受け取ります。さらに、再配布をサポートする他のプロトコル ルートに関するルート通知を受け取ります。
BGP はネクストホップの変更に関する通知も、ユニキャスト RIB から受け取ります。BGP はこれらの通知を使用して、ネクストホップ アドレスへの到達可能性および IGP メトリックを追跡します。
ユニキャスト RIB でネクストホップ到達可能性または IGP メトリックが変更されるたびに、BGP は影響を受けるルートについて、ベスト パス再計算を開始させます。
BGP は IPv6 ユニキャスト RIB と通信し、IPv6 ルートについて、これらの動作を実行します。
BGP の仮想化
BGP は VRF(仮想ルーティングおよびフォワーディング)インスタンスをサポートします。VRF は virtual device context(仮想デバイス コンテキスト; VDC)内に存在します。特に VDC および VRF を設定しないかぎり、デフォルトで、Cisco NX-OS はユーザにデフォルト VDC およびデフォルト VRF を使用させます。『 Cisco NX-OS Virtual Device Context Configuration Guide 』および 第 13 章「レイヤ 3 仮想化の設定」 を参照してください。
BGP に関する注意事項および制限事項
BGP を設定するときには、次の注意事項および制約事項に従ってください。
•
ルータ ID の自動変更およびセッション フラップを避けるために、BGP 用のルータ ID を設定します。
•
ピアごとに最大プレフィクス設定オプションを使用し、受信するルート数および使用するシステム リソース数を制限してください。
•
update-source を設定し、BGP/EBGP マルチホップ セッションでセッションを確立します。
•
再配布を設定する場合は、BGP ポリシーを指定します。
•
VRF 内で BGP ルータ ID を定義します。
•
キープアライブおよびホールド タイマーの値を小さくすると、BGP セッション フラップが発生する可能性があります。
•
VDC を設定する場合は、Advanced Services ライセンスをインストールし、所定の VDCを開始してください(『 Cisco NX-OS Virtual Device Context Configuration Guide 』を参照)。
•
VRF を設定する場合は、Advanced Services ライセンスをインストールし、所定の VRF を開始してください( 第 13 章「レイヤ 3 仮想化の設定」 を参照)。
ベーシック BGP の設定
ベーシック BGP を設定するには、BGP をイネーブルにして、BGP ピアを設定する必要があります。ベーシック BGP ネットワークの設定は、いくつかの必須作業と多数の任意の作業からなります。BGP ルーティング プロセスおよび BGP ピアの設定は必須です。
ここでは、次の内容について説明します。
•
「BGP 機能のイネーブル化」
•
「BGP インスタンスの作成」
•
「BGP インスタンスの再起動」
(注) Cisco IOS の CLI に慣れている場合、この機能に対応する Cisco NX-OS コマンドは通常使用する Cisco IOS コマンドと異なる場合があるので注意してください。
BGP 機能のイネーブル化
BGP を設定するには、BGP 機能をイネーブルにしておく必要があります。
準備作業
正しい VDC を使用していることを確認します(または switchto vdc コマンドを使用します)。
手順概要
1.
config t
2.
feature bgp
3.
copy running-config startup-config
手順詳細
|
|
ステップ 1 |
config t
switch# config t switch(config)# |
コンフィギュレーション モードを開始します。 |
ステップ 2 |
feature bgp
switch(config)# feature bgp |
BGP 機能をイネーブルにします。 |
ステップ 3 |
copy running-config startup-config
switch(config)# copy running-config startup-config |
(任意)この設定変更を保存します。 |
BGP 機能をディセーブルにして、関連するすべての設定を削除する場合は、 no feature bgp コマンドを使用します。
|
|
no feature bgp
switch(config)# no feature bgp |
BGP 機能をディセーブルにして、関連するすべての設定を削除します。 |
BGP インスタンスの作成
BGP インスタンスを作成し、BGP インスタンスにルータ ID を割り当てることができます。「BGP ルータ ID」を参照してください。Cisco NX-OS は、2 バイトまたは 4 バイトの AS(自律システム)番号をサポートします。
準備作業
BGP 機能がイネーブルになっていることを確認します(BGP 機能のイネーブル化を参照)。
BGP はルータ ID(設定済みループバック アドレスなど)を取得できなければなりません。
正しい VDC を使用していることを確認します(または switchto vdc コマンドを使用します)。
手順概要
1.
config t
2.
router bgp autonomous-system-number
3.
router-id ip-address
4.
address-family { ipv4 | ipv6 } { unicast | multicast }
5.
network ip-prefix [ route-map map-name ]
6.
show bgp all
7.
copy running-config startup-config
手順詳細
|
|
ステップ 1 |
config t
switch# config t switch(config)# |
コンフィギュレーション モードを開始します。 |
ステップ 2 |
router bgp autonomous-system-number
switch(config)# router bgp 40000 switch(config-router)# |
BGP をイネーブルにして、ローカル BGP スピーカに AS 番号を割り当てます。AS 番号は 16 ビット整数または 32 ビット整数にできます。形式は<上位 16 ビット 10 進数>.<下位 16 ビット 10 進数>です。 |
ステップ 3 |
router-id ip-address
switch(config-router)# router-id 192.0.2.255 |
(任意)BGP ルータ ID を設定します。この IP アドレスによって、この BGP スピーカを特定します。このコマンドによって、BGP ネイバー セッションの自動通知およびセッション リセットが開始されます。 |
ステップ 4 |
address-family { ipv4 | ipv6 }{ unicast | multicast }
switch(config-router)# address-family ipv4 unicast switch(config-router-af)# |
(任意)IPv4 アドレス ファミリに対応するグローバル アドレス ファミリ コンフィギュレーション モードを開始します。このコマンドによって、すべての BGP ネイバー セッションの自動通知およびセッション リセットが開始されます。 |
ステップ 5 |
network ip-prefix [ route-map map-name ]
switch(config-router-af)# network 192.0.2.0 |
(任意)この AS にローカルとしてネットワークを指定し、BGP ルーティング テーブルに追加します。 エクステリア プロトコルの場合、network コマンドでアドバタイズするネットワークを制御します。インテリア プロトコルでは、network コマンドを使用して、アップデートの送信先を決定します。 |
ステップ 6 |
show bgp all
switch(config-router-af)# show bgp all |
(任意)すべての BGP アドレス ファミリに関する情報を表示します。 |
ステップ 7 |
copy running-config startup-config
switch(config-router-af)# copy running-config startup-config |
(任意)この設定変更を保存します。 |
BGP プロセスおよび関連するすべての設定を削除する場合は、 no router bgp コマンドを使用します。
|
|
no router bgp autonomous-system-number
switch(config)# no router bgp 201 |
BGP プロセスおよび関連する設定を削除します。 |
IPv4 ユニキャスト アドレス ファミリを指定して BGP をイネーブルに設定し、アドバタイズするネットワークを 1 つ追加する例を示します。
switch# config t
switch(config)# router bgp 40000
switch(config-router)# address-family ipv4 unicast
switch(config-router-af)# network 192.0.2.0
switch(config-router-af)# copy running-config startup-config
BGP インスタンスの再起動
BGP インスタンスの再起動が可能です。再起動すると、インスタンスのすべてのピア セッションが消去されます。
BGP インスタンスを再起動し、関連付けられたすべてのピアを削除するには、次のコマンドを使用します。
|
|
restart bgp instance-tag
switch(config)# restart bgp 201 |
BGP インスタンスを再起動し、すべてのピアリング セッションをリセットまたは再確立します。 |
BGP ピアの設定
BGP プロセス内で BGP ピアを設定できます。BGP ピアごとに、関連付けられたキープアライブ タイマーとホールド タイマーがあります。これらのタイマーは、グローバルに設定することも、BGP ピアごとに設定することもできます。ピア設定はグローバル設定を上書きします。
準備作業
BGP 機能がイネーブルになっていることを確認します(BGP 機能のイネーブル化を参照)。
正しい VDC を使用していることを確認します(または switchto vdc コマンドを使用します)。
手順概要
1.
config t
2.
router bgp autonomous-system-number
3.
neighbor ip-address remote-as as-number
4.
description text
5.
timers keepalive-time hold-time
6.
address-family { ipv4 | ipv6 } { unicast | multicast }
7.
show bgp { ipv4 | ipv6 } { unicast | multicast } neighbors
8.
copy running-config startup-config
手順詳細
|
|
ステップ 1 |
config t
switch# config t switch(config)# |
コンフィギュレーション モードを開始します。 |
ステップ 2 |
router bgp autonomous-system-number
switch(config)# router bgp 40000 switch(config-router)# |
BGP をイネーブルにして、ローカル BGP スピーカに AS 番号を割り当てます。 |
ステップ 3 |
neighbor ip-address remote-as as-number
switch(config-router)# neighbor 209.165.201.1 remote-as 45000 switch(config-router-neighbor)# |
リモート BGP ピアの IP アドレスおよび AS 番号を設定します。 |
ステップ 4 |
description text
switch(config-router-neighbor)# description Peer Router B switch(config-router-neighbor)# |
(任意)ネイバーの説明を追加します。最大 80 文字の英数字ストリングを使用できます。 |
ステップ 5 |
timers keepalive-time hold-time
switch(config-router-neighbor)# timers 30 90 |
(任意)ネイバーのキープアライブおよびホールド タイムを表す BGP タイマー値を追加します。有効値の範囲は 0 ~ 3600 秒です。デフォルトは、キープアライブ タイムで 60 秒、ホールド タイムで 180 秒です。 |
ステップ 6 |
shutdown
switch(config-router-neighbor)# shutdown |
(任意)この BGP ネイバーを管理目的でシャットダウンします。このコマンドによって、BGP ネイバー セッションの自動通知およびセッション リセットが開始されます。 |
ステップ 7 |
address-family { ipv4 | ipv6 }{ unicast | multicast }
switch(config-router-neighbor)# address-family ipv4 unicast switch(config-router-neighbor-af)# |
ユニキャスト IPv4 アドレス ファミリに対応するネイバー アドレス ファミリ コンフィギュレーション モードを開始します。 |
ステップ 8 |
show bgp { ipv4 | ipv6 }{ unicast | multicast } neighbors
switch(config-router-neighbor-af)# show bgp ipv4 unicast neighbors |
(任意)GBP ピアの情報を表示します。 |
ステップ 9 |
copy running-config startup-config
switch(config-router-neighbor-af) copy running-config startup-config |
(任意)この設定変更を保存します。 |
BGP ピアの設定例を示します。
switch# config t
switch(config)# router bgp 40000
switch(config-router)# neighbor 192.0.2.1 remote-as 45000
switch(config-router-neighbor)# description Peer Router B
switch(config-router-neighbor)# address-family ipv4 unicast
switch(config-router-neighbor-af)# copy running-config startup-config