summaryrefslogtreecommitdiffstats
path: root/sys/netinet/tcp_var.h
diff options
context:
space:
mode:
authorsilby <silby@FreeBSD.org>2004-04-20 06:33:39 +0000
committersilby <silby@FreeBSD.org>2004-04-20 06:33:39 +0000
commit743d110741f9521e52a1d3b69c448e46fb50d830 (patch)
tree02680a4a1a5e4a9cca09b31a90abd515aba9f3f9 /sys/netinet/tcp_var.h
parent9305b3ea2a8c7bf9cefb6eb54f20ee1ba3641508 (diff)
downloadFreeBSD-src-743d110741f9521e52a1d3b69c448e46fb50d830.zip
FreeBSD-src-743d110741f9521e52a1d3b69c448e46fb50d830.tar.gz
Enhance our RFC1948 implementation to perform better in some pathlogical
TIME_WAIT recycling cases I was able to generate with http testing tools. In short, as the old algorithm relied on ticks to create the time offset component of an ISN, two connections with the exact same host, port pair that were generated between timer ticks would have the exact same sequence number. As a result, the second connection would fail to pass the TIME_WAIT check on the server side, and the SYN would never be acknowledged. I've "fixed" this by adding random positive increments to the time component between clock ticks so that ISNs will *always* be increasing, no matter how quickly the port is recycled. Except in such contrived benchmarking situations, this problem should never come up in normal usage... until networks get faster. No MFC planned, 4.x is missing other optimizations that are needed to even create the situation in which such quick port recycling will occur.
Diffstat (limited to 'sys/netinet/tcp_var.h')
-rw-r--r--sys/netinet/tcp_var.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/netinet/tcp_var.h b/sys/netinet/tcp_var.h
index ed3dec2..c85fecc 100644
--- a/sys/netinet/tcp_var.h
+++ b/sys/netinet/tcp_var.h
@@ -518,6 +518,7 @@ struct tcpcb *
void tcp_drain(void);
void tcp_fasttimo(void);
void tcp_init(void);
+void tcp_fini(void *);
void tcp_reass_init(void);
void tcp_input(struct mbuf *, int);
u_long tcp_maxmtu(struct in_conninfo *);
OpenPOWER on IntegriCloud