[OpenAFS-devel] Question about RX & congestion
Rainer Toebbicke
rtb@pclella.cern.ch
Thu, 13 Mar 2008 09:47:46 +0100
Still on speeding up RX:
What's a decent way to detect congestion, and what's the best way to
handle it?
The current RX way of three nacks in a row is hardly adequate - UDP
packets can and do get reordered!
Also, running at wire speed does not prevent the odd TCP packet sneak
in and cause a drop at the uplink (as seen from the receiver) - here
an optimistic retransmit (for example in the second half of the xmit
window) without reducing window sizes or waiting for acks helps a lot.
But in a chronic congestion scenario (e.g. two streams ending up on
the same receiver) this does not help: even the re-transmitted packet
has a reasonable chance of getting dropped and the protocol is running
at retransmit-timeout speed again. (it's actually worse:
retransmitting wildly, even if insured only once per packet, almost
doubles the traffic -worst case- and increases the chances for drops).
Here slowing down at the sender helps keeping the timeouts out of the
game.
In the above scenario the sender actually knows a lot upon ack - how
fast the receiver is digesting packets and what holes he's got. What
would you conclude if you received an ACK looking like
----++++++++++++++++----++++--------+++++----++++++++++++ ?
Common practice suggests keeping sender & receive at the same pace is
best, hence reducing the window would be the answer. But the price is
high as the pace can change and the sender would know only late
because of latency! And since memory is cheap, perhaps always filling
big windows with lots (200? 500?) of packets assuming efficient
queueing and dealing with drops is better, even under congestion?
(I loosely followed discussions on TCP window sizes for trans-atlantic
fibres in the late 90s... is this summarized somewhere)?
--
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Rainer Toebbicke
European Laboratory for Particle Physics(CERN) - Geneva, Switzerland
Phone: +41 22 767 8985 Fax: +41 22 767 7155