読む前にこの記事のポイントを音声で確認できます。この音声は本記事をもとにAIツール(NotebookLM)で自動生成したもので、発音や言い回しが不自然な箇所や、内容の誤りが含まれる可能性があります。理解の補助としてご利用ください。
BGP は、経路に変化があったときに、その差分だけを UPDATE メッセージで送ります。そのため、経路フィルタや属性の変更といったルーティングポリシーを変えても、すでにやり取りした経路には自動では反映されません。Cisco ルータでは clear ip bgp コマンドで BGP をリセットし、すべての経路にポリシーを適用し直します。
この記事では、BGP セッションを切らずに経路だけを送り直す「ルートリフレッシュ機能」の動きをパケットキャプチャで確認します。あわせて、ルートリフレッシュが使えない相手に使う「ソフト再構成(soft-reconfiguration inbound)」も設定します。
- ルートリフレッシュ機能に対応しているかを確かめる
clear ip bgp * inで、相手に経路を送り直してもらうclear ip bgp * outで、相手に経路を送り直すsoft-reconfiguration inboundで、受信した経路を保存しておく
検証構成
R2(AS 2)と R3(AS 3)を 192.168.23.0/24 で接続し、eBGP のピアを張っています。R2 は Loopback0 の 2.2.2.2/32 を、R3 は 3.3.3.3/32 を BGP で広報しています。
ハードリセットとソフトリセット
ポリシーを適用し直すいちばん簡単な方法は、ピアとの BGP セッション(TCP セッション)を張り直すことです。これをハードリセットと呼び、clear ip bgp * で実行します。* は、すべてのネイバーが対象という意味です。
特定のネイバーとのセッションだけを張り直すときは、clear ip bgp 192.168.23.3 のように、* の代わりにネイバーのアドレスを指定します。
ハードリセットでは、セッションを張り直すあいだ、そのネイバーから学習した経路がいったん消えるため、通信が止まります。ラボでは問題ありませんが、運用中のネットワークでは通常は許容されません。
セッションを切らずにポリシーを適用し直す方法をソフトリセットと呼びます。ソフトリセットには、相手に経路を送り直してもらう「ルートリフレッシュ」と、受信した経路を自分で保存しておく「ソフト再構成」の2つの仕組みがあります。
ルートリフレッシュ機能
ルートリフレッシュは、TCP セッションを確立したまま、経路情報だけを送り直してもらう機能です(RFC 2918)。使うには、ピアの両方がこの機能に対応している必要があります。
対応しているかを確かめる
BGP ピアとの TCP セッションが確立すると、お互いに OPEN メッセージを送り、BGP のバージョンや AS 番号などを通知します。OPEN メッセージの詳細は、次の記事を参考にしてください。
>> 参考:BGPメッセージをキャプチャして解析してみた
OPEN メッセージの Optional Parameters には、対応している機能(Capability)が入っています。ルートリフレッシュに対応しているルータは、ここに Route refresh capability を入れて相手に知らせます。
この記事のキャプチャの画面は、実際の画面ではなく、検証時に Wireshark で取得したキャプチャから見るポイントを抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。
▸ Internet Protocol Version 4, Src: 192.168.23.2, Dst: 192.168.23.3▸ Transmission Control Protocol, Src Port: 179, Dst Port: 58152, Seq: 1, Ack: 58, Len: 57▾ Border Gateway Protocol - OPEN Message Marker: ffffffffffffffffffffffffffffffff Length: 57 Type: OPEN Message (1) Version: 4 My AS: 2 Hold Time: 180 BGP Identifier: 2.2.2.2 Optional Parameters Length: 28 ▾ Optional Parameters ▸ Optional Parameter: Capability ▸ Optional Parameter: Capability1 ▾ Optional Parameter: Capability Parameter Type: Capability (2) Parameter Length: 22 ▾ Capability: Route refresh capability Type: Route refresh capability (2) Length: 0 ▸ Optional Parameter: Capability ▸ Optional Parameter: Capability
| No. | 表示 | 意味 |
|---|---|---|
| 1 | Parameter Type: Capability (2) | このオプションパラメータが、対応機能を知らせる Capability であることを示します。 |
| 2 | Type: Route refresh capability (2) | ルートリフレッシュに対応していることを示します。Capability コードは 2 で、値は持たないので長さは 0 です。 |
お互いにルートリフレッシュを通知し合っていれば、show ip bgp neighbors の Neighbor capabilities に次のように表示されます。
R3
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
| 表示 | 意味 |
|---|---|
| Route refresh: advertised and received | 自分も通知し(advertised)、相手からも受け取った(received)状態です。この状態ならルートリフレッシュを使えます。 |
| Enhanced Refresh Capability: advertised and received | 拡張ルートリフレッシュ(RFC 7313)にも、お互いに対応しています。経路を送り直す前後に、開始(BoRR)と終了(EoRR)の合図を送るようになります。 |
| Four-octets ASN Capability | 4 バイト AS 番号への対応です。ルートリフレッシュとは別の機能です。 |
clear ip bgp * in
R2 で clear ip bgp * in を実行すると、R2 は R3 にルートリフレッシュの要求(ROUTE-REFRESH メッセージ)を送ります。要求を受けた R3 は R2 に送っている経路を送り直し、R2 は受け取った経路にインバウンドポリシーを適用し直します。R2 のインバウンドポリシーを変えたときに使うコマンドです。
R2
R2# clear ip bgp * in
最初に、R2 から R3 へルートリフレッシュの要求が送られます。
▸ Internet Protocol Version 4, Src: 192.168.23.2, Dst: 192.168.23.3▸ Transmission Control Protocol, Src Port: 179, Dst Port: 58152, Seq: 1, Ack: 1, Len: 23▾ Border Gateway Protocol - ROUTE-REFRESH Message Marker: ffffffffffffffffffffffffffffffff Length: 231 Type: ROUTE-REFRESH Message (5) Address family identifier (AFI): IPv4 (1)2 Subtype: Normal route refresh request [RFC2918] with/without ORF [RFC5291] (0) Subsequent address family identifier (SAFI): Unicast (1)
| No. | 表示 | 意味 |
|---|---|---|
| 1 | Type: ROUTE-REFRESH Message (5) | BGP メッセージのタイプ 5 で、ルートリフレッシュのメッセージです。AFI と SAFI で、どのアドレスファミリー(ここでは IPv4 ユニキャスト)を送り直すかを指定します。 |
| 2 | Subtype: Normal route refresh request ... (0) | Subtype 0 は、通常のルートリフレッシュの要求です。 |
次に、R3 は R2 にルートリフレッシュの開始(Subtype 1:BoRR)を送ります。
▸ Internet Protocol Version 4, Src: 192.168.23.3, Dst: 192.168.23.2▸ Transmission Control Protocol, Src Port: 58152, Dst Port: 179, Seq: 1, Ack: 24, Len: 23▾ Border Gateway Protocol - ROUTE-REFRESH Message Marker: ffffffffffffffffffffffffffffffff Length: 23 Type: ROUTE-REFRESH Message (5) Address family identifier (AFI): IPv4 (1)1 Subtype: Demarcation of the beginning of a route refresh (1) Subsequent address family identifier (SAFI): Unicast (1)
続けて、UPDATE メッセージで BGP ルート(3.3.3.3/32)と属性を送り、最後にルートリフレッシュの終了(Subtype 2:EoRR)を送ります。
▸ Internet Protocol Version 4, Src: 192.168.23.3, Dst: 192.168.23.2▸ Transmission Control Protocol, Src Port: 58152, Dst Port: 179, Seq: 24, Ack: 24, Len: 78▾ Border Gateway Protocol - UPDATE Message Marker: ffffffffffffffffffffffffffffffff Length: 551 Type: UPDATE Message (2) Withdrawn Routes Length: 0 Total Path Attribute Length: 27 ▾ Path attributes ▸ Path Attribute - ORIGIN: IGP ▸ Path Attribute - AS_PATH: 3 ▸ Path Attribute - NEXT_HOP: 192.168.23.3 ▸ Path Attribute - MULTI_EXIT_DISC: 02 ▾ Network Layer Reachability Information (NLRI) ▸ 3.3.3.3/32▾ Border Gateway Protocol - ROUTE-REFRESH Message Marker: ffffffffffffffffffffffffffffffff Length: 23 Type: ROUTE-REFRESH Message (5) Address family identifier (AFI): IPv4 (1)3 Subtype: Demarcation of the ending of a route refresh (2) Subsequent address family identifier (SAFI): Unicast (1)
| No. | 表示 | 意味 |
|---|---|---|
| 1 | Type: UPDATE Message (2) | 経路を運ぶ UPDATE メッセージです。ORIGIN、AS_PATH、NEXT_HOP、MULTI_EXIT_DISC の属性が付いています。 |
| 2 | NLRI: 3.3.3.3/32 | 送り直された経路です。R3 の Loopback0 の経路が、もう一度届いています。 |
| 3 | Subtype: ... ending ... (2) | ルートリフレッシュの終了(EoRR)です。同じパケットの中で、UPDATE の後ろに続いています。 |
BoRR と EoRR は、拡張ルートリフレッシュ(RFC 7313)で決められたメッセージで、ROUTE-REFRESH メッセージの Subtype で区別します。受信側は BoRR を受け取ると、その相手から学習していた経路に古い印(stale)を付けます。EoRR を受け取った時点で古い印が残っている経路、つまり送り直されなかった経路を削除します。
clear ip bgp * out
R2 で clear ip bgp * out を実行すると、R2 はルートリフレッシュの要求を送らずに、自分の経路を R3 に送り直します。R2 のアウトバウンドポリシーを変えたときに使うコマンドです。
R2
R2# clear ip bgp * out
R2 は、まず R3 にルートリフレッシュの開始(Subtype 1:BoRR)を送ります。
▸ Internet Protocol Version 4, Src: 192.168.23.2, Dst: 192.168.23.3▸ Transmission Control Protocol, Src Port: 179, Dst Port: 58152, Seq: 1, Ack: 1, Len: 23▾ Border Gateway Protocol - ROUTE-REFRESH Message Marker: ffffffffffffffffffffffffffffffff Length: 23 Type: ROUTE-REFRESH Message (5) Address family identifier (AFI): IPv4 (1)1 Subtype: Demarcation of the beginning of a route refresh (1) Subsequent address family identifier (SAFI): Unicast (1)
次に、UPDATE メッセージで BGP ルート(2.2.2.2/32)と属性を送り、最後にルートリフレッシュの終了(Subtype 2:EoRR)を送ります。
▸ Internet Protocol Version 4, Src: 192.168.23.2, Dst: 192.168.23.3▸ Transmission Control Protocol, Src Port: 179, Dst Port: 58152, Seq: 24, Ack: 1, Len: 78▾ Border Gateway Protocol - UPDATE Message Marker: ffffffffffffffffffffffffffffffff Length: 551 Type: UPDATE Message (2) Withdrawn Routes Length: 0 Total Path Attribute Length: 27 ▾ Path attributes ▸ Path Attribute - ORIGIN: IGP ▸ Path Attribute - AS_PATH: 2 ▸ Path Attribute - NEXT_HOP: 192.168.23.2 ▸ Path Attribute - MULTI_EXIT_DISC: 02 ▾ Network Layer Reachability Information (NLRI) ▸ 2.2.2.2/32▾ Border Gateway Protocol - ROUTE-REFRESH Message Marker: ffffffffffffffffffffffffffffffff Length: 23 Type: ROUTE-REFRESH Message (5) Address family identifier (AFI): IPv4 (1)3 Subtype: Demarcation of the ending of a route refresh (2) Subsequent address family identifier (SAFI): Unicast (1)
| No. | 表示 | 意味 |
|---|---|---|
| 1 | Type: UPDATE Message (2) | R2 から送られた UPDATE メッセージです。AS_PATH は 2、NEXT_HOP は 192.168.23.2 です。 |
| 2 | NLRI: 2.2.2.2/32 | 送り直された R2 の Loopback0 の経路です。 |
| 3 | Subtype: ... ending ... (2) | ルートリフレッシュの終了(EoRR)です。 |
どちらのコマンドでも、TCP セッションは確立したまま経路が送り直されます。そのため、変更した BGP ポリシー(属性の変更や経路フィルタ)を、通信を止めずに適用できます。
アウトバウンドのポリシーを変えたときは、自分で out を実行する代わりに、相手のルータで in を実行しても同じ結果になります。相手からルートリフレッシュの要求が届き、新しいアウトバウンドポリシーを適用した経路が送り直されるためです。
ソフト再構成(soft-reconfiguration inbound)
相手がルートリフレッシュに対応していない場合は、ソフト再構成を使います。ネイバーごとに、受信した経路をインバウンドポリシーを適用する前の形で保存しておき、その保存した経路にポリシーを適用し直す方法です。
受信した経路をすべて別に保存するため、その分メモリを使います。経路数やネイバー数が多い場合は特に注意してください。相手がルートリフレッシュに対応しているなら、ソフト再構成は使わずにルートリフレッシュで済ませるのが基本です。
受信した経路を保存する
保存した経路は、show ip bgp neighbors ネイバーのアドレス received-routes で確認できます。ソフト再構成は既定で無効なので、設定する前は保存された経路がなく、次のように表示されます。
R2
R2# show ip bgp neighbors 192.168.23.3 received-routes
% Inbound soft reconfiguration not enabled on 192.168.23.3
ソフト再構成を有効にするには、ネイバーに soft-reconfiguration inbound を設定します。
R2
R2(config)# router bgp 2
R2(config-router)# neighbor 192.168.23.3 soft-reconfiguration inbound
BGP セッションをクリアして R3 から BGP ルートを受信し直すと、受信した経路が保存されます。
R2
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
ポリシーを変えたあと、保存した経路に新しいポリシーを適用してルーティングテーブルに反映するには、clear ip bgp * soft in を実行します。
R2
R2# clear ip bgp * soft in
soft-reconfiguration inbound を設定したネイバーに対して clear ip bgp * soft in を実行すると、相手に経路を送り直してもらうのではなく、保存しておいた経路を使ってポリシーを適用し直します。
うまくいかないとき
| 状態 | よくある原因 | 確認すること |
|---|---|---|
| ポリシーを変えたのに経路が変わらない | ソフトリセットをしていない、または方向が違う | インバウンドを変えたら in、アウトバウンドを変えたら out(または相手側で in)を実行したか |
| Route refresh が advertised and received になっていない | 相手がルートリフレッシュに対応していない | show ip bgp neighbors の Neighbor capabilities。対応していなければソフト再構成を使う |
| received-routes で Inbound soft reconfiguration not enabled と表示される | ソフト再構成を設定していない | ネイバーに soft-reconfiguration inbound を設定したか |
まとめ
| コマンド | セッション | 動き |
|---|---|---|
| clear ip bgp * | 張り直す | ハードリセット。TCP セッションを切り、経路を学習し直す |
| clear ip bgp * in | 維持する | 相手にルートリフレッシュを要求し、経路を送り直してもらう |
| clear ip bgp * out | 維持する | 自分の経路を相手に送り直す |
| clear ip bgp * soft in | 維持する | ソフト再構成で保存した経路に、ポリシーを適用し直す |
運用中のネットワークでポリシーを変えたときは、ハードリセットではなく、ルートリフレッシュを使ったソフトリセットで反映するのが基本です。ルートリフレッシュに対応しているかは、show ip bgp neighbors の Neighbor capabilities で確かめられます。
コメント