An independent H-TCP implementation under FreeBSD 7.0: description and observed behaviour

Grenville Armitage, Lawrence Stewart, Michael Welzl, and James Healy
Appears in: 
CCR July 2008

A key requirement for IETF recognition of new TCP algorithms is having an independent, interoperable implementation. This paper describes our BSD-licensed implementation of H-TCP within FreeBSD 7.0, publicly available as a dynamically loadable kernel module. Based on our implementation experience we provide a summary description of the H-TCP algorithm to assist other groups build further interoperable implementations. Using data from our live testbed we demonstrate that our version exhibits expected H-TCP behavior, and describe a number of implementation-specific issues that influence H-TCP’s dynamic behavior. Finally, we illustrate the actual collateral impact on path latency of using H-TCP instead of NewReno. In particular we illustrate how, compared to NewReno, H-TCP’s cwnd growth strategy can cause faster fluctuations in queue sizes at, yet lower median latency through, congestion points. We believe these insights will prove valuable predictors of H-TCP’s potential impact if deployed in consumer end-hosts in addition to specialist, high-performance network environments.

Public Review By: 
Jithendra Padye

In this paper the authors detail their experiences implementing H-TCP in FreeBSD 7.0.
Needless to say, the subject matter is not novel. Yet, the reviewers felt that the research community should encourage this type of work. Independent implementations and evaluations of proposed standards, while not glamorous, are vitally needed to ensure that new standards are specified correctly and work as promised under realistic conditions.
To recognize a new TCP variant, IETF requires an independent, interoperable implementation of the proposed variant. The authors go through the exercise of implementing H-TCP by looking only at the published standard.
The authors were generally successful in their endeavor, which is a testimony to the completeness of the H-TCP standard. But they had to contact the authors of the standard to obtain some clarifications, and some open issues remained (see sections 5.1 and 5.6), which is a testimony to the difficulty of translating a standard into an implementation.
Interoperability with other implementations and legacy code is a major concern for many IETF proposals. However, this is not a major concern for HTCP implementations since there is no change to any packet formats, or the basic TCP state machine.
Instead, the important question is what impact HTCP flows have on performance of other high-speed TCP flows and standard NewReno TCP flows. While this paper does offer some results to that effect, addressing this issue is not the main thrust of this paper.
In terms of results, the reviewers felt that a head-to-head comparison with another H-TCP implementation (perhaps one from the Hamilton institute) would have been very useful. Unfortunately, the paper does not include such a comparison. Instead, the authors focus on comparing H-TCP performance with NewReno, which has already been studied by others.