With the increase in available network bandwidth and reduction in network latency, more emphasis hasbeen placed on end-host QoS to provide quality of service guarantees for distributed real-time applications,such as video streaming servers, video conferencing applications, and VoIP applications. End-host QoS
requires support from the underlying operating system (OS) in the form of network schedulers and traffic controllers. GNU/Linux supports a variety of network schedulers for the provision of end-host QoS,but no easy-to-use API is provided between applications and system-level tra±c controllers. Moreover,existing APIs lack the ability to link QoS attributes with stream or datagram sockets and to associate QoS information with individual packets allowing sophisticated network schedulers to make scheduling decisions based on such information or to link di®erent streams such that their QoS management is coordinated. We propose an extension to the standard Berkeley socket interface that enables applications
to easily create and manage connections with QoS requirements. This new API -called QSockets includes per-socket traffic classication that allows the application developer to link a socket connection with a scheduler so that all data going out on this socket is scheduled accordingly. We further allow
an application to pass packet-specific parameters to the scheduler for fine-grained scheduler control.