From: Vlad Yasevich <vladislav.yasevich@hp.com>
To: linux-sctp@vger.kernel.org
Subject: Re: receiver window questions
Date: Thu, 29 May 2008 15:50:56 +0000 [thread overview]
Message-ID: <483ED0E0.5040307@hp.com> (raw)
In-Reply-To: <483EC663.1070805@hp.com>
Neil Horman wrote:
> On Thu, May 29, 2008 at 11:06:11AM -0400, Vlad Yasevich wrote:
>> Hi Michael
>>
>> Michael Tuexen wrote:
>>> Hi Vlad,
>>>
>>> we are currently testing the receive behaviour of Linux (and
>>> other systems).
>>>
>>> We are using Fedora 9, kernel 2.6.25-14.
>>>
>>> The receiver application just opens a 1-to-many style socket
>>> and sleeps forever, not reading any messages.
>>>
>>> The sender (on a different machine), sends a lot of messages of the
>>> same size, all on stream 0, ordered.
>>>
>>> When setting the receive buffer space (using the SO_RCVBUF socket option)
>>> to 10000 we oberserve the following:
>>>
>>> - When sending messages of size 1000 bytes, the receiver SACK the first,
>>> announces 9000 bytes windows, SACKs the second announces 8000 bytes
>>> and so on. Look fine. The a_rwnd goes down to 0 and discards messages.
>>> Everything is fine.
>>>
>>> - When sending messages of size 100 bytes, the receiver SACKs the first
>>> messages and reduces the a_rwnd accordingly. Then it looks like the
>>> receive buffer grows, because messages are accepted and the a_rwnd does
>>> not shrink. Is this intended?
>> No. The a_rwnd should go down to 0 as before.
>>
>>> We also figured out that after about 670947 messages of size 100 bytes
>>> the association is aborted. Is this intended?
>> This is also not intended. We'll take a look.
>>
> That does sound odd, yes, a_rwnd should be reduced in response to each received
> frame. do you have tcpdumps of this test available?
> Thanks
> Neil
I think this is hitting a condition where the receiver buffer is exhausted prior
to rwnd. We generally mark the TSN as received prior to attempting an internal
allocation to carry the data. Thus, if this allocation fails, we'll continue
reporting the tsn as received and move the cum-tsn if appropriate.
We've been trying to figure out what the correct way to solve this condition is
and so far haven't come up with a workable solution.
One approach is to reduce the a_rwnd to 1 when the receive buffer reaches some
consumption threshold. This would allow 1 packet in flight to allow receive
buffer to drain. Another piece of this puzzle is also SWS avoidance. We
currently have somewhat poor algorithm that allows a max of 1 MTU in transit.
-vlad
next prev parent reply other threads:[~2008-05-29 15:50 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-29 15:06 receiver window questions Vlad Yasevich
2008-05-29 15:18 ` Michael Tuexen
2008-05-29 15:25 ` Neil Horman
2008-05-29 15:34 ` Michael Tuexen
2008-05-29 15:50 ` Vlad Yasevich [this message]
2008-05-29 16:12 ` Michael Tuexen
2008-05-29 23:51 ` Neil Horman
2008-05-30 7:50 ` Michael Tuexen
2008-05-30 13:02 ` Vlad Yasevich
2008-05-30 15:08 ` Michael Tuexen
2008-05-30 17:10 ` Vlad Yasevich
2008-05-30 20:23 ` 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=483ED0E0.5040307@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.