IPv6 accounting RADIUS SQL schema?

Michael Ducharme mducharme at gmail.com
Sun Aug 19 18:54:22 CEST 2018


On 8/19/2018 2:47 AM, Nathan Ward wrote:
> I would query why that data is in your billing system, but, I’m sure you have your reasons.
> Generally I prefer to expose data to “external” systems through APIs, rather than give them direct database access and tightly couple two applications together though a DB schema which may need to change for one side or the other.

It is unfortunately extremely common for billing systems to integrate 
with FreeRADIUS/MySQL via direct database access. Ours uses the 
accounting data to determine the IP allocation history for the customer 
or the previous history for an IP, and staff can view the history 
records through the billing software itself. The billing system also 
continually monitors the radacct table for new records -- instead of 
sending an access-reject to a customer who is behind on billing, they 
are sent an access-accept. A few seconds later, after the billing system 
has found a new record in the radacct table that shows the customer is 
online on that IP, the billing system logs into the NAS via its API and 
adds that IP to an ACL which blocks internet access and forces the 
customer into a walled garden to make a payment. If the customer 
disconnects, the billing system logs back into the NAS and removes the 
IP from the ACL. It is complex but generally works pretty decently, 
except the odd time when an accounting-stop packet is dropped between 
NAS and RADIUS server. The biggest issue that we had was very recent, 
the result of a missing UNIQUE on the index for acctuniqueid, resulting 
in duplicate records in the radacct table that confused the billing 
system so much that it stopped consistently updating the ACL, resulting 
in a small number of customers who were up to date getting the walled 
garden, and a few customers who were behind on billing were getting free 
service.


More information about the Freeradius-Users mailing list