VXLAN
イーサネットフレームをUDPでカプセル化し、IPネットワークを通して運ぶトンネル技術である。離れた場所の端末を論理的に同じLANへ接続し、利用者ごとにネットワークを分離できる。
イマシルちゃんの解説
別々のラックに置いたサーバでも、同じLANにつなぎたいことがあるんだ。
でも、間にあるルータはそのままのLANのフレームを遠くまで運んではくれないよ。
VXLANは、元のフレームをIPパケットに包んで届ける技術なんだ。
包む入口と取り出す出口をVTEPと呼ぶよ。
包みの外側には出口の宛先、内側にはサーバ同士の通信を入れるんだ。
さらにVNIという番号を付けて、どの仮想的なLANの通信かを区別するよ。
同じ物理ネットワークを使いながら、サーバの場所と所属するLANを分けて考えられるんだね。
この解説はわかりやすかったですか?
より深い解説
IPネットワーク上にLANを構成する
VXLANはVirtual eXtensible Local Area Networkの略で、RFC 7348に基本動作が記載されている。レイヤー2のフレームをレイヤー3のネットワーク上で運ぶため、途中にルータがあっても端末同士を同じ論理的なLANへ収容できる。
土台となるIPネットワークをアンダーレイネットワーク、その上に構成する仮想的な接続をオーバレイネットワークという。アンダーレイのルータは外側のIPアドレスで転送する。各テナントの端末のMACアドレスをすべて覚える必要はない。
VXLANはフレームを運ぶデータプレーンの技術である。どの端末がどのトンネルの先にいるかを知る方法には複数あり、データから学習する方式のほかにEVPNで到達情報を交換する方式もある。
端点と識別番号の役割
VTEP(VXLAN Tunnel End Point)はトンネルの端点である。サーバ側から受信したフレームをカプセル化し、反対側では外側のヘッダーを取り除いて元のフレームを取り出す。物理スイッチに実装する場合も、仮想化基盤のソフトウェアに実装する場合もある。
VNI(VXLAN Network Identifier)は論理的なネットワークを識別する24ビットの番号である。番号空間は2の24乗、すなわち16,777,216通りで約1,677万に相当する。VLAN IDの12ビットより大きな番号空間を持ち、多数のテナントを分離しやすい。ただし、装置が保持できるVNI数やMACアドレス数は実装上の制約を受ける。
| 識別する対象 | 用いる情報 | 意味 |
|---|---|---|
| サーバ側のLAN | VLAN ID | 接続されたポートやタグ付きフレームを分類する |
| VXLANで構成するLAN | VNI | どの論理的なネットワークのフレームかを示す |
| トンネルの端点 | VTEPのIPアドレス | IPネットワークを通して届ける相手を示す |
サーバ側のVLAN IDとVNIは別の識別子である。例えば入口でVLAN 120をVNI 40,000に対応付け、出口では同じVNIをVLAN 220へ対応付けられる。元のVLAN IDが違っていても、同じ論理的なLANへ収容する構成が可能である。異なる論理的なLANをまたぐ通信には別途ルーティングが必要になる。
カプセル化して運ぶ手順
宛先端末の接続先が分かっているユニキャストでは、次の順序でフレームを届ける。
- 入口のVTEPがサーバ側のフレームを受信し、VLANなどの情報から対応するVNIを選ぶ。
- 宛先MACアドレスとVNIに対応するリモートVTEPを調べる。
- VXLANヘッダー、UDPヘッダー、外側のIPヘッダーなどを付ける。外側の宛先には相手VTEPのIPアドレスを使う。
- アンダーレイのルータが外側のIPアドレスで転送する。
- 出口のVTEPがヘッダーを取り除き、VNIに対応するLANへ元のフレームを転送する。
基本形式のVXLANヘッダーは8オクテットで、VNIやフラグなどを含む。元のイーサネットフレームのFCSはカプセル化の対象に含めない。外側のUDPの標準宛先ポート番号は4789である。
UDPの送信元ポートには、内側のフレームの情報から求めた値を使える。アンダーレイで複数の等コスト経路を使うECMPが、外側のアドレスとポート番号などを基に通信を振り分けるためである。内側の通信の違いを外側の情報にも反映させることで、特定の経路へ集中するのを抑えられる。
データから接続先を学習する
データプレーン学習では、受信したVXLANパケットから端末と接続先の対応を記録する。通常のスイッチが受信フレームの送信元を学習する考え方を、トンネルの先まで広げている。
| 学習する項目 | パケットから読む情報 |
|---|---|
| 相手端末 | 内側の送信元MACアドレス |
| 所属する論理的なLAN | VXLANヘッダーのVNI |
| 相手端末が接続されたトンネルの端点 | 外側の送信元IPアドレス |
宛先の対応が未学習なら、同じ論理的なLANの参加先へ広く転送する必要がある。ブロードキャスト、未学習のユニキャスト、マルチキャストをまとめてBUMという。RFC 7348の基本方式ではVNIをIPマルチキャストグループへ対応付け、複数のVTEPへ配送する。
EVPNと組み合わせる構成では、遠隔の端末情報を制御メッセージから学べる。BUMを送る方法として、入口のVTEPで複製して各参加先へユニキャストで送るイングレスレプリケーションも使える。VXLANというカプセル化方式と、到達情報の学習方法やBUMの配送方法は分けて理解する。
使うための条件と制約
最初に必要なのはVTEP間のIP到達性である。トンネルを設定しても外側のパケットが届かなければ通信できない。これに加えてVLANとVNIの対応、遠隔端末の到達情報、BUMの配送先を確認する。
カプセル化でパケットが大きくなるため、アンダーレイのMTUも必要条件になる。例えば内側のIPパケットが1,500オクテット、内側にVLANタグがなく外側がオプションなしのIPv4の場合、外側のIPパケット長は次のようになる。
1,500+14+8+8+20=1,550オクテット
追加分は内側のイーサネットヘッダー、VXLANヘッダー、UDPヘッダー、外側のIPv4ヘッダーである。外側のイーサネットヘッダーはこのIPパケット長に含めない。RFC 7348ではVTEP自身によるVXLANパケットのフラグメントを禁止し、途中で分割されたパケットも受信側で破棄され得るとしている。分割に頼らず通過できるMTUを確保する。
VNIによる分離は暗号化や相手の認証を意味しない。VXLAN自体に通信内容を暗号化する機能はなく、不正なVTEPからの通信を受け入れない構成やアクセス制御が必要である。また、サーバ側に作られたレイヤー2のループまでVXLANだけで防げるわけではない。
参考資料
- RFC 7348:VXLANの第4章と第5章で基本動作、学習、形式を確認できる。
- RFC 8365:EVPNを利用したオーバーレイはEVPNとVXLANの組合せやBUMの配送を説明している。
実際の試験ではここに出る!全1問
ネットワークスペシャリスト
- 午後Ⅱ