A fair allocation of utility (application-layer performance) is essential in providing QoS (Quality of Service) guarantee. However, there have been few researches in the literature of utility-fair network resource allocation scheme. In this paper, we propose a distributed utility max-min flow control algorithm which accommodates application diversity in that it does not require the concavity of utility functions, and is scalable in that it does not require any per-flow operation in the network. The algorithm is proved to be convergent under the assumption that there exists a single bottleneck link and the communication delay between any two links in the network is bounded. Although the convergence of the algorithm is analyzed only for the case of a single bottleneck link, we show through simulations that the proposed algorithm works as designed for the case of multiple bottleneck links as well. (c) 2005 Elsevier B.V. All rights reserved.