19、docker跨主机网络 Overlay\Underlay

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参数)来让容器直接使用宿主机的网络。这种方式下,容器可以直接访问宿主机的网络堆栈,从而实现与外部世界的直接通信。
      • 二者关系类似 "虚拟机与物理机":Underlay 是实体基础设施,Overlay 是依托软件虚拟化的上层网络。

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 地址数量限制

代表模式示例

相关推荐
承渊政道6 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
闲云自留地7 小时前
K8s 的记忆大脑!ETCD 集群部署、etcdctl 命令与备份恢复全通关
容器·kubernetes·etcd
爱和冰阔落10 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
严肃小白兔11 小时前
Cloudflare 更新 API Token 管理:从最小权限到自动化凭据安全
网络·安全·自动化
孙克旭_12 小时前
k8s基础组件与创建资源
运维·docker·容器·kubernetes
Linux-lucky1 天前
45-Linux学习之旅之防火墙与WEB加固
linux·前端·网络·学习·ubuntu
java_logo1 天前
Docker 部署 EmulatorJS:轻松搭建浏览器复古游戏平台
游戏·docker·容器·复古游戏·轩辕镜像·emulatorjs·红白机
博客zhu虎康1 天前
实现局域网P2P通信:内网发送消息
网络·网络协议·p2p
吴声子夜歌1 天前
Kubernetes权威指南——网络原理(一)
网络·容器·kubernetes
陈希1231 天前
Linux 服务器性能排查手册(2026):CPU、内存、磁盘IO、网络四大瓶颈定位
linux·服务器·网络