この製品のマニュアルセットは、偏向のない言語を使用するように配慮されています。このマニュアルセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザーインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブランゲージに対する取り組みの詳細は、こちらをご覧ください。
このドキュメントは、米国シスコ発行ドキュメントの参考和訳です。リンク情報につきましては、日本語版掲載時点で、英語版にアップデートがあり、リンク先のページが移動/変更されている場合がありますことをご了承ください。あくまでも参考和訳となりますので、正式な内容については米国サイトのドキュメントを参照ください。
ボーダー ゲートウェイ プロトコル(BGP)は、自律システム間にループフリーのドメイン間ルーティングを作成可能なエクステリア ゲートウェイ プロトコル(EGP)です。自律システムは、単一の技術管理に基づくルータのまとまりです。自律システム内のルータは、複数の内部ゲートウェイ プロトコル(IGP)を使用して自律システム内のルーティング情報を交換し、EGP を使用して自律システム外でパケットをルーティングします。
このモジュールでは、BGP の概念および設定情報を示しています。
リリース |
変更内容 |
---|---|
リリース 6.0 |
この機能が導入されました。 |
BGP はトランスポート プロトコルとして TCP を使用します。2 台の BGP ルータが互いの間に TCP 接続を形成し(ピア ルータ)、接続パラメータを開いて確認するためにメッセージを交換します。
BGP ルータはネットワーク到達可能性情報を交換します。この情報は、主に、宛先ネットワークに到達するためにルートで経由する必要のあるフル パス(BGP 自律システム番号)を示します。この情報は、ループ フリーである自律システムや、ルーティング動作に制限が適用されるルーティング ポリシーを表すグラフの作成に役立ちます。
TCP 接続を確立して BGP ルーティング情報を交換している 2 台のルータは、ピアまたはネイバーと呼ばれます。BGP ピアは最初に BGP ルーティング テーブル全体を交換します。この交換の後、ルーティング テーブルが変更されたとき差分更新が送信されます。BGP は BGP テーブルのバージョン番号を保存します。これはすべての BGP ピアで同一です。ルーティング情報の変更によって BGP がテーブルを更新するたびに、バージョン番号は変更されます。BGP ピア間の接続が維持されていることを確認するキープアライブ パケットが送信され、エラーまたは特殊な状態に応じて通知パケットが送信されます。
(注) |
VPNv4、VPNv6 および VPN ルーティング/転送(VRF)のアドレス ファミリは、今後のリリースでサポートされる予定です。 |
BGP ルーティングをイネーブルにし、BGP ルーティング プロセスを設定するには、次の作業を実行します。BGP ネイバーの設定は、BGP ルーティングのイネーブル化の一部として含まれています。
(注) |
BGP ルーティングをイネーブルにするには、1 つ以上のネイバーおよび 1 つ以上のアドレス ファミリを設定する必要があります。address family コマンドおよび remote as コマンドを使用して、リモート AS とアドレス ファミリの両方を持つ 1 つ以上のネイバーをグローバルに設定する必要があります。 |
BGP はルータ ID(設定済みループバック アドレスなど)を取得できなければなりません。1 つ以上のアドレス ファミリを BGP ルータ コンフィギュレーションに設定する必要があり、同じアドレス ファミリをネイバーの下にも設定する必要があります。
(注) |
ネイバーが外部 BGP(eBGP)ピアとして設定されている場合は、route-policy コマンドを使用して、インバウンドおよびアウトバウンドのルート ポリシーをネイバー上に設定する必要があります。 |
1. configure
2. route-policyroute-policy-name
3. end-policy
4. commit
5. configure
6. router bgpas-number
7. bgp router-idip-address
8. address-family {ipv4 | ipv6} unicast
9. exit
10. neighborip-address
11. remote-asas-number
12. address-family {ipv4 | ipv6} unicast
13. route-policyroute-policy-name {in | out}
14. commit
次に、BGP をイネーブルにする例を示します。
prefix-set static 2020::/64, 2012::/64, 10.10.0.0/16, 10.2.0.0/24 end-set route-policy pass-all pass end-policy route-policy set_next_hop_agg_v4 set next-hop 10.0.0.1 end-policy route-policy set_next_hop_static_v4 if (destination in static) then set next-hop 10.1.0.1 else drop endif end-policy route-policy set_next_hop_agg_v6 set next-hop 2003::121 end-policy route-policy set_next_hop_static_v6 if (destination in static) then set next-hop 2011::121 else drop endif end-policy router bgp 65000 bgp fast-external-fallover disable bgp confederation peers 65001 65002 bgp confederation identifier 1 bgp router-id 1.1.1.1 address-family ipv4 unicast aggregate-address 10.2.0.0/24 route-policy set_next_hop_agg_v4 aggregate-address 10.3.0.0/24 redistribute static route-policy set_next_hop_static_v4 address-family ipv6 unicast aggregate-address 2012::/64 route-policy set_next_hop_agg_v6 aggregate-address 2013::/64 redistribute static route-policy set_next_hop_static_v6 neighbor 10.0.101.60 remote-as 65000 address-family ipv4 unicast neighbor 10.0.101.61 remote-as 65000 address-family ipv4 unicast neighbor 10.0.101.62 remote-as 3 address-family ipv4 unicast route-policy pass-all in route-policy pass-all out neighbor 10.0.101.64 remote-as 5 update-source Loopback0 address-family ipv4 unicast route-policy pass-all in route-policy pass-all out
BGP は、定期実行アクティビティ(キープアライブ メッセージの送信、ネイバーがダウンしたと判断する条件となるそのネイバーからメッセージを受信しなかった期間など)を制御するために、特定のタイマーを使用します。ルータ コンフィギュレーション モードで timers bgp コマンドを使用して設定した値は、特定のネイバーでネイバー コンフィギュレーション モードで timers コマンドを使用すると上書きできます。
BGP ネイバーにタイマーを設定するには、次の作業を実行します。
1. configure
2. router bgpas-number
3. timers bgpkeepalive hold-time
4. neighborip-address
5. timerskeepalive hold-time
6. commit
BGP パスのデフォルト ローカル プリファレンス値を設定するには、次の作業を実行します。
1. configure
2. router bgpas-number
3. bgp default local-preferencevalue
4. commit
メトリックがまだ設定されていないルート(MED 属性が設定されていない、受信されたルート)をピアにアドバタイズするように Multi Exit Discriminator(MED)を設定するには、次の作業を実行します。
1. configure
2. router bgpas-number
3. default-metricvalue
4. commit
重みとは、ベストパス選択プロセスを制御するためにパスに割り当てる数値です。ほとんどのトラフィックで特定のネイバーを優先する場合、weight コマンドを使用して、そのネイバーから学習したすべてのルートに大きい重みを割り当てることができます。ネイバーから受信しルートに重みを割り当てるには、次の作業を実行します。
1. configure
2. router bgpas-number
3. neighborip-address
4. remote-asas-number
5. address-family {ipv4 | ipv6} unicast
6. weightweight-value
7. commit
新たに設定したウェイトを反映するには、clear bgp コマンドを使用します。
ステップ 1:2 つのパスを比較して、いずれが優れているのかを判別します。
ステップ 2:すべてのパスを順に処理し、全体として最適なパスを選択するためにパスを比較する順序を決定します。
ステップ 3:新しい最適パスを使用するに足るだけの差が新旧の最適パスにあるかどうかを判別します。
(注) |
比較演算が推移的ではないため、ステップ 2 で決定された比較の順序は重要です。つまり、3 つのパス、A、B、C がある場合、A と B を比較したときに A の方が優れていて、B と C と比較したときに B の方が優れている場合、A と C を比較したときに必ずしも A が優れているとは限りません。この非推移性は、Multi Exit Discriminator(MED)は、すべてのパス間ではなく、同じネイバー自律システム(AS)からのパス間のみで比較されるために生じます。BGP 最適パス アルゴリズムその他概念的な詳細を提供します。 |
1. configure
2. router bgpas-number
3. bgp bestpath med missing-as-worst
4. bgp bestpath med always
5. bgp bestpath med confed
6. bgp bestpath as-path ignore
7. bgp bestpath compare-routerid
8. commit
ディスタンス |
デフォルト値 |
機能 |
---|---|---|
External |
20 |
eBGP から学習したルートに適用されます。 |
内部 |
200 |
iBGP から学習したルートに適用されます。 |
ローカル |
200 |
ルータを起点とするルートに適用されます。 |
(注) |
ディスタンスは BGP パス選択アルゴリズムに影響しませんが、BGP で学習されたルートを IP ルーティング テーブルに組み込むかどうかを左右します。 |
1. configure
2. router bgpas-number
3. address-family {ipv4 | ipv6} unicast
4. distance bgpexternal-distance internal-distance local-distance
5. commit
通常、eBGP を介して学習されたルートは、ディスタンスを理由として IP ルーティング テーブルに組み込まれます。ただし、2 つの AS には IGP-learned バックドア ルートと eBGP-learned のルートがあります。ポリシーは、IGP-learned パスを優先パスとして使用し、IGP パスが停止しているときに eBGP-learned パスを使用するなどの内容になります。
外部ボーダー ゲートウェイ プロトコル(eBGP)のアドミニストレーティブ ディスタンスに、ローカルにソースされた BGP ルートのアドミニストレーティブ ディスタンスを設定し、Interior Gateway Protocol(IGP)ルートよりも推奨度を低くするには、次の作業を実行します。
1. configure
2. router bgpas-number
3. address-family {ipv4 | ipv6} unicast
4. network {ip-address /prefix-length | ip-address mask} backdoor
5. commit
ここでは、ルータ A と C、ルータ B と C が eBGP を実行しています。ルータ A および B は、IGP を実行しています(ルーティング情報プロトコル(RIP)、Enhanced Interior Gateway Routing Protocol(IGRP)、Enhanced IGRP、または Open Shortest Path First(OSPF)など)。RIP、IGRP、Enhanced IGRP、および OSPF のデフォルト ディスタンスは、それぞれ、120、100、90、および 110 です。これらの距離はすべて eBGP のデフォルト ディスタンス(20)よりも長くなります。通常は、ディスタンスの一番小さいルートが優先されます。
ルータ A は、160.10.0.0 に関するアップデートを、eBGP と IGP の 2 つのルーティング プロトコルから受信します。eBGP のデフォルトのディスタンスが IGP のデフォルトのディスタンスよりも低いので、ルータ A はルータ C からの eBGP-learned ルートを選択します。ルータ A にルータ B(IGP)からの 160.10.0.0 について学習させる場合は、BGP バック ドアを確立します。を参照してください。
次の例では、ネットワーク バックドアが設定されています。
RP/0/RP0/CPU0:router(config)# router bgp 100 RP/0/RP0/CPU0:router(config-bgp)# address-family ipv4 unicast RP/0/RP0/CPU0:router(config-bgp-af)# network 160.10.0.0/16 backdoor
ルータ A では、eBGP-learned ルートをローカルとして扱い、ディスタンス 200 で IP ルーティング テーブルに組み込みます。このネットワークは Enhanced IGRP を介しても学習しているため(ディスタンスは 90)、Enhanced IGRP ルートは、IP ルーティング テーブルに正常に組み込まれ、トラフィックの転送に使用されます。Enhanced IGRP-learned ルートが停止すると、eBGP-learned ルートが IP ルーティング テーブルに組み込まれ、トラフィックの転送に使用されます。
Although BGP ではネットワーク 160.10.0.0 をローカル エントリとして扱いますが、通常、ローカル エントリをアドバタイズするようにネットワーク 160.10.0.0 をアドバタイズすることはありません。
BGP ルーティング テーブルに集約エントリを作成するには、次の作業を実行します。
1. configure
2. router bgpas-number
3. address-family {ipv4 | ipv6} unicast
4. aggregate-addressaddress/mask-length [as-set] [as-confed-set] [summary-only] [route-policyroute-policy-name]
5. commit
自律システム番号(ASN)は、自律システム(AS)を識別するために使用されるグローバルに一意な識別子であり、これにより、AS では、ネイバー AS との間で外部ルーティング情報を交換できるようになります。一意の ASN は、BGP ルーティングで使用するために各 AS に割り当てられます。BGP では、ASN を 2 バイトの番号および 4 バイトの番号としてエンコードします。
共通ルーティング インフラストラクチャを使用して、複数のルータによって提供されるサービスを単一の IOS-XR ルータに統合するメカニズム。
異なる BGP インスタンスに異なる AF を設定することにより、AF の分離を実現するメカニズム。
複数のインスタンス間でピアリング セッション全体を分散させることによって、セッションのスケールを高めることができる手段。
個々のインスタンスに異なる BGP テーブルを伝送させることにより、プレフィックスのスケール(特に RR で)を高めることができるメカニズム。
特定の状況における BGP コンバージェンスの改善。
NSR を含むすべての BGP 機能は、すべてのインスタンスに対応しています。
ロードおよびコミット ルータ レベルの操作は、以前に確認または適用された構成上で実行できます。
ルータは最大 4 つの BGP インスタンスをサポートします。
各 BGP インスタンスには、固有の ルータ ID が必要です。
各 BGP インスタンスで設定できるアドレス ファミリは 1 つだけです(VPNv4、VPNv6 および RT 制約は複数の BGP インスタンスで設定できます)。
IPv4/IPv6 ユニキャストは、IPv4/IPv6 ラベル付きユニキャストが設定されている同じ BGP インスタンス内にある必要があります。
IPv4/IPv6 マルチキャストは、IPv4/IPv6 ユニキャストが設定されている同じ BGP インスタンス内にある必要があります。
単一の BGP インスタンスに対するすべての設定変更を同時にコミットすることができます。ただし、複数のインスタンスに対する設定変更は同時にコミットできません。
特定の自律システムに複数の BGP インスタンスを設定するには、次のタスクを実行します。単一の BGP インスタンスに対するすべての設定変更を同時にコミットすることができます。ただし、複数のインスタンスに対する設定変更は同時にコミットできません。
1. configure
2. router bgp as-number [instance instance name]
3. commit
ステップ 1 |
configure |
ステップ 2 |
router bgp as-number [instance instance name] 例: RP/0/RSP0/CPU0:router(config)# router bgp 100 instance inst1 ユーザが指定した BGP インスタンスに対し BGP コンフィギュレーション モードを開始します。 |
ステップ 3 |
commit |
iBGP メッシュを削減する方法の 1 つとして、ある自律システムを複数の副自律システムに分割し、単一のコンフェデレーションにグループ化することがあげられます。外部からは、このコンフェデレーションは単一の自律システムであるかのように見えます。各自律システムは内部で完全にメッシュ化されていて、同じコンフェデレーション内の他の自律システムとの間には数本の接続があります。異なる自律システム内にあるピアは eBGP セッションを持ちますが、ルーティング情報は iBGP ピアと同様な方法で交換されます。具体的には、ネクスト ホップ、MED、およびローカル プリファレンス情報は維持されます。この機能により、自律システムすべてに対して単一の IGP を保持できます。
BGP のルーティング ドメイン コンフェデレーションを設定するには、次の作業を実行します。これには、コンフェデレーション ID の指定と、コンフェデレーションに属す自律システムの指定を含みます。
ルーティング ドメイン コンフェデレーションを設定すると、自律システムを複数の自律システムに分割して、これを 1 つのコンフェデレーションにグループ化することによって、内部 BGP(iBGP)メッシュを削減することができます。それぞれの自律システムは、そのシステム自身内で完全にメッシュ化されていて、同じコンフェデレーションの別の自律システムとの接続を数個持ちます。このコンフェデレーションによりネクスト ホップおよびローカル プリファレンス情報が維持され、これにより、すべての自律システムに対して Interior Gateway Protocol(IGP)を 1 つ維持できるようになります。外部からは、このコンフェデレーションは単一の自律システムであるかのように見えます。
1. configure
2. router bgpas-number
3. bgp confederation identifieras-number
4. bgp confederation peersas-number
5. commit
次に、コンフェデレーションのいくつかのピアを表示する設定の例を示します。このコンフェデレーションは、自律システム番号 6001、6002、および 6003 の 3 つの内部自律システムから構成されています。コンフェデレーション外の BGP スピーカーには、このコンフェデレーションは(bgp confederation identifier コマンドによって指定される)自律システム番号 666 を持つ通常の自律システムのように見えます。
自律システム 6001 の BGP スピーカーで、bgp confederation peers コマンドは、自律システム 6002 および 6003 からのピアを特別な eBGP ピアとしてマークします。したがって、ピア 171.16 .232.55 および 171.16 .232.56 は、ローカル プリファレンス、ネクスト ホップ、および未変更の MED をこの更新で取得します。171 .19 .69.1 のルータは通常の eBGP スピーカーであり、このピアから受け取る更新は、自律システム 666 のピアからの通常の eBGP 更新とまったく同じです。
router bgp 6001 bgp confederation identifier 666 bgp confederation peers 6002 6003 exit address-family ipv4 unicast neighbor 171.16.232.55 remote-as 6002 exit address-family ipv4 unicast neighbor 171.16.232.56 remote-as 6003 exit address-family ipv4 unicast neighbor 171.19.69.1 remote-as 777
router bgp 6002 bgp confederation identifier 666 bgp confederation peers 6001 6003 exit address-family ipv4 unicast neighbor 171.17.70.1 remote-as 6002 exit address-family ipv4 unicast neighbor 171.19.232.57 remote-as 6001 exit address-family ipv4 unicast neighbor 171.19.232.56 remote-as 6003 exit address-family ipv4 unicast neighbor 171.19.99.2 remote-as 700 exit address-family ipv4 unicast route-policy pass-all in route-policy pass-all out
router bgp 6003 bgp confederation identifier 666 bgp confederation peers 6001 6002 exit address-family ipv4 unicast neighbor 171.19.232.57 remote-as 6001 exit address-family ipv4 unicast neighbor 171.19.232.55 remote-as 6002 exit address-family ipv4 unicast neighbor 192.168.200.200 remote-as 701 exit address-family ipv4 unicast route-policy pass-all in route-policy pass-all out
router bgp 701 address-family ipv4 unicast neighbor 172.16.232.56 remote-as 666 exit address-family ipv4 unicast route-policy pass-all in route-policy pass-all out exit address-family ipv4 unicast neighbor 192.168.200.205 remote-as 701
ボーダー ゲートウェイ プロトコル(BGP)の追加パス機能では、1 つのプレフィックスに対して複数のパスを送信できるように、BGP スピーカーの BGP プロトコル機械を変更します。これにより、ネットワークに「パスの多様性」が生まれます。追加パスにより、エッジ ルータでの BGP プレフィックス独立コンバージェンス(PIC)が可能になります。
BGP 追加パスでは、iBGP ネットワーク内の追加パス アドバタイズメントが可能になり、プレフィックスに対する次のタイプのパスがアドバタイズされます。
BGP 追加パス機能を設定するには、次の作業を行います。
1. configure
2. route-policyroute-policy-name
3. ifconditional-expressionthenaction-statementelse
4. passendif
5. end-policy
6. routerbgpas-number
7. address-family{ipv4 {unicast } | ipv6 {unicast | l2vpn vpls-vpws | vpnv4unicast | vpnv6unicast }
8. additional-paths receive
9. additional-paths send
10. additional-paths selectionroute-policyroute-policy-name
11. commit
最大プレフィックス機能では、特定のアドレス ファミリのネイバーから受信されるプレフィックスの数に上限が課されます。受信されるプレフィックスの数が設定した最大数を超えると、停止通知がネイバーに送信された後、BGP セッションが終了します(これはデフォルト動作です)。手動によるクリアがユーザによって実行されるまで、セッションはダウンしたままになります。セッションは、clear bgp コマンドを使用して再開できます。restart キーワードを指定した maximum-prefix コマンドを使用して、セッションを自動的に起動できるまでの期間を設定できます。プレフィックスの上限はユーザが設定できます。ユーザがそのアドレス ファミリに対するプレフィックスの最大数を設定していない場合は、デフォルトの制限値が使用されます。
同じ回線で、最大プレフィックス値が変更された場合のアクションを次に示します。
最大値が単独で変更されると、必要に応じてルート更新メッセージが送信されます。
新しい最大値が現在のプレフィックス カウント ステートよりも大きい場合、新しいプレフィックス ステートが保存されます。
新しい最大値が現在のプレフィックス カウント ステートより小さい場合、新しく設定されたステートの値に一致するように、既存のプレフィックスが一部削除されます。
どのプレフィックスを削除するかを制御する方法は現在ありません。
最大プレフィックス設定での過剰パスの破棄オプションを使用すると、プレフィックスが設定した最大値を超えた場合に、ネイバーから受信された過剰なプレフィックスをすべて廃棄できます。ただし、この廃棄によってセッション フラップが発生することはありません。
過剰パスの破棄オプションの利点は次のとおりです。
(注) |
|
BGP 最大プレフィックス過剰パスの破棄を設定するには、次のタスクを実行します。
1. configure
2. router bgpas-number
3. neighborip-address
4. address-family {ipv4 | ipv6} unicast
5. maximum-prefixmaximumdiscard-extra-paths
6. commit
次に、IPv4 アドレス ファミリに対する過剰パスの破棄機能を設定する例を示します。
RP/0/RSP0/CPU0:router# configure RP/0/RSP0/CPU0:router(config)# router bgp 10 RP/0/RSP0/CPU0:router(config-bgp)# neighbor 10.0.0.1 RP/0/RSP0/CPU0:router(config-bgp-nbr)# address-family ipv4 unicast RP/0/RSP0/CPU0:router(config-bgp-nbr-af)# maximum-prefix 1000 discard-extra-paths RP/0/RSP0/CPU0:router(config-bgp-vrf-af)# commit
次の画面出力では、過剰パスの破棄オプションの詳細を示しています。
RP/0/0/CPU0:ios# show bgp neighbor 10.0.0.1 BGP neighbor is 10.0.0.1 Remote AS 10, local AS 10, internal link Remote router ID 0.0.0.0 BGP state = Idle (No best local address found) Last read 00:00:00, Last read before reset 00:00:00 Hold time is 180, keepalive interval is 60 seconds Configured hold time: 180, keepalive: 60, min acceptable hold time: 3 Last write 00:00:00, attempted 0, written 0 Second last write 00:00:00, attempted 0, written 0 Last write before reset 00:00:00, attempted 0, written 0 Second last write before reset 00:00:00, attempted 0, written 0 Last write pulse rcvd not set last full not set pulse count 0 Last write pulse rcvd before reset 00:00:00 Socket not armed for io, not armed for read, not armed for write Last write thread event before reset 00:00:00, second last 00:00:00 Last KA expiry before reset 00:00:00, second last 00:00:00 Last KA error before reset 00:00:00, KA not sent 00:00:00 Last KA start before reset 00:00:00, second last 00:00:00 Precedence: internet Multi-protocol capability not received Received 0 messages, 0 notifications, 0 in queue Sent 0 messages, 0 notifications, 0 in queue Minimum time between advertisement runs is 0 secs For Address Family: IPv4 Unicast BGP neighbor version 0 Update group: 0.1 Filter-group: 0.0 No Refresh request being processed Route refresh request: received 0, sent 0 0 accepted prefixes, 0 are bestpaths Cumulative no. of prefixes denied: 0. Prefix advertised 0, suppressed 0, withdrawn 0 Maximum prefixes allowed 10 (discard-extra-paths) <<<<<<<<<<<<<<<<<<<<< Threshold for warning message 75%, restart interval 0 min AIGP is enabled An EoR was not received during read-only mode Last ack version 1, Last synced ack version 0 Outstanding version objects: current 0, max 0 Additional-paths operation: None Send Multicast Attributes Connections established 0; dropped 0 Local host: 0.0.0.0, Local port: 0, IF Handle: 0x00000000 Foreign host: 10.0.0.1, Foreign port: 0 Last reset 00:00:00
最適外部パス機能では、ローカルで選択された最適パスが内部ピアからのパスの場合における、iBGP およびルート リフレクタ ピアへの最適外部パスのアドバタイズメントをサポートしています。BGP では各宛先に対して最適パスを 1 つとバックアップ パスを 1 つ選択します。デフォルトでは、最適パスを 1 つ選択します。さらに、BGP では、1 つのプレフィックスに対する残りの外部パスのうちから別の最適パスを選択します。1 つのパスのみが最適外部パスとして選択され、バックアップ パスとして他の PE に送信されます。BGP では、最適パスが iBGP パスの場合のみ最適外部パスを計算します。最適パスが eBGP パスの場合、最適外部パス計算は不要です。
最適外部パスを決定する手順を次に示します。
プレフィックスに利用可能なパスの全セットから最適パスを決定します。
現在の最適パスを除外します。
このプレフィックスのすべての内部パスを除外します。
残りのパスから、現在の最適パスと同じネクスト ホップを持つすべてのパスを除外します。
残りのパスのセットに対して最適パス アルゴリズムを再度実行し、最適外部パスを決定します。
BGP では、1 つのプレフィックスに対する外部およびコンフェデレーションの BGP パスを考慮して最適外部パスを計算します。BGP では、最適パスおよび最適外部パスを次のようにアドバタイズします。
iBGP およびルートリフレクタ ピアに最適外部パスをアドバタイズするには、次の作業を実行します。
プライマリ PE-CE リンクが故障した場合、BGP では、プライマリ パスに対応するルートおよびこのルートのローカル ラベルを取り消し、デフォルトでは、ルーティング情報ベース(RIB)および転送情報ベース(FIB)にバックアップ パスをプログラムします。
ただし、プライマリ PE のすべての内部ピアがバックアップ パスを新しい最適パスとして使用するように再コンバージェンスするまで、トラフィックは、プライマリ パスに割り当てられたローカル ラベルとともに、引き続きプライマリ PE に転送されます。したがって、プライマリ パスに前に割り当てられていたローカル ラベルは、再コンバージェンス後、設定可能な期間、プライマリ PE 上で保持する必要があります。BGP Local Label Retention 機能を使用すると、ローカル ラベルを指定期間保持できます。時間を指定していない場合、ローカル ラベルは、デフォルト値の 5 分間保持されます。
プライマリ PE で以前にプライマリ パスに割り当てられたローカル ラベルを、再コンバージェンス後に設定期間にわたって保持するには、次の作業を実行します。
1. configure
2. router bgpas-number
3. address-family{ vpnv4 unicast| vpnv6 unicast}
4. retain local-labelminutes
5. commit
次に、プライマリ PE のプライマリ パスに以前に割り当てたローカル ラベルを再コンバージェンス後 10 分にわたって維持する例を示します。
router bgp 100 address-family l2vpn vpls-vpws retain local-label 10 end
ローカル ポリシーが設定されていないボーダー ゲートウェイ プロトコル(BGP)対応ルータが複数のネットワーク層到達可能性情報(NLRI)を同じ宛先の内部 BGP(iBGP)から受信すると、このルータは 1 つの iBGP パスを最適パスとして選択します。この最適パスは、次にこのルータの IP ルーティング テーブルに組み込まれます。iBGP のマルチパス ロード シェアリング機能を使用すると、BGP 対応ルータでは、複数の iBGP パスを宛先への最適パスとして選択できます。この最適パスまたはマルチパスは、次にこのルータの IP ルーティング テーブルに組み込まれます。
iBGP マルチパス ロード シェアリングの参照 その他詳細情報を提供します。
iBGP マルチパス ロード シェアリングを設定するには、次の作業を実行します。
1. configure
2. routerbgpas-number
3. address-family {ipv4|ipv6} {unicast|multicast}
4. maximum-pathsibgpnumber
5. commit
次に、負荷共有に 30 のパスが使用されている設定の例を示します。
router bgp 100 address-family ipv4 multicast maximum-paths ibgp 30 ! ! end
ルート ダンプニングは、インターネットワーク上でのフラッピング ルートの伝搬を最小限に抑える BGP 機能です。ルートの状態が使用可能、使用不可能、使用可能、使用不可能という具合に、繰り返し変化する場合、ルートはフラッピングと見なされます。
たとえば、自律システム 1、自律システム 2、および自律システム 3 の 3 つの BGP 自律システムがあるネットワークについて考えます。自律システム 1 のネットワーク A へのルートがフラッピングする(利用できなくなる)と仮定します。ルート ダンプニングがない状況では、自律システム 1 から自律システム 2 への eBGP ネイバーは、取り消しメッセージを自律システム 2 に送信します。次に自律システム 2 内の境界ルータは、取り消しメッセージを自律システム 3 に伝播します。ネットワーク A へのルートが再出現したとき、自律システム 1 は自律システム 2 に、自律システム 2 は自律システム 3 にアドバタイズメント メッセージを送信します。ネットワーク A へのルートが利用可能になったり不可になったりを繰り返す場合、取り消しメッセージおよびアドバタイズメント メッセージが多数送信されます。ルート フラッピングは、インターネットに接続されたインターネットワークでの問題です。インターネットのバックボーンでルートのフラッピングが生じると、通常、多くのルートに影響を与えるからです。
ルート ダンプニング機能は、次のようにしてフラッピングの問題を最小限に抑えます。ここでも、ネットワーク A へのルートがフラッピングしたと仮定します。(ルート ダンプニングがイネーブルになっている)自律システム 2 内のルータは、ネットワーク A にペナルティ 1000 を割り当てて、履歴状態に移行させます。自律システム 2 内のルータは、引き続きネイバーにルートのステータスをアドバタイズします。ペナルティは累積されます。ルート フラップが非常に頻繁に発生し、ペナルティが設定可能な抑制制限を超える場合は、フラップの発生回数に関係なく、ルータはネットワーク A へのルートのアドバタイズを停止します。このようにして、ルート ダンプニングが発生します。
ネットワーク A に課されたペナルティは再使用制限に達するまで減衰し、達すると同時にそのルートは再びアドバタイズされます。再使用制限の半分の時点で、ネットワーク A へのルートのダンプニング情報が削除されます。
(注) |
ルート ダンプニングがイネーブルの場合は、リセットによってルートが取り消されるときでも、BGP ピアのリセットにペナルティは適用されません。 |
BGP ルート ダンプニングを設定してモニタするには、次の作業を実行します。
1. configure
2. router bgpas-number
3. address-family {ipv4 | ipv6} unicast
4. bgp dampening [half-life [reuse suppress max-suppress-time] | route-policyroute-policy-name]
5. commit
BGP ネイバー グループを設定し、ネイバーにネイバー グループの設定を適用するには、次の作業を実行します。ネイバー グループは、ネイバーに関連するアドレス ファミリから独立した設定とアドレス ファミリ固有の設定を持つテンプレートです。
ネイバー グループを設定すると、各ネイバーは、use コマンド経由で設定を継承できるようになります。ネイバー グループを使用するように設定されているネイバーは、デフォルトでネイバー グループの設定すべて(アドレス ファミリに依存しない設定とアドレス ファミリ固有の設定を含む)を継承します。継承された設定を上書きするには、ネイバーに対して直接コマンドを設定するか、または use コマンドを使用して、セッション グループまたはアドレス ファミリ グループを設定します。
ネイバー グループではアドレス ファミリに依存しない設定を行うことができます。アドレス ファミリ固有の設定では、アドレス ファミリ サブモードを開始するようにネイバー グループのアドレス ファミリを設定する必要があります。ネイバー グループ コンフィギュレーション モードでは、ネイバー グループについて、アドレス ファミリに依存しないパラメータを設定できます。ネイバー グループ コンフィギュレーション モードで address-family コマンドを使用します。neighbor group コマンドを使用してネイバー グループ名を指定した後で、オプションをそのネイバー グループに割り当てることができます。
(注) |
指定されたネイバー グループで設定できるコマンドはすべて、ネイバーでも設定できます。 |
1. configure
2. router bgpas-number
3. address-family {ipv4 | ipv6} unicast
4. exit
5. neighbor-groupname
6. remote-asas-number
7. address-family {ipv4 | ipv6} unicast
8. route-policyroute-policy-name {in | out}
9. exit
10. exit
11. neighborip-address
12. use neighbor-groupgroup-name
13. remote-asas-number
14. commit
情報を共有するように自律システムの BGP ネイバーを設定する例を次に示します。この例では BGP ルータを自律システム 109 に割り当て、自律システムの送信元として 2 つのネットワークのリストが表示される例を示します。3 つのリモート ルータ(とその自律システム)のアドレスのリストが表示されます。設定するルータは隣接ルータとの間でネットワーク 172 .16 .0.0 および 192.168 .7.0 に関する情報を共有します。リストの 1 番目のルータは別の自律システムにあり、2 番目の neighbor および remote-as コマンドによってアドレス 172 .26 .234.2 の内部ネイバー(自律システム番号は同一)が指定され、3 番目の neighbor および remote-as コマンドによって別の自律システムのネイバーが指定されます。
route-policy pass-all pass end-policy router bgp 109 address-family ipv4 unicast network 172.16.0.0 255.255.0.0 network 192.16831.7.0 255.255.0.0 neighbor 172.16.200.1 remote-as 167 exit address-family ipv4 unicast route-policy pass-all in route-policy pass-out out neighbor 172.26.234.2 remote-as 109 exit address-family ipv4 unicast neighbor 172.26.64.19 remote-as 99 exit address-family ipv4 unicast route-policy pass-all in route-policy pass-all out
設定を削除せずにネイバーを管理シャットダウンするには、次の作業を実行します。
1. configure
2. router bgpas-number
3. neighborip-address
4. shutdown
5. commit
指定されたグループまたはネイバーの指定アドレス ファミリに対してインバウンド ソフト リセットをトリガーするには、次の作業を実行ます。グループは、*、ip-address、as-number、または external のキーワードおよび引数によって指定されます。
ネイバーのインバウンド ポリシーまたはアウトバウンド ポリシーを変更する場合、またはルーティング アップデートの送信または受信に影響を与えるその他の設定を変更する場合には、ネイバーのリセットが便利です。インバウンド ソフト リセットがトリガーされた場合、ネイバーが ROUTE_REFRESH 機能をアドバタイズしていれば、BGP はデフォルトでこのネイバーに REFRESH 要求を送信します。ネイバーが ROUTE_REFRESH 機能をアドバタイズしているかどうかを判別するには、show bgp neighbors コマンドを使用します。
1. show bgp neighbors
2. soft [in [prefix-filter] | out]
指定されたグループまたはネイバーの指定アドレス ファミリに対してアウトバウンド ソフト リセットをトリガーするには、次の作業を実行します。グループは、*、ip-address、as-number、または external のキーワードおよび引数によって指定されます。
ネイバーのアウトバウンド ポリシーまたはアウトバウンド ポリシーを変更する場合、またはルーティング アップデートの送信または受信に影響を与えるその他の設定を変更する場合には、ネイバーのリセットが便利です。
アウトバウンド ソフト リセットがトリガーされると、BGP は、このアドレス ファミリに対するルートをすべて、指定されたネイバーに再送信します。
ネイバーが ROUTE_REFRESH 機能をアドバタイズしているかどうかを判別するには、show bgp neighbors コマンドを使用します。
1. show bgp neighbors
2.
ハード リセットを使用してネイバーをリセットするには、次の作業を実行します。ハード リセットにより、ネイバーへの TCP 接続が削除され、ネイバーから受信したすべてのルートが BGP テーブルから削除され、その後このネイバーとのセッションが再確立されます。キーワード graceful が指定されている場合、ネイバーからのルートは BGP テーブルから即座には削除されませんが、古い(stale である)とマークされます。セッションの再確立後、ネイバーから再受信されなかった古いルートはすべて削除されます。
1. clear bgp {ipv4 {unicast| labeled-unicast| all | tunneltunnel | mdt} | ipv6unicast | all | labeled-unicast} | all {unicast | multicast | all | labeled-unicast | mdt |tunnel} | vpnv4 unicast | vrf {vrf-name | all} {ipv4unicast| labeled-unicast}| ipv6 unicast} | vpnv6 unicast}{* | ip-address | asas-number | external} [graceful] soft [in [prefix-filter] | out]clear bgp {ipv4 | ipv6} {unicast | labeled-unicast}
ネイバーからソフトウェアツーストア更新を受信するように設定するには、次の作業を実行します。
ネイバーがルート リフレッシュに対応している場合は、soft-reconfiguration inbound コマンドによって、ルート リフレッシュ要求がネイバーに送信されるようになります。ネイバーがルート リフレッシュに対応していない場合は、ネイバーが受信ルートを再学習するようにするため、clear bgp soft コマンドを使用してネイバーをリセットする必要があります。
(注) |
ネイバーからのアップデートの保存は、ネイバーがルート リフレッシュに対応しているか、soft-reconfiguration inbound コマンドが設定されている場合にだけ機能します。ネイバーがルート リフレッシュに対応しており、soft-reconfiguration inbound コマンドが設定されていても、このコマンドで always オプションが使用されていない場合は元のルートは格納されません。元のルートはルート リフレッシュ要求によって容易に復元できます。ルート リフレッシュは、ルーティング情報を再送信するためにピアに要求を送信します。soft-reconfiguration inbound コマンドは、変更されていない形式でピアから受信したすべてのパスを保存し、クリアする際にこれらの保存されたパスを参照します。ソフト再設定はメモリに負荷がかかる処理です。 |
1. configure
2. router bgpas-number
3. neighborip-address
4. address-family {ipv4 | ipv6} unicast
5. soft-reconfiguration inbound [always]
6. commit
ネイバー変更のロギングはデフォルトでイネーブルになっています。ロギングをオフにするには、log neighbor changes disable コマンドを使用します。ロギングがディセーブルにされている場合にロギングを再びイネーブルにするには、no log neighbor changes disable コマンドを使用します。
ルート ポリシーによる BGP ルーティング フィルタリングを設定するには、次の作業を実行します。
1. configure
2. route-policyname
3. end-policy
4. router bgpas-number
5. neighborip-address
6. address-family {ipv4 | ipv6} unicast
7. route-policyroute-policy-name {in | out}
8. commit
BGP 属性フィルタは、BGP アップデート メッセージ内の BGP アップデートの整合性を確認し、無効な属性を検出したときは応答を最適化します。BGP アップデート メッセージには、必須およびオプションの属性のリストが含まれています。アップデート メッセージ内のこれらの属性には、MED、LOCAL_PREF、COMMUNITY などがあります。場合によって、属性が不正である場合は、ルータの受信側でこれらの属性をフィルタリングする必要があります。BGP 属性フィルタ機能では、着信アップデート メッセージで受信した属性をフィルタリングします。属性フィルタは、受信側ルータで好ましくない動作を引き起こす可能性のある属性を排除するためにも使用できます。BGP アップデートの中には、ネットワーク層到達可能性情報(NLRI)またはアップデート メッセージ内の他のフィールドなどの誤った形式の属性のために、形式が不正になるものがあります。これらの不正なアップデートを受信すると、受信側ルータで好ましくない動作が発生します。このような不正な動作は、アップデート メッセージの解析時や、受信した NLRI の再アドバタイズ時に発生することがあります。このような場合に備えて、受信側でこれらの破損した属性をフィルタ処理することが重要です。
属性フィルタリングを設定するには、1 つまたはある範囲の属性コードと対応するアクションを指定します。受信したアップデート メッセージに 1 つ以上のフィルタされた属性が含まれている場合、メッセージに対して設定されたアクションが実行されます。オプションで、さらに詳細なデバッグを行うためにアップデート メッセージを保存して、コンソールに syslog メッセージを表示することもできます。属性がフィルタと一致した場合は、属性のその後の処理は停止され、対応するアクションが実行されます。BGP 属性フィルタリングを設定するには、次のタスクを実行します。
1. configure
2. router bgpas-number
3. attribute-filter groupattribute-filter group name
4. attributeattribute code {discard |treat-as-withdraw }
ネクストホップ情報が変更されると、BGP はルーティング情報ベース(RIB)から通知を受信します(イベント駆動型の通知)。BGP は RIB からネクスト ホップ情報を取得して次の処理を行います。
ネクスト ホップが到達可能であるかどうかを確認する。
ネクスト ホップへの完全再帰 IGP メトリックを見つける(最適パス計算で使用)。
受信したネクスト ホップを検証する。
発信ネクスト ホップを計算する。
ネイバーの到達可能性および接続を確認する。
BGP ネクスト ホップの参照 BGP ネクスト ホップに関する追加の概念的な詳細を提供します。
BGP ネクスト ホップ トリガー遅延を設定するには、次の作業を実行します。ルーティング情報ベース(RIB)では変更の重大度に基づいてダンプニング通知が分類されます。イベント通知はクリティカルおよび非クリティカルとして分類されます。この作業では、クリティカル イベントと非クリティカル イベントの最小バッチ間隔を指定できます。
1. configure
2. router bgpas-number
3. address-family {ipv4 | ipv6} unicast
4. nexthop trigger-delay {criticaldelay |non-criticaldelay}
5. commit
ネイバーに対するネクスト ホップの計算をディセーブルにし、BGP アップデートのネクスト ホップ フィールドにユーザ自身のアドレスを挿入するには、次の作業を実行します。ルートをアドバタイズするときに使用する最適なネクスト ホップの計算をディセーブルにすると、すべてのルートがネットワーク デバイスによってネクスト ホップとしてアドバタイズされます。
(注) |
ネクスト ホップ処理は、アドレス ファミリ グループ、ネイバー グループ、またはネイバー アドレス ファミリに対して無効にすることができます。 |
1. configure
2. router bgpas-number
3. neighborip-address
4. remote-asas-number
5. address-family {ipv4 | ipv6} unicast
6. next-hop-self
7. commit
BGP コスト コミュニティは非過渡的な拡張コミュニティ属性で、内部 BGP(iBGP)およびコンフェデレーション ピアへ渡されますが、外部 BGP(eBGP)ピアへは渡されません。コスト コミュニティ機能により、コスト値を特定のルートに割り当てることで、ローカル ルート プリファレンスをカスタマイズし、最適パス選択プロセスに反映させることができます。拡張コミュニティ形式は、最適パス アルゴリズムの異なるポイントでの最適パスの決定に影響する標準の挿入ポイント(POI)を定義します。
BGP コスト コミュニティの参照 BGP コスト コミュニティに関する追加の概念的な詳細を提供します。
BGP は同一宛先への複数のパスを受信し、最適パス アルゴリズムを使用して RIB にインストールする最適なパスを決定します。ユーザが部分比較後に出力点を決定できるようにするため、最適パス選択処理で同等パスのタイブレークのためにコスト コミュニティが定義されます。BGP コスト コミュニティを設定するには、次の作業を実行します。
1. configure
2. route-policyname
3. set extcommunity cost{cost-extcommunity-set-name | cost-inline-extcommunity-set} [additive]
4. end-policy
5. router bgpas-number
6. 次のいずれかを実行します。
7. 次のいずれかを実行します。
8. commit
9. show bgpip-address
コミュニティ属性および拡張コミュニティ属性を eBGP ネイバーに送信することを指定するには、次の作業を実行します。これらの属性は、デフォルトでは eBGP ネイバーに送信されません。これに対して、iBGP ネイバーには常に送信されます。ここでは、コミュニティ属性を送信できるようにする方法の例を示します。拡張コミュニティを送信できるようにするには、send-community-ebgp キーワードを send-extended-community-ebgp キーワードで置き換えます。
ネイバー グループ、またはアドレス ファミリ グループに対して send-community-ebgp コマンドを設定すると、このグループを使用するすべてのネイバーがこの設定を継承します。あるネイバーに対して特別にこのコマンドを設定すると、継承された値が上書きされます。
(注) |
BGP コミュニティと拡張コミュニティ フィルタリングは、iBGP ネイバーには設定できません。コミュニティと拡張コミュニティは、VPNv4、MDT、IPv4、および IPv6 アドレス ファミリでは常に iBGP ネイバーに送信されます。 |
1. configure
2. router bgpas-number
3. neighborip-address
4. remote-asas-number
5. address-family{ipv4 {labeled-unicast | unicast | mdt | | mvpn | rt-filter | tunnel}| ipv6 {labeled-unicast | mvpn | unicast}}
6. 次のいずれかのコマンドを使用します。
7. commit
Intermediate System-to-Intermediate System(IS-IS)や Open Shortest Path First(OSPF)など、内部ゲートウェイ プロトコル(IGP)に iBGP ルートを再配布するには、次の作業を実行します。
(注) |
bgp redistribute-internal コマンドを使用するには、すべての BGP ルートを IP ルーティング テーブルに再インストールするために、clear route * コマンドを発行する必要があります。 |
注意 |
IGP への iBGP ルートの再配布は、自律システム内にルーティング ループが作成される原因となる可能性があります。このコマンドの使用には注意が必要です。 |
1. configure
2. router bgpas-number
3. bgp redistribute-internal
4. commit
VRF アドレス ファミリへのプロトコルの再配布を設定するには、次の作業を実行します。
内部ゲートウェイ プロトコル(IGP)が PE-CE プロトコルとして使用されている場合でも、インポート ロジックは BGP を経由して実行されます。したがって、すべての IGP ルートを BGP VRF テーブルにインポートする必要があります。
1. configure
2. router bgpas-number
3. vrfvrf-name
4. address-family {ipv4 | ipv6} unicast
5. 次のいずれかを実行します。
6. commit
BGP アップデート グループ機能には、アウトバウンド ポリシーを共有し、アップデート メッセージを共有できるネイバーのアップデート グループをダイナミックに計算し、最適化する新しいアルゴリズムが含まれています。BGP アップデート グループ機能では、アップデート グループ レプリケーションはピア グループ コンフィギュレーションから分離されるため、ネイバー コンフィギュレーションのコンバージェンス時間が短縮され、柔軟性が高まります。
この作業では、BGP アップデート グループの処理に関する情報を表示します。
1. show bgp [ipv4 {unicast | multicast | all | tunnel} | ipv6 {unicast | all } | all {unicast | multicast | alllabeled-unicast | tunnel} | vpnv4 unicast | vrf {vrf-name | all} [ipv4unicastipv6 unicast] | vpvn6 unicast ]update-group[neighborip-address | process-id.index[summary | performance-statistics]]
次に、EXEC コンフィギュレーションXR EXEC モードで実行された show bgp update-group コマンドの出力例を示します。
show bgp update-group Update group for IPv4 Unicast, index 0.1: Attributes: Outbound Route map:rm Minimum advertisement interval:30 Messages formatted:2, replicated:2 Neighbors in this update group: 10.0.101.92 Update group for IPv4 Unicast, index 0.2: Attributes: Minimum advertisement interval:30 Messages formatted:2, replicated:2 Neighbors in this update group: 10.0.101.91
BGP キーチェーンを使用すると、2 つの BGP ピア間のキーチェーン認証がイネーブルになります。BGP のエンドポイントは、どちらも draft-bonica-tcp-auth-05.txt を順守する必要があり、一方のエンドポイントのキーチェーンと、もう一方のエンドポイントのパスワードは機能しません。
BGP では、認証にこのキーチェーンを使用して、ヒットレス キー ロールオーバーを実装できます。キー ロールオーバーの仕様は時間に基づいているため、ピア間で時計のずれがあるとロールオーバーのプロセスに影響します。許容値の指定を設定できるため、承認時間枠をその分だけ(前後に)拡張できます。この承認時間枠により、アプリケーション(ルーティング プロトコルおよび管理プロトコルなど)のヒットレス キー ロールオーバーが容易になります。
キーのロール オーバーは、エンドポイントでのキーチェーン設定の不一致が原因でセッション トラフィック(送信または受信)で使用する共通のキーがない場合を除き、BGP セッションには影響しません。
キーチェーンは、さまざまな MAC 認証アルゴリズムをサポートして安全な認証を実現し、円滑なキー ロールオーバーを実装します。BGP のキーチェーンを設定するには、次の作業を実行します。このタスクはオプションです。
(注) |
ネイバー グループまたはセッション グループのキーチェーンが設定されている場合、そのグループを使用するネイバーはキーチェーンを継承します。あるネイバーのために特別に設定されたコマンドの値は、継承された値を上書きします。 |
1. configure
2. router bgpas-number
3. neighborip-address
4. remote-asas-number
5. keychainname
6. commit
BGP Accept Own 機能を使用すると、自動送信 VPN ルート(BGP スピーカーがルート リフレクタ(RR)から受信するルート)を処理できるようになります。「自動送信」ルートは、スピーカー自体によって最初にアドバタイズされたルートです。BGP プロトコル(RFC4271)に従って、BGP スピーカーは、スピーカー自体によって送信されたアドバタイズメントを拒否します。ただし、BGP Accept Own メカニズムを使用すると、プレフィックスの特定の属性を変更するルート リフレクタから反映された場合に、ルータは自身がアドバタイズしたプレフィックスを受け入れることが可能になります。ACCEPT-OWN と呼ばれる特別なコミュニティがルート リフレクタによってプレフィックスに付加されます。これは ORIGINATOR_ID および NEXTHOP/MP_REACH_NLRI チェックをバイパスするための受信側ルータに対する信号です。通常、BGP スピーカーは自動送信されたプレフィックスを自動送信チェック(ORIGINATOR_ID、NEXTHOP/MP_REACH_NLRI)によって検出し、受信した更新をドロップします。ただし、更新に Accept Own コミュニティがあれば、BGP スピーカーはそのルートを処理します。
BGP Accept Own の応用例の 1 つは、MPLS VPN ネットワーク内のエクストラネットの自動設定です。エクストラネットの設定では、ある VRF にあるルートは同じ PE の別の VRF にインポートされます。通常、エクストラネットのメカニズムでは、別の VRF からのプレフィックスのインポートを制御するために、エクストラネット VRF のインポート RT またはインポート ポリシーを編集する必要があります。ただし、Accept Own 機能を使用すると、ルート リフレクタは、PE で設定変更することなく、その制御をアサートできます。このように Accept Own 機能によって、異なる VRF 間でのルートのインポートの制御を集中管理できます。
(注) |
BGP Accept Own 機能は、ネイバー コンフィギュレーション モードの VPNv4 および VPNv6 アドレス ファミリ向けにのみサポートされています。 |
BGP Accept Own を設定するには、次の作業を実行します。
1. configure
2. router bgpas-number
3. neighborip-address
4. remote-asas-number
5. update-sourcetypeinterface-path-id
6. address-family {vpnv4 unicast | vpnv6 unicast}
7. accept-own [inheritance-disable]
CE1 がプレフィックス X を発信します。
プレフィックス X は、カスタマー VRF に (RD1:X) として設定されています。
プレフィックス X は IntraAS-RR11 に (RD1:X, RT1) としてアドバタイズされます。
IntraAS-RR11 が InterAS-RR1 に X を (RD1:X, RT1) としてアドバタイズします。
InterAS-RR1 はインバウンドのプレフィックス X とアウトバウンドの ACCEPT_OWN コミュニティに RT2 を付加し、IntraAS-RR31 にプレフィックス X をアドバタイズします。
IntraAS-RR31 が PE11 に X をアドバタイズします。
PE11 は X をサービス VRF に (RD2:X,RT1, RT2, ACCEPT_OWN) としてインストールします。
次に、BGP Accept Own を PE ルータに設定する例を示します。
router bgp 100 neighbor 45.1.1.1 remote-as 100 update-source Loopback0 address-family vpnv4 unicast route-policy pass-all in accept-own route-policy drop_111.x.x.x out ! address-family vpnv6 unicast route-policy pass-all in accept-own route-policy drop_111.x.x.x out ! !
router bgp 100 neighbor 45.1.1.1 remote-as 100 update-source Loopback0 address-family vpnv4 unicast route-policy rt_stitch1 in route-reflector-client route-policy add_bgp_ao out ! address-family vpnv6 unicast route-policy rt_stitch1 in route-reflector-client route-policy add_bgp_ao out ! ! extcommunity-set rt cs_100:1 100:1 end-set ! extcommunity-set rt cs_1001:1 1001:1 end-set ! route-policy rt_stitch1 if extcommunity rt matches-any cs_100:1 then set extcommunity rt cs_1000:1 additive endif end-policy ! route-policy add_bgp_ao set community (accept-own) additive end-policy !
BGP リンクステート(LS)は、BGP を介して内部ゲートウェイ プロトコル(IGP)リンクステート データベースを伝えるために定義されたアドレス ファミリ識別子(AFI)およびサブアドレス ファミリ識別子(SAFI)です。BGP LS は、ネットワーク トポロジ情報をトポロジ サーバおよびアプリケーション層トラフィック最適化(ALTO)サーバに提供します。BGP LS では、集約、情報の非表示、および抽象化に対するポリシー ベースの制御が可能です。BGP LS は、IS-IS および OSPFv2 をサポートしています。
(注) |
IGP は、リモート ピアからの BGP LS データを使用しません。BGP は、ルータの他のコンポーネントに受信した BGP LS データをダウンロードしません。 |
BGP リンクステート(LS)情報を BGP ネイバーと交換するには、次のステップを実行します。
1. configure
2. router bgp as-number
3. neighbor ip-address
4. remote-as as-number
5. address-family link-state link-state
6. commit
固有識別子 4 オクテット ASN を設定するには、次のステップを実行します。
1. configure
2. router bgp as-number
3. address-family link-state link-state
4. domain-distinguisher unique-id
5. commit
グローバル アドレス ファミリ コンフィギュレーション モードの permanent-network コマンドは、ルート ポリシーを使用して固定パスが設定されるプレフィックス(ネットワーク)のセットを識別します。ネイバー アドレス ファミリ コンフィギュレーション モードの advertise permanent-network コマンドは、固定パスをアドバタイズする必要があるピアを識別するために使用されます。別の最適パスが使用可能であっても、固定パスは常にアドバタイズ パーマネント ネットワーク設定を持つピアにアドバタイズされます。固定パスは、固定パスを受信するように設定されていないピアにはアドバタイズされません。
パーマネント ネットワーク機能は、デフォルトの仮想ルーティングおよび転送(VRF)下の IPv4 ユニキャストおよび IPv6 ユニキャスト アドレス ファミリ内のプレフィックスのみをサポートします。
次の制限は、パーマネント ネットワークの設定時に適用されます。
BGP パーマネント ネットワークを設定するには、次のタスクを実行します。パーマネント ネットワーク(パス)が設定されるプレフィックス(ネットワーク)のセットを識別するには、少なくとも 1 つのルート ポリシーを設定する必要があります。
1. configure
2. prefix-set prefix-set-name
3. exit
4. route-policy route-policy-name
5. end-policy
6. router bgp as-number
7. address-family { ipv4 | ipv6 } unicast
8. permanent-network route-policy route-policy-name
9. commit
10. show bgp {ipv4 | ipv6} unicast prefix-set
固定パスがアドバタイズされる必要があるピアを識別するには、このタスクを実行します。
1. configure
2. router bgp as-number
3. neighbor ip-address
4. remote-as as-number
5. address-family { ipv4 | ipv6 } unicast
6. advertise permanent-network
7. commit
8. show bgp {ipv4 | ipv6} unicast neighbor ip-address
BGP ルートは、BGP アナウンスメントの形で、プレフィックスが経由したドメイン間パスを識別する自律システム(AS)の設定と、アドレス プレフィックスを関連付けます。この設定は、BGP 内で AS_PATH 属性として表され、プレフィックスを発信した AS で開始されます。
誤ったプレフィックスのアナウンス、中間者攻撃など、BGP に対する既知の脅威を低減しやすくするためのセキュリティ要件の 1 つは、BGP ルートの発信元 AS を検証する能力です。アドレス プレフィックスの発信元であるとする AS 番号(BGP ルートの AS_PATH 属性から導出)は、プレフィックスの所有者によって検証および許可される必要があります。Resource Public Key Infrastructure(RPKI)は、IP アドレスとリソースとしての AS 番号の公的で検証可能なデータベースを構築するためのアプローチです。RPKI は、BGP(インターネット)プレフィックスから許可された元の AS 番号への情報マッピングなどの情報を含む、グローバルに分散されたデータベースです。BGP を実行しているルータは、RPKI に接続して、BGP パスの元の AS を検証できます。
リソース公開キー インフラストラクチャ(RPKI)キャッシュ サーバ パラメータを設定するには、次の作業を実行します。
RPKI サーバのコンフィギュレーション モードで RPKI キャッシュ サーバ パラメータを設定します。RPKI サーバのコンフィギュレーション モードを開始するには、ルータ BGP コンフィギュレーション モードで rpkiserver コマンドを使用します。
1. configure
2. routerbgpas-number
3. rpkicache {host-name | ip-address}
4. 次のいずれかのコマンドを使用します。
5. (任意) usernameuser_name
6. (任意) password
7. preferencepreference_value
8. purge-timetime
9. 次のいずれかのコマンドを使用します。
10. 次のいずれかのコマンドを使用します。
11. Shutdown
12. commit
RPKI プレフィックス検証処理の動作を制御するには、次の作業を実行します。
1. configure
2. routerbgpas-number
3. 次のいずれかのコマンドを使用します。
4. origin-asvaliditysignalibgp
5. commit
ステップ 1 |
configure |
||
ステップ 2 |
routerbgpas-number 例: RP/0/RP0/CPU0:router(config)#router bgp 100 BGP AS 番号を指定し、BGP コンフィギュレーション モードを開始します。このモードでは、BGP ルーティング プロセスを設定できます。 |
||
ステップ 3 |
次のいずれかのコマンドを使用します。
例: RP/0/RP0/CPU0:router(config-bgp)#rpki origin-as validation disable または RP/0/RP0/CPU0:router(config-bgp)#rpki origin-as validation time 50 または RP/0/RP0/CPU0:router(config-bgp)#rpki origin-as validation time off
|
||
ステップ 4 |
origin-asvaliditysignalibgp 例: RP/0/RP0/CPU0:router(config-bgp)#rpki origin-as validity signal ibgp 拡張コミュニティへの有効性状態の iBGP シグナリングをイネーブルにします。 これはグローバル アドレス ファミリ サブモードでも設定できます。 |
||
ステップ 5 |
commit |
RPKI 最適パス計算オプションを設定するには、次の作業を実行します。
1. configure
2. routerbgpas-number
3. rpkibestpathuseorigin-asvalidity
4. rpkibestpathorigin-asallowinvalid
5. commit
ステップ 1 |
configure |
||
ステップ 2 |
routerbgpas-number 例: RP/0/RP0/CPU0:router(config)#router bgp 100 BGP AS 番号を指定し、BGP コンフィギュレーション モードを開始します。このモードでは、BGP ルーティング プロセスを設定できます。 |
||
ステップ 3 |
rpkibestpathuseorigin-asvalidity 例: RP/0/RP0/CPU0:router(config-bgp)#rpki bestpath use origin-as validity BGP 最適パス処理でのパスのプリファレンスに影響する BGP パスの有効性状態をイネーブルにします。この設定は、ルータ BGP アドレス ファミリ サブモードでも設定できます。 |
||
ステップ 4 |
rpkibestpathorigin-asallowinvalid 例: RP/0/RP0/CPU0:router(config-bgp)#rpki bestpath origin-as allow invalid
この設定は、rpkibestpathuse origin-asvalidity 設定がイネーブルの場合にのみ有効になります。 |
||
ステップ 5 |
commit |
デフォルトでは、リンクがダウンすると、直接隣接する外部ピアの BGP セッションはすべて即時にリセットされます。自動リセットをディセーブルにするには bgp fast-external-fallover disable コマンドを使用します。自動リセットをイネーブルにするには no bgp fast-external-fallover disable コマンドを使用します。
RP/0/RP0/CPU0:router#configure RP/0/RP0/CPU0:router(config)#lpts pifib hardware police location 0/2/CPU0 RP/0/RP0/CPU0:router(config-pifib-policer-per-node)#flow bgp configured rate 4000 RP/0/RP0/CPU0:router(config-pifib-policer-per-node)#flow bgp known rate 4000 RP/0/RP0/CPU0:router(config-pifib-policer-per-node)#flow bgp default rate 4000 RP/0/RP0/CPU0:router(config-pifib-policer-per-node)#commit
BGP を実装するには、次の概念を理解する必要があります。
ネイバー間に BGP セッションを確立するには、BGP にルータ ID を割り当てる必要があります。ルータ ID は、BGP セッションが確立されると、OPEN メッセージに含めて BGP ピアに送信されます。
BGP は次の方法(プリファレンス順)でルータ ID の取得を試みます。
ルータ コンフィギュレーション モードで bgp router-id コマンドを使用して設定されたアドレスを使用する。
保存されたループバック アドレス設定を使用してルータがブートされた場合に、システムのループバック インターフェイス上の最大の IPv4 アドレスを使用する。
保存された設定に存在しない場合に、設定される最初のループバック アドレスのプライマリ IPv4 アドレスを使用する。
このいずれの方法でもルータ ID を取得できない場合、BGP はルータ ID を持たず、BGP ネイバーとのピアリング セッションを確立できません。そのような場合は、エラー メッセージがシステム ログに記録され、show bgp summary コマンドでは、ルータ ID として 0.0.0.0 が表示されます。ルータ ID を取得した BGP では、さらに適したルータ ID が使用可能になっても、同じルータ ID の使用を続行します。この使用方法によって、いずれの BGP セッションでも不要なフラッピングが発生しないようにします。一方、現在使用中のルータ ID が無効になった場合(インターフェイスがダウンするか、設定が変更されたことによる)、BGP では新しいルータ ID を選択し(上記のルールを使用)、確立したすべてのピアリング セッションをリセットします。
(注) |
ルータ ID の不要な変更(およびそれによる BGP セッションのフラッピング)を避けるために、bgp router-id コマンドを設定することを、強く推奨します。 |
BGP では、ルータに設定できるネイバーの最大数、および特定のアドレス ファミリのピアから受け入れるプレフィックスの最大数に制限を設定しています。この制限は、ルータにとって、ローカルまたはリモート ネイバーのいずれかの設定ミスに起因する、リソースの枯渇に対する予防措置となります。BGP 設定には、次の制限が適用されます。
設定できるピアのデフォルトの最大数は 100 です。このデフォルトは、bgp maximum neighbor コマンドを使用して変更できます。最大制限値を超えてさらにピアを設定しようとしたり、現在設定されているピアの数未満の最大制限値を設定しようとしたりすると失敗します。
特定のアドレス ファミリのピアから受信したプレフィックスの数が、このアドレス ファミリに対する最大制限値(デフォルト設定またはユーザ設定のいずれかによる)を超えると、停止通知メッセージがそのネイバーに送信され、このネイバーとのピアリングが終了されます。
特定のアドレス ファミリのネイバーとのピアリングが確立され、そのネイバーから一定数のプレフィックスをすでに受信した後で、そのネイバーのプレフィックスの最大数が設定されていることがあります。設定されたプレフィックスの最大数が、アドレス ファミリのネイバーからすでに受信したプレフィックスの数よりも小さい場合は、設定直後に停止通知メッセージがそのネイバーに送信され、そのネイバーとのピアリングが終了されます。
接続点 |
属性 |
一致 |
Set |
---|---|---|---|
aggregation |
as-path |
in is-local length neighbor-is originates-from passes-through unique-length |
— |
as-path-length |
is、ge、le、eq |
— | |
as-path-unique-length |
is、ge、le、eq |
— | |
community |
is-empty matches-any matches-every |
セット set additive delete in delete not in delete all |
|
destination |
in |
— | |
extcommunity cost |
— | セット set additive |
|
local-preference |
is、ge、le、eq |
セット |
|
med |
is、eg、ge、le |
setset +set - |
|
next-hop |
in |
セット |
|
origin |
is |
セット |
|
source |
in |
— | |
suppress-route |
— | suppress-route |
|
weight |
— | セット |
|
allocate-label |
as-path |
in is-local length neighbor-is originates-from passes-through unique-length |
— |
as-path-length |
is、ge、le、eq |
— | |
as-path-unique-length |
is、ge、le、eq |
— | |
community |
is-empty matches-any matches-every |
— | |
destination |
in |
— | |
label |
— | セット |
|
local-preference |
is、ge、le、eq |
— | |
med |
is、eg、ge、le |
— | |
next-hop |
in |
— | |
origin |
is |
— | |
source |
in |
— | |
clear-policy |
as-path |
in is-local length neighbor-is originates-from passes-through unique-length |
— |
as-path-length |
is、ge、le、eq |
— | |
as-path-unique-length |
is、ge、le、eq |
— | |
dampening |
as-path |
in is-local length neighbor-is originates-from passes-through unique-length |
— |
as-path-length |
is、ge、le、eq |
— | |
as-path-unique-length |
is、ge、le、eq |
— | |
community |
is-empty matches-any matches-every |
— | |
dampening |
—/ |
set dampening |
|
destination |
in |
— | |
local-preference |
is、ge、le、eq |
— | |
med |
is、eg、ge、le |
— | |
next-hop |
in |
— | |
origin |
is |
— | |
source |
in |
— | |
debug |
destination |
in |
— |
default originate |
med |
— | セット set + set - |
rib-has-route |
in |
— | |
neighbor-in |
as-path |
in is-local length 該当なし neighbor-is originates-from passes-through unique-length |
prepend prepend most-recent remove as-path private-as replace |
as-path-length |
is、ge、le、eq |
— | |
as-path-unique-length |
is、ge、le、eq |
— | |
communitycommunity with ‘peeras’ |
is-empty matches-any matches-every |
セット set additive delete-in delete-not-in delete-all |
|
destination |
in |
— | |
extcommunity cost |
— | セット set additive |
|
extcommunity rt |
is-empty matches-any matches-every matches-within |
セット additive delete-in delete-not-in delete-all |
|
extcommunity soo |
is-empty matches-any matches-every matches-within |
— | |
local-preference |
is、ge、le、eq |
セット |
|
med |
is、eg、ge、le |
セット set + set - |
|
next-hop |
in |
セット set peer address |
|
origin |
is |
セット |
|
route-aggregated |
route-aggregated |
該当なし |
|
source |
in |
— | |
weight |
— | セット |
|
neighbor-out |
as-path |
in is-local length — neighbor-is originates-from passes-through unique-length |
prepend prepend most-recent remove as-path private-as replace |
as-path-length |
is、ge、le、eq |
— | |
as-path-unique-length |
is、ge、le、eq |
— | |
communitycommunity with ‘peeras’ |
is-empty matches-any matches-every |
セット set additive delete-in delete-not-in delete-all |
|
destination |
in |
— | |
extcommunity cost |
— | セット set additive |
|
extcommunity rt |
is-empty matches-any matches-every matches-within |
セット additive delete-in delete-not-in delete-all |
|
extcommunity soo |
is-empty matches-any matches-every matches-within |
— | |
local-preference |
is、ge、le、eq |
セット |
|
med |
is、eg、ge、le |
セット set + set - set max-unreachable set igp-cost |
|
next-hop |
in |
セット set self |
|
origin |
is |
セット |
|
path-type |
is |
— | |
rd |
in |
— | |
route-aggregated |
route-aggregated |
— |
|
source |
in |
— | |
unsuppress-route |
— | unsuppress-route |
|
vpn-distinguisher |
— | セット |
|
neighbor-orf |
orf-prefix |
in |
n/a |
network |
as-path |
— | prepend |
community |
— | セット set additive delete-in delete-not-in delete-all |
|
destination |
in |
— | |
extcommunity cost |
— | セット set additive |
|
mpls-label |
route-has-label |
— | |
local-preference |
— | セット |
|
med |
— | セット set+ set- |
|
next-hop |
in |
セット |
|
origin |
— | セット |
|
route-type |
is |
— | |
tag |
is、ge、le、eq |
— | |
weight |
— | セット |
|
next-hop |
destination |
in |
— |
プロトコル |
is、in |
— | |
source |
in |
— | |
redistribute |
as-path |
— | prepend |
community |
— | セット set additive delete in delete not in delete all |
|
destination |
in |
— | |
extcommunity cost |
— | setset additive |
|
local-preference |
— | セット |
|
med |
— | セット set+ set- |
|
next-hop |
in |
セット |
|
origin |
— | セット |
|
mpls-label |
route-has-label |
— | |
route-type |
is |
— | |
tag |
is、eq、ge、le |
— | |
weight |
— | セット |
|
retain-rt |
extcommunity rt |
is-empty matches-any matches-every matches-within |
— |
show |
as-path |
in is-local length neighbor-is originates-from passes-through unique-length |
— |
as-path-length |
is、ge、le、eq |
— | |
as-path-unique-length |
is、ge、le、eq |
— | |
community |
is-empty matches-any matches-every |
— | |
destination |
in |
— | |
extcommunity rt |
is-empty matches-any matches-every matches-within |
— | |
extcommunity soo |
is-empty matches-any matches-every matches-within |
— | |
med |
is、eg、ge、le |
— | |
next-hop |
in |
— | |
origin |
is |
— | |
source |
in |
— |
コマンド |
import |
export |
aggregation |
再配布 |
---|---|---|---|---|
prepend as-path most-recent |
eBGP のみ |
eBGP のみ |
n/a |
n/a |
replace as-path |
eBGP のみ |
eBGP のみ |
n/a |
n/a |
set med igp-cost |
禁止 |
eBGP のみ |
禁止 |
禁止 |
set weight |
n/a |
禁止 |
n/a |
n/a |
suppress |
禁止 |
禁止 |
n/a |
禁止 |
BGP ルータは、通常は同じ宛先に対する複数のパスを受信します。BGP の最適パス アルゴリズムは、IP ルーティング テーブルに格納し、トラフィックの転送に使用する最適なパスを決めるものです。この項では、インターネット技術特別調査委員会(IETF)のネットワーク ワーキング グループによる draft-ietf-idr-bgp4-24.txt 資料の 9.1 項で指定されている BGP 最適パス アルゴリズムの Cisco IOS XR ソフトウェア実装について説明します。
BGP 最適パス アルゴリズムは、次の 3 つのパートに分かれて実行されます。
パート 1:2 つのパスを比較して、いずれが優れているのかを判別します。
パート 2:すべてのパスを順に処理し、全体として最適なパスを選択するためにパスを比較する順序を決定します。
パート 3:新しい最適パスを使用するに足るだけの差が新旧の最適パスにあるかどうかを判別します。
(注) |
比較演算が推移的ではないため、パート 2 で決定された比較の順序は重要です。つまり、3 つのパス、A、B、C がある場合、A と B を比較したときに A の方が優れていて、B と C と比較したときに B の方が優れている場合、A と C を比較したときに必ずしも A が優れているとは限りません。この非推移性は、Multi Exit Discriminator(MED)は、すべてのパス間ではなく、同じネイバー自律システム(AS)からのパス間のみで比較されるために生じます。 |
2 つのパスを比較して、優れたパスを判別するには、次の手順を実行します。
いずれかのパスが無効な場合(可能な最大 MED 値を持つパス、到達不能なネクスト ホップを持つパスなど)、もう一方のパスが選択されます(そのパスが有効な場合)。
パスの準最適パス コスト コミュニティが等しくない場合は、準最適パス コスト コミュニティの低いパスが最適パスとして選択されます。
(注) |
重みは完全にルータにローカルであり、weight コマンドまたはルーティング ポリシーを使用して設定できます。 |
パスのローカル プリファレンスが等しくない場合は、ローカル プリファレンスが高い方のパスが選択されます。
(注) |
パスとともにローカル プリファレンス属性を受信したか、ルーティング ポリシーによって設定された場合は、その値が、この比較で使用されます。それ以外の場合は、デフォルト ローカル プリファレンス値の 100 が使用されます。デフォルト値は、bgp default local-preference コマンドを使用して変更できます。 |
パスの 1 つが再配布されたパス、つまり redistribute コマンドまたは network コマンドによるパスの場合は、そのパスが選択されます。それ以外の場合、パスの 1 つがローカルで作成された集約パスのとき、つまり aggregate-address コマンドによるパスのときは、そのパスが選択されます。
(注) |
ステップ 1 ~ ステップ 4 では、RFC 1268 の「Path Selection with BGP」を実装します。 |
パス間で AS パスの長さが異なる場合は、AS パスの短い方のパスが選択されます。このステップは、bgp bestpath as-path ignore コマンドが設定されている場合は省略されます。
(注) |
AS パスの長さを計算する場合は、コンフェデレーション セグメントは無視され、AS セットは 1 としてカウントされます。 |
(注) |
eiBGP は、内部および外部の BGP マルチパス ピアを指定します。eiBGP では、内部および外部のパスを同時に使用できます。 |
パス間で起点が異なる場合は、起点の値が低い方のパスが選択されます。内部ゲートウェイ プロトコル(IGP)は EGP よりも低く、EGP は INCOMPLETE より低いと見なされます。
該当する場合は、パスの MED が比較されます。等しくない場合は、MED の低いパスが選択されます。
このステップが実行されるかどうかに影響するコンフィギュレーション オプションは多数あります。一般に、MED はパスが両方のパスが同じ AS にあるネイバーから受信された場合に比較され、それ以外の場合は MED 比較はスキップされます。ただし、この動作は特定のコンフィギュレーション オプションによって変更され、考慮すべきいくつかの場合があります。
bgp bestpath med always コマンドが設定されている場合、MED 比較は、パス内のネイバー AS にかかわらず、常に実行されます。それ以外の場合、MED 比較は、次のように、比較する 2 つのパスの AS パスによって異なります。
パスに AS パスがない場合、または AS パスが AS_SET で始まる場合、パスは内部と見なされ、MED は他の内部パスと比較されます。
AS パスが AS_SEQUENCE で開始されている場合、ネイバー AS は、シーケンスの最初の AS 番号であり、MED は、同じネイバー AS を持つ他のパスと比較されます。
AS パスがコンフェデレーション セグメントのみを含むか、コンフェデレーション セグメントで開始されて AS_SET が続く場合、MED は、他のいずれのパスとも比較されません。ただし、bgp bestpath med confed コマンドが設定されている場合を除きます。その場合、パスは内部であると見なされ、MED は他の内部パスと比較されます。
AS パスがコンフェデレーション セグメントとそれに続く AS_SEQUENCE で開始している場合、ネイバー AS は AS_SEQUENCE の最初の AS 番号であり、MED は同じネイバー AS を持つ他のパスと比較されます。
(注) |
パスとともに MED 属性を受信しなかった場合、MED は 0 であると見なされます。ただし、bgp bestpath med missing-as-worst コマンドが設定されている場合を除きます。この場合、MED 属性が受信されていない場合、MED は最高値と見なされます。 |
パスの 1 つを外部ピアから受信し、もう 1 つを内部(またはコンフェデレーション)ピアから受信した場合は、外部ピアからのパスが選択されます。
パスのネクスト ホップへの IGP メトリックが異なる場合、IGP メトリックが小さい方のパスが選択されます。
パスの IP コスト コミュニティが等しくない場合は、IP コスト コミュニティの低いパスが最適パスとして選択されます。
ステップ 1 ~ステップ 10 ですべてのパス パラメータが一致している場合は、ルータ ID が比較されます。送信元属性付きでパスを受信した場合は、この属性が比較対象のルータ ID として使用されます。それ以外の場合は、パスの受信元ネイバーのルータ ID が使用されます。パス間でルータ ID が異なる場合は、ルータ ID の小さい方のパスが選択されます。
(注) |
送信元をルータ ID として使用する場合は、2 つのパスが同じルータ ID を持つことがあります。同じピア ルータと 2 つの BGP セッションを持つこともでき、したがって、同じルータ ID を持つ 2 つのパスを受信することがあります。 |
パス間でクラスタ長が異なる場合は、クラスタ長の小さい方のパスが選択されます。クラスタ リスト属性なしでパスを受信した場合、クラスタの長さは 0 であると見なされます。
最後に、IP アドレスの小さいネイバーから受信したパスが選択されます。ローカル生成されたパス(たとえば、再配布されたパス)は、ネイバー IP アドレスが 0 であると見なされます。
BGP 最適パス アルゴリズム実装のパート 2 では、パスの比較順序を決定します。比較順序は次のように決定されます。
各グループ内のすべてのパス間で MED を比較できるように、パスがグループ分けされます。2 つのパス間で MED を比較できるかどうかは、パスのペアの比較 と同じルールを使用して決定されます。通常、この比較の結果は、ネイバー AS ごとに 1 グループになります。bgp bestpath med always コマンドが設定されている場合は、パスを含む 1 グループだけがあります。
各グループ内の最適パスが決定されます。最適パスは、グループ内のすべてのパスを反復処理し、その時点までの最適なパスを追跡することによって決定されます。各パスが、この時点までの最適なパスと比較され、より適していれば新しいこの時点までの最適なパスになって、グループ内の次のパスと比較されます。
ステップ 2 の各グループから選択した最適パスで構成される、パスのセットを形成します。このパス セットに対してステップ 2 と同様の比較を繰り返すことによって、全体としての最適パスを選択します。
実装のパート 3 では、最適パスの変更を抑制するかどうか、つまり、新しい最適パスを使用するのか、既存の最適パスの使用を続行するのかを決定します。最適パス選択アルゴリズムが任意性を持つ部分まで、新規の最適パスと一致している場合は(ルータ ID が同一であることが前提)、引き続き既存の最適パスを使用できます。既存の最適パスの使用を続行すると、ネットワークでのチャーンを回避できます。
(注) |
この抑制動作は、IETF ネットワーキング ワーキング グループの draft-ietf-idr-bgp4-24.txt 資料に準拠していませんが、IETF ネットワーキング ワーキング グループの draft-ietf-idr-avoid-transition-00.txt 資料に指定されています。 |
この抑制動作は、bgp bestpath compare-routerid コマンドを設定してオフにできます。このコマンドを設定すると、新しい最適パスが常に既存の最適パスよりも優先されます。
それ以外の場合は、次の手順を使用して、最適パスの変更を抑制するかどうかが決定されます。
既存の最適パスが有効でなくなった場合は、変更を抑制できません。
既存または新規の最適パスを内部(またはコンフェデレーション)ピアから受信したか、ローカルで生成した(再配布によるなど)場合は、変更を抑制できません。つまり、抑制は、両方のパスを外部ピアから受信した場合のみ可能です。
パスを同じピアから受信した場合(通常はパスのルータ ID が同一)は、変更を抑制できません。ルータ ID は、パスのペアの比較 のルールを使用して計算されます。
パスの重み、ローカル プリファレンス、起点、またはネクスト ホップへの IGP メトリックが異なる場合は、変更を抑制できません。このすべての値は、パスのペアの比較 のルールを使用して計算されます。
パスの AS パス長が異なり、bgp bestpath as-path ignore コマンドが設定されていない場合は、変更を抑制できません。この場合もやはり、AS パスの長さは、パスのペアの比較 のルールを使用して計算されます。
パスの MED を比較でき、MED が異なる場合は、変更を抑制できません。MED を比較できるかどうかは、パスのペアの比較 で説明されている MED 値の計算とまったく同じルールによって判定されます。
ステップ 1 ~ステップ 6 のすべてのパス パラメータに該当しない場合は、変更を抑制できます。
BGP アップデート グループ機能により、BGP アップデートの生成がネイバー設定から分離されます。BGP アップデート グループ機能により、アウトバウンド ルーティング ポリシーに基づいて BGP アップデート グループ メンバーシップを動的に計算するアルゴリズムが導入されます。この機能に対してネットワーク オペレータによる設定は不要です。アップデート グループをベースとするメッセージ生成は自動的かつ個別に行われます。
設定の変更があった場合、ルータでは、アップデート グループ メンバーシップを自動的に再計算し、変更を適用します。
BGP アップデート グループの生成を最適化するには、ネットワーク オペレータは、類似するアウトバウンド ポリシーを持つネイバーのアウトバウンド ルーティング ポリシーを同じものにしておくことを推奨します。この機能には、BGP アップデート グループを監視するためのコマンドが含まれます。
コスト コミュニティ属性は、ルート ポリシーで set extcommunity cost コマンドを設定することにより、内部ルートに適用されます。cost community set 句は、コスト コミュニティ ID 番号(0 ~ 255)およびコスト コミュニティ番号(0 ~ 4294967295)を使用して設定されます。コスト コミュニティ番号によってパスの優先度が判断されます。最も低いコスト コミュニティ番号を持つパスが優先されます。コスト コミュニティ番号を具体的に設定していないパスには、デフォルトのコスト コミュニティ番号である 2147483647(0 ~ 4294967295 の中央値)が割り当てられ、最適パス選択プロセスにより評価されます。2 つのパスが同じコスト コミュニティ番号を使用して設定されている場合、パス選択プロセスでは最も低いコスト コミュニティ ID のパスが優先されます。このコスト拡張コミュニティ リンク属性は、拡張コミュニティ交換がイネーブルなとき、iBGP ピアに伝播します。
次のコマンドには route-policy キーワードが含まれています。このキーワードは、cost community set 句を使用して設定されるルート ポリシーを適用するために使用できます。
ネクスト ホップが到達不能になった。
ネクスト ホップが到達可能になった。
ネクスト ホップへの完全な繰り返し IGP メトリックが変更される。
ファースト ホップの IP アドレスまたはファースト ホップのインターフェイスが変更される。
ネクスト ホップが接続された。
ネクスト ホップが接続解除された。
ネクスト ホップがローカル アドレスになった。
ネクスト ホップが非ローカル アドレスになった。
(注) |
到達可能性および再帰メトリック イベントは、最適パスの再計算をトリガーします。 |
クリティカル イベントは、ネクスト ホップの到達可能性(到達可能と到達不能)、接続性(接続と非接続)、および局在性(ローカルと非ローカル)に関係があります。これらのイベントの通知は遅延しません。
非クリティカル イベントには、IGP メトリックの変更のみが含まれます。これらのイベントは 3 秒の間隔で送信されます。メトリック変更イベントは最後の 1 つが送信されてから 3 秒後にバッチ処理され、送信されます。
BGP は、次のいずれかのイベントが発生したときに通知を受けます。
ネクスト ホップが到達不能になった。
ネクスト ホップが到達可能になった。
ネクスト ホップへの完全な繰り返し IGP メトリックが変更される。
ファースト ホップの IP アドレスまたはファースト ホップのインターフェイスが変更される。
ネクスト ホップが接続された。
ネクスト ホップが接続解除された。
ネクスト ホップがローカル アドレスになった。
ネクスト ホップが非ローカル アドレスになった。
(注) |
到達可能性および再帰メトリック イベントは、最適パスの再計算をトリガーします。 |
クリティカルおよび非クリティカル イベントのネクスト ホップ トリガー遅延は、nexthop trigger-delay コマンドを使用して、クリティカルおよび非クリティカル イベントの最小バッチ間隔を指定するように設定できます。トリガー遅延は、アドレス ファミリに依存します。
BGP ネクストホップ トラッキング機能では、次の特性を持つルートを持つネクスト ホップだけを BGP ルートの解決に使用するように指定することができます。
集約ルートを回避するために、プレフィックスの長さは指定された値よりも長くなっている。
振動につながる可能性のあるネクスト ホップの解決に BGP ルートが使用されないように、選択したリストにソース プロトコルが含まれている。
このルート ポリシーのフィルタリングが可能なのは、RIB により、ネクスト ホップを解決するルートのソース プロトコル、およびこのルートに関連付けられているマスクの長さが特定されるからです。nexthop route-policy コマンドは、ルート ポリシーを指定するために使用します。
ピアリング インターフェイスの IPv6 アドレスとしてのネクスト ホップ
BGP を使用すると、IPv4 セッションで IPv6 プレフィックスを伝送できます。IPv6 プレフィックスのネクスト ホップは、ネクスト ホップ ポリシーを使用して設定できます。ポリシーが設定されていない場合、ネクスト ホップはピアリング インターフェイスの IPv6 アドレスとして設定されます(いずれかのインターフェイスが設定されている場合は、IPv6 ネイバー インターフェイスまたは IPv6 の更新送信元インターフェイス)。
ネクスト ホップ ポリシーが設定されておらず、IPv6 ネイバー インターフェイスも IPv6 更新送信元インターフェイスも設定されていない場合は、ネクスト ホップは IPv4 射影 IPv6 アドレスになります。
範囲を指定した IPv4/VPNv4 テーブル ウォーク
処理するアドレス ファミリを判別するために、ネクスト ホップと関連付けられたゲートウェイ コンテキストを逆参照し、次に、ゲートウェイ コンテキストを調べてそのゲートウェイ コンテキストを使用しているアドレス ファミリを判別することにより、ネクスト ホップ通知が受信されます。IPv4 ユニキャスト アドレス ファミリと VPNv4 ユニキャスト アドレス ファミリは、RIB 内の IPv4 ユニキャスト テーブルに登録されるため、同じゲートウェイ コンテキストを共有します。その結果、RIB から IPv4 ユニキャスト ネクスト ホップ通知を受信したときは、グローバル IPv4 ユニキャスト テーブルと VPNv4 テーブルの両方が処理されます。ネクスト ホップでマスクを保持することで、そのネクスト ホップが、IPv4 ユニキャスト、VPNv4 ユニキャスト、またはこの両方に属しているのかどうかを示します。この範囲を指定したテーブル ウォークにより、適切なアドレス ファミリ テーブル内に処理が限定されます。
アドレス ファミリ処理の並べ替え
ソフトウェアでは、アドレス ファミリの数値に基づいてアドレス ファミリ テーブルを探索します。ネクスト ホップ通知バッチを受信すると、アドレス ファミリ処理の順序が、次の順序に並べ替えられます。
IPv4 トンネル
VPNv4 ユニキャスト
VPNv6 ユニキャスト
IPv4 ラベル付きユニキャスト
IPv4 ユニキャスト
IPv4 MDT
IPv6 ユニキャスト
IPv6 ラベル付きユニキャスト
IPv4 トンネル
VPNv4 ユニキャスト
IPv4 ユニキャスト
IPv6 ユニキャスト
ネクスト ホップ処理の新規スレッド
spkr プロセスの critical-event スレッドでは、ネクスト ホップ、双方向フォワーディング検出(BFD)、および高速外部フェールオーバー(FEF)の通知のみを処理します。この critical-event スレッドによって、BGP コンバージェンスは、大量の時間を必要とするおそれのある他のイベントによる悪影響が確実に受けなくなります。
show、clear、debug コマンド
show bgp nexthops コマンドは、ネクスト ホップ通知に関する統計情報、この通知の処理に費やした時間、および RIB に登録されている各ネクスト ホップに関する詳細を表示します。clear bgp nexthop performance-statistics コマンドは、モニタリングを容易にするために、ネクスト ホップの show コマンドの処理部分に関する累積統計情報をクリアします。clear bgp nexthop registration コマンドは、ネクスト ホップを RIB に非同期的に登録します。
debug bgp nexthop コマンドは、ネクスト ホップ処理の情報を表示します。out キーワードを指定すると、RIB に登録されている BGP のネクスト ホップに関するデバッグ情報のみが表示されます。in キーワードでは、RIB から受信したネクスト ホップ通知に関するデバッグ情報が表示されます。out キーワードでは、RIB に送信されたネクスト ホップ通知に関するデバッグ情報が表示されます。
eBGP から取得した到達可能性情報を持つ複数の境界 BGP ルータがあり、ローカル ポリシーが適用されていない場合、境界ルータでは、eBGP パスを最適パスとして選択します。境界ルータでは、この最適パスを ISP ネットワークの内部にアドバタイズします。コア ルータの場合、同じ宛先に対し複数のパスがある場合がありますが、1 つのパスのみを最適パスとして選択し、そのパスを転送用に使用します。iBGP マルチパス ロード シェアリングでは、複数の等距離パス間でロード シェアリングを可能にする機能が追加されます。複数の iBGP の最適パスを設定すると、ルータでは、特定のサイトを宛先とするトラフィックを均等に負担できるようになります。iBGP のマルチパス ロード シェアリング機能は、サービス プロバイダー バックボーンを持つマルチプロトコル ラベル スイッチング(MPLS)バーチャル プライベート ネットワーク(VPN)と同様に機能します。
同じ宛先への複数のパスをマルチパスと見なすには、次の基準を満たす必要があります。
すべての属性が同じである必要があります。属性には、重み、ローカル プリファレンス、自律システム パス(長さだけでなく属性全体)、発信元コード、Multi Exit Discriminator(MED)、および Interior Gateway Protocol(IGP)距離が含まれます。
各マルチパスのネクスト ホップ ルータが異なっている必要があります。
(注) |
Cisco では、インターネット プロトコル バージョン 6(IPv6)の完全なユニキャスト機能を提供しています。
IPv6 ユニキャスト アドレスは、単一ノード上の単一インターフェイスの識別子です。ユニキャスト アドレスに送信されたパケットは、そのアドレスが示すインターフェイスに配信されます。Cisco IOS XR ソフトウェアでは、次の IPv6 ユニキャスト アドレス タイプがサポートされます。
IPv6 ユニキャスト アドレッシングの詳細については、『IP Addresses and Services Configuration Guide』を参照してください。
プライベート自律システム番号(ASN)は、グローバルに一意な AS 番号を保護するために、インターネット サービス プロバイダー(ISP)およびお客様のネットワークで使用されます。プライベート AS 番号は一意でないため、グローバル インターネットへのアクセスには使用できません。AS 番号はルーティング アップデートの eBGP AS パスに表示されます。プライベート ASN を使用している場合にグローバル インターネットにアクセスするには、AS パスからプライベート ASN を削除する必要があります。
パブリックな AS 番号は、InterNIC によって割り当てられ、グローバルに一意です。範囲は 1 ~ 64511 です。プライベート AS 番号は、グローバルに一意な AS 番号(有効な範囲は 64512 ~ 65535)を保護するために使用されます。プライベート AS 番号はグローバル BGP ルーティング テーブルにリークできません。プライベート AS 番号は一意ではなく、BGP 最適パスの計算には一意の AS 番号が必要であるからです。そのため、ルートが BGP ピアに伝播される前に、AS パスからプライベート AS 番号を削除する必要がある可能性があります。
外部 BGP(eBGP)では、グローバルなインターネットへのルーティングで、グローバルに一意な AS 番号を使用する必要があります。プライベート AS 番号(これは一意でない)を使用すると、グローバルなインターネットにアクセスできません。BGP の AS パスからプライベート ASN を削除および交換する機能によって、プライベート AS に属するルータがグローバルなインターネットにアクセスできるようになりました。ネットワーク管理者は、発信アップデート メッセージに含まれる AS パスからプライベート AS を削除するようにルータを設定します。場合によっては、これらの番号をローカル ルータの ASN で置き換えて、AS パス長が変化しないようにします。
AS パスからプライベート ASN を削除および交換する機能は、次のように拡張されました。
remove-private-as コマンドでは、AS パスにパブリックとプライベートの両方の ASN が含まれる場合でも、AS パスからプライベート AS 番号が削除されます。
remove-private-as コマンドでは、AS パスにプライベート AS 番号のみが含まれる場合でも、AS パスからプライベート AS 番号が削除されます。このコマンドは eBGP ピアのみに適用され、その場合、eBGP ピアではローカル ルータの AS 番号が AS パスに付加されるため、長さ 0 の AS パスにはなることはありません。
remove-private-as コマンドでは、AS パスでコンフェデレーション セグメントの前にプライベート ASN が出現する場合でも、プライベート AS 番号が削除されます。
replace-as コマンドでは、パスから削除されるプライベート AS の番号をローカルの AS 番号に置き換えることができるため、AS パスの長さは同じままに保つことができます。
この機能は、アドレス ファミリごとにネイバーに適用できます(アドレス ファミリ コンフィギュレーション モード)。そのため、この機能をあるアドレス ファミリのネイバーには適用して、別のアドレス ファミリでは適用しないようにすることで、機能が設定されているアドレス ファミリのみのアウトバウンド側のアップデート メッセージに影響を与えることができます。
プライベート AS 番号が削除または交換されたことを確認するには、show bgp neighbors コマンドおよび show bgp update-group コマンドを使用します。
BGP アップデート メッセージのエラー処理によって、セッションのリセットを避けるためにエラー アップデート メッセージの処理における BGP の動作が変わります。IETF IDR I-D:draft-ietf-idr-error-handling で説明されているアプローチに基づいて、Cisco IOS XR BGP アップデート メッセージのエラー処理を実装すると、重大度、更新エラーが発生する可能性、属性のタイプなどの要素に基づいて、BGP 更新エラーはさまざまなカテゴリに分類されます。各カテゴリで発生したエラーは、ドラフトに沿って処理されます。セッションのリセットは、エラーの処理プロセス中は可能な限り回避されます。一部のカテゴリのエラー処理は、デフォルトの動作を有効または無効にする設定コマンドによって制御されます。
基本の BGP 仕様に応じて、不正な属性を含むアップデート メッセージを受信した BGP スピーカは、不正な属性が受信されたセッションをリセットする必要があります。セッションのリセットは、不正な属性があるルートだけでなくセッションを介して交換される他の有効なルートにも影響するので、この動作は好ましくありません。
不正な形式のアップデート パケットをルータが受信すると、ROUTING-BGP-3-MALFORM_UPDATE タイプの ios_msg がコンソールに出力されます。このレートは、すべてのネイバーで 1 分間に 1 つのメッセージになるよう制限されています。不正なパケットが「Discard Attribute」(A5)または「Local Repair」(A6)アクションの対象になった場合は、ネイバー 1 つおよびアクション 1 つごとに ios_msg メッセージが出力されます。これは、ネイバーが直前の「Established」状態に到達して以降に受信した不正な形式のアップデートの数とは関係ありません。
%ROUTING-BGP-3-MALFORM_UPDATE : Malformed UPDATE message received from neighbor 13.0.3.50 - message length 90 bytes, error flags 0x00000840, action taken "TreatAsWithdraw". Error details: "Error 0x00000800, Field "Attr-missing", Attribute 1 (Flags 0x00, Length 0), Data []"
[4843.46]RP/0/0/CPU0:Aug 21 17:06:17.919 : bgp[1037]: %ROUTING-BGP-5-UPDATE_FILTERED : One or more attributes were filtered from UPDATE message received from neighbor 40.0.101.1 - message length 173 bytes, action taken "DiscardAttr". Filtering details: "Attribute 16 (Flags 0xc0): Action "DiscardAttr"". NLRIs: [IPv4 Unicast] 88.2.0.0/17
[391.01]RP/0/0/CPU0:Aug 20 19:41:29.243 : bgp[1037]: %ROUTING-BGP-5-UPDATE_FILTERED : One or more attributes were filtered from UPDATE message received from neighbor 40.0.101.1 - message length 166 bytes, action taken "TreatAsWdr". Filtering details: "Attribute 4 (Flags 0xc0): Action "TreatAsWdr"". NLRIs: [IPv4 Unicast] 88.2.0.0/17
このソリューションによって、次の IP アドレス プレフィックスに対する Martian チェックを無効化できます。