Many distributed applications can make use of large
background
transfers 
transfers of data that humans are not waiting for

to improve availability, reliability, latency or consistency.
However, given the rapid
fluctuations of available network bandwidth and changing resource
costs due to technology trends, hand tuning the aggressiveness of
background transfers risks (1) complicating
applications, (2) being too aggressive and interfering with other
applications, and (3) being too timid and not gaining the benefits of
background transfers. Our goal is for the operating system to manage
network resources in order to provide a simple abstraction of near
zero-cost
background transfers. Our system, TCP Nice, can provably bound the
interference inflicted by background flows on foreground flows in
a restricted network model. And
our microbenchmarks and case study applications suggest that in
practice it interferes little with foreground flows, reaps a
large fraction of spare network bandwidth, and simplifies application
construction and deployment.
For example,
in our prefetching case study application, aggressive prefetching improves
demand performance by a factor of three when Nice manages
resources; but the same prefetching hurts demand performance by a
factor of six under standard network congestion control.