先明确你的“Overlay”场景
- 若指的是容器/集群里的覆盖网络(Overlay Network),优化重点在MTU、加密开销、控制面与数据面参数以及后端选择(如VXLAN或Geneve)。
- 若指的是OverlayFS(文件系统层叠),它主要影响存储I/O,网络优化应聚焦宿主机的物理网卡、驱动、队列与协议栈设置。
容器与集群的 Overlay 网络优化
- 选择合适的后端与封装
- 数据中心/同域优先VXLAN;跨域或需要更丰富元数据时选Geneve。
- 避免不必要的IPsec/TLS封装叠加,减少额外加密/解密CPU与包头开销。
- 调整 MTU 避免分片
- 计算方式:隧道MTU ≈ 物理MTU − 封装开销(VXLAN通常约50字节;Geneve约54–58字节,取决于选项)。
- 例:物理MTU 1500 → VXLAN建议1450;在Linux接口设置:ip link set dev eth0 mtu 1450。
- 控制面与数据面参数
- 启用BGP/OSPF等控制面时,合理设置Keepalive/Hello与收敛参数,减少拓扑抖动时的收敛时间。
- 数据面:启用GRO/LRO在物理口合并大包,减少CPU软中断;在虚拟化/容器veth上按需关闭GRO/LRO以避免隧道封装异常。
- 调整队列与中断绑定:将网卡队列与CPU亲和绑定,减少跨核抖动;使用RPS/RFS提升软中断处理能力(高并发短连接尤佳)。
- 后端与隧道细节
- 使用多播减少ARP/ND泛洪(受限于交换机支持);跨三层网络必须单播封装。
- 合理规划VNI/租户数量,避免过大表项影响转发与ACL规模。
- 观测与验证
- 持续观测P95/P99时延、丢包、重传、CPU软中断占比;用ethtool -S与ip -s link定位瓶颈。
- 对跨机房链路,优先链路聚合/更优路径与就近服务发现,降低跨域隧道时延。
Docker Swarm 或 Kubernetes 的落地要点
- Docker Swarm
- 创建覆盖网络时显式设置MTU:docker network create -d overlay --opt com.docker.network.driver.mtu=1450 my_overlay。
- 合理设置子网与网关,避免与服务网段冲突;节点间UDP 4789(VXLAN)需放通。
- Kubernetes(以主流CNI为例)
- Calico:启用IPIP/VXLAN时设置MTU;开启Felix/节点污点与拓扑感知路由减少跨节点流量。
- Flannel:选择VXLAN或host-gw(同二层优先host-gw,零封装开销);为节点网卡设置MTU 1450。
- Cilium:优先Geneve或VXLAN;开启eBPF Host-Routing、XDP加速与巨型帧(物理网络支持时)。
- 统一在集群层面设置DNS缓存(如CoreDNS)与服务端点连接复用,降低短连接开销。
宿主机与物理层的网络优化(OverlayFS或容器宿主机通用)
- 驱动与固件
- 使用厂商最新驱动与固件;优先支持**多队列(RSS)与硬件卸载(GRO/LRO、TSO、GSO、Checksum Offload)**的网卡。
- 队列与中断
- 开启多队列并将队列中断绑定到不同CPU:ethtool -L eth0 combined 8;通过**/sys/class/net/eth0/queues/rx-*/rps_cpus配置RPS/RFS**。
- 协议栈与邻居表
- 适度增大邻居表与连接跟踪:sysctl -w net.ipv4.neigh.default.gc_thresh1=512;net.netfilter.nf_conntrack_max=4194304(按内存与场景调优)。
- 中断与调度
- 将网络中断绑定到独占CPU,避免与业务争用;对高并发服务,考虑CPU隔离/独占与中断亲和。
- 存储与网络协同
- OverlayFS场景下,将日志/缓存与镜像层放在高性能存储(如NVMe)并合理设置写回/同步策略,避免I/O抖动放大网络时延。
快速检查清单与验证
- 基础连通与MTU
- ip addr/link、ping -M do -s 1472 <网关IP>(验证不分片可达);必要时将接口MTU调至1450并复测。
- 路由与隧道
- ip route/neighbor、bridge/ovs/vxlan/fdb/geneve表项是否正确;跨节点时确认4789/UDP或Geneve端口放通。
- 观测与定位
- sar -n DEV、ethtool -S、ip -s link、conntrack -L;结合应用P95/P99时延与重传确认优化成效。
- 防火墙与安全组
- 放通Overlay所需端口(如VXLAN 4789/UDP),避免策略误拦截导致隧道不稳定。