Re: Question about loss and retransmission reporting

"Balas, Edward G" <[email protected]> Fri, 7 Dec 2018 13:45:32 -0500
Newsgroups gmane.network.argus
Message-ID <[email protected]>

> On Dec 7, 2018, at 1:21 PM, [email protected] wrote:
>=20
> Hey Edward,
> Its always important to indicate which version your running, so we can =
deal with known bugs etc =E2=80=A6

Sorry about that=E2=80=A6 I hadn't gotten to point of thinking there was =
a bug =E2=80=A6
3.0.8.2 is what I running now

>=20
> Argus tracks loss in 3 basic conditions, connection oriented protocols =
such as TCP,  connection-less protocols that have sequence numbers, such =
as RTP, UDT, and IPSEC, and strict request / response protocols where =
you should see the same out as back.
>=20
> Argus has a complete TCP state machine so that it can identify =
requests for missing packets, retransmissions and out of order packets.  =
But argus is designed to recognize loss regardless of where it is along =
the path.  As a result, the algorithm is a little complex, mainly =
because TCP is reliable and regardless of the loss rate you should =
always see at least one copy of all the packets.  Because argus is a =
bi-directional flow monitor,  argus can do things like look for requests =
for retransmission as an indication of loss.  It can infer that =
observing multiple packets is an indication of loss (you don=E2=80=99t =
retransmit unless there was loss), and it can needs to do this in the =
event of stripping and asymmetric routing.

yeah we are defn interesting in the asymmetic situation, for now we are =
validating using  point of observation where traffic appears symmetric.

>=20
> Because loss can occur before and or after argus see=E2=80=99s the =
packet stream, argus will use retransmissions and retransmission =
requests from the far side as an indication of loss.  If the far side =
requests more than once, we assume that the packet was lost more than =
once, or that the retransmission request was lost.  This is a possible =
source for argus saying there is more loss than other tools.

Ah ok that is in part what I was curious about, so if one were to look =
at the individual packets in a flow and count the number of times any =
sequence number shows up more than once, they should presumably come up =
with the same value as argus loss calc?


> Now with that as a starting point, where is argus in relationship with =
the the other tools, and what methods are they using to determine loss =
???

Yeah this is a classic dilemma have having too many watches and not =
knowing which is correct.   What we have for a reference is ultimately =
what iperf3 is reporting, and we are starting to look at what the kernel =
can tell us as presumably the tcp implementation should have a pretty =
authoritiative view of its own behavior, but I havent dug into proc =
filesystem etc enough to know whats available.  Im not really sure yet =
what tsharks methodology is for determining retransmission, I have been =
presuming it is similar to what you described, Ill take a look at =
sequence numbers directly to see whats up and report back.

>=20
> Carter
>           	 =09
> Carter Bullard  =E2=80=A2  CTO
> 150 E 57th Street, Suite 12D
> New York, New York 10022-2795
> Phone +1.212.588.9133 =E2=80=A2 Mobile +1.917.497.9494
>=20
> =20
>=20
>> On Dec 7, 2018, at 12:28 PM, Balas, Edward G <[email protected]> wrote:
>>=20
>> Hey all,
>>=20
>> Ive run into an issue Im struggling to understand, and thus far =
googling has failed to right me.  I am trying to use Argus to track =
retransmissions / loss in flows and I am getting values that are =
inconsistent with other tools including the sending application.  As I =
recurse into the various rabbit holes contributing to this on our end, I =
was wondering if someone could guide me on the following:
>>=20
>> 1.  within ra etc there is the ability to report loss and retrans.  =
When I look at the documentation loss seems to imply it contains both =
retransmissions and dropped packets, if Im looking at a TCP flow, is it =
correct to assume there will be no drops and thus loss is synonymous =
with retransmission?
>>     =20
>> 2.  I am able to get ra and racluster to report loss values for my =
flows, however retrans is always 0, is there a special -M or other =
options or argus option I need to use to see retrans?  Im making the =
possibly bad assumption that because I can see loss values the tunings =
of argus are sufficient.
>>=20
>> 3.  The Loss numbers are always higher than what I am seeing with =
other applications, is there a document or place in the code I should go =
look at that describes how this is calculated?
>>=20
>> Motivating these questions is the following small test:
>> -------------------------------------------------------
>> I transfered a file to my test host while doing full snaplen packet =
capture, and then compared argus with tshark reports of loss and =
retransmission.=20
>>=20
>> accuracy-test2]#  argus -JA -r raw.pcap  -w raw.argus
>>=20
>> accuracy-test2]#  racluster -n -r raw.argus  -s =
stime,dur,pkts,retrans,loss,appbytes,cause -- port 51170
>>          StartTime        Dur  TotPkts Retrans       Loss TotAppByte  =
 Cause=20
>>    16:47:58.176366  15.206044    21513       0         24   20195392  =
 Start
>>=20
>>=20
>>=20
>>=20
>> >> Total packets between tshark and argus agree:
>>=20
>> accuracy-test2]#  tshark -r raw.pcap -nn -Y 'tcp.port=3D=3D51170 '  | =
wc -l=20
>> 21513
>>=20
>> >> Retransmissions / loss do not agree between tshark and argus:
>>=20
>> accuracy-test2]#  tshark -r raw.pcap -nn -Y 'tcp.port=3D=3D51170 and =
tcp.analysis.retransmission '  | wc -l=20
>> 17
>>=20
>> 17 vs 24
>> =20
>>=20
>> Was curious if folks had insights they could share in these regards?
>> =20
>> Thanks,
>>=20
>> Edward Balas
>> [email protected]
>=20