- From: 张文涛 <zhangwt1989 AT gmail.com>
- To: Michael Tüxen <Michael.Tuexen AT micmac.franken.de>
- Cc: sctp-discussion AT sctp.de
- Subject: Re: [SCTP-Discussion] [an uncomfortable case when using sctptftp based on sctplib-1.0.8]
- Date: Mon, 19 Oct 2009 12:15:44 +0800
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=Qb6CFUP7rZCDadp+SGuemY3eCXw+k/m4JjlpjPvC2wNUjXlfccP3UPEoHCWS2D/pqs UBgFrjvmZ3jopuHsGKoBB8+aU+hqd+apzAAuD9s74xvUADr/5f4hh4HxelfUcUkStO76 /P9eOD2kXIpuQXUfv3CRCgiikNulge5Ie7BOk=
- List-archive: <http://lists.franken.de/pipermail/sctp-discussion>
- List-id: SCTP Discussions <sctp-discussion.sctp.de>
Hi, Michael
Thank you very much for your advice and explanation of my doubt about retransmission bytes.
As I see it, you have pointed out the basic principle that size of a sent chunk(whether first transmission or retransmission) should be subtracted totally once from the peer window after the last time it was sent. And this may be ensured in the code as follows:
// fc_update_chunk_data() in flowcontrol.c, line605~614
605 /* section 6.2.1.B */
606 /* leave peers arwnd untouched for retransmitted data !!!!!!!!! */
607 if (dat->num_of_transmissions == 1) {
608 /* outstanding byte counter has been decreased if chunks were scheduled for RTX,
increase here ! */
609 fc->outstanding_bytes += dat->chunk_len;
610 if (dat->chunk_len >= rwnd)
611 rtx_set_remote_receiver_window(0);
612 else
613 rtx_set_remote_receiver_window(rwnd - dat->chunk_len);
614 }
I think lines above means that
*only first transmission chunk would increase fc->outstanding_bytes and decrease remote_receiver_window by chunk size, these two variables are untouched for retransmission data as said in line 606.
*Line 608 might be meaningless because this segment doesn't deal with retransmission data and even if chunks were scheduled for RTX outstanding byte counter would not be decreased(I can't find such operation in the sctplib).
I might suggest that if chunks were scheduled for RTX
*first, outstanding byte counter be decreased and peer window be increased in case of shortage of either cwnd or peer rwnd, because these two variables would be checked before chunks could be sent out .
*And after these chucks had really been sent out for retransmission, we increased the outstanding byte counter and decreased the peer rwnd again.
The main purpose of doing so is to avoid shortage of either cwnd or peer rwnd when they are checked before chunks scheduled for RTX could be sent out. And this doesn't break the "chunk size one time subtracted in all " basic principle.
There still might be some unclear things in what I say. Hope you can scan it anyway, appreciation for your patience.
Best Regards
Wentao
Archive powered by MHonArc 2.6.19+.