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
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:
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:
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:
Output: 1334083233758 97304 127446697437276 790893104
Output: 2418238577423 96528 187518638424076 784583960
Output: 1246734863512 98081 124167143349380 797206304
Output: 4807599893716 97304 321104598482784 790889040
load-balance adaptive tolerance 10:
Output: 1334030619704 96526 127393242639686 784566000
Output: 2418187181033 94969 187466419703768 771911120
Output: 1246680951867 103530 124112369130620 841498744
Output: 4807547563691 94190 321051431189944 765577592
load-balance adaptive tolerance 15:
Output: 1334064062365 99638 127427219702333 809858296
Output: 2418219173885 96525 187498924433864 784560768
Output: 1246714385587 98083 124146337782604 797223752
Output: 4807580296707 94967 321084687926664 771893712
load-balance adaptive tolerance 20:
Output: 1334074534885 93411 127437859563214 759246600
Output: 2418229740136 94968 187509659742368 771905520
Output: 1246725561529 103531 124157692537164 841501128
Output: 4807590911126 97304 321095472173856 790889832
https://www.juniper.net/documentation/us/en/software/junos/high-availability/topics/topic-map/load-balancing-aggregated-ethernet-interfaces.html