buglwIP - A Lightweight TCP/IP stack - Bugs: bug #21428, Retransmit implementation

 
 

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

bug #21428: Retransmit implementation

Submitted by:  Oleg Tyshev <olegreen>
Submitted on:  Thu 25 Oct 2007 02:36:41 PM UTC  
 
Category: TCPSeverity: 3 - Normal
Item Group: Change RequestStatus: Invalid
Privacy: PublicAssigned to: None
Open/Closed: ClosedPlanned Release: None
lwIP version: None

Sun 28 Oct 2007 02:14:25 PM UTC, comment #4:

Closed it like requested.

Simon Goldschmidt <goldsimon>
Project Administrator
Sun 28 Oct 2007 10:41:14 AM UTC, comment #3:

Ok, we can close it.

But I'm interested about the timings you can got for "timeout retransmit" case, and which settings you got for tcp in your lwipopts.h (TCP_MAXRTX, TCP_SYNMAXRTX, TCP_TMR_INTERVAL, TCP_FAST_INTERVAL, TCP_SLOW_INTERVAL...). I think that default values give slow response times in some cases (try to connect on a host which is not inline on another subnetwork, detect a permanent network failure after connection, etc...).

Frédéric Bernon <fbernon>
Project Member
Thu 25 Oct 2007 02:54:33 PM UTC, comment #2:

This bug can be closed, I didn't see sources attentively.
Fast retransmit case is special processed.

Oleg Tyshev <olegreen>
Thu 25 Oct 2007 02:40:00 PM UTC, comment #1:

Sorry delimeters was lost.
unacked ------ unsent
-------------- 1 2 3 4 5 6
1 2 3 4 ------ 5 6
fast retransmit
2 3 4 -------- 1 5 6
2 3 4 1 ------ 5 6
packet 1 lost again
fast retransmit
instead of packet 1 will be sent packet 2
3 4 1 -------- 2 5 6
3 4 1 2 ------ 5 6

Oleg Tyshev <olegreen>
Thu 25 Oct 2007 02:36:41 PM UTC, original submission:

LWIP TCP stack has two send queues:
unsent and unacked.

At first segments inserted into unsent queue
and after send they will be moved to unacked queue.

There is two possibility to retransmit:
1) fast retransmit
2) timeout retransmit

In case fast retransmit would be called function tcp_rexmit() and one segment from unacked queue will be moved to the head of the unsent queue.

In case timeout retransmit would be called function tcp_rexmit_rto() and all segments from unacked queue will be moved to the head of the unsent queue.

I try to illustrate problem:
unacked unsent
1 2 3 4 5 6
1 2 3 4 5 6
packet 1 lost
fast retransmit
2 3 4 1 5 6
2 3 4 1 5 6
packet 1 lost again
fast retransmit
instead of packet 1 will be sent packet 2
3 4 1 2 5 6
3 4 1 2 5 6

To solve this problem unacked queue should be kept always sorted.

Oleg Tyshev <olegreen>

 

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 goldsimon (Posted a comment)
  • -unavailable- added by fbernon (Posted a comment)
  • -unavailable- added by olegreen (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 2 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Sun 28 Oct 2007 02:14:25 PM UTCgoldsimonStatusNone=>Invalid
      Open/ClosedOpen=>Closed

    Back to the top


    Powered by Savane 3.1-cleanup1