简介
本文档介绍使用IP语音(VoIP)时,语音编解码器带宽计算和用于修改或节约带宽的功能。
背景信息
当您建立分组语音网络时,要考虑的最重要因素之一是适当的容量规划。在容量规划中,带宽计算是在设计和排除分组语音网络故障以提供良好语音质量时需考虑的重要因素。
注意:作为本文档的补充,您可以使用TAC Voice Bandwidth Codec Calculator(仅限注册客户)工具。此工具提供有关如何计算分组语音呼叫所需带宽的信息。
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 Call Manager或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字节*
/(20毫秒)= 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 Call Manager和Cisco IOS网关中配置语音负载大小
可以在Cisco Call Manager和Cisco IOS网关中配置每个数据包的语音负载大小。
注:如果Cisco IOS网关在Cisco Call Manager中配置为媒体网关控制协议(MGCP)网关,则所有编解码器信息(编解码器类型、负载大小、语音活动检测等)都由Cisco CallManager控制。
在Cisco Call Manager中,每个数据包的语音负载大小可在系统范围内进行配置。此属性在Cisco Call Manager Administration(Service > Service Parameters > select_server > Cisco Call Manager)中设置,并具有以下三个服务参数:
-
PreferredG711MillisecondPacketSize -(默认设置:20毫秒。可用设置:10、20和30毫秒。)
-
PreferredG729MillisecondPacketSize -(默认设置:20毫秒。可用设置:10、20、30、40、50和60毫秒。)
-
PreferredG723MillisecondPacketSize -(默认设置:30毫秒。可用设置:30和60毫秒。)
在Cisco Call Manager中,语音有效载荷大小是以毫秒(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
更改语音负载大小的影响
每数据包的编解码样本数是确定 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 Annex-B和G.723.1 Annex-A包括集成的VAD功能,否则将分别执行与G.729和G.723.1相同的功能。
在Cisco Call Manager中,可以使用以下服务参数启用VAD(默认情况下禁用):
您可以在Cisco Call Manager 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 IOS 软件版本 12.1.2T 中,引入了算法性能改进。
当您将cRTP移至快速交换路径时,会显着增加VoIP网关和中间路由器可以处理的RTP会话(VoIP呼叫)数量。
压缩试探
由于 RTP 本身没有不同的数据包报头,因此通过使用试探法将 RTP 流(用于cRTP)与 UDP 流(CUDP)区分开来。当前用于检测压缩 RTP 数据包压缩状况的确切试探如下:
相关信息