Ethereal-dev: Re: [Ethereal-dev] TCP 'problem' detection?

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: "Pia Sahlberg" <piabar@xxxxxxxxxxx>
Date: Wed, 11 Sep 2002 23:27:56 +0000
One thing I was looking for, but did not find: some way where Ethereal >can draw my attention to evidence of "problems" in TCP sessions, such as:
 - re-transmissions (maybe excessive re-transmissions)
 - slow responses
 - TCP sessions that don't complete a full start-up handshake

re-transmissions:
There are two ways to detect them
1, in 0.9.6 or later, enable Edit/Preferences/Protocols/TCP/Analyze TCP sequence numbers this will flag (most)all suspected retransmissions by keeping track of ACK and SEQ numbers for the conversations. Suspected retransmisisons will have something like [TCP Retransmission] prepended to the Info Column. I think there are a few suspected bugs remaining in the TCP SEQ/ACK analysis so beware.
It also provides displayfilters you can use so search for those packets.
2, Much better: select a packet for the conversation you are interested in (for the direction tou are interested in) by clicking it in the middle pane, then on the menu select Tools/TCP Stream Analysis/Time Sequence Graph This will give you a graphical representation on how the sequence numbers change during the selected direction of the selected conversation. With this tool it is very easy to spot retransmissions and it is a mature and bugfree feature.

Slow responses:
1, I have plans to add RFC2988 retransmission timeout calculations sometime in the unknown future which would allow checking for slow responses. I.e. ACKs that are delatyed until after the calculated RTO. This may or may not be implemented within the next few months. No guarantees. 2, Using the excellent Tools/TCP Stream Analysis/... it is possible to spot sideeffects of slow responses. Try that tool for the time being.

Incomplete handshakes:
Not possible at this point. Could in theory be implemented. Maybe.
It may be difficult to do it since ethereal cant go back and redissect
packets.

==
Maybe we should have a feature to be able to tell the stuff in file.c that we need to go back and redissect an earlier packet.
This would be useful for the reassembly as well since then we could
dissect/display only (for say IP reassembly) the initial fragment instead of as now for all fragments (since we dont know which order the fragments arrive) That could allow us to only call the subdissectors from packet-ip.c only for fragment_offset==0, and if we at some later stage have completed reassembly we can tell ethereal, go back and redissect frame X, perhaps all other fragments as well so that COL_INFO is updated.


This would be a useful feature.


_________________________________________________________________
Chat with friends online, try MSN Messenger: http://messenger.msn.com