首页主机资讯如何配置Overlay网络的MTU

如何配置Overlay网络的MTU

时间2025-11-21 00:40:04发布访客分类主机资讯浏览810
导读:Overlay 网络 MTU 配置指南 一、先确定正确的 MTU 值 基本原则:Overlay 的封装会在原始数据包外增加头部,导致可用的负载变小。因此覆盖网络的 MTU 必须低于物理网卡(NIC)MTU,预留封装开销。常见取值: VX...

Overlay 网络 MTU 配置指南

一、先确定正确的 MTU 值

  • 基本原则:Overlay 的封装会在原始数据包外增加头部,导致可用的负载变小。因此覆盖网络的 MTU 必须低于物理网卡(NIC)MTU,预留封装开销。常见取值:
    • VXLAN:预留约50 字节,公式为“覆盖 MTU = 物理 MTU − 50”。例如物理 1500 → 14509000 → 8950
    • IP-in-IP:预留约20 字节,公式为“覆盖 MTU = 物理 MTU − 20”。
    • Geneve:预留约100 字节,公式为“覆盖 MTU = 物理 MTU − 100”。
    • 其他封装(如 NVGRE)也需按实际封装头开销预留。以上规则在容器与 SDN 场景中通用,用于避免分片与性能劣化。

二、Docker Swarm 场景

  • 何时需要调整:当物理网络 MTU 为1500且未启用覆盖加密时,通常无需调整;若启用加密或物理网络为巨帧,则需按上节规则下调覆盖 MTU。
  • 关键网络与位置:
    • ingress 网络(Swarm 服务发布端口的负载均衡网):需重建并指定 MTU。
    • docker_gwbridge(容器到外部网络的网桥):需重建并指定 MTU。
    • 自定义 overlay 网络:创建时通过驱动选项指定 MTU。
  • 操作步骤(示例将覆盖 MTU 设为 1450,物理 MTU 为 1500):
    1. 在 Swarm 初始化/加入前,清理并重建 docker_gwbridge(保留原 Subnet):
      • 记录 Subnet:docker network inspect docker_gwbridge
      • 停用并删除旧网桥:ip link set docker_gwbridge down;ip link del dev docker_gwbridge
      • 重启 Docker 后重建:docker network create --subnet < 原Subnet> --opt com.docker.network.bridge.name=docker_gwbridge --opt com.docker.network.bridge.enable_icc=false --opt com.docker.network.bridge.enable_ip_masquerade=true --opt com.docker.network.driver.mtu=1450 docker_gwbridge
    2. 删除并重建 ingress 网络(保留原 Subnet/Gateway):
      • 记录 Subnet/Gateway:docker network inspect ingress
      • 删除:docker network rm ingress
      • 重建:docker network create --driver overlay --ingress --subnet=< 原Subnet> --gateway=< 原Gateway> --opt com.docker.network.driver.mtu=1450 ingress
    3. 创建自定义 overlay 网络:
      • docker network create -d overlay --opt com.docker.network.driver.mtu=1450 --attachable my-overlay
    4. 验证:ip link 与 docker network inspect 应显示各接口 MTU 为 1450
    5. 注意:修改 ingress 前需先停止所有发布端口的服务;重建 docker_gwbridge 需在节点加入 Swarm 之前完成。

三、Kubernetes 常见方案

  • Calico(VXLAN 或 IPIP 覆盖)
    • 推荐值:物理 1500 → 1450(VXLAN)/ 1480(IPIP);物理 9000 → 8950(VXLAN)/ 8980(IPIP)
    • 配置方式:
      • 工作负载接口 MTU:kubectl patch configmap/calico-config -n kube-system --type merge -p ‘{ “data”:{ “veth_mtu”: “1440”} } ’
      • 隧道 MTU(与 veth_mtu 一致):在 FelixConfiguration 中设置 tunnel MTU(或使用节点选择器/节点标签统一下发)。
      • 变更后需重启 calico-node 使既有 Pod 生效。
  • OpenShift SDN(VXLAN)与 OVN-Kubernetes(Geneve)
    • SDN(VXLAN):覆盖 MTU 至少比 NIC MTU 小50 字节(如 1500 → 14509000 → 8950)。
    • OVN-Kubernetes(Geneve):覆盖 MTU 至少比 NIC MTU 小100 字节(如 1500 → 14009000 → 8900)。
    • 建议:若需超过 1 Gbps 或降低 CPU 占用,启用网卡 VXLAN offload;注意 offload 不降低延迟。

四、OpenStack Neutron 场景

  • 控制面配置:在 /etc/neutron/plugins/ml2/ml2_conf.ini 中设置全局或按物理网络映射的 MTU:
    • 示例:vxlan_mtu = 1450;或 physical_network_mtus = physnet1:1600(为指定物理网络设置不同 MTU)。
  • 生效与验证:重启 neutron-server 等服务,创建/更新网络后通过 neutron net-show 或实例内 ip link 校验 MTU。
  • 提示:若物理网络启用巨帧,覆盖与物理侧需一致规划,避免中间设备不支持导致分片或性能问题。

五、Windows 与硬件卸载场景

  • Windows Server NVGRE:在未启用巨帧时,虚拟机网卡(vmNIC)MTU 会自动下调约42 字节(如 1500 → 1458)以避免封装后分片;若提供网络启用巨帧,则不下调。
  • 硬件卸载与 SDN:部分网卡/驱动支持通过 *EncapOverhead 关键字自动计入封装开销(如设为 160),与 *JumboPacket 共同决定播发 MTU;可用 PowerShell 的 Test-EncapOverheadSettings 与 Test-LogicalNetworkSupportsJumboPacket 验证端到端巨帧支持。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何配置Overlay网络的MTU
本文地址: https://pptw.com/jishu/752659.html
Linux Overlay的性能优化技巧 nohup命令在Linux中如何与其他命令结合使用

游客 回复需填写必要信息