Frame preemption with IEEE 802.1Qbu

Frame preemption with IEEE 802.1Qbu

A frame preemption feature is a quality of service (QoS) enhancement for switching devices that:

  • reduces latency for time-critical network traffic,

  • temporarily interrupts non-critical frames to transmit urgent frames, and

  • resumes suspended frames after high-priority data is sent.

Frame preemption is based on IEEE 802.1Qbu and Interspersing Express Traffic (IET) standards.

Table 1. Feature History Table

Feature Name

Release information

Description

Frame Preemption with IEEE 802.1Qbu

26.1.1

This feature provides a low-latency mechanism for high-priority frames by allowing the suspension of non-critical frames for critical ones. It helps achieve low latency and low jitter for real-time control networks, effectively extending QoS capabilities. When high-priority frames are transmitted, the preempted non-critical frame resumes transmission, potentially multiple times.

Frame preemption manages network traffic by prioritizing time-critical frames over regular data, ensuring low latency for key applications.

Classification policies tag the frames as high-priority or express.

The preemption is enabled only if both link partners support it, which is verified through a handshake proces.

Guidelines and limitations of Frame preemption

Guidelines:

  • Enable frame preemption only on physical interfaces that require low-latency communication.

  • Ensure both ends of a link support frame preemption before enabling it.

  • Use express queues for time-critical traffic. All CPU-generated control traffic is automatically mapped to high-priority queues.

  • You can enable preemption through an individual QoS policy or through Easy global QoS CLI. However, Easy global QoS CLI and individual QoS policies are mutually exclusive.

    If preemption fails to enable, ensure no conflicting QoS policies are present.

    Preemption and Auto-QoS or preemption and PROFINET QoS policies are mutually exclusive on the same interface. Avoid configuring other QoS policies on interfaces where frame preemption is enabled.

  • Assign sufficient bandwidth to high-priority queues to prevent congestion.

  • If high-priority traffic experiences unexpected delays, check express queue bandwidth allocation and interface support.

  • If the handshake does not complete:

    1. Verify that the peer device supports preemption.

    2. Flap the interface to restart negotiation.

  • Enable preemption on both peer devices. The preemption configuration bounces the port and may cause loss of remote access. To avoid losing access:

    • Configure out-of-band management first, or

    • Configure the remote device before the local device.

  • Ensure that the preemption handshake completes before you set the protocol link status to UP to avoid packet loss.

Limitations:

  • Frame preemption supports:

    • Up to 22 ports per device.

      • On an 8-port expansion module, all ports support preemption.

      • On a 16-port expansion module, preemption is supported on ports 2/1 through 2/11. Ports 2/12 through 2/16 do not support preemption.

    • MACsec with a maximum replay protection window size of 4294967295.

    • 97% line rate traffic expectation with 0% packet loss, beyond this line rate low priority packets might get dropped.

    • Only one express queue can be configured per port.

    • RJ45 ports, 100 Mbps, 1 Gbps, 2.5 Gbps ports.

  • Frame preemption does not support:

    • 10 Mbps and 10 Gbps speeds.

    • WebUI.

    • FPGA features such as PRP,DLR, and HSR.

    • Ether channel and virtual ports.

    • Rate converting SFPs such as Link Converter-Copper (1000BASE-T) (GLC-T), Gigabit Link Converter-Copper (1000BASE-T) extended (GLC-TE), Gigabit Link Converter - Transceiver (copper) - RuGgeDized (GLC-T-RGD).

Frame preemption configuration methods

Frame preemption can be enabled and managed to prioritize time-critical traffic on eligible switch interfaces in two methods.

Configure global frame preemption

You can enable and manage frame preemption to prioritize time-critical traffic on eligible switch interfaces in global configuration mode.

Frame preemption feature gets enabled per interface using preemption-enable interface level command.

Before you begin

  • Ensure your hardware and platform support frame preemption.

  • Ensure both ends of the link support frame preemption.

Procedure


Step 1

Global configuration of frame preemption.

  1. Use the configure terminal command to enter global configuration mode.

    Example:

    Switch# configure terminal
  2. Use the preemption {l2 value | cos value | dscp value } command to configure frame preemption for specified traffic types.

    Example:

    Switch(config)# preemption cos 3, 7
    Switch(config)# preemption l2 0x8892
    Switch(config)# preemption dscp 16,32,46
    Table 2. Syntax description

    Keyword

    Description

    value

    • L2: Provide a unique hexadecimal identifier for the Ethernet type.

    • CoS: Multiple Class of Service (CoS) values can be specified, ranging from 0 to 7. Separate each value with a comma.

    • DSCP: Multiple Differentiated Services Code Point (DSCP) values can be specified, ranging from 0 to 64. Separate each value with a comma.

    Note

     

    Configure only one preemption classification at a time, either DSCP, CoS, or L2. For example, if a CoS preemption policy is active, you must first disable it with no preemption cos before switching to DSCP or L2 preemption.

  3. (Optional) Use the show preemption summary command to check overall status and per-interface support.

    Example:

    Switch# show preemption summary
    ------------------------------------------------------------------------------------------
    Interface       Preemption Supported      Premption Configured      Preemption Operational
    ------------------------------------------------------------------------------------------
    Gi1/1           yes                       yes                       yes                      
    Gi1/2           yes                       yes                       yes                      
    Gi1/3           yes                       no                        no                       
    Gi1/4           yes                       no                        no                       
    Gi1/5           yes                       no                        no                       
    Gi1/6           yes                       no                        no                       
    Gi1/7           yes                       no                        no                       
    Gi1/8           yes                       no                        no                       
    Gi1/9           yes                       no                        no                       
    Gi1/10          yes                       no                        no                       
    Gi1/11          yes                       no                        no                       
    Ap1/1           no                        --                        --                       
    Gi2/1           yes                       no                        no                       
    Gi2/2           yes                       no                        no                       
    Gi2/3           yes                       no                        no                       
    Gi2/4           yes                       no                        no                       
    Gi2/5           yes                       no                        no                       
    Gi2/6           yes                       no                        no                       
    Gi2/7           yes                       no                        no                       
    Gi2/8           yes                       no                        no                       
    Gi2/9           yes                       no                        no                       
    Gi2/10          yes                       no                        no                       
    Gi2/11          yes                       no                        no                       
    Gi2/12          no                        --                        --                       
    Gi2/13          no                        --                        --                       
    Gi2/14          no                        --                        --                       
    Gi2/15          no                        --                        --                       
    Gi2/16          no                        --                        --        
  4. (Optional) Use the show controllers ethernet-controller command to monitor detailed interface controlled statistics.

    Example:

    Switch# show controllers ethernet-controller
    Transmit                  GigabitEthernet1/1            Receive                 
          3896829 Total bytes                     1732733 Total bytes              
               20 Unicast frames                        5 Unicast frames           
             1280 Unicast bytes                       896 Unicast bytes            
            39579 Multicast frames                   5790 Multicast frames         
          3895549 Multicast bytes                 1731837 Multicast bytes          
                0 Broadcast frames                      0 Broadcast frames         
                0 Broadcast bytes                       0 Broadcast bytes          
                0 System FCS error frames               0 IpgViolation frames      
                0 MacUnderrun frames                    0 MacOverrun frames        
                0 Pause frames                          0 Pause frames             
                0 Cos 0 Pause frames                    0 Cos 0 Pause frames       
                0 Cos 1 Pause frames                    0 Cos 1 Pause frames       
                0 Cos 2 Pause frames                    0 Cos 2 Pause frames       
                0 Cos 3 Pause frames                    0 Cos 3 Pause frames       
                0 Cos 4 Pause frames                    0 Cos 4 Pause frames       
                0 Cos 5 Pause frames                    0 Cos 5 Pause frames       
                0 Cos 6 Pause frames                    0 Cos 6 Pause frames       
                0 Cos 7 Pause frames                    0 Cos 7 Pause frames       
                0 Oam frames                            0 OamProcessed frames      
                0 Oam frames                            0 OamDropped frames        
    .
    .
    .
    Transmit                  GigabitEthernet2/16           Receive                 
                0 Total bytes                           0 Total bytes              
                0 Unicast frames                        0 Unicast frames           
                0 Unicast bytes                         0 Unicast bytes            
                0 Multicast frames                      0 Multicast frames         
                0 Multicast bytes                       0 Multicast bytes          
                0 Broadcast frames                      0 Broadcast frames         
                0 Broadcast bytes                       0 Broadcast bytes          
                0 System FCS error frames               0 IpgViolation frames      
                0 MacUnderrun frames                    0 MacOverrun frames        
                0 Pause frames                          0 Pause frames             
                0 Cos 0 Pause frames                    0 Cos 0 Pause frames       
                0 Cos 1 Pause frames                    0 Cos 1 Pause frames       
                0 Cos 2 Pause frames                    0 Cos 2 Pause frames       
                0 Cos 3 Pause frames                    0 Cos 3 Pause frames       
                0 Cos 4 Pause frames                    0 Cos 4 Pause frames       
                0 Cos 5 Pause frames                    0 Cos 5 Pause frames       
                0 Cos 6 Pause frames                    0 Cos 6 Pause frames       
                0 Cos 7 Pause frames                    0 Cos 7 Pause frames       
                0 Oam frames                            0 OamProcessed frames      
                0 Oam frames                            0 OamDropped frames        
                0 Minimum size frames                   0 Minimum size frames      
                0 65 to 127 byte frames                 0 65 to 127 byte frames    
                0 128 to 255 byte frames                0 128 to 255 byte frames   
                0 256 to 511 byte frames                0 256 to 511 byte frames   
                0 512 to 1023 byte frames               0 512 to 1023 byte frames  
                0 1024 to 1518 byte frames              0 1024 to 1518 byte frames 
                0 1519 to 2047 byte frames              0 1519 to 2047 byte frames 
                0 2048 to 4095 byte frames              0 2048 to 4095 byte frames 
                0 4096 to 8191 byte frames              0 4096 to 8191 byte frames 
                0 8192 to 16383 byte frames             0 8192 to 16383 byte frames
                0 16384 to 32767 byte frame             0 16384 to 32767 byte frame
                0 > 32768 byte frames                   0 > 32768 byte frames      
                0 Late collision frames                 0 SymbolErr frames         
                0 Excess Defer frames                   0 Collision fragments      
                0 Good (1 coll) frames                  0 ValidUnderSize frames    
                0 Good (>1 coll) frames                 0 InvalidOverSize frames   
                0 Deferred frames                       0 ValidOverSize frames     
                0 Gold frames dropped                   0 FcsErr frames            
                0 Gold frames truncated    
                0 Gold frames successful   
                0 1 collision frames       
                0 2 collision frames       
                0 3 collision frames       
                0 4 collision frames       
                0 5 collision frames       
                0 6 collision frames       
                0 7 collision frames       
                0 8 collision frames       
                0 9 collision frames       
                0 10 collision frames      
                0 11 collision frames      
                0 12 collision frames      
                0 13 collision frames      
                0 14 collision frames      
                0 15 collision frames      
                0 Excess collision frame
  5. (Optional) Use the show controllers ethernet-controller interface_name preemption handshake command to monitor preemption handshake information.

    Example:

    Switch# show controllers ethernet-controller gi1/1 preemption handshake
    Gi1/1
    -----------------------------------------------------------------------------
    Handshake frame counters
        Verify Rx........................ [2]
        Verify Tx........................ [2]
        Respond Rx....................... [3]
        Respond Tx....................... [3]
        Frame Ass Error Count............ [0]
        Frame SMD Error Count............ [0]
        Frame Ass OK Count............... [0]
        SMDV Rx.......................... [2]
        SMDR Rx.......................... [3]  
  6. Use the show controllers ethernet-controller interface_name preemption drops command to monitor preemption drop information.

    Example:

    Switch# show controllers ethernet-controller gi1/1 preemption drops
    Gi1/1
    -----------------------------------------------------------------------------
    Port Preemption Frame Drops
        Express Tx Drops....................... [0]
        Express Rx Drops....................... [9]
        Preemptable Tx Drops................... [0]
        Preemptable Rx Drops................... [0]
        Fragment Drops......................... [0]  
  7. (Optional) Use the show controllers ethernet-controller interface_name preemption stats to view the express and preemptable traffic frame statistics.

    Example:

    Switch# show controllers ethernet-controller gi1/1 preemption stats
    Gi1/1
    -----------------------------------------------------------------------------
                                        Express counters     Preemptable counters
    -----------------------------------------------------------------------------
    Total frames received               5777                 16                  
    64 byte frames                      2265                 3                   
    65 to 127 byte frames               0                    0                   
    128 to 255 byte frames              0                    0                   
    256 to 511 byte frames              3521                 13                  
    512 to 1023 byte frames             0                    0                   
    1024 to 1518 byte frames            0                    0                   
    1519 to 2047 byte frames            0                    0                   
    2048 to 4095 byte frames            0                    0                   
    4096 to 8191 byte frames            0                    0                   
    8192 to 16383 byte frames           0                    0                   
    16384 to 32767 byte frames          0                    0                   
    32768 to Mtu byte frames            0                    0                   
    Init fragment frame count           N/A                  0                   
    Contd fragment frame count          N/A                  0                   
    
    Total frames transmitted            39525                62                  
    64 byte frames                      35935                49                  
    65 to 127 byte frames               68                   0                   
    128 to 255 byte frames              0                    0                   
    256 to 511 byte frames              3522                 13                  
    512 to 1023 byte frames             0                    0                   
    1024 to 1518 byte frames            0                    0                   
    1519 to 2047 byte frames            0                    0                   
    2048 to 4095 byte frames            0                    0                   
    4096 to 8191 byte frames            0                    0                   
    8192 to 16383 byte frames           0                    0                   
    16384 to 32767 byte frames          0                    0                   
    32768 to Mtu byte frames            0                    0                   
    Init fragment frame count           N/A                  0                   
    Contd fragment frame count          N/A                  0                   
    ----------------------------------------------------------------------------- 

Step 2

Per-interface configuration.

  1. Use the configure terminal command to enter global configuration mode.

    Example:

    Switch# configure terminal
  2. Use the interface interface_name command to configure interface.

    Example:

    Switch(config)# interface gi1/4 
  3. Use the preemption-enable command to enable frame preemption.

    Example:

    Switch(config-if)# preemption-enable

Use no preemption-enable command to disable preemption.

Note

 

Executing the preemption-enable command causes the corresponding ports (links) to flap.

Step 3

(Optional) MACsec replay configuration

  1. Use the configure terminal command to enter global configuration mode.

    Example:

    Switch# configure terminal
  2. Use the interface interface_name command to configure interface.

    Example:

    Switch(config)# interface gi1/1 
  3. Use the macsec replay-protection window-size window_size_value command to configure MACsec replay protection window size.

    Example:

    Switch(config-if)# macsec replay-protection window-size 1000

    The macsec replay-protection window-size ranges from 04294967295. Its default value is 0.


Configure policy CLI frame preemption

You can enable and manage frame preemption to prioritize time-critical traffic on eligible switch interfaces with policy CLI for advanced MQC Qos.

Frame preemption feature gets enabled per interface using preemption-enable interface level command.

Before you begin

  • Ensure your hardware and platform support frame preemption.

  • Ensure both ends of the link support frame preemption.

Procedure


Step 1

Policy CLI configuration (Advanced MQC QoS).

  1. Use the configure terminal command to enter global configuration mode.

    Example:

    Switch# configure terminal
  2. Use the policy-map MY_PREEMPTION_POLICY command to create or enter named policy-map configuration mode.

    Example:

    Switch(config)# policy-map MY_PREEMPTION_POLICY
  3. Use the class CLASS_EXPRESS command to define or enter configuration mode for a specific traffic class within the policy map.

    Example:

    Switch(config-pmap)# class CLASS_EXPRESS
  4. Use the priority level 1 express command to configure the current class as high-priority express traffic for preemption.

    Example:

    Switch(config-pmap-c)# priority level 1 express

    If the system receives a priority level 1 packet, it preempts the current frame to transmit the priority level 1 packet immediately. priority level 2 packets are handled through the normal priority queue without preemption.

  5. Use the exit command to exit and return to EXEC mode.

    Example:

    Switch(config-pmap-c)# exit
  6. Use the class class-default command to define or enter default traffic class configuration mode.

    Example:

    Switch(config-pmap)# class class-default
  7. Use the bandwidth remaining percent 100 command to allocate all remaining available bandwidth to the default class.

    Example:

    Switch(config-pmap-c)# bandwidth remaining percent 100
  8. Use the exit command to exit and return to EXEC mode.

    Example:

    Switch(config-pmap-c)# exit 

Step 2

Attach the policy to an interface.

  1. Use the exit command to exit the policy map configuration mode.

    Example:

    Switch(config-pmap)# exit
  2. Use the interface interface_name command to enter interface configuration.

    Example:

    Switch(config)# interface GigabitEthernet 1/3
  3. Use the service-policy output MY_PREEMPTION_POLICY command to apply the defined policy map to the egress (outgoing) traffic of the interface.

    Example:

    Switch(config-if)# service-policy output MY_PREEMPTION_POLICY
  4. Use the preemption-enable command to enable the frame preemption on the interface.

    Example:

    Switch(config-if)# preemption-enable

Step 3

Per-interface configuration.

  1. Use the configure terminal command to enter global configuration mode.

    Example:

    Switch# configure terminal
  2. Use the interface GigabitEthernet interface_name command to configure interface.

    Example:

    Switch(config)# interface GigabitEthernet 1/3 
  3. Use the preemption-enable command to enable frame preemption.

    Example:

    Switch(config-if)# preemption-enable

Use no preemption-enable command to disable preemption.

Note

 

Executing the preemption-enable command causes the corresponding ports (links) to flap.

Step 4

Use the show policy-map policy-map express command to monitor the preemption policies.

Example:

Switch# show policy-map express
  Policy Map express
    Class cs1
      priority level 1 express
    Class cs2
      bandwidth remaining 20 (%)
    Class cs3
      bandwidth remaining 20 (%)
    Class cs4
      bandwidth remaining 20 (%)
    Class cs5
      bandwidth remaining 10 (%)
    Class cs6
      bandwidth remaining 10 (%)
    Class cs7
      bandwidth remaining 10 (%)
    Class class-default
      bandwidth remaining 10 (%)

Use the show preemption summary command to check overall status and per-interface support

Example:

Switch# show preemption summary
Interface       Preemption Supported      Premption Configured      Preemption Operational
------------------------------------------------------------------------------------------
Gi1/1           yes                       no                        no                       
Gi1/2           yes                       no                        no                       
Gi1/3           yes                       no                        no                       
Gi1/4           yes                       yes                       no                       
Gi1/5           yes                       no                        no                       
Gi1/6           yes                       no                        no                       
Gi1/7           yes                       no                        no                       
Gi1/8           yes                       no                        no                       
Gi1/9           yes                       no                        no                       
Gi1/10          yes                       no                        no                       
Gi1/11          yes                       no                        no                       
Ap1/1           no                        --                        --                       
Gi2/1           yes                       no                        no                       
Gi2/2           yes                       no                        no                       
Gi2/3           yes                       no                        no                       
Gi2/4           yes                       no                        no                       
Gi2/5           yes                       no                        no                       
Gi2/6           yes                       no                        no                       
Gi2/7           yes                       no                        no                       
Gi2/8           yes                       no                        no                       
Gi2/9           yes                       yes                       yes                      
Gi2/10          yes                       no                        no                       
Gi2/11          yes                       no                        no                       
Gi2/12          no                        --                        --                       
Gi2/13          no                        --                        --                       
Gi2/14          no                        --                        --                       
Gi2/15          no                        --                        --                       
Gi2/16          no                        --                        --