In this paper, we present a distributed algorithm that dynamically allocates the available resources of a serviceoriented network to delay sensitive network services. Our algorithm is based on Gauss-Seidel type iterations. Thus, each node depends on its local information and sends/receives a small number of messages, until convergence is achieved. We use a utility-based framework to differentiate services based on both their relative profitability and quality-of-service requirements. Our performance metric is a network calculus driven, end-to-end delay that a service class experiences in the network. Finally, we evaluate the performance of our system under various scenarios, including an analysis with real instant messaging network traces.