From owner-cvs-all@FreeBSD.ORG Mon Apr 19 23:33:40 2004 Return-Path: Delivered-To: cvs-all@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 8826C16A4CE; Mon, 19 Apr 2004 23:33:40 -0700 (PDT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 81DC743D5E; Mon, 19 Apr 2004 23:33:40 -0700 (PDT) (envelope-from silby@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.10/8.12.10) with ESMTP id i3K6XeGe067859; Mon, 19 Apr 2004 23:33:40 -0700 (PDT) (envelope-from silby@repoman.freebsd.org) Received: (from silby@localhost) by repoman.freebsd.org (8.12.10/8.12.10/Submit) id i3K6XdXn067858; Mon, 19 Apr 2004 23:33:39 -0700 (PDT) (envelope-from silby) Message-Id: <200404200633.i3K6XdXn067858@repoman.freebsd.org> From: Mike Silbersack Date: Mon, 19 Apr 2004 23:33:39 -0700 (PDT) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/sys/netinet tcp_subr.c tcp_var.h X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Apr 2004 06:33:40 -0000 silby 2004/04/19 23:33:39 PDT FreeBSD src repository Modified files: sys/netinet tcp_subr.c tcp_var.h Log: 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. Revision Changes Path 1.188 +53 -2 src/sys/netinet/tcp_subr.c 1.103 +1 -0 src/sys/netinet/tcp_var.h