H-TCP
H-TCP is another implementation of TCP with an optimized congestion control algorithm for high speed networks with high latency (LFN: Long Fat Networks). It was created by researchers at the Hamilton Institute in Ireland.
H-TCP is an optional module in Linux since kernel version 2.6, and has been implemented for FreeBSD 7.[1]
Principles of operation
H-TCP is a loss-based algorithm, using additive-increase/multiplicative-decrease (AIMD) to control TCP's congestion window. It is one of many TCP congestion avoidance algorithms which seeks to increase the aggressiveness of TCP on high bandwidth-delay product (BDP) paths, while maintaining "TCP friendliness" for small BDP paths. H-TCP increases its aggressiveness (in particular, the rate of additive increase) as the time since the previous loss increases. This avoids the problem encountered by HSTCP and BIC TCP of making flows more aggressive if their windows are already large. Thus, new flows can be expected to converge to fairness faster under HTCP than HSTCP and BIC TCP.
Strengths and weaknesses
A side effect of increasing the rate of increase as the time since the last packet loss increases, is that flows which happen not to lose a packet when other flows do, can then take an unfair portion of the bandwidth. Techniques to overcome this are currently in the research phase.
The Linux implementation of H-TCP also has an option for avoiding "RTT unfairness", which occurs in TCP Reno, but is a particular problem for most high speed variants of TCP (although not FAST TCP).
Name
The algorithm was initially introduced as H-TCP, without mention of what the 'H' stands for. However, it is often called "Hamilton TCP", for the Hamilton Institute where it was created.
References
- Armitage, Grenville; Stewart, Lawrence; Welzl, Michael; Healy, James (2008). "An independent H-TCP implementation under FreeBSD 7.0". ACM SIGCOMM Computer Communication Review. 38 (3): 27–38. doi:10.1145/1384609.1384613. S2CID 7175592.