Quality of Service (QOS)

Overview of the Quality of Service (QOS) technology.

To develop Quality of Service (QOS), you need these headers:

For programming guidance for this technology, see:

Enumerations

 
FilterType

The FilterType enumeration specifies the type of filter used for an RSVP FILTERSPEC.
QOS_FLOWRATE_REASON

The QOS_FLOWRATE_REASON enumeration indicates the reason for a change in a flow's bandwidth.
QOS_NOTIFY_FLOW

The QOS_NOTIFY_FLOW enumeration specifies the circumstances that must be present for the QOSNotifyFlow function to send a notification.
QOS_QUERY_FLOW

The QOS_QUERY_FLOW enumeration indicates the type of information a QOSQueryFlow function will request.
QOS_SET_FLOW

The QOS_SET_FLOW enumeration indicates what is being changed about a flow.
QOS_SHAPING

The QOS_SHAPING enumeration defines the shaping behavior of a flow.
QOS_TRAFFIC_TYPE

The QOS_TRAFFIC_TYPE enumeration defines the various traffic types. Each flow has a single traffic type. This allows the QOS subsystem to apply user-specified policies to each type.

Functions

 
CBADMITRESULT

The cbAdmitResult function is used by LPMs to return results for the LPM_AdmitRsvpMsg request.
CBGETRSVPOBJECTS

The cbGetRsvpObjects function is a callback function for LPMs to asynchronously return results for LPM_GetRsvpObjects requests.
LPM_AdmitRsvpMsg

The LPM_AdmitRsvpMsg function is called by the PCM to pass RSVP messages to the LPM for policy based�admission control decisions.
LPM_CommitResv

The LPM_CommitResv function is called by the PCM to obtain reservation commitment decisions from the LPM.
LPM_Deinitialize

The LPM_Deinitialize function allows the PCM to instruct LPMs to deinitialize, whether due to system shutdown or a change in Designated Subnet Bandwidth Manager (DSBM) status.
LPM_DeleteState

The LPM_DeleteState function is called by the PCM to delete the LPMs' RSVP state information.
LPM_GetRsvpObjects

The LPM_GetRsvpObjects function allows the PCM to query LPMs for policy data.
LPM_Initialize

The LPM_Initialize function initializes a local policy module (LPM).
LPM_IpAddressTable

The LPM_IpAddressTable function is used by the PCM to pass a list of IP addresses assigned to the Windows 2000 Server upon which the LPM is initialized.
PALLOCMEM

The PALLOCMEM function is a memory allocation function provided by the PCM, used for allocating memory when returning policy information to the PCM.
PFREEMEM

The PFREEMEM function is a memory-freeing function provided by the PCM.
QOSAddSocketToFlow

Adds a new flow for traffic.
QOSCancel

Cancels a pending overlapped operation, like QOSSetFlow.
QOSCloseHandle

The QOSCloseHandle function closes a handle returned by the QOSCreateHandle function.
QOSCreateHandle

This function initializes the QOS subsystem and the QOSHandle parameter. The QOSHandle parameter is used when calling other QOS functions. QOSCreateHandle must be called before any other functions.
QOSEnumerateFlows

Enumerates all existing flows.
QOSNotifyFlow

Registers the calling application to receive a notification.
QOSQueryFlow

Requests information about a specific flow.
QOSRemoveSocketFromFlow

Notifies the QOS subsystem that a previously added flow has been terminated.
QOSSetFlow

Is called by an application to request the QOS subsystem to prioritize the application's packets and change the flow traffic.
QOSStartTrackingClient

The QOSStartTrackingClient function notifies the QOS subsystem of the existence of a new client.
QOSStopTrackingClient

The QOSStopTrackingClient function notifies the QoS subsystem to stop tracking a client that has previously used the QOSStartTrackingClient function. If a flow is currently in progress, this function will not affect it.
TcAddFilter

The TcAddFilter function associates a new filter with an existing flow that allows packets matching the filter to be directed to the associated flow.
TcAddFlow

The TcAddFlow function adds a new flow on the specified interface.
TcCloseInterface

The TcCloseInterface function closes an interface previously opened with a call to TcOpenInterface. All flows and filters on a particular interface should be closed before closing the interface with a call to TcCloseInterface.
TcDeleteFilter

The TcDeleteFilter function deletes a filter previously added with the TcAddFilter function.
TcDeleteFlow

The TcDeleteFlow function deletes a flow that has been added with the TcAddFlow function. Clients should delete all filters associated with a flow before deleting it, otherwise, an error will be returned and the function will not delete the flow.
TcDeregisterClient

The TcDeregisterClient function deregisters a client with the Traffic Control Interface (TCI).
TcEnumerateFlows

The TcEnumerateFlows function enumerates installed flows and their associated filters on an interface.
TcEnumerateInterfaces

The TcEnumerateInterfaces function enumerates all traffic control�enabled network interfaces. Clients are notified of interface changes through the ClNotifyHandler function.
TcGetFlowNameA

The TcGetFlowName function provides the name of a flow that has been created by the calling client. (ANSI)
TcGetFlowNameW

The TcGetFlowName function provides the name of a flow that has been created by the calling client. (Unicode)
TCI_ADD_FLOW_COMPLETE_HANDLER

The ClAddFlowComplete function is used by traffic control to notify the client of the completion of its previous call to the TcAddFlow function.
TCI_DEL_FLOW_COMPLETE_HANDLER

The ClDeleteFlowComplete function is used by traffic control to notify the client of the completion of its previous call to the TcDeleteFlow function.
TCI_MOD_FLOW_COMPLETE_HANDLER

The ClModifyFlowComplete function is used by traffic control to notify the client of the completion of its previous call to the TcModifyFlow function.
TCI_NOTIFY_HANDLER

The ClNotifyHandler function is used by traffic control to notify the client of various traffic control�specific events, including the deletion of flows, changes in filter parameters, or the closing of an interface.
TcModifyFlow

The TcModifyFlow function modifies an existing flow. When calling TcModifyFlow, new Flowspec parameters and any traffic control objects should be filled.
TcOpenInterfaceA

The TcOpenInterface function opens an interface. (ANSI)
TcOpenInterfaceW

The TcOpenInterface function opens an interface. (Unicode)
TcQueryFlowA

The TcQueryFlow function queries traffic control for the value of a specific flow parameter based on the name of the flow. The name of a flow can be retrieved from the TcEnumerateFlows function or from the TcGetFlowName function. (ANSI)
TcQueryFlowW

The TcQueryFlow function queries traffic control for the value of a specific flow parameter based on the name of the flow. The name of a flow can be retrieved from the TcEnumerateFlows function or from the TcGetFlowName function. (Unicode)
TcQueryInterface

The TcQueryInterface function queries traffic control for related per-interface parameters.
TcRegisterClient

The TcRegisterClient function is used to register a client with the traffic control interface (TCI). The TcRegisterClient function must be the first function call a client makes to the TCI.
TcSetFlowA

The TcSetFlow function sets individual parameters for a given flow. (ANSI)
TcSetFlowW

The TcSetFlow function sets individual parameters for a given flow. (Unicode)
TcSetInterface

The TcSetInterface function sets individual parameters for a given interface.

Structures

 
AD_GENERAL_PARAMS

The AD_GENERAL_PARAMS structure contains the General Characterization Parameters contained in the RSVP Adspec object.
ADDRESS_LIST_DESCRIPTOR

The ADDRESS_LIST_DESCRIPTOR structure provides network address descriptor information for a given interface.
ADSPEC

The ADSPEC structure contains Adspec message information for RSVP.
CONTROL_SERVICE

The CONTROL_SERVICE structure contains supported RSVP service types.
CtrlLoadFlowspec

The CtrlLoadFlowspec structure contains a Controlled Load FLOWSPEC.
ENUMERATION_BUFFER

The ENUMERATION_BUFFER structure contains information specific to a given flow, including flow name, the number of filters associated with the flow, and an array of filters associated with the flow.
ERROR_SPEC

The ERROR_SPEC structure contains RSVP error messages.
Error_Spec_IPv4

The Error_Spec_IPv4 structure stores error code information for RSVP transmissions.
FILTER_SPEC

The FILTER_SPEC structure stores information about an RSVP FILTERSPEC.
Filter_Spec_IPv4

The Filter_Spec_IPv4 structure contains information about an IPv4 FILTERSPEC.
Filter_Spec_IPv4GPI

The Filter_Spec_IPv4GPI structure contains generalized port ID information about an IPv4 FILTERSPEC.
FLOW_DESC

The FLOW_DESC structure contains flow descriptor information for RSVP.
FLOWDESCRIPTOR

The FLOWDESCRIPTOR structure specifies one or more filters for a given FLOWSPEC.
FLOWSPEC

The FLOWSPEC structure provides quality of service parameters to the RSVP SP.
Gads_parms_t

The Gads_parms_t structure stores guaranteed service Adspec parameters.
GenAdspecParams

The GenAdspecParams structure contains general path characterization parameters.
GenTspec

The GenTspec structure stores generic Tspec information.
GenTspecParms

The GenTspecParms structure stores generic Tspec parameters.
GuarFlowSpec

The GuarFlowSpec structure contains guaranteed flowspec information.
GuarRspec

The GuarRspec structure contains guaranteed Rspec information.
ID_ERROR_OBJECT

The ID_ERROR_OBJECT structure contains error message information for Identity Policy Elements for RSVP.
IDPE_ATTR

The IDPE_ATTR structure contains identity policy element attribute information.
IN_ADDR_IPV4

The IN_ADDR_IPV4 union stores an IPv4 address for use with RSVP FILTERSPECs.
IN_ADDR_IPV6

The IN_ADDR_IPV6 structure stores an IPv6 address for use with RSVP FILTERSPECs.
IntServFlowSpec

The IntServFlowSpec structure contains information about Integrated Services flowspecs.
IntServMainHdr

The IntServMainHdr structure is a header for Integrated Services RSVP objects.
IntServParmHdr

The IntServParmHdr structure is a header for Integrated Services parameters.
IntServServiceHdr

The IntServServiceHdr structure is a header for Integrated Services service objects.
IntServTspecBody

The IntServTspecBody structure contains information for an RSVP Tspec.
IP_PATTERN

The IP_PATTERN structure applies a specific pattern or corresponding mask for the IP protocol. The IP_PATTERN structure designation is used by the traffic control interface in the application of packet filters.
IPX_PATTERN

The IPX_PATTERN structure applies a specific pattern or corresponding mask for the IPX protocol. The IPX_PATTERN structure designation is used by the traffic control interface in the application of packet filters.
IS_ADSPEC_BODY

The IS_ADSPEC_BODY structure contains Integrated Services Adspec information.
IS_FLOWSPEC

The IS_FLOWSPEC structure stores an Integrated Services FLOWSPEC object.
LPM_INIT_INFO

The LPM_INIT_INFO structure contains local policy module initialization information.
LPMIPTABLE

The LPMIPTABLE structure contains IP information, including the SNMP index, IP address, and subnet mask for each interface. The LPMIPTABLE structure is supplied as an argument for the Lpm_IpAddressTable function.
PARAM_BUFFER

The PARAM_BUFFER structure describes the format of the parameter buffer that can be included in the CONTROL_SERVICE structure.
POLICY_DATA

The POLICY_DATA structure contains policy data for RSVP messages.
POLICY_DECISION

The POLICY_DECISION structure contains RSVP policy decision information.
POLICY_ELEMENT

The POLICY_ELEMENT (lpmapi.h) structure contains an RSVP policy element.
POLICY_ELEMENT

The POLICY_ELEMENT (infocard.h) structure contains an RSVP policy element. (POLICY_ELEMENT)
PS_ADAPTER_STATS

The PS_ADAPTER_STATS structure provides statistical packet shaper information about a specified adapter. Note that the PS_ADAPTER_STATS structure is used in conjunction with the PS_COMPONENT_STATS structure.
PS_COMPONENT_STATS

The PS_COMPONENT_STATS structure enables applications to get statistical information regarding their TC-enabled flow.
PS_CONFORMER_STATS

The PS_CONFORMER_STATS structure provides statistical packet shaper information about a particular flow. Note that the PS_CONFORMER_STATS structure is used in conjunction with the PS_COMPONENT_STATS structure.
PS_DRRSEQ_STATS

The PS_DRRSEQ_STATS structure provides network interface card (NIC) and packet sequencer�packet shaper statistics. Note that the PS_DRRSEQ_STATS structure is used in conjunction with the PS_COMPONENT_STATS structure.
PS_FLOW_STATS

The PS_FLOW_STATS structure provides statistical packet shaper information about a particular flow. Note that the PS_FLOW_STATS structure is used in conjunction with the PS_COMPONENT_STATS structure.
PS_SHAPER_STATS

The PS_SHAPER_STATS structure provides statistical packet shaper information about the computer's packet shaper component. Note that the PS_SHAPER_STATS structure is used in conjunction with the PS_COMPONENT_STATS structure.
QOS

The QOS structure provides the means by which QOS-enabled applications can specify quality of service parameters for sent and received traffic on a particular flow.
QOS_DESTADDR

The QOS object QOS_DESTADDR is used during a call to the WSAIoctl (SIO_SET_QOS) function in order to avoid issuing a connect function call for a sending socket.
QOS_DIFFSERV

The QOS_DIFFSERV traffic control object is used to specify filters for the packet scheduler when it operates in Differentiated Services Mode.
QOS_DIFFSERV_RULE

The QOS_DIFFSERV_RULE structure is used in conjunction with the traffic control object QOS_DIFFSERV to provide Diffserv rules for a given flow.
QOS_DS_CLASS

The traffic control object QOS_DS_CLASS enables application developers to override the default Diffserv code point (DSCP) value for the IP packets associated with a given flow. By default, the DSCP value is derived from the flow's ServiceType.
QOS_FLOW_FUNDAMENTALS

The QOS_FLOW_FUNDAMENTALS structure contains basic information about a flow.
QOS_FLOWRATE_OUTGOING

The QOS_FLOWRATE_OUTGOING structure is used to set flow rate information in the QOSSetFlow function.
QOS_FRIENDLY_NAME

The QOS_FRIENDLY_NAME traffic control object associates a friendly name with flow.
QOS_OBJECT_HDR

The QOS object QOS_OBJECT_HDR is attached to each QOS object. It specifies the object type and its length.
QOS_PACKET_PRIORITY

The QOS_PACKET_PRIORITY structure that indicates the priority of the flow traffic.
QOS_SD_MODE

The QOS object QOS_SD_MODE defines the behavior of the traffic control-packet shaper component.
QOS_SHAPING_RATE

The QOS object QOS_SHAPING_RATE specifies the uniform traffic shaping rate be applied to a given flow.
QOS_TCP_TRAFFIC

The QOS_TCP_TRAFFIC structure is used to indicate that IP Precedence and UserPriority mappings for a given flow must be set to system defaults for TCP traffic.
QOS_TRAFFIC_CLASS

The traffic control object QOS_TRAFFIC_CLASS is used to override the default UserPriority value ascribed to packets that classify the traffic of a given flow.
QOS_VERSION

The QOS_VERSION structure indicates the version of the QOS protocol.
QualAppFlowSpec

The QualAppFlowSpec structure contains FLOWSPEC information for a qualitative application.
QualTspec

The QualTspec structure contains qualitative Tspec information.
QualTspecParms

The QualTspecParms structure contains qualitative Tspec parameters.
RESV_STYLE

The RESV_STYLE structure contains information about RSVP RESV style.
RSVP_ADSPEC

The QOS object RSVP_ADSPEC provides a means by which information describing network devices along the data path between sender and receiver, pertaining to RSVP functionality and available services, is provided or retrieved.
RSVP_FILTERSPEC

The RSVP_FILTERSPEC structure provides RSVP FILTERSPEC information.
RSVP_FILTERSPEC_V4

The RSVP_FILTERSPEC_V4 structure stores information for a FILTERSPEC on an IPv4 address.
RSVP_FILTERSPEC_V4_GPI

The RSVP_FILTERSPEC_V4_GPI structure provides general port identifier information for a given FILTERSPEC.
RSVP_FILTERSPEC_V6

The RSVP_FILTERSPEC_V6 structure stores information for a FILTERSPEC on an IPv6 address.
RSVP_FILTERSPEC_V6_FLOW

The RSVP_FILTERSPEC_V6_FLOW structure provides flow label information for an IPv6 FILTERSPEC.
RSVP_FILTERSPEC_V6_GPI

The RSVP_FILTERSPEC_V6_GPI structure provides general port identifier information for a given FILTERSPEC on an IPv6 address.
RSVP_HOP

The RSVP_HOP structure contains information about an RSVP-enabled hop.
Rsvp_Hop_IPv4

The Rsvp_Hop_IPv4 structure stores information about an RSVP-enabled IPv4 hop.
RSVP_MSG_OBJS

The RSVP_MSG_OBJS structure contains RSVP message objects.
RSVP_POLICY

The RSVP_POLICY structure stores one or more undefined policy elements.
RSVP_POLICY_INFO

The RSVP_POLICY_INFO structure stores undefined policy elements retrieved from RSVP.
RSVP_RESERVE_INFO

The QOS object RSVP_RESERVE_INFO, through the ProviderSpecific buffer, enables RSVP behavior for a given flow to be specified or modified at a granular level, and enables default RSVP style settings for a flow to be overridden.
RSVP_SCOPE

The RSVP_SCOPE structure provides RSVP scope information.
RSVP_SESSION

The RSVP_SESSION structure stores information about an RSVP SESSION message.
RSVP_STATUS_INFO

The QOS object RSVP_STATUS_INFO provides information regarding the status of RSVP for a given flow, including event notifications associated with monitoring FD_QOS events, as well as error information.
RsvpObjHdr

The RsvpObjHdr structure provides an object header for an RSVP message.
Scope_list_ipv4

The Scope_list_ipv4 structure contains RSVP SCOPE object information.
SENDER_TSPEC

The SENDER_TSPEC structure contains information for an RSVP sender Tspec.
Session_IPv4

The Session_IPv4 structure stores information about an IPv4 RSVP SESSION object.
TC_GEN_FILTER

The TC_GEN_FILTER structure creates a filter that matches a certain set of packet attributes or criteria, which can subsequently be used to associate packets that meet the attribute criteria with a particular flow.
TC_GEN_FLOW

The TC_GEN_FLOW structure creates a generic flow for use with the traffic control interface. The flow is customized through the members of this structure.
TC_IFC_DESCRIPTOR

The TC_IFC_DESCRIPTOR structure is an interface identifier used to enumerate interfaces.
TCI_CLIENT_FUNC_LIST

The TCI_CLIENT_FUNC_LIST structure is used by the traffic control interface to register and then access client-callback functions. Each member of TCI_CLIENT_FUNC_LIST is a pointer to the client provided�callback function.