[comp.dcom.lans] Summary: TCP retransmission questions

phil@shl.com (Phil Trubey) (03/16/91)

Thanks to all those that replied to me questions about TCP/IP retransmissions
relating to the interop problem we've been having regarding getting a
PC telneting robustly to an HP 3000.

I've put together a summary of what I've received for your general edification.

As an update: There exists patches to the HP 3000 software to do fast
retransmission and we are tracking down these patches.  The Win/TCP
software for PCs used to hold onto
out of sequence packets in an earlier release, but they dropped
this feature in the latest release due to memory constraints!

Even if I'm (currently) no further along than before, at least I know
more!  Thanks a lot to all those that responded!

---

1. Is it normal for PCs to drop packets...

The consensus here seems to be: yes - depending on the ethernet board
you're using.  I was using a 3Com 3c523 (microchannel).  At some point
I'm going to try using a Western Digital board and see if it changes
the drop rate.

---
From: ckollars@east.sun.com (Chuck Kollars - Sun Technical Marketing - Boston)

No, not in my experience.  Unless you have a lousy Ethernet card or
a faulty transceiver connection, your packet loss rate should be
at least a couple orders of magnitude lower than this.
---
From: romkey@asylum.sf.ca.us (John Romkey)

It depends on your ethernet interface. If you're using an old card
like a 3COM 3C501, expect lots of lost packets. Packet loss will vary
with the type of card and load on the net. It may also be a function
of the driver.
---
From: mcc@wlv.imsd.contel.com (Merton Campbell Crockett)

Late '89 or early '90, my firm was working on a response to an RFP and had
a number of PC clones of various manufactures and operating systems in for
evaluation.  Out of curiousity, I ran a small ping test with the following
command:

        ping x.y.z 64 100

from a VAX 11/750 running 4.3BSD with a 3Com, shared memory, ethernet inter-
face and a VAX8250 running VMS 5.1 and WIN/TCP using a shared driver with
the DEBNI ethernet interface.

As a class, the PC clones were marvelously erratic in their response times.
As I recall, the response times ranged from somewhere around 16ms to 78ms
with average response times in the high 20's and low 30's.  There were, gen-
erally, 2 to 8 dropped packets.

RISC machines that were being evaluated at the same time, dropped fewer pack-
ets--if they dropped any--but had greater variance in their response times.
I seem to recall some response times in excess of 100ms.  The average response
times were, however, in the mid to high 20's range.
---
From: dotytr@nscultrix1.network.com (Ted R. Doty)

It really depends on how fast the packets arrive.  Many (most?) of the
Ethernet boards for PCs don't handle back-to-back packets very well
(if two packets arrive very close together, the board can't keep up
with them and drops the second).  I suspect that newer boards are
better, but since workstations are getting faster too, this problem
might be around until PCs can handle full media speed (the number I hear
is 14,800-ish packets per second).  So if you get a bunch of Telnet
packets back-to-back, you might expect to see dropped packets.
---

2. Is it normal for TCP/IP implementations to retransmit only the lost 
packet...

I read RFC1122 after I asked this - it recommends that when you retransmit,
you send a maximum sized paket containing whatever is in the retransmit
queue - not just retransmit the exact packet that was dropped.

---
From: ckollars@east.sun.com (Chuck Kollars - Sun Technical Marketing - Boston)

The retransmission behavior you see is "typical".  No reason to waste
bandwidth if there's a chance the receiver already has the rest of the
packets.  What's _not_ typical is the PC's behavior of not saving the
"extra" packets.

What the protocol spec actually says it that it's "suggested" that
senders retransmit only the next packet, "suggested" that receivers
save "extra" packets, but "required" that the two interoperate
(albeit at what performance is not specified) even if the other end
doesn't follow the suggestion.
---
From: raj@hpindwa.cup.hp.com (Rick Jones)

Eghads NO! !-) If you were to do that, it would be asking for your
network to go into congestive collapse ;-( When that timer pops (the
first one at least...) the ONLY thing that you can surmise is that the
first packet was lost - you really do not know if any of the other
packets were lost. When (if) you upgrade the MPE/V systems to an XL,
you will find that the XL code is much better in its handling of those
situations (it started-out like the V code, but I changed it ;-) It
does NOT do batch-rtx, but will clear-out the rtxq much faster than
the V code will.
---
From: romkey@asylum.sf.ca.us (John Romkey)

It depends on how you're trying to treat the intervening network. If
you're trying to avoid congestion, you penalize the one for the good
of the many. If you're not, you don't.
---
From: mcc@wlv.imsd.contel.com (Merton Campbell Crockett)

Strategies are left to the implementor and are not part of the protocol spec-
ification.  How often and when should the receiving station send an acknowl-
edgement when it has detected the loss of a packet?  How frequently should
the transmitting station send a packet to compensate for potential packet
loss?  How does the transmitting station determine that the receiving station
does not buffer out of sequence packets when there is no requirement to send
an acknowledgement to an out of sequence packet?
---
From: dotytr@nscultrix1.network.com (Ted R. Doty)

Can you use your analyzer to see what size is negotiated for a TCP
window?  I seem to recall a window of 512 bytes when we used Excelan
boards (TCP on the board).  Check to see if one of the machines is
violating the window size.  I don't think that the sender should have to
retransmit *all* unacknowledged segments, but when it gets the act for
the (single) missing one, it *should* send the others.  (this is so you
don't waste lots of bandwidth retransmitting segments that the receiver
might have received and buffered, but couldn't ack because the first
segment was dropped)
---

3. Is it normal for TCP implementations to discard all out of sequence
packets?

No, but if marketing thinks it is more important to conserve memory on
an antiquated architecture (DOS), they'll tell the programmer to slash
'features' :-(.

---
From: raj@hpindwa.cup.hp.com (Rick Jones)

Only on little systems like PC's where there is not much memory for
the TCP code to hold onto. I think that newer PC code might be better
though.
---
From: romkey@asylum.sf.ca.us (John Romkey)

When the ratio of the amount you get yelled at is proportionate to how
much space your code takes up, many things are possible.
[I think John hit the nail on the head with this one - phil]
---
From: mcc@wlv.imsd.contel.com (Merton Campbell Crockett)

The specification states that you need the ability to receive out of sequence
packets and re-assemble the data in the proper order once the missing data
is received.  Reality may have intruded in the implementation that you're
using--not enough memory space to store out of sequence packets.
---
From: dotytr@nscultrix1.network.com (Ted R. Doty)

No.  If the PC were more robust (no flame here, just an observation), it
would buffer all out of sequence segments.  for example:  Suppose sender
S sends ten segments (1-10).  Segment #1 is lost; segments 2-10 are
received by receiver R.  R will not be able to ack receipt, since the
window starts at #1, and #1 was lost.  S will time out and resend 1.
When R receives #1, it will ack #10.  I'm not clear on whether S should
retransmit 1-10 or just 1.  My suspicion is that it should *not*, since
dropped packets are frequently a sign of router congestion, and
retransmitting the entire window would exacerbate this.  Check RFC 1122
and 813, 816, and 817.


-----

That's it.  Thanks again to all those that responded.


-- 
Phil Trubey                     |  Internet: phil@shl.com      
SHL Systemhouse Inc.            |  UUCP:     ...!uunet!shl!phil
50 O'Connor St., Suite 501      |  Phone:    613-236-6604 x667
Ottawa, Ontario, Canada         |  Fax:      613-236-2043