From owner-freebsd-net@FreeBSD.ORG Thu Apr 30 12:52:01 2015 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1824D9CC for ; Thu, 30 Apr 2015 12:52:01 +0000 (UTC) Received: from vps.hungerhost.com (vps.hungerhost.com [216.38.53.176]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id E3FB814FD for ; Thu, 30 Apr 2015 12:52:00 +0000 (UTC) Received: from global-1-26.nat.csx.cam.ac.uk ([131.111.184.26]:25945 helo=[172.17.158.255]) by vps.hungerhost.com with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.82) (envelope-from ) id 1Ynnwc-0004y7-U4; Thu, 30 Apr 2015 08:51:59 -0400 From: "George Neville-Neil" To: "Karlis Laivins" Cc: "grenville armitage" , freebsd-net@freebsd.org Subject: Re: Congestion Control Modification Date: Thu, 30 Apr 2015 13:51:58 +0100 Message-ID: In-Reply-To: References: <5535945F.90504@swin.edu.au> MIME-Version: 1.0 Content-Type: text/plain; format=flowed X-Mailer: MailMate (1.9.1r5084) X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - vps.hungerhost.com X-AntiAbuse: Original Domain - freebsd.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - neville-neil.com X-Get-Message-Sender-Via: vps.hungerhost.com: authenticated_id: gnn@neville-neil.com X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 30 Apr 2015 12:52:01 -0000 Are you planning to put the source to this up on a repo (github) or send along patches? It would be good to get a look at this new algorithm. Thanks, George On 21 Apr 2015, at 5:30, Karlis Laivins wrote: > Hi, > > Thank you very much for such a comprehensive description of how to > properly > create a loadable Kernel module, this does the trick - I was able to > create > the module successfully, load it into Kernel and set it as the > congestion > control algorithm used via sysctl net.inet.tcp.cc.algorithm=new (new - > the > name of my test module). > > Best Regards, > Karlis > > On Tue, Apr 21, 2015 at 3:05 AM, grenville armitage > > wrote: > >> Hi, >> >> >> On 04/18/2015 16:59, Karlis Laivins wrote: >> >>> Hello, >>> >>> I have read an interesting publication about a proposed modification >>> of >>> TCP >>> Congestion Control algorithm that would allow to improve it (the CC) >>> by >>> dynamic bandwidth estimation. The idea seems so interesting that I >>> would >>> like to try to implement it by modifying the NewReno code. >>> >>> Do I understand correctly that to do the above stated, I would >>> create a >>> copy of source file (in my case - cc_newreno.c) located in >>> /usr/src/sys/ >>> and rename it to, for example, cc_newreno_test.c and make changes to >>> it? >>> How would I then compile it, and how would I create a >>> newreno_test.ko file >>> that can be loaded into Kernel and tested? >>> >>> Thank you in advance for your answers! >>> >> >> In case this helps shed some (probably incomplete) light, here are >> the >> steps >> I took late last year to make a modified version of NewReno: >> >> I start with copying the newreno module under >> sys/netinet/cc/cc_newreno.c >> as a template. The new source file will be called newrenoVarBeta.c >> >> /usr/src/sys/netinet/cc % cp cc_newreno.c cc_newrenoVarBeta.c >> /usr/src/sys/netinet/cc % >> >> Then create a modules definition based on >> /usr/src/sys/modules/cc/cc_cubic >> (because there isn't one for newreno per se) >> >> /usr/src/sys/netinet/cc % cd /usr/src/sys/modules/cc >> /usr/src/sys/modules/cc % mkdir cc_newrenoVarBeta >> /usr/src/sys/modules/cc % cp cc_cubic/Makefile cc_newrenoVarBeta/ >> /usr/src/sys/modules/cc % >> >> Tweak the cc_newrenoVarBeta/Makefile to say: >> >> KMOD= cc_newrenoVarBeta >> SRCS= cc_newrenoVarBeta.c >> >> Made my changes to cc_newrenoVarBeta.c (including changing the >> module's >> name from 'newreno' to something else) >> >> Then built/installed the new module with: >> >> /usr/src/sys/netinet/cc % cd >> /usr/src/sys/modules/cc/cc_newrenoVarBeta >> /usr/src/sys/modules/cc % make clean && make && make install >> [..build and install output..] >> /usr/src/sys/modules/cc % >> >> All being well, cc_newrenoVarBeta.ko should now exist under >> /boot/kernel >> >> Then use 'kldload cc_newrenoVarBeta.ko' to load your new CC algorithm >> >> If all goes well, your new module will appear (with whatever name you >> gave >> it) in the sysctl net.inet.tcp.cc.available list. Don't forget to >> actually >> select your new module with sysctl net.inet.tcp.cc.algorithm when >> running >> experiments. >> >> cheers, >> gja >> >> >> >> _______________________________________________ >> freebsd-net@freebsd.org mailing list >> http://lists.freebsd.org/mailman/listinfo/freebsd-net >> To unsubscribe, send any mail to >> "freebsd-net-unsubscribe@freebsd.org" >> > _______________________________________________ > freebsd-net@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-net > To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org"