In order to load balance between multiple nodes, and to improve balancing, it may be beneficial to delay responses to PADI frames in some way.
For example, we currently have fail-overs to Mikrotik nodes where we have an option on the pppoe-servers to have a PADO delay, specifically, as an example:
[admin@somewhere] /interface pppoe-server> export
...
add disabled=no interface=xxxx max-mru=1500 max-mtu=1500 \
one-session-per-host=yes pado-delay=10 service-name=foobob
(Note the PADO delay option.)
What I'm suggesting is a "base delay" combined with a linear increment as the number of active session increase over a certain count, eg:
base delay: 500ms
increment: 10ms
delay sessions: 250
So the moment we hit 250 active sessions, then we start delaying PADO transmission by 500ms, when we reach 300 active session we delay 500ms + (300 - 250) * 10ms/ = 1000ms, in this way less loaded pppoe-servers should be preferred by new clients.
This can also be used to have more of an active-standby approach. Primary server never delays, backup always delays by some amount.
The one challenge here would be that we'd need a transmission queue and integrate this into an event loop somewhere to tx at the right time (or close enough to the right time).
This is extremely low priority currently, but another of those ideas I'd prefer to not lose track off.