本記事ではJunosでのBGP(iBGP設定)についてご紹介させて頂きます。
この記事は以下のような方にオススメです!
・ JunosのiBGPの設定方法を知りたい方
・ JunosのiBGPに関するshowコマンド・その結果を確認したい方
>>参考記事: 「CCIEが語る!ネットワークエンジニアにオススメな本・参考書!」
>>参考記事: 「[まとめ] Juniper/Junosの検証結果を記事にまとめました!」
Junos BGP(iBGP) 検証内容
それでは最初に設定要件とネットワーク構成をご紹介します。
ネットワーク図
検証時のネットワーク環境は以下の通りです。
また、本記事ではiBGPの設定にフォーカスしている為、eBGPの設定は紹介しておりません。
eBGPに関する検証結果を確認されたい方は、以下の記事で纏めております。
ご興味のある方はご覧ください!
>>参考記事: 「BGP(eBGP)の設定方法・設定確認方法を紹介」
設定要件
本検証では以下の要件に基づきiBGPの設定を実装します。
- Router-idは明示的に設定する事
- R1 – R2間でiBGPを確立する事
- R1のLo0(1.1.1.1/32)の経路情報をiBGP経由でR2へ伝える事
Junos BGP(iBGP) 事前確認
検証前時点の各機器の設定内容やログは以下の通りです。
【事前確認】R1設定確認
R1にて以下の通り、IPアドレスは設定済です。
1 2 3 4 5 6 7 8 9 10 | // インターフェース設定(ge-0/0/0, lo0)は設定済み test-user@R1> show interfaces lo0 terse Interface Admin Link Proto Local Remote lo0 up up lo0.0 up up inet 1.1.1.1 --> 0/0 test-user@R1> show interfaces ge-0/0/0 terse Interface Admin Link Proto Local Remote ge-0/0/0 up up ge-0/0/0.0 up up inet 192.168.12.1/30 |
Configは以下の通りです。
1 2 3 4 5 | 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 |
【事前確認】R2設定確認
R2では以下の通り、IPアドレスは設定済です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // インターフェース設定(ge-0/0/0, ge-0/0/3, lo0)は設定済み test-user@R2> show interfaces lo0 terse Interface Admin Link Proto Local Remote lo0 up up lo0.0 up up inet 2.2.2.2 --> 0/0 test-user@R2> show interfaces ge-0/0/0 terse Interface Admin Link Proto Local Remote ge-0/0/0 up up ge-0/0/0.0 up up inet 192.168.12.2/30 test-user@R2> 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.2/30 |
Configは以下の通りです。
1 2 3 4 5 6 | 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 |
Junos BGP(iBGP) 設定変更作業
早速ですが、BGP(iBGP)の設定をしてみましょう!
設定は以下の手順に沿って、実施します。
- Router-IDを設定する
- BGP ASを設定する
- iBGPを設定する
- 経路の広報設定をする
では、上記1〜4の順でコマンド含めてご紹介します。
手順① Router-idを設定する
BGP Router-idの設定は「set routing-options router-id コマンド」で実現可能です。
本検証ではR1には1.1.1.1、R2には2.2.2.2のルータIDを設定します。
Configは以下の通りです。
R1 Router-id設定
1 | set routing-options router-id 1.1.1.1 |
R2 Router-id設定
1 | set routing-options router-id 2.2.2.2 |
手順② BGP ASを設定する
BGPのAS設定は「set routing-options autonomous-system コマンド」で実施できます。
それではR1、R2にAS100を設定してみましょう!
Configは以下の通りです。
R1 autonomous-system設定
1 | set routing-options autonomous-system 100 |
R2 autonomous-system設定
1 | set routing-options autonomous-system 100 |
手順③ iBGPを設定する
iBGPの設定は「set protocols bgp group コマンド」で実施できます。
Configは以下の通りです。
R1 bgp group設定
ここではBGPタイプとネイバーIPアドレス、iBGPネイバーを張る際に使う自身のIPアドレスを設定する必要があります。
1 2 3 | set protocols bgp group INT-PEER type internal // <--- iBGPを意味しております set protocols bgp group INT-PEER local-address 1.1.1.1 // <---iBGPネイバーを張る時に使うR1自身のIPアドレスを設定します set protocols bgp group INT-PEER neighbor 2.2.2.2 // <---R2のIPアドレスを設定します |
R2 bgp group設定
それでは、同じようにR2でも設定してみましょう!
1 2 3 | set protocols bgp group INT-PEER type internal // <--- iBGPを意味しております set protocols bgp group INT-PEER local-address 2.2.2.2 // <---iBGPネイバーを張る時に使うR2自身のIPアドレスを設定します set protocols bgp group INT-PEER neighbor 1.1.1.1 // <---R1のIPアドレスを設定します |
手順④ 経路の広報設定をする
BGP経路の広報設定は「set protocols bgp groupコマンド」と「set policy-options policy-statement」にて設定可能です!
Configは以下の通りです。
1 2 3 | set protocols bgp group INT-PEER export ADVERTISE-IBGP // <--BGPへポリシー(ADVERTISE-IBGP)に合致する経路をexportする set policy-options policy-statement ADVERTISE-IBGP term 1 from route-filter 1.1.1.1/32 exact // <--1.1.1.1/32を指定 set policy-options policy-statement ADVERTISE-IBGP term 1 then accept |
上記設定後、「commit」すれば、設定完了です。
ここまででBGP(iBGP)の設定作業は完了です。
Junos BGP(iBGP) 正常性確認
それでは、要件通り設定変更がされているか、確認してみましょう。
本検証は以下を確認します。
- BGPネイバーの確認
- ルーティングテーブルの確認
- R1にてBGP送出経路の確認
- R2にてBGP受信経路の確認
では、上記1〜3の順でshowコマンドの出力結果含めてご紹介します。
正常性確認① BGPネイバーの確認の確認
BGPネイバーを確認したい場合は「show bgp summary コマンド」で確認できます。
R1 show bgp summary の出力結果
以下の通り、R1-R2間でiBGPネイバー(2.2.2.2)が確立できているが、確認できますね!
1 2 3 4 5 6 7 8 9 | 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 349 352 0 1 2:35:35 Establ //<--本検証にて追加した部分 inet.0: 0/0/0/0 |
R2 show bgp summary の出力結果
同じようにR2から見ても、R1-R2間でiBGPネイバー(1.1.1.1)が確立できているが、確認できますね!
1 2 3 4 5 6 7 8 9 | 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 354 349 0 0 2:36:29 Establ //<--本検証にて追加した部分 inet.0: 0/1/1/0 |
特定のBGPネイバーに関する情報が見たい時
BGPネイバーの詳細を確認したい場合は「show bgp neighbor x.x.x.x コマンド」で確認できます。
※ x.x.x.x にはネイバーIPアドレスが入ります。
本検証ではiBGPネイバー(2.2.2.2)の情報を見てみましょう!
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 45 | test-user@R1> show bgp neighbor 2.2.2.2 Peer: 2.2.2.2+64614 AS 100 Local: 1.1.1.1+179 AS 100 // <-- ネイバー情報 Group: INT-PEER Routing-Instance: master // <--BGP Group名とインスタンス Forwarding routing-instance: master Type: Internal State: Established Flags: <Sync> Last State: OpenConfirm Last Event: RecvKeepAlive Last Error: None Export: [ ADVERTISE-IBGP ] // <--Exportポリシー名 Options: <Preference LocalAddress Refresh> Options: <GracefulShutdownRcv> Local Address: 1.1.1.1 Holdtime: 90 Preference: 170 // <--BGP タイマーとプリファレンス値 Graceful Shutdown Receiver local-preference: 0 Number of flaps: 1 Last flap event: RecvNotify Error: 'Cease' Sent: 0 Recv: 1 Peer ID: 2.2.2.2 Local ID: 1.1.1.1 Active Holdtime: 90 Keepalive Interval: 30 Group index: 0 Peer index: 0 SNMP index: 4 I/O Session Thread: bgpio-0 State: Enabled BFD: disabled, down 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 23 Sent 2 Checked 9960 Input messages: Total 372Updates 1Refreshes 0Octets 7116 Output messages: Total 375Updates 4Refreshes 0Octets 7248 Output Queue[1]: 0 (inet.0, inet-unicast) |
正常性確認② ルーティングテーブル 反映確認
Junosでのルーティングテーブル(BGPルートの経路のみ)を確認したい場合は「show route protocol bgp コマンド」で確認できます。
それでは、R2のルーティングテーブルを確認してみます。
以下の通り、1.1.1.1/32が反映されている点が確認できますね。
1 2 3 4 5 6 7 8 | 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:09:49, localpref 100, from 1.1.1.1 // <--新しく学習した経路情報 AS path: I, validation-state: unverified > to 192.168.12.1 via ge-0/0/0.0 |
正常性確認③ R1にてBGP送出経路の確認
BGP送出経路(BGPネイバーへ送信している経路)を確認したい場合は「show route advertising-protocol コマンド」で確認できます。
以下の通り、R1からBGP経路(1.1.1.1/32)をiBGPネイバー(2.2.2.2)へ送信していますね。
1 2 3 4 5 | 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 |
正常性確認④ R2にてBGP受信経路の確認
BGP受信経路(BGPネイバーへ受信している経路)を確認したい場合は「show route receive-protocol コマンド」で確認できます。
それでは、R2のshowコマンドを見てみましょう!
以下の通り、iBGPネイバーのR1(1.1.1.1)からBGP経路(1.1.1.1/32)を受信している点が、確認できますね!
1 2 3 4 5 6 7 | 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 inet6.0: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden) |
最後に実業務でよく利用するJunosの各種コマンドについては、以下の記事で纏めております。
ご興味のある方はご覧ください!
>>参考記事: 「業務で役立つshow、clear、requestコマンドを紹介!」
また、eBGPに関する検証結果を確認されたい方は、以下の記事で纏めております。
ご興味のある方はご覧ください!
>>参考記事: 「BGP(eBGP)の設定方法・設定確認方法を紹介」
Junosの勉強方法
では最後に「Junosの勉強方法」について紹介いたします。
Juniper機器は通信プロバイダーなどのミッションクリティカルが環境で多く導入されております。
その為、Junosを勉強すると、大規模なネットワークへ関わるチャンスが増えます!
Junosの勉強は以下の参考書で勉強を進めましょう!!
以下のアマゾンリンクから内容の詳細(価格/評価等)が確認出来ますので、ぜひ確認してみて下さいね!
まとめ
最後までお読み頂きましてありがとうございます。
Juniperに関する記事は以下にまとめております。
ご興味のある方は是非ご覧ください。
>>参考記事: 「[まとめ] Juniper/Junosの検証結果を記事にまとめました!」
>>参考記事: 「業務で役立つshow、clear、requestコマンドを紹介!」