网络专家Windows 中的 QoS 支持

Joseph Davies

这篇文章基于 Windows Server“Longhorn”的预发布版。文中的所有信息可能会有所变动。

服务质量 (QoS) 中包括一组技术,可用于以经济有效的方式管理网络通信,以增强家庭和企业环境中的用户体验。利用 QoS 技术可测量带宽、检测不断变化的网络状况(如拥塞或带宽的可用性),

并对通信排列优先级或进行遏制。例如,QoS 可应用于对延迟敏感的通信(如语音或视频应用程序)传送排列优先级,并控制对延迟敏感的通信(如大量数据传送)的影响。为 TCP/IP 通信提供优先传送需要主机和网络基础结构设备的支持。本专栏说明了将 QoS 与基于 Microsoft® Windows® 的主机配合使用的方法。

为 TCP/IP 网络定义 QoS 的中心问题在于如何指定并提供 IP 通信的优先传送。虽然 IP 的原始 RFC 791 定义了在“服务类型”(TOS) 字段可以指定优先级、延迟、吞吐量、可靠性和成本特征,但 IP 原则上是一项基于数据报尽力传送的数据包交换技术,它通常根据先到先得的原则对每个数据包一视同仁。

配置优先传送

要提供优先传送服务,有几种方法您可以试试看。您可以配置网络基础结构为标记的通信提供特殊处理,然后使发送主机标记它们的传出通信。或者,可以使发送主机动态地编制网络基础结构的程序,以根据其传出通信的特征(如地址和端口号)提供特殊处理。

对于 TCP/IP 通信,可以使用几种不同的方法来提供优先传送。例如,在以太网的网络接口层,IEEE 802.1p 标记会将主机发送的帧标记为优先传送,方法是使用以太网帧的虚拟局域网 (VLAN) 报头中的 3 位“优先级”字段。VLAN 报头位于以太网报头内的“源地址”字段和“长度”字段(对于 IEEE 802.3 帧)或“以太类型”字段(对于以太网 II 型帧)之间。

在发送主机上实现 802.1p 标记要求网络适配器和设备驱动程序支持 802.1p,并且网络适配器已启用 802.1p 支持。通常可以从网络适配器驱动程序属性的“高级”选项卡启用 802.1p 支持。以太网交换机也必须启用 802.1p 支持。

在 IEEE 802.11 无线的网络接口层上,Wi-Fi 多媒体 (WMM) 的 Wi-Fi 联盟证书为优先网络通信定义了四个访问类别。这些访问类别(按最高到最低的优先级)分别是语音、视频、尽力传送和背景。WMM 优先顺序的主机支持需要无线网络适配器及其驱动程序支持 WMM。无线访问点 (AP) 必须启用 WMM。

在 Internet 层,可以使用“差分服务”并在 IP 报头中设置“差分服务代码点”(DSCP) 的值。如 RFC 2472 中定义的一样,DSCP 值是 IP 版本 4 (IPv4) TOS 字段和 IP 版本 6 (IPv6) 通信类字段的高阶 6 位。

大多数现代企业路由器都支持 DSCP 通信差分,但通常默认情况下它被禁用。在转发期间,支持 DSCP 的路由器会读取 DSCP 值并将数据包置于特定队列中。例如,您可以根据定义的 DSCP 值配置路由器,将转发的数据包置于高优先级、尽力传送或低于尽力传送的队列中。通过配置队列和 DSCP 值,标有 DSCP 的通信可以具有不同级别的服务。例如,会首先转发关键任务网络通信,而不会被其他更低优先级的大量数据通信延迟。WMM 规范定义了如何将 WMM 访问类别映射到 DSCP 值。支持 WMM 的无线 AP 根据其访问类别读取 DSCP 值并处理通信。

在 Internet 层上,也可以使用“资源预留协议”(RSVP),即 RFC 2205 中定义的信号协议。主机可以使用此协议尝试将网络带宽预留给一个端点。然而,RSVP 并未在网络上广泛使用,而且当前在 Windows XP、Windows Server® 2003、Windows Vista™ 或代码名为“Longhorn”的 Windows Server 下一版本(当前为测试版)中均不支持它。

要发送标记为优先传送的数据包,应用程序或操作系统组件必须能够指定 802.1p 优先级的值或 DSCP 值。以下部分介绍 Windows 组件或基于 Windows 的应用程序如何为以太网帧指定 802.1p 优先级或为 TCP/IP 通信指定 DSCP 值。

Windows XP 和 Windows Server 2003 中的 QoS

Windows XP 和 Windows Server 2003 提供了为通信分配 QoS 参数的 API。应用程序开发人员可以使用 Windows Sockets (Winsock) 和“常规服务质量”(GQoS) API 在应用程序级别逐个套接字应用 QoS 参数。网络管理员可以使用为调用“通信控制”(TC) API 而编写的通信管理工具在主机级别应用 QoS 参数。

您可以使用 Winsock 和 IP_TOS 套接字选项为套接字的传出数据包设置 DSCP 值。但是,默认情况下,TCP/IP 堆栈忽略 IP_TOS 套接字选项。要使用 IP_TOS 套接字选项,必须首先在下列注册表项下创建和设置 DWORD 注册表值 DisableUserTOSSetting=0(请参阅图 1):

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

图 1 设置 DisableUserTOSetting 的注册表值

图 1** 设置 DisableUserTOSetting 的注册表值 **

必须重新启动计算机,方可使此注册表设置生效。

要在不必使用 IP_TOS 套接字选项的情况下指定通信的 DSCP 值,可以使用 GQoS API。GQoS 是 Windows Sockets 2.0 (Winsock2) 的一部分。大多数启用 QoS 的应用程序使用 GQoS API 来调用 Windows 中的 QoS 功能。Windows XP Service Pack 2 (SP2) 中的 GQoS 允许应用程序设置 DSCP 值并遏制其出站通信。要在运行 Windows XP SP2 的计算机上设置 802.1p 优先级,必须使用 TC API。

TC API 提供访问通信控制机制的途径,这些机制调整本地主机上的网络通信。 它允许直接控制 DSCP 值、802.1p 标记和节流率。网络管理员可以使用通信管理程序来代表不识别 QoS 的应用程序直接调用 TC API。因为 TC API 是比 GQoS API 级别低的 API,所以它需要管理员级别的权限。

与 GQoS API 不同,TC API 允许同一发送主机上多个应用程序的通信聚合在一个 QoS 流中。作为此聚合的一部分,通信可以由其源 IP 地址和目标 IP 地址、源端口和目标端口以及协议(TCP 或 UDP)的组合进行标识。例如,特定目标 IP 地址的所有通信(任何源端口和目标端口,与主机上的发送应用程序无关)都可以包括在一个 QoS 流中。另一方面,GQoS API 允许应用程序定义自己对通过套接字所发送数据的 QoS 处理方法。

要支持 QoS 功能,基于 Windows XP 和 Windows Server 2003 的计算机必须安装 QoS Packet Scheduler 组件,并在“网络连接”文件夹的网络连接属性中启用该组件(请参阅图 2)。在运行 Windows XP 的计算机中,默认情况下,已安装并启用 QoS Packet Scheduler 组件 (Psched.sys)。可以在 Windows Server 2003 上安装 Packet Scheduler 组件。

图 2 配置 QoS Packet Scheduler

图 2** 配置 QoS Packet Scheduler **

Windows Vista 和 Windows Server“Longhorn”中的 QoS

Windows Vista 和 Windows Server“Longhorn”中的 QoS 支持已得到了增强和简化。对于 IT 人士,现在可以使用基于策略的 QoS 来设置 DSCP 值和控制应用程序发送率,不必使用 API 或修改现有应用程序。对于开发人员,虽然 Windows 的未来版本未计划支持这些 API,但却支持 GQoS 和 TC API。另外,已删除 IP_TOS Winsock 选项。为替换 GQoS 和 TC API 并简化升级应用程序或未来应用程序中的 QoS 支持,Windows Vista 和 Windows Server“Longhorn”都支持新的 QoS2 API,也称为“高质量 Windows 音频视频体验”(qWAVE)。

Windows Server“Longhorn”和 Windows Vista 中基于策略的 QoS 允许您提供更好的终端用户体验、控制带宽成本或者与带宽提供商或业务部门协商获得更好的服务级别。您可以在整个 Active Directory® 基础结构中集中管理运行 Windows Vista 或 Windows Server“Longhorn”的计算机的网络带宽,而不必考虑应用程序。因为通信管理位于应用程序层之下,所以不需要针对基于策略的 QoS 通信管理修改现有应用程序。

Windows Server“Longhorn”和 Windows Vista 中基于策略的 QoS 设置允许您根据下列条件划分传出通信发送率的优先顺序或对其进行管理:

  • 发送应用程序(可执行程序的路径和名称)
  • 源或目标 IPv4 或 IPv6 地址或地址前缀
  • 协议(TCP、UDP 或两者)
  • 源或目标端口或端口范围(TCP 或 UDP)

QoS 策略作为链接到 Active Directory 容器(如域、站点或组织单元 (OU))的“组策略对象”(GPO) 的一部分应用于用户登录会话或计算机,或者 QoS 策略可应用于安全组。作为“组策略”的一部分,QoS 策略构建于现有的 Active Directory 管理基础结构之上。

基于策略的 QoS 允许您定义通信的优先级。可以将 QoS 策略配置为使用特定 DSCP 值标记出站 IPv4 或 IPv6 通信。也可以管理出站通信的带宽使用。可以使用出站通信的节流率配置 QoS 策略。通过节流,QoS 组件将限制聚合传出网络通信为指定速率。对于计算机,可以管理入站通信的带宽使用,配置高级设置来指定 TCP 通信的入站吞吐量,方法是设置 TCP 接收窗口大小的最大值。

在 Windows Vista 和 Windows Server“Longhorn”中,默认情况下,已安装并启用 QoS Packet Scheduler。Pacer.sys 组件是新增的“网络设备接口规范”(NDIS) 6.0 小型筛选驱动程序,它为基于策略的 QoS 和支持 QoS 的应用程序的通信控制数据包调度。Pacer.sys 取代了 Windows XP 和 Windows Server 2003 中的 Psched.sys。

要在 Intranet 上部署基于策略的 QoS,请配置基于用户或计算机的 QoS 策略,并将其应用到相应的 Active Directory 容器。基于 Windows Vista 或 Windows Server“Longhorn”的计算机会在更新“用户配置”或“计算机配置组策略”时下载和应用其基于策略的 QoS 设置。

由于数据和音频/视频 (AV) 应用程序日益增长地分享着网络,因此需要 QoS 解决方案,以便可以在数据通信中优先处理与时间相关的 AV 通信。另外,网络正逐步地发展为无线网络,这会为延迟和带宽敏感的应用程序带来其他的复杂因素。

Windows Vista 中的 qWAVE 功能提供了与 QoS 相关的软件模块集合,解决了由 AV 应用程序和无线网络引起的网络难题。qWAVE 集成在 QoS 子系统中,并与多个 Internet 和网络接口层数据包优先级技术配合使用。qWAVE 同时支持多个 AV 流(实时流需要 QoS)和数据流(尽力传送流,如电子邮件或文件传送)。

qWAVE 技术的集合会检测并监控 LAN 带宽、发现网络的 QoS 功能以及为网络带宽的合理和一致使用提供分布式许可控制。这些技术启用了高级 AV 流技术,以便应用程序可以动态地适应不断变化的网络状况,并且仅通过 QoS2 API 供开发人员使用。

Windows Vista 和 Windows Server“Longhorn”中的 QoS2 API 取代了 GQoS API 和 IP_TOS Winsock 选项,并且您会发现它比 GQoS API 更方便易用。

更多信息

要了解 QoS 的详细信息,有许多可通过 TechNet 获取的优秀来源。从 Microsoft 服务质量网站(英文)开始。请参阅 Windows 核心网络博客(英文)的 QoS 部分。

Joseph Davies是 Microsoft 的一位技术撰稿人,从 1992 年起一直在培训和编写 Windows 网络主题。他曾为 Microsoft Press® 编写了五本著作,并且是每月的 TechNet 网络专家专栏的作者。

© 2008 Microsoft Corporation 与 CMP Media, LLC.保留所有权利;不得对全文或部分内容进行复制.