From owner-freebsd-net Wed Feb 19 14:17:58 2003 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 6DB2037B405 for ; Wed, 19 Feb 2003 14:17:56 -0800 (PST) Received: from anduril.ncsa.uiuc.edu (anduril.ncsa.uiuc.edu [141.142.102.8]) by mx1.FreeBSD.org (Postfix) with ESMTP id 6819543FE1 for ; Wed, 19 Feb 2003 14:17:53 -0800 (PST) (envelope-from jdugan@anduril.ncsa.uiuc.edu) Received: by anduril.ncsa.uiuc.edu (Postfix, from userid 501) id 534EB2A3EA0; Wed, 19 Feb 2003 16:19:01 -0600 (CST) Date: Wed, 19 Feb 2003 16:19:01 -0600 From: Jon Dugan To: freebsd-net@freebsd.org Subject: Web100 for FreeBSD Message-ID: <20030219221900.GA2596@ncsa.uiuc.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4i Sender: owner-freebsd-net@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org I am funded to do the FreeBSD implementation of the Web100[1] kernel intrumentation set (KIS) and already have a small portion of the KIS implemented. I have several questions and since I have very little kernel programming experience I would appreciate any input that the more experienced folks are willing to offer. My goal with this code is to get it accepted into the FreeBSD tree. So any advice or critque of implementation or style is actively solicited. The Linux implementation exposes the KIS variables through the /proc filesystem. I have chosen to use the sysctl interface for my initial implementation. So far this is working out well, I am reading 4 variables about each connection via sysctl. Is sysctl the right way to get this information? We may poll some of these variables on a second or sub second interval. In order to tune a TCP connection it will be necessary to write to some of the sysctl OIDs. AFAIK only root can write to sysctl. I can see two alternatives to solving this problem: 1) using a proxy daemon which runs as root to handle the updates or 2) add a permissions system to sysctl. Option 2 seems like quite a lot of work and I'm not certain it is generally useful. Any thoughts? We are interested in receiving asychronous notification of events within a particular TCP session in userland. I am planning to use the kqueue mechanism to provide this. Patches relative to 5.0-RELEASE are available at: http://rivendell.ncsa.uiuc.edu/~jdugan/web100bsd/ In truth there isn't much to the patches yet, but it demonstrates the direction I have taken thus far. 1. Some background Web100: The Web100 project is concerned with improving TCP performance for typical TCP sessions. As we all know getting TCP to perform well over long, fat pipes tends to require quite a bit of tuning. Web100 is an effort to automatically tune TCP connections. To that end Web100 has developed a TCP Extended Statistic MIB to define what instruments in a TCP stack are useful for understanding the behavior of TCP sessions. The KIS is the implementation of this MIB for a particular TCP implementation, currently the only fully developed KIS is for Linux. With the information exposed via the KIS the TCP session can be automatically tuned by a user space process. Information gleaned from the KIS is also useful to diagnosing many common problems with TCP performance. The Web100 website has further information, including the code for the Linux implmentation and an IETF draft of the TCP Extended Statistic MIB. http://www.web100.org/ Jon -- Jon Dugan | Senior Network Engineer, NCSA Network Research jdugan@ncsa.uiuc.edu | 269 CAB, 605 E Springfield, Champaign, IL 61820 217-244-7715 | http://www.ncsa.uiuc.edu/~jdugan/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message