コンフェデレーションとは
ASをサブASに分割し、必要なIBGPピアリング数を減らす方法として、コンフェデレーションがあります。
サブAS内では依然としてフルメッシュIBGP、もしくはルートリフレクタが必要です。また、これらのサブAS間では、EBGPのように見えますが、IBGPのように動作します。
設定では、router bgp で指定されるASはサブAS番号を使用します。サブAS番号は通常プライベートASの範囲(64512~65535)ですが、グローバルAS番号でも技術的には問題ありません。
neighborコマンドで設定したリモートASの番号が、自身のサブAS番号もしくはbgp confederation peer で設定されたAS番号である場合、そのAS番号はコンフェデレーション内のサブASであると見なします。
設定
下のような構成を考えます。R2、R3、R5でサブAS235(ルートリフレクタ使用) R6でサブAS6 とし、外部ASに公開するASはAS2356とします。 また、ルータ。R2、R3、R5、R6間は、EIGRPでルート情報を交換し、ループバックアドレス間でBGPネイバーを設定します。
BGP設定は以下です。サブAS間をループバックインタフェースでBGPセッションを張るときは、eBGPと同様にebgp-multihop設定が必要です。 また、コンフェデレーション外部へ公開するASは、bgp confederation identifier で設定します。
R5(config)#router bgp 235 R5(config-router)#bgp confederation identifier 2356 R5(config-router)#neighbor 2.2.2.2 remote-as 235 R5(config-router)#neighbor 2.2.2.2 update-source loopback 0 R5(config-router)#neighbor 2.2.2.2 route-reflector-client R5(config-router)#neighbor 3.3.3.3 remote-as 235 R5(config-router)#neighbor 3.3.3.3 update-source loopback 0 R5(config-router)#neighbor 3.3.3.3 route-reflector-client R2(config)#router bgp 235 R5(config-router)#bgp confederation identifier 2356 R2(config-router)#neighbor 5.5.5.5 remote-as 235 R2(config-router)#neighbor 5.5.5.5 update-source loopback 0 R2(config-router)#neighbor 6.6.6.6 remote-as 6 R2(config-router)#neighbor 6.6.6.6 update-source loopback 0 R2(config-router)#neighbor 6.6.6.6 ebgp-multihop R2(config-router)#bgp confederation peers 6 R2(config-router)#neighbor 192.168.12.1 remote-as 1 R3(config)#router bgp 235 R3(config-router)#bgp confederation identifier 2356 R3(config-router)#neighbor 5.5.5.5 remote-as 235 R3(config-router)#neighbor 5.5.5.5 update-source loopback 0 R3(config-router)#neighbor 6.6.6.6 remote-as 6 R3(config-router)#neighbor 6.6.6.6 update-source loopback 0 R3(config-router)#neighbor 6.6.6.6 ebgp-multihop R3(config-router)#bgp confederation peers 6 R3(config-router)#neighbor 192.168.34.4 remote-as 4 R6(config)#router bgp 6 R6(config-router)#bgp confederation identifier 2356 R6(config-router)#neighbor 2.2.2.2 remote-as 235 R6(config-router)#neighbor 2.2.2.2 update-source loopback 0 R6(config-router)#neighbor 2.2.2.2 ebgp-multihop R6(config-router)#neighbor 3.3.3.3 remote-as 235 R6(config-router)#neighbor 3.3.3.3 update-source loopback 0 R6(config-router)#neighbor 3.3.3.3 ebgp-multihop R6(config-router)#bgp confederation peers 235 R1(config)#router bgp 1 R1(config-router)#neighbor 192.168.12.2 remote-as 2356 R4(config)#router bgp 4 R4(config-router)#neighbor 192.168.34.3 remote-as 2356
動作確認
では、R1のループバック1.1.1.1をAS2356へアドバタイズします。
R1(config)#router bgp 1 R1(config-router)#network 1.1.1.1 mask 255.255.255.255
R2は、R1から1.1.1.1/32を学習します。
R2#sh ip bgp 1.1.1.1
BGP routing table entry for 1.1.1.1/32, version 2
Paths: (1 available, best #1, table default)
Advertised to update-groups:
9 11
Refresh Epoch 1
1
192.168.12.1 from 192.168.12.1 (1.1.1.1)
Origin IGP, metric 0, localpref 100, valid, external, best
rx pathid: 0, tx pathid: 0x0
1.1.1.1/32はベストパスですので、R5とR6にアドバタイズされます。
R5#sh ip bgp 1.1.1.1 BGP routing table entry for 1.1.1.1/32, version 6 Paths: (1 available, best #1, table default) Advertised to update-groups: 2 Refresh Epoch 1 1, (Received from a RR-client) 192.168.12.1 (metric 307200) from 2.2.2.2 (2.2.2.2) Origin IGP, metric 0, localpref 100, valid, confed-internal, best rx pathid: 0, tx pathid: 0x0
R5では、1.1.1.1/32に対して、新しい属性 confed-internal が付けられています。これは、同じサブASから学習したルートであることを意味します。
R6#sh ip bgp 1.1.1.1 BGP routing table entry for 1.1.1.1/32, version 8 Paths: (2 available, best #2, table default) Advertised to update-groups: 1 (235) 1 192.168.12.1 (metric 307200) from 3.3.3.3 (3.3.3.3) Origin IGP, metric 0, localpref 100, valid, confed-external rx pathid: 0, tx pathid: 0 (235) 1 192.168.12.1 (metric 307200) from 2.2.2.2 (2.2.2.2) Origin IGP, metric 0, localpref 100, valid, confed-external, best rx pathid: 0, tx pathid: 0x0
R6では、1.1.1.1/32に対して、confed-external が付けられています。これは、コンフェデレーション内の違うサブASから学習したルートであることを意味します。 注意すべきは、eBGPのような動作をしていますが、Nexthop 192.168.12.1 が変更されないことです。
また、AS_CONFED_SETと呼ばれる新しいBGP属性を使用し、サブASをリストの先頭に( )で追加します。AS-PATHは (235) 1 です。 これは、このルートが別のサブAS(235)から来たことを意味します。R2がR6に更新を送信したときに、追加されます。
R3のBGPテーブル 1.1.1.1/32 を確認します。
R3#sh ip bgp 1.1.1.1 BGP routing table entry for 1.1.1.1/32, version 6 Paths: (1 available, best #1, table default) Advertised to update-groups: 2 3 Refresh Epoch 1 1 192.168.12.1 (metric 307200) from 5.5.5.5 (5.5.5.5) Origin IGP, metric 0, localpref 100, valid, confed-internal, best Originator: 2.2.2.2, Cluster list: 5.5.5.5 rx pathid: 0, tx pathid: 0x0
R3は1.1.1.1/24をベストパスとして認識していますので、R4(AS4)にアドバタイズします。その際、AS_CONFED_SETでサブAS番号がリスト化されていれば、そのリストは削除され、公開AS(AS2356)に変更されます。
R4#sh ip bgp 1.1.1.1 BGP routing table entry for 1.1.1.1/32, version 6 Paths: (1 available, best #1, table default) Not advertised to any peer Refresh Epoch 1 2356 1 192.168.34.3 from 192.168.34.3 (3.3.3.3) Origin IGP, localpref 100, valid, external, best rx pathid: 0, tx pathid: 0x0
補足
R6のBGPテーブル1.1.1.1/32を確認してみます。
R6#sh ip bgp 1.1.1.1 BGP routing table entry for 1.1.1.1/32, version 8 Paths: (2 available, best #2, table default) Advertised to update-groups: 1 Refresh Epoch 1 (235) 1 192.168.12.1 (metric 307200) from 3.3.3.3 (3.3.3.3) Origin IGP, metric 0, localpref 100, valid, confed-external rx pathid: 0, tx pathid: 0 Refresh Epoch 1 (235) 1 192.168.12.1 (metric 307200) from 2.2.2.2 (2.2.2.2) Origin IGP, metric 0, localpref 100, valid, confed-external, best rx pathid: 0, tx pathid: 0x0
R6は、1.1.1.1/32のルートをルータID 2.2.2.2 と3.3.3.3の二箇所からアドバタイズされており、2.2.2.2 からのルートをベストパスとしています。これは、ベストパス選択アルゴリズムより、ルータIDが3.3.3.3より2.2.2.2の方が小さいためです。
R6からR1(1.1.1.1)には、R2を経由して、接続します。
R6#traceroute 1.1.1.1
Type escape sequence to abort.
Tracing the route to 1.1.1.1
VRF info: (vrf in name/id, vrf out name/id)
1 192.168.26.2 1 msec 1 msec 1 msec
2 192.168.12.1 2 msec 1 msec 2 msec
ここで、R2のルータIDを222.222.222.222に変更して、ベストパスの選択結果を確認します。
R2(config)#router bgp 235 R2(config-router)#bgp router-id 222.222.222.222
これで、R6上で1.1.1.1/32は、ルータID 3.3.3.3からのルートがベストパスになっています。
R6#sh ip bgp 1.1.1.1 BGP routing table entry for 1.1.1.1/32, version 12 Paths: (2 available, best #1, table default) Advertised to update-groups: 1 Refresh Epoch 1 (235) 1 192.168.12.1 (metric 307200) from 3.3.3.3 (3.3.3.3) Origin IGP, metric 0, localpref 100, valid, confed-external, best rx pathid: 0, tx pathid: 0x0 Refresh Epoch 1 (235) 1 192.168.12.1 (metric 307200) from 2.2.2.2 (222.222.222.222) Origin IGP, metric 0, localpref 100, valid, confed-external rx pathid: 0, tx pathid: 0
再度、R6からR1(1.1.1.1)への接続を確認すると、変更前と変わらずR2経由となります。
R6#traceroute 1.1.1.1
Type escape sequence to abort.
Tracing the route to 1.1.1.1
VRF info: (vrf in name/id, vrf out name/id)
1 192.168.26.2 2 msec 0 msec 1 msec
2 192.168.12.1 2 msec 1 msec 2 msec
これは、ネクストホップ(192.168.12.1)がルータID変更前後で変わらないためです。
ネクストホップ(192.168.12.1)に対して、出力インタフェースを決定し、1.1.1.1に接続します。BGPで学習したルータと通信経路は異なることはよくあります。通信経路は、BGPで学習した経路のネクストホップに対してのIGPの経路に依存します。
その他 BGP関連記事は >> ルーティングプロトコル(BGP)まとめ << より参照できます。
コメント