Hamilton TCP (H-TCP), developed by Hamilton Institute, is an enhancement to existing TCP congestion control protocol, with good mathematic and empirical basis. The authors makes an assumption that their improvement should behave as regular TCP in standard LAN and WAN networks where RTT and link capacity are not extremely high. But in the long distant fast networks, H-TCP is far more aggressive and more flexible while adjusting to available bandwidth and avoiding packet losses. Therefore two modes are used for congestion control and mode selection depends on the time since the last experienced congestion. In regular TCP window control algorithm, the window is increased by adding a constant value α and decreased by multiplying by β. The corresponding values are by default equals to 1 and 0.5. In H-TCP case the window estimation is a bit more complex, because both factors are not constant values, but are calculated during transmission.
The parameter values are estimated as follows. For each acknowledgment set:
On each congestion event set:
- Δ_i is the time that elapsed since the last congestion experienced by i'th source,
- Δ_L is the threshold for switching between fast and slow modes,
- B_i(k) is the throughput of flow i immediately before the k'th congestion event,
- RTT_max,i and RTT_min,i are maximum and minimum round trip time values for the i'th flow.
The α value depends on the time between experienced congestion events, while β depends on RTT and achieved bandwidth values. The constant values, as well as the Δ_L value, can be modified, in order to adjust the algorithm behavior to user expectations, but the default values are estimated empirically and seem to be the most suitable in most cases. The figures below present the behavior of congestion window, throughput and RTT values during tests performed by the H-TCP authors. In the first case β value was set to 0.5, in the second case the adaptive approach (explained with the equations above) was used. The throughput in the second case is far more stable and is closing to its maximal value.
H-TCP congestion window and throughput behavior (source: �H-TCP: TCP for high-speed and long-distance networks�, D.Leith, R.Shorten).
Another advantage of H-TCP is fairness and friendliness, which means that the algorithm is not "greedy", and will not consume the whole link capacity, but is able to fairly share the bandwidth with either another H-TCP like transmissions or any other TCP-like transmissions.
H-TCP congestion window control improves the dynamic of sending ratio and therefore provides better overall throughput value than regular TCP implementation. On the Hamilton Institute web page (http://www.hamilton.ie/net/htcp/
) more information is available, including papers, test results and algorithm implementations for Linux kernels 2.4 and 2.6.
- Institute web page about H-TCP - usually contains an up-to-date list of publications related to H-TCP.
- Analysis and design of congestion control in synchronised communication networks, R.N.Shorten, D.J.Leith, J.Foy, R.Kilduff, Proc. 12th Yale Workshop on Adaptive & Learning Systems, May 2003. (also Automatica 2005, Vol 41, pp725-730.)
- A Positive Systems Model of TCP-like Congestion Control: Asymptotic Results, R.N.Shorten, F.Wirth, D.J.Leith, HI Technical Report, April 2004 (also IEEE Trans on Networking, in press 2005)
- H-TCP: TCP for high-speed and long-distance networks, R.N.Shorten, D.J.Leith, Proc. PFLDnet, Argonne, 2004
- Modelling TCP Congestion Control Dynamics in Drop-Tail Environments, R.N.Shorten, D.J.Leith, F.Wirth, Automatica, in press 2005
- Experimental Evaluation of TCP Protocols for High-Speed Networks, Y.Li, D.J.Leith, R.N.Shorten, HI Technical Report, June 2005
- H-TCP: A framework for congestion control in high-speed and long-distance networks, D.J.Leith, R.N.Shorten, Y.Li, HI Technical Report, August 2005
- On RTT Scaling in H-TCP, D.J.Leith, R.N.Shorten. Discussion Note.
- H-TCP: TCP Congestion Control for High Bandwidth-Delay Product Paths, D. Leith, April 2008, Internet-Draft (work in progress) draft-leith-tcp-htcp-06.txt
- 13 Jul 2005
- 30 Jan 2006 - 14 Apr 2008