<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/sys/netinet/tcp_timer.c, branch releng/12.4</title>
<subtitle>FreeBSD source tree</subtitle>
<id>https://cgit-dev.freebsd.org/src/atom?h=releng%2F12.4</id>
<link rel='self' href='https://cgit-dev.freebsd.org/src/atom?h=releng%2F12.4'/>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/'/>
<updated>2020-09-10T12:54:46Z</updated>
<entry>
<title>MFC r359926:</title>
<updated>2020-09-10T12:54:46Z</updated>
<author>
<name>Michael Tuexen</name>
<email>tuexen@FreeBSD.org</email>
</author>
<published>2020-09-10T12:54:46Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=20319ec0c70b42591aa0e07609267a1ecec44efc'/>
<id>urn:sha1:20319ec0c70b42591aa0e07609267a1ecec44efc</id>
<content type='text'>
Improve the TCP blackhole detection. The principle is to reduce the
MSS in two steps and try each candidate two times. However, if two
candidates are the same (which is the case in TCP/IPv6), this candidate
was tested four times. This patch ensures that each candidate actually
reduced the MSS and is only tested 2 times. This reduces the time window
of missclassifying a temporary outage as an MTU issue.
</content>
</entry>
<entry>
<title>MFC r359487:</title>
<updated>2020-09-10T12:52:50Z</updated>
<author>
<name>Michael Tuexen</name>
<email>tuexen@FreeBSD.org</email>
</author>
<published>2020-09-10T12:52:50Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=899710f27b1c3523f5aaf74acd27df6ea44a3899'/>
<id>urn:sha1:899710f27b1c3523f5aaf74acd27df6ea44a3899</id>
<content type='text'>
Allow the TCP backhole detection to be disabled at all, enabled only
for IPv4, enabled only for IPv6, and enabled for IPv4 and IPv6.
The current blackhole detection might classify a temporary outage as
an MTU issue and reduces permanently the MSS. Since the consequences of
such a reduction due to a misclassification are much more drastically
for IPv4 than for IPv6, allow the administrator to enable it for IPv6 only.

Manually resolve conflict for BBR, which does not exist in stable/12
</content>
</entry>
<entry>
<title>MFC r356527-356528:</title>
<updated>2020-01-28T18:08:53Z</updated>
<author>
<name>Bjoern A. Zeeb</name>
<email>bz@FreeBSD.org</email>
</author>
<published>2020-01-28T18:08:53Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=da858db310c4414a423f8e813ac82f781cb928c8'/>
<id>urn:sha1:da858db310c4414a423f8e813ac82f781cb928c8</id>
<content type='text'>
  vnet: virtualise more network stack sysctls.

  Virtualise tcp_always_keepalive, TCP and UDP log_in_vain.  All three are
  set in the netoptions startup script, which we would love to run for VNETs
  as well.

  While virtualising the log_in_vain sysctls seems pointles at first for as
  long as the kernel message buffer is not virtualised, it at least allows
  an administrator to debug the base system or an individual jail if needed
  without turning the logging on for all jails running on a system.

  Run netoptions startup script in vnet jails.

  People use rc.conf inside vnet jails to configure networking setups.
  Presumably because some sysctl were not virtualised up until r356527 the
  script was not run for vnet jails leaving the rc.conf options without
  effect for non-obvious reasons.  Run the netoptions startup script also
  for VNET jails now to make the rc.conf options work.

PR:		243193
</content>
</entry>
<entry>
<title>MFC r345458:</title>
<updated>2019-05-04T11:24:19Z</updated>
<author>
<name>Michael Tuexen</name>
<email>tuexen@FreeBSD.org</email>
</author>
<published>2019-05-04T11:24:19Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=cb72829c75d3a3e5b23d839b0b6db66fee4c38e4'/>
<id>urn:sha1:cb72829c75d3a3e5b23d839b0b6db66fee4c38e4</id>
<content type='text'>
Add sysctl variable net.inet.tcp.rexmit_initial for setting RTO.Initial
used by TCP.

Reviewed by:		rrs@, 0mp@
Sponsored by:		Netflix, Inc.
Differential Revision:	https://reviews.freebsd.org/D19355
</content>
</entry>
<entry>
<title>MFC r344367:</title>
<updated>2019-05-04T10:36:16Z</updated>
<author>
<name>Michael Tuexen</name>
<email>tuexen@FreeBSD.org</email>
</author>
<published>2019-05-04T10:36:16Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=9635d5746bbd44c7b80e25d7351f4a5f2fedc68d'/>
<id>urn:sha1:9635d5746bbd44c7b80e25d7351f4a5f2fedc68d</id>
<content type='text'>
Use exponential backoff for retransmitting SYN segments as specified
in the TCP RFCs.

Reviewed by:		rrs@, Richard Scheffenegger
Sponsored by:		Netflix, Inc.
Differential Revision:	https://reviews.freebsd.org/D18974
</content>
</entry>
<entry>
<title>epoch(9): allow preemptible epochs to compose</title>
<updated>2018-07-04T02:47:16Z</updated>
<author>
<name>Matt Macy</name>
<email>mmacy@FreeBSD.org</email>
</author>
<published>2018-07-04T02:47:16Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=6573d7580b851d794b6c3cbd5ee3d7bf0b4c0ccb'/>
<id>urn:sha1:6573d7580b851d794b6c3cbd5ee3d7bf0b4c0ccb</id>
<content type='text'>
- Add tracker argument to preemptible epochs
- Inline epoch read path in kernel and tied modules
- Change in_epoch to take an epoch as argument
- Simplify tfb_tcp_do_segment to not take a ti_locked argument,
  there's no longer any benefit to dropping the pcbinfo lock
  and trying to do so just adds an error prone branchfest to
  these functions
- Remove cases of same function recursion on the epoch as
  recursing is no longer free.
- Remove the the TAILQ_ENTRY and epoch_section from struct
  thread as the tracker field is now stack or heap allocated
  as appropriate.

Tested by: pho and Limelight Networks
Reviewed by: kbowling at llnw dot com
Sponsored by: Limelight Networks
Differential Revision: https://reviews.freebsd.org/D16066
</content>
</entry>
<entry>
<title>This commit brings in a new refactored TCP stack called Rack.</title>
<updated>2018-06-07T18:18:13Z</updated>
<author>
<name>Randall Stewart</name>
<email>rrs@FreeBSD.org</email>
</author>
<published>2018-06-07T18:18:13Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=89e560f441bb214495715039288c99442b3b5aea'/>
<id>urn:sha1:89e560f441bb214495715039288c99442b3b5aea</id>
<content type='text'>
Rack includes the following features:
 - A different SACK processing scheme (the old sack structures are not used).
 - RACK (Recent acknowledgment) where counting dup-acks is no longer done
        instead time is used to knwo when to retransmit. (see the I-D)
 - TLP (Tail Loss Probe) where we will probe for tail-losses to attempt
        to try not to take a retransmit time-out. (see the I-D)
 - Burst mitigation using TCPHTPS
 - PRR (partial rate reduction) see the RFC.

Once built into your kernel, you can select this stack by either
socket option with the name of the stack is "rack" or by setting
the global sysctl so the default is rack.

Note that any connection that does not support SACK will be kicked
back to the "default" base  FreeBSD stack (currently known as "default").

To build this into your kernel you will need to enable in your
kernel:
   makeoptions WITH_EXTRA_TCP_STACKS=1
   options TCPHPTS

Sponsored by:	Netflix Inc.
Differential Revision:		https://reviews.freebsd.org/D15525
</content>
</entry>
<entry>
<title>Fix spurious retransmit recovery on low latency networks</title>
<updated>2018-05-08T02:22:34Z</updated>
<author>
<name>Matt Macy</name>
<email>mmacy@FreeBSD.org</email>
</author>
<published>2018-05-08T02:22:34Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=10d20c84ed8ac35523a3a20d72a91fb505df2192'/>
<id>urn:sha1:10d20c84ed8ac35523a3a20d72a91fb505df2192</id>
<content type='text'>
TCP's smoothed RTT (SRTT) can be much larger than an actual observed RTT. This can be either because of hz restricting the calculable RTT to 10ms in VMs or 1ms using the default 1000hz or simply because SRTT recently incorporated a larger value.

If an ACK arrives before the calculated badrxtwin (now + SRTT):
tp-&gt;t_badrxtwin = ticks + (tp-&gt;t_srtt &gt;&gt; (TCP_RTT_SHIFT + 1));

We'll erroneously reset snd_una to snd_max. If multiple segments were dropped and this happens repeatedly the transmit rate will be limited to 1MSS per RTO until we've retransmitted all drops.

Reported by:	rstone
Reviewed by:	hiren, transport
Approved by:	sbruno
MFC after:	1 month
Differential Revision:	https://reviews.freebsd.org/D8556
</content>
</entry>
<entry>
<title>SImplify the call to tcp_drop(), since the handling of soft error</title>
<updated>2018-05-02T20:04:31Z</updated>
<author>
<name>Michael Tuexen</name>
<email>tuexen@FreeBSD.org</email>
</author>
<published>2018-05-02T20:04:31Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=4c6a10903fcbe29ab6472d365177ad43e9688c77'/>
<id>urn:sha1:4c6a10903fcbe29ab6472d365177ad43e9688c77</id>
<content type='text'>
is also done in tcp_drop(). No functional change.

Sponsored by:	Netflix, Inc.
</content>
</entry>
<entry>
<title>Add the "TCP Blackbox Recorder" which we discussed at the developer</title>
<updated>2018-03-22T09:40:08Z</updated>
<author>
<name>Jonathan T. Looney</name>
<email>jtl@FreeBSD.org</email>
</author>
<published>2018-03-22T09:40:08Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=2529f56ed32d808dc3911c369c731f1b21664de6'/>
<id>urn:sha1:2529f56ed32d808dc3911c369c731f1b21664de6</id>
<content type='text'>
summits at BSDCan and BSDCam in 2017.

The TCP Blackbox Recorder allows you to capture events on a TCP connection
in a ring buffer. It stores metadata with the event. It optionally stores
the TCP header associated with an event (if the event is associated with a
packet) and also optionally stores information on the sockets.

It supports setting a log ID on a TCP connection and using this to correlate
multiple connections that share a common log ID.

You can log connections in different modes. If you are doing a coordinated
test with a particular connection, you may tell the system to put it in
mode 4 (continuous dump). Or, if you just want to monitor for errors, you
can put it in mode 1 (ring buffer) and dump all the ring buffers associated
with the connection ID when we receive an error signal for that connection
ID. You can set a default mode that will be applied to a particular ratio
of incoming connections. You can also manually set a mode using a socket
option.

This commit includes only basic probes. rrs@ has added quite an abundance
of probes in his TCP development work. He plans to commit those soon.

There are user-space programs which we plan to commit as ports. These read
the data from the log device and output pcapng files, and then let you
analyze the data (and metadata) in the pcapng files.

Reviewed by:	gnn (previous version)
Obtained from:	Netflix, Inc.
Relnotes:	yes
Differential Revision:	https://reviews.freebsd.org/D11085
</content>
</entry>
</feed>
