Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?


Configuring DSCP-based PFC for Layer 3 Untagged Traffic


You can configure DSCP-based PFC to support lossless behavior for untagged traffic across Layer 3 connections to Layer 2 subnetworks for protocols such as Remote Direct Memory Access (RDMA) over converged Ethernet version 2 (RoCEv2).

With DSCP-based PFC, pause frames are generated to notify the peer that the link is congested based on a configured 6-bit Distributed Services code point (DSCP) value in the Layer 3 IP header of incoming traffic, rather than a 3-bit IEEE 802.1p code point in the Layer 2 VLAN header.

Because PFC on the QFX Series can only send pause frames corresponding to PFC priority code points, the 6-bit configured DSCP value must be mapped to a 3-bit PFC priority to use in pause frames when DSCP-based PFC is triggered. Configuring the mapping involves mapping the PFC priority value to a no-loss forwarding class when you map the forwarding class to a queue, defining a congestion notification profile to enable PFC on traffic with the desired DSCP value, and configuring a DSCP classifier to associate the PFC priority-mapped forwarding class (along with the loss priority) with the configured DSCP value on which to trigger PFC pause frames.

The peer device should have output PFC and a corresponding flow control queue configured to match the PFC priority configuration on the QFX Series device.

To configure DSCP-based PFC:

  1. Map a lossless forwarding class to a PFC priority—a 3-bit value represented in decimal form (0-7)—to use in the PFC pause frames.

    You must also assign an output queue to the forwarding class with the queue-num option. The no-loss option is required in this case to support lossless behavior for DSCP-based PFC, and the pfc-priority statement specifies the priority value mapping, as follows:

    [edit class-of-service]
    user@switch# set forwarding-classes class class-name queue-num queue-number no-loss
    user@switch# set forwarding-classes class class-name pfc-priority pfc-priority
  2. Define an input congestion notification profile to enable PFC on traffic specified by the desired 6-bit DSCP value, and optionally configure the maximum receive unit (MRU) at this time (used to determine PFC buffer headroom space reserved for the link):
    [edit class-of-service]

    user@switch# set congestion-notification-profile name input dscp code-point code-point-bits pfc mru mru-value

    You cannot configure both DSCP-based PFC and IEEE 802.1p PFC under the same congestion notification profile.

  3. Set up a DSCP classifier for the confgured DSCP value and no-loss forwarding class mapped in the previous steps:
    [edit class-of-service]

    user@switch# set classifiers dscp classifier-name forwarding-class class-name loss-priority level code-points code-point-bits
  4. Assign the classifier and congestion notification profile set up in the previous steps to an interface on which you are enabling DSCP-based PFC:
    [edit class-of-service]

    user@switch# set interfaces interface-name classifiers dscp classifier-name

    user @swtich# set interfaces interface-name congestion-notification-profile profile-name

For example, with the following sample commands configuring DSCP-based PFC for interface xe-0/0/1, PFC pause frames will be generated with PFC priority 3 when incoming traffic with DSCP value 110000 becomes congested:

set interfaces xe-0/0/1 unit 0 family inet address

set class-of-service forwarding-classes class fc1 queue-num 1 no-loss

set class-of-service forwarding-classes class fc1 pfc-priority 3

set class-of-service congestion-notification-profile dpfc-cnp input dscp code-point 110000 pfc

set class-of-service classifiers dscp dpfc forwarding-class fc1 loss-priority low code-points 110000

set class-of-service interfaces xe-0/0/1 congestion-notification-profile dpfc-cnp

set class-of-service interfaces xe-0/0/1 classifiers dscp dpfc