nuttx/net/tcp
chao.an 19ba85c492 net/tcp: implement the fast retransmit
RFC2001: TCP Slow Start, Congestion Avoidance, Fast Retransmit,
         and Fast Recovery Algorithms

...

3.  Fast Retransmit
  Modifications to the congestion avoidance algorithm were proposed in
  1990 [3].  Before describing the change, realize that TCP may
  generate an immediate acknowledgment (a duplicate ACK) when an out-
  of-order segment is received (Section 4.2.2.21 of [1], with a note
  that one reason for doing so was for the experimental fast-
  retransmit algorithm).  This duplicate ACK should not be delayed.
  The purpose of this duplicate ACK is to let the other end know that a
  segment was received out of order, and to tell it what sequence
  number is expected.

  Since TCP does not know whether a duplicate ACK is caused by a lost
  segment or just a reordering of segments, it waits for a small number
  of duplicate ACKs to be received.  It is assumed that if there is
  just a reordering of the segments, there will be only one or two
  duplicate ACKs before the reordered segment is processed, which will
  then generate a new ACK.  If three or more duplicate ACKs are
  received in a row, it is a strong indication that a segment has been
  lost.  TCP then performs a retransmission of what appears to be the
  missing segment, without waiting for a retransmission timer to
  expire.

Change-Id: Ie2cbcecab507c3d831f74390a6a85e0c5c8e0652
Signed-off-by: chao.an <anchao@xiaomi.com>
2020-11-26 20:49:38 +08:00
..
Kconfig net/tcp: implement the fast retransmit 2020-11-26 20:49:38 +08:00
Make.defs net/tcp and udp: Move tcp/udp recvfrom into tcp/udp folder 2020-01-21 08:30:39 -06:00
tcp.h net/tcp: implement the fast retransmit 2020-11-26 20:49:38 +08:00
tcp_accept.c sched/: Make more naming consistent 2020-05-17 14:01:00 -03:00
tcp_appsend.c net/tcp/tcp_appsend.c: Enhance delayed ACK algorithm with behavior of Windows delayed ACK described at https://support.microsoft.com/en-nz/help/214397/design-issues-sending-small-data-segments-over-tcp-with-winsock: 'If there are data to be sent in the same direction as the ACK before the second data packet is received and the delay timer expires, the ACK is piggybacked with the data segment and sent immediately.' 2019-12-09 08:45:52 -06:00
tcp_backlog.c Make the tcp_backlog error message clear 2020-02-24 11:35:01 -06:00
tcp_callback.c Make the read ahead buffer unselectable 2020-01-11 08:24:49 -06:00
tcp_close.c net/callback: remove the assert check of conn instance 2020-11-10 19:40:41 -08:00
tcp_conn.c Sources and Docs: Fix typos and nxstyle issues 2020-10-02 04:54:52 +02:00
tcp_connect.c Run nxstyle all .c and .h files modified by PR. 2020-05-17 14:01:00 -03:00
tcp_devpoll.c Standardization of some function headers. 2018-03-13 09:52:27 -06:00
tcp_finddev.c Fix typos in comments 2020-02-14 08:50:45 -06:00
tcp_getsockopt.c net/tcp/tcp_getsockopt.c: Fix compilation failure found in build testing. Error: invalia application of 'sizeof' to incomplete type 'struct timeval'. Fixed by including sys/time.h. Same problem and same fix as for setsockopt earlier." 2020-01-11 17:20:02 -03:00
tcp_input.c net/tcp/tcp_input.c: Fix syslog formats 2020-11-23 05:00:10 -08:00
tcp_ipselect.c
tcp_listen.c Run codespell -w with the latest dictonary again 2020-02-23 22:27:46 +01:00
tcp_monitor.c Run codespell -w against all files 2020-02-22 14:45:07 -06:00
tcp_netpoll.c Don't need monitor IOB buffer empty event for POLLOUT implementation 2020-05-13 06:50:07 -06:00
tcp_notifier.c Run codespell -w with the latest dictonary again 2020-02-23 22:27:46 +01:00
tcp_recvfrom.c Run nxstyle all .c and .h files modified by PR. 2020-05-17 14:01:00 -03:00
tcp_recvwindow.c net/tcp: correct the available iobs count if throttle is enabled 2020-11-26 20:04:01 +08:00
tcp_send.c net/tcp: Rectified keepalive fix 2020-11-18 17:40:42 -03:00
tcp_send_buffered.c net/tcp: implement the fast retransmit 2020-11-26 20:49:38 +08:00
tcp_send_unbuffered.c net/tcp/tcp_send_unbuffered.c: Fix syslog formats 2020-11-23 05:00:10 -08:00
tcp_sendfile.c net/callback: remove the assert check of conn instance 2020-11-10 19:40:41 -08:00
tcp_seqno.c net/: Fix alignment and spacing problems found by tools/nxstyle. 2019-07-02 18:02:23 -06:00
tcp_setsockopt.c Rename clock_systime[r|spec] to clock_systime_[ticks|timespec] 2020-05-10 14:35:50 -06:00
tcp_timer.c net/tcp: Rectified keepalive fix 2020-11-18 17:40:42 -03:00
tcp_txdrain.c sched/: Make more naming consistent 2020-05-17 14:01:00 -03:00
tcp_wrbuffer.c net/tcp: implement the fast retransmit 2020-11-26 20:49:38 +08:00
tcp_wrbuffer_dump.c net/tcp/tcp_wrbuffer_dump.c: Fix a syslog format 2020-11-20 22:22:53 -08:00