Description

Hashing changed for AE bundle with link-speed mixed after upgrading to Junos 20.2R2-S3.5

Symptoms

Topology:

QFX5110-48S-1------ae0---------------ae0------ QFX5110-48S-2

The aggregate interface has multiple child links (10g ports and 1X100G port) with a mixed link speed enabled. 

  ae0 {
        description test_qfx5100-a-to-qfx5100-2;
        mtu 9000;
        aggregated-ether-options {
            link-speed mixed;
            lacp {
                active;
            }
        }
        unit 0 {
            family ethernet-switching {
                interface-mode trunk;
                vlan {
                    members [ V100 V200 ];
                }
            }
        }
    }

{master:0}
root@c16-37> show lacp interfaces ae0 
Aggregated interface: ae0
    LACP state:       Role   Exp   Def  Dist  Col  Syn  Aggr  Timeout  Activity
      xe-0/0/30      Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      xe-0/0/30    Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
      xe-0/0/32      Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      xe-0/0/32    Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
      xe-0/0/36      Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      xe-0/0/36    Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
      xe-0/0/40      Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      xe-0/0/40    Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
      xe-0/0/42      Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      xe-0/0/42    Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
      xe-0/0/44      Actor    No   Yes    No   No   No   Yes     Fast    Active
      xe-0/0/44    Partner    No   Yes    No   No   No   Yes     Fast   Passive
      xe-0/0/45      Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      xe-0/0/45    Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
      xe-0/0/46      Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      xe-0/0/46    Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
      xe-0/0/47      Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      xe-0/0/47    Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
      et-0/0/50      Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      et-0/0/50    Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
    LACP protocol:        Receive State  Transmit State          Mux State 
      xe-0/0/30                 Current   Fast periodic Collecting distributing
      xe-0/0/32                 Current   Fast periodic Collecting distributing
      xe-0/0/36                 Current   Fast periodic Collecting distributing
      xe-0/0/40                 Current   Fast periodic Collecting distributing
      xe-0/0/42                 Current   Fast periodic Collecting distributing
      xe-0/0/45                 Current   Fast periodic Collecting distributing
      xe-0/0/46                 Current   Fast periodic Collecting distributing
      xe-0/0/47                 Current   Fast periodic Collecting distributing
      et-0/0/50                 Current   Fast periodic Collecting distributing

Before the upgrade to Junos 20.2R2-S3.5, the hashing for the aggregate interface was based on link speed where the 100G port was taking most of the traffic.

Example:

{master:0}
root@c16-37> show version 
localre:
--------------------------------------------------------------------------
Hostname: c16-37
Model: qfx5110-48s-4c
Junos: 18.3R3-S2.5
JUNOS OS Kernel 64-bit  [20200423.d6acdc5_builder_stable_11]
JUNOS OS libs [20200423.d6acdc5_builder_stable_11]

Interface    Link  Input packets        (pps)     Output packets        (pps)
gr-0/0/0      Up              0          (0)                0          (0)
pfh-0/0/0     Up              0                             0
sxe-0/0/0   Down              0          (0)                0          (0)
sxe-0/0/1   Down              0          (0)                0          (0)
xe-0/0/30     Up         243421        (200)           122624        (101)
xe-0/0/32     Up         605763        (500)           122257        (101)
xe-0/0/36     Up         122052        (100)           364065        (301)
xe-0/0/40     Up           1262          (0)           243076        (201)
xe-0/0/42     Up           1262          (0)           122280        (101)
xe-0/0/44   Down              0          (0)                0          (0)
xe-0/0/45     Up         363690        (300)           122391        (100)
xe-0/0/46     Up         243288        (200)             1742          (1)
xe-0/0/47     Up           1765          (0)           122657        (100)
et-0/0/48     Up        2565359       (2101)          2539470       (2101)
et-0/0/50     Up         967878        (801)          1330391       (1101) 
ae0           Up        2550381       (2101)          2551483       (2107)


After the upgrade, the hashing for the 100g port is the same as the 10g ports:

{master:0}
root@c16-37> show version
localre:
--------------------------------------------------------------------------
Hostname: c16-37
Model: qfx5110-48s-4c
Junos: 20.2R2-S3.5
JUNOS OS Kernel 64-bit  [20201221.5316c2e_builder_stable_11]
JUNOS OS libs [20201221.5316c2e_builder_stable_11]

Interface    Link  Input packets        (pps)     Output packets        (pps)
gr-0/0/0      Up              0          (0)                0          (0)
pfh-0/0/0     Up              0                             0
sxe-0/0/0   Down              0          (0)                0          (0)
sxe-0/0/1   Down              0          (0)                0          (0)
xe-0/0/30     Up          84875        (401)              381          (0)
xe-0/0/32     Up          21651        (101)            84647        (400)
xe-0/0/36     Up          64043        (301)            63533        (300)
xe-0/0/40     Up          64065        (301)            63419        (301)
xe-0/0/42     Up          21454        (101)            21845        (100)
xe-0/0/44   Down              0          (0)                0          (0)
xe-0/0/45     Up          63704        (301)            21700        (100)
xe-0/0/46     Up          21841        (101)            21851         (99)
xe-0/0/47     Up          63717        (302)            84783        (400)
et-0/0/48     Up         444968       (2098)           444852       (2098)
et-0/0/50     Up          42321        (201)            84387        (400)
ae0           Up         447671       (2110)           446546       (2100)

Solution

This change in hashing is an expected behavior as the newer codes do a per flow hashing whereas the previous codes do a per port basis.