此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 RFP 文档使用的语言或引用的第三方产品使用的语言,文档中可能无法确保完全使用非歧视性语言。 深入了解思科如何使用包容性语言。
思科采用人工翻译与机器翻译相结合的方式将此文档翻译成不同语言,希望全球的用户都能通过各自的语言得到支持性的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 Cisco Systems, Inc. 对于翻译的准确性不承担任何责任,并建议您总是参考英文原始文档(已提供链接)。
本文档介绍使用Cisco Voice Manager和Telemate在VoIP网络中管理语音质量。所有内容都基于实际IP电话实施。本文档重点介绍产品的应用,而不是产品的使用。您应该已经熟悉CVM和Telemate,并有权访问所需的产品文档。有关文档的列表,请参阅相关信息。
在管理大规模VoIP网络时,您必须拥有客观监控和报告网络语音质量所需的工具。仅依靠用户反馈是不可行的,因为它主观性和不完整性。CVM与Telemate一起提供此功能的一部分。它使用IOS网关为每个呼叫计算的减值/计算减值规划因子(Icpif)来报告语音质量。这样,网络管理员就可以识别语音质量较差的站点并相应地处理它们。
确定问题站点后,可能需要其他工具来排除可能的网络QoS问题。网际网络性能监控器(IPM)和思科服务保证代理(CSAA)是两种工具。 这些主题在我们网站上发布的另一份文档中讨论。
本文档的读者应掌握以下这些主题的相关知识:
思科语音管理器和远程交会
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
有关文件规则的更多信息请参见“ Cisco技术提示规则”。
以下部分概述语音质量问题:
ITU标准G.113规定了如何测量语音质量。此方法规定您可以通过计算ICPIF来确定语音呼叫质量。基于IOS的网关计算每个呼叫的ICPIF值,并将其记录为CDR记录的一部分。此外,如果呼叫的Icpif值超过预设值,它可通过SNMP发送语音质量(QoV)陷阱。这意味着网关具有内置语音质量测量功能。只需收集这些测量数据并分析数据,以确定任何趋势。
VoIP语音质量主要受网络QoS影响。因此,呼叫分析将侧重于逐个站点识别语音质量问题。如果可以识别出大量呼叫且语音质量较差的站点,我们可以专注于这些站点的网络路径中的任何QoS问题。
以下部分仅简要概述;有关详细信息,请参阅G.113标准。
G.113背后的总体思路是,计算语音路径上每件设备的损坏系数,然后将其相加,得到总的损坏系数。有不同类型的损伤(噪声、延迟、回声等),ITU将它们分为五类。将它们相加,得到总减值Itot:
ITOT = Io + IQ + IDTE + ID + IE
其中每一项定义如下(使用ITU术语):
Io — 由非最佳整体响度额定值和/或高电路噪声引起的损坏。
Iq - PCM类型量化失真导致的损坏。
Idte — 讲话者回声造成的损伤。
Id — 长单向传输时间(延迟)导致的语音通信困难。
Ie — 由特殊设备,特别是非波形低比特率编解码器造成的损坏。
当Cisco IOS软件计算Ito时,它会忽略Io和Iq为可忽略,并将Idte设置为0。Idd值从下表中派生,该表来自G.113:
延迟 | IDD |
---|---|
150 | 0 |
200 | 3 |
250 | 10 |
300 | 15 |
400 | 25 |
500 | 30 |
600 | 35 |
800 | 40 |
通常Ie是固定值,具体取决于编解码器类型。G.113指定思科网关通常使用的编解码器的值,如下表所示:
代码 | IE |
---|---|
G.711 | 0 |
G.729/G.729a | 10 |
但是,由于这些编解码器用于数据包语音环境,因此实际损坏取决于数据包丢失。丢包率越高,损害越大。思科工程部门已通过PSQM(ITU P.861)在离散丢包级别测量语音质量。下表显示了与给定编解码器的丢包级别相关的语音失真值:
丢包率 | G.711 | G.729/G.729a |
---|---|---|
0 | 0 | 10 |
1 | 8 | 15 |
2 | 12 | 20 |
3 | 18 | 25 |
4 | 22 | 30 |
5 | 26 | 34 |
6 | 28 | 38 |
7 | 30 | 40 |
8 | 32 | 42 |
9 | 34 | 44 |
如预期,G.729比G.711更容易丢包。
语音质量完全取决于人的感知和期望。手机用户的服务水平期望值比固定电话用户低。在计算Icpif时,我们考虑了这一点,即Itot由人的期望因子A来减小。
Icpif = Itot - A
G.113还为典型语音网络提供了预期因素。请参阅下表:
语音网络接入方法 | 预期因素A |
---|---|
传统固定线路PSTN | 0 |
本地无线(无绳电话) | 5 |
广域无线(手机) | 10 |
卫星 | 20 |
G.113还有一个表,在Icpif值和语音质量之间映射。如下表所示:
语音网络接入方法 | 预期因素A |
---|---|
5 | 良好 |
10 | 好 |
20 | 足够 |
30 | 限制案例 |
45 | 异常限制案例 |
55 | 用户可能会强烈抱怨 |
呼叫的Icpif值为零是完美得分。这应该是我们VoIP网络的目标。
在传统语音网络中,设计人员会计算总损失预算。
例如,Io = 0;智商= 0;Idte = 0;Id = 3;Ie = 7,这给Itot = 10。
如果用户从无绳电话访问网络,则可减去的最大期望系数为5,因此最终结果是:
Icpif = Itot - A = 10 - 5 = 5
根据上表,用户可能认为语音质量非常好。
本文档讨论的解决方案使用Icpif值来监控语音质量,而不是将其用于规划目的。
以下各节讨论如何通过CVM和Telemate管理语音质量:
虽然推荐的解决方案确实存在一些限制,但似乎没有其他可扩展的工具。已知限制包括:
只有通过网关的呼叫受质量控制。您不能测量从IPhone到IPhone的呼叫。网关未看到这些呼叫,并且CallManager当前不支持G.113。
Icpif计算仅考虑数据包丢失和延迟。Echo不包括在Icpif计算中。因此,呼叫可能会出现严重回声,并仍能获得完美的Icpif得分。
语音质量仅在IP电话到网关的方向测量。分组语音网络中的Icpif值可能在两个方向上是非对称的。网关到IPhone方向中的任何单向网络QoS问题都不会反映在网关计算的Icpif值中。
语音质量问题通常是整个WAN的一个问题。所讨论的解决方案最适合具有集中式网关的环境,因为来自远程站点IPhone的呼叫必须通过广域网才能访问网关。如果网关是分布式的(即,每个远程站点都由本地网关提供服务),则大多数网关呼叫不会通过广域网。WAN中的VoIP呼叫将主要是IP电话到IP电话,这些呼叫对网关不可见。
作为推荐解决方案的一部分,需要为CDR收集配置所有网关:
dial-control-mib max-size <max-number-of-cdr> dial-control-mib retain-timer 600
所有网关还必须启用QoV陷阱功能。默认情况下禁用此功能:
Calibra#show dial-peer voice 99 | include QOV|Icpif Expect factor = 0, Icpif = 20, VAD = enabled, Poor QOV Trap = disabled,
通过添加以下内容,可以按VoIP拨号对等体启用此功能:
dial-peer voice XYZ voip snmp enable peer-trap poor-qov icpif <threshold> expect-factor 0
当呼叫完成时,网关会计算该呼叫的总减损(Itot)。然后,从Itot中减去已配置的期望因子,以得出实际Icpif值。如果此数量超过Icpif阈值,则发送QoV陷阱。网关计算呼叫的Icpif值时,呼叫持续时间必须至少为10秒。
让我们看一个示例,其中网关配置如下:
dial-peer voice XYZ voip icpif 10 expect-factor 5
假设呼叫完成且Itot 值为20。然后网关从此数字中减去期望因子5,从而得出Icpif 值15。由于15大于10,因此网关会生成QoV SNMP陷阱。
全局而言,必须启用QoV陷阱才能发送到CVM:
snmp-server enable traps voice poor-qov snmp-server host 10.x.x.x.x public<----- CVM station
请注意,每次建立或断开呼叫时,语音网关都会生成链路打开/链路关闭SNMP陷阱。这可能导致高密度网关上存在大量陷阱。通过添加以下命令,确保禁用这些陷阱:
interface serial1/0:15no snmp trap link-status
CVM和Telemate是完全独立的应用。顾名思义,CVM是思科开发的产品。另一方面,Telemate是思科与CVM捆绑销售的第三方产品。
CVM执行各种功能。我们将利用的两个功能是:
通过SNMP从网关收集呼叫详细记录(CDR)。
从网关接收语音质量(QoV)SNMP陷阱。
收集此信息后,CVM将格式化数据并通过简单文件共享将其传递到Telemate。然后,Telemate处理此数据并将其存储在Microsoft SQL数据库中。最终结果是一个数据库,其中包含呼叫列表及其各自的详细信息,包括Icpif值。然后,可以针对数据库运行各种报告,包括QoV报告。
我们感兴趣的远程QoV报告是“Packet Voice Calls with Quality of Service Traps”报告。此报告列出网关为其生成QoV陷阱的所有呼叫。我们对个人电话不感兴趣;相反,我们感兴趣的是确定语音质量呼叫比例高于平均水平的站点(如果有)。为此,Telemate需要能够按站点对呼叫进行分类。这将在下一节讨论。
通过填写Telemate目录,了解哪些分机位于哪些站点,我们可以使用Telemate按站点对呼叫进行分类。
Telemate目录是五层层次结构,具有以下级别:
第1级 — 公司
第2级 — 部门
第3级 — 部门
第4级 — 用户
第5级 — 分机
您可以将多个分机与一个用户关联。
理想情况下,我们希望QoV报告中的每个呼叫都与部门名称一起列出。然后,我们可以使用部门名称来代表给定的站点。这允许我们按部门/站点对呼叫进行排序。但是,由于扩展只能与用户关联,因此我们必须以一种稍显尴尬的方式实现。基本上,我们为每个站点创建一个虚拟用户,并将此用户的名称设置为站点名称或站点代码。然后,为该特定站点分配该虚拟用户的所有分机。然后,我们可以按用户对呼叫进行排序,这就相当于按站点对呼叫进行排序。
为了进行QoV报告,我们不关心目录层次结构的前三个级别,这些级别可以分配任何任意值。
对于此实施,有200个站点,分配了45,000个分机,但不一定全部都在使用。因此,该目录包含200个虚拟用户,并且每个虚拟用户与其站点的扩展范围相关联。手动填写目录是一项不可能的任务,因此,我们半自动地完成此操作,方法是生成一个CSV文件,每个扩展名一行,然后使用Telemate导入功能将文件导入目录。此CSV文件中的每行都具有以下格式:
Company,Division,Department,User,Extension
通过运行Unix外壳脚本,也可半自动生成CSV文件。此脚本将种子文件作为输入。此种子文件列出站点和关联的扩展范围。种子文件中的每行都具有以下格式:
site_name,extention_start,extension_end
外壳脚本本身非常简单,如下所示:
#--------------------------- Telemate script start ------------------------ #!/bin/ksh for i in `cat ./$1` do ( echo $i | awk 'BEGIN{FS=","}{for (j=($2+0);j<($3+0);++j) printf "Company,Division,Dept,%s,%s\n", $1,j}' ) done #--------------------------- Telemate script end ------------------------
假设脚本本身命名为“make_dir”,种子文件命名为“seedfile.csv”,则导入CSV telemate_dir.csv文件是在Unix提示符下执行以下命令创建的:
unix$ make_dir seedfile.csv > telemate_dir.csv
然后,输出文件telemate_dir.csv将导入到Telemate中。有关如何执行此操作的详细说明,请参阅Telemate文档。
运行Telemate报告时,可以选择输出目标。对于大型报告,建议以CSV格式生成文件。然后,您可以在Excel中操作报表,其外观如下所示:
持续时间 | 拨号号 | 位置 | 日期 | 时间 | 站点 | 分机 |
---|---|---|---|---|---|---|
0:00:57 | 3-573-7783 | 10.200.16.33 | 10/05/2000 | 4:49:45 | BLM | 37569 |
0:00:57 | 3-573-7783 | 10.200.16.33 | 10/05/2000 | 4:49:45 | BLM | 37569 |
0:00:38 | 3-577-2958 | 10.200.16.33 | 10/05/2000 | 4:28:28 | BLM | 37576 |
0:00:38 | 3-577-2958 | 10.200.16.33 | 10/05/2000 | 4:28:28 | BLM | 37576 |
0:00:52 | 3-577-2985 | 10.200.16.33 | 10/05/2000 | 9:26:33 | BLM | 37593 |
0:01:19 | 3-577-1770 | 10.200.16.33 | 10/05/2000 | 7:26:05 | BMC | 34270 |
0:00:23 | 3-577-1770 | 10.200.16.33 | 10/05/2000 | 8:08:27 | BMC | 34270 |
0:00:23 | 3-577-1770 | 10.200.16.33 | 10/05/2000 | 8:08:27 | BMC | 34270 |
0:00:11 | 4-566-5302 | 10.132.16.33 | 10/05/2000 | 7:05:33 | COR | 42791 |
0:00:32 | 4-567-0417 | 10.132.16.33 | 10/05/2000 | 5:29:51 | COR | 42805 |
0:00:32 | 4-567-0417 | 10.132.16.33 | 10/05/2000 | 5:29:51 | COR | 42805 |
0:00:36 | 4-232-8545 | 10.132.16.33 | 10/05/2000 | 5:42:07 | COR | 42823 |
0:00:36 | 4-232-8545 | 10.132.16.33 | 10/05/2000 | 5:42:07 | COR | 42823 |
0:00:39 | 4-472-5011 | 10.132.16.33 | 10/05/2000 | 5:59:23 | COR | 46578 |
0:00:39 | 4-472-5011 | 10.132.16.33 | 10/05/2000 | 5:59:23 | COR | 46578 |
0:00:28 | 4-236-7687 | 10.132.16.33 | 10/05/2000 | 7:17:51 | COR | 46578 |
0:00:17 | 6-867-9766 | 10.132.16.35 | 10/05/2000 | 4:08:02 | GIS | 64197 |
0:00:17 | 6-867-9766 | 10.132.16.35 | 10/05/2000 | 4:08:02 | GIS | 64197 |
0:00:30 | 6-868-6889 | 10.132.16.35 | 10/05/2000 | 6:15:48 | GIS | 68549 |
0:00:30 | 6-868-6889 | 10.132.16.35 | 10/05/2000 | 6:15:48 | GIS | 68549 |
0:01:26 | 6-876-5223 | 10.132.16.35 | 10/05/2000 | 7:10:23 | HAH | 68369 |
0:01:26 | 6-876-5223 | 10.132.16.35 | 10/05/2000 | 7:10:23 | HAH | 68369 |
0:00:52 | 6-876-2223 | 10.132.16.35 | 10/05/2000 | 5:37:58 | HAH | 68397 |
0:01:05 | 4-477-5402 | 10.132.16.33 | 10/05/2000 | 4:23:20 | JVL | 47162 |
0:00:24 | 4-478-8848 | 10.132.16.33 | 10/05/2000 | 7:07:09 | JVL | 47168 |
0:00:24 | 4-478-8848 | 10.132.16.33 | 10/05/2000 | 7:07:09 | JVL | 47168 |
0:00:44 | 4-387-1333 | 10.132.16.33 | 10/05/2000 | 7:49:16 | KIB | 49252 |
0:00:44 | 4-387-1333 | 10.132.16.33 | 10/05/2000 | 7:49:16 | KIB | 49252 |
0:01:14 | 4-389-4299 | 10.132.16.33 | 10/05/2000 | 4:07:10 | KIB | 49254 |
0:01:14 | 4-389-4299 | 10.132.16.33 | 10/05/2000 | 4:07:10 | KIB | 49254 |
0:00:29 | 4-387-1337 | 10.132.16.33 | 10/05/2000 | 4:06:45 | KIB | 49256 |
0:00:29 | 4-387-1337 | 10.132.16.33 | 10/05/2000 | 4:06:45 | KIB | 49256 |
0:00:41 | 4-384-9269 | 10.132.16.33 | 10/05/2000 | 4:09:38 | KIB | 49261 |
0:00:41 | 4-384-9269 | 10.132.16.33 | 10/05/2000 | 4:09:38 | KIB | 49261 |
0:00:41 | 4-384-9269 | 10.132.16.33 | 10/05/2000 | 4:09:38 | KIB | 49261 |
0:00:17 | 4-387-1344 | 10.132.16.33 | 10/05/2000 | 4:33:04 | KIB | 49263 |
0:00:17 | 4-387-1344 | 10.132.16.33 | 10/05/2000 | 4:33:04 | KIB | 49263 |
0:00:31 | 6-367-5103 | 10.132.16.35 | 10/05/2000 | 8:44:46 | 列夫 | 64233 |
0:00:31 | 6-367-5103 | 10.132.16.35 | 10/05/2000 | 8:44:46 | 列夫 | 64233 |
0:00:30 | 6-368-9088 | 10.132.16.35 | 10/05/2000 | 4:11:06 | 列夫 | 64247 |
0:00:30 | 6-368-9088 | 10.132.16.35 | 10/05/2000 | 4:11:06 | 列夫 | 64247 |
0:00:38 | 4-570-2450 | 10.132.16.33 | 10/05/2000 | 4:08:26 | LHT | 43636 |
0:00:38 | 4-570-2450 | 10.132.16.33 | 10/05/2000 | 4:08:26 | LHT | 43636 |
使用Excel“小计”功能计算每个用户/站点的错误呼叫数。然后创建Excel宏,以半自动执行子合计。请参阅以下示例:
持续时间 | 拨号号 | 位置 | 日期 | 时间 | 站点 | 分机 |
---|---|---|---|---|---|---|
BCM计数 | 5 | |||||
BMC计数 | 3 | |||||
COR计数 | 8 | |||||
GIS计数 | 4 | |||||
HAH计数 | 3 | |||||
JVL计数 | 3 | |||||
KIB计数 | 11 | |||||
LEV计数 | 4 | |||||
LHT计数 | 2 | |||||
大伯爵 | 43 |
现在,站点列包含该站点的错误呼叫数。报告中的Location列是VoIP支路另一端的IP地址,来自网关CDR记录。在CallManager(CCM)环境中,信令和媒体端点是两个不同的IP地址。列出的IP地址是信令端点(即CallManager)。已提交DDTS(CSCds23283)以请求允许CDR记录记录介质IP地址的旋钮。这将允许按子网对错误呼叫进行排序。这样可以提供更精细的粒度,因为每个站点通常有多个子网。如果这些子网中只有一部分出现QoV问题,则可以确定这些问题。
我们建议您设置Telemate调度程序,以每天自动运行一次“Packet Voice Calls with Quality of Service Traps”报告。然后,可将已完成的报告通过电子邮件发送给选定的运营人员。然后,这些员工会对过去24小时进行每日QoV审计。报告应至少存档一个月,以便QoV的任何恶化都可以与该时间前后执行的任何网络更改相关联。
注意:报告需要Telemate 4.7或更高版本才能与在CallManager环境中运行的网关正常工作。早期版本的Telemate假设本地分机始终位于网关的POTS端。在CallManager环境中,本地分机(IPhone)位于网关的VoIP端。因此,早期版本的Telemate会变得混乱,报告的价值有限。
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
26-Jun-2019 |
初始版本 |