From: Wei Yongjun <yjwei@cn.fujitsu.com>
To: linux-sctp@vger.kernel.org
Subject: Re: [PATCH] SCTP: Fix DATA retransmit after fast retransmit
Date: Sat, 19 Apr 2008 05:45:59 +0000 [thread overview]
Message-ID: <48098717.4010006@cn.fujitsu.com> (raw)
In-Reply-To: <48085441.2030904@cn.fujitsu.com>
Hi Vlad:
Vlad Yasevich wrote:
> Wei Yongjun wrote:
>> If DATA chunk is resend by fast retransmit, and no SACK is received,
>> this DATA chunk can not be send again after T3 timeout.
>>
>> This is because chunk->sent_at will be update after chunk is
>> transmitted, but after fast retransmit, T3 timer will not be reset,
>> so sctp_retransmit_mark() can not mark this chunk for retransmit, and
>> will never sent again because not T3 timer is running.
>>
>> You can test this by following data transmit:
>>
>> Endpoint A Endpoint B
>>
>> <-------------- DATA1
>> <-------------- DATA2
>> <-------------- DATA3
>> <-------------- DATA4
>> <-------------- DATA5
>> SACK(1,2) --------------->
>> SACK(1,3) --------------->
>> SACK(1,3,4) --------------->
>> SACK(1,3,4,5)--------------->
>> <-------------- DATA2 (Fast retransmit)
>> NO SACK is sent, DATA2 will never be send again.
>
> The problem with this patch is that a fast retransmitted chunk ends up
> being
> retransmitted again too early.
>
> There is text in 4960 that I am really trying to understand the
> intention of:
>
> 4) Restart the T3-rtx timer only if the last SACK acknowledged the
> lowest outstanding TSN number sent to that address, or the
> endpoint is retransmitting the first outstanding DATA chunk sent
> to that address.
>
Following is my understand:
1. Restart the T3-rtx timer only if the last SACK acknowledged the
lowest outstanding TSN number sent to that address. SACK4 as following
acknowledged the lowest outstanding TSN number.
Endpoint A Endpoint B
<-------------- DATA1 (TSN=1)
<-------------- DATA2 (TSN=2)
<-------------- DATA3 (TSN=3)
<-------------- DATA4 (TSN=4)
<-------------- DATA5 (TSN=5)
SACK1(1,2)(TSN=0) --------------->
SACK2(1,3)(TSN=0) --------------->
SACK3(1,3,4)(TSN=0)--------------->
SACK4(3,4,5)(TSN=1)---------------> (*)
<-------------- DATA2 (Fast retransmit)
2. The endpoint is retransmitting the first outstanding DATA chunk sent
to that address.
Endpoint A Endpoint B
<-------------- DATA1 (TSN=1)
<-------------- DATA2 (TSN=2)
<-------------- DATA3 (TSN=3)
<-------------- DATA4 (TSN=4)
<-------------- DATA5 (TSN=5)
SACK1(1,2)(TSN=0) --------------->
SACK2(2,3)(TSN=0) --------------->
SACK3(2,3,4)(TSN=0) --------------->
SACK4(2,3,4,5)(TSN=0)--------------->
<-------------- DATA1 (Fast retransmit)
T3-rtx timer will be restart only in the two case above.
> In particular the send part of the above sentence.
>
> Is the meaning that when fast retransmitting the earliest outstanding
> DATA,
> we should restart T3-RTX?
>
> If that's the case, then when we fast-rtx DATA2 above, we should restart
> t3-rtx timer.
T3-rtx timer will not be restart, since it the last SACK not
acknowledged the lowest outstanding TSN number.
So i think check for "!chunk->fast_retransmit" is correct in my patch.
And fast retransmit also need some check to restart T3-rtx in the two
case above.
Is it my understand correct?
Wei Yongjun
next prev parent reply other threads:[~2008-04-19 5:45 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-18 7:56 [PATCH] SCTP: Fix DATA retransmit after fast retransmit Wei Yongjun
2008-04-18 19:41 ` Vlad Yasevich
2008-04-19 5:45 ` Wei Yongjun [this message]
2008-04-21 14:37 ` Vlad Yasevich
2008-04-22 4:29 ` Wei Yongjun
2008-04-23 19:53 ` Vlad Yasevich
2008-04-25 4:04 ` Wei Yongjun
2008-04-25 17:56 ` Vlad Yasevich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=48098717.4010006@cn.fujitsu.com \
--to=yjwei@cn.fujitsu.com \
--cc=linux-sctp@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.