freebsd-dev/sys
Andrew Gallatin d4c22202e6 Rework IPV6 TCP path MTU discovery to match IPv4
- Re-write tcp_ctlinput6() to closely mimic the IPv4 tcp_ctlinput()

- Now that tcp_ctlinput6() updates t_maxseg, we can allow ip6_output()
  to send TCP packets without looking at the tcp host cache for every
  single transmit.

- Make the icmp6 code mimic the IPv4 code & avoid returning
  PRC_HOSTDEAD because it is so expensive.

Without these changes in place, every TCP6 pmtu discovery or host
unreachable ICMP resulted in a call to in6_pcbnotify() which walks the
tcbinfo table with the write lock held.  Because the tcbinfo table is
shared between IPv4 and IPv6, this causes huge scalabilty issues on
servers with lots of (~100K) TCP connections, to the point where even
a small percent of IPv6 traffic had a disproportionate impact on
overall throughput.

Reviewed by:	bz, rrs, ae (all earlier versions), lstewart (in Netflix's tree)
Sponsored by:		Netflix
Differential Revision:	https://reviews.freebsd.org/D7272
2016-08-01 17:02:21 +00:00
..
amd64 amd64: implement pagezero using rep stos 2016-07-31 11:34:08 +00:00
arm Split out the FDT parts of the GICv2 interrupt controller driver. This will 2016-08-01 16:29:04 +00:00
arm64 Add a kernel variable to let the user to select their preferred order 2016-08-01 12:17:44 +00:00
boot Improve boot loader quote parsing 2016-07-30 17:53:37 +00:00
bsm
cam Move protocol specific stuff into a linker set object that's 2016-07-28 22:55:21 +00:00
cddl Conditionalize code which defines sysctls per _KERNEL #ifdef guard 2016-07-31 06:34:49 +00:00
compat Don't create pointless backups of generated files in "make sysent". 2016-07-28 21:29:04 +00:00
conf Split out the FDT parts of the GICv2 interrupt controller driver. This will 2016-08-01 16:29:04 +00:00
contrib Remove usage of _WITH_DPRINTF 2016-07-30 01:16:06 +00:00
crypto
ddb Rewrite subr_sleepqueue.c use of callouts to not depend on the 2016-07-28 09:09:55 +00:00
dev Sync CFE interface with upstream cfe-1.4.2 release. 2016-08-01 16:26:08 +00:00
fs Remove write-only variable. 2016-07-29 12:15:55 +00:00
gdb
geom Do not invoke resize method if geom is being withered. 2016-07-25 09:12:08 +00:00
gnu
i386 Don't create pointless backups of generated files in "make sysent". 2016-07-28 21:29:04 +00:00
isa
kern locks: change sleep_cnt and spin_cnt types to u_int 2016-07-31 12:11:55 +00:00
kgssapi
libkern
mips [mips/broadcom] Fetch UART console configuration from CFE. 2016-08-01 16:29:32 +00:00
modules netgraph module for reconstructing checksums 2016-08-01 12:09:04 +00:00
net Hide the boottime and bootimebin globals, provide the getboottime(9) 2016-07-27 11:08:59 +00:00
net80211
netgraph netgraph module for reconstructing checksums 2016-08-01 12:09:04 +00:00
netinet Rework IPV6 TCP path MTU discovery to match IPv4 2016-08-01 17:02:21 +00:00
netinet6 Rework IPV6 TCP path MTU discovery to match IPv4 2016-08-01 17:02:21 +00:00
netipsec
netnatm
netpfil Hide the boottime and bootimebin globals, provide the getboottime(9) 2016-07-27 11:08:59 +00:00
netsmb
nfs Hide the boottime and bootimebin globals, provide the getboottime(9) 2016-07-27 11:08:59 +00:00
nfsclient
nfsserver
nlm
ofed sdp: Destroy the RDMA ID after destroying the connection's queue pair. 2016-07-29 21:03:02 +00:00
opencrypto
pc98
powerpc Use label math instead of hard-coding offsets for return addresses. 2016-07-23 02:27:42 +00:00
riscv
rpc Hide the boottime and bootimebin globals, provide the getboottime(9) 2016-07-27 11:08:59 +00:00
security
sparc64
sys Remove BSD and USL copyright and update license block in in_prot.c, as the 2016-07-28 18:39:30 +00:00
teken
tests
tools
ufs Ensure that the UFS directory vnode' vm_object is properly sized 2016-07-20 14:40:56 +00:00
vm Use vm_page_undirty() instead of manually setting a page field. 2016-07-29 21:05:37 +00:00
x86 Revert r291022: x86/intr: allow mutex recursion in intr_remove_handler 2016-07-29 16:35:58 +00:00
xdr
xen
Makefile