TCP-LP-MOD release 1.6

TCP Low Priority (TCP-LP) is a distributed algorithm whose goal is to utilize network bandwidth, by using the excess portion of bandwidth. Compare to fair-sharing TCP, TCP-LP is non-intrusive to bandwidth competition and more flexible to control the priority of different processes.

TCP Low Priority module (TCP-LP-MOD) is an implementation of TCP-LP, as pluggable TCP congestion control module, for Linux kernel after version 2.6.14.

TCP-LP-MOD release 1.6 is patch version to Linux kernel 2.6.18. This release make sure no oops will happened on tcp_lp_remote_hz_estimator() due to return zero. It is highly recommended to apply this patch if you are using TCP-LP-MOD.

To apply this patch, please run the following command within your kernel source tree:

bzcat path_to_your_patch/tcp-lp-1.6.patch.bz2 | patch -p1

You may find more information in our homepage
and download release 1.6 in here

TCP Low Priority (TCP-LP)

Service prioritization among different traffic classes is an important goal for the future Internet. Conventional approaches to solving this problem consider the existing best-effort class as the low-priority class, and attempt to develop mechanisms that provide "better-than-best-effort" service.

Aleksandar Kuzmanovic and Edward W. Knightly explore the opposite approach, and devise a new distributed algorithm to realize a low-priority service (as compared to the existing best effort) from the network endpoints. To this end, they develop TCP Low Priority (TCP-LP), a distributed algorithm whose goal is to utilize only the excess network bandwidth as compared to the "fair share" of bandwidth as targeted by TCP.

The key mechanisms unique to TCP-LP congestion control are the use of one-way packet delays for congestion indications and a TCP-transparent congestion avoidance policy.

See TCP-LP Home Page for their implementation.

TCP Low Priority module (TCP-LP-MOD)

As of 2.6.13, Linux supports pluggable congestion control algorithms. Due
to the limitation of the API, we take the following changes from the original
TCP-LP implementation:

  • We use newReno in most core CA handling. Only add some checking within
    cong_avoid.

  • Add Error correcting in remote HZ, therefore remote HZ will be keeped on
    checking and updating.

  • Handle calculation of One-Way-Delay (OWD) within rtt_sample, sicne OWD
    have a similar meaning as RTT. Also correct the buggy formular.

  • Handle reaction for Early Congestion Indication (ECI) within pkts_acked,
    as mentioned within pseudo code.

  • Handle OWD in relative format, where local time stamp will in
    tcp_time_stamp format.