37.1.3.0.2 Overall Statistics

In addition, each loss recovery and session object keeps track of times and statistics. In particular, each object records its startTime, serviceTime, distance, as are relevant to that object; startTime is the time that this object was created, serviceTime is the time for this object to complete its task, and the distance is the one-way time to reach the remote peer.

For request objects, startTime is the time a packet loss is detected, serviceTime is the time to finally receive that packet, and distance is the distance to the original sender of the packet. For repair objects, startTime is the time that a request for retransmission is received, serviceTime is the time send a repair, and the distance is the distance to the original requester. For both types of objects, the serviceTime is normalized by the distance. For the session object, startTime is the time that the agent joins the multicast group. serviceTime and distance are not relevant.

Each object also maintains statistics particular to that type of object. Request objects track the number of duplicate requests and repairs received, the number of requests sent, and the number of times this object had to backoff before finally receiving the data. Repair objects track the number of duplicate requests and repairs, as well as whether or not this object for this agent sent the repair. Session objects simply record the number of session messages sent.

The values of the timers and the statistics for each object are written to the log file every time an object completes the error recovery function it was tasked to do. The format of this trace file is:

                \tup{prefix} \tup{id} \tup{times} \tup{stats}
{\itshape{}where}
\tup{prefix} is         \tup{time} n \tup{node id} m \tup{msg id} r \tup{round}
                \tup{msg id} is expressed as \tup{source id:sequence number}
\tup{id} is             type \tup{of object}
\tup{times} is          list of key-value pairs of startTime, serviceTime, distance
\tup{stats} is          list of key-value pairs of per object statistics
                {\tt dupRQST}, {\tt dupREPR}, {\tt #sent}, {\tt backoff}             {\itshape for request objects}
                {\tt dupRQST}, {\tt dupREPR}, {\tt #sent}                      {\itshape for repair objects}
                {\tt #sent}                                        {\itshape for session objects}
The following sample output illustrates the output file format (the lines have been folded to fit on the page):
 3.6274 n 0 m <1:1> r 1 type repair serviceTime 0.500222 \
        startTime 3.5853553333333332 distance 0.0105 #sent 1 dupREPR 0 dupRQST 0
 3.6417 n 1 m <1:1> r 2 type request serviceTime 2.66406 \
        startTime 3.5542666666666665 distance 0.0105 backoff 1 #sent 1 dupREPR 0 dupRQST 0
 3.6876 n 2 m <1:1> r 2 type request serviceTime 1.33406 \
        startTime 3.5685333333333333 distance 0.021 backoff 1 #sent 0 dupREPR 0 dupRQST 0
 3.7349 n 3 m <1:1> r 2 type request serviceTime 0.876812 \
        startTime 3.5828000000000002 distance 0.032 backoff 1 #sent 0 dupREPR 0 dupRQST 0
 3.7793 n 5 m <1:1> r 2 type request serviceTime 0.669063 \
        startTime 3.5970666666666671 distance 0.042 backoff 1 #sent 0 dupREPR 0 dupRQST 0
 3.7808 n 4 m <1:1> r 2 type request serviceTime 0.661192 \
        startTime 3.5970666666666671 distance 0.0425 backoff 1 #sent 0 dupREPR 0 dupRQST 0

Tom Henderson 2011-11-05