Priority-based Flow Control (PFC)

Note: PFC is supported on 7220 IXR-H4/H5/D4/D5 and 7250 IXR-6e/10e/18e/X1b/X3b platforms.

Priority-based flow control (PFC), based on the IEEE 802.1Qbb standard, is a link-level flow control mechanism that extends the capabilities of IEEE 802.3x-based Ethernet flow control. With the 802.3x standard, when a receiving interface experiences congestion, it can send a pause frame to the transmitting interface to suspend the flow of traffic for all priority values. PFC operates using a similar pause frame, but unlike 802.3x, the PFC pause frame can encode a different pause time for each of the eight different 802.1p CoS values. Instead of suspending traffic for all priority values at once, PFC suspends the flow of traffic for individual priority values. The pause time is measured in quanta, which is the time to transmit 512 bits (and where a quanta value of 0 indicates to unpause).

The main application of PFC is to support Fibre channel over Ethernet (FCoE). With FCoE, the FC-2 Fibre Channel layer assumes a lossless medium. When a receiving interface exceeds its buffer threshold, the interface sends pause frames to the transmitter to stop it from sending more FCoE frames.

SR Linux supports only statically-enabled PFC, and only for unicast traffic. SR Linux also supports the Data Center Bridging Capability Exchange (DCBX) protocol for the exchange of PFC data between peers to identify misconfigurations. However, autonegotiation of PFC settings using DCBX is not supported.

The PFC feature can be enabled on a per-interface and per-priority basis.

On an interface, PFC and traditional 802.3x-based Ethernet flow control (interface ethernet flow-control) are mutually exclusive.

Basic operation

With SR Linux, the basic operation of PFC is as follows:
  • When an interface receives a packet at ingress, it is assigned a specific PFC queue based on mapping from the incoming packet's FC or dot1p value.
  • The PFC feature monitors for congestion on the interface ingress buffers at the level of each PFC queue.
  • When PFC detects congestion in a PFC queue based on exceeding the mbs (on 7220 IXR) or pfc-on-threshold (defined as a percentage of MBS on 7250 IXR), it signals the upstream traffic-transmitting interface to pause sending traffic of that particular priority.
  • On the traffic-transmitting interface, a PFC priority can be associated with a single unicast egress queue. So when the traffic-transmitting interface receives a PFC pause frame from the traffic-receiving interface, it pauses traffic on the egress queue associated with that PFC priority.

The following sections provide platform-specific implementation details for PFC.

PFC on 7250 IXR platforms

The following sections describe PFC operation on 7250 IXR-6e/10e/18e/X1b/X3b platforms.

Ingress PFC operation on the traffic-receiving interface (7250 IXR)

On 7250 IXR-6e/10e/18e/X1b/X3b platforms, the operation of PFC on a traffic-receiving interface is a function of the following elements:

Mapping of forwarding classes to PFC queues

The incoming packets are mapped to one of eight PFC queues based on the forwarding class index of the packet, as determined by the applicable subinterface-level classification policy. The following table shows the default mapping of forwarding class index values to PFC queue values.

Table 1. Forwarding class index to PFC queue mapping
Forwarding class index PFC queue
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7

You can also display this mapping using the info from state qos interfaces interface <interface> pfc pfc-queue pfc* forwarding-class command.

In addition, the PFC queues are associated one-to-one with the PFC priority values; that is, PFC queue 0 is associated with priority 0, PFC queue 1 is associated with priority 1, and so on.

Receive buffer sections

The interface buffer serves eight PFC queues, each having a length equal to the maximum burst size (MBS), as defined in the PFC queue settings of the buffer allocation profile.

Pause frame generation thresholds (percentage of MBS)

The system generates PFC pause frames for a PFC queue after the queue length reaches the pfc-on-threshold value, and stops generating PFC pause frames after the queue length falls under the pfc-off-threshold value. Both values are defined in the buffer allocation profile as a percentage of the PFC queue MBS.

Egress PFC operation on the traffic-transmitting interface (7250 IXR)

On 7250 IXR-6e/10e/18e/X1b/X3b platforms, the operation of PFC on the traffic-transmitting (and therefore PFC pause frame-receving) interface is a function of the following elements:

Pause frame priority to egress queue mapping

The mapping of PFC pause frame priorities to egress queues is configurable in the PFC mapping profile. This profile determines which egress queues react to which PFC pause frame priorities. A single PFC pause frame priority can be configured per egress queue. When the transmitting system receives a PFC pause frame from a downstream receiver, it stops transmitting from the applicable queue. If the given egress queue is configured to react to a PFC priority of 1, it does so as long as the PFC pause frame contains a PFC priority of 1, whether or not traffic of other priorities is present in the queue.

Deadlock recovery

SR Linux also supports a deadlock recovery mechanism, which prevents permanent shutdown of the egress interface based on deadlock timers configured in the PFC mapping profile. When the deadlock timers are configured, if a queue receives PFC pause frames that prevent it from forwarding traffic for longer than the defined detection period, the system ignores the PFC pause frames on the queue and resumes forwarding traffic for a defined recovery period.

PFC on 7220 IXR platforms

The following sections describe PFC operation on 7220 IXR-H4/H5/D4/D5platforms.

Ingress PFC operation on the traffic-receiving interface (7220 IXR)

On 7220 IXR-H4/H5/D4/D5 platforms, the operation of PFC on a traffic-receiving interface is a function of the following elements:

Mapping of dot1p or forwarding class values to PFC queues

The PFC mapping profile maps ingress packets into one of eight PFC queues based on the packet's dot1p value (for tagged frames) or forwarding class (for untagged frames), as determined by the applicable subinterface classification policy. Multiple dot1p values or forwarding classes can be mapped into a single PFC queue. However, dot1p and forwarding class settings are mutually exclusive within a single PFC mapping profile.

Receive buffer allocation

The main difference in PFC operation between the 7250 IXR platforms and the 7220 IXR platforms is the size of the receive buffer. 7220 IXR-H4/H5/D4/D5 platforms have a smaller buffering capacity than the 7250 IXR platforms. As a result, the PFC queues share the interface buffer dynamically.

The buffer allocation profile includes the following options for allocating available buffer space to the PFC queues:

  • The maximum-burst-size command allocates the maximum amount of shared buffer memory available for an individual PFC queue.
  • The maximum-pfc-reserved-share-percentage command (or alternatively, maximum-pfc-reserved-share-bytes) defines the maximum level the PFC queue can take from the PFC reserved buffer per forwarding complex, to prevent starvation of other PFC queues.

PFC buffer reservation

On 7220 IXR-H4/H5/D4/D5 platforms, a PFC buffer reservation section is required for PFC queues to accommodate in-flight frames (the frames which are received after the PFC pause frame has been generated to the sender, but the sender has not yet reacted to it). The PFC buffer reservation section is implemented on each forwarding complex using the qos linecard forwarding-complex input pfc-buffer-reservation command. You must provision this buffer space to accommodate for in-flight frames depending on the number of PFC-enabled queues and their respective speed.

Pause frame generation based on MBS

In the PFC mapping profile, a single PFC pause frame priority can be mapped per individual PFC queue. When a PFC queue is congested (queue size reaches the MBS, as defined in the buffer allocation profile), the system generates a PFC pause frame indicating the priority that is experiencing the congestion. When the queue size falls below MBS, the system stops generating the PFC pause frames.

Egress PFC operation on the traffic-transmitting interface (7220 IXR)

On 7220 IXR-H4/H5/D4/D5 platforms, the operation of PFC on the traffic-transmitting (and therefore PFC pause frame-receiving) interface is a function of the following elements:

Pause frame priority to egress queue mapping

The mapping of PFC pause frame priorities to egress queues is configurable using a PFC mapping profile. This profile determines which egress queues react to which PFC pause frame priorities. A single PFC pause frame priority can be configured per egress queue. When the transmitting system receives a PFC pause from a downstream receiver, it stops transmitting from the applicable queue. If the egress queue is configured to react to a PFC priority of 1, it does so as long as the PFC pause frame contains the PFC priority of 1, whether or not traffic of other priorities is present in the queue. All traffic in the egress queue remains paused until either the pause time expires or the interface receives an unpause message from the downstream receiver.

Deadlock recovery

SR Linux supports a deadlock recovery mechanism, which prevents permanent shutdown of the egress queue based on deadlock timers configured in the PFC mapping profile. When the deadlock timers are configured, if a queue receives PFC pause frames that prevent it from forwarding traffic for longer than the defined detection period, the system ignores the PFC pause frames on the queue and resumes forwarding traffic for a defined recovery period.

PFC configuration

The following table describes the configuration elements available for the PFC feature.

Note: Changes to any existing PFC configuration are applied without the need to administratively disable and re-enable PFC.
Table 2. PFC configuration elements
Element Description

PFC queue name and index

Defines a custom PFC queue name and index (similar to custom egress queue configuration)

PFC mapping profile

  • Defines which egress queues are PFC-enabled and defines the mapping of priorities to those egress queues

    Note: If you enable PFC only for a subset of queues at egress, PFC is effectively disabled for the remaining queues in the upstream, transmitting node, because any PFC message sent on those queues is ignored by the receiving node.
  • Defines mapping of priorities to ingress PFC queues (on 7220 IXR-H4/H5/D4/D5)
  • Is applied to an interface

Buffer allocation profile

  • Defines the PFC queue ingress buffer settings

  • Is applied to an interface

Ingress PFC administrative state (interface-level)

Determines whether PFC is enabled at ingress on the interface

PFC buffer reservation

Defines the PFC buffer reservation per forwarding complex (on 7220 IXR-H4/H5/D4/D5)

At ingress, the PFC feature can be enabled per interface only (using the interface pfc-enable command), while at egress, PFC can be enabled or disabled for each egress queue using a PFC mapping profile, which is then applied to an interface.

Default PFC mapping profile

By default, PFC is disabled on SR Linux interfaces. However, a default PFC mapping profile named default is attached to all interfaces. As a result, if the PFC feature is enabled at the interface level, the default profile is available to support the feature.

The PFC behavior can be altered using a custom-defined PFC mapping profile. When a new PFC mapping profile is created, all parameters are initially populated with the same values as the default profile.

To view the default profile, use the info from state qos pfc-mapping-profile default command.

Default PFC buffer allocation profile

The system also provides a default buffer allocation profile (pfc-default). To view this profile, use the info from state qos buffer-management buffer-allocation-profile pfc-default command.

Configuring PFC queue name and index (ingress)

To configure a custom PFC queue name and associate it with an index, use the qos queues pfc-queue command.

Configure a PFC queue

--{ + candidate shared default }--[  ]--
# info with-context qos queues pfc-queue pfc-0
    qos {
        queues {
            pfc-queue pfc-0 {
                queue-index 0
            }
        }
    }

Configuring PFC mapping profiles

SR Linux supports a maximum of three PFC mapping profiles.

To configure a PFC mapping profile, use the qos pfc-mapping-profile command, which defines PFC settings using the following contexts:

  • pfc-priority — configures the administrative state of the PFC priorities.

  • received-pfc-pause-frames — configures the egress (PFC pause frame receiver) parameters.

  • received-traffic (configurable on 7220 IXR-H4/H5/D4/D5 only) — configures the ingress (traffic receiver) parameters. At ingress, PFC can be enabled per interface only.
    Note: On 7250 IXR-6e/10e/18e/X1b/X3b platforms, the ingress mapping of forwarding class indexes to PFC queues is static, therefore this option is not available. See Ingress PFC operation on the traffic-receiving interface (7250 IXR).

Configure a PFC mapping profile (7250 IXR-6e/10e/18e/X1b/X3b)

The following example shows the PFC mapping profile configuration on 7250 IXR-6e/10e/18e/X1b/X3b platforms, including the following egress parameters (under received-pfc-pause-frames):

  • deadlock — specifies the deadlock state and timers
  • queue — specifies the PFC priority associated with the egress queue (referenced queue is the egress queue, not the PFC queue)
--{ + candidate shared default }--[  ]--
# info with-context qos pfc-mapping-profile custom-pfc-mapping-profile
    qos {
        pfc-mapping-profile custom-pfc-mapping-profile {
            pfc-priority 0 {
                pfc-enable true
            }
            received-pfc-pause-frames {
                deadlock {
                    enable true
                    detection-timer 750
                    recovery-timer 750
                }
                queue unicast-0 {
                    pfc-pause-frame-priority 0
                }
            }
        }
    }

Configure a PFC mapping profile (7220 IXR-H4/H5/D4/D5)

The following example shows the PFC mapping profile configuration on 7220 IXR-H4/H5/D4/D5 platforms, including the following ingress parameter (under received-traffic):

  • pfc-queue — defines the PFC queue mapping to PFC priority and to dot1p or forwarding class values

The example also configures the following egress settings (under received-pfc-pause-frames):

  • deadlock — specifies the deadlock state and timers
  • queue — specifies the PFC priority associated with the egress queue
--{ * candidate shared default }--[  ]--
# info with-context qos pfc-mapping-profile custom-pfc-mapping-profile
    qos {
        pfc-mapping-profile custom-pfc-mapping-profile {
            pfc-priority 0 {
                pfc-enable true
            }
            received-traffic {
                unicast-mapping {
                    pfc-queue pfc-0 {    
                        forwarding-class fc0 
                        pfc-pause-frame-priority 0
                   }
                }
            }
            received-pfc-pause-frames {
                deadlock {
                    enable true
                    detection-timer 750
                    recovery-timer 750
                }
                queue unicast-0 {      
                    pfc-pause-frame-priority 0
                }
            }
        }
    }

Applying a PFC mapping profile to an interface

To apply a PFC mapping profile to an interface, use the qos interfaces interface pfc pfc-mapping-profile command.

Apply a PFC mapping profile to an interface

--{ + candidate shared default }--[  ]--
# info with-context qos interfaces interface eth-1/4
    qos {
        interfaces {
            interface eth-1/4 {
                interface-ref {
                    interface ethernet-1/4
                }
                pfc {
                    pfc-mapping-profile custom-pfc-mapping-profile
                }
            }
        }
    }

Configuring a buffer allocation profile for PFC

A buffer allocation profile can define settings for either PFC queues (as shown in this procedure) or for egress queues (see Buffer allocation profile). Because the buffer allocation profile can be applied to an interface under different contexts (input for PFC queues and output for egress queues), SR Linux blocks the configuration of PFC queues and egress queues in the same profile.

To configure a buffer allocation profile for PFC, use the qos buffer-management buffer-allocation-profile command.

Configure a buffer allocation profile for PFC (7250 IXR-6e/10e/18e/X1b/X3b)

The following example shows the buffer allocation profile configuration on 7250 IXR-6e/10e/18e/X1b/X3b platforms, including the following PFC queue ingress settings:

  • maximum-burst-size — MBS
  • pfc-on-threshold, pfc-off-threshold — PFC thresholds (on and off)

The 7250 IXR platforms support only one custom non-default buffer allocation profile.

--{ + candidate shared default }--[  ]--
# info with-context qos buffer-management buffer-allocation-profile custom-pfc-buffer-profile
    qos {
        buffer-management {
            buffer-allocation-profile custom-pfc-buffer-profile {
                queues {
                    pfc-queue pfc-0 {
                        maximum-burst-size 102400
                        pfc-on-threshold 100
                        pfc-off-threshold 80
                    }
                }
            }
        }
    }

Configure a buffer allocation profile for PFC (7220 IXR-H4/H5/D4/D5)

The following example shows the buffer allocation profile configuration on 7220 IXR-H4/H5/D4/D5 platforms, including the following PFC queue ingress settings:

  • maximum-burst-size — MBS
  • maximum-pfc-reserved-share-percentage — Maximum level the PFC queue can take from the PFC reserved buffer per forwarding complex
--{  candidate shared default }--[ qos buffer-management ]--
# info with-context qos buffer-management buffer-allocation-profile custom-pfc-buffer-profile
    qos {
        buffer-management {
            buffer-allocation-profile custom-pfc-buffer-profile {
                queues {
                    pfc-queue pfc-0 {
                        maximum-burst-size 102400
                        maximum-pfc-reserved-share-percentage 10
                    }
                }
            }
        }
    }

Applying a PFC buffer allocation profile to an interface

To apply a buffer allocation to an interface, use the qos interfaces interface input pfc-buffer-allocation-profile command.

Apply buffer allocation profile for PFC

--{  candidate shared default }--[  ]--
#info with-context qos interfaces interface eth-1/4
    qos {
        interfaces {
            interface eth-1/4 {
                interface-ref {
                    interface ethernet-1/4
                }
                input {
                    pfc-buffer-allocation-profile custom-pfc-buffer-profile
                }
            }
        }
    }

Enabling ingress PFC on an interface

Ingress PFC refers to the ability of an interface to react to received PFC frames. With ingress PFC enabled, when the interface receives a PFC pause frame, it pauses the transmission of traffic from the egress queue associated with that priority. If ingress PFC is not enabled and the interface receives a pause frame, it continues to transmit traffic as normal.

Note: Enabling or disabling PFC on a per-interface or per-priority basis can cause packet loss. However, other PFC parameters such as MBS are modifiable without packet losss.
To enable ingress PFC, you must first explicitly disable Ethernet flow control on the interface.
--{ + candidate shared default }--[  ]--
# info with-context interface ethernet-1/4 ethernet flow-control
    interface ethernet-1/4 {
        ethernet {
            flow-control {
                receive false
            }
        }
    }

To enable ingress PFC on an interface, use the pfc-enable true command.

Enable ingress PFC on an interface

--{  candidate shared default }--[  ]--
# info with-context qos interfaces interface eth-1/4
    qos {
        interfaces {
            interface eth-1/4 {
                interface-ref {
                    interface ethernet-1/4
                }
                pfc {
                    pfc-enable true
                }
            }
        }
    }

Configuring the PFC buffer reservation (7220 IXR-H4/H5/D4/D5)

On 7220 IXR-H4/H5/D4/D5 platforms, to configure the PFC buffer reservation section, use the qos linecard forwarding-complex input pfc-buffer-reservation command. This command defines the buffer reservation section as a percentage of the total buffer available.

Configure PFC buffer reservation (7220 IXR-H4/H5/D4/D5)

--{ * candidate shared default }--[  ]--
# info with-context qos linecard 1 forwarding-complex 0 input pfc-buffer-reservation
    qos {
        linecard 1 {
            forwarding-complex 0 {
                input {
                    pfc-buffer-reservation 1
                }
            }
        }
    }

On 7250 IXR-6e/10e/18e/X1b/X3b platforms, the PFC buffer reservation section is set to a fixed, non-configurable size; therefore, this configuration does not apply.

Displaying PFC headroom buffer utilization (7220 IXR-H4/H5/D4/D5)

On 7220 IXR-H4/H5/D4/D5 platforms, you can display the PFC headroom buffer utilization using the info from state platform linecard forwarding-complex buffer-memory pfc-headroom-buffer command with one of the following options:

  • used — displays the used PFC headroom buffer space
  • free — displays the free PFC headroom buffer space

Display PFC headroom buffer utilization (7220 IXR-H4/H5/D4/D5)

--{  candidate shared default }--[  ]--
# info with-context from state platform linecard 1 forwarding-complex 0 buffer-memory pfc-headroom-buffer
    platform {
        linecard 1 {
            forwarding-complex 0 {
                buffer-memory {
                    pfc-headroom-buffer {
                        used 160782
                        free 0
                    }
                }
            }
        }
    }

Displaying per-interface PFC buffer usage

To display buffer usage per PFC interface, use the info from state qos interfaces interface pfc command.

Display per-interface PFC buffer usage (7220 IXR)

--{  candidate shared default }--[  ]--
# info from state qos interfaces interface ethernet-1/1 pfc
    pfc-mapping-profile 1
    pfc-enable true
    source-pfc-mac 00:00:5e:00:53:4B
    deadlock-detection-timer 0
    statistics {
        total-pfc-pause-frames-received 0
        total-pfc-pause-frames-generated 1294985
        total-packet-pfc-discards 0
        pfc-priority 0 {
            pfc-pause-frames-received 0
            pfc-pause-frames-generated 1298805
            pfc-transitions 0
            deadlock-recovery-occurrences 0
        }
...
        pfc-priority 7 {
            pfc-pause-frames-received 0
            pfc-pause-frames-generated 1298798
            pfc-transitions 0
            deadlock-recovery-occurrences 0
        }
    }
    pfc-queue pfc-0 {
        pfc-enable true
        pfc-maximum-burst-size 4738116
        pfc-maximum-pfc-reserved-share 3048
        pfc-buffer-used 4738116
        pfc-reserved-buffer-used 3048
    }
...
    pfc-queue pfc-7 {
        pfc-enable true
        pfc-maximum-burst-size 6409182
        pfc-maximum-pfc-reserved-share 1016
        pfc-buffer-used 6409182
        pfc-reserved-buffer-used 762
    }

Display per-interface PFC buffer usage (7250 IXR)

--{  candidate shared default }--[  ]--
# info from state qos interfaces interface ethernet-1/1 pfc
    pfc-mapping-profile 1
    pfc-enable true
    source-pfc-mac 00:00:5e:00:53:38
    deadlock-detection-timer 0
    statistics {
        total-pfc-pause-frames-received 0
        total-pfc-pause-frames-generated 1447818
        total-packet-pfc-discards 0
        pfc-priority 0 {
            pfc-pause-frames-received 0
            pfc-pause-frames-generated 1447722
            pfc-transitions 0
            deadlock-recovery-occurrences 0
        }
...
        pfc-priority 7 {
            pfc-pause-frames-received 0
            pfc-pause-frames-generated 1447718
            pfc-transitions 0
            deadlock-recovery-occurrences 0
        }
    }
    pfc-queue pfc-0 {
        pfc-enable true
        forwarding-class fc0
        pfc-on-threshold-bytes 204544
        pfc-off-threshold-bytes 196352
        pfc-maximum-burst-size 206592
        pfc-buffer-used 224640
        peak-pfc-buffer-used 224640
    }
...
    pfc-queue pfc-7 {
        pfc-enable true
        forwarding-class fc7
        pfc-on-threshold-bytes 94464
        pfc-off-threshold-bytes 13824
        pfc-maximum-burst-size 113664
        pfc-buffer-used 103680
        peak-pfc-buffer-used 103680
    }

Displaying per-queue PFC buffer usage

To display buffer usage per PFC queue on an interface, use the info from state qos interfaces interface pfc pfc-queue command with one of the following options:

  • pfc-buffer-used – displays the PFC buffer usage by PFC queue
  • pfc-maximum-burst-size – displays the actual maximum burst size of the PFC queue
  • pfc-maximum-pfc-reserved-share (7220 IXR only) – displays the actual maximum share the PFC queue can take from the PFC reserved buffer configured for a given forwarding complex
  • pfc-reserved-buffer-used (7220 IXR only) – displays the reserve PFC buffer usage by PFC queue
  • forwarding-class (7250 IXR only) – displays the forwarding class mapped to the specified PFC queue
  • peak-pfc-buffer-used (7250 IXR only) – displays the peak value for PFC buffer usage by PFC queue (the highest value since the last reboot)
  • pfc-off-threshold-bytes (7250 IXR only) – displays the actual off-threshold of the PFC queue
  • pfc-on-threshold-bytes (7250 IXR only) – displays the actual on-threshold of the PFC queue

Display per-queue PFC buffer usage (7220 IXR)

# info from state qos interfaces interface ethernet-1/1 pfc pfc-queue pfc-0
    pfc-enable true
    pfc-maximum-burst-size 4738116
    pfc-maximum-pfc-reserved-share 3048
    pfc-buffer-used 4738116
    pfc-reserved-buffer-used 3048

Display per-queue PFC buffer usage (7250 IXR)

# info from state qos interfaces interface ethernet-1/1 pfc pfc-queue pfc-0
    pfc-enable true
    forwarding-class fc0
    pfc-on-threshold-bytes 204544
    pfc-off-threshold-bytes 196352
    pfc-maximum-burst-size 206592
    pfc-buffer-used 256608
    peak-pfc-buffer-used 256608

Displaying PFC statistics

To display PFC statistics, use the info from state command.

Display PFC statistics

The following example displays PFC statistics for 7250 IXR platforms. On 7220 IXR-H4/H5/D4/D5 platforms, the output differs in that the pfc-on-threshold-bytes and pfc-off-threshold-bytes fields do not apply.

--{ + candidate shared default }--[  ]--
# info with-context from state qos interfaces interface eth-1/4 pfc
    qos {
        interfaces {
            interface eth-1/4 {
                pfc {
                    pfc-mapping-profile 1
                    source-pfc-mac A8:24:B8:82:E7:70
                    oper-state up
                    deadlock-detection-timer 0
                    statistics {
                        total-pfc-pause-frames-received 0
                        total-pfc-pause-frames-generated 9906478
                        total-packet-pfc-discards 0
                        pfc-priority 0 {
                            pfc-pause-frames-received 0
                            pfc-pause-frames-generated 9906478
                            pfc-transitions 0
                        }
                        pfc-priority 1 {
                            pfc-pause-frames-received 0
                            pfc-pause-frames-generated 0
                            pfc-transitions 0
                        }
                        pfc-priority 2 {
                            pfc-pause-frames-received 0
                            pfc-pause-frames-generated 0
                            pfc-transitions 0
                        }
                        pfc-priority 3 {
                            pfc-pause-frames-received 0
                            pfc-pause-frames-generated 0
                            pfc-transitions 0
                        }
                        pfc-priority 4 {
                            pfc-pause-frames-received 0
                            pfc-pause-frames-generated 0
                            pfc-transitions 0
                        }
                        pfc-priority 5 {
                            pfc-pause-frames-received 0
                            pfc-pause-frames-generated 0
                            pfc-transitions 0
                        }
                        pfc-priority 6 {
                            pfc-pause-frames-received 0
                            pfc-pause-frames-generated 0
                            pfc-transitions 0
                        }
                        pfc-priority 7 {
                            pfc-pause-frames-received 0
                            pfc-pause-frames-generated 0
                            pfc-transitions 0
                        }
                    }
                    pfc-queue pfc-0 {
                        pfc-on-threshold-bytes 230400
                        pfc-off-threshold-bytes 179456
                        pfc-maximum-burst-size 256000
                        pfc-maximum-pfc-reserved-share 10485760
                        forwarding-class [
                            fc0
                        ]
                    }
                    pfc-queue pfc-1 {
                        pfc-on-threshold-bytes 230400
                        pfc-off-threshold-bytes 179456
                        pfc-maximum-burst-size 256000
                        pfc-maximum-pfc-reserved-share 10485760
                        forwarding-class [
                            fc1
                        ]
                    }
                    pfc-queue pfc-2 {
                        pfc-on-threshold-bytes 230400
                        pfc-off-threshold-bytes 179456
                        pfc-maximum-burst-size 256000
                        pfc-maximum-pfc-reserved-share 10485760
                        forwarding-class [
                            fc2
                        ]
                    }
                    pfc-queue pfc-3 {
                        pfc-on-threshold-bytes 230400
                        pfc-off-threshold-bytes 179456
                        pfc-maximum-burst-size 256000
                        pfc-maximum-pfc-reserved-share 10485760
                        forwarding-class [
                            fc3
                        ]
                    }
                    pfc-queue pfc-4 {
                        pfc-on-threshold-bytes 230400
                        pfc-off-threshold-bytes 179456
                        pfc-maximum-burst-size 256000
                        pfc-maximum-pfc-reserved-share 10485760
                        forwarding-class [
                            fc4
                        ]
                    }
                    pfc-queue pfc-5 {
                        pfc-on-threshold-bytes 230400
                        pfc-off-threshold-bytes 179456
                        pfc-maximum-burst-size 256000
                        pfc-maximum-pfc-reserved-share 10485760
                        forwarding-class [
                            fc5
                        ]
                    }
                    pfc-queue pfc-6 {
                        pfc-on-threshold-bytes 230400
                        pfc-off-threshold-bytes 179456
                        pfc-maximum-burst-size 256000
                        pfc-maximum-pfc-reserved-share 10485760
                        forwarding-class [
                            fc6
                        ]
                    }
                    pfc-queue pfc-7 {
                        pfc-on-threshold-bytes 230400
                        pfc-off-threshold-bytes 179456
                        pfc-maximum-burst-size 256000
                        pfc-maximum-pfc-reserved-share 10485760
                        forwarding-class [
                            fc7
                        ]
                    }
                }
            }
        }
    }