summaryrefslogtreecommitdiff
path: root/games/atc
diff options
context:
space:
mode:
Diffstat (limited to 'games/atc')
0 files changed, 0 insertions, 0 deletions
dfadf4139c48e02d25e248a148c5a6b494'>Reduces the resources demanded by TCP sessions in TIME_WAIT-state usingdyoung 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. 2010-08-10Support carp. It would be nice to support this as its own component,pooka but there's about 1000 lines of #ifdef which disagree with my wish. 2010-07-13Split-off IPv4 re-assembly mechanism into a separate module. Abstractrmind into ip_reass_init(), ip_reass_lookup(), etc (note: abstraction is not yet complete). No functional changes to the actual mechanism. OK matt@ 2010-02-16Globally define -Wno-pointer-sign, as it has become a pointlesspooka exercise of "add it to every Makefile individually". XXX: should autosynchronize with the rest of the kernel buildflags in sys/conf/Makefile.kern.inc. 2009-05-26Support IPv6 in rump. I'd have liked to introduce a netinet6pooka component, but due to ifdef happiness permeating the sources, it's a compile decision for now, so netinet pulls in both inet and inet6. One issue, one single issue: the loopback interface still needs to be created for IPv6 to work. I have patches to take care of it automatically if the appropriate component (net) is present, but they require a bit more testing before commit. 2009-02-03Better define GATEWAY in opt_gateway.h instead of the Makefile sopooka UPDATE builds don't go all coocoo. 2009-02-01enable GATEWAYpooka 2008-10-16Deal with the ld.so/linkset brokenness and compile all of libnetpooka and libnetinet into a big bunch for now. If they were separate libraries, the DOMAIN_DEFINE() in the latter on the linkline would not get noticed at "boot" time because of the abovementioned brokenness. One of these days I'll add code to dlopen() the libraries and resplit them, but this will allow things to work until then.