2014-12-02 22:35:27 +03:00
|
|
|
# $NetBSD: files.netinet,v 1.25 2014/12/02 19:35:27 christos Exp $
|
2002-10-11 02:45:45 +04:00
|
|
|
|
|
|
|
defflag opt_tcp_debug.h TCP_DEBUG
|
|
|
|
defparam opt_tcp_debug.h TCP_NDEBUG
|
2008-01-26 00:12:10 +03:00
|
|
|
defflag opt_inet.h INET INET6 TCP_SIGNATURE
|
2006-11-13 08:13:38 +03:00
|
|
|
TCP_OUTPUT_COUNTERS TCP_REASS_COUNTERS IPSELSRC
|
2002-10-11 02:45:45 +04:00
|
|
|
defparam opt_inet_conf.h SUBNETSARELOCAL HOSTZEROBROADCAST
|
|
|
|
|
|
|
|
defflag MROUTING
|
2004-09-05 03:29:44 +04:00
|
|
|
defflag PIM
|
2002-10-11 02:45:45 +04:00
|
|
|
defflag TCP_COMPAT_42
|
|
|
|
|
|
|
|
defparam opt_tcp_space.h TCP_RECVSPACE TCP_SENDSPACE
|
|
|
|
|
|
|
|
defflag opt_inet_csum.h INET_CSUM_COUNTERS TCP_CSUM_COUNTERS
|
|
|
|
UDP_CSUM_COUNTERS
|
|
|
|
|
2006-10-09 20:27:07 +04:00
|
|
|
defparam opt_tcp_congctl.h TCP_CONGCTL_DEFAULT
|
|
|
|
|
2002-10-11 02:45:45 +04:00
|
|
|
file netinet/igmp.c inet
|
|
|
|
file netinet/in.c inet
|
2006-11-25 21:41:36 +03:00
|
|
|
file netinet/in_offload.c inet
|
2002-10-11 02:45:45 +04:00
|
|
|
file netinet/in_pcb.c inet
|
2014-12-02 22:35:27 +03:00
|
|
|
file netinet/in_print.c
|
2002-10-11 02:45:45 +04:00
|
|
|
file netinet/in_proto.c inet
|
2006-11-13 08:13:38 +03:00
|
|
|
file netinet/in_selsrc.c inet & ipselsrc
|
2002-10-11 02:45:45 +04:00
|
|
|
file netinet/ip_flow.c inet & gateway
|
|
|
|
file netinet/ip_icmp.c inet
|
2003-11-27 00:26:56 +03:00
|
|
|
file netinet/ip_id.c inet
|
2002-10-11 02:45:45 +04:00
|
|
|
file netinet/ip_input.c inet
|
|
|
|
file netinet/ip_mroute.c inet & mrouting
|
|
|
|
file netinet/ip_output.c inet
|
2010-07-14 02:16:10 +04:00
|
|
|
file netinet/ip_reass.c inet
|
2002-10-11 02:45:45 +04:00
|
|
|
file netinet/raw_ip.c inet
|
|
|
|
|
2005-01-13 22:09:40 +03:00
|
|
|
file netinet/tcp_debug.c (inet | inet6) & tcp_debug
|
2002-10-11 02:45:45 +04:00
|
|
|
file netinet/tcp_input.c inet | inet6
|
|
|
|
file netinet/tcp_output.c inet | inet6
|
Commit TCP SACK patches from Kentaro A. Karahone's patch at:
http://www.sigusr1.org/~kurahone/tcp-sack-netbsd-02152005.diff.gz
Fixes in that patch for pre-existing TCP pcb initializations were already
committed to NetBSD-current, so are not included in this commit.
The SACK patch has been observed to correctly negotiate and respond,
to SACKs in wide-area traffic.
There are two indepenently-observed, as-yet-unresolved anomalies:
First, seeing unexplained delays between in fast retransmission
(potentially explainable by an 0.2sec RTT between adjacent
ethernet/wifi NICs); and second, peculiar and unepxlained TCP
retransmits observed over an ath0 card.
After discussion with several interested developers, I'm committing
this now, as-is, for more eyes to use and look over. Current hypothesis
is that the anomalies above may in fact be due to link/level (hardware,
driver, HAL, firmware) abberations in the test setup, affecting both
Kentaro's wired-Ethernet NIC and in my two (different) WiFi NICs.
2005-02-28 19:20:59 +03:00
|
|
|
file netinet/tcp_sack.c inet | inet6
|
2002-10-11 02:45:45 +04:00
|
|
|
file netinet/tcp_subr.c inet | inet6
|
|
|
|
file netinet/tcp_timer.c inet | inet6
|
|
|
|
file netinet/tcp_usrreq.c inet | inet6
|
2006-10-09 20:27:07 +04:00
|
|
|
file netinet/tcp_congctl.c inet | inet6
|
Reduces the resources demanded by TCP sessions in TIME_WAIT-state using
methods called Vestigial Time-Wait (VTW) and Maximum Segment Lifetime
Truncation (MSLT).
MSLT and VTW were contributed by Coyote Point Systems, Inc.
Even after a TCP session enters the TIME_WAIT state, its corresponding
socket and protocol control blocks (PCBs) stick around until the TCP
Maximum Segment Lifetime (MSL) expires. On a host whose workload
necessarily creates and closes down many TCP sockets, the sockets & PCBs
for TCP sessions in TIME_WAIT state amount to many megabytes of dead
weight in RAM.
Maximum Segment Lifetimes Truncation (MSLT) assigns each TCP session to
a class based on the nearness of the peer. Corresponding to each class
is an MSL, and a session uses the MSL of its class. The classes are
loopback (local host equals remote host), local (local host and remote
host are on the same link/subnet), and remote (local host and remote
host communicate via one or more gateways). Classes corresponding to
nearer peers have lower MSLs by default: 2 seconds for loopback, 10
seconds for local, 60 seconds for remote. Loopback and local sessions
expire more quickly when MSLT is used.
Vestigial Time-Wait (VTW) replaces a TIME_WAIT session's PCB/socket
dead weight with a compact representation of the session, called a
"vestigial PCB". VTW data structures are designed to be very fast and
memory-efficient: for fast insertion and lookup of vestigial PCBs,
the PCBs are stored in a hash table that is designed to minimize the
number of cacheline visits per lookup/insertion. The memory both
for vestigial PCBs and for elements of the PCB hashtable come from
fixed-size pools, and linked data structures exploit this to conserve
memory by representing references with a narrow index/offset from the
start of a pool instead of a pointer. When space for new vestigial PCBs
runs out, VTW makes room by discarding old vestigial PCBs, oldest first.
VTW cooperates with MSLT.
It may help to think of VTW as a "FIN cache" by analogy to the SYN
cache.
A 2.8-GHz Pentium 4 running a test workload that creates TIME_WAIT
sessions as fast as it can is approximately 17% idle when VTW is active
versus 0% idle when VTW is inactive. It has 103 megabytes more free RAM
when VTW is active (approximately 64k vestigial PCBs are created) than
when it is inactive.
2011-05-03 22:28:44 +04:00
|
|
|
file netinet/tcp_vtw.c inet | inet6
|
2002-10-11 02:45:45 +04:00
|
|
|
|
|
|
|
file netinet/udp_usrreq.c inet | inet6
|
2012-06-25 19:28:38 +04:00
|
|
|
file netinet/portalgo.c inet | inet6
|