Lost in an outage
A device sends its session records to the RADIUS server and retries for a while. If the server is down for longer than that, the records — the usage you bill — are gone.
radiusward: a record is confirmed only after it is written to disk on two of three servers. A crash of any one of them loses nothing that was confirmed.
Counted twice on a retry
A device that gets no answer in time sends the same record again — often to its secondary server. A server that does not recognise the retry stores the session twice and inflates the usage.
radiusward: retries are recognised by session, not by server — also after a failover, also through the other gateway — and counted once.
Torn apart by a failover
With a primary and a secondary server, the Start lands on one and the Stop on the other. Reconciling them afterwards is where the ghost sessions and the billing errors come from.
radiusward: all gateways write to the same replicated state, so a session is one session wherever its records arrived. A failed leader is replaced in about two seconds.