本記事ではJunosでのBGP(eBGP設定)についてご紹介させて頂きます。
この記事は以下のような方にオススメです!
・ JunosのeBGPの設定方法を知りたい方
・ JunosのeBGPに関するshowコマンド・その結果を確認したい方
>>参考記事: 「CCIEが語る!ネットワークエンジニアにオススメな本・参考書!」
>>参考記事: 「[まとめ] Juniper/Junosの検証結果を記事にまとめました!」
Junos BGP(eBGP) 検証内容
それでは最初に設定要件とネットワーク構成をご紹介します。
ネットワーク図
検証時のネットワーク環境は以下の通りです。
設定要件
本検証では以下の要件に基づきeBGPの設定を実装します。
- R2 – R3間でeBGPを確立する事
- R1にてR3のLo0(3.3.3.3/32)の経路をBGPで学習する事
また、本記事ではeBGPの設定にフォーカスしている為、iBGPの設定は紹介しておりません。
iBGPに関する検証結果を確認されたい方は、以下の記事で纏めております。
ご興味のある方はご覧ください!
>>参考記事: 「BGP(iBGP)の設定方法・設定確認方法を紹介」
Junos BGP(eBGP) 事前確認
検証前時点の各機器の設定内容やログは以下の通りです。
【事前確認】R1設定確認
R1では以下の通り、IPアドレスとiBGPの設定は完了しております。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // 以下はBGPネイバー情報です。R1とR2間はiBGPが確立済みです。 test-user@R1> show bgp summary Threading mode: BGP I/O Groups: 1 Peers: 1 Down peers: 0 Table Tot Paths Act Paths Suppressed History Damp State Pending inet.0 0 0 0 0 0 0 Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped... 2.2.2.2 100 394 396 0 1 2:55:21 Establ // 以下はR1がR2へ アドバタイズしているBGPルートの情報です。 // R1はR2に対して、1.1.1.1/32というBGP経路をアドバタイズしております。 test-user@R1> show route advertising-protocol bgp 2.2.2.2 inet.0: 8 destinations, 8 routes (8 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path * 1.1.1.1/32 Self 100 I |
Configは以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | set system host-name R1 set interfaces ge-0/0/0 unit 0 family inet address 192.168.12.1/30 set interfaces lo0 unit 0 family inet address 1.1.1.1/32 set protocols ospf area 0 interface ge-0/0/0 set protocols ospf area 0 interface lo0 set routing-options router-id 1.1.1.1 set routing-options autonomous-system 100 set protocols bgp group INT-PEER type internal set protocols bgp group INT-PEER local-address 1.1.1.1 set protocols bgp group INT-PEER neighbor 2.2.2.2 set protocols bgp group INT-PEER export ADVERTISE-IBGP set policy-options policy-statement ADVERTISE-IBGP term 1 from route-filter 1.1.1.1/32 exact set policy-options policy-statement ADVERTISE-IBGP term 1 then accept |
【事前確認】R2設定確認
R2では以下の通り、IPアドレスとiBGPの設定は完了しております。
ただし、R2-R3間のeBGPの設定は実施しておりません。(今回の検証範囲です。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | // 以下はBGPネイバー情報です。R1とR2間はiBGPが確立済みです。 test-user@R2> show bgp summary Threading mode: BGP I/O Groups: 1 Peers: 1 Down peers: 0 Table Tot Paths Act Paths Suppressed History Damp State Pending inet.0 1 0 0 0 0 0 Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped... 1.1.1.1 100 401 396 0 0 2:57:05 Establ inet.0: 0/1/1/0 // 以下はR1から受信しているBGPルートの情報です。 // 今回は1.1.1.1/32というBGP経路を受信しております。 test-user@R2> show route receive-protocol bgp 1.1.1.1 inet.0: 10 destinations, 11 routes (10 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path 1.1.1.1/32 1.1.1.1 100 I // 以下はR2のルーティングテーブル情報です。(BGP経路のみ) // 1.1.1.1/32というBGP経路を学習しております。 test-user@R2> show route protocol bgp inet.0: 10 destinations, 11 routes (10 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 1.1.1.1/32 [BGP/170] 01:28:47, localpref 100, from 1.1.1.1 AS path: I, validation-state: unverified > to 192.168.12.1 via ge-0/0/0.0 |
Configは以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 | set system host-name R2 set interfaces ge-0/0/0 unit 0 family inet address 192.168.12.2/30 set interfaces ge-0/0/3 unit 0 family inet address 23.23.23.2/30 set interfaces lo0 unit 0 family inet address 2.2.2.2/32 set protocols ospf area 0 interface ge-0/0/0 set protocols ospf area 0 interface lo0 set system host-name R2 set interfaces ge-0/0/0 unit 0 family inet address 192.168.12.2/30 set interfaces ge-0/0/3 unit 0 family inet address 23.23.23.2/30 set interfaces lo0 unit 0 family inet address 2.2.2.2/32 set protocols ospf area 0 interface ge-0/0/0 set protocols ospf area 0 interface lo0 |
【事前確認】R3設定確認
R3では以下の通り、IPアドレスは設定済です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | // R2-R3間のeBGPの設定は実施しておりません。(今回の検証範囲です。) test-user@R3> show bgp summary BGP is not running // ただし、各種IPアドレスの情報は設定済みです。 test-user@R3> show interfaces lo0 terse Interface Admin Link Proto Local Remote lo0 up up lo0.0 up up inet 3.3.3.3 --> 0/0 test-user@R3> show interfaces ge-0/0/3 terse Interface Admin Link Proto Local Remote ge-0/0/3 up up ge-0/0/3.0 up up inet 23.23.23.1/30 |
Configは以下の通りです。
1 2 3 4 5 6 7 8 9 | set system host-name R3 set interfaces ge-0/0/3 unit 0 family inet address 23.23.23.1/30 set interfaces lo0 unit 0 family inet address 3.3.3.3/32 set protocols ospf area 0 interface ge-0/0/0 set protocols ospf area 0 interface lo0 set system host-name R3 set interfaces ge-0/0/3 unit 0 family inet address 23.23.23.1/30 set interfaces lo0 unit 0 family inet address 3.3.3.3/32 |
Junos BGP(eBGP) 設定変更作業
それでは、R2-R3間のBGP(eBGP)の設定をしてみましょう!
設定は以下の手順に沿って、実施します。
- R3にてBGPの基本設定(Router-ID,BGP AS)を設定する
- R2,R3にてeBGPを設定する
- R3にて経路の広報設定をする
では、上記1〜3の順でコマンド含めてご紹介します。
手順① R3にてBGPの基本設定(Router-ID,BGP AS)を設定する
ここではBGPのRouter-idとASの設定をします。
それでは、R3にて次ルータのルータID(3.3.3.3)、自AS番号(200)を設定してみます。
Configは以下の通りです。
R3 BGPの基本設定
1 2 | set routing-options router-id 3.3.3.3 // <--ルータIDの設定 set routing-options autonomous-system 200 // <--自AS番号の設定 |
手順② R2,R3にてeBGPを設定する
BGPでのeBGP設定は「set protocols bgp group コマンド」で実施できます。
Configは以下の通りです。
R2 eBGP設定
ここではBGPタイプ、リモート機器(R3)のAS番号とネイバーIPアドレスを設定する必要があります。
1 2 3 | set protocols bgp group EXT-PEER type external // <--- eBGPを意味しております set protocols bgp group EXT-PEER peer-as 200 // <---R3のAS番号を設定します set protocols bgp group EXT-PEER neighbor 23.23.23.1 // <---R3のIPアドレスを設定します |
R3 eBGP設定
それでは、同じようにR3でも設定してみましょう!
1 2 3 | set protocols bgp group EXT-PEER type external // <--- eBGPを意味しております set protocols bgp group EXT-PEER peer-as 100 // <---R2のAS番号を設定します set protocols bgp group EXT-PEER neighbor 23.23.23.2 // <---R2のIPアドレスを設定します |
手順④ 経路の広報設定をする
BGP経路の広報設定は「set protocols bgp groupコマンド」と「set policy-options policy-statement」にて設定可能です!
Configは以下の通りです。
1 2 3 | set protocols bgp group EXT-PEER export ADVERTISE-EBGP // <--BGPへポリシー(ADVERTISE-EBGP)に合致する経路をexportする set policy-options policy-statement ADVERTISE-EBGP term 1 from route-filter 3.3.3.3/32 exact // <--3.3.3.3/32を指定 set policy-options policy-statement ADVERTISE-EBGP term 1 then accept |
上記設定後、「commit」すれば、設定完了です。
ここまででBGP(eBGP)の設定作業は完了です。
Junos BGP(eBGP) 正常性確認
それでは、要件通り設定変更がされているか、確認してみましょう。
本検証は以下を確認します。
- BGPネイバーの確認
- ルーティングテーブルの確認
- R3にてBGP送出経路の確認
- R2にてBGP受信経路の確認
では、上記1〜3の順でshowコマンドの出力結果含めてご紹介します。
正常性確認① BGPネイバーの確認の確認
BGPネイバーを確認したい場合は「show bgp summary コマンド」で確認できます。
R2 show bgp summary の出力結果
以下の通り、R2-R3間でBGPネイバー(23.23.23.1)が確立できているが、確認できますね!
1 2 3 4 5 6 7 8 9 10 11 | test-user@R2> 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 2 1 0 0 0 0 Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped... 1.1.1.1 100 460 457 0 0 3:24:04 Establ inet.0: 0/1/1/0 23.23.23.1 200 31 28 0 0 12:11 Establ //<--本検証にて追加した部分 inet.0: 1/1/1/0 |
R3 show bgp summary の出力結果
同じようにR3から見ても、R2-R3間でBGPネイバー(23.23.23.2)が確立できているが、確認できますね!
1 2 3 4 5 6 7 8 9 | test-user@R3> show bgp summary Threading mode: BGP I/O Groups: 1 Peers: 1 Down peers: 0 Table Tot Paths Act Paths Suppressed History Damp State Pending inet.0 0 0 0 0 0 0 Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped... 23.23.23.2 100 29 30 0 0 12:45 Establ //<--本検証にて追加した部分 inet.0: 0/0/0/0 |
特定のBGPネイバーに関する情報が見たい時
BGPネイバーの詳細を確認したい場合は「show bgp neighbor x.x.x.x コマンド」で確認できます。
※ x.x.x.x にはネイバーIPアドレスが入ります。
それでは、showコマンドの結果を見てみましょう!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | test-user@R3> show bgp neighbor 23.23.23.2 Peer: 23.23.23.2+179 AS 100 Local: 23.23.23.1+60472 AS 200 // <-- ネイバー情報 Group: EXT-PEER Routing-Instance: master // <--BGP Group名とインスタンス Forwarding routing-instance: master Type: External State: Established Flags: <Sync> Last State: OpenConfirm Last Event: RecvKeepAlive Last Error: None Export: [ ADVERTISE-EBGP ] // <--Exportポリシー名 Options: <Preference PeerAS Refresh> Options: <GracefulShutdownRcv> Holdtime: 90 Preference: 170 // <--BGP タイマーとプリファレンス値 Graceful Shutdown Receiver local-preference: 0 Number of flaps: 0 Peer ID: 2.2.2.2 Local ID: 3.3.3.3 Active Holdtime: 90 Keepalive Interval: 30 Group index: 0 Peer index: 0 SNMP index: 2 I/O Session Thread: bgpio-0 State: Enabled BFD: disabled, down Local Interface: ge-0/0/3.0 // <--BGPインターフェース NLRI for restart configured on peer: inet-unicast NLRI advertised by peer: inet-unicast NLRI for this session: inet-unicast Peer supports Refresh capability (2) Stale routes from peer are kept for: 300 Peer does not support Restarter functionality Restart flag received from the peer: Notification NLRI that restart is negotiated for: inet-unicast NLRI of received end-of-rib markers: inet-unicast NLRI of all end-of-rib markers sent: inet-unicast Peer does not support LLGR Restarter functionality Peer supports 4 byte AS extension (peer-as 100) Peer does not support Addpath NLRI(s) enabled for color nexthop resolution: inet-unicast Table inet.0 Bit: 20000 RIB State: BGP restart is complete Send state: in sync Active prefixes: 0 Received prefixes: 0 Accepted prefixes: 0 Suppressed due to damping: 0 Advertised prefixes: 1 Last traffic (seconds): Received 1 Sent 26 Checked 805 Input messages: Total 31Updates 1Refreshes 0 Octets 593 Output messages: Total 32Updates 1Refreshes 0 Octets 641 Output Queue[1]: 0 (inet.0, inet-unicast) |
正常性確認② ルーティングテーブル 反映確認
Junosでのルーティングテーブル(BGPルートの経路のみ)を確認したい場合は「show route protocol bgp コマンド」で確認できます。
それではR2のルーティングテーブルの出力結果を見てみましょう。
R2 show route protocol bgp の出力結果
以下の通り、3.3.3.3/32経路を学習している点が、確認できますね!
1 2 3 4 5 6 7 8 9 10 11 | test-user@R2> show route protocol bgp inet.0: 11 destinations, 12 routes (11 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 1.1.1.1/32 [BGP/170] 01:57:40, localpref 100, from 1.1.1.1 AS path: I, validation-state: unverified > to 192.168.12.1 via ge-0/0/0.0 3.3.3.3/32 *[BGP/170] 00:07:58, localpref 100 // <--新しく学習した経路情報 AS path: 200 I, validation-state: unverified > to 23.23.23.1 via ge-0/0/3.0 |
R1 show route protocol bgp の出力結果
次にR1のルーティングテーブルを見てましょう!
以下の通り、3.3.3.3/32経路を2.2.2.2から学習している点が、確認できますね!
1 2 3 4 5 6 7 8 | test-user@R1> show route protocol bgp inet.0: 9 destinations, 9 routes (9 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 3.3.3.3/32 *[BGP/170] 00:09:18, localpref 100, from 2.2.2.2 AS path: 200 I, validation-state: unverified > to 100.123.0.1 via fxp0.0 |
正常性確認③ R3にてBGP送出経路の確認
BGP送出経路(BGPネイバーへ送信している経路)を確認したい場合は「show route advertising-protocol コマンド」で確認できます。
以下の通り、R3からBGP経路(3.3.3.3/32)をeBGPネイバー(23.23.23.2)へ送信していますね。
1 2 3 4 5 | test-user@R3> show route advertising-protocol bgp 23.23.23.2 inet.0: 6 destinations, 6 routes (6 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path * 3.3.3.3/32 Self I |
正常性確認④ R2にてBGP受信経路の確認
BGP受信経路(BGPネイバーへ受信している経路)を確認したい場合は「show route receive-protocol コマンド」で確認できます。
それでは、R2のshowコマンドを見てみましょう!
以下の通り、eBGPネイバーのR3(23.23.23.2)からBGP経路(3.3.3.3/32)を受信している点が、確認できますね!
1 2 3 4 5 | test-user@R2> show route receive-protocol bgp 23.23.23.1 inet.0: 11 destinations, 12 routes (11 active, 0 holddown, 0 hidden) Prefix Nexthop MED Lclpref AS path * 3.3.3.3/32 23.23.23.1 200 I |
最後に実業務でよく利用するJunosの各種コマンドについては、以下の記事で纏めております。
ご興味のある方はご覧ください!
>>参考記事: 「業務で役立つshow、clear、requestコマンドを紹介!」
また、iBGPに関する検証結果を確認されたい方は、以下の記事で纏めております。
ご興味のある方はご覧ください!
>>参考記事: 「BGP(iBGP)の設定方法・設定確認方法を紹介」
Junosの勉強方法
では最後に「Junosの勉強方法」について紹介いたします。
Juniper機器は通信プロバイダーなどのミッションクリティカルが環境で多く導入されております。
その為、Junosを勉強すると、大規模なネットワークへ関わるチャンスが増えます!
Junosの勉強は以下の参考書で勉強を進めましょう!!
以下のアマゾンリンクから内容の詳細(価格/評価等)が確認出来ますので、ぜひ確認してみて下さいね!
まとめ
最後までお読み頂きましてありがとうございます。
Juniperに関する記事は以下にまとめております。
ご興味のある方は是非ご覧ください。
>>参考記事: 「[まとめ] Juniper/Junosの検証結果を記事にまとめました!」
>>参考記事: 「業務で役立つshow、clear、requestコマンドを紹介!」