BGP(Border Gateway Protocol)は、ネットワーク同士をつなぐための主要な経路制御プロトコルであり、特に大規模ネットワークやインターネット全体で使用される重要な役割を果たしています。BGPでは、経路情報が変更された場合、差分のみがアップデートされますが、ルーティングポリシーの変更(例えば、経路フィルタや属性値の変更)が行われた際には、すべての経路情報に対して再度適用しなければなりません。
一番簡単なのは、ピアとのBGPセッション(TCPセッション)を再確立することで、ハードリセットと言います。コマンドはclear ip bgp * です。 「 * 」は全てのネイバーが対象 という意味です。
特定のネイバーのセッションを再確立するには、clear ip bgp 192.168.23.3 というように、「 * 」の代わりに、ネイバーのアドレスを指定します。
ハードリセットは、ラボ環境などでは問題ないですが、運用環境では、TCPセッションを切断による通信断が発生するため、通常は許容されません。
TCPセッションを確立したまま、ルート情報だけを再送信するルートリフレッシュ機能について確認します。
ルートリフレッシュ機能
BGPピアへのTCPセッションを確立した後、BGP OPENメッセージによりBGPバージョンやAS番号などをお互いに通知します。
OPENメッセージについては以下の記事を参考にしてください。
>> 参考 : ルータ間通信をキャプチャしてみたOPENメッセージの中に、オプションパラメータというフィールドがあり、この中に、ルートリフレッシュ機能をサポートしているか否かをピアに通知します
ピア間で、ルートリフレッシュ機能が使用できるのであれば、以下のとおり出力されます。
R3# show ip bgp neighbors | section neighbor
BGP neighbor is 192.168.23.2, remote AS 2, external link
BGP version 4, remote router ID 2.2.2.2
BGP state = Established, up for 00:18:49
Last read 00:00:45, last write 00:00:36, hold time is 180, keepalive interval is 60 seconds
Neighbor sessions:
1 active, is not multisession capable (disabled)
Neighbor capabilities:
Route refresh: advertised and received(new)
Four-octets ASN Capability: advertised and received
Address family IPv4 Unicast: advertised and received
Enhanced Refresh Capability: advertised and received
Multisession Capability:
Stateful switchover support enabled: NO for session 1
clear ip bgp * in
R2で clear ip bgp * in コマンドを実行すると、R3に対して、ルートリフレッシュの要求が送信されます。
R2# clear ip bgp * in
次にR3はR2に対して、ルートリフレッシュの開始(Subtype=1)で送信し、その後、アップデートによりルートが再送信されます。
アップデートメッセージによりBGPルート(3.3.3.3/32)や属性などを送信し、ルートリフレッシュの終了(Subtype=2)を送付します。
clear ip bgp * out
R2で clear ip bgp * out コマンドを実行すると、R3に対して、アップデートが送信されます。
R2# clear ip bgp * out
R2でコマンドを実行すると、ルートリフレッシュの要求を送信せず、R3に対して、ルートリフレッシュの開始(Subtype=1)が送信されます。
次にアップデートメッセージによりBGPルート(2.2.2.2/32)や属性などを送信し、ルートリフレッシュの終了(Subtype=2)が送信されます。
以上のコマンドで、BGPルートが再送信され、BGPポリシー(属性変更やルートフィルタ)を適用することができます。
ルートキャッシュ機能(ソフト再構成)
ルートリフレッシュ機能がサポートされていない場合は、ルートキャッシュ機能を使用します。 これは、BGPポリシー適用前のルート情報のキャッシュテーブルをネイバー毎に保存し、そのキャッシュテーブルに対して、ポリシーを適用します。
追加でメモリ消費しますので、特にルート数やネイバー数が多い場合は、注意をしてください。
キャッシュテーブルは以下のコマンドで確認できます。デフォルトでは、ルートキャッシュ機能は無効ですので、テーブルはありません。
R2# show ip bgp neighbors 192.168.23.3 received-routes
% Inbound soft reconfiguration not enabled on 192.168.23.3
ルートキャッシュ機能を有効にするには、以下の設定をします。
R2(config)# router bgp 2 R2(config-router)# neighbor 192.168.23.3 soft-reconfiguration inbound
BGPセッションをクリアし、再度、R3からBGPルートを受信すると、その情報がキャッシュテーブルに保存されます。
R2# show ip bgp neighbors 192.168.23.3 received-routes BGP table version is 5, local router ID is 2.2.2.2 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *> 3.3.3.3/32 192.168.23.3 0 0 3 i Total number of prefixes 1
このキャッシュテーブルに対して、設定変更されたBGPポリシーを適用して、ルーティングテーブルに反映するには、clear ip bgp * soft in を実行します。
R2# clear ip bgp * soft in
その他 BGP関連記事は >> ルーティングプロトコル(BGP)まとめ << より参照できます。
コメント