%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
BEGIN { # we need to know (usual) packet size to convert byte numbers # to packet numbers if (packetsize <= 0) packetsize = 512 } $5 !~ /[SR]/ { # print out per-packet data in the form: # <packet #> # <start sequence #> # <1st send time> # <last send time> # <1st ack time> # <last ack time> # <# sends> # <# acks> n = split ($1,t,":") tim = t[1]*3600 + t[2]*60 + t[3] if ($6 != "ack") { i = index($6,":") strtSeq = substr($6,1,i-1) id = 1.5 + (strtSeq - 1) / packetsize id -= id % 1 if (maxId < id) maxId = id if (firstSend[id] == 0) { firstSend[id] = tim seqNo[id] = strtSeq } lastSend[id] = tim timesSent[id]++ totalPackets++ } else { id = 1 + ($7 - 2) / packetsize id -= id % 1 timesAcked[id]++ if (firstAck[id] == 0) firstAck[id] = tim lastAck[id] = tim totalAcks++ } } END { print "# " maxId " chunks. " totalPackets " packets sent. " \ totalAcks " acks." # for packets that were implicitly acked, make the ack time # be the ack time of next explicitly acked packet. for (i = maxId-1; i > 0; --i) while (i > 0 && firstAck[i] == 0) { lastAck[i] = firstAck[i] = firstAck[i+1] --i } tzero = firstSend[1] for (i = 1; i <= maxId; i++) printf "%d\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t%d\n",\ i, seqNo[i], \ firstSend[i] - tzero, lastSend[i] - tzero,\ firstAck[i] - tzero, lastAck[i] - tzero,\ timesSent[i], timesAcked[i] }