From: Vlad Yasevich <vladislav.yasevich@hp.com>
To: linux-sctp@vger.kernel.org
Subject: Re: [PATCH] sctp: Fix mis-ordering of user space data when multihoming
Date: Mon, 02 Nov 2009 17:58:27 +0000 [thread overview]
Message-ID: <4AEF1DC3.5020905@hp.com> (raw)
In-Reply-To: <20091030141056.GA5181@hmsreliant.think-freely.org>
Neil Horman wrote:
>> We could do that yes, but it concerns me, as assigning the tsn in
>>> sctp_outq_flush leaves us in a position where we assign tsn to chunks that might
>>> get dropped prior to submission to the ip layer. Consider if we have a routing
>>> table disruption, and we follow the no_route path in sctp_packet_transmit. In
>>> that situation, we will discard chunks with tsns assigned, leaving a gap in our
>>> stream. Unless we have a recovery path for that, I think the better option is
>>> to wait to assign tsns until we are sure we can submit them to the ip layer
>>> safely (where the transmitted queue can re-tranmit them if need be). If you can
>>> explain the SACK case in a little more detail above, perhaps we can come up with
>>> some logic to govern when it is and is not safe to call sctp_packet_transmit
>>> from sctp_packet_transmit_chunk for data chunks.
>> Assume that we have a number of queued chunks that add up to multiple MTUs
>> all going to the same transport (typical case). They are currently gated by
>> congestion window.
>>
>> A SACK arrives triggering a flush. With the proposed patch, once we fill a
>> single MTU, the main loop in sctp_outq_flush will exist and we will transmit
>> only a single packet and under-utilize our congesting window thus preventing
>> future growth. With the old code, we had multiple packets sent out thus
>> filling the congestion window.
>>
>> Another thing your patch didn't take into account is that every time we change
>> the transport in sctp_outq_flush, we reset the packet, effectively marking it
>> empty. You would end up leaking chunks if there was any queuing effects.
>>
>> If a transient routing problem happens and the packet fails to get sent, that's
>> no different then a loss event in the network. It will get reported back as
>> gaps or, if the failure is long term, it will be detected with HBs and
>> retransmissions. So I don't see a problem of assigning TSNs when the DATA is
>> added to the packet. We don't really want to do it any earlier though.
>>
>
> Yeah, ok, heres a new version, instead of just skipping the packet transmit in
> transmit_chunk, we instead simply assign a tsn in sctp_outq_flush, after we
> dequeue a data chunk from the outq and do the normal expiration and invalid
> stream checking.
>
> Regards
> Neil
>
Hi Neil
I don't think we can do that in sctp_outq_flush().
You can do it in either sctp_packet_append_data() or sctp_packet_append_chunk().
I think it will be cleaner in append_data(), but that's your choice.
-vlad
next prev parent reply other threads:[~2009-11-02 17:58 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-30 14:10 [PATCH] sctp: Fix mis-ordering of user space data when multihoming Neil Horman
2009-11-02 14:49 ` Vlad Yasevich
2009-11-02 15:23 ` [PATCH] sctp: Fix mis-ordering of user space data when Neil Horman
2009-11-02 16:15 ` [PATCH] sctp: Fix mis-ordering of user space data when multihoming Vlad Yasevich
2009-11-02 17:38 ` [PATCH] sctp: Fix mis-ordering of user space data when Neil Horman
2009-11-02 17:58 ` Vlad Yasevich [this message]
2009-11-02 18:38 ` Neil Horman
2009-11-02 18:57 ` [PATCH] sctp: Fix mis-ordering of user space data when multihoming Vlad Yasevich
2009-11-03 1:41 ` [PATCH] sctp: Fix mis-ordering of user space data when Neil Horman
2009-11-06 0:44 ` Neil Horman
2009-11-06 15:35 ` [PATCH] sctp: Fix mis-ordering of user space data when multihoming Vlad Yasevich
2009-11-06 18:42 ` [PATCH] sctp: Fix mis-ordering of user space data when Neil Horman
2009-11-07 13:38 ` Neil Horman
2009-11-09 17:08 ` [PATCH] sctp: Fix mis-ordering of user space data when multihoming Vlad Yasevich
2009-11-09 17:16 ` [PATCH] sctp: Fix mis-ordering of user space data when Neil Horman
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=4AEF1DC3.5020905@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.