We study the bandwidth allocation problem Maximize U(x), subject to Ax ≤ c; x ≥ 0 where U is a utility function, x is a bandwidth allocation vector, and Ax ≤ c represent the capacity constraints. We consider the class of canonical utility functions, consisting of functions U that are symmetric, non-decreasing, concave, and satisfy U(0) = 0. Natural primal-dual algorithms exist for maximizing such concave utility functions. We present a single dual update subroutine that results in a primal solution which is a logarithmic approximation, simultaneously, for all canonical utility functions. The dual update subroutine lends itself to an efficient distributed implementation. We then employ the fractional packing framework to prove that at most O(m log m) iterations of the dual update subroutine are required; here m is the number of edges in the network.