Description

Observing imbalance of traffic across LAG members:

Link: 

et-1/0/13:2.0

 Output: 1465649589211 221117 1840564718943529 2205365480 <= ~ 2.3gb

 et-1/0/15:0.0

Output: 1050679646008 200326 1332756469913781 1934741168 <= ~ 1.9gb

 et-1/0/5:2.0

Output: 1510947774875 296791 1897841615458051 2976381456 <= ~ 3.0gb  

et-1/0/1:0.0

 Output: 1508293609030 215449 1896686101038823 2063581112 <= ~ 2.1gb

Symptoms

Observing imbalance of traffic across LAG members:

Link: 

et-1/0/13:2.0

 Output: 1465649589211 221117 1840564718943529 2205365480 <= ~ 2.3gb

 et-1/0/15:0.0

Output: 1050679646008 200326 1332756469913781 1934741168 <= ~ 1.9gb

 et-1/0/5:2.0

Output: 1510947774875 296791 1897841615458051 2976381456 <= ~ 3.0gb  

et-1/0/1:0.0

 Output: 1508293609030 215449 1896686101038823 2063581112 <= ~ 2.1gb

Solution

Use tolerance knob under bundle:

e.g.

set interfaces <> aggregated-ether-options load-balance adaptive tolerance <>

 

The tolerance keyword (Default = 20%, range: 1-100 percent) defines the maximum difference (as a percentage of link speed) that can exist between the most utilized and least utilized member of a bundle required for the Adaptive loadbalancing algorithm to recalculate and adjust the hash bucket distribution over AE member links. For example in a bundle with 10G links, by default, there would need to be a difference of 2G.

 

 In Adaptive Load Balancing case, rate of flow remapping depends upon the configured tolerance limit. If it is too low, adjustments are made more often. However, not every flow is affected by the adjustments, the algorithm tries to minimize the number of adjustments. Therefore the effect of the remapping to the traffic flows is minimized.

When adaptive load-balancing is configured you should see below output and values are explained:

e.g. 

labroot@jtac-MX204-r038> show interfaces ae12

:<snip>

   Adaptive Statistics:

       Adaptive Adjusts:      1388

       Adaptive Scans :     58069

       Adaptive Updates:        69

• Adaptive Adjusts: This counter represents the number adjustments that have been made to the hash buckets for the member interfaces

• Adaptive Scans: The number of scans the aggregated-ethernet interface has completed

• Adaptive Updates: Indicates the number of times that the tolerance value triggered a re-balancing of the traffic across the aggregated-ethernet bundle.

 

There is option of “Per Packet Load-Balancing Configuration” under aggregated-ether-options, but this mode may result in packet re-ordering. This is happening by definition as packets from the same flow may now take different paths. Therefore, this operational mode may only be considered for the applications which are tolerant to packet re-ordering.

 

 

Below are test results with different tolerance values:

load-balance adaptive tolerance 1:

   Link:

     xe-0/0/0:0.0

       Output: 1334041887420     96527 127404690406474   784572560

     xe-0/0/0:1.0

       Output: 2418198182018     98083 187477596702016   797219288

     xe-0/0/0:2.0

       Output: 1246692482113     97303 124124083858044   790885768

     xe-0/0/0:3.0

       Output: 4807558151308     97302 321062188206304   790873584

                    

load-balance adaptive tolerance 5:

   Link:

     xe-0/0/0:0.0

       Output: 1334083233758     97304 127446697437276   790893104

     xe-0/0/0:1.0

       Output: 2418238577423     96528 187518638424076   784583960

     xe-0/0/0:2.0

          Output: 1246734863512     98081 124167143349380   797206304

     xe-0/0/0:3.0

       Output: 4807599893716     97304 321104598482784   790889040

                   

load-balance adaptive tolerance 10:

   Link:

     xe-0/0/0:0.0

       Output: 1334030619704     96526 127393242639686   784566000

     xe-0/0/0:1.0

       Output: 2418187181033     94969 187466419703768   771911120

     xe-0/0/0:2.0

         Output: 1246680951867    103530 124112369130620   841498744

     xe-0/0/0:3.0

       Output: 4807547563691     94190 321051431189944   765577592

          

load-balance adaptive tolerance 15:

   Link:

     xe-0/0/0:0.0

          Output: 1334064062365     99638 127427219702333   809858296

     xe-0/0/0:1.0

            Output: 2418219173885     96525 187498924433864   784560768

     xe-0/0/0:2.0

           Output: 1246714385587     98083 124146337782604   797223752

     xe-0/0/0:3.0

       Output: 4807580296707     94967 321084687926664   771893712

                       

load-balance adaptive tolerance 20:

   Link:

     xe-0/0/0:0.0

         Output: 1334074534885     93411 127437859563214   759246600

     xe-0/0/0:1.0

         Output: 2418229740136     94968 187509659742368   771905520

     xe-0/0/0:2.0

           Output: 1246725561529    103531 124157692537164   841501128

     xe-0/0/0:3.0

          Output: 4807590911126     97304 321095472173856   790889832

 

Modification History

2024-02-06 : Article Created

Related Information

https://www.juniper.net/documentation/us/en/software/junos/high-availability/topics/topic-map/load-balancing-aggregated-ethernet-interfaces.html