简介
本文档解释使用 IP 语音 (VoIP) 时的语音编解码带宽计算以及修改或保存带宽的功能。当您建立分组语音网络时,要考虑的最重要因素之一是适当的容量规划。在容量规划中,带宽计算是在设计和排除分组语音网络故障以提供良好语音质量时需考虑的重要因素。
注意:作为本文档的补充,您可以使用 TAC 语音带宽编解码计算器(仅限注册用户)工具。此工具提供有关如何计算分组语音呼叫所需带宽的信息。
VoIP - 每个呼叫使用的带宽
以下协议报头假设用于计算:
-
IP(20 字节)/用户数据报协议 (UDP)(8 字节)/实时传输协议 (RTP)(12 字节)报头的 40 字节。
-
压缩实时协议(cRTP)将IP/UDP/RTP报头减少到2或4字节(cRTP不通过以太网提供)。
-
多链路点对点协议 (MP) 或帧中继论坛 (FRF).12 第 2 层 (L2) 报头的 6 字节。
-
MP 和帧中继帧上帧结尾标记的 1 字节。
-
用于以太网 L2 报头的 18 个字节,包括 4 个字节的帧校验序列 (FCS) 或循环冗余校验 (CRC)。
注意:下表仅包含 Cisco CallManager 或 Cisco IOS® 软件 H.323 网关中默认语音有效载荷大小的计算。对于其他计算,包括不同的语音负载大小和其他协议(例如帧中继语音 [VoFR] 和 ATM 语音 [VoATM]),请使用 TAC Voice Bandwidth Codec Calculator 工具(仅限注册客户)。
编解码信息 |
带宽计算 |
编解码比特率 (Kbps) |
编解码样本大小(字节) |
编解码采样间隔(毫秒) |
平均意见评分 (MOS) |
语音有效载荷大小(字节) |
语音有效载荷大小(毫秒) |
每秒数据包数 (PPS) |
带宽 MP 或 FRF.12 (Kbps) |
带宽 w/cRTP MP 或 FRF.12 (Kbps) |
带宽以太网 (Kbps) |
G.711 (64 Kbps) |
80 字节 |
10 毫秒 |
4.1 |
160 字节 |
20 毫秒 |
50 |
82.8 Kbps |
67.6 Kbps |
87.2 Kbps |
G.729 (8 Kbps) |
10 字节 |
10 毫秒 |
3.92 |
20 字节 |
20 毫秒 |
50 |
26.8 Kbps |
11.6 Kbps |
31.2 Kbps |
G.723.1 (6.3 Kbps) |
24 字节 |
30 毫秒 |
3.9 |
24 字节 |
30 毫秒 |
33.3 |
18.9 Kbps |
8.8 Kbps |
21.9 Kbps |
G.723.1 (5.3 Kbps) |
20 字节 |
30 毫秒 |
3.8 |
20 字节 |
30 毫秒 |
33.3 |
17.9 Kbps |
7.7 Kbps |
20.8 Kbps |
G.726 (32 Kbps) |
20 字节 |
5 毫秒 |
3.85 |
80 字节 |
20 毫秒 |
50 |
50.8 Kbps |
35.6 Kbps |
55.2 Kbps |
G.726 (24 Kbps) |
15 字节 |
5 毫秒 |
|
|
20 毫秒 |
50 |
42.8 Kbps |
27.6 Kbps |
47.2 Kbps |
G.728 (16 Kbps) |
10 字节 |
5 毫秒 |
3.61 |
60 字节 |
30 毫秒 |
33.3 |
28.5 Kbps |
18.4 Kbps |
31.5 Kbps |
G722_64k(64 Kbps) |
80 字节 |
10 毫秒 |
4.13 |
160 字节 |
20 毫秒 |
50 |
82.8 Kbps |
67.6 Kbps |
87.2 Kbps |
ilbc_mode_20 (15.2Kbps) |
38 字节 |
20 毫秒 |
不适用 |
38 字节 |
20 毫秒 |
50 |
34.0 Kbps |
18.8 Kbps |
38.4 Kbps |
ilbc_mode_30 (13.33Kbps) |
50 字节 |
30 毫秒 |
不适用 |
50 字节 |
30 毫秒 |
33.3 |
25.867 Kbps |
15.73 Kbps |
28.8 Kbps |
术语解释
编解码比特率 (Kbps) |
根据编解码器,此为实现语音通话每秒需要传输的位数。(编解码比特率 = 编解码样本大小/编解码采样间隔)。 |
编解码样本大小(字节) |
根据编解码,这是数字信号处理器在每编解码采样间隔捕获的字节数 (DSP)。例如,G.729 编码器的采样间隔为 10 毫秒,与此对应,每个样本为 10 个字节(80 位),比特率为 8 Kbps。(编解码比特率 = 编解码样本大小/编解码采样间隔)。 |
编解码采样间隔(毫秒) |
这是编解码器运行的采样间隔。例如,G.729 编码器的采样间隔为 10 毫秒,与此对应,每个样本为 10 个字节(80 位),比特率为 8 Kbps。(编解码比特率 = 编解码样本大小/编解码采样间隔)。 |
平均意见评分 (MOS) |
MOS 是一种用于对电话连接的语音质量进行评分的系统。使用 MOS,各监听程序可判断语音样本的质量,质量等级从 1(差)到 5(非常好)。 计算分数的平均值是为了向编解码器提供 MOS。 |
语音有效载荷大小(字节) |
语音有效载荷大小指填充到数据包的字节(或位)数。语音有效载荷大小必须是多个编解码样本大小。例如,G.729 数据包可以使用 10、20、30、40、50 或者 60 字节的语音有效载荷。 |
语音有效载荷大小(毫秒) |
语音有效载荷大小也可表示为编解码采样。例如,语音有效载荷为20毫秒(二个10毫秒编码示例)的G.729语音表示语音有效载荷为20字节[ (20 字节 * 8) / (20 ms) = 8 Kbps ]。 |
PPS |
PPS 表示为提供编码解码器比特率而每秒需要传输的数据包数量。例如,对于每数据包语音有效载荷大小为 20 字节(160 位)的 G.729 呼叫,每秒需要传输 50 个数据包 [50 pps = (8 Kbps)/(160 位/数据包)] |
带宽计算公式
使用以下计算:
计算示例
例如,假设采用 cRTP、MP 的 G.729 呼叫所需的带宽为 8 Kbps 编解码器比特率,默认的语音负载为 20 字节,则:
-
数据包总大小(字节)=(6 字节的 MP 报头)+(2 字节的压缩 IP/UDP/RTP 报头)+(20 字节的语音有效载荷)= 28 字节
-
数据包总大小(位)=(28 字节)* 8 位/字节 = 224 位
-
PPS =(8 Kbps 编解码比特率)/(160 位)= 50 pps
注意:160 位 = 20 字节(默认语音有效载荷)* 8 位/字节
-
每呼叫的带宽 = 语音数据包大小(224 位)* 50 pps = 11.2 Kbps
配置 Cisco CallManager 和 Cisco IOS 网关中的语音负载大小
每数据包的语音有效载荷大小均可在 Cisco CallManager 和 Cisco IOS 网关中配置。
注意:如果 Cisco IOS 网关作为媒体网关控制协议 (MGCP) 网关配置在 Cisco CallManager 中,则所有编解码信息(编解码类型、有效载荷大小、语音活动检测等)都由 Cisco CallManager 控制。
在 Cisco CallManager 中,每数据包的语音有效载荷大小在整个系统中都是可配置的。此属性在 Cisco CallManager 管理中 (Service > Service Parameters > select_server > Cisco CallManager) 用以下三个服务参数设置:
-
PreferredG711MillisecondPacketSize - (默认设置:20 毫秒.可用设置:10、20 和 30 毫秒。)
-
PreferredG729MillisecondPacketSize -(默认设置:20 毫秒.可用设置:10、20、30、40、50 和 60 毫秒。)
-
PreferredG723MillisecondPacketSize -(默认设置:30 毫秒.可用设置:30 和 60 毫秒。)
在 Cisco CallManager 中,语音有效载荷大小根据毫秒 (ms) 采样而配置。根据编解码,下表将部分毫秒采样映射到实际有效载荷大小(单位为字节)。
编解码器 |
语音有效载荷大小(毫秒) |
语音有效载荷大小(字节) |
备注 |
G.711 |
20 毫秒(默认) |
160 字节 |
注意,始终保持编解码比特率。例如:G.711 编解码 = [240 字节 * 8(位/字节)]/30 毫秒 = 64 Kbps |
30 毫秒 |
240 字节 |
G.729 |
20 毫秒(默认) |
20 字节 |
30 毫秒 |
30 字节 |
G.723 |
30 毫秒(默认) |
|
在 Cisco IOS 网关中,Cisco IOS 软件版本 12.0(5)T 添加了一项功能,该功能允许通过 CLI 更改 VoIP 数据包的语音负载大小(以字节为单位)。新命令语法如下:
Cisco-Router(config-dial-peer)#codec g729r8 bytes ?
Each codec sample produces 10 bytes of voice payload.
Valid sizes are:
10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120,
130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 230
Any other value within the range will be rounded down to nearest valid size.
<10-230> Choose a voice payload size from the list above
[an error occurred while processing this directive]
更改语音负载大小的影响
每数据包的编解码样本数是确定 VOIP 呼叫带宽和延迟的另一个因素。编解码规定样本的大小,但数据包中存储的样本总数将影响每秒发送的数据包数。
增大语音有效载荷大小时,VoIP 带宽将减少,且整体延迟增加。以下示例将说明这种情况:
注意:
- 此计算中没有考虑 L2 报头。
- 这些计算表明,虽然负载大小增加了一倍,但每秒所需的数据包数随之减少了一半。
- 根据国际电信联盟电信标准化部门 (ITU-T) G.114 规范中的定义,建议的语音单向总延迟为 150 毫秒。对于专用网络,200 毫秒是一个合理的目标,而 250 毫秒必须是最大值。
语音活动检测
使用电路交换语音网络,不管有多少会话处于讲话状态,有多少会话处于沉默状态,所有语音呼叫都使用 64 Kbps 的固定带宽链路。使用 VoIP 网络,所有会话和沉默状态都进行了分组。使用语音活动检测 (VAD),可以抑制无声数据包。
在超时期间以及平均呼叫容量超过 24 次时,VAD 最大可节省 35% 的带宽。这些节省不是在每个单独语音呼叫或任何特定点测量上实现的。就网络设计和带宽工程而言,不必考虑 VAD,特别是在同步传送 24 次以下语音呼叫的链路上时。有多种功能(例如保持音乐和传真)可使 VAD 无效。当针对全语音呼叫带宽设计网络时,VAD 提供的所有节省都可用于数据应用。
VAD 还提供舒适噪声生成 (CNG)。 由于您可能弄错断开呼叫的静音,因此 CNG 提供本地生成的白噪声,这样呼叫就看似正常地连接到呼叫双方。G.729 附录 B 和 G.723.1 附录 A 包括集成 VAD 功能,否则分别执行相同的 G.729 和 G.723.1。
在 Cisco CallManager 中,可用以下参数启用 VAD(默认状态下为禁用):
您可以在 Cisco CallManager Administration (Service > Service Parameters > select_server > Cisco CallManager) 下找到这些服务参数。
RTP 报头压缩或压缩的 RTP (cRTP)

所有 VoIP 数据包都由两部分组成:语音样本和 IP/UDP/RTP 报头。虽然语音样本由数字信号处理器 (DSP) 压缩并且大小因使用的编解码而异,但这些报头的长度为恒量,即 40 字节。当与默认 G.729 呼叫中的 20 字节语音样本相比时,这些报头产生了相关数量的开销。使用 cRTP,可以将这些报头压缩到 2 字节或 4 字节。此压缩可大幅节省 VoIP 带宽。例如,不使用 cRTP 时,默认 G.729 VOIP 呼叫消耗 24 千字节,而启用 cRTP 时只消耗 12 千字节。
由于 RTP 逐个压缩每个链路上的 VOIP 呼叫,因此 IP 链路的两端需要配置 RTP。
在 Cisco IOS 软件版本 12.0.5T 及更低版本中,cRTP 采用进程交换模式,这会由于 CPU 性能问题而导致严重限制 cRTP 解决方案的可扩展性。大多数这些问题已通过在 Cisco IOS 软件版本 12.0.7T 中引进多种 cRTP 性能改进加以解决。以下是历史记录概要。
-
cRTP 在 Cisco IOS 软件版本 12.0.5T 及早期版本中属于进程交换。
-
在 Cisco IOS 软件版本 12.0.7T 和后续版本 12.1.1T 中,引入了支持 cRTP 的快速交换和 Cisco Express 转发交换功能。
-
在 Cisco IOS 软件版本 12.1.2T 中,引入了算法性能改进。
将 cRTP 移至快速交换路径将大幅增加 VOIP 网关和中间路由器可以处理的 RTP 会话(VOIP 呼叫)数量。
压缩试探
由于 RTP 本身没有不同的数据包报头,因此通过使用试探法将 RTP 流(用于cRTP)与 UDP 流(CUDP)区分开来。当前用于检测压缩 RTP 数据包压缩状况的确切试探如下:
相关信息