目次
概要
EBGPネイバーを確立するための設定について、設定ミスの切り分けと修正を行います。
ネットワーク構成
下記のネットワーク構成で、R1とR2間でEBGPネイバーを確立しようとしています。
設定の概要
R1およびR2で、次のようにEBGPネイバーをお互いのLoopback0のIPアドレスで確立する設定を行いました。
R1
interface Loopback0 ip address 1.1.1.1 255.255.255.255 ! interface FastEthernet0/0 ip address 192.168.1.1 255.255.255.0 ! interface Serial1/0 ip address 10.1.1.1 255.255.255.0 ! interface Serial1/1 ip address 10.2.2.1 255.255.255.0 ! router bgp 1 no synchronization bgp log-neighbor-changes neighbor 2.2.2.2 remote-as 2 no auto-summary
R2
interface Loopback0 ip address 2.2.2.2 255.255.255.255 ! interface FastEthernet0/0 ip address 192.168.2.2 255.255.255.0 ! interface Serial1/0 ip address 10.1.1.2 255.255.255.0 ! interface Serial1/1 ip address 10.2.2.2 255.255.255.0 ! router bgp 2 no synchronization bgp log-neighbor-changes neighbor 1.1.1.1 remote-as 1 no auto-summary
上記のようにEBGPネイバーの設定を行ったのですが、R1とR2間のEBGPネイバーはいつまで経っても確立されません。R1でshow ip bgp summaryを見ると、ずっとIdle状態のままです。
R1 show ip bgp summary
R1#show ip bgp summary BGP router identifier 1.1.1.1, local AS number 1 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 2.2.2.2 4 2 0 0 0 0 0 never Idle
問題
- EBGPネイバーがIdle状態でとどまってしまう原因はなんですか?
- 解決するためにはどのように設定をすればよいですか?
解答
EBGPネイバーがIdle状態でとどまってしまう原因はなんですか?
- お互いのLoopback0のIPアドレスに対する接続性がない
- BGPメッセージの送信元IPアドレスをLoopback0に変更していない
- BGPメッセージのTTL値が1のままになっている
解決するためにはどのように設定すればよいですか?
R1
ip route 2.2.2.2 255.255.255.255 10.1.1.2 ip route 2.2.2.2 255.255.255.255 10.2.2.2 router bgp 1 neighbor 2.2.2.2 update-source loopback0 neighbor 2.2.2.2 ebgp-multihop
R2
ip route 1.1.1.1 255.255.255.255 10.1.1.1 ip route 1.1.1.1 255.255.255.255 10.2.2.1 router bgp 2 neighbor 1.1.1.1 update-source loopback0 neighbor 1.1.1.1 ebgp-multihop
解説
EBGPネイバーは、直接接続のIPアドレスを利用して確立することが一般的です。直接接続のIPアドレスを利用していれば、あまり難しいことは考えなくても大丈夫です。普通にneighbor remote-asコマンドでお互いの直接接続のIPアドレスを指定すれば、問題なくネイバーを確立できます。ところが、直接接続ではないIPアドレスでEBGPネイバーを確立するときには、単にneighbor remote-asコマンドだけ設定してもネイバーがEstablished状態になりません。
直接接続ではないIPアドレスでEBGPネイバーを確立するときには、次の3点に注意してください。
- 相手のIPアドレスへルーティング可能であること
- 送信元IPアドレスを相手が指定したネイバーのIPアドレスと一致させること
- TTLを増やすこと
以降では、この3点についてどのように設定すればいいかを見ていきます。
1.相手のIPアドレスへルーティング可能であること
まず、相手のIPアドレスへルーティングできなければ話になりません。BGPでは、指定したネイバーのIPアドレスに対してまずTCPコネクションを確立します。ネイバーのIPアドレスへルーティングできなければTCPコネクションの確立すらできなくなってしまいます。AS間ではOSPFなどのルーティングプロトコルを利用することは、あまりないのでスタティックルートの設定を行います。R1、R2が2本のシリアルリンクで接続されているので、お互いのLoopback0へのスタティックルートを2つずつ設定して、ロードバランスできるようにします。
R1 スタティックルートの設定
ip route 2.2.2.2 255.255.255.255 10.1.1.2 ip route 2.2.2.2 255.255.255.255 10.2.2.2
R2 スタティックルートの設定
ip route 1.1.1.1 255.255.255.255 10.1.1.1 ip route 1.1.1.1 255.255.255.255 10.2.2.1
スタティックルートを設定したあとのR1、R2のルーティングテーブルは次のようになります。
R1 show ip route
R1#show ip route ~省略~ Gateway of last resort is not set 1.0.0.0/32 is subnetted, 1 subnets C 1.1.1.1 is directly connected, Loopback0 2.0.0.0/32 is subnetted, 1 subnets S 2.2.2.2 [1/0] via 10.2.2.2 [1/0] via 10.1.1.2 10.0.0.0/24 is subnetted, 2 subnets C 10.2.2.0 is directly connected, Serial1/1 C 10.1.1.0 is directly connected, Serial1/0 C 192.168.1.0/24 is directly connected, FastEthernet0/0
R2 show ip route
R2#show ip route ~省略~ Gateway of last resort is not set 1.0.0.0/32 is subnetted, 1 subnets S 1.1.1.1 [1/0] via 10.2.2.1 [1/0] via 10.1.1.1 2.0.0.0/32 is subnetted, 1 subnets C 2.2.2.2 is directly connected, Loopback0 10.0.0.0/24 is subnetted, 2 subnets C 10.2.2.0 is directly connected, Serial1/1 C 10.1.1.0 is directly connected, Serial1/0 C 192.168.2.0/24 is directly connected, FastEthernet0/0
2.送信元IPアドレスを相手が指定したネイバーのIPアドレスと一致させること
BGPネイバーを確立するには、受信したBGPメッセージの送信元IPアドレスが自身で設定しているネイバーのIPアドレスと一致しなければいけません。お互いが正しくネイバーとして相手を認識していることを確認しています。デフォルトでは、BGPメッセージの送信元IPアドレスはメッセージを出力するインタフェースのIPアドレスとなります。すると、Loopback0のIPアドレスを利用してネイバーを確立しようとしても、送信元IPアドレスの不一致でネイバーの確立ができません。
このようなとき、neighbor update-sourceコマンドを使います。ネイバーに送信するBGPメッセージの送信元IPアドレスとして、指定したインタフェースのIPアドレスを利用します。
次のようにR1とR2で、それぞれが送信するBGPパケットの送信元IPアドレスをLoopback0のIPアドレスにします。
R1 BGPメッセージの送信元IPアドレスをLoopback0に
router bgp 1 neighbor 2.2.2.2 update-source loopback0
R2 BGPメッセージの送信元IPアドレスをLoopback0に
router bgp 2 neighbor 1.1.1.1 update-source loopback0
なお、BGPメッセージの送信元IPアドレスの不一致でネイバーを確立できないとき、ネイバーのステータスはずっと「Active」状態のままになります。
3.TTLを増やすこと
ここまでの1.および2.については、EBGPネイバーもIBGPネイバーも共通の注意点です。EBGPネイバーでもIBGPネイバーでも直接接続ではないIPアドレスを利用するときに、1.および2.について注意しなければいけません。3.のTTLを増やすのは、EBGPネイバーを直接接続ではないIPアドレスで確立するときに考慮しなければいけない注意点です。IBGPネイバーの場合は関係ありません。
EBGPネイバーは直接接続のIPアドレスを利用して確立することを前提としています。そのため、EBGPネイバーへ送信するBGPメッセージのIPヘッダのTTLは1となっています。TTLが1では直接接続ではないインタフェースに到達できません。そのため、直接接続のIPアドレスのEBGPネイバーへBGPメッセージを送信するためには、IPヘッダのTTLを増やさなければいけません。そのためのコマンドがneighbor ebgp-multihopコマンドです。R1とR2でそれぞれ次のようにneighbor ebgp-multihopコマンドを設定します。
R1 2.2.2.2宛てのBGPメッセージのTTLを増やす
router bgp 1 neighbor 2.2.2.2 ebgp-multihop
R2 1.1.1.1宛てのBGPメッセージのTTLを増やす
router bgp 2 neighbor 1.1.1.1 ebgp-multihop
なお、IBGPネイバーの場合は直接接続ではないIPアドレスを利用することが前提です。IBGPネイバーへ送信するBGPメッセージのTTLは255です。また、Ciscoルータでは直接接続のIPアドレスのEBGPネイバーで上記のneighbor ebgp-multihopコマンドが設定されていなければ、そもそもBGPメッセージを送信しなくなります。その結果、ネイバーのステータスはずっと「Idle」のままになってしまいます。
1.~3.までの設定を追加すると、R1とR2間でのEBGPネイバーがEstablished状態になります。
R1 BGPネイバーの確認 show ip bgp summary
R1#sh ip bgp summary BGP router identifier 1.1.1.1, local AS number 1 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 2.2.2.2 4 2 4 4 1 0 0 00:00:07 0
R2 BGPネイバーの確認 show ip bgp summary
R2#show ip bgp summary BGP router identifier 2.2.2.2, local AS number 2 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 1.1.1.1 4 1 4 4 1 0 0 00:00:52 0
BGPの仕組み
- BGPの概要 ~AS間でルート情報を交換~
- BGPの動作
- BGPの基本設定と確認コマンド
- BGPピアグループ(Peer Group) ~ネイバーの設定をまとめよう~
- BGPネイバーの状態
- BGPコンフェデレーションの設定
- BGPコンフェデレーションの設定例
- BGPネイバー認証
- BGP Well Known Mandatory アトリビュート -ORIGIN/AS_PATH/NEXT_HOP-
- 図解!BGPベストパス選択アルゴリズム
- BGP 基本的な設定についての演習[Cisco]
- BGPの基本的な設定についての演習 ~トラブルシュート~
- BGP KEEPALIVEタイマ/ホールドタイムの設定
- BGPルート 最小送信間隔の設定
- BGPルートダンプニング
- マルチホーム – インターネット接続の冗長化 –
- マルチホームAS BGPルートフィルタのポイント
- マルチホームAS ベストパス選択のポイント
- マルチホームAS IGPとBGPの連携のポイント
- マルチホームAS BGPの設定例
- IP-VPNでのBGPの利用 設定例
- BGPルートフィルタの種類
- BGPルートフィルタ -ディストリビュートリスト-
- BGPルートフィルタ -ディストリビュートリスト設定例-
- BGPルートフィルタ -プレフィクスリスト-
- BGPルートフィルタ -プレフィクスリスト設定例-
- BGPルートフィルタ -フィルタリスト(AS_PATH ACL)-
- BGPルートフィルタ -フィルタリスト(AS_PATH ACL)設定例-
- BGPルートフィルタ -ルートマップ(route-map)-
- BGPルートフィルタ -ルートマップ(route-map)設定例-
- BGP neighbor allowas-inコマンド
- BGP neighbor as-overrideコマンド
- BGPルート RIB Failure
- BGPルート アドミニストレイティブディスタンスの制御
- BGPルートの負荷分散
- BGPルート 条件付き生成
- BGPルート 条件付きアドバタイズ
- BGP ルート集約 自動集約
- BGPルート集約 networkコマンドによる集約
- BGPルート集約 networkコマンドによる集約 設定例
- BGP ルート集約 aggregate-addressコマンドによる集約
- aggregate-addressコマンドのオプション summary-only
- aggregate-addressコマンドのオプション attribute-map
- aggregate-addressコマンドのオプション as-set
- aggregate-addressコマンドのオプション advertise-map
- aggregate-addressコマンド as-set/attribute-map/advertise-map 設定例
- BGP選択型集約の概要
- BGP選択型集約 suppress-map
- BGP選択型集約 unsuppress-map
- BGP 選択型集約 suppress-map/unsuppress-map 設定例
- BGP local-as ~ネイバーに他のASのように見せる~
- BGP neighbor remove-private-ASコマンド
- bgp fast external-fallover
- BGP プレフィクス数の制限
- BGP COMMUNITYアトリビュートの使い方
- BGP Well-known COMMUNITYのルートフィルタ設定例
- BGP プライベートCOMMUNITYによるルート制御の設定例
- [演習]BGP応用 Part1:BGP基本設定
- [演習]BGP応用 Part2:ルート集約
- [演習]BGP応用 Part3:ポリシーベースルーティング
- [演習]BGP応用 Part4:トラブルシューティング
- BGP 設定ミスの切り分けと修正 Part1
- BGP 設定ミスの切り分けと修正 Part2
- BGP 設定ミスの切り分けと修正 Part3
- BGP 設定ミスの切り分けと修正 Part4
- BGP 設定ミスの切り分けと修正 Part5
- BGP 設定ミスの切り分けと修正 Part6
- BGP 設定ミスの切り分けと修正 Part7
- IPv6 BGPの設定例 Part1
- IPv6 BGPの設定例 Part2
- 2021年10月4日 Facebookに何が起こったか?
- IPv4 BGPネイバーでのIPv6プレフィックスの交換