VXLAN是为云计算而生的,考虑到虚拟机在运行过程中,如果想在不改变IP地址的前提下,在不同地域间移动,在VXLAN之前,技术上是做不到的。
VXLAN的思想就是,把一个虚拟的二层网络(以太网),叠加在已有的三层网络(IP网)之上。这样不同地域的虚拟机可以通过VXLAN技术,好像都处于同一个局域网之中。这样,VM在不同地域间移动时,因为就像在同一个局域网中移动一样,所以IP地址可以保持不变。
VXLAN桢结构:
VXLAN也可以说是在现有的三层网络中,建立一个新的,虚拟的二层网络。这个虚拟的二层网络,好比是在下面的三层网络中建立了一条隧道。隧道两端的终点需要一个特殊的设备,称为虚拟隧道端点(VXLAN Tunnel End Point 或 VTEP)。
在VXLAN头中,有一个24比特的VNI,用于唯一标识一个VXLAN。
VNI/VXLAN隧道/VXLAN包头,都在VTEP中处理,虚拟机是看不到它们的。VTEP可能实现在交换机或服务器上,可以是硬件或软件。
举个简单例子
同一个局域网内,有两个虚拟机。分别通过网卡nic0互连。
在第一个虚拟机中输入:
sudo ip link add name vxlan-nic type vxlan id 1234 group 224.0.0.123 dev nic0 dstport 4789
sudo ip link set vxlan-nic up
sudo ip addr add 10.0.0.1/24 dev vxlan-nic
第二个虚拟机中输入:
sudo ip link add name vxlan-nic type vxlan id 1234 group 224.0.0.123 dev nic0 dstport 4789
sudo ip link set vxlan-nic up
sudo ip addr add 10.0.0.2/24 dev vxlan-nic
两个虚拟机就可以在虚拟局域网(10.0.0.0/24 )中通信了。