gvisor/pkg/tcpip
Bhasker Hariharan 08f4846ebe Fix bugs in SACK recovery.
Every call to sender.NextSeg does not need to iterate from the
front of the writeList as in a given recovery episode we can cache
the last nextSeg returned. There cannot be a lower sequenced segment
that matches the next call to NextSeg as otherwise we would have
returned that instead in the previous call.

This fixes the issue of excessive CPU usage w/ large send buffers
where we spend a lot of time iterating from the front of the list on
every NextSeg invocation.

Further the following other bugs were also fixed:
  * Iteration of segments never sent in NextSeg() when looking for segments for
    retransmission that match step1/3/4 of the NextSeg algorithm
  * Correctly setting rescueRxt only if the rescue segment was actually sent.
  * Correctly initializing rescueRxt/highRxt when entering SACK recovery.
  * Correctly re-arming the timer only on retransmissions when SACK is in use
    and not for every segment being sent as it was being done before.
  * Copy over xmitTime and xmitCount on segment clone.
  * Move writeNext along when skipping over SACKED segments. This is required
    to prevent spurious retransmissions where we end up retransmitting data
    that was never lost.

PiperOrigin-RevId: 310387671
2020-05-07 10:26:00 -07:00
..
adapters/gonet
buffer Automated rollback of changelist 308674219 2020-05-01 16:09:53 -07:00
checker
hash/jenkins Standardize on tools directory. 2020-01-27 12:21:00 -08:00
header Support for connection tracking of TCP packets. 2020-05-01 16:59:40 -07:00
link sniffer: fix accidental logging of good packets as bad 2020-05-06 13:38:36 -07:00
network Add basic incoming ipv4 fragment tests 2020-05-06 22:45:21 -07:00
ports
sample
seqnum Don't accept segments outside the receive window 2020-04-19 22:16:14 -07:00
stack Do not assume no DHCPv6 configurations 2020-05-06 15:59:08 -07:00
transport Fix bugs in SACK recovery. 2020-05-07 10:26:00 -07:00
BUILD Move tcpip.PacketBuffer and IPTables to stack package. 2020-03-24 09:06:26 -07:00
tcpip.go Fix data race in tcp_test. 2020-04-16 16:49:18 -07:00
tcpip_test.go Fix all printf formatting errors. 2020-04-08 10:14:34 -07:00
time.s Change copyright notice to "The gVisor Authors" 2019-04-29 14:26:23 -07:00
time_unsafe.go
timer.go Do not copy tcpip.CancellableTimer 2020-04-24 12:46:56 -07:00
timer_test.go Do not copy tcpip.CancellableTimer 2020-04-24 12:46:56 -07:00