Re: Linux TCP's Robustness to Multipath Packet Reordering
From: Eric Dumazet <hidden>
Date: 2011-04-27 16:48:53
Le mercredi 27 avril 2011 à 18:22 +0200, Dominik Kaspar a écrit :
Hi Carsten,
Thanks for your feedback. I made some new tests with the same setup of
packet-based forwarding over two emulated paths (600 KB/s, 10 ms) +
(400 KB/s, 100 ms). In the first experiments, which showed a step-wise
adaptation to reordering, SACK, DSACK, and Timestamps were all
enabled. In the experiments, I individually disabled these three
mechanisms and saw the following:
- Disabling timestamps causes TCP to never adjust to reordering at all.
- Disabling SACK allows TCP to adapt very rapidly ("perfect" aggregation!).
- Disabling DSACK has no obvious impact (still a step-wise throughput).
Is there an explanation for why turning off SACK can be beneficial in
the presence of packet reordering? That sounds pretty
counter-intuitive to me... I thought SACK=1 always performs better
than SACK=0. The results are also illustrated in the following plot.
For each setting, there are three runs, which all exhibit a similar
behavior:
http://home.simula.no/~kaspar/static/mptcp-emu-wlan-hspa-02-sack.pngSACK is a win in a normal environnement, with few reorders, but some percents of losses ;) Given the limit of 3 blocks in SACK option, and your pretty asymetric paths (10ms and 100ms), SACK is useless and consume 12 bytes per frame... You really should add traces to every tp->reordering changes done in our TCP stack, its a 20 minutes patch, and would help you to understand where/when its increased/decreased.