CiscoルーターでiBGPフルメッシュを設定する方法

iBGP(Internal Border Gateway Protocol)環境では、ピア同士がフルメッシュ接続を確立する必要があります。これは、iBGPが他のiBGPネイバーから学習したルートを再度他のiBGPネイバーにアドバタイズしないという特性があるためです。この制限はルーティングループを防ぐために設計されていますが、AS(Autonomous System)内の完全なルート情報交換を行うためには、すべてのルーターが直接ピアリングする必要があります。

スポンサーリンク

iBGPフルメッシュの設定例

ここでは、3台のルーター(R1、R2、R3)でiBGPフルメッシュを構成する手順を説明します。これらのルーターはすべてAS 123内にあり、同一AS内での設定を行います。

R1、R2、R3間のiBGPピアリング設定

R1(config)#router bgp 123
R1(config-router)#neighbor 192.168.12.2 remote-as 123
R2(config)#router bgp 123
R2(config-router)#neighbor 192.168.12.1 remote-as 123
R2(config-router)#neighbor 192.168.23.3 remote-as 123
R3(config)#router bgp 123
R3(config-router)#neighbor 192.168.23.2 remote-as 123

R1でのループバックアドレスの広告

R1でループバックアドレス1.1.1.1/32を広告します。

R1(config)#router bgp 123
R1(config-router)#network 1.1.1.1 mask 255.255.255.255

R2でのルート確認

R2で以下のコマンドを実行し、R1からのルートが学習されているか確認します。

R2#sh ip bgp
BGP table version is 2, local router ID is 2.2.2.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, 
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, 
              x best-external, a additional-path, c RIB-compressed, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>i 1.1.1.1/32       192.168.12.1             0    100      0 I

R3でのルート確認

R3でも同様に確認しますが、R2からのルートは学習されません。これにより、iBGPではフルメッシュが必要であることが確認できます。

R3#sh ip bgp 
R3#
スポンサーリンク

IGPを利用したR1とR3の接続

R1とR3間で直接iBGPピアリングを行うためには、まずR1とR3が相互に到達可能である必要があります。IGP(内部ゲートウェイプロトコル。今回はEIGRPを使用)を有効にして接続性を確保します。

R1~R3でのEIGRP設定

R1からR3に接続できる必要があるので、R1〜R3間でIGP(EIGRP)を有効にします。

R1〜R3 :
R1(config)#router eigrp 123
R1(config-router)#network 192.168.0.0 0.0.255.255

IGP接続性の確認

R1からR3にpingを実行し、接続性を確認します。

R1#sh ip route eigrp 
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override

Gateway of last resort is not set

D     192.168.23.0/24 [90/307200] via 192.168.12.2, 00:00:59, FastEthernet0/0.12

R1#ping 192.168.23.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.23.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/2 ms
R3#sh ip route eigrp 
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override

Gateway of last resort is not set

D     192.168.12.0/24 [90/307200] via 192.168.23.2, 00:01:46, FastEthernet0/0.23

R3#ping 192.168.12.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/2 ms
R3#
スポンサーリンク

R1とR3のiBGPピアリング設定

IGP接続を確立した後、R1とR3間で直接iBGPピアリングを設定します。

R1(config)#router bgp 123
R1(config-router)#neighbor 192.168.23.3 remote-as 123
R3(config)#router bgp 123
R3(config-router)#neighbor 192.168.12.1 remote-as 123

*May  6 12:16:31.512: %BGP-5-ADJCHANGE: neighbor 192.168.12.1 Up 

R3で再度BGPテーブルを確認すると、R1からの1.1.1.1/32が学習されていることがわかります。

R3#sh ip bgp
BGP table version is 2, local router ID is 3.3.3.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, 
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, 
              x best-external, a additional-path, c RIB-compressed, 
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>i 1.1.1.1/32       192.168.12.1             0    100      0 i
スポンサーリンク

iBGPでフルメッシュが必要な理由

eBGPではAS番号を用いたループ検出が可能ですが、iBGPでは同一AS内の通信であるため、AS番号によるループ検出は行われません。その代わりに、学習したルートを他のiBGPネイバーに再配布しないことでループを防止します。このため、AS内のすべてのルーターが直接ピアリングする必要があり、ネットワークの規模が増えるとピアリング数が急増します。

たとえば、N台のルーターがある場合、必要なiBGPピアリングの数はN(N-1)/2になります。10台のルーターがある場合、45のピアリングが必要です。これにより、拡張性の問題が生じるため、次に説明するルートリフレクタやコンフェデレーションが利用されます。

スケーラビリティ対策: ルートリフレクタとコンフェデレーション

ネットワークが大規模になると、フルメッシュの維持は困難になります。以下の2つの技術がスケーラビリティ向上のために用いられます。

  • ルートリフレクタ: 特定のルーターを指定し、他のiBGPピアにルートを再配布させることで、ピアリング数を削減します。
  >> 参考記事 :Cisco BGPルートリフレクタの設定と動作検証:スケーラブルなiBGP構成を理解しよう 
  • コンフェデレーション: ASを複数の小さなサブASに分割し、それらを管理することで、ピアリングの複雑さを軽減します。
  >> 参考記事 :BGPコンフェデレーション設定と動作確認 – Ciscoルータでの手順解説 
スポンサーリンク

まとめ

iBGPフルメッシュの設定は、AS内でルーティングループを防ぎつつ、完全なルート情報の交換を実現するために必要な手順です。ただし、ネットワークのスケールが大きくなるにつれて管理が複雑になるため、ルートリフレクタやコンフェデレーションのような手法を活用することで、効率的なルーティングを実現できます。

その他 BGP関連記事は   >>  ルーティングプロトコル(BGP)まとめ << より参照できます。

コメント