VXLAN结合OVS的场景
VXLAN 和 OVS(Open vSwitch)结合,是在 Linux/虚拟化/云环境中搭建软 VXLAN 网络的典型方案:OVS 负责在宿主机上“虚拟出交换机 + 隧道端点(VTEP)”,用 VXLAN 把不同宿主机的虚拟网络打通,实现多租户、跨节点的大二层网络。下面分几个部分说清这个组合。一、整体角色分工VXLAN 负责什么?把二层以太网帧封装在 UDP/IP 中,在三层网络上“打隧道”,用 24bit VNI 标识虚拟网络,实现跨机房/跨可用区的逻辑二层域。OVS 负责什么?在每台物理机/宿主机上提供虚拟交换机功能:管理虚拟机/容器的虚拟网卡(veth、tap);做普通二层交换、VLAN/VXLAN 隧道封装/解封装;通过流表(OpenFlow)或 ovs-vsctl 配置,实现数据平面转发 + 部分控制逻辑。两者结合后的效果每台装了 OVS 的机器,就是一个VTEP 节点;多台 OVS 之间通过 VXLAN 隧道相连,组成一张逻辑大二层网络;上层业务(虚机/容器)只看到“自己在一个普通 L2 网段里”,完全不关心跨了什么网络。二、OVS 中 VXLAN 的数据路径示意以“VM1 在 Host1,VM2 在 Host2,同一 VNI”为例,用文字画一下数据流动:VM1 发普通以太网帧源 MAC = VM1,目的 MAC = VM2,VLAN/VNI 暂时没体现在帧上。OVS 在 Host1 的处理入端口:tap 口(接 VM1);流表匹配:根据 VM1 的 MAC 学习/查表,发现目标 MAC 在Host2 的 VTEP IP;动作:给该帧加 VXLAN 头(VNI=xxx)、UDP 头、外层 IP(源=Host1_VTEP_IP,目=Host2_VTEP_IP)、外层 MAC;出端口:连接到物理网卡的 uplink 口,发到物理网络。物理网络只做普通 IP 转发看到的是两个 VTEP IP 之间的普通 IP 包,不解析 VXLAN 内容。OVS 在 Host2 的处理入端口:uplink 口收到 VXLAN 包;流表匹配:识别是 VXLAN 包,VNI=xxx,解封装,得到原始以太网帧;查表找到目标 MAC 对应本机 tap 口(接 VM2),从对应端口送出。