flowSPEC 结构 (qos.h)

FLOWSPEC 结构为 RSVP SP 提供服务质量参数。 这允许 QOS 感知应用程序调用、修改或删除给定流的 QOS 设置。 FLOWSPEC 的某些成员可以设置为默认值。 有关更多信息,请参见备注。

语法

typedef struct _flowspec {
  ULONG       TokenRate;
  ULONG       TokenBucketSize;
  ULONG       PeakBandwidth;
  ULONG       Latency;
  ULONG       DelayVariation;
  SERVICETYPE ServiceType;
  ULONG       MaxSduSize;
  ULONG       MinimumPolicedSize;
} FLOWSPEC, *PFLOWSPEC, *LPFLOWSPEC;

成员

TokenRate

指定在流的整个生命周期内可以传输数据的允许速率。 TokenRate 成员类似于在 WAN 技术(例如帧中继)中看到的其他令牌桶模型,其中令牌类似于信用额度。 如果未立即使用此类令牌,在 Windows 2000 服务质量) 的情况下,它们会累积以允许数据传输 (PeakBandwidth 的特定定期限制。 但是,额度的累计限制为指定数量, (TokenBucketSize) 。 限制) 令牌 (总额度可避免以下情况:例如,处于非活动状态一段时间的流会大量累积令牌占用可用带宽。 由于流可能会随着时间的推移累积传输点数, (其 TokenRate 值) 最多只能达到其 TokenBucketSize 的最大值,并且由于流在到 其 PeakBandwidth 的突发传输方面受到限制,因此会维护流量控制和网络设备资源完整性。 维护流量控制是因为流不能一次发送太多数据,并且网络设备资源完整性会得到维护,因为此类设备可以避免高流量突发。

使用此模型,应用程序只有在有足够的额度可用时才能传输数据。 如果额度不足,应用程序必须根据QOS_SD_MODE) 的值等待或放弃流量 (。 因此,应用程序必须将其 TokenRate 请求基于传输要求的合理预期。 例如,在视频应用程序中, TokenRate 通常设置为从峰值到峰值的平均比特率。

如果将 TokenRate 设置为仅在接收方上QOS_NOT_SPECIFIED,则 MTU) 的最大传输单元 (用于 TokenRate,并且不会对令牌存储桶模型) (传输速率的限制生效。 因此, TokenRate 以字节/秒为单位表示。

TokenRate 成员不能设置为零。 也不能将其设置为默认 (即,在发送 FLOWSPEC 中设置为QOS_NOT_SPECIFIED) 。

TokenBucketSize

流给定方向可以累积的最大额度,无论时间长长,以字节为单位。 在视频应用程序中, TokenBucketSize 可能是最大的平均帧大小。 在恒定速率应用程序中,应将 TokenBucketSize 设置为允许较小的变化。

PeakBandwidth

给定流的基于时间的传输权限上限(以字节/秒为单位)。 PeakBandwidth 成员通过强制实施每秒数据传输上限来限制可能累积大量传输额度的流,或因超负荷网络资源而产生一次性或周期性数据突发的令牌。 某些中间系统可以利用此信息,从而更有效地分配资源。

Latency

发送方传输一位与一个或多个预期接收方接收之间的最大可接受延迟(以微秒为单位)。 此数字的精确解释取决于 QOS 请求中指定的保证级别。

DelayVariation

数据包可能遇到的最大和最小延迟之间的差异(以微秒为单位)。 应用程序使用 DelayVariation 来确定流接收端所需的缓冲区空间量。 此缓冲区空间信息可用于还原原始数据传输模式。

ServiceType

指定要协商流的服务级别。 ServiceType 成员可以是以下定义的服务类型之一。

含义
SERVICETYPE_NOTRAFFIC
指示不会向指定方向传输任何流量。 在支持双工的媒体上,此值指示基础软件仅设置单向连接。 此服务类型对 TC API 无效。
SERVICETYPE_BESTEFFORT
导致 RSVP SP 不执行任何操作。 但是,流量控制确实会创建 BESTEFFORT 流,流上的流量将由流量控制处理,这与其他 BESTEFFORT 流量类似。
SERVICETYPE_CONTROLLEDLOAD
提供端到端 QOS,该 QOS 与尽最大努力服务提供的传输质量非常接近,这与数据路径上的关联网络组件在卸载条件下的预期情况相同。

因此,使用 SERVICETYPE_CONTROLLEDLOAD 的应用程序可能假定以下内容:

  • 网络会将非常高百分比的传输数据包传送到其目标接收方。 换句话说,数据包丢失将非常接近传输介质的基本数据包错误率。
  • 对于非常高百分比的已传递数据包,传输延迟不会大大超过任何成功传递的数据包所经历的最小传输延迟。
SERVICETYPE_GUARANTEED
保证数据报将在保证的传递时间内到达,并且不会因为队列溢出而被丢弃,前提是流的流量保持在指定的流量参数内。 此服务适用于需要坚决保证数据报在源传输后不迟于特定时间到达的应用程序。
SERVICETYPE_QUALITATIVE
指示应用程序需要比 BESTEFFORT 传输更好的传输,但无法量化其传输要求。 使用 SERVICETYPE_QUALITATIVE 的应用程序可以提供应用程序标识符策略对象。 应用程序标识策略对象使网络上的策略服务器能够识别应用程序,并相应地为请求分配适当的服务质量。 有关应用程序标识的详细信息,请参阅 IETF Internet 草稿 draft-ietf-rap-rsvp-appid-00.txt 或有关应用程序标识的 Microsoft 白皮书。 流量控制处理此类型的流,其优先级与本地计算机上的 BESTEFFORT 流量相同。 但是,应用程序程序员可以使用 QOS_TRAFFIC_CLASS QOS 对象修改关联流上的第 2 层设置,从而提升此类流的优先级。
SERVICETYPE_NETWORK_UNAVAILBLE
用于通知网络更改。
SERVICETYPE_NETWORK_CONTROL
仅用于传输控制数据包 (如 RSVP 信号消息) 。 此 ServiceType 具有最高优先级。
SERVICETYPE_GENERAL_INFORMATION
指定流支持所有服务类型。 只能在发送方使用。
SERVICETYPE_NOCHANGE
指示使用此 ServiceType 值的传输中的服务质量不会更改。 SERVICETYPE_NOCHANGE只能在一个方向请求更改服务质量时使用,或者仅在 QOS 规范的 ProviderSpecific 参数中请求更改,而不是在 SendingFlowspecReceivingFlowspec 中请求更改时使用。
SERVICETYPE_NONCONFORMING
用于指示不合格流量。
SERVICE_NO_TRAFFIC_CONTROL
指示不应在指定方向上调用流量控制。
SERVICE_NO_QOS_SIGNALING
禁止在指定方向上发出 RSVP 信号。
 

以下列表标识 了 ServiceType 设置的相对优先级:

SERVICETYPE_NETWORK_CONTROL

SERVICETYPE_GUARANTEED

SERVICETYPE_CONTROLLED_LOAD

SERVICETYPE_BESTEFFORT

SERVICETYPE_QUALITATIVE

不符合的流量

例如,如果给定的网络设备是资源受限的,并且必须从上述 ServiceType 设置之一传输数据包中进行选择,则首先会发送SERVICETYPE_NETWORKCONTROL的数据包,如果没有需要传输的 ServiceType 数据包,它将发送 ServiceType SERVICETYPE_GUARANTEED 数据包,依此类举。

MaxSduSize

指定流量流中允许或使用的最大数据包大小(以字节为单位)。

MinimumPolicedSize

指定将提供所请求服务质量的最小数据包大小(以字节为单位)。 小于此大小的数据包被流量控制视为 MinimumPolicedSize。 将 FLOWSPEC 结构与 RSVP 结合使用时, MinimumPolicedSize 的值不能为零;但是,如果将 FLOWSPEC 结构专门用于 TC API,则可以将 MinimumPolicedSize 设置为零。

注解

通过将 FLOWSPEC 结构的多个成员设置为默认值,可以将 该成员设置为 QOS_NOT_SPECIFIED。 请注意,可设置为默认值的成员会有所不同,具体取决于 FLOWSPEC 是接收 FLOWSPEC 还是发送 FLOWSPEC

FLOWSPEC 与流量控制配合使用时,应记住几个注意事项:

  • 可为SERVICETYPE_NETWORKCONTROL、SERVICETYPE_QUALITATIVE和SERVICETYPE_BESTEFFORT QOS_NOT_SPECIFIED TokenRateTokenRate 必须对所有其他 ServiceType 值有效。
  • 如果指定 了 PeakBandwidth ,则必须大于或等于 TokenRate
ServiceType 外,在接收 FLOWSPEC 中可以默认设置许多设置,但需要考虑以下事项:
  • 对于受控负载服务接收器,默认值派生自发送方 TSPEC
  • 对于保证服务接收方,必须指定 ServiceTypeTokenRate
以下列表指定在接收 FLOWSPEC 将相应值设置为默认值时应用的值:

ServiceType 的值设置为 SERVICETYPE_GUARANTEED 时,以下情况也适用:

  • RSPEC 中的 RATE 值设置为 TokenRate 的值。
  • RSPEC 中的 DELAYSLACKTERM 值设置为 DelayVariation,如果 DelayVariation 设置为 QOS_NOT_SPECIFIED,则设置为零。
  • 对于请求SERVICETYPE_GUARANTEED的接收方,必须指定接收 TokenRate 。 这与SERVICETYPE_CONTROLLEDLOAD接收方形成鲜明对比, TokenRate 可能设置为QOS_NOT_SPECIFIED。
在发送 FLOWSPEC 中,除 ServiceTypeTokenRate 外,所有内容都可以默认。 以下列表指定发送 FLOWSPEC 将相应值设置为默认值时应用的值:

流量控制: 以下 ServiceType在专门处理流量控制时无效。 如果不确定是否直接使用流量控制 (,因此需要关注以下 ServiceType是否适用于) 的情况,则可能不是:

SERVICE_NO_TRAFFIC_CONTROL
SERVICE_NO_QOS_SIGNALING
SERVICETYPE_GENERAL_INFORMATION
SERVICETYPE_NETWORK_UNAVAILABLE
SERVICETYPE_NOCHANGE
SERVICETYPE_NOTRAFFIC

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
标头 qos.h

另请参阅

Qos