VXLAN 全称是 Virtual eXtensible Local Area Network,虚拟可扩展的局域网。它是一种 overlay 技术,通过三层的网络来搭建虚拟的二层网络
VXLAN 在现有的二层网络上 覆盖 一层虚拟的、由内核VXLAN模块负责维护的二层网络(注意是内核模块)
使得 在这个 VXLAN 之上的 “主机” , 可以是 虚拟机 和 容器 , 在这个二层网络上 像 在同一个局域网中那样 自由通信。 这些 虚拟机 和 容器 可以在不同的物理机 上。
VXLAN 会在宿主机上设置一个特殊的网络设备作为 隧道 的两端。这个设备叫做 VTEP (VXLAN tunnel end point 虚拟隧道端点)
VTEP 设备的作用其实根 flanneld 进程非常相似,但是它封装和解析的是 二层数据帧,而且这部分工作的执行流程全部是在内核里完成的。
外部以太网报头
外部IP报头
外部UDP报头
VXLAN Header
内部以太网报头
内部IP报头
…
在flannel中,宿主机上名叫 flannel.1 的设备就是 VLAN所需的VTEP设备,它既有IP地址,也有MAC地址