Overlay网络
underlay网络
underlay 网络指的是物理网络或传统的二层/三层网络(如以太网、VLAN、物理交换机、路由器等),即数据中心或主机之间真实存在的网络基础设施。存在于真实网络设备上的网络
overlay网络
overlay 网络是在 underlay 网络之上,通过隧道技术(如 VXLAN、GRE、IP-in-IP 等)构建的虚拟网络。它将不同主机上的容器/虚拟机通过虚拟隧道连接起来,形成一个逻辑上的统一网络。为容器、虚拟机等提供跨主机的虚拟网络,实现多租户隔离、灵活的网络拓扑和自动化管理。 应用数据如果承载了IP协议,overlay则是三层网络,如果承载了数据链路层协议就是二层网络.
Linux隧道技术
tun
- 定义:tun 是 Linux 提供的一种虚拟网络设备(TUN/TAP 设备中的 TUN),工作在三层(网络层,IP 层)。
- 作用:用于点对点的 IP 隧道,常见于 VPN(如 OpenVPN、WireGuard)等场景。
- 原理:
- 应用程序可以像操作真实网卡一样操作 tun 设备。
- 通过 tun 设备发送的 IP 包会被用户空间程序捕获,然后可以进行加密、封装等处理,再通过物理网络发送到远端。
- 远端收到后解封装,再通过 tun 设备注入到目标主机的网络协议栈。
- 特点:
- 只处理 IP 层数据包(不处理以太网帧)。
- 适合点对点、加密传输、VPN 等场景。
- 性能较高,配置灵活。
vxlan
- 定义:VXLAN(Virtual Extensible LAN)是一种基于 UDP 的三层网络隧道协议,用于在物理网络之上构建虚拟二层网络(overlay)。
-
作用:实现跨主机的二层网络互通,常用于容器、虚拟机的 overlay 网络(如 Kubernetes 的 Flannel、Calico VXLAN 模式)。
-
原理:
- VXLAN 将原始的以太网帧封装在 UDP 数据包中,外层 IP/UDP 头部用于在物理网络中传输。
- 每个 VXLAN 网络有唯一的 VNI(VXLAN Network Identifier),支持大规模多租户隔离。
-
目标主机收到 UDP 包后解封装,还原出原始以太网帧,交给目标容器/虚拟机。
-
特点:
- 支持大规模二层网络扩展(最多 1600 万个网络)。
- 适合云原生、数据中心、容器编排等场景。
- 需要物理网络支持 UDP 转发,部分硬件可做 VXLAN offload 加速。
对比
- tun:不解析 IP,只是“搬运工”。
- vxlan:利用 IP 层进行寻址和转发,实现 overlay 网络的自动寻址和大规模扩展。
Pod跨节点通信过程
场景假设 Node1 上有 PodA,IP 为 10.244.1.2 Node2 上有 PodB,IP 为 10.244.2.3 两节点通过物理网络(underlay)互通 使用 VXLAN 作为 overlay 网络方案
过程
1. PodA 发送数据包
- PodA(10.244.1.2)要访问 PodB(10.244.2.3),发出目标为 10.244.2.3 的数据包。
- PodA 的默认网关是本节点的 CNI 虚拟网桥(如 cni0、flannel.1)。
2. 虚拟网桥转发
- 数据包到达 Node1 的虚拟网桥(如 flannel.1)。
- 虚拟网桥根据路由表发现:目标 IP(10.244.2.3)属于 Node2。
3. Overlay 封装(VXLAN)
- Flannel/Calico 等 CNI 插件在 Node1 上查找 Node2 的物理 IP(如 192.168.1.2)。
- 使用 VXLAN 协议,将原始数据包(源 10.244.1.2,目标 10.244.2.3)封装在一个新的 UDP 包中:
- 外层源 IP:Node1 的物理 IP(如 192.168.1.1)
- 外层目标 IP:Node2 的物理 IP(如 192.168.1.2)
- UDP 端口:VXLAN 默认 4789
- VXLAN Header:包含 VNI(虚拟网络标识
4. 物理网络传输(Underlay)
- 封装后的 UDP 包通过物理网络从 Node1 发送到 Node2。
- 物理网络只负责转发外层 IP 包,不关心内部的 Pod 网络
5. Node2 解封装
- Node2 上的 VXLAN 设备(如 flannel.1)收到 UDP 包。
- VXLAN 设备解封装,取出原始的 Pod 网络包(源 10.244.1.2,目标 10.244.2.3)。
6. 虚拟网桥转发到 PodB
- 解封装后的包被送到 Node2 的虚拟网桥。
- 虚拟网桥根据目标 IP(10.244.2.3)将包转发到 PodB 的 veth 设备。
- PodB 收到数据包,通信完成。
7. 路由和 ARP 管理
- CNI 插件负责维护 Pod 网段与节点物理 IP 的映射(如 etcd 存储,或节点本地配置)。
- 通常每个节点分配一个 Pod 子网,节点间通过 overlay 网络互通。
PodA(10.244.1.2) --veth--> cni0/flannel.1 --VXLAN封装-->
物理网络(192.168.1.1 -> 192.168.1.2) --VXLAN解封装-->
flannel.1/cni0 --veth--> PodB(10.244.2.3)