本文档介绍使用Cisco IOS®服务保证代理(SAA)和往返时间监控器(RTTMON)功能和思科路由器测量数据网络上的延迟、抖动和丢包的方法。
随着数据网络上新应用的出现,客户准确预测新应用推广的影响变得越来越重要。不久前,通过上层协议的超时和重新传输功能,为应用分配带宽很容易,并使应用能够适应数据流量的爆炸性增长。但是,现在,语音和视频等新的世界应用更容易受到数据网络传输特性变化的影响。在部署新的世界应用之前,必须了解网络的流量特征,以确保成功实施。
IP语音(VoIP)容易受到网络行为(称为延迟和抖动)的影响,这会使语音应用降级到普通用户无法接受的程度。延迟是网络中点对点所用的时间。延迟可以用单向延迟或往返延迟来衡量。单向延迟计算需要昂贵的复杂测试设备,超出了大多数企业客户的预算和专业能力。但是,测量往返延迟更容易,并且需要的设备也更便宜。为了得到一个通用的单向延迟测量值,测量往返延迟,并将结果除以2。VoIP通常允许延迟达到150毫秒,否则呼叫质量无法接受。
抖动是点到点延迟随时间的变化。如果VoIP呼叫中的传输延迟变化过大,则呼叫质量会严重下降。网络上可容忍的抖动量受语音路径中网络设备上的抖动缓冲区的深度影响。可用的抖动缓冲区越多,网络就越能降低抖动的影响。
丢包是指沿数据路径丢失数据包,这会严重降低语音应用的性能。
在部署VoIP应用之前,必须评估数据网络上的延迟、抖动和丢包,以确定语音应用是否工作。然后,延迟、抖动和丢包测量可帮助正确设计和配置流量优先级,以及数据网络设备中的缓冲参数。
SAA和RTTMON MIB是12.0(5)T及更高版本中提供的Cisco IOS软件功能。这些功能使您能够测试和收集数据网络上的延迟、抖动和丢包统计数据。Internetwork Performance Monitor(IPM)是一种思科网络管理应用,可以配置功能并监控SAA和RTTMON数据。SAA和RTTMON功能可用于通过将小型Cisco IOS路由器部署为模拟客户终端站的代理来测量延迟、抖动和丢包。路由器称为延迟和抖动探头。此外,一旦确定基线值,可以使用远程监控(RMON)警报和事件触发器配置延迟和抖动探测器。这允许延迟和抖动探测功能监控网络的预定延迟和抖动服务级别,并在超过阈值时向网络管理系统(NMS)站点发出警报。
延迟和抖动可以通过以下方法测量:使用Cisco IOS软件代码版本12.05T或更高版本部署17xx或更高版本的Cisco路由器,以及配置Cisco IOS SAA功能。路由器应放置在园区网络中主机旁边。这提供了端到端连接的统计信息。由于无法测量网络中每个可能的语音路径,因此请将探测器放置在典型主机位置,以便提供典型语音路径的统计采样。一些个示例包括:
本地园区到园区路径
通过384 kbs帧中继电路建立本地园区到远程园区的路径
通过ATM永久虚拟电路(PVC)建立本地园区到远程园区
在使用传统电话的VoIP部署中,使用外部交换站(FXS)端口连接到思科路由器,使用连接到电话的路由器作为延迟和抖动探头。部署完成后,探测功能会收集统计信息并填充路由器中的简单网络管理协议(SNMP)MIB表。然后,可通过Cisco IPM应用或SNMP轮询工具访问数据。此外,一旦建立了基线值,SAA可以配置为在超过延迟、抖动和丢包阈值时向NMS站发送警报。
使用SAA作为测试机制的一个优点是可以模拟语音呼叫。例如,假设您要模拟G.711语音呼叫。您知道它使用RTP/UDP端口14384及以上,大约为64 kb/s,数据包大小为200字节{(160字节负载+ 40字节用于IP/UDP/RTP(未压缩)}。您可以通过如下所示设置SAA延迟/抖动探测来模拟该类型的流量。
抖动操作需要执行以下操作:
将请求发送到RTP/UDP端口号14384。
发送172字节数据包(160负载+ 12字节RTP报头大小)+ 28字节(IP + UDP)。
为每个频率周期发送3000个数据包。
将每个数据包相隔20毫秒发送60秒,然后休眠10秒,再开始下一个频率周期。
这些参数在60秒内可提供64 kb/s。
((3000个数据报*每个数据报160字节)/ 60秒)* 8位/字节= 64 kb/s
路由器上的配置如下所示:
rtr 1 type jitter dest-ipaddr 172.18.179.10 dest-port 14384 num-packets 3000+ request-data-size 172* frequency 70 rtr schedule 1 life 2147483647 start-time now
注意:请求数据大小中不考虑IP+UDP,因为路由器会在内部自动将其添加到该大小中。
注意:目前,Cisco IOS每个操作仅支持1000个数据包。此限制将在未来的版本中提高。
以下示例中的路由器每60秒模拟一次60秒的语音呼叫,并记录两个方向的延迟、抖动和丢包。
注:延迟计算是往返时间,必须除以2才能获得单向延迟。
saarouter1# rtr responder rtr 1 type jitter dest-ipaddr 172.18.179.10 dest-port 14384 num-packets 1000 request-data-size 492 frequency 60 rtr schedule 1 life 2147483647 start-time now saarouter2# rtr responder rtr 1 type jitter dest-ipaddr 172.18.178.10 dest-port 14385 num-packets 1000 request-data-size 492 rtr schedule 1 life 2147483647 start-time now saarouter3# rtr responder rtr 1 type jitter dest-ipaddr 172.18.179.100 dest-port 14385 num-packets 1000 request-data-size 492 frequency 60 rtr schedule 1 life 2147483647 start-time now saarouter4# rtr responder rtr 1 type jitter dest-ipaddr 172.18.178.100 dest-port 14385 num-packets 1000 request-data-size 492 frequency 60 rtr schedule 1 life 2147483647 start-time now
延迟和抖动探测功能开始收集数据,随后将其放入SNMP MIB表中。rttMonStats表提供过去一小时内所有抖动操作的一小时平均值。rttMonLatestJitterOper表提供上次完成的操作的值。有关延迟和抖动的一般统计信息,请每小时轮询rttMonStats表。要获得更精细的统计信息,请在比抖动操作更高的频率级别轮询rttMonLatestJitterOper表。例如,如果延迟和抖动探测功能每五分钟计算一次抖动,则不要以小于五分钟的任何间隔轮询MIB。
以下屏幕截图显示从HP OpenView网络节点管理器MIB轮询中收集的rttMonJitterStatsTable中的数据。
以下SAA数据图表是一对延迟和抖动探针的延迟、抖动和丢包数据点在8小时时间段内的集合。
在延迟和抖动探测的命令行上使用Cisco IOS show命令也可以查看数据。Perl Expect脚本可用于从命令行收集数据并将其导出到文本文件,以供日后分析。此外,命令行数据还可用于实时监控延迟、抖动和丢包故障排除。
以下示例显示路由器A1上show rtr collection-stats命令的命令输出。
#show rtr collection-stats 100 Collected Statistics Entry Number: 100 Target Address: 172.16.71.243, Port Number: 16384 Start Time: 13:06:04.000 09:25:00 Tue Mar 21 2000 RTT Values: NumOfRTT: 600 RTTSum: 873 RTTSum2: 1431 Packet Loss Values: PacketLossSD: 0 PacketLossDS: 0 PacketOutOfSequence: 0 PacketMIA: 0 PacketLateArrival: 0 InternalError: 0 Busies: 0 Jitter Values: MinOfPositivesSD: 1 MaxOfPositivesSD: 1 NumOfPositivesSD: 23 SumOfPositivesSD: 23 Sum2PositivesSD: 23 MinOfNegativesSD: 1 MaxOfNegativesSD: 1 NumOfNegativesSD: 1 SumOfNegativesSD: 1 Sum2NegativesSD: 1 MinOfPositivesDS: 1 MaxOfPositivesDS: 1 NumOfPositivesDS: 7 SumOfPositivesDS: 7 Sum2PositivesDS: 7 MinOfNegativesDS: 1 MaxOfNegativesDS: 1 NumOfNegativesDS: 18 SumOfNegativesDS: 18 Sum2NegativesDS: 18 Entry Number: 100 Target Address: 172.16.71.243, Port Number: 16384 Start Time: 14:06:04.000 09:25:00 Tue Mar 21 2000 RTT Values: NumOfRTT: 590 RTTSum: 869 RTTSum2: 1497 Packet Loss Values: PacketLossSD: 0 PacketLossDS: 0 PacketOutOfSequence: 0 PacketMIA: 0 PacketLateArrival: 0 InternalError: 0 Busies: 0 Jitter Values: MinOfPositivesSD: 1 MaxOfPositivesSD: 1 NumOfPositivesSD: 29 SumOfPositivesSD: 29 Sum2PositivesSD: 29 MinOfNegativesSD: 1 MaxOfNegativesSD: 1 NumOfNegativesSD: 7 SumOfNegativesSD: 7 Sum2NegativesSD: 7 MinOfPositivesDS: 1 MaxOfPositivesDS: 1 NumOfPositivesDS: 47 SumOfPositivesDS: 47 Sum2PositivesDS: 47 MinOfNegativesDS: 1 MaxOfNegativesDS: 1 NumOfNegativesDS: 5 SumOfNegativesDS: 5 Sum2NegativesDS: 5
在通过初始数据收集建立基线值后,有几种方法可以监控网络中的延迟、抖动和丢包级别。一种方法是使用SAA threshold命令。另一种方法是使用Cisco IOS主行代码中名为RMON Alarm and Event的功能。
SAA功能集threshold命令设置上升阈值(滞后),生成反应事件并存储操作的历史信息。延迟和抖动探针上的以下SAA阈值配置启用对抖动的监控并在违反5毫秒阈值时创建SNMP陷阱。
saarouter1# rtr 100 rtr reaction-configuration 100 threshold-falling 5 threshold-type immediate
延迟和抖动探针使用SAA Cisco IOS功能或Cisco IOS RMON警报和事件方法监控预定阈值。无论哪种情况,路由器都会监控延迟、抖动和数据包丢失,并通过SNMP陷阱向NMS站点发出阈值违规警报。
如果上升阈值超过140毫秒最大往返时间,以下RMON警报和事件陷阱配置会导致saarouter1生成SNMP陷阱。当最大往返时间回落到100毫秒以下时,它还会发送另一个陷阱。然后trap被发送到路由器上的日志,同时发到NMS站点172.16.71.19。
saarouter1# rmon alarm 10 rttMonJitterStatsRTTMax.100.120518706 1 absolute rising-threshold 140 100 falling-threshold 100 101 owner jharp rmon event 100 log trap private description max_rtt_exceeded owner jharp rmon event 101 log trap private description rtt_max_threshold_reset owner jharp
抖动是单向延迟的差异,根据发出的连续数据包的发送和接收时间戳进行计算。
时标 | 发件人 | 响应方 |
---|---|---|
T1 | 发送pkt1 | |
T2 | recv pkt1 | |
T3 | 发回pkt1的回复 | |
T4 | pkt1的recv应答 | |
T5 | 发送pkt2 | |
T6 | recv pkt2 | |
T7 | 发回pkt2的回复 | |
T8 | pkt2的recv reply |
对于上述数据包1和数据包2,请使用以下源和目标计算。
从源到目的地的抖动(JitterSD)=(T6-T2)-(T5-T1)
从目标到源的抖动(JitterDS)=(T8-T4)-(T7-T3)
抖动是使用每两个连续数据包的时间戳计算的。例如:
Router1 send packet1 T1 = 0 Router2 receives packet1 T2 = 20 ms Router2 sends back packet1 T3 = 40 ms Router1 receives packet1 response T4 = 60 ms Router1 sends packet2 T5 = 60 ms Router2 receives packet2 T6 = 82 ms Router2 sends back packet2 T7 = 104 ms Router1 receives packet2 response T8 = 126 ms Jitter from source to destination (JitterSD) = (T6-T2) - (T5-T1) Jitter from source to destination (JitterSD) = (82 ms - 20 ms) - (60 ms - 0 ms) = 2 ms positive jitter SD Jitter from destination to source (JitterDS) = (T8-T4) - (T7-T3) Jitter from destination to source (JitterDS) = (126 ms - 60 ms) - (10 4ms - 40 ms) = 2 ms positive jitter DS
CISCO1720 - 10/100BaseT模块化路由器,带两个WAN插槽和Cisco IOS IP软件
MEM1700-16U24D - Cisco 1700 16 MB到24 MB DRAM工厂升级
MEM1700-4U8MFC - Cisco 1700 4 MB到8 MB迷你闪存卡工厂升级
CAB-AC — 电源线,110V
S17CP-12.1.1T - Cisco 1700 IOS IP PLUS
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
02-Dec-2013 |
初始版本 |