Problem with sql entry

Miha Zoubek miha at softnet.si
Tue Dec 20 15:32:50 CET 2011


Thanks @Fajar,

I missed two different Acct-Session-Id. This the main reason for this. I 
fill chack why nas is sending different Acct-Session-ID


regards,
Miha


On 12/20/2011 10:20 AM, Fajar A. Nugraha wrote:
> On Tue, Dec 20, 2011 at 3:55 PM, Miha Zoubek<miha at softnet.si>  wrote:
>> Hi,
>>
>> please help me out why I am getting two entries in mysql table (radacct) for
>> outgoing call. If the call is answered I get two entries and one entry if
>> the call is not answered (this is ok).
>>
>> Reason that I am asking this is that I do not see that my NAS is sending two
>> start packet and to stop packet for answered call (you can see below).
>>
>> Please help me out understand why radius add two entries for stop packet if
>> only one is send from NAS.
> First of all, if you're going to trim the debug log anyway, make sure
> you include debug from a full sesssion to make it easier to diagnose.
>
>> 2. Call is answered.
>> 3142.992787 xxx.xxx.xxx.xxx ->  yyy.yyy.yyy.yyy RADIUS Accounting-Request(4)
>> (id=195, l=265)
>> 3142.994570 yyy.yyy.yyy.yyy ->  xxx.xxx.xxx.xxx RADIUS Accounting-Response(5)
>> (id=195, l=20)
> those two above most likely belong to a previous session. Accounting
> usually comes after Access-Request. So I don't think you need to
> include those. UNLESS your NAS is doing something funny, and it REALLY
> sends Accounting - Access Request - Accounting for a session.
>
>> rad_recv: Accounting-Request packet from host xxx.xxx.xxx.xxx port 48752,
>> id=198, length=265
>>          Acct-Status-Type = Start
>>          Acct-Session-Id = "d446d20a-6d1c-4ffd-9b59-1aedbf63b74c"
> I'd note Acct-Session-Id lines ...
>
>> rad_recv: Accounting-Request packet from host xxx.xxx.xxx.xxx port 35569,
>> id=200, length=401
>>          Acct-Status-Type = Stop
>>          Acct-Session-Id = "68507972-f9d9-46c7-bf22-59020602ffe2"
> ... and compare it with the next one. That's a different
> Acct-Session-Id, so it's two different sessions.
>
> Are you SURE you have two entries in radacct with Acct-Session-Id =
> "68507972-f9d9-46c7-bf22-59020602ffe2"?
>
>> [sql]   expand:            UPDATE radacct SET           acctstarttime   =
>> '%{Freeswitch-Callanswerdate}',           acctstoptime       =
>> '%S',              acctsessiontime    = '%{Acct-Session-Time}',
>> acctinputoctets    = '%{%{Acct-Input-Gigawords}:-0}'<<  32
>> |
>> '%{%{Acct-Input-Octets}:-0}',              acctoutputoctets   =
>> '%{%{Acct-Output-Gigawords}:-0}'<<  32 |
>> '%{%{Acct-Output-Octets}:-0}',              acctterminatecause =
>> '%{Acct-Terminate-Cause}',              acctstopdelay      =
>> '%{%{Acct-Delay-Time}:-0}',              connectinfo_stop   =
>> '%{Connect-Info}'           WHERE acctsessionid   =
>> '%{Acct-Session-Id}'           AND username          =
>> '%{SQL-User-Name}'           AND nasipaddress      = '%{NAS-IP-Address}'
>> ->             UPDATE radacct SET               acctstarttime   =
>> '2011-12-20T09:49:30.669405=2B0100',      acctstoptime       = '2011-12-20
>> 09:49:49',              acctsessiontime    = '3',
>> acctinputoctets    = '0'<<
> hmmm ... that query doesn't look right.
>
> "
> UPDATE radacct SET               acctstarttime   =
> '2011-12-20T09:49:30.669405=2B0100',      acctstoptime       = '2011-12-20
> 09:49:49',              acctsessiontime    = '3',
> acctinputoctets    = '0'<<
> "
>
> seriously? Are you sure you didn't mess up the query while editing it
> manually? Or was it copy-and-paste error?
> Even acctstarttime looks wrong.
>
>
>> [sql]   expand:            INSERT INTO radacct             (acctsessionid,
>> acctuniqueid, username,              realm, nasipaddress,
>> nasportid,              nasporttype, acctstarttime,
>> acctstoptime,              acctsessiontime, acctauthentic,
>> connectinfo_start,              connectinfo_stop, acctinputoctets,
>> acctoutputoctets,              calledstationid, callingstationid,
>> acctterminatecause,              servicetype, framedprotocol,
>> framedipaddress,              acctstartdelay, acctstopdelay)
>> VALUES             ('%{Acct-Session-Id}',
>> '%{Acct-Unique-Session-Id}',              '%{SQL-User-Name}',
>> '%{Realm}', '%{NAS-IP-Address}', '%{NAS-Port}',
>> '%{NAS-Port-Type}',              DATE_SUB('%S',                  INTERVAL
>> (%{%{Acct-Session-Time}:-0} +                  %{%{Acct-Delay-Time}:-0})
>> SECOND),              '%S', '%{Acct-Session-Time}', '%{Acct-Authentic}',
>> '',              '%{Connect-Info}',
>> '%{%{Acct-Input-Gigawords}:-0}'<<  32 |              '%{%{Acct-Inpu
> Same thing here. It should print what the actual sql statement executed
>
> My best guess so far:
> - the double lines you see are from different session (i.e. different
> Acct-Session-Id). If so, the NAS sends two different accounting
> request. Ask the NAS why it does that. OR
> - you edit the default query and broke it.
>
> In any case:
> - check whether the records have the same Acct-Session-Id
> - check that your queries are OK. Get a DBA to help you if necessary.
> - get the full sql query executed somehow. It should be available in
> the debug log, but the db might be able to provide it as well (e.g.
> http://dev.mysql.com/doc/refman/5.5/en/query-log.html). Again, get a
> DBA to help you if necessary.
>


-- 
Best regards / Lep Pozdrav
Miha Zoubek
Softnet d.o.o.




More information about the Freeradius-Users mailing list