From owner-freebsd-net@FreeBSD.ORG Thu Apr 30 13:04:40 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 AC71EFDA for ; Thu, 30 Apr 2015 13:04:40 +0000 (UTC) Received: from mail-lb0-x233.google.com (mail-lb0-x233.google.com [IPv6:2a00:1450:4010:c04::233]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 1BBBA16BC for ; Thu, 30 Apr 2015 13:04:40 +0000 (UTC) Received: by lbbzk7 with SMTP id zk7so44027040lbb.0 for ; Thu, 30 Apr 2015 06:04:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=0weHlHhyBeV4WPMnH92qUfvCSeb0Flv5i2CqUjS0lpk=; b=OcPRJA+2QexcqrhK5jiHEd3wxF8gsbb3WNCOZydRgvkXIwKQg0pkOPRNKxoIfaAKuv btp4eOIoxBvBcD9XwbtIuBXsSCJ/T/00fuc4hlnBguVZ6ol7Kn9HkxktTIFt1prLUA4q 3DwZNsS8kvV3BwhtXc5DcPB/G2XMqoHP4evuiTscSt7LzvdTFLlVpOCYOWbJUdKPYdKi U6e8ihlBqPAHqiCBn7k1woBavNsVA3sv6yvBWAPldZ9E3bu2ofJHH0H8OkljuPSYbpkX 9jmhtqrDp96NAoLCMi2PhxPJRVc3jJUS7/QVGcB6co9dDXtOdl92eDEHTvzjFAz9jqd3 sb/w== MIME-Version: 1.0 X-Received: by 10.152.37.201 with SMTP id a9mr3665336lak.120.1430399078160; Thu, 30 Apr 2015 06:04:38 -0700 (PDT) Received: by 10.114.202.229 with HTTP; Thu, 30 Apr 2015 06:04:38 -0700 (PDT) In-Reply-To: References: <5535945F.90504@swin.edu.au> Date: Thu, 30 Apr 2015 16:04:38 +0300 Message-ID: Subject: Re: Congestion Control Modification From: Karlis Laivins To: George Neville-Neil Cc: grenville armitage , freebsd-net@freebsd.org Content-Type: text/plain; charset=UTF-8 X-Content-Filtered-By: Mailman/MimeDel 2.1.20 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 13:04:40 -0000 Hello, If I will be able to implement the idea described in the publication correctly, I will share the source code. At the moment, though, I am still far away from the implementation, since I have yet to solve the issue of how to get the One Way Delay for the ACK message (the time it takes ACK to arrive from receiver of the ACK'ed data sender) correctly. Best Regards, Karlis On Thu, Apr 30, 2015 at 3:51 PM, George Neville-Neil wrote: > 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 < >> garmitage@swin.edu.au> >> 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" >> >