Revisiting the fair queueing paradigm for end-to-end congestion control