NetCalcLab

带宽 / 传输时间计算器

计算在给定链路速率下传输需要多久,或在目标时间窗内搬完数据需要多大带宽。比特与字节、十进制与二进制单位都显式处理,不做默认的隐式假设。

协议开销与损耗。对于一条干净链路,95% 是现实的起点。

所用单位约定

  • 1 字节 = 8 比特,始终如此。网络速率以比特每秒计,文件大小以字节计。
  • KB、MB、GB、TB 采用 1000 的幂;KiB、MiB、GiB、TiB 采用 1024 的幂。
  • Kbps、Mbps、Gbps 均为十进制,因此 1 Gbps = 1,000,000,000 比特每秒。

核心计算

每一次传输时间计算都是同一次除法:把数据量换算成比特,把链路速率换算成比特每秒,然后相除。

传输时间
时间(秒) = 数据量(比特)÷ 链路速率(比特/秒)

比特数  = 数据量 × 8              (若数据量以字节为单位)
        = 数据量 × 8 × 10^9       (若数据量以 GB 为单位)

实例:100 GB,1 Gbps 链路
  100 GB       = 100 × 8 × 10^9  = 800,000,000,000 比特
  1 Gbps       =                   1,000,000,000 bps
  时间         = 800,000,000,000 ÷ 1,000,000,000 = 800 s = 13 m 20 s

  按 95% 效率:800 ÷ 0.95 = 842 s = 14 m 2 s

反过来求所需带宽,就是把同一个关系式变形:

所需带宽
所需速率(bps) = 数据量(比特)÷ 时间(秒)

计入效率:        所需速率 ÷ 效率

实例:1 TB 在 1 小时内传完,效率 95%
  1 TB    = 1 × 10^12 字节 = 8,000,000,000,000 比特
  1 小时  = 3,600 s
  速率    = 8,000,000,000,000 ÷ 3,600 = 2,222,222,222 bps = 2.22 Gbps
  按 95% 效率:2.22 ÷ 0.95 = 2.34 Gbps

示例:1 Gbps 链路够做每晚的备份吗?

你需要在每晚 6 小时的时间窗内搬完 400 GB。原始速率是 400 × 8 × 10^9 ÷ 21,600 = 148 Mbps,按 95% 效率折算后变成 156 Mbps。

1 Gbps 链路是需求的六倍以上,所以时间窗不是瓶颈。但要检查存储:6 小时搬 400 GB 需要持续的 18.5 MB/s 读写吞吐,单块机械盘完全够用;不过如果备份目标是并发任务很多的 NAS,仍值得核实。

比特、字节与 8 倍关系

网络工程师用比特每秒衡量链路容量,用字节衡量存储容量。两种约定都由来已久,而这两者之间的错配导致的容量规划失误,比其它任何单一因素都多。

比特每秒到字节每秒的换算
链路速率比特每秒字节每秒95% 时的实际吞吐
10 Mbps10,000,0001.25 MB/s1.19 MB/s
100 Mbps100,000,00012.5 MB/s11.9 MB/s
1 Gbps1,000,000,000125 MB/s119 MB/s
2.5 Gbps2,500,000,000312.5 MB/s297 MB/s
10 Gbps10,000,000,0001.25 GB/s1.19 GB/s
25 Gbps25,000,000,0003.125 GB/s2.97 GB/s
40 Gbps40,000,000,0005 GB/s4.75 GB/s
100 Gbps100,000,000,00012.5 GB/s11.9 GB/s

十进制与二进制单位

“千字节”有两种相互竞争的定义,厂商会挑选让自家产品看起来更漂亮的那种。标准组织为此引入了 KiB、MiB、GiB、TiB 来表示以 1024 为基数的单位,但旧约定在非正式场合仍被广泛使用。

十进制与二进制单位的取值
十进制名取值二进制名取值差异
KB1,000 BKiB1,024 B2.4%
MB1,000,000 BMiB1,048,576 B4.9%
GB1,000,000,000 BGiB1,073,741,824 B7.4%
TB1,000,000,000,000 BTiB1,099,511,627,776 B10.0%
PB1,000,000,000,000,000 BPiB1,125,899,906,842,624 B12.6%

差距随数量级递增,这就是为什么一块 16 TB 的硬盘在系统里显示为约 14.6 TiB,也是为什么当数据源其实是 100 GiB 时,“100 GB”的传输会比朴素计算的结果多花约 7% 的时间。

真正限制实际传输的因素

理论计算只是起点。实际传输速度取决于整条链路上最慢的那一环,而网络往往不是它。

  • 存储吞吐。单块机械盘顺序读写约 150–200 MB/s,大致相当于 1.2–1.6 Gbps,因此能跑满 1 Gbps 链路,但跑不满 10 Gbps。
  • 长路径上的 TCP 窗口限制。单条 TCP 流需要 带宽 × RTT 大小的窗口才能填满链路。在 10 Gbps、100 ms 的路径上,这意味着有 125 MB 数据在途,必须启用窗口扩大选项。具体数值见 TCP 吞吐计算器。
  • 时延与丢包。每一次重传都要付出一个往返时延。丢包率超过约 0.1% 后,无论可用带宽多大,吞吐都会崩塌。
  • 加密与压缩。AES-NI 指令集让加密开销很低,但纯软件实现的加解密可能远在网络之前就成为瓶颈。
  • 应用层协议。在高时延路径上,使用多条并行流的文件传输工具会优于单流工具,因为每条流的窗口限制是各自独立计算的。

常见问题

为什么 1 Gbps 链路实际只有约 125 MB/s?

因为网络速率用比特每秒计量,而文件大小用字节计量,1 字节等于 8 比特。1 Gbps 是 1,000,000,000 比特每秒,等于 125,000,000 字节每秒,即 125 MB/s。再加上协议开销,实际通常只看到 110–118 MB/s。这个 8:1 的关系是带宽计算中最常见的混淆来源。

以 1 Gbps 传输 100 GB 需要多久?

按 1000 进制单位,100 GB 是 800,000,000,000 比特。除以 1,000,000,000 比特每秒得到 800 秒,即 13 分 20 秒。按 95% 效率因子计入协议开销与损耗后约为 14 分 2 秒。如果这 100 GB 实际是 100 GiB(1024 进制),传输时间会多出约 7%。

Mbps 和 MB/s 有什么区别?

Mbps 指兆比特每秒,MB/s 指兆字节每秒。唯一的区别是字母 B 的大小写,而它让数值相差八倍。100 Mbps 等于 12.5 MB/s。运营商习惯用 Mbps 宣传,因为数值看起来更大;文件管理器则用 MB/s,因为那是用户在文件列表里看到的容量单位。

效率因子应该取多少?

硬件较新的干净局域网路径,95% 是现实的取值。跨多跳的广域网链路,取 90% 更稳妥。长距离或易丢包的路径取 85% 或更低。无线链路把干扰与重传算进去后,可能跌到 50% 以下。效率因子是对 TCP/IP 头部、重传、与其它流量的竞争以及 PPPoE 之类协议开销的一个粗略预留。

GB 和 GiB 有什么区别?

GB 是 10^9 字节(1,000,000,000),GiB 是 2^30 字节(1,073,741,824)。硬盘厂商使用十进制单位,所以一块“1 TB”的硬盘容量是 1,000,000,000,000 字节,操作系统会显示为约 931 GiB。这 7.4% 的差异会出现在每一次带宽计算中,因此弄清数据源用的是哪种单位很值得。

如何算出备份窗口需要多大带宽?

用数据总量除以可用时间得到原始比特率,再除以效率因子,得到真正需要购买的链路速率。例如:4 小时窗口内搬 1 TB,即 8,000,000,000,000 比特 ÷ 14,400 秒 = 556 Mbps 原始速率,按 95% 效率折算约为 585 Mbps。本计算器的第二种模式做的正是这个计算。

我的硬盘跟得上网络吗?

经常跟不上。单块 7,200 转机械盘顺序读写约 150–200 MB/s,大致相当于 1.2–1.6 Gbps。1 Gbps 链路完全在它的能力之内,10 Gbps 就不行了。NVMe 固态盘能达到数 GB/s,所以在超过 25 Gbps 之前不会成为瓶颈。一定要找出最慢的那一环,而不是默认网络就是瓶颈。