Page MenuHomeFreeBSD

First cut implementation of hybrid slow start
Needs ReviewPublic

Authored by kmacy on May 25 2017, 2:51 AM.


Group Reviewers

First cut implementation of hybrid slow start
Hybrid Slow Start was introduced by Sangtae Ha and Injong Rhee in "Hybrid slow start for high-bandwidth and long-distance networks" in 2008. An extended version is available at:

It is essentially just the combination of 2 heuristics for when to exit slow start before encountering loss or reaching ssthresh:

  • find the minimum RTT in the initial ACK train of HYSTART_MIN_SAMPLES, if the minimum RTT from the sample period is greater than the minimum RTT so far + some threshold value of the minRTT, exit slow start
  • if the time since the last ack is <= hystart_ack_delta (2ms by default) and the time since the start of the packet train is greater than the minimum measure RTT / 16 exit slow start

Diff Detail

Lint Skipped
Unit Tests Skipped
Build Status
Buildable 9480

Event Timeline

It'd be nice to have a bit of a writeup on what hystart is and how its implemented here.

jtl added a subscriber: jtl.

In general, I think the code would benefit from more comments.

Following up on some discussion held on the fringe of the recent developer summit at BSDCan, what this work is missing is some accompanying documentation to demonstrate the dynamic behaviour of the proposed implementation over some range of relevant network parameters, along with a critique of expected versus measured/observed behaviour. I'm not asking for a full blown academic paper - a stream of consciousness Google-doc with some data, a few X vs time plots and some comments would suffice. Happy to provide guidance if required - you know where to reach me.

linimon retitled this revision from Hystart to First cut implementation of hybrid slow start.Jul 19 2018, 5:27 AM

I wonder if this work comes close to what the proposed hystart++ draft is documenting...