【図解/BGP】aggregate-addressによるルート集約 ~ASSETやsummary-onlyの使い方,atomic_aggregateについて~ | SEの道標
BGP

【図解/BGP】aggregate-addressによるルート集約 ~ASSETやsummary-onlyの使い方,atomic_aggregateについて~

aggregate-address コマンドと atomic_aggrepate 属性

aggregate-address コマンドによってルート集約を行うことができます。

以下の構成図で 10.0.4.0/23 と 10.0.6.0/24 のルートを 10.0.4.0/22 に集約します。

RT3 で以下のように設定します。

RT3(config)# router bgp 30
RT3(config-router)# aggregate-address 10.0.4.0 255.255.252.0

これにより RT4 で通常ルート (10.0.4.0/23, 10.0.6.0/24) と共に集約ルート (10.0.4.0/22) も表示されます。

RT4# sh ip bgp

     Network        Next Hop   Metric  LocPrf  Weight  Path
 *>  10.0.4.0/23    10.1.34.3                       0  30 10 i
 *>  10.0.4.0/22    10.1.34.3       0               0  30 i
 *>  10.0.6.0/24    10.1.34.3                       0  30 20 i

RT3 側ではループ回避のために Null 0 ルートが作成されます。

RT3# sh ip route

      10.0.0.0/8 is variably subnetted, 9 subnets, 4 masks
B        10.0.4.0/22 [200/0], 00:00:37, Null0
B        10.0.4.0/23 [20/0] via 10.1.13.1, 00:00:49
B        10.0.6.0/24 [20/0] via 10.1.23.2, 00:00:49

Null0、ループ回避の考え方については以下を参照下さい。

【図解】ルーティング・ループの確認方法,原因と対策,回避設計~null0インタフェースの活用~
ルーティング・ループの確認方法 ルーティング・ループとは、IP パケットが、TT...

さて、RT4 の BGP テーブルから分かる通り、集約されたルートには、その元ネタとなったルートの AS_PATH 情報が欠けています

具体的には、10.0.4.0/23 には AS_PATH=10、10.0.6.0/24 には AS_PATH=20 が付与されていましたが、集約後はそれらが無く、aggregate-address コマンドを設定した RT3 の AS_PATH=30 のみがセットされています。

また、集約ルートには情報が欠けたことを示す "ATOMIC_AGGREGATE" 属性が付与されます。(以下 UPDATE パケットのパケットキャプチャ)

蛇足ですが MED (MULTI_EXIT_DISC) 属性も付与されています。道理で BGP テーブルに metric 0 が表示されるわけです。

これではルート情報のループが発生する可能性があります。これを回避するためには as-set オプションを使います。

aggregate-address と ASSET オプション

先程の図例において、RT3 にて以下のように設定します。

RT3(config)# router bgp 30
RT3(config-router)# aggregate-address 10.0.4.0 255.255.252.0 as-set

これを設定することにより、AS_PATH や COMMUNITIES 属性等の情報が欠けることなく集約ルートに引き継がれます。

ただし、AS_PATH の順番情報は欠けてしまいます。

AS_PATH 属性は { path segment type , path segment length , path segment value} というフォーマットになっており、通常は "path segment type" は AS_SEQUENCE を示す "2" がセットされます。ですがルート集約により順番 (Sequence) 情報が欠けた場合は "path segment type" は AS_SET を示す "1" がセットされます。

順番情報が欠けたものについては BGP テーブル上では中括弧 {} で囲まれます。

RT4# sh ip bgp

     Network        Next Hop   Metric  LocPrf  Weight  Path
 *>  10.0.4.0/23    10.1.34.3                       0  30 10 i
 *>  10.0.4.0/22    10.1.34.3       0               0  30 {10,20} i
 *>  10.0.6.0/24    10.1.34.3                       0  30 20 i

パケットキャプチャを確認すると、ATOMIC_AGGREGATE 属性が付与されていません。情報が欠けていないからです。

参考までに、aggregate-address 設定で、as-set を付けなかった場合と付けた場合のパケットキャプチャを以下からダウンロードできます。

[as-set 無し]  https://milestone-of-se.nesuke.com/pcap/bgp-aggregate.pcapng

[as-set 有り]  https://milestone-of-se.nesuke.com/pcap/bgp-aggregate-asset.pcapng

ところで、集約ルートの元ネタ (10.0.4.0/23 とか 10.0.6.0/24) は消したいよ、というときは summary-only オプションを使います。

aggregate-address と summary-only オプション

先程の図例において、RT3 にて以下のように設定します。

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

これにより、10.0.4.0/23 と 10.0.6.0/24 は表示されなくなります。

RT4# sh ip bgp

     Network        Next Hop   Metric  LocPrf  Weight  Path
 *>  10.0.4.0/22    10.1.34.3       0               0  30 {10,20} i

as-set が付いていない場合は {10,20} が無い状態で表示されます。

ところで、aggregate-address は設定したら clear ip bgp * soft は不要です (なぜなら属性が変わる訳ではなく、アドバタイズされるルート自体が変わるから) が、summary-only を付ける場合、デフォルトではタイムラグがあります。

これは bgp aggregate-timer のデフォルト設定が 30 秒になっているためです。急なルート変更によるリソース (CPU/Memory) 消費を抑えるために『aggregate-timer expired となったら集約ルートを広報し、元ネタルートを withdraw (削除) する』といった挙動になります。

以下のコマンドで設定変更できます。0 は aggregate-timer の無効化になります。

RT3(config-router)# bgp aggregate-timer 0

コメント

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