BGPのトラブルシューティングのまとめ編の第2弾です。
おさらいですが、BGPでのトラブルですが、大きくカテゴリ別に分けられます。
①TCPコネクションによる、BGPネイバーが張れない (=Idle状態)
②BGPネイバーは張れているが、BGPルートをきちんとアドバタイズできない
③BGPのパスアトリビュートの問題で、宛先に到達しない
④IPv6用のBGP (BGP4+)に関するトラブル
今回は②についての投稿です。
前提として、①の条件をクリアしている(=BGPネイバーが張れている)事です。
下記は前回紹介したネイバー間に関するトラブルです。
***********************************************************
BGPのトラブルシューティング【まとめ:ネイバーの確立について】 (miraclejob.com) (5/30)
************************************************************
さて本題に戻ります。
ここで言うBGPルートをきちんとアドバタイズできない状態とは、
コマンド : show bgp ipv4 unicast を使用した所、
アドバタイズして欲しいネットワーク(BGPルート)が記載されていない(以下の1, 3, 5)状態。
もしくはBGPルートには記載があるが、ルーティングテーブルにBGPルートが記載されていない状態(以下の4)
またBGPルートにもルーティングテーブルにも記載はあるが、ネクストホップの関連できちんとアドバタイズできない状態(以下の2)。
以上の3点を指しています。
その場合、考えられる理由としては5つあります。
【BGPルートがきちんとアドバタイズできない理由】
1. アドバタイズしたいルートがルーティングテーブルにあるか。
※もしルートがあれば、network maskコマンドなどでアドバタイズしたいルートの設定に間違ってないか (例えば、サブネットがあってるか)
間違っていると、BGPピアにBGPルートがアドバタイズされません
2. next-hopへのIP到達性はあるか
BGPルートとしては有効でも、next-hopに到達できなければ、ルーティングテーブルにそのBGPルートは記載されません。
※この場合、コマンド : show bgp ipv4 unicast で確認すると、
BGPルート自体の記載があります
よくある例として、あるiBGPから別のAS(e-bgp)へ通信した時、next-hopがその別のASになっていることがあります。その際、同ASのe-bgpとの境界点で、next-hop-selfを設定する必要があります。
以下も参考にしてみてください。
==========================================
BGP NEXT_HOPアトリビュート - コンフィグ設定 (infraexpert.com)
===========================================
3.スプリットホライズン機能によってiBGPへアドバタイズされていない
BGPはデフォルトでは、スプリットホライズン機能によりルーティングループを回避しています。
(※ざっくり言うと自分が学習したルートを他のiBGPへ転送しないよって機能です)
この機能により、他のiBGPはアドバタイズして欲しいルートを学習できなくなります。
解決策としては、ルートリフレクタを使用します。
ルートリフレクタ機能により、iBGP間でBGPルートをアドバタイズできるようになります。※フルメッシュ構成にすれば、アドバタイズできなくはないんですが、コンフィグの量も増え、構成が煩雑になるので基本はおすすめできません。
ただし、ルートリフレクタ機能を使うとスプリットホライズン機能は無効になるので、
ルーティングループには注意すること。
4.他のルートプロトコルが優先されていて(=BGPよりAD値が高い)、BGPルートが載らない。
この場合、ルートもアドバタイズできて、疎通も可能なのですが、他のルーティングプロトコルが優先されている(例:スタティックルートなど)ため、結果的にBGPルートには記載されるが、ルーティングテーブルには記載されません。
この場合、コマンド : show bgp ipv4 unicast で確認するとNetworkの左側に"r"と記載されいます。
これが表示される理由として、BGPルータのメモリ障害・VRF関連が考えられます。
またコマンド : show ip bgp rib-failureで、該当ルートが Higher admin distanceと出力されれば、BGPよりAD値の高いルーティングプロトコルが優先されていることが原因です。設計上問題なければ特に気にしなくて良いです。
5.ルートフィルタリングによってBGPルートがアドバタイズされていないか判断する
BGPルータによるルートフィルタリング機能によってBGPルートがアドバタイズされていない可能性はあります。
(ルートフィルタリング : distribute-list, prefix-list, filter-list, route-map)
上記1,3の理由でそもそもBGPルートがアドバタイズできない状態か、
今回のようにBGPルートフィルタリングによってアドバタイズできないかは以下の方法で見分けられます。
(流れ)
・コマンド : show bgp ipv4 unicast neighbor x.x.x.x rooutesで該当ルートを確認
もし該当ルートがなければ、以下を実施する
・コマンド : show bgp ipv4 unicast neighbor x.x.x.x advertised-rooutesで
該当ルートが表示された
→表示された場合、ルートフィルタリングが原因の可能性が高いので、
ルートフィルタリングの設定を見直しましょう
今回の内容は以上になります。
以下は、BGPに関する私の投稿です。
/////BGPのトラブルシューティングまとめ////////////////////
① : BGPのトラブルシューティング【まとめ:ネイバーの確立について】 (miraclejob.com) (5/30)
② : BGPのトラブルシューティング【まとめ : BGPルート編】 (miraclejob.com)(5/31 : 今回)
////////////////////////////////////////////////////////////////////
今回、以下の書籍を参考にしています。Ciscoの公式本です。
===============================
CCNP 300-410 : Amazon | CCNP Enterprise Advanced Routing ENARSI 300-410 Official Cert Guide | Lacoste, Raymond, Edgeworth, Brad | Bridges & Routers
================================