As the cost of Internet access rises and the amount of deployed bandwidth increases, a way to make efficient use of the oft-unused bandwidth is desired. Simply providing a lower priority for traffic than best effort allows this bandwidth to be used without noticeable interference with regular traffic. Because bursts of normal traffic are given priority over this background, or filler, traffic, a more aggressive congestion control protocol is called for in the filler traffic. In our paper, we compare numerous versions of TCP-like congestion control of our own design, over which to implement low-priority traffic, by using the unused bandwidth at any given time. These protocols are divided into six “classes,” which differ by the core congestion control algorithm and use different constants. Using the ns-2 network simulator, we collected network traces using each of our protocols in different network configurations, with multiple parameters for each configuration. These configurations simulated high- and low-bandwidth and latency networks. We compared the resulting throughput and sharing - the cumulative variation of throughput over each stream, normalized by the total throughput over the link - to our chosen baseline, TCP Sack. Most of the basic algorithms performed as well as or better than Sack in a background traffic environment, especially in terms of throughput. Using features from multiple classes, we also designed a more complex protocol that performed better than Sack in almost every environment, and performed better than the other algorithms in general.