Docker的跨主机网络补充
本章要点:Docker的跨主机网络-VXLAN与VTEP理论补充
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的核心差异及封装方式对比
对比维度 VLAN VXLAN 关键差异说明 技术本质 二层网络虚拟化技术 三层隧道封装手艺 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(隧道端点)、VNI VTEP负责封装/解封装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模拟两个隔离的容器网络环境,命名空间名称可自定义(如 ns1、ns2)2 创建 veth-pair 设备 ip link add veth0 type veth peer name veth1创建一对虚拟网卡 veth0和veth1,自动绑定为双向通信通道3 分配 veth 到命名空间 ip link set veth0 netns ns1ip link set veth1 netns ns2将 veth0分配给ns1,veth1分配给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.2从 ns1pingns2的 IP,验证 veth-pair 通信是否正常
浙公网安备 33010602011771号