シナプス技術者ブログ

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

Juniper MX204でBGPを検証してみました

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

前々回、弊社の若松の記事でご紹介したように、Juniper(ジュニパーネットワークス)社のMX204を触らせていただく機会があり、BGPの検証をしてみました。

検証内容

  • CISCO機器とBGP接続してピアをはれるか
  • パスアトリビュートを付与できるか
    ※最適ルートを判断するために経路情報に付けられる値
  • maximum-prefixを設定できるか
    ※ネイバーから受信するプレフィクスの数を制限する設定

検証環境

■Cat4948E
Cisco Catalyst 4948E
IOS: 15.0(2)SG11 (cat4500e-ENTSERVICES-M)

■MX204
Juniper MX204
Junos: 19.4R3-S3.3

■Cisco7201
Cisco7201
IOS: 15.2(4)M8 (C7200P-ADVIPSERVICESK9-M)

f:id:chamesan:20210708211917p:plain

MX204の主な設定

BGPピア接続の設定

EBGPネイバーとの接続は「type external」、IBGPネイバーとの接続は「type internal」を指定します。

set routing-options autonomous-system 65000

set protocols bgp group as65100 type external         ←EBGPの場合は type external
set protocols bgp group as65100 peer-as 65100
set protocols bgp group as65100 neighbor 192.168.2.2

set protocols bgp group as65000-internal type internal    ←IBGPの場合は type internal 
set protocols bgp group as65000-internal neighbor 192.168.1.2

ルーティングポリシーの設定

EBGPにアドバタイズする時

  • AS_PATHアトリビュート
    ※自身のAS番号にAS番号を追加することによって EBGPピアにASパスを長くみせることができる(いわゆるprepend)
    自AS内のネットワーク(172.16.1.0/24)のAS_PATHにAS番号(65000)を追加
set policy-options prefix-list AS65000-ROUTE1 172.16.1.0/24

set policy-options policy-statement AS65100-OUT term AS_PATH from prefix-list AS65000-ROUTE1
set policy-options policy-statement AS65100-OUT term AS_PATH then as-path-prepend 65000
set policy-options policy-statement AS65100-OUT term AS_PATH then accept
  • MEDアトリビュート
    ※自AS内のネットワークへルーティングする際の着信トラフィックを制御することができる
    自AS内のネットワーク(172.16.2.0/24)にMED(10)を付与
set policy-options prefix-list AS65000-ROUTE2 172.16.2.0/24

set policy-options policy-statement AS65100-OUT term MED from prefix-list AS65000-ROUTE2
set policy-options policy-statement AS65100-OUT term MED then metric 10
set policy-options policy-statement AS65100-OUT term MED then accept

EBGPから受信する時

  • COMMUNITYアトリビュート
    ※経路情報のラベルのように機能し、 経路に対して特別な処理を行うためのフラグとして利用することができる
    EBGPから受信するネットワーク(10.0.1.0/24)にCOMMUNITY(65000:65100)を付与
set policy-options prefix-list AS65100-ROUTE1 10.0.1.0/24
set policy-options community REV-AS65100 members 65000:65100

set policy-options policy-statement AS65100-IN term COMMUNITY from prefix-list AS65100-ROUTE1
set policy-options policy-statement AS65100-IN term COMMUNITY then community add REV-AS65100
set policy-options policy-statement AS65100-IN term COMMUNITY then accept
  • LOCAL_PREFアトリビュート
    ※外部ASに存在するネットワーク宛の発信元トラフィックを制御することができる
    EBGPから受信するネットワーク(10.0.2.0/24)のLOCAL_PREFENCEを200に変更
set policy-options prefix-list AS65100-ROUTE2 10.0.2.0/24

set policy-options policy-statement AS65100-IN term LOCAL_PREF from prefix-list AS65100-ROUTE2
set policy-options policy-statement AS65100-IN term LOCAL_PREF then local-preference 200
set policy-options policy-statement AS65100-IN term LOCAL_PREF then accept

IBGPにアドバタイズする時

  • NEXT_HOPアトリビュート
    NEXT_HOPアドレスを自身のIPアドレスに変更する
set policy-options policy-statement AS65000-OUT term NEXT_HOP from protocol bgp
set policy-options policy-statement AS65000-OUT term NEXT_HOP then next-hop self

ルーティングポリシーを適用

set protocols bgp group as65100 import AS65100-IN
set protocols bgp group as65100 export AS65100-OUT

set protocols bgp group as65000-internal export AS65000-OUT

maximum-prefixの設定

EBGPから受信するプレフィクスの数が5を超えたらBGPを切断する。
設定値5の70%を超えると警告ログが出力される。

set protocols bgp group as65100 family inet unicast prefix-limit maximum 5
set protocols bgp group as65100 family inet unicast prefix-limit teardown 70
set protocols bgp group as65100 family inet unicast prefix-limit teardown idle-timeout forever

MX204の設定の表示

今回、MX204に設定したコンフィグをコマンド形式で表示させると以下の通りになります。

root@MX204> show configuration | display set 
<<抜粋>>
set version 19.4R3-S3.3
set system host-name MX204
set system root-authentication encrypted-password "XXXX"
set interfaces xe-0/1/6 unit 0 family inet address 192.168.2.1/24
set interfaces xe-0/1/7 unit 0 family inet address 192.168.1.1/24
set policy-options prefix-list AS65000-ROUTE1 172.16.1.0/24
set policy-options prefix-list AS65000-ROUTE2 172.16.2.0/24
set policy-options prefix-list AS65100-ROUTE1 10.0.1.0/24
set policy-options prefix-list AS65100-ROUTE2 10.0.2.0/24
set policy-options policy-statement AS65000-OUT term NEXT_HOP from protocol bgp
set policy-options policy-statement AS65000-OUT term NEXT_HOP then next-hop self
set policy-options policy-statement AS65100-IN term COMMUNITY from prefix-list AS65100-ROUTE1
set policy-options policy-statement AS65100-IN term COMMUNITY then community add REV-AS65100
set policy-options policy-statement AS65100-IN term COMMUNITY then accept
set policy-options policy-statement AS65100-IN term LOCAL_PREF from prefix-list AS65100-ROUTE2
set policy-options policy-statement AS65100-IN term LOCAL_PREF then local-preference 200
set policy-options policy-statement AS65100-IN term LOCAL_PREF then accept
set policy-options policy-statement AS65100-OUT term AS_PATH from prefix-list AS65000-ROUTE1
set policy-options policy-statement AS65100-OUT term AS_PATH then as-path-prepend 65000
set policy-options policy-statement AS65100-OUT term AS_PATH then accept
set policy-options policy-statement AS65100-OUT term MED from prefix-list AS65000-ROUTE2
set policy-options policy-statement AS65100-OUT term MED then metric 10
set policy-options policy-statement AS65100-OUT term MED then accept
set policy-options community REV-AS65100 members 65000:65100
set routing-options autonomous-system 65000
set protocols bgp group as65100 type external
set protocols bgp group as65100 import AS65100-IN
set protocols bgp group as65100 family inet unicast prefix-limit maximum 5
set protocols bgp group as65100 family inet unicast prefix-limit teardown 70
set protocols bgp group as65100 family inet unicast prefix-limit teardown idle-timeout forever
set protocols bgp group as65100 export AS65100-OUT
set protocols bgp group as65100 peer-as 65100
set protocols bgp group as65100 neighbor 192.168.2.2
set protocols bgp group as65000-internal type internal
set protocols bgp group as65000-internal export AS65000-OUT
set protocols bgp group as65000-internal neighbor 192.168.1.2

動作確認

BGPピア接続の確認

root@MX204> show bgp summary    
Threading mode: BGP I/O
Groups: 2 Peers: 2 Down peers: 0
Table          Tot Paths  Act Paths Suppressed    History Damp State    Pending
inet.0               
                       7          7          0          0          0          0
Peer                     AS      InPkt     OutPkt    OutQ   Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
192.168.1.2           65000          6          5       0       5        1:15 Establ
  inet.0: 3/3/3/0
192.168.2.2           65100          5          7       0       6        1:19 Establ
  inet.0: 4/4/4/0

パスアトリビュートの確認

  • MX204 から Cat4948Eにアドバタイズした経路
root@MX204> show route advertising-protocol bgp 192.168.2.2 extensive 

inet.0: 11 destinations, 11 routes (11 active, 0 holddown, 0 hidden)
* 172.16.1.0/24 (1 entry, 1 announced)
 BGP group as65100 type External
     Nexthop: Self
     AS path: 65000 [65000] I 

* 172.16.2.0/24 (1 entry, 1 announced)
 BGP group as65100 type External
     Nexthop: Self
     MED: 10                  ←MEDアトリビュートが付与されている
     AS path: [65000] I 

* 172.16.3.0/24 (1 entry, 1 announced)
 BGP group as65100 type External
     Nexthop: Self
     AS path: [65000] I 

MX204から Cat4948Eにアドバタイズする経路で 172.16.1.0/24にAS番号が、172.16.2.0/24にMEDアトリビュートが付与されている事がわかります

  • MX204 から Cisco7201にアドバタイズした経路
root@MX204> show route advertising-protocol bgp 192.168.1.2 extensive 

inet.0: 11 destinations, 11 routes (11 active, 0 holddown, 0 hidden)
* 10.0.1.0/24 (1 entry, 1 announced)
 BGP group as65000-internal type Internal
     Nexthop: Self
     Flags: Nexthop Change
     MED: 0
     Localpref: 100
     AS path: [65000] 65100 I 
     Communities: 65000:65100

* 10.0.2.0/24 (1 entry, 1 announced)
 BGP group as65000-internal type Internal
     Nexthop: Self
     Flags: Nexthop Change
     MED: 0
     Localpref: 200              ←Localprefが200になっている
     AS path: [65000] 65100 I 

* 10.0.3.0/24 (1 entry, 1 announced)
 BGP group as65000-internal type Internal
     Nexthop: Self
     Flags: Nexthop Change
     MED: 0                             
     Localpref: 100
     AS path: [65000] 65100 I 

* 10.0.4.0/24 (1 entry, 1 announced)
 BGP group as65000-internal type Internal
     Nexthop: Self
     Flags: Nexthop Change
     MED: 0
     Localpref: 100
     AS path: [65000] 65100 I 

MX204が Cat4948Eから受信した経路で 10.0.1.0/24にCOMMUNITYが付与され、10.0.2.0/24のLOCAL_PREFENCEが200に変更されて Cisco7201にアドバタイズされている事がわかります

  • Cisco7201 が MX204から受信した経路
Cisco7201#show ip bgp neighbors 192.168.1.1 received-routes 
<<一部省略>>
     Network          Next Hop            Metric LocPrf Weight Path
 *>i 10.0.1.0/24      192.168.1.1              0    100      0 65100 i
 *>i 10.0.2.0/24      192.168.1.1              0    200      0 65100 i
 *>i 10.0.3.0/24      192.168.1.1              0    100      0 65100 i
 *>i 10.0.4.0/24      192.168.1.1              0    100      0 65100 i

Total number of prefixes 4 

MX204から受信した Cat4948Eの経路のNEXT_HOPが MX204の 192.168.1.1になり、Cat4948Eの経路の 10.0.2.0/24のLOCAL_PREFENCEが200に変更されている事がわかります

maximum-prefixの確認

今回の設定では閾値が5で70%を超えると警告ログがでるようにしています。
現在4経路受信しているので警告ログが出ています。

  • ログ確認
root@MX204> show log messages | grep bgp
<<抜粋>>
Jul 12 04:45:21  MX204 rpd[18127]: BGP_PREFIX_THRESH_EXCEEDED: 192.168.2.2 (External AS 65100): Configured maximum prefix-limit threshold(3) exceeded for inet-unicast nlri: 4 (instance master)

閾値を3に変更してみます

set protocols bgp group as65100 family inet unicast prefix-limit maximum 3

閾値3で4経路受信しているので、BGPピアが切断されています

  • BGP接続確認
root@MX204> show bgp summary 
Threading mode: BGP I/O
Groups: 2 Peers: 2 Down peers: 1
Table          Tot Paths  Act Paths Suppressed    History Damp State    Pending
inet.0               
                       3          3          0          0          0          0
Peer                     AS      InPkt     OutPkt    OutQ   Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
192.168.1.2           65000       8162       8280       0       5 2d 14:18:23 Establ
  inet.0: 3/3/3/0
192.168.2.2           65100       7301       8275       0       7        1:29 Idle  
  • ログ確認
root@MX204> show log messages | grep bgp
<<抜粋>>
Jul 12 05:07:51  MX204 rpd[18127]: BGP_CEASE_PREFIX_LIMIT_EXCEEDED: 192.168.2.2 (External AS 65100): Shutting down peer due to exceeding configured maximum prefix-limit(3) for inet-unicast nlri: 4 (instance master)

まとめ

今回、Juniper MX204で CISCO機器とBGP接続してみて、今まで CISCO機器で利用していた設定も問題なく設定できることがわかりました。
設定に関しては CISCOの設定を Juniper側のルールに当てはめていく作業となり、大抵はすんなり当てはめることができました。
今後、他の機能についてもいろいろ検証していきたいと思います。