Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
CC_VEGAS(4)		 BSD Kernel Interfaces Manual		   CC_VEGAS(4)

     cc_vegas -- Vegas Congestion Control Algorithm

     The Vegas congestion control algorithm uses what the authors term the ac-
     tual and expected transmission rates to determine whether there is	con-
     gestion along the network path i.e.

	   actual rate = (total	data sent in a RTT) / RTT

	   expected rate = cwnd	/ RTTmin

	   diff	= expected - actual

     where RTT is the measured instantaneous round trip	time and RTTmin	is the
     smallest round trip time observed during the connection.

     The algorithm aims	to keep	diff between two parameters alpha and beta,
     such that:

	   alpha < diff	< beta

     If	diff > beta, congestion	is inferred and	cwnd is	decremented by one
     packet (or	the maximum TCP	segment	size).	If diff	< alpha, then cwnd is
     incremented by one	packet.	 Alpha and beta	govern the amount of buffering
     along the path.

     The implementation	was done in a clean-room fashion, and is based on the
     paper referenced in the SEE ALSO section below.

     The time from the transmission of a marked	packet until the receipt of an
     acknowledgement for that packet is	measured once per RTT.	This implemen-
     tation does not implement Brakmo's	and Peterson's original	duplicate ACK
     policy since clock	ticks in today's machines are not as coarse as they
     were (i.e.	500ms) when Vegas was originally designed.  Note that modern
     TCP recovery processes such as fast retransmit and	SACK are enabled by
     default in	the TCP	stack.

MIB Variables
     The algorithm exposes the following tunable variables in the branch of the sysctl(3) MIB:

     alpha  Query or set the Vegas alpha parameter as a	number of buffers on
	    the	path.  When setting alpha, the value must satisfy: 0 < alpha <
	    beta.  Default is 1.

     beta   Query or set the Vegas beta	parameter as a number of buffers on
	    the	path.  When setting beta, the value must satisfy: 0 < alpha <
	    beta.  Default is 3.

     cc_chd(4),	cc_cubic(4), cc_hd(4), cc_htcp(4), cc_newreno(4), h_ertt(4),
     mod_cc(4),	tcp(4),	khelp(9), mod_cc(9)

     L.	S. Brakmo and L. L. Peterson, "TCP Vegas: end to end congestion
     avoidance on a global internet", IEEE J. Sel. Areas Commun., 8, 13,
     1465-1480,	October	1995.

     Development and testing of	this software were made	possible in part by
     grants from the FreeBSD Foundation	and Cisco University Research Program
     Fund at Community Foundation Silicon Valley.

     The cc_vegas congestion control module first appeared in FreeBSD 9.0.

     The module	was first released in 2010 by David Hayes whilst working on
     the NewTCP	research project at Swinburne University of Technology's Cen-
     tre for Advanced Internet Architectures, Melbourne, Australia.  More de-
     tails are available at:

     The cc_vegas congestion control module and	this manual page were written
     by	David Hayes <>.

BSD			      September	15, 2011			   BSD


Want to link to this manual page? Use this URL:

home | help