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ピアにルートを再配布させることで、ピアリング数を削減します。
- コンフェデレーション: ASを複数の小さなサブASに分割し、それらを管理することで、ピアリングの複雑さを軽減します。
まとめ
iBGPフルメッシュの設定は、AS内でルーティングループを防ぎつつ、完全なルート情報の交換を実現するために必要な手順です。ただし、ネットワークのスケールが大きくなるにつれて管理が複雑になるため、ルートリフレクタやコンフェデレーションのような手法を活用することで、効率的なルーティングを実現できます。
その他 BGP関連記事は >> ルーティングプロトコル(BGP)まとめ << より参照できます。
コメント