はじめに
こんにちは。ネットワークエンジニアの「だいまる」です。
今回は、最近読んだRFC4360(BGP 拡張コミュニティ)について、まとめていきたいと思います。
このRFCを読んだだけでは理解できない部分が多かったので、今後理解が深まる度にこの記事を更新していきたいと思います。
理解力が乏しいのでお許しを・・・・・
RFC4360を読んでみたけどわからんのでただまとめてみた
拡張コミュニティの概要
BGPの拡張コミュニティは、Type16のTransitiveオプションになります。
Transitiveとは、BGPルータが理解できない可能性もあるが、ネイバーにそのまま通知する属性のこと
コミュニティは基本的に8オクテットで構成され、Typeフィールドが「1 or 2オクテット」になります。
この「1 or 2」というのは、通常のコミュニティ(IANAで定義されたコミュニティ)が「1オクテット」、拡張コミュニティが「2オクテット」となります。
残りのオクテット数がValueフィールドとなります。
では、フィールドの詳細を見ていきます。
Type Field
今回まとめているのは拡張コミュニティのため、2オクテット時のフィールドについてまとめていきます。
このRFCでは、最初の1オクテットを「High-Order Octet」、後半の1オクテットを「Lower-Order Octet」と定義しています。
「High-Order Octet」は、IANAビットとTransitiveビットの2つがあります。
項目 | 詳細 |
IANAビット(I) | – Value 0:First Come First Serveポリシーを適用 ※First Come First Serve:BGP経路学習時、一番最初に来た経路を優先とするポリシー – Value 1:Standard Action or Ealry IANAポリシー ※定義されたポリシー |
Transitiveビット(T) | – Value 0:Transitive – Value 1:non-Transitive |
後半のオクテットは、拡張コミュニティのより詳細なタイプを定義するために利用されます。
Value Fieldは、上記のType Fieldによって異なるため、この後のセクションでまとめていきます。
BGP拡張コミュニティのタイプフィールドの定義
このセクションでは、拡張コミュニティで利用されるTypeフィールドのテンプレートについてまとめていきます。
主にAS番号を用いた拡張コミュニティとIPアドレスを用いた拡張コミュニティの2種類が存在します。
AS特定拡張コミュニティ
このコミュニティは、2オクテットのTypeフィールドと6オクテットのValueフィールドで構成されています。
Typeフィールドの前半1オクテット(High-Order Octet)は「0x00 or 0x40」であり、後半1オクテット(Lower-Order Octet)は「Sub-Type」を示すために利用されます。
Valueフィールドは「Global Administrator(2オクテット)」と「Local Administrator(4オクテット)」の2つから構成されます。
「Global Administrator」はIANAに割り当てられているAS番号が設定されます。
一方、「Local Administrator」は任意の値を設定でき、設定された値の意味はコミュニティのサブタイプで定義されるとのことです。
IPv4特定コミュニティ
このコミュニティも同様にTypeフィールドが2オクテット、Valueフィールドが6オクテットです。
こちらのTypeフィールドの前半1オクテット(High-Order Octet)は「0x01 or 0x41」であり、後半1オクテット(Low-Order Octet)は「Sub Type」を示します。
Valueフィールドも同様に、「Global Administrator(4オクテット)」と「Local Administrator(2オクテット)」から構成されます。
「Global Administrator」は、Internet Registries(IR)に登録されたIPv4 Unicastを設定します。
また、「Local Administrator」は、自由に設定ができ、意味はコミュニティ値で定義されるようです。
Opaque拡張コミュニティ
この拡張コミュニティは、先程のテンプレートと同様にTypeフィールドが2オクテット、Valueフィールドが6オクテットで構成されています。
今回勉強したかったのはこれなんだけど、情報があまりなかった・・・
Typeフィールドの前半1オクテット(High-Order Octet)は「0x03 or 0x43」であり、後半1オクテット(Low-Order Octet)は「Sub-Type」となります。
ValueフィールドはIANAに定義された値が設定されます。
Route Target(RT)・Route Originコミュニティ
この2つのコミュニティは、違うRFCである「RFC4364」で定義されているようです。
そのため、理解を深めていく上でまとめることができるのであれば、更新したいと思います。
最後に
今回は、RFC4360の内容の一部をざっくりまとめてみました(2024/05/31時点)
これからこの部分の理解が深まれば、都度都度更新していきたいと思います。