Subject: Re: <draft-ietf-disman-remops-mib-04.txt>

From: [email-masked]
Date: Fri, 11 Jun 1999 04:21:28 -0400

Alan,

I would like to post a new draft of the ping, traceroute and lookup MIBs very
shortly. I would be willing to add a "hops" table if we can quickly agree on its
content and behavior. I have some problems with what you posted:

> -- Traceroute Hop Results Table

>   traceRouteHopsTable OBJECT-TYPE
>      SYNTAX      SEQUENCE OF TraceRouteHopsEntry
>      MAX-ACCESS  not-accessible
>      STATUS      current
>      DESCRIPTION
>          "Defines the Remote Operations Traceroute Hop Table for
>           keeping track of the results from testing an individual
>           path hop."
>     ::= { traceRouteObjects 5 }

>   traceRouteHopsEntry OBJECT-TYPE
>      SYNTAX      TraceRouteHopsEntry
>      MAX-ACCESS  not-accessible
>      STATUS      current
>      DESCRIPTION
>          "Defines an entry in the traceRouteHopsTable."
>      INDEX {
>              traceRouteCtlOwnerIndex,
>              traceRouteCtlTestName
>              traceRouteHopsTestNumber
>              traceRouteHopsHopIndex
>            }
>      ::= { traceRouteHopsTable 1 }

>   TraceRouteHopsEntry ::=
>      SEQUENCE {
>        traceRouteHopsTestNumber       Unsigned32,
>        traceRouteHopsHopIndex         Unsigned32,
>        traceRouteHopsIpHostAddress    IpHostAddress,
>        traceRouteHopsMinRtt           Unsigned32,
>        traceRouteHopsMaxRtt           Unsigned32,
>        traceRouteHopsAverageRtt       Unsigned32,
>        traceRouteHopsRttSumOfSquares  Unsigned32,
>        traceRouteHopsProbesSent       Counter32,
>        traceRouteHopsProbesResponses  Counter32,
>        traceRouteHopsLastGoodProbe    DateAndTime
>      }

>   traceRouteHopsTestNumber OBJECT-TYPE
>      SYNTAX      Unsigned32
>      MAX-ACCESS  not-accessible
>      STATUS      current
>      DESCRIPTION
>          "Specifies the number of this traceroute test.

>           The next sequential number, starting with 1, is assigned to
>           the traceRouteHopsTestNumber automatically by the agent
>           each time the corresponding traceRouteCtlEntry is activated."
>      ::= { traceRouteHopsEntry 1 }

>   traceRouteHopsHopIndex OBJECT-TYPE
>      SYNTAX      Unsigned32 (1..255)
>      MAX-ACCESS  not-accessible
>      STATUS      current
>      DESCRIPTION
>          "Specifies the hop number to which this traceRouteHopsEntry
>           applies."
>      ::= { traceRouteHopsEntry 2 }

>   traceRouteHopsIpHostAddress OBJECT-TYPE
>      SYNTAX      IpHostAddress
>      MAX-ACCESS  read-only
>      STATUS      current
>      DESCRIPTION
>          "This objects reports the IP address associated with the hop."
>      ::= { traceRouteHopsEntry 3 }

>   traceRouteHopsMinRtt OBJECT-TYPE
>      SYNTAX      Unsigned32
>      MAX-ACCESS  read-only
>      STATUS      current
>      DESCRIPTION
>          "The minimum traceroute round-trip-time (RTT) received for this
>           hop.  A value of 0 for this object implies that no RTT has been
>           received."
>      ::= { traceRouteHopsEntry 4 }

>   traceRouteHopsMaxRtt OBJECT-TYPE
>      SYNTAX      Unsigned32
>      MAX-ACCESS  read-only
>      STATUS      current
>      DESCRIPTION
>          "The maximum traceroute round-trip-time (RTT) received for this
>           hop.  A value of 0 for this object implies that no RTT has been
>           received."
>      ::= { pingHopsEntry 5 }

>    traceRouteHopsAverageRtt OBJECT-TYPE
>      SYNTAX      Unsigned32
>      MAX-ACCESS  read-only
>      STATUS      current
>      DESCRIPTION
>          "The current average traceroute round-trip-time (RTT) for this hop."
>      ::= { traceRouteHopsEntry 6 }

>    traceRouteHopsRttSumOfSquares OBJECT-TYPE
>      SYNTAX      Unsigned32
>      MAX-ACCESS  read-only
>      STATUS      current
>      DESCRIPTION
>          "This object contains the sum of all traceroute responses received
>           for this hop.  Its purpose is to enable standard deviation
>           calculation."
>      ::= { traceRouteHopsEntry 7 }

>    traceRouteHopsSentProbes OBJECT-TYPE
>      SYNTAX      Counter32
>      MAX-ACCESS  read-only
>      STATUS      current
>      DESCRIPTION
>          "The value of this object reflects the number of probes sent
>           for this hop during this traceroute test."
>      ::= { traceRouteHopsEntry 8 }

>    traceRouteHopsProbeResponses OBJECT-TYPE
>      SYNTAX      Counter32
>      MAX-ACCESS  read-only
>      STATUS      current
>      DESCRIPTION
>          "Number of responses received for this hop during this
>           traceroute test."
>      ::= { traceRouteHopsEntry 9 }

>    traceRouteHopsLastGoodProbe OBJECT-TYPE
>      SYNTAX      DateAndTime
>      MAX-ACCESS  read-only
>      STATUS      current
>      DESCRIPTION
>          "Date and time was the last response was received for a probe
>           for this hop during thhis traceroute test."
>      ::= { pingHopsEntry 10 }

I don't like the idea of a traceRouteHopsTestNumber. If possible I would like to
keep the hops on a per test basis and not per test activation basis. The hard
part is what to do when the path changes:

1. Instead of going though routers A, B and C it now goes through A, B, D and C.

   Probably keep the hopIndex the same for A and B. Use the old hopIndex of C
for D and move C to the
   next index? Or just take the next unused index for C and add D back in at
C's+1?

   There are several amusing variants of this type of problem.

2. The path can't be determined! You get to A and B, but after B all you get
back are timeouts.

   Drop C from the table. The target itself should always be the last "hop" in
the table. Instead of
   dropping C we could create an object to indicate that the "hop" is currently
timing out.

Thoughts?

Ken