在此页面上
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
在层次结构级别使用[edit class-of-service congestion-notification-profile profile-name]
语句启用 pfc-watchdog
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 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