这里计算的是端到端网络需要承载的速率,而不仅仅是编码速率。计算公式的核心思想是:
总带宽 = (语音净荷 + 协议头开销)÷ 打包周期
计算步骤分解
最典型的 VoIP 场景为例:G.711 编码,20ms 打包周期,使用 IPv4。
第一步:计算单个数据包的语音净荷大小
编码速率:G.711 = 64 kbps = 64,000 比特/秒
打包周期:20 毫秒 = **0.02 秒
每包语音净荷(比特)= 编码速率 × 打包周期
64,000 bps × 0.02 s = **1280 比特
每包语音净荷(字节)= 1280 比特 ÷ 8 = 160 字节
这是我们要传输的“干货”语音数据。
第二步:计算单个数据包的协议头开销
数据包在网络上传输,需要层层封装,每一层都会加上自己的“信封”(协议头)。从里到外依次是:
RTP头:负责实时传输,固定 **12 字节
UDP头:负责无连接传输,固定 **8 字节
IP头:最常见的 IPv4 头,固定 **20 字节(IPv6 头为 40 字节,计算时需替换)
数据链路层头:这取决于物理网络。最常见的是:
Ethernet:帧头(包括源/目的MAC地址、类型等)和帧尾(CRC校验)共 **18 字节**。
PPPoE:在以太网基础上,额外增加 **8 字节** 的PPPoE头,总开销可达 26 字节。
MPLS/VLAN:可能还会额外增加 4-8 字节标签。
以最普遍的 以太网(Ethernet)+ IPv4 计算:
总协议头开销 = RTP(12) + UDP(8) + IP(20) + 以太网(18) = 58 字节
第三步:计算单个数据包的总大小
数据包总大小(字节)= 语音净荷 + 协议头开销
160 字节 + 58 字节 = **218 字节
数据包总大小(比特):218 字节 × 8 = **1744 比特
第四步:计算最终带宽需求
带宽是单位时间内传输的数据量。
打包周期:20 ms = 0.02 秒,即每秒发送 `1 / 0.02 = 50` 个包。
所需带宽 = 每包总比特数 × 每秒包数
1744 比特/包 × 50 包/秒 = 87,200 bps = 87.2 kbps
87.2 kbps 就是单向一路 G.711 (20ms) 通话实际消耗的网络带宽
关键影响因素与变量表
结论与公式总结:
基础公式:所需带宽 (kbps)=[(编码速率×打包周期/8+总协议头字节数×8]/打包周期
简化为:所需带宽 = 编码速率 + (总协议头字节数 × 8 × 每秒包数)
对于 G.711 在 IPv4/以太网的快速估算:
20ms 打包: ≈87 kbps
30ms 打包: ≈80 kbps