All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vlad Yasevich <vladislav.yasevich@hp.com>
To: linux-sctp@vger.kernel.org
Subject: Re: [PATCH] SCTP: Fix DATA retransmit after fast retransmit
Date: Fri, 18 Apr 2008 19:41:47 +0000	[thread overview]
Message-ID: <4808F97B.1060401@hp.com> (raw)
In-Reply-To: <48085441.2030904@cn.fujitsu.com>

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.
> 
> 
> Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com>
> 
> --- a/net/sctp/outqueue.c    2008-04-18 09:00:58.000000000 -0400
> +++ b/net/sctp/outqueue.c    2008-04-18 09:06:07.000000000 -0400
> @@ -425,7 +425,8 @@ void sctp_retransmit_mark(struct sctp_ou
>              * retransmitting due to T3 timeout.
>              */
>             if (reason = SCTP_RTXR_T3_RTX &&
> -                (jiffies - chunk->sent_at) < transport->last_rto)
> +                (jiffies - chunk->sent_at) < transport->last_rto &&
> +                !chunk->fast_retransmit)
>                 continue;
> 
>             /* RFC 2960 6.2.1 Processing a Received SACK
> 
> 

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.

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.

-vlad

  reply	other threads:[~2008-04-18 19:41 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 [this message]
2008-04-19  5:45 ` Wei Yongjun
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=4808F97B.1060401@hp.com \
    --to=vladislav.yasevich@hp.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.