BGPを学ぶうえで、ピアとネイバーという言葉は最初に理解しておくべき重要な概念のひとつです。
BGPセッションを確立するための相手ルーターのことをピアまたはネイバーと呼び、この関係を正しく設定することがBGP運用の出発点になります。
この記事では、BGPのピアとネイバーの意味・eBGPとiBGPの違い・ネイバー確立の仕組み・設定方法と確認コマンドについてわかりやすく解説していきます。
BGPの基礎を体系的に学びたいネットワークエンジニアの方にぜひ参考にしていただきたい内容です。
BGPのピアとネイバーとは「BGPセッションを確立する相手ルーター」のこと
それではまず、BGPのピアとネイバーとは何かについて解説していきます。
BGPのピア(peer)およびネイバー(neighbor)とは、BGPセッションを確立してルーティング情報を交換する相手ルーターのことを指します。
ピアとネイバーはほぼ同じ意味で使われることが多く、Ciscoのコマンドではneighborという用語が使われ、Juniperではgroupやneighborという形で設定します。
BGPはOSPFのようにブロードキャストで隣接関係を自動確立するのではなく、管理者が明示的に相手ルーターのIPアドレスを指定してセッションを確立する手動設定が基本です。
BGPのピア・ネイバーとは:
BGPセッションを確立してルーティング情報を交換する相手ルーターのこと。
eBGP:異なるAS番号のルーター間のBGPセッション
iBGP:同一AS番号のルーター間のBGPセッション
管理者が相手のIPアドレスとAS番号を手動で指定して設定する。
eBGPネイバーとiBGPネイバーの違い
BGPのネイバー関係はeBGP(external BGP)とiBGP(internal BGP)の2種類に分類されます。
eBGPネイバーとは異なるAS番号を持つルーター間のBGPセッションで、インターネット上の異なる組織間の経路交換に使われます。
iBGPネイバーとは同一AS内のルーター間のBGPセッションで、eBGPで学習した経路をAS内部に伝播させるために使われます。
eBGPとiBGPでは動作の違いがいくつかあり、eBGPはTTLが1(直接接続が基本)・iBGPはTTLが255(非直接接続でも可能)というデフォルト設定の差があります。
この違いを理解することでeBGPとiBGPの設定の違いや注意点が明確になります。
BGPネイバー確立の仕組み
BGPネイバーの確立はTCPの179番ポートを使った接続から始まります。
TCPの3ウェイハンドシェイクが完了した後、OPENメッセージを交換してAS番号・BGPバージョン・Hold Timeなどのパラメータをネゴシエーションします。
OPENメッセージの交換が成功するとKEEPALIVEメッセージを送り合い、セッションがEstablished状態に遷移してネイバー関係が確立されます。
セッションが確立するとUPDATEメッセージで経路情報の交換が開始され、以降はHold Timeの間隔でKEEPALIVEが送受信されてセッションが維持されます。
BGPのステートマシンと状態遷移
BGPネイバーの確立プロセスはステートマシンとして定義されており、複数の状態を経てEstablishedに到達します。
BGPネイバー確立の状態遷移:
Idle → Connect → Active → OpenSent → OpenConfirm → Established
Idle:BGP未起動またはエラー後の待機状態
Connect:TCP接続を試みている状態
Active:TCP接続の確立を待っている状態
OpenSent:OPENメッセージを送信した状態
OpenConfirm:OPENメッセージを受信してKEEPALIVEを待っている状態
Established:ネイバー確立完了・経路交換が可能な状態
トラブルシューティングでは現在の状態を確認することでセッションが確立できない原因の切り分けが可能になります。
ActiveやConnectで止まっている場合はTCP接続やネットワーク到達性の問題が疑われ、OpenSentで止まっている場合はOPENメッセージのパラメータ不一致が疑われます。
BGPネイバーの設定方法を確認しよう
続いては、BGPネイバーの具体的な設定方法をCiscoとJuniperを例に確認していきます。
| 設定項目 | Ciscoコマンド | Juniperの設定 |
|---|---|---|
| BGPプロセスの起動 | router bgp [AS番号] | protocols bgp |
| ネイバーの指定 | neighbor [IP] remote-as [AS番号] | neighbor [IP] peer-as [AS番号] |
| ネイバーの説明 | neighbor [IP] description [説明] | neighbor [IP] description [説明] |
| 認証の設定 | neighbor [IP] password [パスワード] | neighbor [IP] authentication-key [キー] |
| next-hop-selfの設定 | neighbor [IP] next-hop-self | neighbor [IP] next-hop self |
CiscoルーターでのeBGPネイバー設定
CiscoルーターでeBGPネイバーを設定するには、router bgpコマンドでBGPプロセスを起動してneighborコマンドで相手ルーターを指定します。
CiscoルーターのeBGPネイバー設定例:
router bgp 65001
neighbor 203.0.113.1 remote-as 65002
neighbor 203.0.113.1 description ISP1-PEER
neighbor 203.0.113.1 password SecureKey123
network 192.0.2.0 mask 255.255.255.0
remote-asに相手ASのAS番号を指定することで、自ASと異なるAS番号が設定されていれば自動的にeBGPとして動作します。
descriptionを設定しておくことでどのネイバーかをすぐに識別できるようになり、運用管理がしやすくなります。
passwordコマンドでTCP MD5認証を設定することで、不正なBGPセッションの確立を防ぐセキュリティ対策が実現できます。
CiscoルーターでのiBGPネイバー設定
iBGPネイバーの設定はeBGPとほぼ同じですが、remote-asに自分と同じAS番号を指定する点が異なります。
CiscoルーターのiBGPネイバー設定例:
router bgp 65001
neighbor 10.0.0.2 remote-as 65001
neighbor 10.0.0.2 description IBGP-PEER-R2
neighbor 10.0.0.2 next-hop-self
neighbor 10.0.0.2 update-source Loopback0
iBGPネイバーではupdate-sourceコマンドでLoopbackインターフェースを指定することが一般的で、物理インターフェースの障害によるセッション断を防ぐ効果があります。
next-hop-selfを設定することでiBGPネイバーへの広報時にNext Hopを自分のアドレスに変更し、Next Hop到達性の問題を解消できます。
iBGPではループ防止のためiBGPで学習した経路を他のiBGPピアに再広報しないルールがあるため、大規模ネットワークではRoute Reflectorの導入が必要になります。
JuniperルーターでのBGPネイバー設定
JuniperルーターではグループにネイバーをまとめてBGPを設定します。
JuniperルーターのBGPネイバー設定例:
protocols {
bgp {
group EBGP-ISP1 {
type external;
peer-as 65002;
neighbor 203.0.113.1 {
description ISP1-PEER;
authentication-key SecureKey123;
}
}
}
}
Juniperではグループ単位でポリシーや属性を一括設定できるため、同じ設定を複数のネイバーに適用する場合の管理が効率的になります。
type externalでeBGP・type internalでiBGPとして動作させることができます。
BGPネイバーの確認コマンドとトラブルシューティング
続いては、BGPネイバーの状態確認に使うコマンドとトラブルシューティングの方法を確認していきます。
Ciscoでのネイバー確認コマンド
CiscoルーターでBGPネイバーの状態を確認するための代表的なコマンドをご紹介します。
BGPネイバー確認の主なコマンド:
show ip bgp summary
→ 全ネイバーの状態・受信経路数・稼働時間を一覧表示
show ip bgp neighbors [IPアドレス]
→ 特定ネイバーの詳細情報(状態・タイマー・受送信メッセージ数など)
show ip bgp neighbors [IPアドレス] received-routes
→ 特定ネイバーから受信した経路一覧
show ip bgp neighbors [IPアドレス] advertised-routes
→ 特定ネイバーへ広報している経路一覧
show ip bgp summaryコマンドのStateフィールドがEstablished(または数値)になっていればネイバーが正常に確立されていることを示します。
IdleやActive表示の場合はネイバーが確立できていない状態のため、接続先IPアドレス・AS番号・認証設定・ネットワーク到達性を順番に確認します。
Juniperでのネイバー確認コマンド
JuniperルーターでBGPネイバーを確認するコマンドも合わせて把握しておくと、マルチベンダー環境での運用がスムーズになります。
Juniperのネイバー確認コマンド:
show bgp summary
→ 全ネイバーの状態を一覧表示
show bgp neighbor [IPアドレス]
→ 特定ネイバーの詳細情報を表示
show route receive-protocol bgp [IPアドレス]
→ 特定ネイバーから受信した経路を表示
JuniperではEstablishedがネイバー確立済みの状態を示し、Active表示の場合はTCP接続が確立できていない状態を意味します。
show bgp neighborコマンドの出力にはセッションの稼働時間・送受信したUPDATEメッセージ数・エラー情報なども含まれるため、詳細なトラブルシューティングに活用できます。
ネイバー確立のトラブルシューティング手順
BGPネイバーが確立できない場合のトラブルシューティングは、原因を段階的に絞り込む手順で進めることが効率的です。
まず相手ルーターへのTCP179番ポートへの接続性を確認し、次にAS番号の設定が正しいか・認証パスワードが一致しているかを確認します。
iBGPネイバーが確立できない場合はupdate-sourceで指定したLoopbackアドレスへの到達性をIGPで確保できているかを確認することが重要なチェックポイントです。
debug ip bgp [IPアドレス] eventsコマンドを使うとネイバー確立のプロセスをリアルタイムで確認できるため、原因特定に非常に役立ちます。
本番環境でdebugコマンドを使用する際はCPU負荷への影響を考慮し、必要最小限の範囲で実行することが運用上の注意点です。
まとめ
この記事では、BGPのピアとネイバーの意味・eBGPとiBGPの違い・ネイバー確立の仕組み・設定方法・確認コマンドについて解説しました。
BGPのピアとネイバーとはBGPセッションを確立してルーティング情報を交換する相手ルーターのことであり、eBGPは異なるAS間・iBGPは同一AS内のネイバー関係を指します。
ネイバー確立はIdle→Connect→Active→OpenSent→OpenConfirm→Establishedという状態遷移を経て完了し、各状態でのトラブルシューティングポイントを把握しておくことが重要です。
CiscoではneighborコマンドとLoopbackアドレスの活用・Juniperではグループ設定による一括管理がそれぞれの効率的な設定方法です。
BGPのピアとネイバーの仕組みをしっかり理解して、BGP設定・運用・トラブルシューティングにぜひ役立てていただければ幸いです。