Modern life depends on controlling flows on critical infrastructure networks that often operate in a congested state. Here, we consider two flow algorithms (max-flow and uniform-flow), and two congestion control schemes (max-min fairness and proportional fairness). We analyse how the algorithms and network topology affect throughput, fairness and the location of bottleneck edges. Our results show that a network operator can implement the trade-off (proportional fairness) instead of the fair allocation (max-min fairness) with little sacrifice in throughput. We illustrate how the previously studied uniform-flow approach leaves networks severely underutilised in comparison with congestion control algorithms. Link: http://arxiv.org/abs/1512.09293