lwip-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lwip-devel] [patch #9384] Partial SACK (RFC 2018) support


From: Jakub Schmidtke
Subject: [lwip-devel] [patch #9384] Partial SACK (RFC 2018) support
Date: Wed, 28 Jun 2017 15:32:45 -0400 (EDT)
User-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.86 Safari/537.36

Follow-up Comment #11, patch #9384 (project lwip):

I could modify the way SACKs are stored, if using a memp approach is
preferred.
That would (I assume) remove the complexity of removing entries from the SACKs
list,
but inserting new entries is not that complex to begin with.
I am assuming the max length of a list of SACKs to hold for a single PCB
should still be limited (but could be higher than 4).

But this just changes the way SACKs are stored in PCBs, and doesn't solve the
main problem,
which at the moment seems to be inserting SACKs into data packets.

I am assuming that violating MSS is not acceptable, and sending only parts of
payload of some of the packets
doesn't really make sense.

So I see three approaches:

1. Sending SACKs only in empty ACK packets. This violates the RFC (I think),
but maybe it is acceptable.

2. Making MSS lower to make room for max number of SACKs, and padding the
header with zeroes (or NOPs)
   if there is no need to send any SACKs. This is very straightforward and
would result in the simplest code,
   but it wastes up to 36 bytes per each TCP data packet - and I'm not sure if
that's OK. It also lowers the throughput by using smaller MSS.

3. Making MSS lower to make room for max number of SACKs, but only include
those SACKs if we want to send any.
   This lowers the throughput (by making MSS smaller), but doesn't waste
bytes.
   However, to achieve that, there has to be additional space reserve for the
TCP header, and that header may have to be moved back and forth.
   And given that SACK option would be padded, that shifting would by by 12,
20, 28 or 36 bytes one way or the other.
   I don't know enough about memory models and alignment in lwIP to determine
if that could cause any problems.

So the question is: What makes most sense and which approach should I take?




    _______________________________________________________

Reply to this item at:

  <http://savannah.nongnu.org/patch/?9384>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.nongnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]