04 云上虚拟网络实测:VPC/子网内网带宽、时延矩阵与公网对比 04 云上虚拟网络实测VPC/子网内网带宽、时延矩阵与公网对比本篇是「基于华为云 FlexusX 四节点集群的云计算全栈实操」系列第 4 篇。前两篇我们完成了集群的选型、开通与基础配置本篇进入 IaaS 层最容易被忽视、却决定整个系统上限的一环——虚拟网络。所有数据均来自四节点真实实测results/04_network_bench.txt不掺水分。1. 引子很多人买云服务器只关心 vCPU、内存、磁盘 IOPS却从不测一下内网到底能跑多快、节点之间延迟是多少。直到某天上了分布式缓存、搭了主从数据库才发现跨节点同步慢得像蜗牛——根因往往是我以为是万兆内网结果业务全压在公网上。我在华为云 FlexusX 开了 4 台 8vCPU/16GiB 的机器做集群第一件事就是拿iperf3和ping把内网和公网都跑了一遍。结论先放这儿同子网内网带宽约 6.3 Gbps、RTT 0.13ms 量级而公网带宽只有 240 Mbps 左右、RTT 约 2ms。差距不是一个数量级而是 25 倍带宽、15 倍时延。这篇文章就把这组数字背后的道理讲清楚。2. 背景与理论对照《深入浅出云计算》《深入浅出云计算》里把云计算的网络分成几层VPCVirtual Private Cloud你在公有云上租的一块逻辑隔离的私有网络相当于把传统机房里的一整张二层/三层网络虚拟化到你账户下。子网SubnetVPC 内的 IP 地址段划分通常对应一个可用区AZ。同子网内机器走二层转发跨子网走三层路由。弹性公网 IPEIP绑定到实例上的公网地址流量经运营商 BGP 出口出去带宽受你购买的规格限制。安全组Security Group实例级的虚拟防火墙是有状态的——入方向放行后回包自动放行。关键认知内网流量走云厂商的底层高速转发平面往往是万兆/25G 甚至更大规模的物理网络 自研虚拟交换不经过公网 BGP 出口所以带宽大、延迟低、且不计入公网流量计费。公网则受限于你买的公网带宽峰值、以及运营商链路质量。对照课程里网络是云计算的神经系统这一说法本篇要回答三个工程问题我的内网到底有多快带宽 时延矩阵公网为什么慢得多瓶颈在哪分布式系统为什么必须走内网retransmits 与稳定性3. 环境与准备节点弹性公网 IP私有 IP规格系统node1113.47.6.41192.168.0.2528vCPU/16GiBUbuntu 24.04.4 LTSnode2124.70.93.52192.168.0.648vCPU/16GiBUbuntu 24.04.4 LTSnode31.94.220.182192.168.0.2418vCPU/16GiBUbuntu 24.04.4 LTSnode4124.70.102.139192.168.0.1508vCPU/16GiBUbuntu 24.04.4 LTS机型x2e.8u.16gFlexusX同一 VPC、同一子网192.168.0.0/24内网互通。node1 作为负载均衡 / 监控中心节点。被测节点需安装iperf3与curl# 所有节点sudoaptupdatesudoaptinstall-yiperf3本文所有内网测试都使用私有 IP192.168.0.x公网测试使用弹性公网 IP124.70.x / 1.94.x。务必区分否则测出来的是公网而非内网。4. 实操步骤与完整命令4.1 带宽测试iperf3 点对点在被测目标节点启动服务端这里是 node2/node3# node2 / node3 上iperf3-s-p5201在 node1 上作为客户端发起测试默认跑 8 秒# node1 - node2 内网iperf3-c192.168.0.64-p5201-t8# node1 - node3 内网iperf3-c192.168.0.241-p5201-t8# node1 - node2 内网并发 4 条流观察多流聚合iperf3-c192.168.0.64-p5201-t8-P4# node1 - node2 公网注意用的是 EIPiperf3-c124.70.93.52-p5201-t84.2 时延测试ping 时延矩阵# 内网 ping每个 20 个包ping-c20192.168.0.64ping-c20192.168.0.241ping-c20192.168.0.150# 公网 ping走 EIPping-c20124.70.93.525. 真实输出实测数据未篡改5.1 内网带宽 内网带宽 n1-n2 (192.168.0.64) [ 5] 0.00-8.00 sec 5.90 GBytes 6.33 Gbits/sec 18994 sender [ 5] 0.00-8.00 sec 5.89 GBytes 6.33 Gbits/sec receiver 内网带宽 n1-n3 (192.168.0.241) [ 5] 0.00-8.00 sec 5.65 GBytes 6.07 Gbits/sec 32 sender [ 5] 0.00-8.00 sec 5.65 GBytes 6.06 Gbits/sec receiver 内网并发4流 n1-n2 [SUM] 0.00-8.00 sec 5.66 GBytes 6.08 Gbits/sec 0 sender [SUM] 0.00-8.00 sec 5.65 GBytes 6.06 Gbits/sec receiver5.2 公网带宽 公网带宽 n1-n2 (124.70.93.52) [ 5] 0.00-8.00 sec 230 MBytes 241 Mbits/sec 8864 sender [ 5] 0.00-8.00 sec 227 MBytes 238 Mbits/sec receiver5.3 时延矩阵n1-192.168.0.64 : rtt min/avg/max/mdev 0.111/0.132/0.184/0.017 ms n1-192.168.0.241 : rtt min/avg/max/mdev 0.213/0.230/0.305/0.022 ms n1-192.168.0.150 : rtt min/avg/max/mdev 0.118/0.139/0.225/0.022 ms # 公网对比 n1-124.70.93.52 : rtt min/avg/max/mdev 1.983/2.016/2.096/0.031 ms6. 深度解读重点6.1 内网带宽是公网的约 25 倍路径带宽RTT内网 n1→n26.33 Gbps0.132 ms内网 n1→n36.07 Gbps0.230 ms内网 4 流聚合6.06 Gbps—公网 n1→n2238–241 Mbps2.016 ms内网单流就能跑到 6.3 Gbps而公网只有约 240 Mbps。相差约 26 倍。这不是我机器弱而是公网带宽被购买规格卡死——我这台机器绑定的 EIP 带宽上限就在 200~300 Mbps 这一档。无论底层物理网络多强公网出口是共享且限速度的。6.2 为什么单流内网没有跑满万兆注意一个细节并发 4 条流SUM也只有 6.06 Gbps几乎等于单流 6.33 Gbps。说明单条 TCP 流已经把单核软中断 / 单队列的转发能力用满多流没有线性叠加。FlexusX 这类入门算力型实例虚拟网卡的单队列吞吐大约就在 6 Gbps 出头。如果你的业务真需要 10G 内网要么换更高规格实例更多网卡队列 / 开启多队列 RSS要么在应用层做多连接分片。6.3 同子网 sub-ms 时延意味着什么内网 RTT 全部在0.11~0.23 ms之间是典型同可用区、同子网的二层转发延迟。这对分布式系统至关重要数据库主从复制binlog 同步延迟几乎只受 RTT 和磁盘影响sub-ms 内网让同步复制semi-sync可行。分布式锁 / etcd / Redis 集群每次选主、心跳都在内网跑0.1ms 级延迟保证集群在秒级内完成故障切换。微服务东西向流量服务网格 sidecar 之间海量短连接内网低延迟直接决定 P99 尾延迟。对比公网 2ms RTT差了约 15 倍。如果微服务跨公网调用光网络往返就把延迟吃掉了且公网抖动mdev 0.031也更大。6.4 retransmits一个被很多人忽略的告警信号iperf3 的 sender 行末尾有个数字——重传次数retransmitsn1→n2 内网18994 次重传8 秒传 5.9GBn1→n3 内网仅 32 次内网 4 流0 次公网8864 次n1→n2 单流重传近 1.9 万次但吞吐照样 6.33 Gbps 没掉——说明链路在高吞吐 微突发下有轻微丢包重传TCP 栈快速恢复了。公网重传 8864 次叠加低带宽说明公网链路抖动更明显。重传数不是零并不代表网络完美但异常飙升往往预示着网卡队列溢出、MTU 不匹配或伙伴关系拥塞。把这指标接进监控见本系列第 6 篇比单纯看带宽更有预警价值。6.5 为什么分布式系统必须走内网一句话公网又慢又贵又不稳定内网又快又免流又可控。成本华为云内网流量免费同 VPC 内公网按固定带宽或流量计费。一个 4 节点集群每天内部同步几十 GB走公网账单会很难看。安全内网地址不可被公网直接访问天然缩小攻击面只把 LB / 网关暴露公网后端全藏内网。性能如上25 倍带宽差 15 倍延迟差业务上云的第一步就是把节点间通信全部收敛到内网。7. 踩坑与排障第一批机器全部不可达的真实教训这是本篇最想强调的坑。我第一次开这批机器时4 台全部 ping 不通、SSH 连不上。排查半天才发现安全组Security Group默认拒绝所有入方向流量而我没放通 ICMP 和 22 端口。安全组是有状态的虚拟防火墙规则要点入方向Ingress不放行外部就进不来哪怕两台机器在同一个子网。放通某个端口后该连接的回包自动放行有状态不用在出方向再配。同子网内网互通也仍受安全组约束——不是在一个网段就能随便通。正确做法以华为云为例新建安全组添加入方向规则协议 TCP端口 22源 0.0.0.0/0或限定你的办公网段—— 放 SSH。协议 ICMP源 192.168.0.0/24—— 放同 VPC 内网 ping 与互通。协议 TCP端口 5201源 192.168.0.0/24—— 放 iperf3 内网测试。把 4 台机器都绑定这个安全组。经验开机器第一件事不是装软件而是先把安全组和密钥对配好。安全组配错后面所有集群不可达节点间超时的锅都会甩到网络/应用头上实际根因在防火墙。如果你遇到自己能 SSH 但节点互 ping 不通优先查三处安全组入方向、系统内部ufw/iptables、以及是否真的用了私有 IP 而非 EIP。8. 自建网络 vs 云服务 / 成本建议VPC/子网必须自建这是云的基础能力免费按业务划分子网Web 层 / 数据层分开用安全组做最小权限。公网带宽别为了内网快去买大带宽 EIP。内网通信免费且高速只给真正需要暴露的服务LB、堡垒机买公网带宽且用按带宽计费而非按流量避免突发流量爆账单。对等连接 / 云连接若以后跨地域内网互通要走云连接收费本篇同地域同子网不在讨论范围。监控把内网重传、RTT、带宽利用率都接进 Prometheus见第 6 篇网络劣化能在用户感知前被发现。9. 小结本篇用iperf3ping把 FlexusX 四节点集群的网络摸了个底同子网内网6.3 Gbps / 0.13ms公网240 Mbps / 2ms差距约 25 倍带宽、15 倍延迟多流未线性叠加单队列网卡是上限真要更高吞吐需换规格或应用层多连接retransmits是预警信号建议纳入监控分布式系统一切节点间通信必须走内网——快、免费、安全安全组是新手第一坑开机器先放行端口再谈别的。下一篇我们用 Nginx 在这张内网之上手搓一个高可用负载均衡集群把流量在内网里调度起来。脚本参考../scripts/下网络测试脚本iperf3 批量跑 时延矩阵采集。

本月热点