buglwIP - A Lightweight TCP/IP stack - Bugs: bug #33058, Fast retransmit transmits too much...

 
 

You are not allowed to post comments on this tracker with your current authentication level.

bug #33058: Fast retransmit transmits too much (disables nagle)

Submitted by:  Simon Goldschmidt <goldsimon>
Submitted on:  Tue 12 Apr 2011 07:11:31 PM UTC  
 
Category: TCPSeverity: 2 - Minor
Item Group: Faulty BehaviourStatus: Wont Fix
Privacy: PublicAssigned to: Simon Goldschmidt <goldsimon>
Open/Closed: ClosedPlanned Release: None
lwIP version: CVS Head

Sat 03 Sep 2011 08:33:55 PM UTC, comment #3:

Closing as won't fix.

Simon Goldschmidt <goldsimon>
Project AdministratorIn charge of this item.
Sat 03 Sep 2011 12:52:39 AM UTC, comment #2:

I agree with you!
1: if tcp_do_output_nagle() is called and only called by tcp_output().
2: when status machine of TCP is ESTABLISHED, tcp_output is controlled by TCP slow timer, TCP fast timer and TCP_EVENT_POLL. All of them are controlled by timer.
So, I think that there should be no problem in current code.

tao tang <opensms4>
Fri 02 Sep 2011 09:42:14 PM UTC, comment #1:

Thinking more about this, I think my initial assumption was wrong: segments might have been previously transmitted by TCP slow timer, so might get delayed again. Thinking about the "lw" in our name, I'd just leave it the way it is now: It's too minor to me to add new code to handle this.

Simon Goldschmidt <goldsimon>
Project AdministratorIn charge of this item.
Tue 12 Apr 2011 07:11:31 PM UTC, original submission:

While reviewing bug #32417, I discovered that TCP fast retransmit transmits too much data because it disables the nagle algorithm (see definition of tcp_do_output_nagle(): if the TF_INFR flag is set, it always returns true).

Now while this isn't too big a problem, I think we can just leave that check away: if the segment in question (which gets moved from unacked to unsent by tcp_rexmit_fast()) has already been sent, this means that before, one of the other checks in tcp_do_output_nagle() fired and as such, the next time tcp_output() is called, at least one segment will be sent.

The problem with the current check is that tcp_rexmit_fast() setting the TF_INFR flag leads to sending all data from the unsent queue, including the segment held back by nagle before.

Simon Goldschmidt <goldsimon>
Project AdministratorIn charge of this item.

 

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -unavailable- added by opensms4 (Posted a comment)
  • -unavailable- added by goldsimon (Submitted the item)
  •  

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.

     

    Please enter the title of George Orwell's famous dystopian book (it's a date):

     

     

    Follow 4 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Sat 03 Sep 2011 08:33:55 PM UTCgoldsimonStatusNone=>Wont Fix
      Assigned toNone=>goldsimon
      Open/ClosedOpen=>Closed
    Fri 02 Sep 2011 09:42:14 PM UTCgoldsimonPlanned Release1.4.1=>

    Back to the top


    Powered by Savane 3.1-cleanup1