配置 SNMP 远程操作
SNMP 远程操作概述
SNMP 远程操作是路由器上可以使用 SNMP 远程控制的任何进程。Junos OS 目前支持两种 SNMP 远程操作:RFC 2925 中定义的 Ping MIB 和 Traceroute MIB。使用这些 MIB,网络管理系统 (NMS) 中的 SNMP 客户端可以:
在路由器上启动一系列操作
操作完成时接收通知
收集每个操作的结果
Junos OS 还为瞻博网络企业特定的扩展和 jnxPingMIB jnxTraceRouteMIB中的这些 MIB 提供了扩展功能。有关 和 jnxTraceRouteMIB的详细信息jnxPingMIB,请参阅 PING MIB 和 Traceroute MIB。
本主题涵盖以下部分:
SNMP 远程操作要求
要使用 SNMP 远程操作,您应该熟悉 SNMP 约定。您还必须配置 Junos OS 以允许使用远程操作 MIB。
在启动 Ping MIB 之前,请参阅 启动 Ping 测试。
在启动 Traceroute MIB 之前,请参阅 启动 Traceroute 测试。
设置 SNMP 视图
Junos OS 支持的所有远程操作 MIB 都需要 SNMP 客户端具有读写权限。Junos OS 的默认 SNMP 配置不会向客户端提供具有此类权限的社区字符串。
要为 SNMP 社区字符串设置读写权限,请在 [edit snmp] 层次结构级别包含以下语句:
[edit snmp] community community-name { authorization authorization; view view-name; } view view-name { oid object-identifier (include | exclude); }
示例:设置 SNMP 视图
要创建一个名为授予 SNMP 客户端对 Ping MIBjnxPing、MIB、Traceroute MIB和 jnxTraceRoute MIB 的读写访问权限的社区,remote-community请在[edit snmp]层次结构级别包含以下语句:
snmp {
view remote-view {
oid 1.3.6.1.2.1.80 include; # pingMIB
oid 1.3.6.1.4.1.2636.3.7 include; # jnxPingMIB
oid 1.3.6.1.2.1.81 include; # traceRouteMIB
oid 1.3.6.1.4.1.2636.3.8 include; # jnxTraceRouteMIB
}
community remote-community {
view remote-view;
authorization read-write;
}
}
有关该community语句的详细信息,请参阅配置 SNMP 社区和社区 (SNMP)。
有关语view句的详细信息,请参阅配置 MIB 视图、视图(SNMP 社区)和视图(配置 MIB 视图)。
设置远程操作的陷阱通知
除了为陷阱通知配置远程操作 MIB 外,还必须配置 Junos OS。您必须为远程操作陷阱指定目标主机。
要为 SNMP 远程操作配置陷阱通知,请在[edit snmp trap-group group-name]层次结构级别包括 categories and targets 语句:
[edit snmp trap-group group-name]
categories {
category;
}
targets {
address;
}
}
示例:为远程操作设置陷阱通知
指定 172.17.12.213 为所有远程操作陷阱的目标主机:
snmp {
trap-group remote-traps {
categories remote-operations;
targets {
172.17.12.213;
}
}
}
有关陷阱组的更多信息,请参阅 配置 SNMP 陷阱组。
使用可变长度字符串索引
Junos OS 支持的远程操作 MIB 中的所有表格对象都由两个类型的 SnmpAdminString变量编制索引。有关的详细信息 SnmpAdminString,请参阅 RFC 2571。
Junos OS 的处理 SnmpAdminString 方式与八位字节字符串变量类型没有任何不同。但是,索引被定义为可变长度。当可变长度字符串用作索引时,字符串的长度必须作为对象标识符 (OID) 的一部分包含在内。
示例:设置可变长度字符串索引
要引用 pingCtlTargetAddress where pingCtlOwnerIndex is bob 和 pingCtlTestName is test中pingCtlTable行的变量,请使用以下对象标识符(OID):
pingMIB.pingObjects.pingCtlTable.pingCtlEntry.pingCtlTargetAddress."bob"."test" 1.3.6.1.2.1.80.1.2.1.4.3.98.111.98.4.116.101.115.116
有关 Ping MIB 定义的详细信息,请参阅 RFC 2925。
启用日志记录
响应 SNMP 请求而返回的 SNMP 错误代码只能提供问题的一般描述。远程操作过程记录的错误描述通常可以提供有关问题的更详细信息,并帮助您更快地解决问题。默认情况下,此日志记录不会启用。要启用日志记录,请在层次结构级别包含[edit snmp traceoptions]该flag general语句:
[edit]
snmp {
traceoptions {
flag general;
}
}
如果远程操作进程收到它无法容纳的 SNMP 请求,则会将错误记录在文件中 /var/log/rmopd 。要监控此日志文件,请在命令行界面 (CLI) 的操作模式下发出 monitor start rmopd 命令。
将 ping MIB 用于运行 Junos OS 的远程监控设备
ping 测试用于确定从本地主机发送的数据包是否到达指定主机并返回。如果可以访问到指定的主机,ping 测试将提供数据包的大致往返时间。Ping 测试结果存储在 pingResultsTable 和 pingProbeHistoryTable中。
RFC 2925 是对 Ping MIB 的详细权威描述,并提供了 Ping MIB 的 ASN.1 MIB 定义。
启动 ping 测试
使用此主题可启动 ICMP ping 测试。启动 ping 测试有两种方法:使用多个 Set 协议数据单元 (PDU) 或使用单个 Set PDU。
开始之前
启动 ping 测试
要启动 ping 测试,请在 中 pingCtlTable 创建一个行,并设置为 pingCtlAdminStatus enabled。在设置为 pingCtlAdminStatus 之前 enabled 必须指定的最小信息为:
pingCtlOwnerIndexSnmpAdminStringpingCtlTestNameSnmpAdminStringpingCtlTargetAddressInetAddresspingCtlTargetAddressTypeInetAddressTypepingCtlRowStatusRowStatus
对于所有其他值,除非另有指定,否则选择默认值。pingCtlOwnerIndex并pingCtlTestName用作索引,因此它们的值被指定为对象标识符 (OID) 的一部分。要创建行,请设置为pingCtlRowStatuscreateAndWait或createAndGo在尚不存在的行上。值 active for pingCtlRowStatus 表示已提供所有必要的信息,可以开始测试;pingCtlAdminStatus可以设置为 enabled。如果未指定行中的必要信息或不一致,则设置为 pingCtlRowStatus 的 active SNMP Set 请求将失败。
有关如何配置视图的信息,请参阅 设置 SNMP 视图。
阅读以下部分,了解如何对变量进行排序。
使用多组 PDU
您可以使用多个 Set 请求PDU(多个PDU,每个PDU都有一个或多个varbind),并按此顺序设置以下变量以启动测试:
pingCtlRowStatus到createAndWait所有适当的测试变量
pingCtlRowStatus到activeJunos OS 现在会验证是否已指定运行测试所需的所有信息。
pingCtlAdminStatus到enabled
使用单组 PDU
您可以使用单个 Set 请求 PDU(一个 PDU,具有多个 varbind)来设置以下变量来启动测试:
pingCtlRowStatus到createAndGo所有适当的测试变量
pingCtlAdminStatus到enabled
监控正在运行的 ping 测试
当 pingCtlAdminStatus 成功设置为 enabled时,在将 SNMP Set 请求的确认发送回客户端之前,将执行以下操作:
pingResultsEntry如果尚不存在,则将其创建。pingResultsOperStatus转换为enabled.
有关更多信息,请参阅以下部分:
pingResultsTable
在测试运行时, pingResultsEntry 跟踪测试的状态。的 pingResultsOperStatus 值是 enabled 测试运行时和 disabled 停止时。
的 pingCtlAdminStatus 值一直保留 enabled ,直到将其设置为 disabled。因此,要获得测试状态,您必须检查 pingResultsOperStatus。
该pingCtlFrequency变量可用于为一个 pingCtlEntry安排许多测试。在测试正常结束(您没有停止测试)并且pingCtlFrequency秒数过去后,测试将再次开始,就像您设置为pingCtlAdminStatusenabled一样。如果您在重复测试之间的任何时间进行干预(您设置为 pingCtlAdminStatus disabled 或 pingCtlRowStatus 到 notInService),则重复功能将被禁用,直到另一个测试开始并正常结束。值为 0 表示pingCtlFrequency此重复要素未激活。
pingResultsIpTgtAddr 当 pingResultsIpTgtAddrType 的 pingCtlTargetAddressType 值为 dns时,将设置为已解析目标地址的值。当测试成功启动并 pingResultsOperStatus 转换为 enabled:
pingResultsIpTgtAddr设置为null-string。pingResultsIpTgtAddrType设置为unknown。
pingResultsIpTgtAddr直到pingResultsIpTgtAddrType可以解析为数字地址才pingCtlTargetAddress设置。要检索这些值,请轮询pingResultsIpTgtAddrType除成功设置为 pingCtlAdminStatus enabled之后以外的unknown任何值。
测试开始时, pingResultsSentProbes 初始化为 1,并发送第一个探针。 pingResultsSentProbes 每次发送探针时增加 1。
测试运行时,每秒都会发生以下 pingCtlTimeOut 情况:
pingProbeHistoryStatus对于相应pingProbeHistoryEntry的 inpingProbeHistoryTablerequestTimedOut设置为 。pingProbeFailed如有必要,将生成陷阱。尝试发送下一个探测。
注意:每个测试不超过一个未完成的探针。
对于每个探针,您都会收到以下结果之一:
目标主机通过响应确认探测。
探针超时;目标主机没有确认探查的响应。
无法发送探测器。
每个探测结果都记录在 pingProbeHistoryTable中。有关 的详细信息 pingProbeHistoryTable,请参阅 pingProbeHistoryTable。
当从目标主机收到确认当前探测的响应时:
pingResultsProbeResponses增加 1。更新以下变量:
pingResultsMinRtt—最短往返时间pingResultsMaxRtt—最长往返时间pingResultsAverageRtt—平均往返时间pingResultsRttSumOfSquares- 往返时间的平方和pingResultsLastGoodProbe—上次响应的时间戳注意:只有导致目标主机响应的探针才有助于往返时间 (RTT) 变量的计算。
当收到对最后一个探针的响应或最后一个探针超时时,测试完成。
pingProbeHistoryTable
(pingProbeHistoryEntry) 中的pingProbeHistoryTable条目表示探测结果,并由三个变量索引:
前两个变量 和
pingCtlOwnerIndexpingCtlTestName与pingCtlTable用于标识检验的变量相同。第三个变量
pingProbeHistoryIndex,是一个计数器,用于唯一标识每个探测结果。
为给定测试创建的最大条目数 pingProbeHistoryTable 由 限制。 pingCtlMaxRows如果设置为 0,则 pingCtlMaxRows 不会为该测试创建任何 pingProbeHistoryTable 条目。
每次确定探针结果时,都会创建 a pingProbeHistoryEntry 并将其添加到 中 pingProbeHistoryTablepingProbeHistoryIndex 的新值pingProbeHistoryEntry比该测试的上次pingProbeHistoryEntry添加pingProbeHistoryTable值大 1。 pingProbeHistoryIndex 如果这是表中的第一个条目,则设置为 1。同一个测试可以多次运行,因此该索引会不断增长。
如果最后添加pingProbeHistoryEntry的 0xFFFFFFFF,则pingProbeHistoryIndex下一个pingProbeHistoryEntry添加pingProbeHistoryIndex的设置为 1。
对于每个探测结果,将记录以下内容:
pingProbeHistoryResponse— 生存时间 (TTL)pingProbeHistoryStatus——发生了什么以及为什么pingProbeHistoryLastRC— ICMP 数据包的返回代码 (RC) 值pingProbeHistoryTime—确定探针结果的时间戳
当无法发送探针时, pingProbeHistoryResponse 设置为 0。当探针超时时, pingProbeHistoryResponse 设置为发现探针超时的时间与发送探针的时间之间的差值。
生成陷阱
对于要生成的任何陷阱,必须设置适当的位 pingCtlTrapGeneration 。您还必须配置一个陷阱组来接收远程操作。 陷阱将在以下条件下生成:
在测试期间,每次连续多次探针失败时
pingCtlTrapProbeFailureFilter,都会生成陷阱pingProbeFailed。pingTestFailed当测试完成且至少pingCtlTrapTestFailureFilter有多个探针失败时,将生成陷阱。pingTestCompleted当测试完成且少于pingCtlTrapTestFailureFilter探针失败时,将生成陷阱。注意:当
pingProbeHistoryStatus探测结果responseReceived不是 时,探测被视为失败。
有关如何配置陷阱组以接收远程操作的信息,请参阅 配置 SNMP 陷阱组。
收集 ping 测试结果
您可以轮询 pingResultsOperStatus 以了解测试何时完成,也可以请求在测试完成时发送陷阱。有关 的详细信息 pingResultsOperStatus,请参阅 pingResultsTable。有关 Ping MIB 陷阱的更多信息,请参阅 生成陷阱。
计算并存储的 pingResultsTable 统计信息包括:
pingResultsMinRtt—最短往返时间pingResultsMaxRtt—最长往返时间pingResultsAverageRtt—平均往返时间pingResultsProbeResponses—收到的回复数pingResultsSentProbes— 尝试发送探针的次数pingResultsRttSumOfSquares- 往返时间的平方和pingResultsLastGoodProbe—上次响应的时间戳
您还可以查阅 pingProbeHistoryTable 有关每个探头的更多详细信息。用于 pingProbeHistoryTable 的索引从 1 开始,转到 0xFFFFFFFF,然后再次换行到 1。
例如,如果 是 15 和 pingCtlMaxRows 5,则pingCtlProbeCount在完成此测试的第一次运行后,pingProbeHistoryTable将包含如 表 1 中的探针。
pingProbeHistoryIndex |
探测结果 |
|---|---|
11 |
运行 1 的第 11 个探针的结果 |
12 |
运行 1 的第 12 个探针的结果 |
13 |
运行 1 的第 13 个探针的结果 |
14 |
运行 1 的第 14 个探测结果 |
15 |
运行 1 的第 15 个探测的结果 |
完成此测试第二次运行的第一个探针后, pingProbeHistoryTable 将包含 如 表 2 中的探针。
pingProbeHistoryIndex |
探测结果 |
|---|---|
12 |
运行 1 的第 12 个探针的结果 |
13 |
运行 1 的第 13 个探针的结果 |
14 |
运行 1 的第 14 个探测结果 |
15 |
运行 1 的第 15 个探测的结果 |
16 |
运行 2 中的第一个探头的结果 |
完成此测试的第二次运行后, pingProbeHistoryTable 将包含如 表 3 中的探针。
pingProbeHistoryIndex |
探测结果 |
|---|---|
26 |
运行 2 的第 11 个探测结果 |
27 |
运行 2 的第 12 个探针的结果 |
28 |
运行 2 的第 13 个探针的结果 |
29 |
运行 2 的第 14 个探测结果 |
30 |
运行 2 的第 15 个探测结果 |
可以通过两种方式从 MIB 中删除历史记录条目:
将添加给定测试的更多历史记录条目,并且历史记录条目的数量超过
pingCtlMaxRows。将删除最旧的历史记录条目,以便为新历史记录条目腾出空间。可以通过设置为
pingCtlRowStatus来destroy删除整个测试。
停止 ping 测试
要停止活动测试,请设置为 pingCtlAdminStatus disabled。要停止测试并从 MIB 中移除其 pingCtlEntry、 和任何pingHistoryEntry对象,请设置为 pingCtlRowStatus destroy。 pingResultsEntry
解释 ping 变量
本节阐明了 Ping MIB 中未显式指定的以下变量的范围:
pingCtlDataSize— 此变量的值表示传出探测数据包有效负载的总大小(以字节为单位)。此有效负载包括用于测定时间的时间戳(8 个字节)。这与(最大值 65,507)和pingCtlDataSize标准 ping 应用程序的定义一致。如果 的
pingCtlDataSize值介于 0 和 8(含)之间,则忽略它,有效负载为 8 字节(时间戳)。Ping MIB 假定所有探测均已计时,因此有效负载必须始终包含时间戳。例如,如果您希望向数据包额外添加 4 个字节的有效负载,则必须设置为
pingCtlDataSize12。pingCtlDataFill— 数据包数据段的前 8 个字节用于时间戳。之后,重复使用该pingCtlDataFill模式。默认模式(未指定时pingCtlDataFill)为 (00, 01, 02, 03 ...FF、00、01、02、03 ...FF,......pingCtlMaxRows- 最大值为 255。pingMaxConcurrentRequests- 最大值为 500。pingCtlTrapProbeFailureFilter和pingCtlTrapTestFailureFilter—Ping MIB 的值为 0pingCtlTrapProbeFailureFilter,或者pingCtlTrapTestFailureFilter没有很好地定义。如果为 0,pingProbeFailed则pingCtlTrapProbeFailureFilter在任何情况下都不会为测试生成陷阱。如果为 0,pingTestFailed则pingCtlTrapTestFailureFilter在任何情况下都不会为测试生成陷阱。
将 traceroute MIB 用于运行 Junos OS 的远程监控设备
traceroute 测试近似数据包从本地主机到远程主机的路径。
RFC 2925 是对 Traceroute MIB 的权威性详细描述,并提供了 Traceroute MIB 的 ASN.1 MIB 定义。
启动 Traceroute 测试
开始 traceroute 测试之前,请配置 Traceroute MIB 视图。这允许 上的 SNMP Set 请求 tracerouteMIB。要开始测试,请在 中 traceRouteCtlTable 创建一个行,并设置为 traceRouteCtlAdminStatus enabled。在设置为 traceRouteCtlAdminStatus 之前 enabled,必须至少指定以下内容:
traceRouteCtlOwnerIndexSnmpAdminStringtraceRouteCtlTestNameSnmpAdminStringtraceRouteCtlTargetAddressInetAddresstraceRouteCtlRowStatusRowStatus
对于所有其他值,除非另有指定,否则选择默认值。traceRouteCtlOwnerIndex并traceRouteCtlTestName用作索引,因此它们的值被指定为 OID 的一部分。要创建行,请设置为traceRouteCtlRowStatuscreateAndWait或createAndGo在尚不存在的行上。active值 for traceRouteCtlRowStatus 表示已指定所有必要信息,可以开始测试;traceRouteCtlAdminStatus可以设置为 enabled。如果未指定行中的必要信息或不一致,则设置为 traceRouteCtlRowStatus 的 active SNMP Set 请求将失败。有关如何配置视图的信息,请参阅设置 SNMP 视图。
有两种方法可以启动 traceroute 测试:
使用多组 PDU
您可以使用多个 Set 请求PDU(多个PDU,每个PDU都有一个或多个varbind),并按此顺序设置以下变量以启动测试:
traceRouteCtlRowStatus创建和等待所有适当的测试变量
traceRouteCtlRowStatus到activeJunos OS 现在会验证是否已指定运行测试所需的所有信息。
traceRouteCtlAdminStatus到enabled
使用单组 PDU
您可以使用单个 Set 请求 PDU(一个 PDU,具有多个 varbind)来设置以下变量来启动测试:
traceRouteCtlRowStatus到createAndGo所有适当的测试变量
traceRouteCtlAdminStatus启用
监控正在运行的 traceroute 测试
当 traceRouteCtlAdminStatus 成功设置为 enabled 时,在将 SNMP Set 请求的确认发送回客户端之前,将执行以下操作:
如果 traceRouteResultsEntry 尚不存在,则会创建它。
traceRouteResultsOperStatus 转换为 enabled。
有关更多信息,请参阅以下部分:
traceRouteResultsTable
在测试运行时,此 traceRouteResultsTable 会跟踪测试的状态。traceRouteResultsOperStatus 的值在测试运行时启用,在测试停止时禁用。
traceRouteCtlAdminStatus 的值将保持启用状态,直到将其设置为禁用。因此,若要获取测试的状态,必须检查 traceRouteResultsOperStatus。
traceRouteCtlFrequency 变量可用于为一个 traceRouteCtlEntry 计划多个测试。在测试正常结束(您没有停止测试)并且 traceRouteCtlFrequency 秒数过去后,测试将再次启动,就像您将 traceRouteCtlAdminStatus 设置为 enabled 一样。如果在重复测试之间的任何时间进行干预(将 traceRouteCtlAdminStatus 设置为 disabled 或将 traceRouteCtlRowStatus 设置为 notInService),则重复功能将被禁用,直到另一个测试开始并正常结束。traceRouteCtlFrequency 的值为 0 表示此重复要素未处于活动状态。
当 traceRouteCtlTargetAddressType 的值为 dns 时,traceRouteResultsIpTgtAddr 和 traceRouteResultsIpTgtAddrType 将设置为已解析目标地址的值。当测试成功启动并且 traceRouteResultsOperStatus 转换为 enabled 时:
traceRouteResultsIpTgtAddr 设置为空字符串。
traceRouteResultsIpTgtAddrType 设置为未知。
在可以将 traceRouteCtlTargetAddress 解析为数字地址之前,不会设置 traceRouteResultsIpTgtAddrType 和 traceRouteResultsIpTgtAddrType。若要检索这些值,请在成功将 traceRouteCtlAdminStatus 设置为 enabled 后轮询 traceRouteResultsIpTgtAddrType 以获取未知以外的任何值。
测试开始时,traceRouteResultsCurHopCount 初始化为 traceRouteCtlInitialTtl,traceRouteResultsCurProbeCount 初始化为 1。每次确定探测结果时,traceRouteResultsCurProbeCount 都会增加 1。测试运行时,traceRouteResultsCurProbeCount 的值反映了尚未确定结果的当前未完成探针。
为每个生存时间 (TTL) 值发送 traceRouteCtlProbesPerHop 探针数。确定当前跃点的最后一次探测结果后,如果当前跃点不是目标跃点,则 traceRouteResultsCurHopCount 增加 1,traceRouteResultsCurProbeCount 重置为 1。
在测试开始时,如果这是第一次为此 traceRouteCtlEntry 运行此测试,则 traceRouteResultsTestAttempts 和 traceRouteResultsTestSuccesses 将初始化为 0。
在每次测试执行结束时,traceRouteResultsOperStatus 将转换为 disabled,并且 traceRouteResultsTestAttempts 增加 1。如果测试成功确定到目标的完整路径,则 traceRouteResultsTestSuccesses 增加 1,并将 traceRouteResultsLastGoodPath 设置为当前时间。
traceRouteProbeResultsTable
traceRouteProbeHistoryTable 中的每个条目都由五个变量编制索引:
前两个变量 traceRouteCtlOwnerIndex 和 traceRouteCtlTestName 与用于 traceRouteCtlTable 和标识测试的变量相同。
第三个变量 traceRouteProbeHistoryIndex 是一个计数器,从 1 开始并换行到 FFFFFFFF。最大条目数受 traceRouteCtlMaxRows 限制。
第四个变量 traceRouteProbeHistoryHopIndex 指示此探测所针对的跃点(实际生存时间或 TTL 值)。因此,测试开始时创建的第一个 traceRouteCtlProbesPerHop 条目数的值为 traceRouteProbeHistoryHopIndex。
第五个变量 traceRouteProbeHistoryProbeIndex 是当前跃点的探测。其范围从 1 到 traceRouteCtlProbesPerHop。
在测试运行时,一旦确定了探测结果,就会发送下一个探测。在探测标记为状态 requestTimedOut 并发送下一个探测之前,最多经过 traceRouteCtlTimeOut 秒数。每个 traceroute 测试永远不会超过一个未完成的探针。探测超时后返回的任何探测结果都将被忽略。
每个探针可以:
导致主机响应,确认探测
超时,主机确认探查没有响应
发送失败
每个探测器状态都记录在 traceRouteProbeHistoryTable 中,并相应地设置了 traceRouteProbeHistoryStatus。
导致主机响应的探测将记录以下数据:
traceRouteProbeHistoryResponse — 往返时间 (RTT)
traceRouteProbeHistoryHAddrType - HAddr 的类型(下一个参数)
traceRouteProbeHistoryHAddr — 跃点的地址
所有探针(无论是否收到对探针的响应)都会记录以下内容:
traceRouteProbeHistoryStatus - 发生的情况和原因
traceRouteProbeHistoryLastRC — ICMP 数据包的返回代码 (RC) 值
traceRouteProbeHistoryTime — 确定探测结果的时间戳
当无法发送探针时,traceRouteProbeHistoryResponse 设置为 0。当探针超时时,traceRouteProbeHistoryResponse 设置为发现探针超时的时间与发送探针的时间之间的差值。
traceRouteHopsTable
traceRouteHopsTable 中的条目由三个变量编制索引:
前两个 traceRouteCtlOwnerIndex 和 traceRouteCtlTestName 与用于 traceRouteCtlTable 和标识测试的相同。
第三个变量 traceRouteHopsHopIndex 表示从 1 开始的当前跃点(不是 traceRouteCtlInitialTtl)。
测试开始时,traceRouteHopsTable 中具有给定 traceRouteCtlOwnerIndex 和 traceRouteCtlTestName 的所有条目都将被删除。仅当 traceRouteCtlCreateHopsEntries 设置为 true 时,才会创建此表中的条目。
每次确定给定 TTL 的第一个探测结果时,都会创建一个新的 traceRouteHopsEntry。无论第一个探测是否到达主机,都会创建新条目。对于此新条目,traceRouteHopsHopIndex 的值增加了 1。
如果对具有给定 TTL 的探针没有响应,则任何 traceRouteHopsIpTgtEntry 都可能缺少 traceRouteHopsIpTgtAddress 的值。
每次探测到达主机时,探测结果中都显示该主机的 IP 地址。如果未设置当前 traceRouteHopsEntry 的 traceRouteHopsIpTgtAddress 值,则将 traceRouteHopsIpTgtAddress 的值设置为此 IP 地址。如果当前 traceRouteHopsEntry 的 traceRouteHopsIpTgtAddress 值与 IP 地址相同,则该值不会更改。如果当前 traceRouteHopsEntry 的 traceRouteHopsIpTgtAddress 值与此 IP 地址不同,表示路径发生变化,则会使用以下命令创建一个新的 traceRouteHopsEntry:
traceRouteHopsHopIndex 变量增加 1
traceRouteHopsIpTgtAddress 设置为 IP 地址
注意:每次使用新的 TTL 值或路径发生变化时,都会将测试的新条目添加到 traceRouteHopsTable。因此,测试的条目数量可能会超过所使用的不同 TTL 值的数量。
确定探测结果后,当前 traceRouteHopsEntry 的 traceRouteHopsSentProves 值增加 1。确定探测结果且探针到达主机时:
当前 traceRouteHopsEntry 的值 traceRouteHopsProbeResponses 增加 1。
更新以下变量:
traceRouteResultsMinRtt - 最短往返时间
traceRouteResultsMaxRtt—最大往返时间
traceRouteResultsAverageRtt - 平均往返时间
traceRouteResultsRttSumOfSquares - 往返时间的平方和
traceRouteResultsLastGoodProbe—最后一个响应的时间戳
注意:只有到达主机的探针才会影响往返时间值。
生成陷阱
要生成任何陷阱,必须设置适当的 traceRouteCtlTrapGeneration 位。您还必须配置一个陷阱组来接收远程操作。陷阱在以下条件下生成:
当前探针的 traceRouteHopsIpTgtAddress 与具有相同 TTL 值 (traceRoutePathChange) 的最后一个探针不同。
无法确定目标的路径 (traceRouteTestFailed)。
已确定目标的路径 (traceRouteTestCompleted)。
有关如何配置陷阱组以接收远程操作的信息,请参阅 配置 SNMP 陷阱组 和 SNMP 远程操作概述。
监控 Traceroute 测试完成情况
测试完成后, traceRouteResultsOperStatus 从 enabled disabled转换为 。这种转换发生在以下情况下:
测试成功结束。探测结果指示已到达目标。在这种情况下,当前跃点是最后一个跃点。将发送此跃点的其余探针。确定当前跃点的最后一个探测结果后,测试结束。
traceRouteCtlMaxTtl已超过阈值。永远无法到达目的地。在 TTL 值traceRouteCtlMaxttl等于已发送的探针数量后,测试结束。traceRouteCtlMaxFailures已超过阈值。以 statusrequestTimedOut超过traceRouteCtlMaxFailures结尾的连续探测数超过 。测试结束。您可以通过设置为
traceRouteCtlRowStatusdestroy来设置traceRouteCtlAdminStatus或disabled删除该行。您配置了错误的 traceroute 测试。您指定的
traceRouteCtlTable值或变量不正确,不允许发送单个探针。由于数据的性质,在测试开始之前无法确定此误差;也就是说,直到traceRouteResultsOperStatus在转换为 之后。enabled发生这种情况时,将一个条目添加到traceRouteProbeHistoryTabletraceRouteProbeHistoryStatus设置为相应的错误代码。
如果设置正确,traceRouteTestFailed将traceRouteCtlTrapGeneration生成 或traceRouteTestCompleted陷阱。
收集 Traceroute 测试结果
您可以轮询 traceRouteResultsOperStatus 以了解测试何时完成,也可以请求在测试完成时发送陷阱。有关 traceResultsOperStatus 的详细信息,请参阅 traceRouteResultsTable。有关 Traceroute MIB 陷阱的更多信息,请参阅 监控正在运行的 Traceroute 测试中的生成陷阱部分。
统计信息按跃点计算,然后存储在 traceRouteHopsTable 中。它们为每个跃点包括以下内容:
traceRouteHopsIpTgtAddressType — 此跃点上的主机地址类型
traceRouteHopsIpTgtAddress — 此跃点上的主机地址
traceRouteHopsMinRtt—最短往返时间
traceRouteHopsMaxRtt—最大往返时间
traceRouteHopsAverageRtt—平均往返时间
traceRouteHopsRttSumOfSquares - 往返时间的平方和
traceRouteHopsSentProbes — 尝试发送探针的次数
traceRouteHopsProbeResponses - 收到的响应数
traceRouteHopsLastGoodProbe—上次响应的时间戳
您还可以查阅 traceRouteProbeHistoryTable 以获取有关每个探针的更多详细信息。用于 traceRouteProbeHistoryTable 的索引从 1 开始,转到 0xFFFFFFFF,然后再次换行到 1。
例如,假设以下情况:
traceRouteCtlMaxRows 为 10。
traceRouteCtlProbesPerHop 为 5。
到目标有八个跃点(目标是第八个)。
发送的每个探测都会导致来自主机的响应(发送的探测数不受 traceRouteCtlMaxFailures 的限制)。
在此测试中,发送了 40 个探头。在测试结束时,traceRouteProbeHistoryTable 将具有如 表 4 中所示的探针历史记录。
历史索引 |
历史跳指数 |
历史探针索引 |
|---|---|---|
31 |
7 |
1 |
32 |
7 |
2 |
33 |
7 |
3 |
34 |
7 |
4 |
35 |
7 |
5 |
36 |
8 |
1 |
37 |
8 |
2 |
38 |
8 |
3 |
39 |
8 |
4 |
40 |
8 |
5 |
停止 Traceroute 测试
要停止活动测试,请设置为 traceRouteCtlAdminStatus disabled。要停止测试并从 MIB 中移除其 traceRouteCtlEntry、 、 traceRouteResultsEntrytraceRouteProbeHistoryEntry和traceRouteProbeHistoryEntry对象,请设置为 traceRouteCtlRowStatus destroy。
解释 traceroute 变量
本主题包含有关 Traceroute MIB 中未显式指定的以下变量范围的信息:
traceRouteCtlMaxRows- 的最大traceRouteCtlMaxRows值为 2550。这表示最大 TTL (255) 乘以 (10) 的最大traceRouteCtlProbesPerHop值。因此,在traceRouteProbeHistoryTable一个traceRouteCtlEntry的最大值下容纳一个完整的测试。通常,不使用最大值,并且traceRouteProbeHistoryTable能够容纳相同的traceRouteCtlEntry许多测试的完整历史记录。traceRouteMaxConcurrentRequests- 最大值为 50。如果测试正在运行,则它有一个未完成的探针。traceRouteMaxConcurrentRequests表示具有 的enabled的 Traceroute 测试traceRouteResultsOperStatus的最大数量。任何尝试在运行测试的情况下traceRouteMaxConcurrentRequests启动测试都将导致创建一个设置为的探针traceRouteProbeHistoryStatusmaxConcurrentLimitReached,并且该测试将立即结束。traceRouteCtlTable—此表中允许的最大条目数为 100。任何创建第 101 个条目的尝试都将产生一条BAD_VALUE消息,一条指向 SNMPv1 的消息,以及一条RESOURCE_UNAVAILABLE指向 SNMPv2 的消息。
变更历史表
是否支持某项功能取决于您使用的平台和版本。使用 功能资源管理器 确定您的平台是否支持某个功能。