BGP

【図解】ebgp-multihop/update-sourceのループバックIF接続と等コスト負荷分散

BGP のループバックインタフェース同士によるピア

BGP は他のルーティングプロトコルと同様、BGP 通信を行う IP アドレスがダウンしてしまうと BGP 自体がダウンしてしまいます。例えば Ethernet インタフェースの接触不良が原因でリンク UP/DOWN を繰り返すと BGP 接続が不安定になります。

このようなケースを避けるため、BGP 通信を行う送信元 IP アドレスをループバックアドレスにすることができます

以下に構成例を示します。ループバックアドレス宛のルートは Static や IGP 等で学習している必要があります。

接続元インタフェースをループバック IF に指定するには neighbor コマンドにて update-source キーワードを使います。

RT1(config)# router bgp 12
RT1(config-router)# neighbor 10.2.2.2 remote-as 12
RT1(config-router)# neighbor 10.2.2.2 update-source loopback 0

iBGP (同一 AS 内の BGP ピア) についてはこのコマンドを互いに指定すれば OK ですが、eBGP のときはこれでは足りません。というのも eBGP の場合は TTL が 1 になるため、ループバックアドレスに辿り着くにはホップ数が足りないからです。

そこで neighbor コマンドにて ebgp-multihop キーワードで TTL を増やします。以下の例では RT2 から RT3 への eBGP に対し、TTL を 2 に増やしています。

RT2(config)# router bgp 12
RT2(config-router)# neighbor 10.3.3.3 remote-as 34
RT2(config-router)# neighbor 10.3.3.3 ebgp-multihop 2
RT2(config-router)# neighbor 10.3.3.3 update-source loopback 0

Loopback 接続を利用した等コスト負荷分散

先程の構成例で RT2 と RT3 の間には 2 つの経路が存在しますが、BGP ピアとしては 1 つだけです。なので RT3 にて BGP テーブルを確認すると、1.1.1.0/24 のルートは1つだけです。

RT3# show ip bgp

     Network          Next Hop            Metric LocPrf Weight Path
 *>  1.1.1.0/24       10.2.2.2                               0 12 i
 *>i 4.4.4.0/24       10.4.4.4                 0    100      0 i

一方、ルーティングテーブルを見ると NextHop が 10.2.2.2 となっており、10.2.2.2 は Static Route により 10.1.231.2 と 10.1.232.2 の 2 つの経路が存在しています。

RT3# show ip route

      1.0.0.0/24 is subnetted, 1 subnets
B        1.1.1.0 [20/0] via 10.2.2.2, 00:16:30
      4.0.0.0/24 is subnetted, 1 subnets
B        4.4.4.0 [200/0] via 10.4.4.4, 00:14:19
      10.0.0.0/8 is variably subnetted, 9 subnets, 2 masks
C        10.1.34.0/24 is directly connected, GigabitEthernet0/2
L        10.1.34.3/32 is directly connected, GigabitEthernet0/2
C        10.1.231.0/24 is directly connected, GigabitEthernet0/0
L        10.1.231.3/32 is directly connected, GigabitEthernet0/0
C        10.1.232.0/24 is directly connected, GigabitEthernet0/1
L        10.1.232.3/32 is directly connected, GigabitEthernet0/1
S        10.2.2.2/32 [1/0] via 10.1.232.2
                     [1/0] via 10.1.231.2
C        10.3.3.3/32 is directly connected, Loopback0
S        10.4.4.4/32 [1/0] via 10.1.34.4

このケースでは再帰ルーティングが使われ、1.1.1.0/24 へのルートが負荷分散されます。

動作確認をします。

CEF はデフォルトでは宛先単位で負荷分散されるため、まず RT1 に loopback 2 を作成し、IP として 1.1.2.1/24 を割り当て、BGP で広報します。

RT1(config)# interface loopback 2
RT1(config-if)# ip address 1.1.2.1 255.255.255.0
RT1(config)# router bgp 12
RT1(config-router)# network 1.1.2.0 mask 255.255.255.0

その後、RT4 から 1.1.1.1 と 1.1.2.1 宛に traceroute します。送信元 IP アドレスは BGP で広報されている 4.4.4.4 (Lo 1)を使います。

RT4# traceroute 1.1.1.1 source loop 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 10.1.34.3 12 msec 17 msec 8 msec
  2 10.1.231.2 8 msec 8 msec 18 msec
  3 10.1.12.1 14 msec 12 msec 15 msec
RT4# traceroute 1.1.2.1 source loop 1
Type escape sequence to abort.
Tracing the route to 1.1.2.1
VRF info: (vrf in name/id, vrf out name/id)
  1 10.1.34.3 16 msec 11 msec 8 msec
  2 10.1.232.2 16 msec 13 msec 17 msec
  3 10.1.12.1 12 msec 15 msec 13 msec

2 HOP 目が 10.1.231.2 と 10.1.232.2 で変わっていることが分かります。

コメント

タイトルとURLをコピーしました