BGP の Capability とは
BGP は 1989 年に RFC 1105 で規格化され、そこから進化して今に至りますが、その間にアドオンのような形でもいくつか機能拡張してきました。
この機能拡張の仕組みを BGP Capability と呼びます。
BGP Capability は OPEN Message 送信時のオプション番号 2 としてネゴシエーションされます。BGP のパケット構造を変えず、オプションとして新たに追加できるのがメリットです。
例えば clear ip bgp * soft で使われる『Route Refresh』が一番よく使われるでしょう。この機能は 2000 年に RFC2918 で追加されています。
また、BGP はもともと IPv4 のユニキャストルート情報広告するためのものでしたが、MPLS-VPN における vpnv4 アドレス、IPv6 アドレス、マルチキャストアドレス等を広告するためには MP-BGP を使う必要があり、これには『Multiprotocol Extensions for BGP-4』の Capability でネゴシエーションする必要があります。
つまり、MP-BGP は Capability でネゴシエーションされることによってお互いに情報交換をできるようになるのです。
なお、相手とのネゴシエーションに失敗した場合は Notification メッセージにより相手に通知されます。
また、ネゴシエーション結果は show ip bgp neighbor で確認できます。
BGP Capability の一覧
BGP Capability の一覧は IANA の以下ページで管理されています。
パケットキャプチャの例
一般的には AS 番号は 2 octet (2 Bytes), つまり 1~65535 の値を取りますが、RFC4893 では AS 番号を 4 octet に拡張しています。これも Capability でネゴシエーションされることにより実現します。
4オクテット AS 番号をネゴシエーションする『Support for 4-octet AS number capability』を含んだ OPEN Message のパケットキャプチャの例を以下に示します。(MP-BGP と Route Refresh もネゴシエーションされています)
Capability の例
Outbound Route Filter (capability orf)
Outbound Route Filter は不要なルート情報について、受信時にフィルタするのではなく、そもそも相手から送らないようにしてもらうための仕組みです。RFC5291 で定義されました。
不要なルート情報は Route Refresh メッセージの中にエントリを含めて送信します。
Route Refresh のパケットフォーマットは RFC5291 Section.4 に記載されています。
Enhanced Route Refresh
通常の Route Refresh の場合、Route Refresh メッセージを受け取ったルータはその後に Update メッセージを受け取りますが、Route Refresh をトリガーとした Update メッセージがどこの時点で終わるのかを知るすべがありません。
そのため、どこかのタイミングでルート情報を破棄し、新たに Update メッセージで受け取ったルートをルーティングテーブルに入れます。その際、一時的にルート情報が欠ける可能性があります。
この欠点を補ったのが Enhanced Route Refresh です。
Enhanced Route Refresh の場合は Route Refresh に起因して送付する Update メッセージの前と後ろにそれぞれ BoRR (Beginning of Route Refresh) と EoRR (End of Route Refresh) を付け加えます。
これにより、EoRR を受信するまでの間は、以前受信したルート情報を保持しルーティングを維持することができます。
コメント