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、ループ回避の考え方については以下を参照下さい。
さて、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 の順番情報は欠けてしまいます。
順番情報が欠けたものについては 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
コメント