この製品のマニュアルセットは、偏向のない言語を使用するように配慮されています。このマニュアルセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザーインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブランゲージに対する取り組みの詳細は、こちらをご覧ください。
シスコは世界中のユーザにそれぞれの言語でサポート コンテンツを提供するために、機械と人による翻訳を組み合わせて、本ドキュメントを翻訳しています。ただし、最高度の機械翻訳であっても、専門家による翻訳のような正確性は確保されません。シスコは、これら翻訳の正確性について法的責任を負いません。原典である英語版(リンクからアクセス可能)もあわせて参照することを推奨します。
このドキュメントでは、5つのボーダーゲートウェイプロトコル(BGP)ケーススタディについて説明します。
このドキュメントに関する固有の要件はありません。
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
表記法の詳細については、『シスコ テクニカル ティップスの表記法』を参照してください。
RFC 1771 で定義されている BGP を使用すると、Autonomous System(AS; 自律システム)間にループのないドメイン間ルーティングを作成できます。AS は、単一の技術管理に基づくルータのまとまりです。AS 内のルータは、複数の内部ゲートウェイ プロトコル(IGP)を使用して AS 内のルーティング情報を交換できます。これらのルータは、外部ゲートウェイ プロトコルを使用して AS の外部にパケットをルーティングできます。
BGP はトランスポート プロトコルとして TCP(ポート 179)を使用します。2 台の BGP ルータは相互に TCP 接続を形成します。これらのルータはピア ルータです。ピア ルータはメッセージを交換し、接続パラメータを開いて確認します。
BGP ルータはネットワーク到達可能性情報を交換します。主にこの情報は、宛先ネットワークに到達するルートで経由する必要のあるフル パスを示します。これらのパスは BGP AS 番号です。この情報は、ループフリーな AS のグラフの作成に役立ちます。このグラフでは、ルーティング動作を制限するためにルーティング ポリシーを適用すべき場所もわかります。
BGP ルーティング情報を交換するために TCP 接続を確立している 2 台のルータは、「ピア」または「ネイバー」と呼ばれます。BGP ピアは最初に完全な BGP ルーティング テーブルを交換します。この交換以降、ピアはルーティング テーブルが変更されるたびに差分更新を送信します。BGP には BGP テーブルのバージョン番号が保持されます。バージョン番号はすべての BGP ピアで同一です。ルーティング情報の変更によって BGP がテーブルを更新するたびに、バージョン番号は変更されます。キープアライブ パケットを送信することで、BGP ピア間の接続が有効であるかどうかが確認されます。エラーまたは特殊な状況が発生すると、通知パケットが送信されます。
複数の BGP スピーカを含む AS は、他の AS の中継サービスとして機能できます。このセクションの次の図に示すように、AS200はAS100およびAS300の中継ASです。
外部 AS に情報を送信するには、ネットワークの到達可能性が確保されている必要があります。到達可能性を確保するために必要な処理は次のとおりです。
AS 内のルータ間の内部 BGP(iBGP)ピアリング
AS 内で動作している IGP への BGP 情報の再配布
2 つの異なる AS に属するルータ間で動作する BGP は、外部 BGP(eBGP)と呼ばれます。BGP が同じ AS 内のルータ間で動作している場合は、iBGP と呼ばれます。
同じAS内のルータ間で稼働するBGP
BGP を有効化および設定するには、次の手順を実行します。
2 台のルータ(RTA と RTB)が BGP を使用して通信すると仮定します。最初の例では、RTA と RTB は別の AS に属しています。2 番目の例では、両方のルータが同じ AS に属しています。
ルータ プロセスと、ルータが属する AS 番号を定義します。
次のコマンドを発行して、ルータで BGP を有効にします。
router bgp <autonomous-system>
RTA#
router bgp 100
RTB#
router bgp 200
これらのステートメントは、RTA が BGP を実行し、AS100 に属すること、そして RTB は BGP を実行し、AS200 に属することを示します。
BGP ネイバーを定義します。
BGP ネイバーを形成することで、BGP を使用した通信を試行するルータを示します。次のセクションでは、このプロセスについて説明します。
2 台の BGP ルータは、相互に TCP 接続を確立することでネイバーになります。2 台のピア ルータがルーティング アップデートの交換を開始するには、TCP 接続が不可欠です。
TCP 接続が確立されると、ルータはオープン メッセージを送信して値を交換します。ルータが交換する値には、AS 番号、ルータが実行する BGP バージョン、BGP ルータ ID、キープアライブ ホールド時間が含まれます。これらの値の確認と承認が完了すると、ネイバー接続が確立されます。状態が Established 以外である場合、2 台のルータはネイバーになっておらず、BGP アップデートを交換できないことを意味します。
これを発行します。 neighbor
TCP接続を確立するコマンド:
neighbor <ip-address> remote-as <number>
このコマンドの number には、BGP を使用して接続させるルータの AS 番号を指定します。ip-address には、eBGP の直接接続しているネクスト ホップ アドレスを指定します。iBGP の場合、ip-address はもう一方のルータの IP アドレスです。
この設定で使用する2つの neighbor
ピアルータのコマンドは、相互に到達できる必要があります。到達可能性を確認する 1 つの方法は、2 つの IP アドレス間で拡張 ping を実行することです。拡張pingでは、pingを実行するルータが送信元として、 neighbor
コマンドで指定します。ルータは、パケットの送信元となるインターフェイスの IP アドレスではなく、このアドレスを使用する必要があります。
BGP 設定が変更された場合は、新しいパラメータを有効にするためにネイバー接続をリセットする必要があります。 を参照。
clear ip bgp address
注:addressはネイバーアドレスです
clear ip bgp *
このコマンドを実行するとすべてのネイバー接続がクリアされます。
デフォルトでは、BGP セッションは BGP バージョン 4 を使用して開始され、必要に応じて以前のバージョンへの下方調整がネゴシエートされます。ネゴシエーションを回避して、ネイバーとの通信にルータが使用する BGP バージョンを指定することができます。ルータ設定モードで次のコマンドを発行します。
neighbor {ip address | peer-group-name} version <value>
次に例を示します。 neighbor
コマンド設定:
RTA# router bgp 100 neighbor 192.168.129.213 remote-as 200 RTB# router bgp 200 neighbor 192.168.129.212 remote-as 100 neighbor 172.22.1.2 remote-as 200 RTC# router bgp 200 neighbor 172.22.212.1 remote-as 200
この例では、RTA と RTB は eBGP を実行します。RTB と RTC は iBGP を実行します。リモート AS 番号は外部または内部 AS を指し、eBGP または iBGP のどちらであるかを示します。また、eBGP ピアは直接接続されていますが、iBGP ピアは直接接続されてはいません。iBGP ルータは、直接接続する必要がありません。ただし、IGPが実行されていて、2つのネイバーが相互に到達できるようにする必要があります。
ここでは、show ip bgp neighbors コマンドによって表示される情報の例を示します。
注:BGPの状態には特に注意してください。Established以外の状態は、ピアがアップ状態でないことを示します。 また、次の項目にも注意してください。
BGP version(4 です)
remote router ID
この数値は、ルータの最上位 IP アドレスまたは最上位ループバック インターフェイスです(存在する場合)。
table version
table version はテーブルの状態を示します。新しい情報が追加されるたびに、テーブルのバージョンが上がります。バージョンが増え続ける場合は、ルートの継続的な更新を引き起こすルート フラップが発生しています。
Router#show ip bgp neighbors BGP neighbor is 192.168.129.213, remote AS 200, external link BGP version 4, remote router ID 172.22.12.1 BGP state = Established, table version = 3, up for 0:10:59 Last read 0:00:29, hold time is 180, keepalive interval is 60 seconds Minimum time between advertisement runs is 30 seconds Received 2828 messages, 0 notifications, 0 in queue Sent 2826 messages, 0 notifications, 0 in queue Connections established 11; dropped 10
ネイバーを定義するためのループバックインターフェイスの使用は、iBGPでは一般的ですが、eBGPでは一般的ではありません。通常、ループバック インターフェイスは、ネイバーの IP アドレスが有効で、正常に機能しているハードウェアに依存していないことを確認するために使用されます。eBGP の場合はピア ルータが直接接続されていることが多く、ループバックは適用されません。
ループバックインターフェイスのIPアドレスを neighbor
コマンドを使用するには、ネイバールータで追加の設定が必要です。ネイバー ルータは、物理インターフェイスではなくループバック インターフェイスを使用して BGP ネイバー TCP 接続を開始することを BGP に通知する必要があります。ループバック インターフェイスを示すには、次のコマンドを発行します。
neighbor <ip-address> update-source <interface>
次に、このコマンドの使用例を示します。
RTA# router bgp 100 neighbor 10.195.225.11 remote-as 100 neighbor 10.195.225.11 update-source loopback 1
RTB# router bgp 100 neighbor 10.212.1.1 remote-as 100
この例では、RTA と RTB は AS100 内で iBGP を実行します。内 neighbor
コマンドを使用すると、RTBはRTAのループバックインターフェイス10.212.1.1を使用します。この場合、RTA は TCP ネイバー接続の送信元としてループバック IP アドレスを使用することを BGP に強制する必要があります。このアクションを強制するために、RTAは次のように追加します update-source interface-type interface-number
コマンドが neighbor
10.195.225.11 update-source loopback 1
を参照。 このステートメントにより、BGP はネイバー 10.195.225.11 との通信時にループバック インターフェイスの IP アドレスを使用するように強制されます。
注:RTAはネイバーとして、RTBの物理インターフェイスIPアドレス10.195.225.11を使用しています。この IP アドレスが使用されるため、RTB では特別な設定が必要ありません。完全なネットワーク シナリオの設定例については、『ループバック アドレスを使用する場合と使用しない場合の iBGP と eBGP の設定例』を参照してください。
場合によっては、シスコ ルータは 2 つの外部ピアの直接接続を許可しないサード パーティ製ルータとの eBGP を実行できます。この接続を実現するには、eBGP マルチホップを使用します。eBGP マルチホップを使用すると、直接接続されていない 2 つの外部ピアをネイバー接続できます。マルチホップは eBGP のみを対象としており、iBGP では使用されません。次の例で eBGP マルチホップについて説明します。
RTA# router bgp 100 neighbor 10.180.225.11 remote-as 300 neighbor 10.180.225.11 ebgp-multihop
RTB# router bgp 300 neighbor 192.168.129.212 remote-as 100
RTA は直接接続されていない外部ネイバーを示しています。RTA では、neighbor ebgp-multihop コマンドの使用が示される必要があります。一方、RTBは直接接続されているネイバー(192.168.129.212)を示しています。この直接接続により、RTBでは neighbor ebgp-multihop
コマンドを使用して、アップグレードを実行します。接続されていないネイバーが相互に到達できるように、IGPまたはスタティックルーティングを設定する必要もあります。
「BGPマルチホップ(ロードバランシング)」セクションの例は、パラレル回線上にeBGPがある場合に、BGPを使用してロードバランシングを実現する方法を示しています。
RTA# int loopback 0 ip address 10.150.1.1 255.255.255.0
router bgp 100 neighbor 172.31.160.10 remote-as 200 neighbor 172.31.160.10 ebgp-multihop neighbor 172.31.160.10 update-source loopback 0 network 172.31.202.2 ip route 172.31.160.0 255.255.0.0 10.1.1.2 ip route 172.31.160.0 255.255.0.0 10.2.2.2
RTB# int loopback 0 ip address 172.31.160.10 255.255.255.0
router bgp 200 neighbor 10.150.1.1 remote-as 100 neighbor 10.150.1.1 update-source loopback 0 neighbor 10.150.1.1 ebgp-multihop network 172.31.160.0 ip route 172.31.202.2 255.255.0.0 10.1.1.1 ip route 172.31.202.2 255.255.0.0 10.2.2.1
次の例は、ループバックインターフェイスの使用を示しています。 update-source
,と ebgp-multihop
を参照。この例は、パラレル シリアル回線上の 2 つの eBGP スピーカ間でロード バランシングを実現するための回避策を示しています。通常はパケットを送信する回線を BGP が 1 つ選択するため、ロード バランシングは実行されません。ループバック インターフェイスを使用することで、eBGP のネクスト ホップはループバック インターフェイスになります。スタティック ルートまたは IGP を使用して、宛先に到達する 2 つの等コスト パスを導入します。RTAがネクストホップ172.31.160.10に到達するには、1つのパスが10.1.1.2を経由し、もう1つのパスが10.2.2.2を経由するという2つの選択肢があります。RTB にも同じ選択肢があります。
BGP ではルート マップが多用されます。BGP において、ルート マップはルーティング情報を制御および変更するためのメソッドです。ルーティング情報の制御と変更は、1 つのルーティング プロトコルから別のルーティング プロトコルへのルート再配布の条件を定義することで行われます。または、BGP に対するインジェクトおよび取り出しによってもルーティング情報を制御できます。ルートマップの形式は次のとおりです。
route-map map-tag [[permit | deny] | [sequence-number]]
マップ タグはルート マップに指定する単なる名前です。同じルート マップ、つまり同じ名前タグの複数のインスタンスを定義できます。シーケンス番号は、同一の名前ですでに設定されているルート マップのリスト内で新しいルート マップが配置される位置を示します。
この例では、MYMAP という名前のルート マップのインスタンスが 2 つ定義されています。最初のインスタンスのシーケンス番号は 10 で、2 番目のインスタンスのシーケンス番号は 20 です。
oute-map MYMAP permit 10(最初の条件セットが入ります)
route-map MYMAP permit 20(2番目の条件セットがここに入ります)
着信または発信ルートにルート マップ MYMAP を適用すると、最初の条件セットはインスタンス 10 によって適用されます。最初の条件セットが満たされない場合は、ルート マップの上位のインスタンスに進みます。
各ルートマップは、 match
と set
設定コマンド.この照合では、 match
criteriaおよびsetは、 set
アクションが発生した場合に、 match
コマンドの強制が満たされています。
たとえば、発信アップデートをチェックするルート マップを定義できます。IP アドレス 10.1.1.1 との一致が見つかった場合、そのアップデートのメトリックは 5 に設定されます。これらのコマンドの例を示します。
match ip address 10.1.1.1 set metric 5
ここで、一致基準が満たされ、 permit
setアクションで指定されているように、ルートの再配布または制御が行われます。ここでリストから抜けます。
一致基準が満たされた場合、 deny
ルートの再配布や制御は行われません。ここでリストから抜けます。
一致基準が満たされず、 permit
または deny
ルートマップの次のインスタンスがチェックされます。たとえば、インスタンス 20 がチェックされます。次のインスタンスのチェックは、リストから抜けるか、ルート マップのすべてのインスタンスが終了するまで続きます。一致なしでリストを終了した場合、ルートは not accepted nor forwarded
を参照。
Cisco IOSソフトウェアリリース11.2よりも前のCisco IOS®ソフトウェアリリースでは、プロトコル間で再配布を行う代わりにルートマップを使用してBGPアップデートをフィルタリングする場合、IPアドレスに対してmatchコマンドを使用すると、着信でフィルタリングできません。発信でのフィルタリングは可能です。Cisco IOS ソフトウェア リリース 11.2 以降のリリースでは、この制限はありません。
関連するコマンドは match
は次のとおりです。
match
as-path
match
community
match
clns
match
interface
match
ip address
match
ip nexthop
match
ip route-source
match
metric
match
route-type
match
tag
関連するコマンドは set
は次のとおりです。
set as-path
set clns
set automatic-tag
set community
set interface
set default interface
set ip default nexthop
set level
set local-preference
set metric
set metric-type
set nexthop
set origin
set tag
set weight
ルートマップの例をいくつか紹介します。
ルートマップの例
RTA と RTB は Routing Information Protocol(RIP)を実行し、RTA と RTC は BGP を実行すると仮定します。RTA は BGP 経由でアップデートを取得し、RIP に再配布します。RTA が RTB に、メトリック 2 で 172.16.10.0 に関するルートを再配布し、メトリック 5 で他のすべてのルートを再配布するとします。この場合、次の設定を使用できます。
RTA# router rip network 10.3.0.0 network 10.2.0.0 network 172.31.202.2 passive-interface Serial0 redistribute bgp 100 route-map SETMETRIC router bgp 100 neighbor 10.2.2.3 remote-as 300 network 172.31.202.2 route-map SETMETRIC permit 10 match ip-address 1 set metric 2 route-map SETMETRIC permit 20 set metric 5 access-list 1 permit 172.16.10.0 0.0.255.255
この例では、IP アドレス 172.16.10.0 に一致するルートはメトリック 2 に設定されます。ここでルート マップ リストから抜けます。一致するものがない場合は、ルートマップリストを下に進みます。これは、他のすべてがメトリック5に設定されていることを示します。
注:「どのmatchステートメントにも一致しないルートはどうなるか」という質問は常に受け付けます。 デフォルトでドロップされます。
例1で、AS100が172.16.10.0に関するアップデートを受け入れないようにするとします。IP アドレスに基づいて照会する場合、着信にはルート マップを適用できません。したがって、RTC で発信ルート マップを使用する必要があります。
RTC# router bgp 300 network 172.16.10.0 neighbor 10.2.2.2 remote-as 100 neighbor 10.2.2.2 route-map STOPUPDATES out route-map STOPUPDATES permit 10 match ip address 1 access-list 1 deny 172.16.10.0 0.0.255.255 access-list 1 permit 0.0.0.0 255.255.255.255
BGP の開始方法とネイバーの定義方法について理解できたところで、次にネットワーク情報の交換を開始する方法を説明します。
BGP を使用してネットワーク情報を送信するには、いくつかの方法があります。次の項で 1 つずつ説明していきます。
network コマンド
再配布
スタティック ルートと再配布
の形式 network
コマンドは次のとおりです。
network <network-number> mask <network-mask>
「 network
コマンドは、このルータから発信されるネットワークを制御します。この概念は、Interior Gateway Routing Protocol(IGRP)および RIP を使用したよく知られている設定とは異なります。このコマンドは、特定のインターフェイス上で BGP を実行するために使用するのではなく、代わりに、BGPがこのボックスから発信する必要があるネットワークをBGPに指示します。BGP バージョン 4(BGP4)はサブネット化およびスーパーネット化を処理できるため、このコマンドはマスク部分を使用します。最大200個の network
コマンドは受け入れ可能です。
「 network
コマンドは、アドバタイズしようとするネットワークが、接続済み、スタティック、またはダイナミックに学習したネットワークとしてルータで認識されている場合に機能します。
network コマンドの例を示します。
RTA# router bgp 1 network 192.168.213.0 mask 255.255.0.0
ip route 192.168.213.0 255.255.0.0 null 0
この例では、ルータ A が 192.168.213.0/16 のネットワーク エントリを生成します。/16 は、クラス C アドレスのスーパーネットを使用して、最初の 2 つのオクテット(最初の 16 ビット)をアドバタイズすることを意味します。
注:スタティックルートは一致するエントリをルーティングテーブルに配置するため、ルータに192.168.213.0を生成させるにはスタティックルートが必要です。
「 network
コマンドは、BGPを介してネットワークをアドバタイズする方法の1つです。他にも、BGP に IGP を再配布するという方法があります。IGP には、IGRP、Open Shortest Path First(OSPF)プロトコル、RIP、Enhanced Interior Gateway Routing Protocol(EIGRP)などのプロトコルがあります。この再配布は内部ルートをすべて BGP にダンプするので危険なように思えますが、ルートの一部は BGP 経由で学習されている可能性があり、これらのルートは再度送出する必要はありません。フィルタリングを行う場合は、アドバタイズするインターネット専用ルートに必ず送信し、すべてのルートに送信しないように注意してください。次に例を示します。
RTA は 192.168.92.213 をアナウンスし、RTC は 172.22.0.0 をアナウンスします。RTC の設定を見てみましょう。
この場合は、 network
コマンドの出力は次のとおりです。
RTC# router eigrp 10 network 172.22.0.0 redistribute bgp 200 default-metric 1000 100 250 100 1500 router bgp 200 neighbor 10.1.1.1 remote-as 300 network 172.22.0.0 mask 255.255.0.0 !--- This limits the networks that your AS originates to 172.22.0.0.
代わりに再配布を使用する場合は次のとおりです。
RTC# router eigrp 10 network 172.22.0.0 redistribute bgp 200 default-metric 1000 100 250 100 1500 router bgp 200 neighbor 10.1.1.1 remote-as 300 redistribute eigrp 10 !--- EIGRP injects 192.168.92.213 again into BGP.
この再配布により、AS から 192.168.92.213 が発信されます。あなたは192.168.92.213の送信元ではなく、AS100が送信元です。そのため、ASによってネットワークからソースが送出されないように、フィルタを使用する必要があります。正しい設定は次のとおりです。
RTC# router eigrp 10 network 172.22.0.0 redistribute bgp 200 default-metric 1000 100 250 100 1500 router bgp 200 neighbor 10.1.1.1 remote-as 300 neighbor 10.1.1.1 distribute-list 1 out redistribute eigrp 10 access-list 1 permit 172.22.0.0 0.0.255.255
この設定を行うには、 access-list
AS200から発信されるネットワークを制御するコマンド。
BGP への OSPF の再配布は、他の IGP の再配布と若干異なります。単純な問題 redistribute ospf 1
通常の router bgp
動作しません.特定のキーワード internal
、 external
,と nssa-external
それぞれのルートを再配布する必要があります。詳細は、『BGPへのOSPFルートの再配布について』を参照してください。
ネットワークまたはサブネットの発信に、常にスタティック ルートを使用することもできます。他の方法との唯一の違いは、BGP がこれらのルートに不完全または不明な送信元があると見なすことです。次のコマンドを使用すると、「再配布」セクションの例と同じ結果が得られます。
RTC# router eigrp 10 network 172.22.0.0 redistribute bgp 200 default-metric 1000 100 250 100 1500 router bgp 200 neighbor 10.1.1.1 remote-as 300 redistribute static ip route 172.22.0.0 255.255.255.0 null0
「 null0
インターフェイスとは、パケットを無視することを意味します。そのため、パケットを受信したときに、存在する172.22.0.0よりも詳細な一致がある場合、ルータはパケットを特定の一致に送信します。それ以外の場合、ルータはパケットを無視します。スーパーネットをアドバタイズするには、この方法が最適です。
このドキュメントでは、AS からルートを発信するために使用できるさまざまな方法について説明しています。これらのルートは、BGP が内部または外部のネイバーを介して学習した他の BGP ルートとは別に生成されることに注意してください。BGP は 1 つのピアから学習した情報を他のピアへ伝えます。異なる点は、 network
コマンド、再配布、またはスタティックは、ASがこれらのネットワークの起点(origin)であることを示します。
再配布では、常に BGP が IGP にインジェクトされます。
ランダム データの例は次のとおりです。
RTA# router bgp 100 neighbor 10.150.20.2 remote-as 300 network 172.31.202.2 RTB# router bgp 200 neighbor 10.160.20.2 remote-as 300 network 172.31.160.0 RTC# router bgp 300 neighbor 10.150.20.1 remote-as 100 neighbor 10.160.20.21 remote-as 200 network 170.10.00
注:RTCにネットワーク172.31.202.2またはネットワーク172.31.160.0を生成させ、これらのネットワークがAS100およびAS200から着信したときにこれらのネットワークを渡させる場合を除き、これらのネットワークはRTCには必要ありません。やはり異なるのは、networkコマンドは、これらの同じネットワークに対して、AS300がこれらのルートの起点(origin)であることを示す追加のアドバタイズメントを追加することです。
注:BGPは自身のASから発信されたアップデートを受け入れないことに注意してください。この拒否によって、ループフリーなドメイン間トポロジが実現します。
たとえば、上記の例の AS200 に AS100 への直接 BGP 接続があるとします。RTAはルート172.31.202.2を生成し、AS300にルートを送信します。次に、RTC はこのルートを AS200 に渡し、送信元を AS100 のまま保持します。RTBは172.31.202.2をAS100に渡しますが、送信元はAS100のままです。RTA はアップデートが自身の AS から発信されていることを検知して、このアップデートを無視します。
ASを他のASへの中継システムとして機能させる場合は、iBGPを使用します。eBGPを介して学習し、IGPに再配布してから、別のASに再配布する場合も同じことができます。しかし、iBGPは、AS内で情報を交換するためのより柔軟で効率的な方法を提供します。たとえば、iBGP にはローカル プリファレンスを使用して AS からの最良の出力点を制御する方法が用意されています。ローカルプリファレンスの詳細については、「ローカルプリファレンスアトリビュート」セクションを参照してください。
RTA# router bgp 100 neighbor 192.168.10.50 remote-as 100 neighbor 172.31.20.2 remote-as 300 network 172.31.202.2 RTB# router bgp 100 neighbor 10.150.10.30 remote-as 100 neighbor 172.16.40.1 remote-as 400 network 192.168.10.150 RTC# router bgp 400 neighbor 172.16.40.2 remote-as 100 network 172.16.0.0
注:BGPスピーカが自身のAS内の他のBGPスピーカ(iBGP)からアップデートを受信した場合、アップデートを受信したBGPスピーカは、自身のAS内の他のBGPスピーカにその情報を再配布しないことに注意してください。アップデートを受信した BGP スピーカは、自身の AS 外にある他の BGP スピーカにこの情報を再配布します。したがって、AS 内の iBGP スピーカ間でフル メッシュを維持する必要があります。
RTAとRTBはiBGPを実行しています。また、RTA と RTD も iBGP を実行しています。RTB から RTA に送信された BGP アップデートは、AS 外にある RTE に送信されます。このアップデートは、AS 内にある RTD には送信されません。このため、アップデートのフローが中断されないように RTB と RTD の間で iBGP ピアリングを行う必要があります。
さまざまな自律システムから複数の宛先に関するアップデートを受信した BGP は、特定の宛先に到達するためのパスを選択する必要があります。BGP は特定の宛先に到達するパスを 1 つだけ選択します。
BGPは、この決定を attributes
ネクストホップ、管理上の重み付け、ローカルプリファレンス、ルートの起点(origin)、パスの長さ、起点(origin)コード、メトリック、およびその他のアトリビュートなどの情報が含まれます。
BGP は常にベスト パスをネイバーに伝達します。詳細は、『BGPでベストパスを選択するアルゴリズム』を参照してください。
次のセクションでは、これらの属性とその使用法について説明します。
ルート アップデートが AS を通過するたびに、AS 番号がそのアップデートに付加されます。AS_PATH 属性は、宛先に到達するために実際にルートが通過した AS 番号のリストです。AS_SET は、通過したすべての AS の順序付けられた数学的集合 {} です。AS_SETの例については、このドキュメントの「CIDR例2(as-set)」セクションを参照してください。
このセクションの例では、RTBはAS200のネットワーク192.168.190.0をアドバタイズします。そのルートが AS300 を通過すると、RTC はネットワークに自身の AS 番号を付加します。192.168.190.0がRTAに到達すると、ネットワークには2つのAS番号(最初に200、次に300)が接続されます。RTA から 192.168.190.0 に到達するパスは(300、200)になります。
同じプロセスが 172.16.10.0 と 192.168.180.10 にも当てはまります。RTBはパス(300、100)を使用する必要があります。172.16.10.0に到達するには、RTBはAS300を通過した後、AS100を通過します。RTC の場合、192.168.190.0 に到達するにはパス(200)、172.16.10.0 に到達するにはパス(100)を通過する必要があります。
送信元はパス情報の送信元を定義する必須属性です。送信元属性の値は次の 3 つです。
IGP:Network Layer Reachability Information(NLRI; ネットワーク レイヤ到着可能性情報)が発信元 AS の内部にあることを示します。これは通常、 bgp network
コマンドを使用して、アップグレードを実行します。BGPテーブル内のaniinはIGPを示しています。
EGP:NLRI は外部ゲートウェイ プロトコル(EGP)を介して学習されています。BGPテーブル内のAneinはEGPを示しています。
INCOMPLETE:NLRI が不明であるか、他の手段で学習されています。INCOMPLETE は通常、他のルーティング プロトコルから BGP にルートが再配布され、ルートの送信元が不完全である場合に発生します。BGP テーブルの ? は、INCOMPLETE を示しています。
RTA# router bgp 100 neighbor 192.168.10.50 remote-as 100 neighbor 172.31.20.2 remote-as 300 network 172.31.202.2 redistribute static ip route 192.168.190.0 255.255.0.0 null0 RTB# router bgp 100 neighbor 10.150.10.30 remote-as 100 network 192.168.10.150
RTE# router bgp 300 neighbor 172.31.20.1 remote-as 100 network 172.16.10.0
RTA は 300 i を経由して 172.16.10.0 に到達します。「300 i」は、次の AS パスが 300 で、ルートの送信元が IGP であることを意味します。また、RTA は i 経由で 192.168.10.150 に到達します。この「i」は、エントリが同じ AS 内に存在し、送信元が IGP であることを意味します。RTE は 100 i を経由して 172.31.202.2 に到達します。「100 i」は、次の AS が 100 で、送信元が IGP であることを意味します。また、RTE は 100 ? 経由で 192.168.190.0 に到達します。「100 ?」は、次の AS が 100 であり、起点(origin)が INCOMPLETE でスタティック ルートから発信されていることを意味します。
BGP ネクスト ホップ属性
BGP ネクスト ホップ属性は、特定の宛先に到達するために使用されるネクスト ホップ IP アドレスです。
eBGPの場合、ネクストホップは常にネイバーのIPアドレスであり、 neighbor
コマンドで指定します。この項の例では、RTC はネクスト ホップ 172.31.20.2 を使用して RTA に 172.16.10.0 をアドバタイズします。RTA はネクスト ホップ 172.31.20.1 を使用して RTC に 172.31.202.2 をアドバタイズします。iBGPの場合、プロトコルはeBGPがアドバタイズするネクストホップをiBGPに伝送する必要があることを規定しています。このルールに従い、RTA はネクスト ホップ 172.31.20.2 を使用して iBGP ピアの RTB に 172.16.10.0 をアドバタイズします。RTBに基づくと、172.16.10.0に到達するためのネクストホップは172.31.20.2であり、10.150.10.30ではありません。
RTB が IGP 経由で 172.31.20.2 に到達できることを確認します。到達できない場合は、ネクスト ホップ アドレスがアクセス不能であるため、RTB は 172.16.10.0 宛てのパケットをドロップします。たとえば RTB で iGRP が実行されている場合は、RTA のネットワーク 172.16.10.0 でも iGRP を実行できます。RTC へのリンクで iGRP をパッシブにして、BGP のみが交換されるようにする必要があります。
RTA# router bgp 100 neighbor 172.31.20.2 remote-as 300 neighbor 192.168.150.10 remote-as 100 network 172.31.202.2
RTB# router bgp 100 neighbor 10.150.10.30 remote-as 100
RTC# router bgp 300 neighbor 172.31.20.1 remote-as 100 network 172.16.10.0
注:RTCはネクストホップ172.31.20.2を使用してRTAに172.16.10.0をアドバタイズします。
注:RTAはネクストホップ172.31.20.2を使用してRTBに172.16.10.0をアドバタイズします。eBGP のネクスト ホップは iBGP で伝達されます。
マルチアクセスおよび非ブロードキャストマルチアクセス(NBMA)ネットワークを扱う場合は、特に注意してください。詳細は、「BGPネクストホップ(マルチアクセスネットワーク)」セクションと「BGPネクストホップ(NBMA)」セクションを参照してください。
この例は、イーサネットなどのマルチアクセス ネットワークでネクスト ホップがどのように動作するかを示しています。
AS300 の RTC と RTD が OSPF を実行していると仮定します。RTC は RTA との間で BGP を実行しています。RTC は、172.16.20.3 経由でネットワーク 192.168.180.20 に到達できます。RTC が 192.168.180.20 に関する BGP アップデートを RTA に送信する際には、ネクスト ホップとして 172.16.20.3 が使用されます。RTC は自身の IP アドレス 172.31.20.2 を使用しません。RTC がこのアドレスを使用する理由は、RTA、RTC、RTD 間のネットワークがマルチアクセス ネットワークであるためです。RTA が 192.168.180.20 に到達するには、ネクスト ホップとして RTD を使用したほうが RTC 経由で余分にホップするよりも合理的です。
注:RTCはネクストホップ172.16.20.3を使用してRTAに192.168.180.20をアドバタイズします。
RTA、RTC、および RTD への共有メディアがマルチアクセスではなく NBMA である場合は、さらに複雑になります。
この図の共有メディアはクラウドで示されています。共有メディアがフレーム リレーまたは NBMA クラウドであれば、イーサネット経由で接続している場合とまったく同じ動作になります。RTC はネクスト ホップ 172.16.20.3 を使用して RTA に 192.168.180.20 をアドバタイズします。
問題は、RTA には RTD への直接相手先固定接続(PVC)がなく、ネクスト ホップに到達できないことです。この場合、ルーティングは失敗します。
「 next-hop-self
コマンドを使用すると、この状況に対処できます。
「BGPネクストホップ(NBMA)」の例のように、ネクストホップの状況では、 next-hop-self
コマンドを使用して、アップグレードを実行します。構文は次のとおりです。
neighbor {ip-address | peer-group-name} next-hop-self
「 next-hop-self
コマンドを使用すると、特定のIPアドレスをBGPのネクストホップとして使用できます。
「BGP ネクスト ホップ(NBMA)」の例では、次の設定を使用することで問題を解決できます。
RTC# router bgp 300 neighbor 172.31.20.1 remote-as 100 neighbor 172.31.20.1 next-hop-self
RTC はネクスト ホップ 172.31.20.2 を使用して 192.168.180.20 をアドバタイズします。
前の図では、RTAとRTCはeBGPを実行しています。RTB と RTC は eBGP を実行しています。RTA と RTB はいずれかの IGP(RIP、IGRP、またはその他のプロトコル)を実行しています。定義上、eBGP アップデートの距離は IGP の距離より小さい 20 です。デフォルトの距離は次のとおりです。
RIP:120
IGRP:100
EIGRP:90
OSPF:110
RTAは、次の2つのルーティングプロトコルを介して172.31.160.0に関するアップデートを受信します。
距離が 20 の eBGP
距離が 20 より大きい IGP
デフォルトでは、BGP の距離は次のとおりです。
外部距離:20
内部距離:200
ローカル距離:200
ただし、 distance
デフォルトの距離を変更するコマンド:
distance bgp <external-distance>
RTA は、距離がより短い RTC 経由の eBGP を選択します。
RTAがRTB(IGP)を介して172.31.160.0について学習するようにするには、次の2つのオプションがあります。
eBGP の外部距離または IGP の距離を変更する。
注:この変更は推奨されません。
BGP バックドアを使用する。
BGP バックドアを使用すると、IGP ルートが優先ルートになります。
networkaddressbackdoorコマンドを発行します。
設定するネットワークは、IGP を使用して到達するネットワークです。BGP アップデートでこのネットワークがアドバタイズされない点を除き、BGP では、このネットワークをローカルに割り当てられたネットワークと同様に扱います。
RTA# router eigrp 10 network 172.31.202.2 router bgp 100 neighbor 10.2.2.1 remote-as 300 network 172.31.160.0 backdoor
ネットワーク172.31.160.0はローカルエントリとして扱われますが、通常のネットワークエントリとしてはアドバタイズされません。
RTA は、距離が 90 の EIGRP 経由で RTB から 172.31.160.0 を学習します。また、距離が 20 の eBGP 経由で RTC からアドレスを学習します。通常は eBGP が優先されますが、network backdoor コマンドを使用しているため、EIGRP が優先されます。
同期について説明する前に、次のシナリオについて考えてみましょう。AS300のRTCは172.16.10.0に関するアップデートを送信します。RTA と RTB は iBGP を実行しているため、RTB はアップデートを受信し、ネクスト ホップ 10.2.2.1 経由で 172.16.10.0 に到達できます。ネクスト ホップは iBGP 経由で伝達されることに注意してください。RTB はネクスト ホップに到達するために、RTE にトラフィックを送信する必要があります。
RTA が IGP にネットワーク 172.16.10.0 をまだ再配布していないと仮定します。この時点で、RTE では 172.16.10.0 の存在すら認識されていません。
RTBが172.16.10.0に到達できることをAS400にアドバタイズし始めると、宛先が172.16.10.0のRTDからRTBに到達するトラフィックが流れ込み、RTEでドロップされます。
同期では、ASが別のASから第3のASにトラフィックを渡す場合、AS内のすべてのルータがIGPを介してルートを学習するまでは、BGPはルートをアドバタイズしてはならないことを規定しています。BGP は、IGP によって AS 内にルートが伝達されるまで待機します。その後、BGP は外部ピアにルートをアドバタイズします。
この項の例では、RTB は IGP 経由で 172.16.10.0 に関する情報が伝達されるまで待機します。その後、RTB は RTD へのアップデートの送信を開始します。172.16.10.0 を指すスタティック ルートを RTB に追加すると、RTB に IGP による情報の伝達が完了したと認識させることができます。この場合は、他のルータが 172.16.10.0 に到達できることを確認してください。
場合によっては、同期が必要ないことがあります。別の AS からのトラフィックが自 AS を通過しない場合は、同期を無効にすることができます。また、AS 内のすべてのルータで BGP を実行している場合も同期を無効にできます。この機能を無効にすると、IGP で伝達されるルートが減り、BGP の収束時間が短縮されます。
同期の無効化は自動的には行われません。AS 内のすべてのルータが BGP を実行している場合、IGP が実行されていなくてもルータはこれを認識できません。ルータは特定のルートに関する IGP アップデートを無限に待ち続け、そのルートが外部ピアに送信されることはありません。この場合は、ルーティングが正常に動作するように、手動で同期を無効にする必要があります。
router bgp 100 no synchronization
注:clear ip bgp addressコマンドを発行して、セッションをリセットしてください。
RTB# router bgp 100 network 172.31.202.2 neighbor 10.1.1.2 remote-as 400 neighbor 10.3.3.3 remote-as 100 no synchronization !--- RTB puts 172.16.10.0 in its IP routing table and advertises the network
!--- to RTD, even if RTB does not have an IGP path to 172.16.10.0. RTD# router bgp 400 neighbor 10.1.1.1 remote-as 100 network 172.16.0.0 RTA# router bgp 100 network 172.31.202.2 neighbor 10.3.3.4 remote-as 100
重み属性はシスコ定義の属性です。この属性は重みを使用してベスト パスを選択します。重みはルータにローカルに割り当てられます。この値は特定のルータに対してのみ意味を持ち、値が伝達されたり、ルート アップデートで伝送されたりすることはありません。重みは 0 ~ 65,535 の範囲の数値です。ルータが送信元となるパスにはデフォルトで 32,768 の重みが割り当てられ、他のパスには 0 の重みが割り当てられます。
同じ宛先へのルートが複数存在する場合は、重み値の高いルートが優先されます。この項の例を見てみましょう。RTAはネットワーク172.16.0.0についてAS4から学習しました。RTA は RTC にアップデートを伝達します。RTBは、ネットワーク172.16.0.0についてもAS4から学習しました。RTB は RTC にアップデートを伝達します。RTCは172.16.0.0に到達する方法を2つ持ち、どちらの方法を使用するかを決定する必要があります。RTC で RTA からのアップデートの重みが RTB からのアップデートの重みよりも大きくなるように設定すれば、RTC は 172.16.0.0 に到達するためのネクスト ホップとして RTA を使用することになります。このような重みを設定するには、いくつかの方法があります。
neighbor コマンドを使用する。
neighbor {ip-address|peer-group} weight <weight>
AS_PATH アクセス リストを使用する。
ip as-path access-list <access-list-number>{permit | deny} <as正規表現>
neighbor <ip-address>filter-list <access-list-number>weight <weight>
注:一部のシナリオでは、一部のソフトウェアバージョンでは使用できないコマンドがほとんどない場合があります。
ルート マップを使用する。
RTC# router bgp 300 neighbor 10.1.1.1 remote-as 100 neighbor 10.1.1.1 weight 200 !--- The route to 172.16.0.0 from RTA has a 200 weight. neighbor 10.2.2.2 remote-as 200 neighbor 10.2.2.2 weight 100 !--- The route to 172.16.0.0 from RTB has a 100 weight.
より大きい重み値を持つ RTA がネクスト ホップとして優先されます。
IP AS_PATH とフィルタ リストを使用した場合も同じ結果が得られます。
RTC# router bgp 300 neighbor 10.1.1.1 remote-as 100 neighbor 10.1.1.1 filter-list 5 weight 200 neighbor 10.2.2.2 remote-as 200 neighbor 10.2.2.2 filter-list 6 weight 100 ... ip as-path access-list 5 permit ^100$ !--- This only permits path 100. ip as-path access-list 6 permit ^200$ ...
また、ルート マップを使用しても同じ結果を得られます。
RTC# router bgp 300 neighbor 10.1.1.1 remote-as 100 neighbor 10.1.1.1 route-map setweightin in neighbor 10.2.2.2 remote-as 200 neighbor 10.2.2.2 route-map setweightin in ... ip as-path access-list 5 permit ^100$ ... route-map setweightin permit 10 match as-path 5 set weight 200 !--- Anything that applies to access list 5, such as packets from AS100, has weight 200. route-map setweightin permit 20 set weight 100 !--- Anything else has weight 100.
注:IGPパスをバックアップとして使用するMPLS VPN BGPパスを優先するように重みを変更できます。
ローカル プリファレンスは AS に対する指標で、その AS から特定のネットワークに到達する際にどのパスが優先されるかを示します。ローカル プリファレンス値の高いパスが優先されます。ローカル プリファレンスのデフォルト値は 100 です。
ローカル ルータにのみ関連する重み属性とは異なり、ローカル プリファレンスは、同じ AS 内のルータ間で交換される属性です。
ローカル プリファレンスを設定するには、bgp default local-preference value コマンドを発行します。この項の例で示すように、ルート マップを使用してローカル プリファレンスを設定することもできます。
注:変更を考慮するには、ソフトリセットを実行する(つまり、ルータのbgpプロセスをクリアする)必要があります。BGPプロセスをクリアするには、 clear ip bgp [soft][in/out]
softはソフトリセットを示し、セッションを切断しません。[in/out]はインバウンドまたはアウトバウンド設定を指定します。in/out を指定しないと、インバウンドとアウトバウンドの両方のセッションがリセットされます。
bgp default local-preference コマンドは、ルータから同じ AS 内のピアに送信されるアップデートのローカル プリファレンスを設定します。このセクションの図では、AS256は組織の2つの異なるサイドから172.16.10.0に関するアップデートを受信します。ローカル プリファレンスによって、AS256 からそのネットワークに到達するためのルートを決定できます。優先される出力点が RTD であると仮定します。次の設定では、AS300 から到達するアップデートのローカル プリファレンスが 200、AS100 から到達するアップデートのローカル プリファレンスが 150 に設定されます。
RTC# router bgp 256 neighbor 10.1.1.1 remote-as 100 neighbor 10.213.11.2 remote-as 256 bgp default local-preference 150 RTD# router bgp 256 neighbor 10.3.3.4 remote-as 300 neighbor 10.213.11.1 remote-as 256 bgp default local-preference 200
この設定では、RTC はすべてのアップデートのローカル プリファレンスを 150 に設定します。同様に、RTD はすべてのアップデートのローカル プリファレンスを 200 に設定します。AS256 内ではローカル プリファレンスの交換が行われます。したがって、RTCとRTDの両方は、アップデートがAS100からではなくAS300から到達する場合、ネットワーク172.16.10.0のローカルプリファレンスの方が高いことを認識します。そのネットワークを宛先とする AS256 内のトラフィックはすべて、RTD を出力点として送信されます。
ルート マップを使用すると、より柔軟な設定を行えます。この項の例では、RTD が受信するすべてのアップデートには、RTD への到達時にローカル プリファレンス 200 がタグ付けされます。AS34 から到達するアップデートにもローカル プリファレンス 200 がタグ付けされますが、このタグは不要である場合があります。その場合は、ルート マップを使用して、特定のローカル プリファレンスをタグ付けする必要がある特定のアップデートを指定できます。ランダム データの例は次のとおりです。
RTD# router bgp 256 neighbor 10.3.3.4 remote-as 300 neighbor 10.3.3.4 route-map setlocalin in neighbor 10.213.11.1 remote-as 256 .... ip as-path access-list 7 permit ^300$ ... route-map setlocalin permit 10 match as-path 7 set local-preference 200 route-map setlocalin permit 20 set local-preference 150
この設定により、AS300 から到達するすべてのアップデートにはローカル プリファレンス 200 がタグ付けされ、その他のアップデート(AS34 から到達するアップデートなど)には 150 の値がタグ付けされます。
メトリック属性は、MULTI_EXIT_DISCRIMINATOR、MED(BGP4)、または INTER_AS(BGP3)とも呼ばれます。この属性は、外部ネイバーにとって AS への優先パスに関するヒントになります。別の AS へのエントリ ポイントが複数ある場合、この属性を使用して、特定のルートに到達する方法に関してその AS に動的に影響を与えることができます。より小さいメトリック値が優先されます。
ローカル プリファレンスとは異なり、メトリックは AS 間で交換されます。ただし、AS に伝達されたメトリックが、さらに別の AS に伝達されることはありません。特定のメトリックが設定されたアップデートが AS に到達すると、AS 内ではそのメトリックを使用してルートが決定されます。同じアップデートが第 3 の AS に渡される場合は、メトリックが 0 に戻ります。上記の図はメトリックの設定を示しています。メトリックのデフォルト値は 0 です。
ルータは他の指示を受け取らない限り、同じ AS 内のネイバーから伝達されたパスのメトリックを比較します。ルータが別の AS のネイバーから伝達されたメトリックを比較できるようにするには、ルータで bgp always-compare-med という特別な設定コマンドを発行する必要があります。
注:Multi-Exit Discriminator(MED)ベースのパス選択に影響を与える可能性のあるBGP設定コマンドは2つあります。bgp deterministic-med コマンドと bgp always-compare-med コマンドです。bgp deterministic-med コマンドを発行すると、同じ AS 内の別のピアがアドバタイズしたルートの選択時に MED 変数が比較されるようになります。bgp always-compare-med コマンドを発行すると、別の AS のネイバーから伝達されたパスの MED が比較されるようになります。bgp always-compare-med コマンドは、複数のサービス プロバイダーまたは企業が MED の設定方法に関して統一されたポリシーに合意している場合に有用です。これらのコマンドが BGP パス選択に与える影響については、『bgp deterministic-med コマンドと bgp always-compare-med コマンドの相違点』を参照してください。
このセクションの図では、AS100は3つの異なるルータ(RTC、RTD、およびRTB)を経由してネットワーク192.168.180.10に関する情報を取得します。RTC と RTD は AS300 に属し、RTB は AS400 に属しています。
次の例では、bgp bestpath as-path ignore コマンドによって RTA での AS-Path 比較が無視されます。また、BGP がルート比較用の次の属性(この例ではメトリック、つまり MED)を処理するように設定されています。このコマンドを省略すると、BGPは最短のAS-Pathを持つルート192.168.180.10をルータRTCからインストールできます。
RTC からのメトリックを 120、RTD からのメトリックを 200、RTB からのメトリックを 50 に設定していると仮定します。デフォルトでは、ルータは同じ AS 内のネイバーから到達するメトリックを比較します。したがって、RTA は RTC から到達するメトリックと RTD から到達するメトリックのみを比較できます。120 は 200 より小さいので、RTA は最適なネクスト ホップとして RTC を選択します。RTC と RTB は別々の AS に属しているため、RTA は RTB からメトリック 50 のアップデートを受け取っても、そのメトリックを 120 と比較することはできません。RTA は他のいくつかの属性に基づいて選択を行う必要があります。
RTA にメトリックを比較させるには、RTA で bgp always-compare-med コマンドを発行する必要があります。次の設定でこのプロセスを示します。
RTA# router bgp 100 neighbor 10.2.2.1 remote-as 300 neighbor 10.3.3.3 remote-as 300 neighbor 10.4.4.3 remote-as 400 bgp bestpath as-path ignore RTC# router bgp 300 neighbor 10.2.2.2 remote-as 100 neighbor 10.2.2.2 route-map setmetricout out neighbor 10.1.1.2 remote-as 300 route-map setmetricout permit 10 set metric 120 RTD# router bgp 300 neighbor 10.3.3.2 remote-as 100 neighbor 10.3.3.2 route-map setmetricout out neighbor 10.1.1.1 remote-as 300 route-map setmetricout permit 10 set metric 200 RTB# router bgp 400 neighbor 10.4.4.4 remote-as 100 neighbor 10.4.4.4 route-map setmetricout out route-map setmetricout permit 10 set metric 50
これらの設定により、RTA は他のすべての属性が同じであるという事実を考慮して、ネクスト ホップとして RTC を選択します。メトリック比較に RTB を含めるには、RTA を次のように設定する必要があります。
RTA# router bgp 100 neighbor 2.2.21 remote-as 300 neighbor 10.3.3.3 remote-as 300 neighbor 10.4.4.3 remote-as 400 bgp always-compare-med
この場合、RTA はネットワーク 192.168.180.10 に到達するための最適なネクスト ホップとして RTB を選択します。
default-metricnumberコマンドを発行する場合は、BGPにルートを再配布する際にもメトリックを設定できます。
この項の例で、RTB が AS100 にスタティック経由でネットワークをインジェクトするとします。設定は以下のとおりです。
RTB# router bgp 400 redistribute static default-metric 50 ip route 192.168.180.10 255.255.0.0 null 0 !--- This causes RTB to send out 192.168.180.10 with a metric of 50.
コミュニティ属性は推移的なオプション属性で、値の範囲は 0 ~ 4,294,967,200 です。コミュニティアトリビュートを使用すると、宛先を特定のコミュニティにグループ化し、そのコミュニティに一致するルーティング決定を適用できます。ルーティング決定には、承認、優先、再配布などがあります。
コミュニティ属性を設定するには、ルート マップを使用します。ルート マップの set コマンドの構文は次のとおりです。
set community community-number [additive] [well-known-community]
このコマンドで使用する事前定義された既知のコミュニティには、次のものがあります。
no-export:eBGP ピアにアドバタイズしません。このルートは AS 内に保持されます。
no-advertise:内部および外部のどのピアにもこのルートをアドバタイズしません。
internet:このルートをインターネット コミュニティにアドバタイズします。すべてのルータがこのコミュニティに属します。
local-as:コンフェデレーション シナリオで、ローカル AS の外部にパケットが送信されることを防ぐために使用します。
コミュニティを設定するルート マップの例を 2 つ紹介します。
route-map communitymap match ip address 1 set community no-advertise
または
route-map setcommunity match as-path 1 set community 200 additive
additive キーワードを設定しない場合、既存の古いコミュニティはすべて 200 に置き換えられます。additive キーワードを使用すると、コミュニティに 200 が追加されます。コミュニティ属性を設定しても、デフォルトではネイバーにこの属性は送信されません。ネイバーに属性を送信するには、次のコマンドを使用する必要があります。
neighbor {ip-address | peer-group-name} send-community
ランダム データの例は次のとおりです。
RTA# router bgp 100 neighbor 10.3.3.3 remote-as 300 neighbor 10.3.3.3 send-community neighbor 10.3.3.3 route-map setcommunity out
Cisco IOS ソフトウェア リリース 12.0 以降では、コミュニティを 10 進数、16 進数、AA:NN の 3 種類の形式で設定できます。デフォルトでは、Cisco IOS ソフトウェアは従来の 10 進形式を使用します。AA:NNで設定および表示するには、ip bgp-community new-formatglobal configuration
コマンドを使用して、アップグレードを実行します。AA:NN の前半部分は AS 番号を表し、後半部分は 2 バイトの番号を表します。
ランダム データの例は次のとおりです。
グローバル設定でip bgp-community new-format コマンドを使用しない場合は、show ip bgp 10.6.0.0 コマンドを発行すると、10進形式でコミュニティ属性値が表示されます。この例では、コミュニティアトリビュート値は6553620と表示されています。
Router#show ip bgp 10.6.0.0 BGP routing table entry for 10.6.0.0/8, version 7 Paths: (1 available, best #1, table Default-IP-Routing-Table) Not advertised to any peer 1 10.10.10.1 from 10.10.10.1 (10.255.255.1) Origin IGP, metric 0, localpref 100, valid, external, best Community: 6553620
次に、このルータで ip bgp-community new-format コマンドをグローバルに発行します。
Router#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router(config)#ip bgp-community new-format Router(config)#exit
ip bgp-community new-formatglobal設定コマンドを使用すると、コミュニティ値はAA:NN形式で表示されます。この例では、show ip bgp 10.6.0.0コマンドの出力で、この値が100:20と表示されています。
Router#show ip bgp 10.6.0.0 BGP routing table entry for 10.6.0.0/8, version 9 Paths: (1 available, best #1, table Default-IP-Routing-Table) Not advertised to any peer 1 10.10.10.1 from 10.10.10.1 (10.255.255.1) Origin IGP, metric 0, localpref 100, valid, external, best Community: 100:20
さまざまなフィルタ方法を使用することで、BGP アップデートの送受信を制御できます。ルート情報、パス情報、またはコミュニティに基づいて BGP アップデートをフィルタリングでき、どの方法でも同じ結果を得ることができます。使用する方法は、個別のネットワーク設定に応じて決定します。
ルータが学習またはアドバタイズするルーティング情報を制限するには、特定のネイバーとの間で送受信されるルーティング アップデートを使用して BGP をフィルタリングします。アクセス リストを定義して、ネイバーとの間で送受信するアップデートに適用します。ルータ設定モードで次のコマンドを発行します。
neighbor {ip-address | peer-group-name} distribute-list access-list-number {in | out}
この例では、RTB がネットワーク 172.31.160.0 を生成して、RTC にアップデートを送信します。RTC が AS100 にアップデートを伝達しないようにするには、該当するアップデートをフィルタリングするアクセス リストを定義して、RTA との通信時にアクセス リストを適用する必要があります。
RTC# router bgp 300 network 172.16.10.0 neighbor 10.3.3.3 remote-as 200 neighbor 10.2.2.2 remote-as 100 neighbor 10.2.2.2 distribute-list 1 out access-list 1 deny 172.31.160.0 0.0.255.255 access-list 1 permit 0.0.0.0 255.255.255.255 !--- Filter out all routing updates about 160.10.x.x.
競合が発生する可能性のあるスーパーネットを扱う場合、アクセス リストの使用は若干複雑になります。
上記の例の RTB に 160.10.x.x という複数のサブネットがあると仮定します。ここでは、アップデートをフィルタリングし、192.168.160.0/8 のみがアドバタイズされるようにします。
注:/8表記は、IPアドレスの左端から始まる8ビットのサブネットマスクを使用することを意味します。このアドレスは 192.168.160.0 255.0.0.0 に相当します。
access-list 1 permit 192.168.160.0 0.255.255.25
5
192.168.160.0/8、192.168.160.0/9などを許可します。アップデートを 192.168.160.0/8 のみに制限するには、次の形式の拡張アクセス リストを使用する必要があります。
access-list 101 permit ip 192.168.160.0 0.255.255.255 255.0.0.0 0.0.0.0.
このリストは 192.168.160.0/8 のみを許可します。
BGPピアからネットワークをフィルタリングする方法の設定例については、「BGPピアからの1つ以上のネットワークのブロック」を参照してください。この方式では、プレフィックスリストをフィルタリングする機能だけでなく、標準および拡張アクセスコントロールリスト(ACL)とともにdistribute-listコマンドを使用します。
また、パスをフィルタすることもできます。
BGP AS パス情報を使用して、着信アップデートと発信アップデートの両方にアクセス リストを指定できます。このセクションの図では、172.31.160.0に関するアップデートをブロックして、AS100に到達しないようにすることができます。アップデートをブロックするには、AS200 から発信されたアップデートの AS100 への送信を禁止するアクセス リストを RTC で定義します。次のコマンドを発行します。
ip as-path access-list access-list-number {permit | deny} as-regular-expression
neighbor {ip-address | peer-group-name} filter-list access-list-number {in | out}
次の例では、RTC から RTA への 172.31.160.0 に関するアップデートの送信が停止されます。
RTC# router bgp 300 neighbor 10.3.3.3 remote-as 200 neighbor 10.2.2.2 remote-as 100 neighbor 10.2.2.2 filter-list 1 out !--- The 1 is the access list number below. ip as-path access-list 1 deny ^200$ ip as-path access-list 1 permit .*
「 access-list 1
この例のコマンドは、200で始まり200で終わるパス情報を含むすべてのアップデートを拒否するように指定します。このコマンドの ^200$ は「正規表現」です。^ は「で始まる」を意味し、$ は「で終わる」を意味します。RTBは172.31.160.0に関するアップデートを、200で始まり200で終わるパス情報とともに送信するため、アップデートはアクセスリストと一致します。そのため、アクセス リストによってこれらのアップデートは拒否されます。
.*も正規表現で、.は「任意の文字」、*は「その文字の繰り返し」を意味します。つまり、.* はあらゆるパス情報を表します。これは、他のすべてのアップデートの送信を許可するために必要です。
^200$の代わりに^200を使用するとどうなりますか。上記の図のように AS400 が存在する場合、AS400 が発信するアップデートのパス情報は(200、400)という形式になります。このパス情報は最初が 200 で最後が 400 です。パス情報は200で始まるため、これらのアップデートはアクセスリスト^200に一致します。アクセス リストにより、RTA へのこれらのアップデートの送信が禁止されます。これは要件ではありません。
正しい正規表現が実装されているかどうかを確認するには、show ip bgp regexpregular-expressionコマンドを発行します。このコマンドは、正規表現の設定に一致するすべてのパスを表示します。
この項では正規表現の作成について説明します。
正規表現は、入力ストリングとのマッチングを行うためのパターンです。正規表現の作成では、入力が一致する必要がある文字列を指定します。BGP の場合は、入力が一致する必要があるパス情報で構成された文字列を指定します。
「パスフィルタ」セクションの例では、文字列^200$を指定しています。アップデートに含まれるパス情報を文字列と一致させて決定する必要があります。
正規表現は次の要素で構成されます。
範囲
範囲は、左角カッコと右角カッコで囲まれた文字列です(例:[abcd])。
アトム
アトムは単一の文字です。次に例を示します。
.
.は、任意の1文字に一致します。
^
^ は入力文字列の先頭に一致します。
$
$ は入力文字列の末尾に一致します。
\
\は文字に一致します。
-
_は、カンマ(、)、左波カッコ({)、右波カッコ(})、入力文字列の先頭、入力文字列の末尾、またはスペースに一致します。
ピース
ピースは、アトムの後に続く次のいずれかの記号です。
*
* は 0 個以上のアトムのシーケンスに一致します。
+
+ は 1 個以上のアトムのシーケンスに一致します。
?
? には、アトムまたはヌルの文字列が一致します。
ブランチ
ブランチは 0 個以上の結合されたピースです。
正規表現の例をいくつか示します。
a*
この表現は、文字「a」の任意の繰り返しを示します(0 回も含む)。
a+
この表現は、文字「a」の 1 回以上の繰り返しが存在する必要があることを示します
ab?a
この表現は、「aa」または「aba」に一致します。
_100_
この表現は、AS100 経由であることを意味します。
_100$
この表現は、AS100 が送信元であることを示します。
^100 .*
この表現は、AS100 からの送信を示します。
^$
この表現は、この AS からの発信を示します。
正規表現フィルタリングの設定例については、『BGPでの正規表現の使用』を参照してください。
ここまでは、ルート フィルタリングと AS パス フィルタリングについて説明してきました。もう 1 つの方法はコミュニティ フィルタリングです。「コミュニティアトリビュート」セクションでコミュニティについて説明しているため、このセクションではコミュニティの使用例をいくつか示します。
次の例では、RTB がアドバタイズした BGP ルートを RTC が外部ピアに伝達しないように、RTB によってルートにコミュニティ属性が設定されるようにします。 no-export
コミュニティ属性.
RTB# router bgp 200 network 172.31.160.0 neighbor 10.3.3.1 remote-as 300 neighbor 10.3.3.1 send-community neighbor 10.3.3.1 route-map setcommunity out route-map setcommunity match ip address 1 set community no-export access-list 1 permit 0.0.0.0 255.255.255.255
注:この例では、 route-map setcommunity
コマンドを発行して、コミュニティをno-exportに設定します。
注: neighbor send-community
コマンドは、この属性をRTCに送信するために必要です。
RTC は属性が NO_EXPORT のアップデートを受け取った場合、外部ピアの RTA にはそのアップデートを伝達しません。
この例では、RTBはコミュニティアトリビュートを100 200 additive
を参照。この操作により、RTCに送信される前に、値100 200が現在のコミュニティ値に追加されます。
RTB# router bgp 200 network 172.31.160.0 neighbor 10.3.3.1 remote-as 300 neighbor 10.3.3.1 send-community neighbor 10.3.3.1 route-map setcommunity out route-map setcommunity match ip address 2 set community 100 200 additive access-list 2 permit 0.0.0.0 255.255.255.255
コミュニティ リストは、ルート マップの match 句で使用するコミュニティのグループです。コミュニティ リストを使用すると、コミュニティ番号のさまざまなリストに基づいて属性をフィルタリングまたは設定できます。
ip community-list <community-list-number> {permit | deny} <community-number>
たとえば、次のような match-on-community ルート マップを定義できます。
route-map match-on-community match community 10 !--- The community list number is 10. set weight 20 ip community-list 10 permit 200 300 !--- The community number is 200 300.
コミュニティ リストを使用して、特定のアップデートに含まれる重みやメトリックなどの特定のパラメータを、コミュニティ値に基づいてフィルタリングまたは設定できます。上記の 2 番目の例で、RTB はコミュニティ 100 200 を設定したアップデートを RTC に送信しました。RTC でこれらの値に基づいて重みが設定されるようにする場合は、以下の設定を行います。
RTC# router bgp 300 neighbor 10.3.3.3 remote-as 200 neighbor 10.3.3.3 route-map check-community in route-map check-community permit 10 match community 1 set weight 20 route-map check-community permit 20 match community 2 exact set weight 10 route-map check-community permit 30 match community 3 ip community-list 1 permit 100 ip community-list 2 permit 200 ip community-list 3 permit internet
この例では、コミュニティ属性に 100 を含むルートはリスト 1 に一致します。このルートの重みは 20 に設定されます。コミュニティとして 200 のみを持つルートはリスト 2 に一致し、重みは 20 になります。exact キーワードは、コミュニティが 200 のみで構成され、他の値が含まれていないことを示しています。最後のコミュニティ リストは、他のアップデートがドロップされないようにするために設定されています。デフォルトでは、一致しないアップデートはすべてドロップされることに注意してください。すべてのルートがインターネット コミュニティに属するため、internet キーワードはすべてのルートを示します。
詳細については、『BGPコミュニティ値を使用したアップストリームプロバイダーネットワークの設定と制御』を参照してください。
neighbor コマンドをルート マップと併用して、着信および発信アップデートのパラメータをフィルタリングまたは設定できます。
IP アドレスに基づいて照合される場合、neighbor ステートメントに関連付けられたルート マップは、着信アップデートには適用されません。
neighbor <ip-address> route-map <route-map-name>
上記の図の RTC に、AS200 に対してローカルなネットワークに関する情報のみを AS200 から学習させるとします。さらに、承認されたルートの重みが 20 に設定されるようにします。この場合は、neighbor と as-path アクセス リストを組み合わせて使用します。
RTC# router bgp 300 network 172.16.10.0 neighbor 10.3.3.3 remote-as 200 neighbor 10.3.3.3 route-map stamp in route-map stamp match as-path 1 set weight 20 ip as-path access-list 1 permit ^200$
AS200 から発信されるアップデートには、200 で始まって 200 で終わるパス情報が含まれています。これらのアップデートは許可され、その他のアップデートはすべてドロップされます。
次のように仮定します。
AS200 から発信されたアップデートを承認して、重みを 20 に設定する。
AS400 から発信されたアップデートをドロップする。
その他のアップデートは重みを 10 に設定する。
RTC# router bgp 300 network 172.16.10.0 neighbor 10.3.3.3 remote-as 200 neighbor 10.3.3.3 route-map stamp in route-map stamp permit 10 match as-path 1 set weight 20 route-map stamp permit 20 match as-path 2 set weight 10 ip as-path access-list 1 permit ^200$ ip as-path access-list 2 permit ^200 600 .*
このステートメントにより、AS200 に対してローカルなアップデートの重みが 20 に設定されます。また、この文は、AS400の背後にあるアップデートのウェイトを10に設定し、AS400から到達するアップデートをドロップします。
場合によっては、BGP 決定プロセスを操作するためにパス情報の操作が必要になります。この場合は、ルート マップとともに次のコマンドを使用します。
set as-path prepend <as-path#> <as-path#>
「BGPネイバーとルートマップ」セクションの図で、RTCが自身のネットワーク172.16.10.0を2つの異なるAS(AS100とAS200)にアドバタイズすると仮定します。情報がAS600に伝搬されると、AS600内のルータには、2つの異なるルートを経由する172.16.10.0に関するネットワーク到達可能性情報が含まれます。1 つは AS100 を経由するパス(100、300)のルート、もう 1 つは、AS400 を経由するパス(400、200、300)のルートです。他の属性がすべて同じであれば、AS600 は最短パスである AS100 経由のルートを選択します。
AS300 は AS100 経由ですべてのトラフィックを取得します。AS300 側からこの決定を操作する場合は、AS100 経由のパスが AS400 を通過するパスよりも長いように見せることができます。これを行うには、AS100にアドバタイズされる現在のパス情報の先頭にAS番号を付加します。次のように自身の AS 番号を繰り返して追加する方法が一般的です。
RTC# router bgp 300 network 172.16.10.0 neighbor 10.2.2.2 remote-as 100 neighbor 10.2.2.2 route-map SETPATH out route-map SETPATH set as-path prepend 300 300
この設定により、AS600はAS100経由で172.16.10.0に関するアップデート(100、300、300、300)を受信します。これは、AS600 が AS400 から受信するパス情報(400、200、300)よりも長くなっています。
BGP ピア グループとは、同じアップデート ポリシーを使用する BGP ネイバーのグループのことです。通常、アップデート ポリシーはルート マップ、配布リスト、およびフィルタ リストによって設定されます。別個の隣接ルータごとに同じポリシーを定義するのではなく、代わりにピア グループ名を定義して、これらのポリシーをそのピア グループに割り当てます。
ピア グループのメンバーはピア グループのすべての設定オプションを継承します。発信アップデートに影響しないオプションの場合は、これらのオプションを上書きするようにメンバーを設定することもできます。上書きできるのは、着信に設定されたオプションのみです。
ピア グループを定義するには、次のコマンドを発行します。
neighbor peer-group-name peer-group
次の例では、ピア グループを内部および外部 BGP ネイバーに適用します。
RTC# router bgp 300 neighbor internalmap peer-group neighbor internalmap remote-as 300 neighbor internalmap route-map SETMETRIC out neighbor internalmap filter-list 1 out neighbor internalmap filter-list 2 in neighbor 10.5.5.2 peer-group internalmap neighbor 10.6.6.2 peer-group internalmap neighbor 10.3.3.2 peer-group internalmap neighbor 10.3.3.2 filter-list 3 in
この設定によって、internalmap という名前のピア グループが定義されます。 この設定では、メトリックを5に設定するルートマップSETMETRICや、2つの異なるフィルタリスト(1および2)など、グループに対していくつかのポリシーを定義します。この設定では、ピア グループをすべての内部ネイバー(RTE、RTF、および RTG)に適用しています。さらに、ネイバー RTE には別のフィルタ リスト 3 を定義しています。このフィルタ リストによって、ピア グループ内でフィルタ リスト 2 が上書きされます。
注:上書きできるのは、受信アップデートに影響を与えるオプションだけです。
次に、外部ネイバーでのピア グループの使用方法を説明します。上記の同じ図で、RTC にピア グループ externalmap を設定し、そのピア グループを外部ネイバーに適用します。
RTC# router bgp 300 neighbor externalmap peer-group neighbor externalmap route-map SETMETRIC neighbor externalmap filter-list 1 out neighbor externalmap filter-list 2 in neighbor 10.2.2.2 remote-as 100 neighbor 10.2.2.2 peer-group externalmap neighbor 10.4.4.2 remote-as 600 neighbor 10.4.4.2 peer-group externalmap neighbor 10.1.1.2 remote-as 200 neighbor 10.1.1.2 peer-group externalmap neighbor 10.1.1.2 filter-list 3 in
注:これらの設定では、異なる外部ASを定義する必要があるため、ピアグループの外部でremote-as文を定義します。また、フィルタ リスト 3 を割り当てることでネイバー 10.1.1.2 の着信アップデートを上書きします。ピア グループの詳細については、『BGP ピア グループ』を参照してください。
注:Cisco IOSソフトウェアリリース12.0(24)Sでは、BGPダイナミックアップデートピアグループ機能が導入されています。この機能は、それ以降の Cisco IOS ソフトウェア リリースでも使用できます。この機能では、同じ発信ポリシーを共有するネイバーのアップデート グループを動的に計算し、最適化する新しいアルゴリズムが使用されます。これらのネイバーは同じアップデート メッセージを共有できます。Cisco IOS ソフトウェアの以前のリリースでは、BGP アップデート メッセージのグループはピア グループ設定に基づいていました。この方法でアップデートをグループ化することで、発信ポリシーと特定のセッション設定が制限されていました。BGP ダイナミック アップデート ピア グループ機能は、ピア グループ設定からアップデート グループの複製を切り離します。これにより、コンバージェンス時間が短縮され、ネイバー設定の柔軟性が向上します。詳細については、『BGP ダイナミック アップデート ピアグループ』を参照してください。
BGP3 に対する BGP4 の主な拡張機能の 1 つは、クラスレス ドメイン間ルーティング(CIDR)です。CIDR またはスーパーネット化は IP アドレスの新しい処理方法です。CIDR では、クラス A、B、C などのクラスという概念はありません。たとえば、ネットワーク 192.168.213.0 は、かつては不正なクラス C ネットワークでしたが、現在は正当なスーパーネット 192.168.213.0/16 です。16は、IPアドレスの左端から数えたサブネットマスクのビット数を表します。これは 192.168.213.0 255.255.0.0 と同様です。
ルーティング テーブルのサイズを最小限に抑えるには、集約を使用します。集約とは、複数の異なるルートを 1 つのルートとしてアドバタイズできるように、それぞれのルートの特性を 1 つにまとめるプロセスです。この例では、RTB はネットワーク 172.31.160.0 を生成しています。このルートのスーパーネット 192.168.160.0 を RTA に伝達するように RTC を設定します。
RTB# router bgp 200 neighbor 10.3.3.1 remote-as 300 network 172.31.160.0 #RTC router bgp 300 neighbor 10.3.3.3 remote-as 200 neighbor 10.2.2.2 remote-as 100 network 172.16.10.0 aggregate-address 192.168.160.0 255.0.0.0
RTC は RTA に集約アドレス 192.168.160.0 を伝達します。
集約コマンドにはさまざまな種類があります。目的の集約動作を得るためには、それぞれのコマンドがどのように機能するかを理解する必要があります。
最初のコマンドは、「CIDRと集約アドレス」セクションの例で使用したものです。
aggregate-address address-mask
このコマンドは、プレフィックス ルートおよびすべてのより具体的なルートをアドバタイズします。aggregate-address 192.168.160.0コマンドは、追加のネットワーク192.168.160.0を伝搬しますが、172.31.160.0のRTAへの伝搬は阻止しません。この結果、RTA にはネットワーク 192.168.160.0 と 172.31.160.0 が伝達されます。つまり、プレフィックス ルートとより具体的なルートの両方がアドバタイズされることになります。
注:BGPルーティングテーブルに特定のアドレスに関するより詳細なルートがない場合、そのアドレスを集約することはできません。
たとえば、RTBのBGPテーブルに192.168.160.0のより詳細なエントリがない場合、RTBは192.168.160.0の集約を生成できません。BGP テーブルにより具体的なルートをインジェクトすることは可能です。次の方法でルートをインジェクトできます。
他の AS からの着信アップデート
BGP への IGP またはスタティックの再配布
network コマンド(例:network 172.31.160.0)
RTCにネットワーク192.168.160.0のみを伝搬させ、より具体的なルートを伝搬させないようにする場合は、次のコマンドを発行します。
aggregate-address <address>
summary-only
このコマンドはプレフィックスのみをアドバタイズし、より具体的なルートをすべて抑制します。
aggregate 192.168.160.0 255.0.0.0 summary-only コマンドは、ネットワーク192.168.160.0を伝搬し、より詳細なルート172.31.160.0を抑制します。
注:network文によってBGPに注入されたネットワークを集約する場合、ネットワークエントリは常にBGPアップデートに注入されます。aggregate summary-only コマンドを使用する場合も同じようにインジェクトされます。「CIDR 例 1」の項で、この場合の例について説明します。
aggregate-address <address>
as-set
このコマンドはプレフィックス ルートとより具体的なルートをアドバタイズしますが、ルーティング アップデートのパス情報に as-set 情報が含まれることになります。
aggregate 192.168.0.0 255.0.0.0 as-set
「CIDR例2(as-set)」セクションで、このコマンドについて説明しています。
集約時により具体的なルートが抑制されるようにする場合は、ルート マップを定義して集約に適用します。この方法を使用すると、より具体的なルートを選択して抑制できます。
aggregate-address <address>suppress-map <map-name>
このコマンドはプレフィックス ルートとより具体的なルートをアドバタイズしますが、アドバタイズメントはルート マップに基づいて抑制されます。「CIDR と集約アドレス」の項の図を基に、192.168.160.0 を集約し、より具体的なルート 192.168.160.20 を抑制して 172.31.160.0 の伝達を許可すると仮定します。この場合は次のルート マップを使用します。
route-map CHECK permit 10 match ip address 1 access-list 1 permit 192.168.160.20 0.0.255.255 access-list 1 deny 0.0.0.0 255.255.255.255
suppress-map を定義すると、アクセス リストで許可されるパケットのアップデートが抑制されます。
次に、このルート マップを aggregate ステートメントに適用します。
RTC# router bgp 300 neighbor 10.3.3.3 remote-as 200 neighbor 10.2.2.2 remote-as 100 neighbor 10.2.2.2 remote-as 100 network 172.16.10.0 aggregate-address 192.168.160.0 255.0.0.0 suppress-map CHECK
次のような形式もあります。
aggregate-address <address>attribute-map <map-name>
このコマンドを使用すると、集約の送信時にメトリックなどの属性を設定することができます。集約の送信元を IGP に設定するには、次のルート マップを aggregate attribute-map コマンドに適用します。
route-map SETMETRIC set origin igp aggregate-address 192.168.160.0 255.0.0.0 attribute-map SETORIGIN
詳細は、『BGPでのルート集約について』を参照してください。
要求:RTBがプレフィクス192.168.160.0をアドバタイズし、より詳細なルートをすべて抑制できるようにします。この要求の問題は、ネットワーク172.31.160.0がAS200に対してローカルであることです。つまり、AS200が172.31.160.0の発信元です。aggregate summary-only コマンドを使用しても、RTB が 172.31.160.0 のエントリを生成せずに 192.168.160.0 のプレフィックスを生成できるようにはなりません。RTB は 172.31.160.0 の発信元であるため、両方のネットワークを生成します。この問題を解決する方法は 2 つあります。
1 つは、スタティック ルートを使用して BGP に再配布する方法です。これにより、RTB は不完全(?)な送信元とともに集約をアドバタイズします。
RTB# router bgp 200 neighbor 10.3.3.1 remote-as 300 redistribute static !--- This generates an update for 192.168.160.0 !--- with the origin path as "incomplete". ip route 192.168.160.0 255.0.0.0 null0
2番目の解決策では、スタティックルートに加えて、networkコマンドのエントリを追加します。このエントリによってアップデートの送信元が IGP に設定されますが、それ以外は同じ効果が得られます。
RTB# router bgp 200 network 192.168.160.0 mask 255.0.0.0 !--- This entry marks the update with origin IGP. neighbor 10.3.3.1 remote-as 300 redistribute static
ip route 192.168.160.0 255.0.0.0 null0
パス情報のサイズを縮小するには、集約で as-set ステートメントを使用します。as-set を使用すると、集約された複数のパスに AS 番号が複数回登場しても、AS 番号は一度しかリストされません。情報の集約によってパス属性に関する情報が失われるような場合は、aggregate as-set コマンドを使用します。次の例では、RTC は RTA から 192.168.160.20 に関するアップデート、RTB から 172.31.160.0 に関するアップデートを取得します。RTC がネットワーク 192.168.160.0/8 を集約して、RTD にそのネットワークを送信すると仮定します。RTD ではそのルートの送信元がわかりません。aggregate as-set ステートメントを追加すると、RTC は集合 {} 形式でパス情報を生成します。この集合には、パスの順番に関係なくすべてのパス情報が含まれます。
RTB# router bgp 200 network 172.31.160.0 neighbor 10.3.3.1 remote-as 300 RTA# router bgp 100 network 192.168.160.20 neighbor 10.2.2.1 remote-as 300
ケース 1:
RTC には as-set ステートメントが設定されていません。RTCは、ルートがAS300から発信されたかのように、パス情報(300)を含むアップデート192.168.160.0/8をRTDに送信します。
RTC# router bgp 300 neighbor 10.3.3.3 remote-as 200 neighbor 10.2.2.2 remote-as 100 neighbor 10.4.4.4 remote-as 400 aggregate 192.168.160.0 255.0.0.0 summary-only !--- This command causes RTC to send RTD updates about 192.168.160.0/8
!--- with no indication that 192.168.160.0 actually comes from two different ASs.
!--- This may create loops if RTD has an entry back into AS100 or AS200.
ケース 2:
RTC# router bgp 300 neighbor 10.3.3.3 remote-as 200 neighbor 10.2.2.2 remote-as 100 neighbor 10.4.4.4 remote-as 400 aggregate 192.168.160.0 255.0.0.0 summary-only aggregate 192.168.160.0 255.0.0.0 as-set !--- This command causes RTC to send RTD updates about 192.168.160.0/8
!--- with an indication that 192.168.160.0 belongs to a set {100 200}.
次の2つの項目、BGPコンフェデレーションおよびルートリフレクタは、AS内部でのiBGPピアリングの増大をさらに制御する必要があるInternet Service Provider(ISP;インターネットサービスプロバイダー)のためのものです。
BGP コンフェデレーションの実装により、AS 内部の iBGP メッシュが減少します。なぜなら、1 つの AS を複数の AS に分割し、グループ全体を単一のコンフェデレーションに割り当てるからです。AS はそれぞれ単独でフル メッシュ構造の iBGP を確立し、コンフェデレーション内の他の AS に接続しています。これらの AS は、コンフェデレーション内の AS と eBGP ピアで接続されていますが、iBGP を使用する場合と同様にルーティングを交換します。これにより、コンフェデレーションにネクスト ホップ、メトリック、ローカル プリファレンス情報が保持されます。外部からは、コンフェデレーションが単一の AS のように見えます。
BGP コンフェデレーションを設定するには、次のコマンドを発行します。
bgp confederation identifier <autonomous-system>
コンフェデレーション ID は、コンフェデレーション グループの AS 番号です。
次のコマンドを発行すると、コンフェデレーション内で複数の AS 間のピアリングが実行されます。
bgp confederation peers< autonomous-system>
次にコンフェデレーションの例を示します。
9 台の BGP スピーカで構成された AS500 があると仮定します。BGP 以外のスピーカも別に存在しますが、ここでは他の AS への eBGP 接続を持つ BGP スピーカのみを取り上げます。AS500 内でフル メッシュ構造の iBGP を確立するには、ルータごとに 9 つのピア接続が必要になります。iBGP ピアが 8 つと、外部 AS への eBGP ピアが 1 つです。
コンフェデレーションを使用すると、AS500 を複数の AS(AS50、AS60、および AS70)に分割できます。AS のコンフェデレーション ID として 500 を割り当てます。外部からは 1 つの AS(AS500)のみが認識されます。AS50、AS60、およびAS70のそれぞれに対して、フルメッシュ構造のiBGPピアを定義し、bgp confederation peersコマンドを使用してコンフェデレーションピアのリストを定義します。
RTC、RTD、および RTA ルータの設定例は次のとおりです。
注:RTAはAS50、AS60、またはAS70を認識していません。RTA は AS500 のみを認識しています。
RTC# router bgp 50 bgp confederation identifier 500 bgp confederation peers 60 70 neighbor 10.128.213.10 remote-as 50 (IBGP connection within AS50) neighbor 10.128.213.20 remote-as 50 (IBGP connection within AS50) neighbor 10.128.213.11 remote-as 60 (BGP connection with confederation peer 60) neighbor 10.128.213.14 remote-as 70 (BGP connection with confederation peer 70) neighbor 10.5.5.5 remote-as 100 (EBGP connection to external AS100) RTD# router bgp 60 bgp confederation identifier 500 bgp confederation peers 50 70 neighbor 10.128.210.2 remote-as 60 (IBGP connection within AS60) neighbor 10.128.213.30 remote-as 50(BGP connection with confederation peer 50) neighbor 10.128.213.14 remote-as 70 (BGP connection with confederation peer 70) neighbor 10.6.6.16 remote-as 600 (EBGP connection to external AS600) RTA#
router bgp 100 neighbor 10.5.5.4 remote-as 500 (EBGP connection to confederation 500)
AS 内での iBGP ピアリングの増大に対処するもう 1 つの方法は、ルート リフレクタ(RR)です。「iBGP」セクションで説明したように、BGPスピーカは、別のiBGPスピーカ経由で学習したルートを第3のiBGPスピーカにアドバタイズしません。この制約を少し緩めて、ルータが iBGP で学習したルートを他の iBGP にアドバタイズ(リフレクト)できるように追加の制御を行うことができます。このルート リフレクションにより、AS 内の iBGP ピアの数は減少します。
通常は、AS100 内の RTA、RTB、および RTC 間でフル メッシュ構造の iBGP を維持する必要があります。RR の概念を利用すれば、RTC を RR として選択できます。これにより、RTC は RTA および RTB との部分 iBGP ピアリングを保持します。RTC が RTA および RTB から到達するアップデートの RR であるため、RTA と RTB の間のピアリングは必要ありません。
neighborroute-reflector-client
このコマンドが設定されたルータは RR になり、コマンドで指定されたネイバーはその RR のクライアントになります。この例では、RTC の設定で neighbor route-reflector-client コマンドを使用し、RTA と RTB の IP アドレスを指定します。RR とクライアントの組み合わせを「クラスタ」と呼びます。この例では、AS100 内で RTA、RTB、および RTC が 1 つの RR を含むクラスタを形成します。
クライアントではないRRの他のiBGPピアは非クライアントです。
1 つの AS に複数の RR を設定できます。この場合、各 RR は他の RR を他のすべての iBGP スピーカと同様に扱います。他の RR は同じクラスタ(クライアント グループ)に属する場合も、他のクラスタ グループに属する場合もあります。簡単な設定では、AS を複数のクラスタに分割できます。各 RR で、フル メッシュ型トポロジの非クライアント ピアとして他の RR を設定します。クライアントは、クライアントクラスタ外のiBGPスピーカとピア関係を確立できません。
上の図では、RTA、RTB、およびRTCが1つのクラスタを形成しています。RTC は RR です。RTC にとっては、RTA と RTB がクライアントで、その他はすべて非クライアントです。neighbor route-reflector-client コマンドによって RR のクライアントが指定されることに注意してください。同様に、RTD は RTE および RTF クライアントの RR です。RTG は 3 つ目のクラスタの RR です。
注:RTD、RTC、およびRTGはフルメッシュ構造になっていますが、クラスタ内のルータはフルメッシュ構造になっていません。
RR はルートを受信すると、次のリストのように転送します。ただし、この動作はピア タイプによって異なります。
非クライアント ピアからのルート:クラスタ内のすべてのクライアントにリフレクトする。
クライアント ピアからのルート:すべての非クライアント ピアおよびクライアント ピアにリフレクトする。
eBGP ピアからのルート:すべてのクライアント ピアと非クライアント ピアにアップデートを送信する。
RTC、RTD、および RTB ルータの相対的な BGP 設定を次に示します。
RTC# router bgp 100 neighbor 10.2.2.2 remote-as 100 neighbor 10.2.2.2 route-reflector-client neighbor 10.1.1.1 remote-as 100 neighbor 10.1.1.1 route-reflector-client neighbor 10.7.7.7 remote-as 100 neighbor 10.4.4.4 remote-as 100 neighbor 10.8.8.8 remote-as 200 RTB# router bgp 100 neighbor 10.3.3.3 remote-as 100 neighbor 10.12.12.12 remote-as 300 RTD# router bgp 100 neighbor 10.6.6.16 remote-as 100 neighbor 10.6.6.16 route-reflector-client neighbor 10.5.5.5 remote-as 100 neighbor 10.5.5.5 route-reflector-client neighbor 10.7.7.7 remote-as 100 neighbor 10.3.3.3 remote-as 100
iBGP で学習されたルートがリフレクトされるため、ルーティング情報のループが発生する可能性があります。RR スキームにはこのループを回避するための方法がいくつか用意されています。
originator-id:これは非推移的なオプションの BGP 属性で、長さは 4 バイトです。この属性は RR によって作成され、ローカル AS 内のルート発信元のルータ ID(RID)を伝送します。設定が適切でないためにルーティング情報が発信元に戻された場合、その情報は無視されます。
cluster-list:クラスタリストについては、「クラスタ内の複数のRR」セクションを参照してください。
通常、クライアントのクラスタには、RR が 1 つ存在します。この場合は、RR のルータ ID によってクラスタが識別されます。冗長性を向上してシングル ポイント障害を回避するために、1 つのクラスタに複数の RR を設定できます。この場合は、RR が同じクラスタ内の RR からのアップデートを認識できるように、同じクラスタ内のすべての RR に 4 バイトのクラスタ ID を設定する必要があります。
クラスタ リストは、ルートが通過したクラスタ ID のシーケンスです。RR は RR クライアントからのルートをクラスタ外の非クライアントにリフレクトする際に、クラスタ リストにローカル クラスタ ID を付加します。このアップデートにクラスタ リストがない場合は、RR によって作成されます。RR はこの属性を使用して、設定が適切でないためにルーティング情報が同じクラスタにループバックされていないかどうかを特定できます。クラスタ リストにローカル クラスタ ID が見つかった場合、そのアドバタイズメントは無視されます。
上記の図では、RTD、RTE、RTF、および RTH が 1 つのクラスタに属しています。RTD と RTH はどちらも同じクラスタの RR です。
注:RTHがすべてのRRとフルメッシュのピアリングを行っているため、冗長性があります。RTD がダウンした場合は、RTH が RTD の役割を引き継ぎます。
RTH、RTD、RTF、および RTC の設定は次のとおりです。
RTH# router bgp 100 neighbor 10.4.4.4 remote-as 100 neighbor 10.5.5.5 remote-as 100 neighbor 10.5.5.5 route-reflector-client neighbor 10.6.6.16 remote-as 100 neighbor 10.6.6.16 route-reflector-client neighbor 10.7.7.7 remote-as 100 neighbor 10.3.3.3 remote-as 100 neighbor 10.9.9.9 remote-as 300 bgp cluster-id 10 RTD# router bgp 100 neighbor 10.10.10.10 remote-as 100 neighbor 10.5.5.5 remote-as 100 neighbor 10.5.5.5 route-reflector-client neighbor 10.6.6.16 remote-as 100 neighbor 10.6.6.16 route-reflector-client neighbor 10.7.7.7 remote-as 100 neighbor 10.3.3.3 remote-as 100 neighbor 10.11.11.11 remote-as 400 bgp cluster-id 10 RTF# router bgp 100 neighbor 10.10.10.10 remote-as 100 neighbor 10.4.4.4 remote-as 100 neighbor 10.13.13.13 remote-as 500 RTC# router bgp 100 neighbor 10.1.1.1 remote-as 100 neighbor 10.1.1.1 route-reflector-client neighbor 10.2.2.2 remote-as 100 neighbor 10.2.2.2 route-reflector-client neighbor 10.4.4.4 remote-as 100 neighbor 10.7.7.7 remote-as 100 neighbor 10.10.10.10 remote-as 100 neighbor 10.8.8.8 remote-as 200
注:RTCのクラスタにはRRが1つしか存在しないため、RTCにbgp cluster-idコマンドを設定する必要はありません。
注意:この設定では、ピアグループは使用されません。クラスタ内のクライアントが互いの間に直接 iBGP ピアを確立せずに、RR 経由でアップデートを交換する場合は、ピア グループを使用しないでください。ピア グループを設定すると、RR でのルートの送信元に対する取り消しがクラスタ内のすべてのクライアントに送信される可能性があります。この送信によって問題が発生することがあります。
RR では、ルータのサブコマンドである bgp client-to-client reflection がデフォルトでイネーブルになっています。RR で BGP クライアント間のリフレクションをオフにして、クライアント間で冗長 BGP ピアリングを行えば、安全にピア グループを使用できます。詳細については、『ピア グループの制限』を参照してください。
AS には RR の概念に対応していない BGP スピーカが含まれる場合があります。このドキュメントでは、これらのルータを従来型 BGP スピーカと呼びます。RR スキームを使用すれば、そのような従来型 BGP スピーカの共存が可能です。これらのルータは、クライアント グループに属することも、非クライアント グループに属することもできます。これらのルータが存在すると、現在の iBGP モデルから RR モデルに簡単かつ段階的に移行できます。クラスタを作成するには、まず 1 台のルータを RR として設定し、他の RR および RR クライアントを通常の iBGP ピアにします。その後は、段階的にクラスタを追加作成できます。
この図では、RTD、RTE、および RTF がルート リフレクションの概念に対応しています。RTC、RTA、およびRTBは従来型ルータです。これらのルータを RR として設定することはできません。これらのルータと RTD の間で通常の iBGP メッシュを形成できます。その後、アップグレードする準備ができたら、RTC を RTA および RTB クライアントの RR にすることができます。クライアントはルート リフレクション スキームに対応している必要はなく、アップグレードが必要なのは RR だけです。
RTD と RTC の設定は次のとおりです。
RTD# router bgp 100 neighbor 10.6.6.16 remote-as 100 neighbor 10.6.6.16 route-reflector-client neighbor 10.5.5.5 remote-as 100 neighbor 10.5.5.5 route-reflector-client neighbor 10.3.3.3 remote-as 100 neighbor 10.2.2.2 remote-as 100 neighbor 10.1.1.1 remote-as 100 neighbor 10.13.13.13 remote-as 300 RTC# router bgp 100 neighbor 10.4.4.4 remote-as 100 neighbor 10.2.2.2 remote-as 100 neighbor 10.1.1.1 remote-as 100 neighbor 10.14.14.14 remote-as 400
RTC をアップグレードして RR にする準備ができたら、iBGP フル メッシュを削除し、RTA と RTB を RTC のクライアントにします。
このドキュメントでは、これまでに、潜在的な情報のループを防ぐために使用できる2つの属性、originator-idおよびcluster-listについて説明しました。
ループを制御するもう1つの方法は、発信ルートマップのset句に対してより多くの制限を適用することです。発信ルート マップの set 句は、iBGP ピアにリフレクトされたルートには影響しません。
また、next-hop-selfに対してより多くの制限を加えることもできます。これはネイバーごとの設定オプションです。RRでnext-hop-selfoを使用すると、この句はeBGPで学習されたルートのネクストホップだけに影響します。これは、リフレクトされたルートのネクストホップは変更できないためです。
Cisco IOS ソフトウェア リリース 11.0 でルート ダンプニングが導入されました。ルート ダンプニングとは、ルート フラッピングに起因する不安定な状態の発生を最小限に抑えるメカニズムです。また、ルート ダンプニングはネットワーク上の変動も軽減します。正常に動作していないルートを特定するために、基準を定義します。フラップが発生したルートには、フラップごとに 1000 のペナルティが割り当てられます。累積ペナルティが事前に定義されたsuppress limitに達するとすぐに、ルートアドバタイズメントの抑制が発生します。ペナルティは、事前に設定された半減期に基づいて指数関数的に減少します。ペナルティが事前に定義された再使用制限を下回ると、ルートアドバタイズメントは抑制されなくなります。
ルート ダンプニングは、iBGP 経由で学習された AS 外部のルートには適用されません。これにより、ルート ダンプニングでは AS 外部のルートに対して iBGP ピアがより高いペナルティを持つことが回避されます。
ペナルティは 5 秒単位で減少します。ルートは、10秒の精度で抑制されません。ルータは、ペナルティが再利用制限の半分未満になるまでダンプニング情報を保持します。半分未満になった時点で、ルータはこの情報を消去します。
最初は、ダンプニングがデフォルトでオフになっています。必要に応じて、この機能を将来的にデフォルトで有効にできます。次のコマンドを使用してルート ダンプニングを制御します。
bgp dampening:ダンプニングをオンにする。
no bgp dampening:ダンプニングをオフにする。
bgp dampeninghalf-life-time:half-life-timeを変更する。
一度にすべてのパラメータを設定する場合は、次のコマンドを使用します。
bgp dampeninghalf-life-timereuseuppressmaximum-suppress-time
構文の詳細は次のとおりです。
half-life-time:指定可能な範囲は1 ~ 45分。現在のデフォルトは15分。
reuse-value:指定可能な範囲は1 ~ 20,000。デフォルトは750。
suppress-value:指定可能な範囲は1 ~ 20,000。デフォルトは2000。
max-suppress-time:ルートの抑制の最大期間。指定可能な範囲は 1 ~ 255 分。デフォルトは half-life-time の 4 倍。
RTB# hostname RTB interface Serial0 ip address 192.168.250.2 255.255.255.252 interface Serial1 ip address 192.168.10.6 255.255.255.252 router bgp 100 bgp dampening network 192.168.250.15 neighbor 192.168.10.5 remote-as 300 RTD# hostname RTD interface Loopback0 ip address 192.168.208.174 255.255.255.192 interface Serial0/0 ip address 192.168.10.5 255.255.255.252 router bgp 300 network 192.168.10.0 neighbor 192.168.10.6 remote-as 100
RTB では、デフォルト パラメータを使用してルート ダンプニングが設定されています。RTD への eBGP リンクが安定している場合、RTB の BGP テーブルは次のように表示されます。
RTB#show ip bgp BGP table version is 24, local router ID is 192.168.250.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 192.168.10.0 192.168.10.5 0 0 300 i *> 192.168.250.15 0.0.0.0 0 32768 i
ルート フラップをシミュレートするには、RTD で clear ip bgp 192.168.10.6 コマンドを発行します。RTB の BGP テーブルは次のように表示されます。
RTB#show ip bgp BGP table version is 24, local router ID is 192.168.250.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path h 192.168.10.0 192.168.10.5 0 0 300 i *> 192.168.250.15 0.0.0.0 0 32768 i
192.168.10.0のBGPエントリはahistorystateです。この状態は、ルートへのベスト パスはないが、ルート フラッピングに関する情報はまだ保持されていることを意味します。
RTB#show ip bgp 192.168.10.0 BGP routing table entry for 192.168.10.0 255.255.255.0, version 25 Paths: (1 available, no best path) 300 (history entry) 192.168.10.5 from 192.168.10.5 (192.168.208.174) Origin IGP, metric 0, external Dampinfo: penalty 910, flapped 1 times in 0:02:03
ルートはフラッピングに対するペナルティを受け取りましたが、ペナルティはまだ「suppress limit」の下にあります。デフォルトは 2000 です。ルートの抑制はまだ実行されていません。ルート フラップがさらに数回発生すると、次のように表示されます。
RTB#show ip bgp BGP table version is 32, local router ID is 192.168.250.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *d 192.168.10.0 192.168.10.5 0 0 300 i *> 192.168.250.15 0.0.0.0 0 32768 i RTB#show ip bgp 192.168.10.0 BGP routing table entry for 192.168.10.0 255.255.255.0, version 32 Paths: (1 available, no best path) 300, (suppressed due to dampening) 192.168.10.5 from 192.168.10.5 (192.168.208.174) Origin IGP, metric 0, valid, external Dampinfo: penalty 2615, flapped 3 times in 0:05:18 , reuse in 0:27:00
ルートはダンプニングまたは抑制されています。ルートは、ペナルティが「再使用値」に達すると再使用されます。この例の場合、再使用値はデフォルトの 750 です。ペナルティが再使用限度の半分未満になると、ダンプニング情報は消去されます。この例では、ペナルティが 375(750/2=375)になると消去されます。次のコマンドは、フラップ統計情報を表示およびクリアする場合に使用します。
show ip bgp flap-statistics:すべてのパスのフラップ統計情報を表示する。
show ip bgp flap-statistics regexpregular-expression:正規表現に一致するすべてのパスのフラップ統計情報を表示する。
show ip bgp flap-statistics filter-listlist:フィルタを通過するすべてのパスのフラップ統計情報を表示する。
show ip bgp flap-statisticsA.B.C.D m.m.m.m:単一エントリのフラップ統計情報を表示する。
show ip bgp flap-statisticsA.B.C.D m.m.m.mlonger-prefix:より具体的なエントリのフラップ統計情報を表示する。
show ip bgp neighbor [dampened-routes] | [flap-statistics]:ネイバーからのすべてのパスのフラップ統計情報を表示する。
clear ip bgp flap-statistics:すべてのルートのフラップ統計情報をクリアする。
clear ip bgp flap-statistics regexpregular-expression:正規表現に一致するすべてのパスのフラップ統計情報をクリアする。
clear ip bgp flap-statistics filter-listlist:フィルタを通過するすべてのパスのフラップ統計情報をクリアする。
clear ip bgp flap-statisticsA.B.C.D m.m.m.m:単一エントリのフラップ統計情報をクリアする。
clear ip bgpA.B.C.Dflap-statistics:ネイバーからのすべてのパスのフラップ統計情報をクリアする。
BGP 属性と用語について十分に理解できたところで、『BGP でベスト パスを選択するアルゴリズム』を参照してください。
この項の設計例では、シスコ ルータに実際に表示される設定テーブルとルーティング テーブルを示します。
ここでは、この設定を段階的に構築する方法と、途中で発生し得る問題を示します。AS が eBGP 経由で 2 つの ISP に接続している場合は、ルートを適切に制御するために、AS 内で iBGP を実行してください。この例では、AS100 内の RTA と RTB の間で iBGP を実行し、IGP として OSPF を実行します。2 つの ISP(AS200 と AS300)に接続すると仮定した場合、すべてのルータの最初の設定は次のようになります。
注:これらの設定は最終的な設定ではありません。
RTA# hostname RTA ip subnet-zero interface Loopback0 ip address 192.168.203.250 255.255.255.0 interface Ethernet0 ip address 192.168.203.14 255.255.255.0 interface Serial0 ip address 192.168.128.63 255.255.255.252 router ospf 10 network 192.168.203.25 0.0.255.255 area 0 router bgp 100 network 192.168.203.13 network 192.168.250.14 neighbor 172.31.63.250 remote-as 200 neighbor 192.168.250.2 remote-as 100 neighbor 192.168.250.2 update-source Loopback0 RTF# hostname RTF ip subnet-zero interface Ethernet0 ip address 172.31.14.250 255.255.255.0 interface Serial1 ip address 172.16.15.250 255.255.255.252 router ospf 10 network 192.168.203.25 0.0.255.255 area 0 RTB# hostname RTB ip subnet-zero interface Serial0 ip address 192.168.250.2 255.255.255.252 interface Serial1 ip address 192.168.10.6 255.255.255.252 router ospf 10 network 192.168.203.25 0.0.255.255 area 0 router bgp 100 network 192.168.250.15 neighbor 192.168.10.5 remote-as 300 neighbor 192.168.203.250 remote-as 100 RTC# hostname RTC ip subnet-zero interface Loopback0 ip address 192.168.128.6330 255.255.255.192 interface Serial2/0 ip address 172.16.31.5 255.255.255.252 ! interface Serial2/1 ip address 172.31.63.250 255.255.255.252 router bgp 200 network 172.31.10.0 neighbor 192.168.128.63 remote-as 100 neighbor 172.31.63.213 remote-as 400 RTD# hostname RTD ip subnet-zero interface Loopback0 ip address 192.168.208.174 255.255.255.192 interface Serial0/0 ip address 192.168.10.5 255.255.255.252 ! interface Serial0/1 ip address 192.168.10.2 255.255.255.252 router bgp 300 network 192.168.10.0 neighbor 192.168.10.1 remote-as 500 neighbor 192.168.10.6 remote-as 100 RTE# hostname RTE ip subnet-zero interface Loopback0 ip address 192.168.200.10 255.255.255.0 interface Serial0 ip address 192.168.195.211 255.255.255.252 interface Serial1 ip address 172.31.63.213 255.255.255.252 clockrate 1000000 router bgp 400 network 192.168.10.10 neighbor 172.16.31.5 remote-as 200 neighbor 192.168.211.195 remote-as 500 RTG# hostname RTG ip subnet-zero interface Loopback0 ip address 192.168.211.19574 255.255.255.192 interface Serial0 ip address 192.168.10.1 255.255.255.252 interface Serial1 ip address 192.168.211.195 255.255.255.252 router bgp 500 network 192.168.211.10 neighbor 192.168.10.2 remote-as 300 neighbor 192.168.195.211 remote-as 400
常に network
スタティックエントリをBGPに再配布して、ネットワークをアドバタイズします。これは、BGP に IGP を再配布する方法よりも推奨されます。この例では、 network
BGPにネットワークを注入するコマンド。
ここでは、RTB と RTD との間にリンクが存在しない場合と同様に、RTB シャットダウンの s1 インターフェイスから始めます。RTB の BGP テーブルは次のとおりです。
RTB#show ip bgp BGP table version is 4, local router ID is 192.168.250.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *i172.31.10.0 172.31.63.250 0 100 0 200 i *i192.168.10.0 172.31.63.250 100 0 200 400 500 300 i *i192.168.211.10 172.31.63.250 100 0 200 400 500 i *i192.168.10.10 172.31.63.250 100 0 200 400 i *>i192.168.203.13 192.168.203.250 0 100 0 i *>i192.168.250.14 192.168.203.250 0 100 0 i *>192.168.250.15 0.0.0.0 0 32768 i
このテーブルでは、次の表記が使用されます。
Aniat the beginning:エントリがiBGPピアを介して学習されたことを示します。
Aniat the end:パス情報の起点(origin)がIGPであることを示します。
パス情報:この情報は直感的なものです。たとえば、ネットワーク 172.31.10.0 はネクスト ホップが 172.31.63.250 のパス 200 を介して学習されることがわかります。
注:ローカルで生成されたエントリ(192.168.250.15など)のネクストホップは0.0.0.0です。
注:Next Hop属性に注目してください。RTB は、iBGP に伝達された eBGP ネクスト ホップ 172.31.63.250 を介して 172.31.10.0 に関する情報を取得します。
IP ルーティング テーブルを見てみましょう。
RTB#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is not set 192.168.203.13 255.255.255.255 is subnetted, 1 subnets O 192.168.203.250 [110/75] via 172.16.15.250, 02:50:45, Serial0 192.168.250.15 255.255.255.252 is subnetted, 1 subnets C 192.168.250.15 is directly connected, Serial0 O 192.168.250.14 [110/74] via 172.16.15.250, 02:50:46, Serial0
一見したところ、BGP エントリはいずれもルーティング テーブルに到達していません。ここには 2 つの問題があります。
最初の問題は、これらのエントリのネクスト ホップ 172.31.63.250 が到達不能であるということです。IGP(OSPF)経由でネクスト ホップに到達する方法がないため、RTB は OSPF 経由で 192.168.213.63 について学習していません。OSPFをRTAのs0インターフェイスで実行してパッシブにすると、RTBはネクストホップ172.31.63.250への到達方法を認識するようになります。この場合の RTA の設定は次のとおりです。
RTA# hostname RTA ip subnet-zero interface Loopback0 ip address 192.168.203.250 255.255.255.0 interface Ethernet0 ip address 192.168.203.14 255.255.255.0 interface Serial0 ip address 192.168.128.63 255.255.255.252 router ospf 10 passive-interface Serial0 network 192.168.203.25 0.0.255.255 area 0 network 172.31.10.0 0.0.255.255 area 0 router bgp 100 network 192.168.203.25 mask 255.255.0.0 neighbor 172.31.63.250 remote-as 200 neighbor 192.168.250.2 remote-as 100 neighbor 192.168.250.2 update-source Loopback0
注: bgp nexthop self
コマンドをRTAとRTB間で発行して、ネクストホップを変更します。
RTB の新しい BGP テーブルは次のように表示されます。
RTB#show ip bgp BGP table version is 10, local router ID is 192.168.250.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *>i172.31.10.0 172.31.63.250 0 100 0 200 i *>i192.168.10.0 172.31.63.250 100 0 200 400 500 300 i *>i192.168.211.10 172.31.63.250 100 0 200 400 500 i *>i192.168.10.10 172.31.63.250 100 0 200 400 i *>i192.168.203.13 192.168.203.250 0 100 0 i *>i192.168.250.14 192.168.203.250 0 100 0 i *> 192.168.250.15 0.0.0.0 0 32768 i
注:すべてのエントリに「>」があります。これは、BGPがネクストホップに到達できることを意味します。
ルーティング テーブルを見てみましょう。
RTB#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is not set 192.168.203.13 255.255.255.255 is subnetted, 1 subnets O 192.168.203.250 [110/75] via 172.16.15.250, 00:04:46, Serial0 192.168.250.15 255.255.255.252 is subnetted, 1 subnets C 192.168.250.15 is directly connected, Serial0 O 192.168.250.14 [110/74] via 172.16.15.250, 00:04:46, Serial0 172.31.10.0 255.255.255.252 is subnetted, 1 subnets O 192.168.213.63 [110/138] via 172.16.15.250, 00:04:47, Serial0
2 つ目の問題は、ルーティング テーブルに BGP エントリがまだ表示されないことです。唯一変化したのは、192.168.213.63 が OSPF 経由で到達可能になっている点です。これは同期の問題です。IGP と同期されていないため、BGP はこれらのエントリをルーティング テーブルに挿入することも、BGP アップデートで送信することもありません。
注:BGPをOSPFにまだ再配布していないため、RTFはネットワーク192.168.10.0および192.168.211.10を認識していません。
このシナリオでは、同期をオフにするとエントリがルーティング テーブルに表示されますが、接続は切断されたままです。
RTB で同期をオフにした場合は、次のように表示されます。
RTB#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is not set B 192.168.10.10 [200/0] via 172.31.63.250, 00:01:07 B 192.168.211.10 [200/0] via 172.31.63.250, 00:01:07 B 192.168.10.0 [200/0] via 172.31.63.250, 00:01:07 192.168.203.13 is variably subnetted, 2 subnets, 2 masks O 192.168.203.250 255.255.255.255 [110/75] via 172.16.15.250, 00:12:37, Serial0 B 192.168.203.13 255.255.255.0 [200/0] via 192.168.203.250, 00:01:08 192.168.250.15 255.255.255.252 is subnetted, 1 subnets C 192.168.250.15 is directly connected, Serial0 O 192.168.250.14 [110/74] via 172.16.15.250, 00:12:37, Serial0 172.31.10.0 is variably subnetted, 2 subnets, 2 masks B 172.31.10.0 255.255.0.0 [200/0] via 172.31.63.250, 00:01:08 O 192.168.213.63 255.255.255.252 [110/138] via 172.16.15.250, 00:12:37, Serial0
ルーティング テーブルは問題ないように見えますが、これらのネットワークに到達する方法がありません。以下のように、中央の RTF はネットワークへの到達方法を認識していません。
RTF#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is not set 192.168.203.13 255.255.255.255 is subnetted, 1 subnets O 192.168.203.250 [110/11] via 192.168.203.14, 00:14:15, Ethernet0 192.168.250.15 255.255.255.252 is subnetted, 1 subnets C 192.168.250.15 is directly connected, Serial1 C 192.168.250.14 is directly connected, Ethernet0 172.31.10.0 255.255.255.252 is subnetted, 1 subnets O 192.168.213.63 [110/74] via 192.168.203.14, 00:14:15, Ethernet0
この状況で同期をオフにしても、問題はそのまま残ります。また、同期は後で他の問題を扱う際に必要です。RTA で OSPF に BGP をメトリック 2000 で再配布します。
RTA# hostname RTA ip subnet-zero interface Loopback0 ip address 192.168.203.250 255.255.255.0 interface Ethernet0 ip address 192.168.203.14 255.255.255.0 interface Serial0 ip address 192.168.128.63 255.255.255.252 router ospf 10 redistribute bgp 100 metric 2000 subnets passive-interface Serial0 network 192.168.203.25 0.0.255.255 area 0 network 172.31.10.0 0.0.255.255 area 0 router bgp 100 network 192.168.203.25 mask 255.255.0.0 neighbor 172.31.63.250 remote-as 200 neighbor 192.168.250.2 remote-as 100 neighbor 192.168.250.2 update-source Loopback0
ルーティング テーブルは次のように表示されます。
RTB#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is not set O E2 192.168.10.10 [110/2000] via 172.16.15.250, 00:00:14, Serial0 O E2 192.168.211.10 [110/2000] via 172.16.15.250, 00:00:14, Serial0 O E2 192.168.10.0 [110/2000] via 172.16.15.250, 00:00:14, Serial0 192.168.203.13 is variably subnetted, 2 subnets, 2 masks O 192.168.203.250 255.255.255.255 [110/75] via 172.16.15.250, 00:00:15, Serial0 O E2 192.168.203.13 255.255.255.0 [110/2000] via 172.16.15.250, 00:00:15, Serial0 192.168.250.15 255.255.255.252 is subnetted, 2 subnets C 172.31.250.8 is directly connected, Loopback1 C 192.168.250.15 is directly connected, Serial0 O 192.168.250.14 [110/74] via 172.16.15.250, 00:00:15, Serial0 172.31.10.0 is variably subnetted, 2 subnets, 2 masks O E2 172.31.10.0 255.255.0.0 [110/2000] via 172.16.15.250, 00:00:15,Serial0 O 192.168.213.63 255.255.255.252 [110/138] via 172.16.15.250, 00:00:16, Serial0
OSPF は iBGP より距離が短いため、BGP エントリは表示されなくなりました。OSPF の距離が 110 であるのに対し、iBGP の距離は 200 です。
RTA が 192.168.250.15 をアドバタイズできるように、RTA で同期をオフにします。この操作が必要な理由は、RTA がマスクの違いにより OSPF と同期されないからです。RTB が 192.168.203.13 をアドバタイズできるように、RTB の同期をオフのままにします。RTB でこの操作が必要な理由も上記と同様です。
次に、RTB の s1 インターフェイスを表示してルートを確認します。また、RTB のシリアル 1 で OSPF をイネーブルにして、パッシブに設定します。この手順により、RTA は IGP 経由でネクスト ホップ 192.168.10.5 に関する情報を取得できるようになります。この手順を行わないと、ネクスト ホップ 192.168.10.5 に到達するために eBGP 経由で別のルートを通ることになるため、ルーティング ループが発生します。RTA と RTB の新しい設定を次に示します。
RTA# hostname RTA ip subnet-zero interface Loopback0 ip address 192.168.203.250 255.255.255.0 interface Ethernet0 ip address 192.168.203.14 255.255.255.0 interface Serial0 ip address 192.168.128.63 255.255.255.252 router ospf 10 redistribute bgp 100 metric 2000 subnets passive-interface Serial0 network 192.168.203.25 0.0.255.255 area 0 network 172.31.10.0 0.0.255.255 area 0 router bgp 100 no synchronization network 192.168.203.13 network 192.168.250.14 neighbor 172.31.63.250 remote-as 200 neighbor 192.168.250.2 remote-as 100 neighbor 192.168.250.2 update-source Loopback0 RTB# hostname RTB ip subnet-zero interface Serial0 ip address 192.168.250.2 255.255.255.252 interface Serial1 ip address 192.168.10.6 255.255.255.252 router ospf 10 redistribute bgp 100 metric 1000 subnets passive-interface Serial1 network 192.168.203.25 0.0.255.255 area 0 network 192.168.208.0 0.0.255.255 area 0 router bgp 100 no synchronization network 192.168.250.15 neighbor 192.168.10.5 remote-as 300 neighbor 192.168.203.250 remote-as 100
BGP テーブルは次のように表示されます。
RTA#show ip bgp BGP table version is 117, local router ID is 192.168.203.250 Status codes: s suppressed, d damped, h history, * valid, > best, i -internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 172.31.10.0 172.31.63.250 0 0 200 i *>i192.168.10.0 192.168.10.5 0 100 0 300 i *>i192.168.211.10 192.168.10.5 100 0 300 500 i * 172.31.63.250 0 200 400 500 i *> 192.168.10.10 172.31.63.250 0 200 400 i *> 192.168.203.13 0.0.0.0 0 32768 i *> 192.168.250.14 0.0.0.0 0 32768 i *>i192.168.250.15 192.168.250.2 0 100 0 i RTB#show ip bgp BGP table version is 12, local router ID is 172.16.15.2500 Status codes: s suppressed, d damped, h history, * valid, > best, i -internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *>i172.31.10.0 172.31.63.250 0 100 0 200 i * 192.168.10.5 0 300 500 400 200 i *> 192.168.10.0 192.168.10.5 0 0 300 i *> 192.168.211.10 192.168.10.5 0 300 500 i *>i192.168.10.10 172.31.63.250 100 0 200 400 i * 192.168.10.5 0 300 500 400 i *>i192.168.203.13 192.168.203.250 0 100 0 i *>i192.168.250.14 192.168.203.250 0 100 0 i *> 192.168.250.15 0.0.0.0 0 32768 i
2 つの異なる ISP(AS200 と AS300)と通信するネットワークを設計するには、複数の方法があります。1 つは、プライマリ ISP とバックアップ ISP を設定する方法です。いずれかの ISP からの部分ルートと、両方の ISP へのデフォルト ルートを学習できます。この例では、AS200 から部分ルートを受信し、AS300 からはローカル ルートのみを受信します。RTA と RTB の両方が OSPF へのデフォルト ルートを生成しますが、メトリックがより小さい RTB が優先されます。このように、2 つの ISP 間で発信トラフィックのバランスを調整できます。
RTA から発信されたトラフィックが RTB 経由で戻る場合は、非対称が発生している可能性があります。この状況は、2 つの ISP との通信時に同じ IP アドレス プール(同じメジャー ネット)を使用している場合に発生することがあります。集約により、外部からは AS 全体が 1 つのエンティティとして認識される場合があります。ネットワークへのエントリ ポイントは RTA 経由の場合も RTB 経由の場合もあります。インターネットへのポイントが複数存在するにもかかわらず、すべての着信トラフィックがシングル ポイント経由で AS に到達していることがあります。この例では、2 つの ISP との通信に 2 つのメジャー ネットを使用しています。
非対称の原因としてもう 1 つ考えられるのは、アドバタイズされた AS に到達するパスの長さが異なることです。特定の宛先には、いずれかのサービス プロバイダーがもう一方よりも近いはずです。例では、AS400 からのトラフィックは、よりパスが短い RTA 経由で常にネットワークに到達します。この決定を操作することもできます。この場合は、set as-path prepend コマンドを使用してアップデートにパス番号を付加すると、パスをより長く見せることができます。ただし、ローカル プリファレンス、メトリック、重みなどの属性が使用されている場合は、AS400 によって出力点が AS200 に設定されている可能性があります。この場合、対処法はありません。
すべてのルータの最終的な設定は次のようになります。
RTA# hostname RTA ip subnet-zero interface Loopback0 ip address 192.168.203.250 255.255.255.0 interface Ethernet0 ip address 192.168.203.14 255.255.255.0 interface Serial0 ip address 192.168.128.63 255.255.255.252 router ospf 10 redistribute bgp 100 metric 2000 subnets passive-interface Serial0 network 192.168.203.25 0.0.255.255 area 0 network 172.31.10.0 0.0.255.255 area 0 default-information originate metric 2000 router bgp 100 no synchronization network 192.168.203.13 network 192.168.250.14 neighbor 172.31.63.250 remote-as 200 neighbor 172.31.63.250 route-map setlocalpref in neighbor 192.168.250.2 remote-as 100 neighbor 192.168.250.2 update-source Loopback0 ip classless ip default-network 172.31.200.200 route-map setlocalpref permit 10 set local-preference 200
RTA では、AS200 から到達するルートのローカル プリファレンスが 200 に設定されています。また、ネットワーク 172.31.200.200 はデフォルト候補として選択されています。ip default-network コマンドを使用すると、デフォルトを選択できます。
さらにこの例では、default-information originate コマンドを OSPF に使用して、OSPF ドメイン内にデフォルト ルートをインジェクトしています。また、Intermediate System-to-Intermediate System プロトコル(IS-IS プロトコル)と BGP にもこのコマンドを使用しています。RIP については、設定を追加しなくても 0.0.0.0 が RIP に自動的に再配布されます。IGRP および EIGRP では、BGP が IGRP と EIGRP に再配布された後で、デフォルト情報が IGP ドメインにインジェクトされます。IGRP と EIGRP によって、0.0.0.0 へのスタティック ルートを IGP ドメインに再配布することもできます。
RTF# hostname RTF ip subnet-zero interface Ethernet0 ip address 172.31.14.250 255.255.255.0 interface Serial1 ip address 172.16.15.250 255.255.255.252 router ospf 10 network 192.168.203.25 0.0.255.255 area 0 ip classless RTB# hostname RTB ip subnet-zero interface Loopback1 ip address 172.16.15.2500 255.255.255.252 interface Serial0 ip address 192.168.250.2 255.255.255.252 ! interface Serial1 ip address 192.168.10.6 255.255.255.252 router ospf 10 redistribute bgp 100 metric 1000 subnets passive-interface Serial1 network 192.168.203.25 0.0.255.255 area 0 network 192.168.10.6 0.0.0.0 area 0 default-information originate metric 1000 ! router bgp 100 no synchronization network 192.168.250.15 neighbor 192.168.10.5 remote-as 300 neighbor 192.168.10.5 route-map localonly in neighbor 192.168.203.250 remote-as 100 ! ip classless ip default-network 192.168.10.0 ip as-path access-list 1 permit ^300$ route-map localonly permit 10 match as-path 1 set local-preference 300
RTB では、AS300 から到達するアップデートのローカル プリファレンスが 300 に設定されています。この値は RTA から到達する iBGP アップデートのローカル プリファレンス値よりも大きいため、AS100 は AS300 のローカル ルートとして RTB を選択します。RTB のその他のルート(存在する場合)は、内部でローカル プリファレンス 100 で送信されます。この値は RTA から到達するローカル プリファレンス 200 よりも小さいため、RTAが優先されます。
注:アドバタイズしたのはAS300ローカルルートだけです。^300$ に一致しないパス情報はすべてドロップされます。ローカル ルートと、ISP のカスタマーであるネイバー ルートをアドバタイズする必要がある場合は、^300_[0-9]* を使用してください。
AS300 のローカル ルートを示す正規表現の出力は次のとおりです。
RTB#show ip bgp regexp ^300$ BGP table version is 14, local router ID is 172.16.15.2500 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 192.168.10.0 192.168.10.5 0 300 0 300 RTC# hostname RTC ip subnet-zero interface Loopback0 ip address 192.168.128.6330 255.255.255.192 interface Serial2/0 ip address 172.16.31.5 255.255.255.252 ! interface Serial2/1 ip address 172.31.63.250 255.255.255.252 router bgp 200 network 172.31.10.0 neighbor 192.168.128.63 remote-as 100 neighbor 192.168.128.63 distribute-list 1 out neighbor 172.31.63.213 remote-as 400 ip classless access-list 1 deny 192.168.211.0 0.0.255.255 access-list 1 permit any
RTCでは、172.31.10.0/16を集約し、AS100に注入する特定のルートを示します。ISP によってこのタスクの実行が拒否される場合は、AS100 の着信側でフィルタリングを行う必要があります。
RTD# hostname RTD ip subnet-zero interface Loopback0 ip address 192.168.208.174 255.255.255.192 ! interface Serial0/0 ip address 192.168.10.5 255.255.255.252 ! interface Serial0/1 ip address 192.168.10.2 255.255.255.252 router bgp 300 network 192.168.10.0 neighbor 192.168.10.1 remote-as 500 neighbor 192.168.10.6 remote-as 100 RTG# hostname RTG ip subnet-zero interface Loopback0 ip address 192.168.211.19574 255.255.255.192 interface Serial0 ip address 192.168.10.1 255.255.255.252 interface Serial1 ip address 192.168.211.195 255.255.255.252 router bgp 500 network 192.168.211.10 aggregate-address 192.168.211.0 255.255.0.0 summary-only neighbor 192.168.10.2 remote-as 300 neighbor 192.168.10.2 send-community neighbor 192.168.10.2 route-map setcommunity out neighbor 192.168.195.211 remote-as 400 ! ip classless access-list 1 permit 192.168.211.0 0.0.255.255 access-list 2 permit any route-map setcommunity permit 20 match ip address 2 ! route-map setcommunity permit 10 match ip address 1 set community no-export
コミュニティフィルタリングの使用方法のデモは、RTGで行います。この場合は、 no-export
RTDに対する192.168.211.0アップデートに対して行われます。これにより、RTD はそのルートを RTB にエクスポートしません。ただしこの場合、RTB はいずれにしてもこれらのルートを受け入れません。
RTE# hostname RTE ip subnet-zero interface Loopback0 ip address 192.168.200.10 255.255.255.0 interface Serial0 ip address 192.168.195.211 255.255.255.252 interface Serial1 ip address 172.31.63.213 255.255.255.252 router bgp 400 network 192.168.10.10 aggregate-address 172.31.200.200 255.255.0.0 summary-only neighbor 172.16.31.5 remote-as 200 neighbor 192.168.211.195 remote-as 500 ip classless
RTE は 172.31.200.200/16 を集約します。RTA、RTF、および RTB の最終的な BGP テーブルとルーティング テーブルは次のとおりです。
RTA#show ip bgp BGP table version is 21, local router ID is 192.168.203.250 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 172.31.10.0 172.31.63.250 0 200 0 200 i *>i192.168.10.0 192.168.10.5 0 300 0 300 i *> 172.31.200.200/16 172.31.63.250 200 0 200 400 i *> 192.168.203.13 0.0.0.0 0 32768 i *> 192.168.250.14 0.0.0.0 0 32768 i *>i192.168.250.15 192.168.250.2 0 100 0 i RTA#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is 172.31.63.250 to network 172.31.200.200 192.168.10.0 is variably subnetted, 2 subnets, 2 masks O E2 192.168.10.0 255.255.255.0 [110/1000] via 172.31.14.250, 00:41:25, Ethernet0 O 192.168.10.4 255.255.255.252 [110/138] via 172.31.14.250, 00:41:25, Ethernet0 C 192.168.203.13 is directly connected, Loopback0 192.168.250.15 is variably subnetted, 3 subnets, 3 masks O 172.16.15.2500 255.255.255.255 [110/75] via 172.31.14.250, 00:41:25, Ethernet0 O 192.168.250.15 255.255.255.252 [110/74] via 172.31.14.250, 00:41:25, Ethernet0 B 192.168.250.15 255.255.255.0 [200/0] via 192.168.250.2, 00:41:25 C 192.168.250.14 is directly connected, Ethernet0 172.31.10.0 is variably subnetted, 2 subnets, 2 masks B 172.31.10.0 255.255.0.0 [20/0] via 172.31.63.250, 00:41:26 C 192.168.213.63 255.255.255.252 is directly connected, Serial0 O*E2 0.0.0.0/0 [110/1000] via 172.31.14.250, Ethernet0/0 B* 172.31.200.200 255.255.0.0 [20/0] via 172.31.63.250, 00:02:38 RTF#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is 192.168.250.2 to network 0.0.0.0 192.168.10.0 is variably subnetted, 2 subnets, 2 masks O E2 192.168.10.0 255.255.255.0 [110/1000] via 192.168.250.2, 00:48:50, Serial1 O 192.168.10.4 255.255.255.252 [110/128] via 192.168.250.2, 01:12:09, Serial1 192.168.203.13 is variably subnetted, 2 subnets, 2 masks O 192.168.203.250 255.255.255.255 [110/11] via 192.168.203.14, 01:12:09, Ethernet0 O E2 192.168.203.13 255.255.255.0 [110/2000] via 192.168.203.14, 01:12:09, Ethernet0 192.168.250.15 is variably subnetted, 2 subnets, 2 masks O 172.16.15.2500 255.255.255.255 [110/65] via 192.168.250.2, 01:12:09, Serial1 C 192.168.250.15 255.255.255.252 is directly connected, Serial1 C 192.168.250.14 is directly connected, Ethernet0 172.31.10.0 is variably subnetted, 2 subnets, 2 masks O E2 172.31.10.0 255.255.0.0 [110/2000] via 192.168.203.14, 00:45:01, Ethernet0 O 192.168.213.63 255.255.255.252 [110/74] via 192.168.203.14, 01:12:11, Ethernet0 O E2 172.31.200.200 255.255.0.0 [110/2000] via 192.168.203.14, 00:03:47, Ethernet0 O*E2 0.0.0.0 0.0.0.0 [110/1000] via 192.168.250.2, 00:03:33, Serial1
注:RTFのルーティングテーブルには、AS300に対してローカルなネットワーク(192.168.10.0など)に到達する方法がRTBを経由していることが示されています。その他の既知のネットワーク(172.31.200.200 など)に到達するルートは、RTA を経由します。ラスト リゾートのゲートウェイは RTB に設定されています。RTB と RTD の間の接続に問題が発生すると、RTA がアドバタイズしたメトリック 2000 のデフォルトが使用されます。
RTB#show ip bgp BGP table version is 14, local router ID is 172.16.15.2500 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *>i172.31.10.0 172.31.63.250 0 200 0 200 i *> 192.168.10.0 192.168.10.5 0 300 0 300 i *>i172.31.200.200/16 172.31.63.250 200 0 200 400 i *>i192.168.203.13 192.168.203.250 0 100 0 i *>i192.168.250.14 192.168.203.250 0 100 0 i *> 192.168.250.15 0.0.0.0 0 32768 i RTB#show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default Gateway of last resort is 192.168.10.5 to network 192.168.10.0 * 192.168.10.0 is variably subnetted, 2 subnets, 2 masks B* 192.168.10.0 255.255.255.0 [20/0] via 192.168.10.5, 00:50:46 C 192.168.10.4 255.255.255.252 is directly connected, Serial1 192.168.203.13 is variably subnetted, 2 subnets, 2 masks O 192.168.203.250 255.255.255.255 [110/75] via 172.16.15.250, 01:20:33, Serial0 O E2 192.168.203.13 255.255.255.0 [110/2000] via 172.16.15.250, 01:15:40, Serial0 192.168.250.15 255.255.255.252 is subnetted, 2 subnets C 172.31.250.8 is directly connected, Loopback1 C 192.168.250.15 is directly connected, Serial0 O 192.168.250.14 [110/74] via 172.16.15.250, 01:20:33, Serial0 172.31.10.0 is variably subnetted, 2 subnets, 2 masks O E2 172.31.10.0 255.255.0.0 [110/2000] via 172.16.15.250, 00:46:55, Serial0 O 192.168.213.63 255.255.255.252 [110/138] via 172.16.15.250, 01:20:34, Serial0 O*E2 0.0.0.0/0 [110/2000] via 172.16.15.250, 00:08:33, Serial0 O E2 172.31.200.200 255.255.0.0 [110/2000] via 172.16.15.250, 00:05:42, Serial0
改定 | 発行日 | コメント |
---|---|---|
4.0 |
08-Jun-2023 |
すべてのPIIが交換され、すべてのイメージが更新されてPII、フォーマットされた記事、および修正済みのCCWアラートが削除されます。再認定 |
3.0 |
17-Mar-2023 |
すべてのPII交換済み、フォーマット済み、および修正済みのCCWアラート。再認定 |
1.0 |
27-Aug-2002 |
初版 |