|
From: | address@hidden |
Subject: | Re: [lwip-devel] Question regarding calling tcp_output() from tcp_input() each time |
Date: | Tue, 8 Aug 2017 20:18:47 +0200 |
User-agent: | Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 |
Roy Shterman wrote:
I would like to understand if there is some hidden reason beyond calling tcp_output() at the end of tcp_input(). we are already calling tcp_output() from tcp_recved() in case it is neededby window size and amount of data we need to ack.
You mix up left and right edge of the window: - from tcp_input(), we ACK the data - from tcp_recved(), we increase the window sizeSince there is no way for the stack to know exactly when the application will call tcp_recved(), ACKs must be sent right away to prevent the peer thinking the segment got lost. And applications are free to not update the window for a very long time! Plus, keep in mind the minimum timer frequency is 250ms. Delaying an ACK for that long might reduce throughput.
this tcp_output() from tcp_input() is causing enormous amount of empty ack towards the other end point.
Of course that's not too good, but noone has provided a decent, working solution for this, yet. Feel free to provide one :-) One accepted improvement are "delayed ACKs" where we only send an empty ACK for every 2nd segment.
Cheers, Simon
[Prev in Thread] | Current Thread | [Next in Thread] |