[SR-Users] [sr-dev] Missing accounting events in ACC table

Muhammad Shahzad shaheryarkh at gmail.com
Wed Jan 7 09:21:33 CET 2015


Finally i have found the problem and fixed it. I was creating new
transaction for initial invite request too early (immediately after
authentication and checking for re-transmits of initial requests), e.g.

...
    # request with no Username in RURI
    if ($rU==$null) {
        sl_send_reply("484","Address Incomplete");
        exit;
    } else {
        t_newtran();
...

The interesting thing is that it was causing problem only for accounting
events and everything else was working perfectly fine. A single line of
code that wasted my full 2 weeks. :-(

Thank you for your help and support.



On Tue, Jan 6, 2015 at 7:00 AM, Muhammad Shahzad <shaheryarkh at gmail.com>
wrote:

> OK, finally back at office after holidays.
>
> I have done extensive testing of various kamailio revisions (backwards up
> to November) and it seems that problem is not related to any change in
> native code. It is somehow related to kamailio.cfg, which is very strange,
> since only changes in previous deployment and currently deployment of cfg
> file are related to dialog module (there are a lot of them, e.g. dialog
> timeout added, dialog profile setup, several dialog variables added and
> set, dialog start, end and failure event routes configured etc. etc.).
> However, there is no change related to acc setup and its configuration is
> still compatible with default kamailio.cfg. Does this make any sense to you?
>
> Looking at debug level 3 kamailio logs and mysql query logs, there is no
> attempt to insert data in acc table at all except for BYE message.
>
> Today i will try to compare working cfg file (back from mid-November,
> which inserts all ACC event records) with current cfg file (which only
> inserts BYE event records) and see if i can find that configuration changes
> that are causing this behavior.
>
> Thank you.
>
>
>
> On Tue, Dec 30, 2014 at 2:56 AM, Muhammad Shahzad <shaheryarkh at gmail.com>
> wrote:
>
>> OK, i will run some tests and get back to you.
>>
>> Thank you.
>>
>> On Sat, Dec 27, 2014 at 10:22 PM, Daniel-Constantin Mierla <
>> miconda at gmail.com> wrote:
>>
>>>  I did a basic test (acc with parameters as in default kamailio.cfg) and
>>> invite is accounted ok. I used master branch, but there is no difference
>>> with acc from 4.2.
>>>
>>> Can you run with debug=3 and see all the log messages, maybe you get a
>>> further hint from there.
>>>
>>> Also, you can try with clone_msg parameter set to 0 - it is one of
>>> latest additions to acc module, just be sure you don't have some corner
>>> case situation...
>>>
>>> Cheers,
>>> Daniel
>>>
>>>
>>> On 24/12/14 15:23, Muhammad Shahzad wrote:
>>>
>>>  After upgrade to version 4.2.1-a2aa22, result is same.
>>>
>>>  Thank you.
>>>
>>>
>>>
>>> On Wed, Dec 24, 2014 at 1:32 PM, Muhammad Shahzad <shaheryarkh at gmail.com
>>> > wrote:
>>>
>>>>  Looking at log level 3 logs, i see when INVITE has been authenticated
>>>> ACC module creates the dialog,
>>>>
>>>> --
>>>> DEBUG: acc [acc_cdr.c:726]: cdr_on_create(): dialog '0xa5936e70'
>>>> created!
>>>> --
>>>>
>>>>  But acc callback is only triggered AFTER 200 OK of BYE request,
>>>>
>>>> --
>>>> DEBUG: acc [acc_logic.c:644]: tmcb_func(): acc callback called for
>>>> t(0xa591d840) event type 2, reply
>>>> code 200
>>>> --
>>>>
>>>>  Between these two log lines there is no log from acc module.
>>>>
>>>>  Thank you.
>>>>
>>>>
>>>>
>>>> On Wed, Dec 24, 2014 at 11:04 AM, Muhammad Shahzad <
>>>> shaheryarkh at gmail.com> wrote:
>>>>
>>>>>  See attached SIP trace.
>>>>>
>>>>>  Note, i have obfuscated source and destination number and IPs etc.
>>>>> due to privacy reasons.
>>>>>
>>>>>  Thank you.
>>>>>
>>>>>
>>>>>
>>>>> On Wed, Dec 24, 2014 at 10:36 AM, Muhammad Shahzad <
>>>>> shaheryarkh at gmail.com> wrote:
>>>>>
>>>>>>   OK, i will upgrade my staging server and do some testing.
>>>>>>
>>>>>>  The acc module does not post records anywhere, neither syslog nor
>>>>>> db. The problem is happening to all calls (not any specific call).
>>>>>>
>>>>>>  Regarding the FROM header, the only change done is to add "+" to
>>>>>> callerid (after replacing 00 if present), this is extensively tested
>>>>>> feature in past 6 months.
>>>>>>
>>>>>>  I have analyzed all the SIP packets in call using ngrep, they all
>>>>>> seem perfectly fine. All packets (request + reply) are correctly received
>>>>>> and forwarded by kamailio. Unfortunately i deleted them and need to get new
>>>>>> trace. I will send it to you in the afternoon.
>>>>>>
>>>>>> Thank you.
>>>>>>
>>>>>>
>>>>>>
>>>>>>  On Tue, Dec 23, 2014 at 10:10 PM, Daniel-Constantin Mierla <
>>>>>> miconda at gmail.com> wrote:
>>>>>>
>>>>>>>   Hello,
>>>>>>>
>>>>>>> you can try with latest git branch 4.2 and see the results.
>>>>>>>
>>>>>>> At a quick look between the version you reported to work and the new
>>>>>>> version you run, I couldn't spot a commit that could be the reason.
>>>>>>>
>>>>>>> Do you get the acc record in syslog for INVITE?
>>>>>>>
>>>>>>> How do you set the values for replacing From header? If you load
>>>>>>> from database, be sure the values are valid. I see the uac module complains
>>>>>>> about restoring operation. It might be the reason for the issues -- config
>>>>>>> could be ok, but the subscriber data wrong.
>>>>>>>
>>>>>>> You should save the traffic for a while and check the packets for
>>>>>>> missing records -- you can use tools such as tcpdump, sipgrep, ngrep to
>>>>>>> store the traffic in a file for later analysis. When you find a missing
>>>>>>> record, search in the file with the sip traffic and see if something is
>>>>>>> broken there.
>>>>>>>
>>>>>>> Cheers,
>>>>>>> Daniel
>>>>>>>
>>>>>>>
>>>>>>> On 23/12/14 21:45, Muhammad Shahzad wrote:
>>>>>>>
>>>>>>>   Hi,
>>>>>>>
>>>>>>>  About 3 weeks ago i upgraded one of my production server with
>>>>>>> latest stable kamailio version 4.2.1-fad00a. Now i am getting a lot of
>>>>>>> complaints about missing CDR events in ACC table. I observe following
>>>>>>> problems,
>>>>>>>
>>>>>>>  1. There are only BYE records in acc table, no record for INVITE
>>>>>>> or ACK.
>>>>>>>  2. In kamailio logs when ACK is received against 200 OK response
>>>>>>> for INVITE, i see following errors,
>>>>>>>
>>>>>>> --
>>>>>>> ERROR: <core> [parser/parse_from.c:113]: parse_from_uri(): failed to
>>>>>>> parse From uri
>>>>>>> ERROR: pv [pv_core.c:434]: pv_get_xto_attr(): cannot parse From URI
>>>>>>> NOTICE: <script>: [udp:<null>@1.0.0.127:5060]: Call from '
>>>>>>> you at kamailio.org' to 'you at kamailio.org' has been hanged up by
>>>>>>> '<null>' at '1419364717.255484'
>>>>>>> --
>>>>>>>
>>>>>>>  Of course all these errors are bogus, I have checked all headers
>>>>>>> in ACK (not just FROM header), they all seem perfectly fine and valid.
>>>>>>>
>>>>>>>  3. Then the dialog times out,
>>>>>>>
>>>>>>> --
>>>>>>> WARNING: dialog [dlg_handlers.c:1440]: dlg_ontimeout(): timeout for
>>>>>>> dlg with CallID '6D8BD23CAC65AE3C1DE1D0B531F87B8CFEAA9CB9' and tags
>>>>>>> '1D3ECD34F5731AB845BA3064AC95BB2D'
>>>>>>> '7f55e81e0630-100007f-13c4-6009-2440a4-5fa31570-2440a4'
>>>>>>> --
>>>>>>>
>>>>>>>  4. Any further sequential requests complain about "unable to find
>>>>>>> dialog", e.g.
>>>>>>>
>>>>>>> --
>>>>>>> NOTICE: <script>: Sequencial 'BYE' request received from caller
>>>>>>> ERROR: uac [replace.c:591]: restore_uri(): new URI [] shorter than
>>>>>>> old URI [sip:00xxxxxxxxxx at sip.domain.com]
>>>>>>> WARNING: dialog [dlg_handlers.c:1174]: dlg_onroute(): unable to find
>>>>>>> dialog for BYE with route param '5ae1.d595' [7845:22877]
>>>>>>> --
>>>>>>>
>>>>>>>  5. However the acc record for BYE is written to db and log file,
>>>>>>>
>>>>>>> --
>>>>>>> NOTICE: acc [acc.c:318]: acc_log_request(): ACC: transaction
>>>>>>> answered:
>>>>>>> timestamp=1419364760;method=BYE;from_tag=7f55e81e0630-100007f-13c4-6009-2440a4-5fa31570-2440a4;to_tag=1D3ECD34F5731AB845BA3064AC95BB2D;call_id=6D8BD23CAC65AE3C1DE1D0B531F87B8CFEAA9CB9;code=200;reason=OK;src_user=00xxxxxxxxxx;src_domain=
>>>>>>> sip.domain.com
>>>>>>> ;src_ip=xx.xx.xx.xx;dst_ouser=+1xxxxxxxxxx;dst_user=1xxxxxxxxxx;dst_domain=yy.yy.yy.yy
>>>>>>> --
>>>>>>>
>>>>>>>
>>>>>>>  The same config was working fine with older version 4.2.0-97cab8.
>>>>>>> The kamailio config i am using is pretty much standard,
>>>>>>>
>>>>>>> --
>>>>>>> #!define FLT_ACC 1
>>>>>>> #!define FLT_ACCMISSED 2
>>>>>>> #!define FLT_ACCFAILED 3
>>>>>>> #!define FLT_DLG 4
>>>>>>>
>>>>>>> ...
>>>>>>>
>>>>>>> modparam("acc", "early_media", 1)
>>>>>>> modparam("acc", "report_ack", 1)
>>>>>>> modparam("acc", "report_cancels", 1)
>>>>>>> modparam("acc", "detect_direction", 1)
>>>>>>> modparam("acc", "log_flag", FLT_ACC)
>>>>>>> modparam("acc", "log_missed_flag", FLT_ACCMISSED)
>>>>>>> modparam("acc", "failed_transaction_flag", FLT_ACCFAILED)
>>>>>>>  # log to db
>>>>>>>  modparam("acc", "db_flag", FLT_ACC)
>>>>>>> modparam("acc", "db_missed_flag", FLT_ACCMISSED)
>>>>>>> modparam("acc", "db_url", "DBURL")
>>>>>>>
>>>>>>> ...
>>>>>>>
>>>>>>>  request_route {
>>>>>>>     # per request initial checks
>>>>>>>     route(REQINIT);
>>>>>>>
>>>>>>>     # NAT detection
>>>>>>>     route(NATDETECT);
>>>>>>>
>>>>>>>     # handle requests within SIP dialogs
>>>>>>>     route(WITHINDLG);
>>>>>>>
>>>>>>>     # CANCEL processing
>>>>>>>     if (is_method("CANCEL")) {
>>>>>>>         if (t_check_trans()) {
>>>>>>>             t_relay();
>>>>>>>         };
>>>>>>>         exit;
>>>>>>>     };
>>>>>>>
>>>>>>>     #### only initial requests (no To tag) ####
>>>>>>>     t_check_trans();
>>>>>>>
>>>>>>> ....
>>>>>>>
>>>>>>>     # account only INVITEs
>>>>>>>     if (is_method("INVITE")) {
>>>>>>>         setflag(FLT_DLG); # create dialog
>>>>>>>         setflag(FLT_ACC); # do accounting
>>>>>>>         setflag(FLT_ACCFAILED); # ... even if the transaction fails
>>>>>>>
>>>>>>>         $avp(dlg_timeout) = 60;
>>>>>>>         dlg_manage();
>>>>>>> ....
>>>>>>>
>>>>>>> }
>>>>>>>
>>>>>>>  --
>>>>>>>
>>>>>>>  Any ideas why its happening? Since it is 3 weeks old so may be
>>>>>>> problem has already been spotted and fixed by someone else. Otherwise let
>>>>>>> me know how can i provide more info to help fix this issue.
>>>>>>>
>>>>>>>  Thank you.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>  _______________________________________________
>>>>>>> sr-dev mailing listsr-dev at lists.sip-router.orghttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Daniel-Constantin Mierlahttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
>>>>>>>
>>>>>>>
>>>>>>>  _______________________________________________
>>>>>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing
>>>>>>> list
>>>>>>> sr-users at lists.sip-router.org
>>>>>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>> --
>>> Daniel-Constantin Mierlahttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20150107/ea195146/attachment.html>


More information about the sr-users mailing list