【図解/BGP】suppress-mapとunsuppress-mapの使い方 | SEの道標
BGP

【図解/BGP】suppress-mapとunsuppress-mapの使い方

suppress-map による集約前ルートの広報抑制

BGP で大量のルートを受け取るのは望ましくはありません。ルート集約というのが解決策の 1 つです。

集約前ルートを全て広報したくない場合は summary-only を使うことで実現できます。ですが集約前ルートを一部だけ広報したくない場合は suppress-map により実現することができます。

例えば以下のケースを考えます。

RT3 で 10.0.4.0/23 と 10.0.6.0/24 をルート集約し、10.0.4.0/22 を生成します。その際、as-set により AS_PATH 属性を引き継ぐこととします。

RT3(config-router)# aggregate-address 10.0.4.0 255.255.252.0 as-set summary-only

as-set を使った場合、集約ルート 10.0.4.0/22 には集約元の AS_PATH (このケースでは AS=10 と AS=20) が残るため、RT1 と RT2 は集約ルートを受け入れません。(ループ回避のため BGP テーブルに載せません)

また、summary-only により集約前ルートも抑制されてしまうため、RT1 には 10.0.6.0/24 も来ません。そのため、RT1 には 10.0.6.0/24 へのルートが完全にもらえない状態となります。

そこで、summary-only を使うのではなく、suppress-map で 10.0.4.0/23 だけを抑制してみます。

RT3(config)# ip prefix-list 1 permit 10.0.4.0/23
RT3(config)# route-map SMAP
RT3(config-route-map)# match ip address prefix-list 1
RT3(config-route-map)# exit
RT3(config)# router bgp 30
RT3(config-router)# aggregate-address 10.0.4.0 255.255.252.0 as-set suppress-map SMAP

これで RT1 には 10.0.6.0/24 のルートを受け取れるようになりました。

RT3 の BGP テーブルを比較してみます。summary-only の場合は 10.0.4.0/23 と 10.0.6.0/24 の両方で s (suppressed) が表示されていましたが、suppress-map では 10.0.4.0/23 だけが s (suppressed) 表示となります。

[summary-only]

RT3# do sh ip bgp

     Network       Next Hop    Metric  LocPrf  Weight  Path
 s   10.0.4.0/23   10.1.35.5                        0  50 40 10 i
 s>                10.1.13.1        0               0  10 i
 *>  10.0.4.0/22   0.0.0.0                100   32768  {10,20} i
 s>  10.0.6.0/24   10.1.23.2        0               0  20 i

[suppress-map]

RT3# do sh ip bgp

     Network       Next Hop    Metric  LocPrf  Weight  Path
 s   10.0.4.0/23   10.1.35.5                        0  50 40 10 i
 s>                10.1.13.1        0               0  10 i
 *>  10.0.4.0/22   0.0.0.0                100   32768  {10,20} i
 *>  10.0.6.0/24   10.1.23.2        0               0  20 i

suppress-map は aggregate-address コマンド内で指定するため、全ネイバーに反映されます。

unsuppress-map による抑制解除

ところで先程の suppress-map の構成例でもまだ問題が残っています。

RT2 も 10.0.4.0/22 と 10.0.4.0/23 が受け取れないため、孤立してしまっていることです。そこで、RT2 に限定して 10.0.4.0/22 を送信する (つまり抑制を解除する) ことのできる、unsuppress-map を使います。

RT3(config)# ip prefix-list 1 permit 10.0.4.0/23
RT3(config)# route-map SMAP
RT3(config-route-map)# match ip address prefix-list 1
RT3(config-route-map)# exit
RT3(config)# router bgp 30
RT3(config-router)# aggregate-address 10.0.4.0 255.255.252.0 as-set suppress-map SMAP
RT3(config-router)# neighbor 10.1.23.2 unsuppress-map SMAP

unsuppress-map は suppress-map と異なり、ネイバー単位で設定ができます。また、RT3 の BGP テーブル (show ip bgp) の状態は変わりません (unsuppress-map で指定した抑制ルートも変わらず s の表記のまま)。

summary-only と unsuppress-map

また、unsuppress-map は summary-only により抑制されたルートにも解除効果があります。また、別の利用例として、負荷分散への使い方もあります。

以下の例では、10.0.6.0/24 への抑制を解除し、ロンゲストマッチを使って下側のルート (10.1.122.0/24 セグメント) を優先的に使うように仕向けています。

RT1(config)# ip prefix-list 1 permit 10.0.6.0/24
RT1(config)# route-map UNSMAP
RT1(config-route-map)# match ip address prefix-list 1
RT1(config-route-map)# exit
RT1(config)# router bgp 10
RT1(config-router)# aggregate-address 10.0.4.0 255.255.252.0 as-set summary-only
RT1(config-router)# neighbor 10.1.122.2 unsuppress-map UNSMAP

RT2 の BGP テーブルを確認します。

RT2# do sh ip bgp

     Network        Next Hop     Metric  LocPrf  Weight  Path
 *   10.0.4.0/22    10.1.122.1        0               0  10 i
 *>                 10.1.121.1        0               0  10 i
 *>  10.0.6.0/24    10.1.122.1        0               0  10 i

10.0.4.0/22 の NextHop が 10.1.121.1 で、10.0.6.0/24 の NextHop が 10.1.122.1 となっていることが確認できます。

コメント

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