Description

Hash rotation is not being done for the traffic coming from the Service Line card.

Customer is using SPC3 LC for NAT purpose.


Traffic path:

WAN -> ingress MPC -> Fabric -> SPC3 (NAT) -> Fabric -> egress MPC -> WAN

Symptoms

When one child interface is down in LAG.

Link:

et-0/0/2.0

Input : 5723118886 3638307 5479550366686 27929347880

Output: 7735737405 7283769 7415026984039 55904187272 <------

et-0/0/5.0

Input : 5794608848 3614839 5567928760081 27840720592

Output: 3774069526 122 3636377262243 73016 <------

et-1/1/0.0

Input : 5810367088 3609930 5576734506203 27085893760

Output: 3798012971 169 3623158658381 103760 <------

et-11/0/2.0 <-- down

Input : 3799935441 0 3638304404035 0

Output: 3746457091 0 3601402961512 0

et-11/0/5.0

Input : 5751433454 3546632 5513121053658 26768374656

Output: 7624460407 7039925 7302290214423 53331457328 <------

 

Solution

This behaviour is a known limitation on MX platforms when the symmetric hash knob is enabled. In such cases, the rotate-hash mechanism becomes ineffective due to the skip_rotate_hash bit being set in the master record. This has been behaviour since day one, as recently documented under PR-1906444.

 

>>> The following comment from the codebase explains the rationale:

When symmetric load balancing is desired, rotate-hash must be disabled to ensure consistent behavior across chassis.

If rotate-hash were applied on one chassis but not the other, it could lead to asymmetric forwarding decisions.

To maintain symmetry, rotate-hash is overridden in the master record when symmetric hashing is enabled. This is controlled by the g_symmetric_ehash knob, which is set/unset based on the CLI configuration.

 

Why rotate-hash is disabled with symmetric hashing:

Background:

When AE nexthops are programmed in JNH, the selector seed would be different on different chassis as it is a function of child ifls. This would result in different distribution of AE children on each chassis. When symmetric LB is desired, the seed is fixed to zero based on the g_symmetric_ehash knob.

 

forwarding-options {
    enhanced-hash-key {
        services-loadbalancing {
            family inet {
                layer-3-services {
                    source-address;
                }
            }
        }
        symmetric;              >>>>>>>> 

Modification History

2025-12-27 : Article Created