本页内容
PFC 观察程序
PFC 观察程序概述
无损以太网中使用基于优先级的流控制 (PFC) 暂停帧,以暂停链路伙伴发送数据包。这些 PFC 暂停帧可以在整个网络中传播,并可能导致 PFC 流上的流量停止。使用 PFC 观察程序检测并解决 PFC 暂停风暴。
PFC 监控器会监控支持 PFC 的端口,以监控 PFC 暂停风暴。如果启用了 PFC 的端口长时间收到 PFC 暂停帧,而 PFC 看门程序未检测到该端口上的流控制帧,PFC 看门狗将缓解这种情况。通过禁用在可配置的时间长度(称为恢复时间)内检测到 PFC 暂停风暴的队列来做到这一点。恢复时间过后,PFC 监察程序会重新启用受影响的队列。
了解 PFC 监控程序
PFC 监察程序有三个功能:检测、缓解和恢复。
PFC 监视程序会定期检查 PFC 队列的状态,这一间隔称为轮询间隔。如果 PFC 监视程序发现具有非零暂停计时器的 PFC 队列,它将该队列的当前传输计数器寄存器与最后记录的值进行比较。如果 PFC 队列自上次轮询间隔以来未传输任何数据包,则 PFC 监察机构会检查队列中是否有任何数据包。如果队列中有未传输的数据包,且该端口上没有流控制帧,则 PFC 监视程序会检测到停滞情况。
在 PFC 监控程序检测到停滞情况后,它会禁用一段时间(称为恢复时间)检测到 PFC 暂停风暴的队列。在此期间,它会刷新队列中的所有数据包,防止新数据包添加到队列中。在恢复期间,系统会监控 PFC 队列上的所有数据包丢弃情况。
恢复时间结束时,PFC 监察器会收集入口丢弃计数器以及与禁用 PFC 队列关联的任何其他丢弃计数器。PFC 监视程序会维护上次恢复期间丢失的数据包计数,以及设备启动以来由于 PFC 缓解而丢失的数据包总数。然后,PFC 监视程序会还原队列并重新启用 PFC。
如何配置 PFC 观察程序
启用 PFC 观察程序
PFC 监视程序仅适用于 PFC 队列。要将队列指定为 PFC 队列,请使用 flow-control-queue
带有队列编号的语句:
set class-of-service congestion-notification-profile cnp output ieee-802.1 code-point 011 flow-control-queue 3 set class-of-service congestion-notification-profile cnp output ieee-802.1 code-point 100 flow-control-queue 4
在层次结构级别使用 pfc-watchdog
语句 [edit class-of-service congestion-notification-profile profile-name]
启用 PFC 监视程序:
set class-of-service congestion-notification-profile profile-name pfc-watchdog
在拥塞通知配置文件上启用 PFC 监视程序而不配置其他选项,即可使用默认值启用 PFC 监视程序。默认情况下,轮询间隔为 100 毫秒,检测周期设置为 2(即两个轮询间隔或 200 毫秒),恢复时间为 200 毫秒。要了解如何配置非默认值,请阅读以下部分。
检测
PFC 监察程序会定期监控支持 PFC 的队列,当队列为空时,下游设备会持续执行 PFC 暂停断言。如果发生这种情况,PFC 看门程序会检测到停滞情况。系统必须在指定时间内检测到此停滞情况。此时间长度由配置两个语句的方式决定: poll-interval
和 detection
。
PFC 监视程序定期检查 PFC 队列的状态。使用 poll-interval
语句配置此间隔(以毫秒为单位)。PFC 监视程序在每轮询间隔检查一次队列的状态。默认间隔为 100 毫秒。最小间隔为 100 毫秒,最大间隔为 1000 毫秒。
set class-of-service congestion-notification-profile profile-name pfc-watchdog poll-interval time
PFC 监视程序必须先检测到至少连续两个轮询间隔的停滞情况,然后才能确定 PFC 队列已停止。 detection
配置语句以控制 PFC 监视程序在缓解停滞流量之前等待多少个轮询间隔。默认为两个轮询间隔。最大为 10 个轮询间隔。
set class-of-service congestion-notification-profile profile-name pfc-watchdog detection number of polling intervals
总检测时间是轮询间隔的长度乘以轮询间隔数。
缓解
当 PFC 监视程序检测到 PFC 队列已停止时,会将队列移动到缓解状态。配置语句 pfc-watchdog-action
以指定 PFC 监控程序为缓解流量拥塞而采取的操作。唯一选项是丢弃操作。当 PFC 监视程序检测到 PFC 队列已停止时,它会丢弃停止的 PFC 队列的所有排队数据包和所有新到达的数据包。
set class-of-service congestion-notification-profile profile-name pfc-watchdog pfc-watchdog-action drop
恢复
recovery
使用该语句可以配置 PFC 监察组在恢复 PFC 之前禁用受影响队列的时长。最小恢复周期为 200 毫秒,最大值为 10,000 毫秒。
set class-of-service congestion-notification-profile profile-name pfc-watchdog recovery time
恢复时间过后,PFC 监督器在受影响的队列上重新启用 PFC。
验证
使用以下命令验证是否已正确配置 PFC 监视程序:
show class-of-service congestion-notification-profile Name: cnp, Index: 0 Type: Input Cable Length: 100 Type: Output Priority Flow-Control-Queues 011 3 Priority Flow-Control-Queues 100 4 PFC Watchdog : enabled PFC-action : drop Polling Interval : 100 ms Detection Time : 200 ms Recovery Time : 200 ms
显示的检测时间是轮询间隔乘以检测期。在这种情况下,轮询间隔为 100 毫秒,因此配置的检测时间为 2。
监控 PFC 观察程序
您可以查看接口上 PFC 队列上已检测和恢复的 PFC 暂停风暴数,以及已丢弃的数据包数。使用以下命令查看特定接口上的 PFC 看门程序统计信息。
show interfaces interface extensive ... Priority Flow Control Watchdog Statistics: Detected Recovered LastPacketDropCount TotalPacketDropCount Queue : 0 0 0 0 0 Queue : 1 0 0 0 0 Queue : 2 0 0 0 0 Queue : 3 0 0 0 0 Queue : 4 0 0 0 0 Queue : 5 0 0 0 0 Queue : 6 0 0 0 0 Queue : 7 0 0 0 0 ...
您可以查看 PFC 监控程序在系统日志中执行的操作。
- 在新端口上启用 PFC 监视程序后,系统日志将显示以下消息:
CDA PfcWd: PFC Watchdog detection enabled on ifd: et-0/0/16 Poll Interval:100ms Detection Period:200ms Recovery Interval:200ms
- 当 PFC 监视程序检测到停滞情况时,系统日志将显示以下消息:
CDA PfcWd: PFC Storm Detected! on ifd:et-0/0/16 Queue: 3 Priority: 3 BLOCKED for AutoRecovery Recovery Time: 200ms
- 当队列从 PFC 暂停风暴中恢复时,系统日志将显示以下消息:
CDA PfcWd: PFC Storm Recovered on Port ifd:et-0/0/16 Queue: 3 Priority: 3 UNBLOCKED after AutoRecovery Recovery Time: 200ms