Different applications travelling across networks have different requirements for loss and delay. In some applications all the traffic arrives very quickly and with very little loss. There are other applications, e.g. file transfers, where the traffic must arrive, but arrival time is not very important. For other, especially real-time, applications it may be critical that traffic is not delayed more than some small amount, but loss rates may not be so critical. This paper looks at networks that are operating at, or close to, their full capacity. In such a system performance deteriorates for all traffic, unless traffic is treated differentially. Traffic is separated into different classes according to loss and delay requirements, using the fact that the system inherently has two degrees of freedom. Different classes of traffic are transmitted in such a way that the classes with the most stringent loss and delay requirements are not adversely affected by other traffic, even when the system is in overload. This enables us to provide guaranteed quality of service with strong statistical guarantees.