BGP(ボーダーゲートウェイプロトコル)を理解する方法
BGP(ボーダーゲートウェイプロトコル)は、インターネットの安定を支えるコアプロトコルの一つですが、正直なところ、ネットワークに携わっていないと理解するのは難しいかもしれません。基本的に、BGPは異なるネットワーク間でルーティング情報を交換する役割を担っており、いわばデータの行き先を指示する交通整理員のようなものです。ルーターやネットワーク設定でBGP設定が頻繁に使用される場合、あるいはルーティング設定をいじる必要がある場合、その仕組みを理解しておくと、後々のストレスを軽減できます。BGPは、パブリックインターネットルーティング(eBGP)と、同じ大規模ネットワーク内の内部ルーティング(iBGP)の両方に使用されます。設定によっては、何が起こっているのかよくわからないままBGPに遭遇したり、ルートが正しく更新されない原因をトラブルシューティングしているときに遭遇したりするかもしれません。BGPセッションがどのように確立され、どのような状態をたどり、eBGPとiBGPの違いを理解しておくことは、大きな違いを生む可能性があります。さらに、これらの概念はネットワークログや設定で頻繁に目にすることになります。つまり、この仕組みを理解するのは単なるオタク的なものではなく、実用的だということです。それでは、BGPの問題に対処する際、あるいは内部で何が起こっているかを理解する際に役立つかもしれない、実用的な解決策や洞察をいくつか見ていきましょう。—
BGP接続とルーティングの問題のトラブルシューティング方法
BGPピアが適切に確立されているかどうかを確認する
- BGPピアがセッションを確立できない場合は、ネットワーク接続の問題か設定ミスのどちらかである可能性があります。Cisco IOSを実行しているルーターでは、各ピアの現在の状態を確認するために次のコマンドを実行できます。 「Idle」や「Active」
show ip bgp summaryなどの状態が表示されている場合は、おそらく正しく接続されていないことを意味します。 - Juniper やその他の OS の場合、コマンドは になります。ピアがEstablished
show bgp neighbor状態でない場合は、IP アドレス、ASN、およびネットワーク ポリシーを再確認してください。 - ファイアウォールやACLがTCPポート179をブロックしていることが原因となる場合があります。ピア間の受信および送信でポート179がブロックされていないことを確認してください。
この情報は、セッションが実際に行われているかどうかを確認するのに役立ちます。行われていない場合は、接続または構成に問題があることを示す最初の手がかりになります。
キープアライブタイマーとホールドタイマーを確認する
- BGPはキープアライブメッセージに依存しているため、これらが適切に交換されないとセッションが切断される可能性があります。タイマーを確認してください。通常、デフォルトでは30秒に設定されています(
timers bgp 30 180Ciscoなどの製品の場合)。 - 設定によっては、タイマーのずれ(例えば、リモートピアが20秒を期待しているのに、ルーターが30秒のままの場合など)により、フラップやセッションドロップが発生する可能性があります。タイマーが一致していることを確認してください(少なくとも適切に設定されていることを確認してください)。 で調整してください。
neighbortimers 20 60 - ホールドタイマーを一時的に長くすると不安定なセッションを安定させることができる場合もありますが、後で元に戻すことを忘れないでください。
私自身のセットアップでは、タイマーを調整すると接続が遅れるだけになることがありますが、セッションをより長く維持するために必要な場合もあります。
BGP 構成とポリシーの検査
- ネイバーコマンドを確認し、リモートASが期待どおりに動作していることを確認してください。ここでの小さなタイプミスがセッション全体の失敗につながる可能性があります。
- ネットワーク設定またはルートリフレクタが正しく設定されていることを確認してください。フィルターが正しくなかったり、ネットワーク設定が不足していたりすると、ルートがアドバタイズされない場合があります。
- Ciscoでは、 や のようなコマンドで設定が正しい
show run | include neighborかどうかを確認できます。Juniperでは、が役立ちます。show ip protocolsshow configuration protocols bgp
特に構成が手動で編集されたり、ロールバックされたりした場合は、単純なタイプミスや権限の不足が根本的な原因となることがあります。
BGPデバッグツールを使用する
debug ip bgpまたはでデバッグを有効にしますshow transactions。ただし、ルーターの負荷が高い場合、デバッグによって膨大なログが生成される可能性があるため、注意してください。可能であれば、テスト環境で使用してください。- 「接続拒否」「ルート利用不可」「近隣リセット」などのエラーを探してください。これらのエラーは、何が不足しているかの手がかりとなります。
- 問題を特定したら、
undebug allパフォーマンスの低下を避けるためにデバッグをオフにします。
このステップでは、最初はわかりにくいと思われる ASN の不一致や BGP バージョンの不一致などの奇妙な問題が明らかになることがあります。
—
ファームウェアまたはBGPソフトウェアの更新を検討するタイミング
すべての設定と接続に問題がないように見えても、BGPの動作が不安定な場合は、ファームウェアのバグまたは互換性の問題が考えられます。ベンダーのファームウェアバージョンを確認するか、アップデートを監視するか、ルーターOSのリリースノートで既知の問題を探してください。ファームウェアやソフトウェアのパッチをアップグレードすると、設定をいくら調整しても解決できない奇妙な接続やルート広告の問題が解決する場合があります。
—
BGPを動作させるのは、セッションが切れたり、ルートが伝播しなかったり、設定がうまくいかなかったりと、まるで幽霊を追いかけているような気分になることがあります。しかし、それぞれの状態、タイマー、コマンドの動作を理解することで、トラブルシューティングを推測に頼ることなく、より体系的に行うことができます。少し奇妙に感じるかもしれませんが、基本を押さえてしまえば、ストレスは大幅に軽減されます。
まとめ
- ピアのステータスを確認し
show ip bgp summary、接続状態を検証します。 - キープアライブ タイマーとホールド タイマーを検査し、必要に応じて調整します。
- 構成が一致しており、ファイアウォールがポート 179 をブロックしていないことを確認します。
- セッションの問題を特定するには、デバッグ コマンドを慎重に使用してください。
- BGP がクラッシュしたり、一貫して接続を拒否したりする場合は、ファームウェアを更新します。
まとめ
BGPのトラブルシューティングに飛びつくのは誰にとっても簡単なことではありませんが、セッション状態、タイマー、設定など、何を確認すべきかを知っておくことで、推測による作業を大幅に減らすことができます。時にはタイプミスを修正するだけで済む場合もあれば、ファームウェアのバグを追跡する必要がある場合もあります。いずれにせよ、少し辛抱すれば、ルートが再び通信できるようになる可能性があります。この記事が、少なくとも今のところは、誰かのBGPの混乱を解消するのに役立つことを願っています。