19、docker跨主机网络 Overlay\Underlay
参考来源: Overlay和Underlay网络协议区别及概述讲解 ,Docker的跨主机网络,Docker 三种网络驱动,bridge,overlay创建,多主机网络共享 overlay,纳米ai,什么是VXLAN前提说明跨主机网络模型有两种网模型,其中有五种代表方案
·
Docker的跨主机网络
本章要点:Docker的跨主机网络-Overlay、Underlay网络模型以及五种模式(Docker Overlay\Macvlan\Flannel\Weave\Calico)
参考来源: Overlay和Underlay网络协议区别及概述讲解 ,Docker的跨主机网络,Docker 三种网络驱动,bridge,overlay创建,多主机网络共享 overlay,纳米ai,什么是VXLAN
跨主机网络模型
-
前提说明
- Docker默认的网络的类型是bridge, docker容器网络互联,可以在单宿主机网络里面通实现容器间互通
- 但是跨主机的时候bridge是不可用的,可以使用overlay和underlay实现
-
跨主机网络模型有两种网模型,其中有五种代表方案
- 两种网络类型
- Overlay 网络:建立在 Underlay 之上的虚拟逻辑网络,依赖隧道技术(如 VxLAN)实现跨主机容器通信,不能独立存在,
- Overlay网络通过在多个主机上创建虚拟的子网来实现这一点,使得这些子网中的容器可以像在同一子网中一样相互通信。这对于构建跨多个Docker主机的服务集群非常有用。
- Underlay 网络:传统物理基础设施网络(由交换机、路由器组成),是 Overlay 的底层支撑,为其提供实际数据传输服务。
- 在使用Docker时,可以通过配置Docker容器使用宿主机的网络接口(例如,通过
--net=host参数)来让容器直接使用宿主机的网络。这种方式下,容器可以直接访问宿主机的网络堆栈,从而实现与外部世界的直接通信。
- 在使用Docker时,可以通过配置Docker容器使用宿主机的网络接口(例如,通过
- 二者关系类似 “虚拟机与物理机”:Underlay 是实体基础设施,Overlay 是依托软件虚拟化的上层网络。
- Overlay 网络:建立在 Underlay 之上的虚拟逻辑网络,依赖隧道技术(如 VxLAN)实现跨主机容器通信,不能独立存在,
- 两种网络类型
Overlay 网络模型详解
- 核心技术
- 主流隧道协议为 VxLAN(L2 over L4 封装模式),将二层报文封装到 UDP 传输,突破 “二层域” 规模限制。
- 需 VTEP(隧道出入口设备)负责报文封包 / 解包,Linux 内核 3.7 + 原生支持 VxLAN 模块。
- 依赖 key-value 数据库(如 Etcd、Consul)存储网络状态信息(网络、端点、IP 等)。
- 通信机制
- 容器报文经宿主机封装后,通过 VTEP 之间的点对点隧道传输,源 VTEP 需通过 “多播” 或 “控制中心(如 Etcd)” 获取目标 VTEP 地址。
- 支持集中式 / 分布式网关,分布式网关可避免流量瓶颈。
- 代表方案
- Docker Overlay、Flannel vxlan、Weave 均属于此类。
Underlay 网络模型详解
- 核心技术
- 直接暴露宿主机底层网络接口给容器,无需报文封装,依赖以太网、路由协议等驱动。
- 主流实现方案有三类:
- MAC VLAN:虚拟多个独立 MAC 地址的接口,需物理接口工作在混杂模式,适用于本地网络。
- IP VLAN:共享物理接口 MAC 地址,支持 L2(网桥模式)和 L3(路由模式),兼容防 MAC 欺骗策略。
- 直接路由:放弃 L2 连通性,通过路由协议(如 BGP)实现 L3 通信,代表方案为 Flannel host-gw、Calico。
- 代表方案
- MAC VLAN、IP VLAN、Flannel host-gw、Calico 均属于此类。
代表方案模型
| 网络模型 | 类型 | 数据封装方式 | 典型协议/技术 | 性能特点 | 典型应用场景 |
|---|---|---|---|---|---|
| Docker Overlay | Overlay(高层封装) | VxLAN隧道封装(MAC-in-UDP) | VxLAN | 扩展性好,灵活性高,有封装开销 | 跨主机容器通信、多租户隔离 |
| Macvlan | Underlay(低层直接) | 无封装,直接通过物理网络层转发 | VLAN | 接近物理网络性能,延迟低 | 高性能需求、低延迟应用 |
| Flannel | 混合型 | 支持VXLAN(Overlay)或Host-gw(Underlay) | VXLAN/UDP/host-gw | 依赖后端模式,host-gw性能更优 | Kubernetes默认网络插件 |
| Weave | Overlay(高层封装) | VxLAN隧道封装 | VxLAN | 中等开销,支持加密 | 安全敏感的跨主机通信 |
| Calico | Underlay(低层直接) | 无封装,基于BGP路由直连 | BGP/IPIP | 接近裸机性能,支持高级策略 | 大规模集群、网络安全策略管控 |
- **docker overlay: **
docker swarm init初始化生成 - Flannel的混合特性, Flannel支持多种后端,其中:
- VXLAN模式属于Overlay,需封装数据包;
- host-gw模式属于Underlay,通过主机路由表直接转发,无封装
- 性能与场景建议
- 高性能场景:优先选择Underlay模型(如Macvlan、Calico),避免封装开销;
- 跨云/大规模扩展:Overlay模型(如Docker Overlay、Weave)更灵活;
- 策略管控需求:Calico支持细粒度网络策略,适合安全敏感环境。
- 配置注意事项
- Overlay网络 需要Docker引擎在每个参与的主机上正确配置,并且通常需要在Docker Swarm模式下使用,因为Overlay网络是为Swarm模式设计的。
- Underlay网络 需要确保Docker容器能够访问宿主机的网络接口。在某些环境中(如云平台),可能需要额外的配置来允许容器访问宿主机的网络。
- Bridge网络 主要用于单机环境或需要隔离的简单场景。
选型核心原则
- 按环境限制选型
- 虚拟化环境(如 OpenStack)/ 公有云:底层限制多,优先选 Overlay 方案(如 Flannel-vxlan、Weave),公有云建议用厂商专属 CNI 插件(如阿里云 Terway)。
- 物理机环境:底层限制少,优先选 Underlay / 路由模式(如 Calico-BGP、Flannel-hostgw),避免封装性能损耗。
- 按需求补充选型
- 需高扩展性、兼容现有网络:选 Overlay。
- 需极致性能、多租户隔离:选 Underlay(如 MAC VLAN 适合多租户,Calico 适合精细流量控制)。
- Overlay 胜在灵活性与兼容性,Underlay 胜在性能与简洁性,实际选型需先明确底层环境是否支持(如公有云 / 虚拟化优先 Overlay),再结合性能、扩展性、隔离性等需求决策。
Overlay 与 Underlay 网络核心差异对比表
| 对比维度 | Overlay 网络 | Underlay 网络 |
|---|---|---|
| 核心定义 | 建立在 Underlay 之上的虚拟逻辑网络,依赖隧道技术实现跨主机通信 | 传统物理基础设施网络,由交换机、路由器组成,是底层支撑网络 |
| 本质属性 | 软件虚拟化层级,无法独立存在 | 实体网络设备组成的基础设施层 |
| 依赖关系 | 完全依赖 Underlay 网络提供数据传输服务 | 为 Overlay 提供底层支撑,可独立运行 |
| 核心技术 | VxLAN 隧道协议(L2 over L4 封装)、VTEP 设备、key-value 数据库 | MAC VLAN、IP VLAN、直接路由(BGP 等协议) |
| 报文处理 | 需封装 / 解包(二层报文封装到 UDP),有额外开销 | 无需封装,数据包直接传输 |
| 性能表现 | 因封装开销,性能略低 | 无额外开销,性能更优 |
| 扩展性 | 支持更多二层网段,突破物理网络限制,灵活性强 | 受底层物理网络拓扑限制,扩展性较弱 |
| 底层要求 | 对底层网络无特殊要求,兼容性好 | 有特定限制(如直接路由需主机在同一 L2 网络) |
| 部署复杂度 | 需配置隧道、VTEP、key-value 数据库,复杂度较高 | 直接复用物理网络,配置简单,部署便捷 |
| 隔离性 | 基于虚拟网络隔离,隔离效果中等 | 支持多租户强隔离(如 MAC VLAN 隔离级别高于网桥) |
| 代表方案 | Docker Overlay、Flannel vxlan、Weave | MAC VLAN、IP VLAN、Flannel host-gw、Calico |
| 适用环境 | 虚拟化环境(OpenStack)、公有云(底层限制多) | 物理机环境(底层限制少)、本地网络 |
| 关键限制 | VXLAN 报文不能分片,需调整 MTU 值 | MAC VLAN 需混杂模式(公有云可能不支持)、部分方案受 MAC 地址数量限制 |
代表模式示例
更多推荐



所有评论(0)