はじめに
こんにちは。ネットワークエンジニアの「だいまる」です。
今回は、BGPで利用されるメッセージタイプについて、まとめていきたいと思います。
5種類のBGPメッセージ
本記事では、BGPで利用される5種類のメッセージについて、説明していきます。
共通フォーマット
5つのメッセージを説明する前に、BGPのメッセージで利用される共通フォーマットについてまとめたいと思います。

BGPメッセージはTCP 179番ポートが使われます!
| フィールド名 | オクテット長 | 用途 |
|---|---|---|
| Marker | 16 | BGPピアの同期が完了しているかどうかを示す |
| Length | 2 | BGPメッセージの長さを示す |
| Type | 2 | BGPメッセージのタイプを示す(1~5) |
Type1:OPENメッセージ
OPENメッセージとは、「BGPセッション開始時に送信されるメッセージ」です。
OPENメッセージには、BGPバージョンや属するAS番号、Holdtime、ルータIDを保持しています。
| フィールド名 | オクテット長 | 用途 |
|---|---|---|
| バージョン | 1 | BGPのバージョン表記(4が多い) |
| My AS | 2 | 送信元のAS番号 |
| Holdtime | 2 | ピア維持の閾値時間(通常:180秒) |
| Identifier | 4 | BGPルータの識別子(ルータID) |
| Option | 1 | オプション |
Type2:UPDATEメッセージ
「UPDATEメッセージ」は、BGPピアを確立したルータ同士で経路情報を交換するために利用します。
このメッセージには、追加や変更となった経路情報を保持し、各ルータに送信しています。
| フィールド名 | オクテット長 | 用途 |
|---|---|---|
| Unfeasible routes length | 2 | Withdrawnとなる経路の長さ * 0の場合は対象となる経路無し |
| Withdrawn Routes | 可変 | Withdrawnとなる経路のリスト – Length:1オクテット(Prefix長を示す) *0の場合はall match – Prefix:16進数で表記 |
| Total Path Attribute Length | 2 | Path Attributeの長さ *0の場合、広報する経路やAttributeがない |
| Path Attribute | 可変 | 各経路に対するAttributeのリスト *TLVで表記 |
| Network Layer Reachability Information (NLRI) | 可変 | Prefix List(2-Tuple LVでの表記) |
Type3:NOTIFICATIONメッセージ
「NOTIFICATIONメッセージ」は、BGPピア間でエラーが発生した際にピア切断を行うために利用しています。
このメッセージに定義されているエラー理由を示すコードは、数がかなり多いのが特徴です。
| フィールド名 | オクテット長 | 用途 |
|---|---|---|
| Error Code | 1 | エラー内容のコードが格納(エラーコードは次の表に記載) |
| Error Subcode | 1 | エラー内容の詳細コードが格納(エラーコードは次の表に記載) |
| Data | 可変 | エラーデータを格納 |
| エラーコード | Subcode | 用途 |
|---|---|---|
| 1: Message Header Error | 1 | 接続が非同期状態 |
| 2 | メッセージ長にエラー | |
| 3 | メッセージタイプにエラー | |
| 2: Open Message Error | 1 | 未サポートバージョン |
| 2 | Peer ASにエラー | |
| 3 | BGP IDにエラー | |
| 4 | 未サポートのオプションパラメータ | |
| 5 | 認証失敗 | |
| 6 | ホールドタイムが受け取れていない | |
| 7 | 未サポートのCapability | |
| 3: Update Message Error | 1 | Malformed attirubteのリスト |
| 3 | Well-known attributeの欠如 | |
| 7 | ASルーティングループ | |
| 8 | Next Hopが無効 | |
| 4: Hold Timer Expire | 0 | Subcodeなし |
| 5: FSM Error | 0 | Subcodeなし(1~3があり、各メッセージ種別に対するエラー) |
| 6: Cease | 1 | 最大Prefix数の超過 |
| 2 | Admin Down | |
| 3 | Peer削除 | |
| 5 | 接続失敗 |
Type4:KEEPALIVEメッセージ
「KEEPALIVEメッセージ」は、OPENメッセージに対する返答や確立したBGPピアを維持するために利用されます。
このメッセージは、通常60秒毎にBGPピアの相手となるネイバーに送信され、セッションの確立状況を確認しています。
| フィールド名 | Byte長 | 用途 |
|---|---|---|
| Marker | 16 | BGPピアの同期が完了しているかどうかを示す |
| Length | 2 | BGPメッセージの長さを示す |
| Type | 1 | メッセージタイプ(1~5) Keepaliveのため「4」 |
Type5:ROUTE REFRESHメッセージ
「ROUTE REFERESHメッセージ」は、経路更新を必要とする際に再要求するために利用されます。
このメッセージは、主にOPENメッセージのOptionフィールドを利用しています。
| フィールド名 | Byte長 | 用途 |
|---|---|---|
| AFI | 2 | Address Family IDの格納(IPv4/IPv6等の定義) |
| Res | 1 | デフォルト値:0(このフィールドは利用されない) |
| SAFI | 1 | Subsequent AFIの格納(ユニキャストやVPNv4等の用途) |
最後に
この記事では、BGPで利用されるメッセージタイプについて、概要的な部分をまとめてみました。
次回の記事では、BGPの基本設定と実機確認をまとめてます。
ここではパケットキャプチャを利用し、細かい部分まで見てるので、参照いただければと思います。


