跳过导航链接 | |
退出打印视图 | |
管理 Oracle Solaris 11.1 网络性能 Oracle Solaris 11.1 Information Library (简体中文) |
PFC 扩展了标准 PAUSE 帧以包含 IEEE 802.1p CoS 值。使用 PFC,当发送 PAUSE 帧时不会停止链路上的所有通信,而是仅暂停 PFC 帧中启用的 CoS 值所对应的通信。为启用的优先级(具备此优先级的通信需要暂停)发送一个 PFC 帧。发送主机将停止该优先级的通信,而其他禁用的优先级的通信不受影响。经过 PFC 帧中指定的时间间隔之后,或者在发送主机接收到另一个 PFC 帧之后,将恢复这些包的传输。基于优先级暂停可确保不会丢弃该优先级的包。对于未定义任何优先级的包,不会发送 PAUSE 帧。因此,通信将继续进行,但在通信拥塞时可能会丢弃包。
优先级通过 pfcmap 数据链路属性中的 8 位掩码 (0–7) 表示。最低位表示优先级 0,而最高位表示优先级 7。此掩码中每位均可表示是否已为对应的优先级启用 PFC。缺省情况下,pfcmap 设置为 1111111,表示已为所有优先级启用 PFC。对于通过链路传输的任何包,如果在接收主机上产生拥塞,则将向发送主机发送 PFC 帧。
除了 pfcmap 属性,以下属性也提供有关优先级定义和映射的信息:
pfcmap-lcl-effective 指本地主机上的有效 PFC 映射。此属性具有只读权限。此属性可反映 pfcmap 属性或 pfcmap-rmt-effective 属性的值。
pfcmap-rmt-effective 指远程对等方上的有效 PFC 映射。此属性也具有只读权限。
要使 PFC 帧能够正常发送,通信主机必须具有对称的 DCB 配置信息。Oracle Solaris 11 系统可以自动调整其 PFC 配置,以匹配远程对等方的 PFC 配置。
以上列出的两种属性间接指示对等方之间的 PFC 信息是否同步。对于本地和远程对等方之间 PFC 信息匹配的数据链路,不管将 pfcmap 设置为何值,pfcmap-lcl-effective 和 pfcmap-rmt-effective 的值均相同。如果在本地主机上禁用了同步功能,则 pfcmap-lcl-effective 将反映本地主机的 pfcmap 属性的值。
有关这些属性配置提供的 PFC 信息的示例,请参见获取 PFC 配置信息。
PFC TLV 单元控制与从对等主机接收的信息有关的主机行为。此 TLV 单元只有一个可配置属性 willing。缺省情况下,该属性设置为 on,从而使本地主机可以将其 PFC 优先级定义与远程对等方上的 PFC 定义同步。通过将该属性切换为 off,可以防止自动同步特定代理的信息,如下所示:
# lldpadm set-agenttlvprop -p willling=off -a agent pfc
其中,agent 通过启用代理的数据链路进行标识。
大多数情况下,PFC 的缺省配置已足够。启用 LLDP 时会自动设置此配置。但是,为了显示配置 PFC 时可以使用的其他选项,此过程列出了手动配置 PFC 的步骤。这些步骤假定不存在任何自动配置。为了便于理解这些步骤,将对 net0 执行所有配置。
请参见如何启用 DCBX。
缺省情况下,PFC、ETS 和边缘虚拟桥接 (edge virtual bridging, EVB) 已启用。假定您希望仅使用 PFC。那么,您必须从 LLDP 代理的 dot1–tlv 属性中删除其他两个值。有关 dot1–tlv 的可能值的列表,请参阅表 7-3。
# lldpadm set-agenttlvprop -p dot1-tlv-=etscfg,evb net0
# dladm show-linkprop -p flowctrl net0
如果该属性的值列表中不包含 pfc,请发出以下命令:
# dladm set-linkprop -p flowctrl=pfc net0
例如,要仅启用 CoS 优先级 6,请键入以下命令:
# dladm set-linkprop -p pfcmap=01000000 net0
# lldpadm show-agenttlvprop -p willing -a net0 pfc
如果 PFC TLV 属性 willing 设置为 off,请发出以下命令:
# lldpadm set-agenttlvprop -p willing=on -a net0 pfc
本节包含配置 LLDP 和 DCB 后与 PFC 相关的信息的多个示例。
以下命令显示与 PFC 相关的信息:
dladm show-linkprop -p pfcmap,pfc-lcl-effective,pfc-rmt-effective datalink
此命令显示优先级定义以及数据链路上的有效 PFC 映射。
dladm show-phys -D pfc datalink
此命令显示物理链路上与该 NIC 上启用的优先级有关的 PFC 信息。
lldpadm show-agenttlvprop -a agent pfc
其中,agent 通过启用 LLDP 的数据链路进行标识。因此,LLDP 代理的名称与数据链路的名称相同。此命令显示 PFC TLV 属性,该属性控制主机将其 PFC 映射与对等方同步的功能。
lldpadm show-agent -lv -o "PFC Pending" agent
此命令提醒您本地主机和对等方之间的 PFC 映射信息不匹配。
以下示例说明先前列出的命令所显示的信息类型。
示例 8-1 显示与 PFC 相关的数据链路属性
此示例说明如何显示与基于优先级的流量控制相关的数据链路属性的状态。
# dladm show-linkprop -p pfcmap,pfc-lcl-effective,pfc-rmt-effective net0 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE net0 pfcmap rw 11111111 11111111 00000000-11111111 net0 pfcmap-lcl-effective r- 11111111 -- -- net0 pfcmap-rmt-effective r- 01000000 -- --
该输出指示本地主机上的 PFC 映射使用缺省值,其中所有 8 个优先级都已启用。pfcmap-lcl-effective 和 pfcmap-rmt-effective 的值不匹配表示本地主机未将其 PFC 信息与远程对等方同步。此不匹配可能是由允许关闭同步的属性导致的。或者,对等方没有将 PFC TLV 单元发送到网络中。可以通过键入以下命令确认此配置:
示例 8-2 显示本地主机同步 PFC 信息的功能
此示例说明如何显示主机用于适应对等方 PFC 配置的功能的当前状态。
# lldpadm show-agenttlvprop -a net0 pfc AGENT TLVNAME PROPERTY PERM VALUE DEFAULT POSSIBLE net0 pfc willing rw off on on,off
要启用同步,请发出以下命令:
# lldpadm set-agenttlvprop -p willing=on -a net0 pfc # dladm show-linkprop -p pfcmap,pfc-lcl-effective,pfc-rmt-effective net0 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE net0 pfcmap rw 11111111 11111111 00000000-11111111 net0 pfcmap-lcl-effective r- 01000000 -- -- net0 pfcmap-rmt-effective r- 01000000 -- --
在第二个输出中,本地主机丢弃了自己的 PFC 映射 (11111111),而是与对等方同步,现在其生效 PFC 映射与对等方的 PFC 映射完全一致。通过这种值的聚合,主机之间可以成功交换 PFC PAUSE 帧。
示例 8-3 验证主机和对等方之间的 PFC 信息的对称性
此示例说明如何在实际运行时验证主机和对等方之间的 PFC 信息是否同步,或者是否发生不匹配。
# lldpadm show-agent -lv -o "PFC Pending" net0 PFC Pending: True
如果主机和对等方之间的 PFC 信息未聚合,则 PFC Pending 会返回 True 状态。解决不匹配问题之后,PFC Pending 的状态将恢复为 False。
要显示代理所通告的所有信息,请使用 lldpadm show-agent 命令的 verbose 选项:
# lldpadm show-agent -v agent
示例 8-4 显示 CoS 优先级定义
此示例说明如何显示特定数据链路上基于 pfcmap 属性值的当前 CoS 优先级定义。例如,假定 pfcmap 配置为 01000000。要显示物理链路上相应的优先级映射,请执行如下命令:
# dladm show-phys -D pfc net0 LINK COS PFC PFC_EFFECT CLIENTS ixgbe0 0 YES NO net0,vnic1 1 YES YES vnic2 2 YES NO vnic3 3 YES NO vnic4 4 YES NO vnic5 5 YES NO vnic6 6 YES NO vnic7 7 YES NO vnic8
对于物理链路 net0,为数据链路上配置的所有 VNIC 客户机启用了优先级。但是,本地主机将其 PFC 映射调整为对等方的 PFC 映射,如 PFC_EFFECT 字段的值所示,其中,已对 CoS 0 和 2-7 禁用优先级。因此,不会为除 vnic2 之外的任何 VNIC 上的通信交换 PFC 帧,无论资源是否可用。此配置允许对流经 vnic2 之外的任何 VNIC 的通信丢弃包。对于 vnic2 上的通信,在出现通信拥塞时将发送 PFC PAUSE 帧,以防止此客户机上发生包丢失。
应用程序 TLV 单元包含有关要用于主机上某应用程序的优先级的信息。该优先级在应用程序优先级表中进行定义。表中的每一个条目都包含应用程序的名称以及指定给该应用程序的优先级。应用程序 TLV 使用此表向其他主机传输应用程序优先级信息。
表中的条目使用以下格式:
protocol-id/selector/ priority
protocol-id/selector 对标识应用程序。Priority 包含 0 到 7 之间的值,用于标识相应应用程序的优先级。
要与其他主机交换此有关某应用程序优先级的信息,可按如下所示设置应用程序 TLV:
# lldpadm set-agenttlvprop -p property=value -a agent appln
例如,对于 FCoE 通信,协议 ID 为 0x8906,选择器 ID 为 1。假定为此应用程序指定优先级 4。根据表 7-3(列出了用于设置应用程序 TLV 的参数),键入以下命令:
# lldpadm set-agenttlvprop -p apt=8906/1/4 -a net0 appln # lldpadm show-agenttlvprop -a net0 appln AGENT TLVNAME PROPERTY PERM VALUE DEFAULT POSSIBLE net0 appln apt rw 8906/1/4 -- --