so I would like heard, please, your recommendations for the integration of the billing system with RADIUS.
I am not sure how much info your looking for so I will give you something of an overview. If you have more questions feel free to ask specifics and I'll be happy to answer.
I use FreeRADIUS and have it setup with both MySQL and MSSQL (freeradius, freeradius-iodbc, & freeradius-mysql debian packages)
You may not need the MSSQL connector but our billing system runs on MSSQL so this was necessary for us. Another approach would be to write to the MySQL database from your billing software when records are changed... basically to do MySQL inserts to update usernames, passwords, speed plans, or assigned IP addresses (statically assigned).
Then in the sql folder, you'll find dialup.conf files that have the sql update commands. You can modify these as needed to write to the columns you need. Then you will need your billing system to read & write to these records/columns.
As far as db organization for auth, its pretty much a username & password field that are matched against. If it is successful then a radius accept message will be returned. A second part of this is that you can assign groups to the user. The group table is then consulted and all of the attributes for that group will be collected. An example of a group parameter could be: "mikrotik-address-list = gold_package" or "Framed-IP-Address = 1.2.3.4"
A finished RADIUS auth reply which informs the MikroTik router to create a simple queue looks like this
Sending Access-Request of id 91 to 127.0.0.1 port 1812
User-Name = "radiustestaccount"
User-Password = "testpassword"
NAS-IP-Address = 204.xxx.xxx.12
NAS-Port = 1812
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=91, length=108
Framed-Protocol = PPP
Framed-Compression = Van-Jacobson-TCP-IP
MS-Primary-DNS-Server = 204.xxx.xxx.1
MS-Secondary-DNS-Server = 8.8.8.8
Mikrotik-Rate-Limit = "768k/3000k 0/0 0/0 0/0 8"
Framed-IP-Address = 204.xxx.xxx.27
I am also using sqlippool so my IP addresses are tracked and maintained in MySQL as well.