本文档介绍使用Cisco IOS®服务保证代理(SAA)和往返时间监控器(RTTMON)功能和Cisco路由器测量数据网络延迟、抖动和丢包的方法。
随着数据网络上新应用的出现,准确预测新应用部署的影响对客户来说变得越来越重要。不久前,通过上层协议的超时和重传功能,为应用程序分配带宽并让应用程序适应流量激增的特性还很容易。但是,现在,新的世界应用(如语音和视频)更容易受到数据网络传输特性变化的影响。在部署新世界应用之前,必须了解网络的流量特征,以确保成功实施。
IP语音(VoIP)易受网络行为(即延迟和抖动)的影响,这会使语音应用降级到普通用户无法接受的程度。延迟是从网络中的点到点花费的时间。延迟可以单向延迟或往返延迟测量。单向延迟计算需要昂贵的复杂测试设备,超出了大多数企业客户的预算和专业知识。但是,测量往返延迟比较容易,而且需要的设备也比较便宜。为了得到单向延迟的一般测量,测量往返延迟并将结果除以二。VoIP通常可以容忍高达150毫秒的延迟,否则呼叫质量将无法接受。
抖动是随时间的延迟从点到点的变化。如果VoIP呼叫中传输的延迟变化过大,呼叫质量将大大降低。网络上可容忍的抖动量受语音路径中网络设备上抖动缓冲区深度的影响。可用的抖动缓冲区越多,网络可以减少抖动的影响就越多。
数据包丢失正在沿数据路径丢失数据包,这严重降低了语音应用的性能。
在部署VoIP应用之前,评估数据网络上的延迟、抖动和丢包非常重要,以确定语音应用是否工作。然后,延迟、抖动和丢包测量有助于正确设计和配置流量优先级,以及缓冲数据网络设备中的参数。
SAA和RTTMON MIB是12.0(5)T及更高版本中提供的Cisco IOS软件功能。这些功能使您能够测试和收集数据网络上的延迟、抖动和丢包统计信息。网际网络性能监控器(IPM)是思科网络管理应用,可配置功能并监控SAA和RTTMON数据。SAA和RTTMON功能可通过部署小型Cisco IOS路由器作为代理来模拟客户终端站,来测量延迟、抖动和丢包。路由器称为延迟和抖动探测。此外,一旦确定基线值,延迟和抖动探测功能可以配置远程监控(RMON)警报和事件触发。这允许延迟和抖动探测器监控网络的预定延迟和抖动服务级别,并在超过阈值时报警网络管理系统(NMS)站。
延迟和抖动可以通过部署Cisco路由器17xx或更高版本(Cisco IOS软件代码版本12.05T或更高版本)和配置Cisco IOS SAA功能来测量。路由器应放置在园区网络中主机旁。这提供端到端连接的统计信息。由于测量网络中的每条可能的语音路径并不可行,请将探测器放置在提供典型语音路径统计采样的典型主机位置。一些个示例包括:
本地园区到园区路径
通过384 kbs帧中继电路的本地园区到远程园区路径
通过ATM永久虚电路(PVC)的本地园区到远程园区
在使用使用外部交换站(FXS)端口连接到思科路由器的传统电话进行VoIP部署时,使用连接到电话的路由器作为延迟和抖动探测。部署后,探测功能将收集统计信息并填充路由器中的简单网络管理协议(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秒。
这些参数为64 kb/s,持续60秒。
((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在request-data-size中不考虑,因为路由器会自动将其添加到内部大小。
注意:目前,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脚本可用于从命令行收集数据并将其导出到文本文件以供以后分析。此外,命令行数据还可用于实时监控和排除延迟、抖动和丢包故障。
以下示例显示sarouter1路由器上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警报和事件的功能。
SAA功能集阈值命令设置生成反应事件并存储操作历史信息的上升阈值(滞后)。延迟和抖动探测功能上的以下SAA阈值配置可监控抖动,并在5毫秒阈值违规时创建SNMP陷阱。
saarouter1# rtr 100 rtr reaction-configuration 100 threshold-falling 5 threshold-type immediate
延迟和抖动探测功能使用SAA Cisco IOS功能或Cisco IOS RMON警报和事件方法监控预定阈值。无论哪种情况,路由器都会监控延迟、抖动和丢包,并通过SNMP陷阱向NMS站发出违反阈值的警报。
以下RMON警报和事件陷阱配置会导致saarouter1在上升阈值超过140毫秒最大往返时间时生成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应答 |
对于上述数据包1和数据包2,请使用以下源和目的计算。
从源到目的地的抖动(抖动SD)=(T6-T2)-(T5-T1)
从目的设备到源设备的抖动(抖动DS)=(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 — 带两个WAN插槽和Cisco IOS IP软件的10/100BaseT模块化路由器
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 |
初始版本 |