Bug 220677 - [patch] Add support for TCP ABE draft-khademi-tcpm-alternativebackoff-ecn
Summary: [patch] Add support for TCP ABE draft-khademi-tcpm-alternativebackoff-ecn
Status: Closed FIXED
Alias: None
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: CURRENT
Hardware: Any Any
: --- Affects Only Me
Assignee: freebsd-net (Nobody)
URL:
Keywords: patch
Depends on:
Blocks:
 
Reported: 2017-07-12 14:36 UTC by Tom Jones
Modified: 2019-02-03 13:55 UTC (History)
3 users (show)

See Also:


Attachments
Patch (4.33 KB, patch)
2017-07-12 14:36 UTC, Tom Jones
no flags Details | Diff
Patch updated with Copyright for Grenville Armitage (4.57 KB, patch)
2017-07-13 08:35 UTC, Tom Jones
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Tom Jones 2017-07-12 14:36:12 UTC
Created attachment 184306 [details]
Patch

This patch adds support Alternative Backoff ECN for TCP with the New Reno
congestion control module. TCP ABE is described in
https://tools.ietf.org/html/draft-khademi-tcpm-alternativebackoff-ecn-01

ABE updates the TCP sender-side reaction to congestion notification received
via Explicit Congestion Notifiction (ECN) marks. From the Abstract in the
draft:

    The updated method reduces FlightSize in Congestion Avoidance by a
    smaller amount than the TCP reaction to loss. The intention is to
    achieve good throughput when the queue at the bottleneck is smaller
    than the bandwidth-delay-product of the connection. This is more
    likely when an Active Queue Management (AQM) mechanism has used ECN
    to CE-mark a packet, than when a packet was lost.

This patch adds 3 new sysctl values, one to control the use of ABE and two new
cc controls under net.inet.tcp.cc.newreno to control the loss and ecn response
factors. These controls are intended to aid future experimentation and research
in this area.

net.inet.tcp.abe:
    Toggles whether a transport uses the new abe conditions. Currently only
    implemented for New Reno.

net.inet.tcp.cc.newreno.beta_ecn:
    The factor used to change FlightSize in response to an ecn mark, defaults
    to 0.8 as described in the draft.

net.inet.tcp.cc.newreno.beta_loss:
    The factor used to change FlightSize in response to a loss event, defaults
    to 0.5 as described in the draft.

This patch is a port of the same functionality implemented by Naeem Khademi and
is available here:
http://heim.ifi.uio.no/~naeemk/research/ABE/diff-0d38090e881d-newrenoVB-7jan15.txt
Comment 1 Tom Jones 2017-07-13 08:35:18 UTC
Created attachment 184319 [details]
Patch updated with Copyright for Grenville Armitage
Comment 2 Lawrence Stewart freebsd_committer freebsd_triage 2017-07-16 10:42:16 UTC
Please open a code review for this work at reviews.freebsd.org with "transport" and "lstewart" listed as reviewers.
Comment 3 Michael Tuexen freebsd_committer freebsd_triage 2019-02-03 13:55:29 UTC
This was handled in review D11616 and committed in base r331214. Therefore closing it.