唐突ですが、昔の私は仮想マシン同士を繋ぐSDN上にVPNを実装しようとして見事に失敗したことがあります。
昨日パスタを茹でているさなか何故かリベンジしたくなってきた私は、まずは復習から入ることにしました。
というわけでして今回はVXLANについてになります。
VXLANを一言でまとめると、離れたL2ネットワーク同士を繋げるトンネリングプロトコルになります。
本来なら同一セグメント内でのみ通信が可能なEthernetですが、VXLANを用いることでL3ネットワークを超えてEthernetフレームが届くようになります。これによって拠点間を跨ぐ大規模なL2ネットワークを構成することが可能になります。
メリットとして、地理的に離れたネットワークにリソースを配置できるようになるため、柔軟性や可用性の向上が期待できます。
ではどのようにしてL3ネットワークを超えるのかということですが、VXLANでは通信の際、Ethernetフレームの前にVXLAN IDを付加します。
このVXLAN IDはUDPなのですが、もともとのEthernetフレームはUDPによってカプセル化されるので、UDPパケットとしてルーターを通りL3ネットワークを超えることができるというわけです。
L2NW インターネット上 L2NW
+------------+ +------------+------------+ +------------+
| Ethernet | ------> | VLAN ID | Ethernet | ------> | Ethernet |
+------------+ +------------+------------+ +------------+
Ethernet UDP Ethernet
名前がVLANに似ていますが、VLANと同様にネットワークを分割することができます。
VLANでは通常12bitのVIDフィールドが用意されており、4096個のタグを識別することができますが、
VXLANのVNIフィールドは24ビットであり、16777216個のIDを識別することが可能です。
※下記によるとVLANも4096*4096個まで拡張できるようです。
IEEE 802.1Q Frame Format - Huawei
参照:
https://www.rfc-editor.org/rfc/rfc7348
https://docs.citrix.com/ja-jp/citrix-adc/current-release/networking/vxlans.html