Docker的跨主机网络补充

本章要点:Docker的跨主机网络-VXLAN与VTEP理论补充

参考来源: 接上章纳米ai什么是VXLAN

VXLAN

  • 理论

    • VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网),是由IETF定义的NVO3(Network Virtualization over Layer 3)标准技术之一,是对传统VLAN协议的一种扩展。VXLAN的特点是将L2的以太帧封装到UDP报文(即L2 over L4)中,并在L3网络中传输。

    • VXLAN本质上是一种隧道技术,在源网络设备与目的网络设备之间的IP网络上,建立一条逻辑隧道,将用户侧报文经过特定的封装后通过这条隧道转发。从用户的角度来看,接入网络的服务器就像是连接到了一个虚拟的二层交换机的不同端口上(可把蓝色虚框表示的数据中心VXLAN网络看成一个二层虚拟交换机),可以方便地通信。

      请添加图片描述

    • 全互联形态才能满足通信需求。就是VXLAN本质上是一种隧道技术,当源和目的之间有通信需求时,便在数据中心IP网络之上创建一条虚拟的隧道,透明转发用户数据。而数据中心内相互通信的需求众多,这种隧道的建立方式几乎

    • VXLAN可以提供一套方法论,在数据中心IP网络基础上,构建一张全互联的二层隧道虚拟网络,保证任意两点之间都能通过VXLAN隧道来通信,并忽略底层网络的结构和细节。从服务器的角度看,VXLAN为它们将整个数据中心基础网络虚拟成了一台巨大的“二层交换机”,所有服务器都连接在这台虚拟二层交换机上。而基础网络之内如何转发都是这台“巨大交换机”内部的事情,服务器完全无需关心。

      请添加图片描述

    • 原理在详见:什么是VXLAN

  • VXLAN与VLAN之间有何不同

    • 基本概念

      维度VLAN(虚拟局域网)VXLAN(虚拟扩展局域网)
      设计目标传统企业网络中隔离广播域,减少广播风暴,提高网络效率。数据中心/云环境中支持大规模多租户虚拟机动态迁移,突破VLAN的限制。
      核心技术基于802.1Q标签(插入以太网帧头),划分逻辑二层网络。基于隧道技术(MAC-in-UDP封装),在三层IP网络上构建虚拟大二层网络。
      标识方式使用12位VLAN ID,最多支持4094个逻辑网络(0和4095保留)。使用24位VNI(VXLAN Network Identifier),最多支持1677万个逻辑网络。
    • VXLAN与VLAN的核心差异及封装方式对比

      对比维度VLANVXLAN关键差异说明
      技术本质二层网络虚拟化技术三层隧道封装手艺VLAN基于二层隔离,VXLAN利用三层网络构建虚拟二层隧道
      标识符范围VLAN ID(12位,最多4094个)VNI(24位,支撑1600万个)VXLAN突破VLAN数量限制,满足大规模云环境租户隔离
      封装方式802.1Q标签(4字节) (插入以太网帧头)MAC-in-UDP封装(50字节) - 外层IP头(20字节) - UDP头(8字节) - VXLAN头(8字节) - 原始二层帧VXLAN将完整二层帧封装为UDP报文,利用IP网络传输;VLAN仅修改帧头
      跨域能力局限于同一物理二层网络协助跨三层网络/数据中心传输VXLAN通过IP隧道达成跨地域二层互通,破除VLAN地理限制
      关键组件协助VLAN的交换机VTEP(隧道端点)、VNIVTEP负责封装/解封装VXLAN报文,VNI标识虚拟网络
      广播处理限制在单一广播域内凭借IP组播(或SDN控制)模拟广播VXLAN需依赖组播或控制器建立广播,避免传统广播风暴
      典型应用场景企业部门隔离、中小型网络云数据中心、多租户环境、虚拟机迁移VLAN适用于简便隔离,VXLAN解决云化场景扩展性与迁移需求
      配置复杂度简便(端口划分)困难(需部署VTEP、隧道、组播等)VXLAN需额外协议栈支持,运维成本较高
      报文开销低(增加4字节)高(增加50字节)VXLAN封装可能引入延迟,对高性能网络需优化

VTEP

  • 理论

    • 定义与作用

      VTEP(VXLAN Tunnel Endpoint)即VXLAN隧道端点,是VXLAN网络的边缘设备,主要功能包括识别虚拟机所属的VXLAN、封装原始以太网帧为VXLAN报文(添加VXLAN头、UDP头和IP头)、解封装接收的VXLAN报文,以及凭借隧道在Underlay网络中传输数据

    • VTEP 关键技术参数

      维度说明
      核心功能报文封装/解封装、隧道建立、MAC地址学习、VNI(VXLAN网络标识符)管理
      标识符每个VTEP具有全网唯一的IP地址(优先利用Loopback地址)
      隧道特性由两个VTEP的IP地址唯一标识,支持多租户共享,基于UDP传输(默认端口4789)
      部署位置可位于物理交换机、服务器(如hypervisor中的vSwitch)或独立网络设备
      与VNI关系每个VTEP可关联多个VNI,VNI(24位)用于区分不同租户或广播域,支持1600万+网段
    • VTEP 工作流程与价值

      • 封装过程:接收虚拟机发送的以太网帧,添加VXLAN头(含VNI)、UDP头和外层IP头(源IP为本地VTEP地址,目的IP为对端VTEP地址)

      • 解封装过程:接收VXLAN报文后,剥离外层IP头、UDP头和VXLAN头,将原始以太网帧转发至目标虚拟机

      • 核心价值:突破传统VLAN 4096个网段的限制,支持跨三层网络的大二层扩展,满足虚拟机跨数据中心迁移需求

  • veth 在 Docker 网络中的作用

    • 定义

      Docker 容器默认使用 bridge 网络模式,需通过虚拟设备实现网络隔离与通信。veth pair 是一对虚拟网卡,一端位于容器内(如 eth0),另一端连接宿主机网桥(如 docker0),实现容器与宿主机/其他容器的网络隔离与通信

    • veth 封装核心步骤

      步骤编号操作目标关键命令与配置说明
      1创建独立网络命名空间ip netns add ns1ip netns add ns2模拟两个隔离的容器网络环境,命名空间名称可自定义(如 ns1ns2
      2创建 veth-pair 设备ip link add veth0 type veth peer name veth1创建一对虚拟网卡 veth0veth1,自动绑定为双向通信通道
      3分配 veth 到命名空间ip link set veth0 netns ns1ip link set veth1 netns ns2veth0 分配给 ns1veth1 分配给 ns2,实现网络隔离
      4配置 IP 地址与启动设备ip netns exec ns1 ip addr add 192.168.1.1/24 dev veth0ip netns exec ns1 ip link set veth0 up (对 ns2 执行类似命令,IP 设为 192.168.1.2/24为命名空间内的 veth 设备分配 IP 并启动,子网掩码需一致(如 /24
      5关闭反向过滤规则echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter禁用 rp_filter 防止内核过滤跨命名空间的数据包
      6测试网络连通性ip netns exec ns1 ping 192.168.1.2ns1 ping ns2 的 IP,验证 veth-pair 通信是否正常