From owner-freebsd-net@FreeBSD.ORG Wed Sep 13 15:19:06 2006 Return-Path: X-Original-To: freebsd-net@freebsd.org Delivered-To: freebsd-net@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id D1C5616A416; Wed, 13 Sep 2006 15:19:06 +0000 (UTC) (envelope-from is@rambler-co.ru) Received: from yam.park.rambler.ru (yam.park.rambler.ru [81.19.64.116]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3F40443D6A; Wed, 13 Sep 2006 15:19:05 +0000 (GMT) (envelope-from is@rambler-co.ru) Received: from is.park.rambler.ru (is.park.rambler.ru [81.19.64.102]) by yam.park.rambler.ru (8.13.6/8.13.3) with ESMTP id k8DFJ4N1055507; Wed, 13 Sep 2006 19:19:04 +0400 (MSD) (envelope-from is@rambler-co.ru) Date: Wed, 13 Sep 2006 19:19:04 +0400 (MSD) From: Igor Sysoev X-X-Sender: is@is.park.rambler.ru To: Andre Oppermann In-Reply-To: <44FAE332.4010209@freebsd.org> Message-ID: <20060913190241.S13138@is.park.rambler.ru> References: <44FAE332.4010209@freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: freebsd-net@freebsd.org, silby@freebsd.org Subject: Re: Improved TCP syncookie implementation X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Sep 2006 15:19:06 -0000 On Sun, 3 Sep 2006, Andre Oppermann wrote: > I've pretty much rewritten our implementation of TCP syncookies to get > rid of some locking in TCP syncache and to improve their functionality. > > The RFC1323 timestamp option is used to carry the full TCP SYN+SYN/ACK > optional feature information. This means that a FreeBSD host may run > with syncookies only and not degrade TCP connections made through it. > All important TCP connection setup negotiated options are preserved > (send/receive window scaling, SACK, MSS) without storing any state on > the host during the SYN-SYN/ACK phase. As a nice side effect the > timestamps we respond with are randomized instead of directly using > ticks (which reveals out uptime). As I understand syncache is used to retransmit SYN/ACK. What would be if 1) a client sent SYN, 2) we sent SYN/ACK with cookie, 3) the client sent ACK, but the ACK was lost ? I suppose the client will see timed out error. Igor Sysoev http://sysoev.ru/en/