シナプス技術者ブログ

シナプスの技術者公式ブログ。インターネットで、鹿児島の毎日を笑顔にします。

JuniperのBGPピア設定をグループにまとめてみました

シナプスの技術部ネットワーク課の福山と申します。

IX上の各AS向けBGPピア設定は共通する部分がいくつかあります。
シナプスではこれまでピアしていただいている各AS毎に、ほとんど同じ設定を入れて来ましたが、共通する部分を定義した上で、その定義を各AS毎に継承させることが出来ないかと考え検証してみました。

検証環境

Juniper MX204
Junos: 21.4R3-S2.3

通常のBGPピア設定

今回IX-A上で、AS64501とAS64502とBGPピアすることを前提とします。

AS64501向け設定

set protocols bgp group AS64501-IX-A type external
set protocols bgp group AS64501-IX-A description AS64501
set protocols bgp group AS64501-IX-A import IX-A-IN
set protocols bgp group AS64501-IX-A family inet unicast prefix-limit maximum 1000
set protocols bgp group AS64501-IX-A family inet unicast prefix-limit teardown 80
set protocols bgp group AS64501-IX-A family inet unicast prefix-limit teardown idle-timeout forever
set protocols bgp group AS64501-IX-A export IX-A-OUT
set protocols bgp group AS64501-IX-A remove-private
set protocols bgp group AS64501-IX-A peer-as 64501
set protocols bgp group AS64501-IX-A neighbor 192.0.2.1

AS64502向け設定

set protocols bgp group AS64502-IX-A type external
set protocols bgp group AS64502-IX-A description AS64502
set protocols bgp group AS64502-IX-A import IX-A-IN
set protocols bgp group AS64502-IX-A family inet unicast prefix-limit maximum 1000
set protocols bgp group AS64502-IX-A family inet unicast prefix-limit teardown 80
set protocols bgp group AS64502-IX-A family inet unicast prefix-limit teardown idle-timeout forever
set protocols bgp group AS64502-IX-A export IX-A-OUT
set protocols bgp group AS64502-IX-A remove-private
set protocols bgp group AS64502-IX-A peer-as 64502
set protocols bgp group AS64502-IX-A neighbor 192.0.2.2

各設定とも10行あります。また「AS64501向け設定」と「AS64502向け設定」で以下の部分(7行)が同じであることが分かります。

set protocols bgp group AS6450x-IX-A type external
set protocols bgp group AS6450x-IX-A import IX-A-IN
set protocols bgp group AS6450x-IX-A family inet unicast prefix-limit maximum 1000
set protocols bgp group AS6450x-IX-A family inet unicast prefix-limit teardown 80
set protocols bgp group AS6450x-IX-A family inet unicast prefix-limit teardown idle-timeout forever
set protocols bgp group AS6450x-IX-A export IX-A-OUT
set protocols bgp group AS6450x-IX-A remove-private

グループにまとめて継承させる

共通設定を「groups」でまとめて「apply-groups」で設定を適用して継承させます。

共通設定

共通設定をまとめた設定グループ「IX-A」を作成します。
ピアグループの階層指定にワイルドカードを使うことができるので、どのピアグループにもマッチするよう「*」でワイルドカード指定しています。

set groups IX-A protocols bgp group <*> type external
set groups IX-A protocols bgp group <*> import IX-A-IN
set groups IX-A protocols bgp group <*> family inet unicast prefix-limit maximum 1000
set groups IX-A protocols bgp group <*> family inet unicast prefix-limit teardown 80
set groups IX-A protocols bgp group <*> family inet unicast prefix-limit teardown idle-timeout forever
set groups IX-A protocols bgp group <*> export IX-A-OUT
set groups IX-A protocols bgp group <*> remove-private

ピアグループの階層に「apply-groups IX-A」で設定を適用することで共通設定が継承されます。

改めて、AS64501とAS64502向けの設定を考えます。

AS64501向け設定

set protocols bgp group AS64501-IX-A apply-groups IX-A        ←ここで共通設定 IX-A を継承させる
set protocols bgp group AS64501-IX-A description AS64501
set protocols bgp group AS64501-IX-A peer-as 64501
set protocols bgp group AS64501-IX-A neighbor 192.0.2.1

AS64502向け設定

set protocols bgp group AS64502-IX-A apply-groups IX-A       ←ここで共通設定 IX-A を継承させる
set protocols bgp group AS64502-IX-A description AS64502
set protocols bgp group AS64502-IX-A peer-as 64502
set protocols bgp group AS64502-IX-A neighbor 192.0.2.2

これまで10行あった設定が4行になりました。

継承されているか確認

先に共通設定を設定したあと、AS64501向け設定を追加し、コミット(設定を反映)する前に以下のコマンドでピアグループ名を指定して確認してみます。
「##」でコメントされているものが継承される設定です。

[edit]
root# show protocols bgp group AS64501-IX-A | display inheritance brief 
## 'external' was inherited from group 'IX-A'
type external;
description AS64501;
## 'IX-A-IN' was inherited from group 'IX-A'
import IX-A-IN;
## 'inet' was inherited from group 'IX-A'
family inet {
    ## 'unicast' was inherited from group 'IX-A'
    unicast {
        ## 'prefix-limit' was inherited from group 'IX-A'
        prefix-limit {
            ## '1000' was inherited from group 'IX-A'
            maximum 1000;
            ## 'teardown' was inherited from group 'IX-A'
            teardown {
                ## '80' was inherited from group 'IX-A'
                80;
                ## 'idle-timeout' was inherited from group 'IX-A'
                ## 'forever' was inherited from group 'IX-A'
                idle-timeout forever;
            }
        }
    }
}                                       
## 'IX-A-OUT' was inherited from group 'IX-A'
export IX-A-OUT;
## 'remove-private' was inherited from group 'IX-A'
remove-private;
peer-as 64501;
neighbor 192.0.2.1;

継承された共通設定を変更

継承された共通設定を個別のピア設定では変更したい場合もあると思うので試してみました。

prefix-limit」を変更

共通設定では「prefix-limit maximum」を「1000」にしています。
AS64501向け設定に「prefix-limit maximum」を「500」にする設定を追加してみます。

設定追加

[edit]
root# set protocols bgp group AS64501-IX-A family inet unicast prefix-limit maximum 500 

確認

[edit]
root# show protocols bgp group AS64501-IX-A | display inheritance brief 
## 'external' was inherited from group 'IX-A'
type external;
description AS64501;
## 'IX-A-IN' was inherited from group 'IX-A'
import IX-A-IN;
family inet {
    unicast {
        prefix-limit {
            maximum 500;
            ## 'teardown' was inherited from group 'IX-A'
            teardown {
                ## '80' was inherited from group 'IX-A'
                80;
                ## 'idle-timeout' was inherited from group 'IX-A'
                ## 'forever' was inherited from group 'IX-A'
                idle-timeout forever;
            }
        }
    }
}
## 'IX-A-OUT' was inherited from group 'IX-A'
export IX-A-OUT;
## 'remove-private' was inherited from group 'IX-A'
remove-private;                         
peer-as 64501;
neighbor 192.0.2.1;

「prefix-limit maximum」が「500」に上書きされています。

ルーティングポリシーを変更

共通設定ではOUT側のルーティングポリシー「IX-A-OUT」を設定しています。
AS64501向け設定にOUT側のルーティングポリシーを「IX-A-OUT2」にする設定を追加してみます。
※事前にルーティングポリシー「IX-A-OUT2」は作成しておきます。

設定追加

[edit]
root# set protocols bgp group AS64501-IX-A export IX-A-OUT2 

確認

[edit]
root# show protocols bgp group AS64501-IX-A | display inheritance brief 
## 'external' was inherited from group 'IX-A'
type external;
description AS64501;
## 'IX-A-IN' was inherited from group 'IX-A'
import IX-A-IN;
## 'inet' was inherited from group 'IX-A'
family inet {
    ## 'unicast' was inherited from group 'IX-A'
    unicast {
        ## 'prefix-limit' was inherited from group 'IX-A'
        prefix-limit {
            ## '1000' was inherited from group 'IX-A'
            maximum 1000;
            ## 'teardown' was inherited from group 'IX-A'
            teardown {
                ## '80' was inherited from group 'IX-A'
                80;
                ## 'idle-timeout' was inherited from group 'IX-A'
                ## 'forever' was inherited from group 'IX-A'
                idle-timeout forever;
            }
        }
    }
}                                       
## 'IX-A-OUT' was inherited from group 'IX-A'
export [ IX-A-OUT2 IX-A-OUT ];           ←IX-A-OUT2が追加されている
## 'remove-private' was inherited from group 'IX-A'
remove-private;
peer-as 64501;
neighbor 192.0.2.1;

「export [ IX-A-OUT2 IX-A-OUT ]」となっており、「IX-A-OUT2」は上書きではなく、追加されています。

グループでBGPピアをまとめてシャットダウン

共通設定のBGP設定をシャットダウンすることで継承されたBGPピア先をまとめてシャットダウンできるか確認してみました。

シャットダウン前

root> show bgp summary
<<抜粋>>
Peer                     AS      InPkt     OutPkt    OutQ   Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
192.0.2.1             64501         20         21       0       3        5:53 Establ
  inet.0: 5/5/5/0
192.0.2.2             64502         20         21       0       3        5:49 Establ
  inet.0: 5/5/5/0

シャットダウン

[edit]
root# set groups IX-A protocols bgp group <*> shutdown 

[edit]
root# commit 
commit complete

シャットダウン後

root> show bgp summary
<<抜粋>>
Peer                     AS      InPkt     OutPkt    OutQ   Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
192.0.2.1             64501         74         82       0       4           5 Idle 
192.0.2.2             64502         74         82       0       4           5 Idle  

共通設定が継承されたBGPピア先をまとめてシャットダウンできました。

まとめ

  • BGPピア設定をグループにまとめることでコンフィグを短くすることができました。新しいピアを追加設定する時や運用管理の面で省力化が図れそうです。
  • 継承された共通設定を個別のピア設定でさらに変更できますが、設定項目によっては「上書きされる場合」 と「共通設定を維持しつつ、さらに個別の設定が追加される場合」 があるので、コミット前の確認を十分する必要があると感じました。
  • グループでBGPピアをまとめてシャットダウンすることができるので、うまく活用すれば中継回線やルータメンテナンスの時に便利だと感じました。
  • 今後Cisco IOS XRで同様の検証もしてみたいと思います。