管理本地 DCBX 意愿状态
IEEE 802.1Qaz 草案标准定义了数据中心桥接交换 (DCBX) 协议。 此协议允许在网络适配器 (本地对等方) 和直接连接的远程对等方之间交换 DCB 配置参数。 这样,这些对等方就可以调整服务质量 (QoS) 参数,以优化通过连接传输数据。
微型端口驱动程序基于本地和远程 QoS 参数设置解决冲突并派生一组可操作的 QoS 参数。 网络适配器使用这些操作参数将数据包优先传输到远程对等方。 有关驱动程序如何解析其操作 NDIS QoS 参数设置的详细信息,请参阅 解析操作 NDIS QoS 参数。
DCBX 由 DCB type-length-value (TLV) 设置组成,这些设置通过链路层发现协议 (LLDP) 数据包传递。 为以下类型的 QoS 参数定义了单独的 TLV:
ETS 和 PFC 的 TLV 定义了一个称为 “愿意 ”位的位。 如果网络适配器将其 TLV 设置发送到远程对等方,并将“愿意”位设置为 1,则表示适配器愿意接受来自远程对等方的 QoS 参数。
在这些 TLV 中设置单个 Willing 位的能力取决于微型端口驱动程序管理的本地 DCBX Willing 状态。 微型端口驱动程序必须遵循以下准则来管理本地 DCBX 愿意状态:
如果禁用本地 DCBX 愿意状态,则必须在 DCBX TLV 中将本地 Willing 位设置为零。 在这种情况下,操作 QoS 参数始终从本地 QoS 参数解析。 有关这些参数的详细信息,请参阅 设置本地 NDIS QoS 参数。
如果启用了本地 DCBX 愿意状态,则必须在 DCBX TLV 中将本地 Willing 位设置为 1。 在这种情况下,必须从远程 QoS 参数解析操作 QoS 参数。 有关这些参数的详细信息,请参阅 接收远程 NDIS QoS 参数。
注意 如果启用了本地 DCBX 愿意状态,微型端口驱动程序还可以根据独立硬件供应商 (IHV) 定义的任何专有 QoS 设置解析其操作 QoS 参数。 驱动程序只能对未由对等方远程配置的 QoS 参数或操作系统在本地配置的 QoS 参数执行此操作。
微型端口驱动程序通过以下方式管理本地 DCBX 愿意状态:
通过调用 MiniportInitializeEx 函数初始化微型端口驱动程序时,它应基于 IHV 定义的专有 QoS 设置启用本地 DCBX 愿意状态。
DCB 组件 (Msdcb.sys) 发出对象标识符 (OID) 方法请求 OID_QOS_PARAMETERS ,以在网络适配器上配置本地 QoS 参数。 此 OID 请求的 NDIS_OID_REQUEST 结构的 InformationBuffer 成员包含指向NDIS_QOS_PARAMETERS结构的指针。
如果在此结构的 Flags 成员中设置了NDIS_QOS_PARAMETERS_WILLING标志,微型端口驱动程序将启用 DCBX Willing 状态。 如果未设置此位,微型端口驱动程序将禁用 DCBX 愿意状态。
有关 LLDP 的详细信息,请参阅 IEEE 802.1AB-2005 标准。
有关本地 DCBX 愿意位和 TLV 的详细信息,请参阅 IEEE 802.1Qaz 草案标准。
注意从Windows Server 2012开始,DCB 组件可以通过 PowerShell cmdlet 进行配置,以在发出OID_QOS_PARAMETERS请求时设置或清除NDIS_QOS_PARAMETERS_WILLING标志。 这会导致微型端口驱动程序分别启用或禁用本地 DCBX 愿意状态。