配置 SNMP 远程操作
SNMP 远程操作概述
SNMP 远程操作是指路由器上可使用 SNMP 远程控制的任何进程。Junos OS 目前支持两种 SNMP 远程操作:Ping MIB 和 Traceroute MIB,在 RFC 2925 中定义。使用这些 MIB,网络管理系统 (NMS) 中的 SNMP 客户端可以:
在路由器上开始一系列操作
操作完成时接收通知
收集每次操作的结果
Junos OS 还为瞻博网络企业特定的扩展和jnxTraceRouteMIB
中的这些 MIB 提供扩展jnxPingMIB
功能。jnxPingMIB
有关和jnxTraceRouteMIB
的详细信息,请参阅 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 视图
要创建一 remote-community
个名为的社区,向 SNMP 客户端授予对 Ping MIB、MIB、 jnxPing
Traceroute MIB 和 jnxTraceRoute
MIB 的读写访问权限,请在层次结构级别使用以下语句 [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 远程操作配置陷阱通知,请在 categories
层次结构级别添加和 targets
语句 [edit snmp trap-group group-name]
:
[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
中的变量,请pingCtlOwnerIndex
test
pingCtlTestName
bob
使用以下对象标识符 (OID):pingCtlTable
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 错误码只能提供问题的通用说明。远程操作流程记录的错误说明通常可以提供有关问题的详细信息,并帮助您更快地解决问题。默认情况下未启用此日志记录。要启用日志记录,请将语句 flag general
包含在 [edit snmp traceoptions]
层次结构级别:
[edit] snmp { traceoptions { flag general; } }
如果远程操作进程收到无法容纳的 SNMP 请求,则错误会记录在文件中 /var/log/rmopd
。要监控此日志文件,请 monitor start rmopd
以命令行界面 (CLI) 的操作模式发出命令。
对运行 Junos OS 的远程监控设备使用 Ping MIB
ping 测试用于确定从本地主机发送的数据包是否到达指定主机并返回。如果可以到达指定主机,ping 测试会提供数据包的大致往返时间。Ping 测试结果存储在和pingProbeHistoryTable
中pingResultsTable
。
RFC 2925 是 Ping MIB 的权威性描述,提供了 Ping MIB 的 ASN.1 MIB 定义。
开始 Ping 测试
使用本主题启动 ICMP ping 测试。开始 ping 测试有两种方法:使用多个集协议数据单元 (PDU) 或使用单个集 PDU。
开始之前
开始 Ping 测试
要开始 ping 测试,请创建pingCtlTable
一行并设置为pingCtlAdminStatus
enabled
。在设置为pingCtlAdminStatus
enabled
之前必须指定的最小信息为:
pingCtlOwnerIndexSnmpAdminString
pingCtlTestNameSnmpAdminString
pingCtlTargetAddressInetAddress
pingCtlTargetAddressTypeInetAddressType
pingCtlRowStatusRowStatus
对于所有其他值,将选择默认值,除非另有指定。 pingCtlOwnerIndex
并 pingCtlTestName
用作索引,因此其值被指定为对象标识符 (OID) 的一部分。要创建一行,请设置为pingCtlRowStatus
createAndWait
不存在的行,或createAndGo
位于该行之上。值 active
for pingCtlRowStatus
表示已提供所有必要的信息,可以开始测试; pingCtlAdminStatus
可设置为 enabled
。如果行中未指定必要信息或不一致,则设置pingCtlRowStatus
为active
的 SNMP Set
请求将失败。
有关如何配置视图的信息,请参阅 设置 SNMP 视图。
阅读以下部分,了解如何对变量进行排序。
使用多组 PDU
您可以使用多个 Set
请求 PDU(多个 PDU,每个 PDU 有一个或多个 varbind),并在此顺序中设置以下变量以开始测试:
pingCtlRowStatus
自createAndWait
所有适当的测试变量
pingCtlRowStatus
自active
Junos OS 现在会验证是否已指定运行测试的所有必要信息。
pingCtlAdminStatus
自enabled
使用单组 PDU
您可以使用单个 Set
请求 PDU(一个 PDU,具有多个 varbind)设置以下变量以开始测试:
pingCtlRowStatus
自createAndGo
所有适当的测试变量
pingCtlAdminStatus
自enabled
监控正在运行的 Ping 测试
成功设置为enabled
后pingCtlAdminStatus
,在将 SNMP Set
请求的确认发送回客户端之前完成以下操作:
pingResultsEntry
如果它不存在,则创建它。pingResultsOperStatus
过渡到enabled
。
有关更多信息,请参阅以下部分:
pingResultsTable
在测试运行时, pingResultsEntry
跟踪测试的状态。的值 pingResultsOperStatus
是 enabled
测试正在运行时和 disabled
停止时。
pingCtlAdminStatus
值一直保留,enabled
直到将其设置为disabled
。因此,要了解考试的状态,必须进行检查 pingResultsOperStatus
。
该 pingCtlFrequency
变量可用于为一个 pingCtlEntry
计划多个测试。测试正常结束(您未停止测试)且pingCtlFrequency
经过秒数后,将再次开始测试,就像您设置为pingCtlAdminStatus
enabled
一样。如果在重复测试(设置为或pingCtlRowStatus
设置为pingCtlAdminStatus
disabled
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
pingProbeHistoryTable
配置被设置为requestTimedOut
。如有必要,将生成一个
pingProbeFailed
陷阱。尝试发送下一个探测器。
注:每次测试均不存在一个未完成的探针。
对于每个探测,您都可以收到以下其中一个结果:
目标主机会通过响应确认探测器。
探测超时;目标主机确认探测器时没有响应。
探测器无法发送。
每个探测结果都记录在 pingProbeHistoryTable
。有关的更多信息 pingProbeHistoryTable
,请参阅 pingProbeHistoryTable。
当目标主机收到确认当前探测的响应时:
pingResultsProbeResponses
增加 1。以下变量已更新:
pingResultsMinRtt
— 最短往返时间pingResultsMaxRtt
— 最长往返时间pingResultsAverageRtt
— 平均往返时间pingResultsRttSumOfSquares
— 往返时间的平方数之和pingResultsLastGoodProbe
—上一个响应的时间戳注:只有能得到目标主机响应的探测器才能计算往返时间 (RTT) 变量。
当收到对上一个探针的响应或最后一个探测器超时时,测试即可完成。
pingProbeHistoryTable
(pingProbeHistoryEntry
) 中的pingProbeHistoryTable
条目表示探测结果,并按三个变量建立索引:
前两个变量和
pingCtlTestName
, 是用于pingCtlTable
识别测试的相同变量pingCtlOwnerIndex
。第三个变量
pingProbeHistoryIndex
是一个计数器,用于唯一标识每个探测结果。
为给定测试创建的最大条目数 pingProbeHistoryTable
受制于 pingCtlMaxRows
。如果 pingCtlMaxRows
设置为 0,则不会为该测试创建任何 pingProbeHistoryTable
条目。
每次确定探测结果时,都会创建 a pingProbeHistoryEntry
并添加到pingProbeHistoryTable
。pingProbeHistoryIndex
其中,新pingProbeHistoryEntry
是 1 大于该测试的最后一pingProbeHistoryTable
个pingProbeHistoryEntry
条目。pingProbeHistoryIndex
如果这是表中的第一个条目,则设置为 1。同一测试可以多次运行,因此该指数持续增长。
如果 pingProbeHistoryIndex
最后 pingProbeHistoryEntry
添加的为0xFFFFFFFF,则下一个 pingProbeHistoryEntry
添加 pingProbeHistoryIndex
项已设置为 1。
对于每个探测结果,都会记录以下内容:
pingProbeHistoryResponse
—生存时间 (TTL)pingProbeHistoryStatus
—发生了什么及其原因pingProbeHistoryLastRC
—ICMP 数据包的返回代码 (RC) 值pingProbeHistoryTime
-确定探测结果时的时间戳
无法发送探测时, pingProbeHistoryResponse
设置为 0。探查超时时, pingProbeHistoryResponse
设置为发现探针超时与发送探针的时间之间的差值。
生成陷阱
要生成任何陷阱,必须设置适当的位 pingCtlTrapGeneration
。您还必须配置陷阱组才能接收远程操作。在以下情况下会生成陷阱:
每次
pingCtlTrapProbeFailureFilter
测试期间连续的探查失败时,都会生成一个pingProbeFailed
陷阱。测试完成时将生成一个
pingTestFailed
陷阱,并且至少有pingCtlTrapTestFailureFilter
数个探测失败。pingTestCompleted
当测试完成且pingCtlTrapTestFailureFilter
不到探测失败时,将生成陷阱。注:当探测结果除其他任何事情
responseReceived
时pingProbeHistoryStatus
,探查失败将被视为故障。
有关如何配置陷阱组以接收远程操作的信息,请参阅 配置 SNMP 陷阱组 和 示例:为远程操作设置陷阱通知。
收集 Ping 测试结果
您可以轮询 pingResultsOperStatus
以了解测试何时完成,或者在测试完成时请求发送陷阱。有关的更多信息 pingResultsOperStatus
,请参阅 pingResultsTable。有关 Ping MIB 陷阱的更多信息,请参阅 生成陷阱。
计算后存储的 pingResultsTable
统计信息包括:
pingResultsMinRtt
— 最短往返时间pingResultsMaxRtt
— 最长往返时间pingResultsAverageRtt
— 平均往返时间pingResultsProbeResponses
—收到的响应数pingResultsSentProbes
—发送探测器的尝试数pingResultsRttSumOfSquares
— 往返时间的平方数之和pingResultsLastGoodProbe
—上一个响应的时间戳
您也可以咨询 pingProbeHistoryTable
每个探测的更多详细信息。用于 pingProbeHistoryTable
的索引从 1 开始,进入0xFFFFFFFF,然后再次封装为 1。
例如,如果 pingCtlProbeCount
为 15, pingCtlMaxRows
为 5,则在完成此测试的第一次运行后, 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
。要停止测试并移除其 pingCtlEntry
、 和 MIB 中的任何pingHistoryEntry
对象,请设置为pingCtlRowStatus
destroy
。 pingResultsEntry
解释 Ping 变量
本节阐明了 Ping MIB 中未明确指定的以下变量的范围:
pingCtlDataSize
-此变量的值表示传出探测数据包的有效负载的总大小(以字节为单位)。此有效负载包括用于对探测计时的时间戳(8 字节)。这与(最大值为 65,507)和标准 ping 应用程序的定义pingCtlDataSize
一致。如果的值
pingCtlDataSize
在 0 和 8(含 8)之间,则将其忽略,并且有效负载为 8 字节(时间戳)。Ping MIB 假定所有探测都已定时,因此有效负载必须始终包含时间戳。例如,如果您希望向数据包额外添加 4 字节有效负载,则必须设置为
pingCtlDataSize
12。pingCtlDataFill
—数据包数据分段的前 8 个字节用于时间戳。之后,该pingCtlDataFill
模式用于重复。默认模式(未指定时pingCtlDataFill
)为 (00、01、02、03... FF、00、01、02、03 ... FF,...)。pingCtlMaxRows
- 最大值为 255。pingMaxConcurrentRequests
- 最大值为 500。pingCtlTrapProbeFailureFilter
和pingCtlTrapTestFailureFilter
-为pingCtlTrapProbeFailureFilter
Ping MIB 定义或pingCtlTrapTestFailureFilter
未明确定义 0 的值。如果pingCtlTrapProbeFailureFilter
为 0,pingProbeFailed
则在任何情况下都不会为测试生成陷阱。如果pingCtlTrapTestFailureFilter
为 0,pingTestFailed
则在任何情况下都不会为测试生成陷阱。
将 Traceroute MIB 用于运行 Junos OS 的远程监控设备
traceroute 测试将近似于数据包从本地主机到远程主机的路径。
RFC 2925 是 Traceroute MIB 的详细权威说明,提供了 Traceroute MIB 的 ASN.1 MIB 定义。
开始 Traceroute 测试
开始 traceroute 测试之前,请配置 Traceroute MIB 视图。这允许对 tracerouteMIB
SNMP Set
请求。要开始测试,请创建traceRouteCtlTable
一行并设置为traceRouteCtlAdminStatus
enabled
。在设置 traceRouteCtlAdminStatus
之前 enabled
,必须至少指定以下各项:
traceRouteCtlOwnerIndexSnmpAdminString
traceRouteCtlTestNameSnmpAdminString
traceRouteCtlTargetAddressInetAddress
traceRouteCtlRowStatusRowStatus
对于所有其他值,将选择默认值,除非另有指定。 traceRouteCtlOwnerIndex
并 traceRouteCtlTestName
用作索引,因此将其值指定为 OID 的一部分。要创建一行,请设置为traceRouteCtlRowStatus
createAndWait
不存在的行,或createAndGo
位于该行之上。值 active
for traceRouteCtlRowStatus
表示已指定所有必要的信息,可以开始测试; traceRouteCtlAdminStatus
可设置为 enabled
。如果行中未指定必要信息或不一致,则设置traceRouteCtlRowStatus
为active
的 SNMP Set
请求将失败。有关如何配置视图的信息,请参阅 设置 SNMP 视图。
启动 traceroute 测试有两种方法:
使用多组 PDU
您可以使用多个 Set
请求 PDU(多个 PDU,每个 PDU 有一个或多个 varbind),并在此顺序中设置以下变量以开始测试:
traceRouteCtlRowStatus
来创建和Wait所有适当的测试变量
traceRouteCtlRowStatus
自active
Junos OS 现在可以验证运行测试的所有必要信息是否已指定。
traceRouteCtlAdminStatus
自enabled
使用单组 PDU
您可以使用单个 Set
请求 PDU(一个 PDU,具有多个 varbind)设置以下变量以开始测试:
traceRouteCtlRowStatus
自createAndGo
所有适当的测试变量
traceRouteCtlAdminStatus
以启用
监控正在运行的 Traceroute 测试
成功将 traceRouteCtlAdminStatus 设置为启用后,在将 SNMP 集请求的确认发送回客户端之前,将完成以下操作:
traceRouteResultsEntry 如果不存在,将创建它。
traceRouteResultsOperStatus 过渡以启用。
有关更多信息,请参阅以下部分:
traceRouteResultsTable
测试运行时,此 traceRouteResultsTable 会跟踪测试的状态。traceRouteResultsOperStatus 的值在测试运行时已启用,停止时禁用。
traceRouteCtlAdminStatus 的值一直处于启用状态状态,直到您将其设置为禁用。因此,要了解测试的状态,必须检查 traceRouteResultsOperStatus。
traceRouteCtlFrequency 变量可用于为一个 traceRouteCtlEntry 安排多项测试。测试正常结束(您未停止测试)且 traceRouteCtlFrequency 秒数已过去后,将再次开始测试,就像将 traceRouteCtlAdminStatus 设置为启用一样。如果重复测试之间的任何时候进行干预(将 traceRouteCtlAdminStatus 设置为禁用,或者将 traceRouteCtlRowStatus 设置为 notInService),则重复功能将被禁用,直到另一个测试开始并正常结束。traceRouteCtlFrequency 的值为 0 表示此重复功能未处于活动状态。
traceRouteResultsIpTgtAddr 和 traceRouteResultsIpTgtAddrType 会设置为解析的目标地址的值,而 traceRouteCtlTargetAddressType 的值是 dns。当测试成功开始并追踪RouteResultsOperStatus 转换以启用:
traceRouteResultsIpTgtAddr 设置为空字符串。
traceRouteResultsIpTgtAddrType 设置为未知。
traceRouteResultsIpTgtAddr 和 traceRouteResultsIpTgtAddrType 不会设置,直到 traceRouteCtlTargetAddress 解析为数字地址。要检索这些值,请成功将 traceRouteCtlAdminStatus 设置为启用后,轮询 traceRouteResultsIpTgtAddrType 以获取任何未知值。
在测试开始时,traceRouteResultsCurHopCount 会初始化为 traceRouteCtlInitialTtl,而 traceRouteResultsCurProbeCount 初始化为 1。每次确定探测结果时,traceRouteResultsCurbeCount 增加 1。测试运行期间,traceRouteResultsCurbeCount 的值反映了尚未确定结果的当前未完成探测。
针对每次生存时间 (TTL) 值发送的 traceRouteCtlProbesPerHop 探测数。确定当前跃点的最后一个探测结果后,只要当前跃点不是目标跃点,追踪RouteResultsCurHopCount 将增加 1,而 traceRouteResultsCurbeCount 将重置为 1。
在测试开始时,如果这是首次为此 traceRouteCtlEntry 运行此测试,traceRouteResultsTestattemps 和 traceRouteResultsTestSuccesses 将初始化为 0。
每次测试执行结束时,traceRouteResultsOperStatus 都会过渡到禁用,而 traceRouteResultsTesttemps 将增加 1。如果测试成功确定目标的完整路径,traceRouteResultsTestSuccesse 将增加 1,并且 traceRouteResultsLastGoodPath 设置为当前时间。
traceRouteProbeResultsTable
traceRouteProbeHistoryTable 中的每个条目都由五个变量索引:
前两个变量(traceRouteCtlOwnerIndex 和 traceRouteCtlTestName)是用于 traceRouteCtlTable 和识别测试的变量。
第三个变量 traceRouteProbeHistoryIndex 是一个计数器,从 1 开始,封装在 FFFFFFFF。最大条目数受 traceRouteCtlMaxRows 限制。
第四个变量 traceRouteProbeHistoryHopIndex 表示此探测器用于哪个跃点(实际生存时间或 TTL 值)。因此,在测试开始时创建的第一个 traceRouteCtlProbesPerHop 条目数具有用于 traceRouteProbeHistoryHopIndex 的 traceRouteCtlInitialalTtl 值。
第五个变量,traceRouteProbeHistoryProbeIndex,是当前跃点的探测器。范围从 1 到 traceRouteCtlProbesPerHop。
测试运行时,一旦确定探测结果,就会发送下一个探测。在探测标有状态请求TimedOut 并发送下一个探测之前,最长的 traceRouteCtlTimeOut 秒数已过。每个追踪路由测试永远不会有一个以上出色的探针。探测超时后返回的任何探测结果将被忽略。
每个探针都可以:
结果主机响应确认探测器
主机确认探测无响应时超时
发送失败
每个探测状态都记录在 traceRouteProbeHistoryTable 中,并相应地设置 traceRouteProbeHistoryStatus。
导致主机响应的探测器会记录以下数据:
traceRouteProbeHistoryResponse — 往返时间 (RTT)
traceRouteProbeHAddrType — HAddr 的类型(下一个参数)
traceRouteProbeHstoryHAddr — 跃点地址
无论是否收到探测器的响应,所有探测器都会记录以下记录:
traceRouteProbeHistoryStatus — 发生的情况及原因
traceRouteProbeHistRC — ICMP 数据包的返回代码 (RC) 值
traceRouteProbeHistory Time — 确定探测结果时的时间戳
当无法发送探测时,traceRouteProbeHistoryResponse 将设置为 0。探查超时时,traceRouteProbeHistoryResponse 会设置为发现探测的时间与发送探测的时间之间的差值。
traceRouteHopsTable
traceRouteHopsTable 中的条目由三个变量建立索引:
前两个,traceRouteCtlOwnerIndex 和 traceRouteCtlTestName,是用于 traceRouteCtlTable 和识别测试的相同。
第三个变量 traceRouteHopsHopIndex 表示当前跃点,从 1 开始(而非 traceRouteCtlInitialTtl)。
测试开始时,traceRouteHopsTable 中的所有条目以及给定的 traceRouteCtlOwnerIndex 和 traceRouteCtlTestName 将被删除。只有当 traceRouteCtlCreateHopsEntries 设置为 true 时,才会创建此表中的条目。
每次确定给定 TTL 的第一个探测结果时,都会创建新的 traceRouteHopsEntry。无论第一个探测是否到达主机,将创建新条目。此新条目的 traceRouteHopsHopIndex 值将增加 1。
如果对给定 TTL 的探测没有响应,任何 traceRouteHopsEntry 都可能缺少 traceRouteHopsIpTgtAddress。
每次探测到达主机时,探查结果中都会显示该主机的 IP 地址。如果未设置当前 traceRouteHopsIpTgt 地址的值,则 traceRouteHopsIpTgtAddress 的值将设置为此 IP 地址。如果当前 traceRouteHopsIpTgt 地址的值与 IP 地址相同,则值不会更改。如果 traceRouteHOpsIpTgt 地址当前 traceRouteHopsEntry 的值不同于此 IP 地址,则表示路径发生变化,则使用以下项创建新的 traceRouteHopsEntry:
traceRouteHopsHopIndex 变量增加了 1
traceRouteHopsIpTgt 地址设置为 IP 地址
注:每次使用新的 TTL 值或路径更改时,都会向 traceRouteHopsTable 添加一个新测试条目。因此,测试的条目数可能会超过使用的不同 TTL 值的数量。
确定探测结果后,当前 traceRouteHopsEntry 的值将增加 1。确定探测结果并探测到达主机时:
当前 traceRouteHopsProbeResponses 的值将增加 1。
以下变量已更新:
traceRouteResultsMinRtt — 最短往返时间
traceRouteResultsMaxRtt — 最长往返时间
traceRouteResultsAverageRtt — 平均往返时间
traceRouteResultsRttSumOfquares — 往返时间的平方总和
traceRouteResultsLastGoodProbe — 上一个响应的时间戳
注:只有到达主机的探测才会影响往返时间值。
生成陷阱
对于要生成的任何陷阱,必须设置适当的追踪RouteCtlTrapGeneration 位。您还必须配置陷阱组才能接收远程操作。陷阱是在以下条件下生成的:
traceRouteHopsIpTgt 当前探测的地址与上一个 TTL 值相同(traceRoutePathChange)的探测不同。
无法确定目标的路径(追踪路由测试失败)。
已确定目标的路径(traceRouteTestCompleted)。
有关如何配置陷阱组以接收远程操作的信息,请参阅 配置 SNMP 陷阱组 和 SNMP 远程操作概述。
监控 Traceroute 测试完成
测试完成后, traceRouteResultsOperStatus
从 enabled
过渡到 disabled
。这种转换发生在以下情况下:
测试已成功结束。探测结果表示已到达目标。在这种情况下,当前跃点为最后一跃点。此跃点的其余探测器将发送。确定当前跃点的最后一个探测结果后,测试结束。
traceRouteCtlMaxTtl
阈值已超过。无法到达目标。在发送的 TTL 值等于traceRouteCtlMaxttl
探测数量后,测试结束。traceRouteCtlMaxFailures
阈值已超过。以状态requestTimedOut
结尾的连续探测数超过traceRouteCtlMaxFailures
。您结束测试。您设置
traceRouteCtlAdminStatus
或删除disabled
行设置为traceRouteCtlRowStatus
destroy
。您错误配置了 traceroute 测试。您指定的
traceRouteCtlTable
值或变量不正确,不允许发送单个探测。由于数据的性质,在测试开始之前无法确定该错误;也就是说,直到traceRouteResultsOperStatus
过渡到enabled
。发生这种情况时,将添加traceRouteProbeHistoryTable
一个条目并设置为traceRouteProbeHistoryStatus
相应的错误码。
如果 traceRouteCtlTrapGeneration
设置正确, traceRouteTestFailed
则生成或 traceRouteTestCompleted
陷阱。
收集 Traceroute 测试结果
您可以轮询 traceRouteResultsOperStatus 以了解测试何时完成,或者在测试完成时请求发送陷阱。有关 traceResultsOperStatus 的更多信息,请参阅 traceRouteResultsTable。有关 Traceroute MIB 陷阱的更多信息,请参阅 监控正在运行的追踪路由测试中的生成陷阱部分。
统计信息按每跳计算,然后存储在 traceRouteHopsTable 中。每个跃点都包括以下内容:
traceRouteHopsIpTgtAddressType — 此跃点的主机地址类型
traceRouteHopsIpTgt 地址 — 此跃点的主机地址
traceRouteHopsMinRtt — 最短往返时间
traceRouteHopsMaxRtt — 最长往返时间
traceRouteHopsAverageRtt — 平均往返时间
traceRouteHopsRttSumOfquares — 往返时间的平方总和
traceRouteHopsSentProbes — 发送探测器的尝试次数
traceRouteHopsProbeResponses — 收到的响应数
traceRouteHopsLastGoodProbe — 上次响应的时间戳
您还可以查询 traceRouteProbeHistoryTable,了解有关每个探测的详细信息。用于 traceRouteProbeHistoryTable 的索引从 1 开始,进入0xFFFFFFFF,然后再次封装为 1。
例如,假设以下内容:
traceRouteCtlMaxRows 为 10。
traceRouteCtlProbesPerHop 为 5。
目标有八个跃点(目标为第八个)。
发送的每个探测都会产生主机的响应(发送的探测数量不受 traceRouteCtlMaxFailures 限制)。
在此测试中,会发送 40 个探针。在测试结束时,traceRouteProbeHistoryTable 将具有类似中的 表 4探测器的历史。
历史记录Index |
历史HopIndex |
历史ProbeIndex |
---|---|---|
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 中移除其 traceRouteResultsEntry
traceRouteProbeHistoryEntry
traceRouteCtlEntry
、 、 和traceRouteProbeHistoryEntry
对象,请设置为。traceRouteCtlRowStatus
destroy
解读 Traceroute 变量
本主题包含有关 Traceroute MIB 中未明确指定的以下变量范围的信息:
traceRouteCtlMaxRows
- 最大值为traceRouteCtlMaxRows
2550。这表示最大 TTL (255) 乘以 (10) 的最大值traceRouteCtlProbesPerHop
。因此,以traceRouteProbeHistoryTable
一个的最大值容纳一个traceRouteCtlEntry
完整测试。通常不使用最大值,并且traceRouteProbeHistoryTable
能够适应同traceRouteCtlEntry
一测试的许多测试的完整历史记录。traceRouteMaxConcurrentRequests
-最大值为 50。如果测试正在运行,则有一个出色的探测器。traceRouteMaxConcurrentRequests
表示具有traceRouteResultsOperStatus
的最大 traceroute 测试数,值为enabled
。如果尝试通过运行测试来开始测试traceRouteMaxConcurrentRequests
,将导致创建一个设置为maxConcurrentLimitReached
的探测traceRouteProbeHistoryStatus
,该测试将立即结束。traceRouteCtlTable
—此表中允许的最大条目数为 100。任何创建第 101 个条目的尝试都将导致一条消息,一BAD_VALUE
个 SNMPv1 和一RESOURCE_UNAVAILABLE
个 SNMPv2 消息。