nexmon – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | BEGIN { |
2 | # we need the number of bytes in a packet to do the output |
||
3 | # in packet numbers rather than byte numbers. |
||
4 | if (packetsize <= 0) |
||
5 | packetsize = 512 |
||
6 | expectNext = 1 |
||
7 | lastwin = -1 |
||
8 | } |
||
9 | { |
||
10 | # convert tcp trace to send/ack form. |
||
11 | n = split ($1,t,":") |
||
12 | tim = t[1]*3600 + t[2]*60 + t[3] |
||
13 | if (NR <= 1) { |
||
14 | tzero = tim |
||
15 | ltim = tim |
||
16 | OFS = "\t" |
||
17 | } |
||
18 | if ($6 != "ack") { |
||
19 | # we have a data packet record: |
||
20 | # ignore guys with syn, fin or reset 'cause we |
||
21 | # can't handle their sequence numbers. Try to |
||
22 | # detect and add a flag character for 'anomalies': |
||
23 | # * -> re-sent packet |
||
24 | # - -> packet after hole (missing packet(s)) |
||
25 | # # -> odd size packet |
||
26 | if ($5 !~ /[SFR]/) { |
||
27 | i = index($6,":") |
||
28 | j = index($6,"(") |
||
29 | strtSeq = substr($6,1,i-1) |
||
30 | endSeq = substr($6,i+1,j-i-1) |
||
31 | len = endSeq - strtSeq |
||
32 | id = endSeq |
||
33 | if (! timeOf[id]) |
||
34 | timeOf[id] = tim |
||
35 | if (endSeq - expectNext < 0) |
||
36 | flag = "*" |
||
37 | else { |
||
38 | if (strtSeq - expectNext > 0) |
||
39 | flag = "-" |
||
40 | else if (len != packetsize) |
||
41 | flag = "#" |
||
42 | else |
||
43 | flag = " " |
||
44 | expectNext = endSeq |
||
45 | } |
||
46 | printf "%7.2f\t%7.2f\t%s send %s %d", tim-tzero, tim-ltim,\ |
||
47 | flag, $5, strtSeq |
||
48 | if (++timesSent[id] > 1) |
||
49 | printf " (%.2f) [%d]", tim - timeOf[id], timesSent[id] |
||
50 | if (len != packetsize) |
||
51 | printf " <%d>", len |
||
52 | } |
||
53 | } else { |
||
54 | id = $7 |
||
55 | |||
56 | printf "%7.2f\t%7.2f\t%s ack %s %d", tim-tzero, tim-ltim,\ |
||
57 | flag, $5, id |
||
58 | if ($9 != lastwin) { |
||
59 | printf " win %d", $9 |
||
60 | lastwin = $9 |
||
61 | } |
||
62 | printf " (%.2f)", tim - timeOf[id] |
||
63 | if (++timesAcked[id] > 1) |
||
64 | printf " [%d]", timesAcked[id] |
||
65 | } |
||
66 | printf "\n" |
||
67 | ltim = tim |
||
68 | } |