netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCHv5 0/5] LOST marking rewrite
@ 2007-03-16 18:41 Ilpo Järvinen
  2007-03-16 18:41 ` [RFC PATCHv5 1/5] [TCP]: Add highest_sack seqno, points to globally highest SACK Ilpo Järvinen
  0 siblings, 1 reply; 14+ messages in thread
From: Ilpo Järvinen @ 2007-03-16 18:41 UTC (permalink / raw)
  To: netdev; +Cc: David Miller

It's strange how I always manage to find couple of problems quite soon
after I've sent things to public... :-) Once again two important fixes
to v4.

This patchset provides new LOST detection algorithm. This is part
of tcp_sock diet program. Removes couple of hints, sadly enough this
is a tradeoff as one u32 is necessary for the new algorithm even though
most of the time the last SACK would give all necessary information.

It might be useful to add unlikely to the rexmit hint clearing since it
really shouldn't happen except very very rarely if ever. And maybe also
the !tp->sacked_out.

I think I have introduced a small problem to the timedout thingie,
however, we can work around that by faking highest_sack to a higher
value if timed out loop advances too far to avoid (potentially expensive)
walking... So that it would be highest_sacked_or_lost (or highest_marked,
whatever).

Testing of v5 underway (I'll have full results after couple of hours but
the part I checked already was correct, more trustworthy testing this
time as CBI was not interfering my testset).


    v4-to-v5 changes:
     - Fixed entry_seq when last (and updated) SACK block is less than
       tp->reordering * MSS (previously worked only by a change and
       CBI hid troubles)
     - Delayed holes_seen pre-increment to avoid exiting marker too early
     - Silenced compiler warning RFC3517 fast_rexmit thingie introduces

    v3-to-v4 changes:
     - Fixed FACK off-by-one error that was introduced in v3 change
     - Provided RFC3517 SACK as a separate patch
     - Added "a fastpath" optimization
     - Restructured the algorithm to get it cleaner
     - Decided that there isn't a clear way to handle R without L frames
       timedout thingie above the reord marking (the old code is quite
       impossible to follow anyway as does not have any reliable invariants
       because the timestamps change when -> R transition occurs). Besides,
       such case is probably too marginal one to do something expensive.
       Depending on the hint state, the results could be vastly different
       in the old algo. Thus I did go for a straight forward way: if we have
       a timed out skb, the remaining will also timeout (this could also be
       seen as ok defination since R without L should be made R|L at some
       point!). It could be possible to have some invariants for this if
       there is cheap way to access the skb right after the last rexmit skb
       (I have intentionally avoided hint usage since we're hopefully going
       to farewell them).
     - Handle !sacked_out case correctly
     - Guarantee highest_sack in sync only when sacked_out > 0
     - Rebased to a recent net-2.6.22 (couple of space changes hit the
       removed area & RB-tree fixes were done)
    
    v2-to-v3 changes:
     - Replace of skipping made worries in it obsolete and now really
       one skb less is traversed (was promised in v2)
    
    v1-to-v2 changes:
     - Changes non-fack SACK to something less broken; not a complete
       set of changes (other functions should also be fixed)
     - Fixed NewReno bugs
     - More comments & added RFCs to places I'm unsure of
     - Delayed reord_count increment (traverses now one skb less)
     - Copied retransmit_hint clearing from the original but I
       think it's superfluous
     - Separated highest_sack to own patch
     - Fixed off-by-one bug in skipping




^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2007-03-26 21:43 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-03-16 18:41 [RFC PATCHv5 0/5] LOST marking rewrite Ilpo Järvinen
2007-03-16 18:41 ` [RFC PATCHv5 1/5] [TCP]: Add highest_sack seqno, points to globally highest SACK Ilpo Järvinen
2007-03-16 18:41   ` [RFC PATCHv5 2/5] [TCP]: Extracted rexmit hint clearing from the LOST marking code Ilpo Järvinen
2007-03-16 18:41     ` [RFC PATCHv5 3/5] [TCP]: Reworked recovery's TCPCB_LOST marking functions Ilpo Järvinen
2007-03-16 18:41       ` [RFC PATCHv5 4/5] [TCP]: new LOST marker optimizations Ilpo Järvinen
2007-03-16 18:41         ` [RFC PATCHv5 5/5] [TCP]: non-FACK SACK follows conservative SACK loss recovery (RFC3517) Ilpo Järvinen
2007-03-25  4:13           ` David Miller
2007-03-25  4:10         ` [RFC PATCHv5 4/5] [TCP]: new LOST marker optimizations David Miller
2007-03-25  4:09       ` [RFC PATCHv5 3/5] [TCP]: Reworked recovery's TCPCB_LOST marking functions David Miller
2007-03-25  4:05     ` [RFC PATCHv5 2/5] [TCP]: Extracted rexmit hint clearing from the LOST marking code David Miller
2007-03-25  4:04   ` [RFC PATCHv5 1/5] [TCP]: Add highest_sack seqno, points to globally highest SACK David Miller
2007-03-25 21:55     ` Ilpo Järvinen
2007-03-26  1:35       ` David Miller
2007-03-26 21:43         ` Ilpo Järvinen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).