[SR-Users] [sr-dev] Missing accounting events in ACC table
Daniel-Constantin Mierla
miconda at gmail.com
Wed Jan 7 11:43:05 CET 2015
On 07/01/15 09:21, Muhammad Shahzad wrote:
> 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. :-(
>
Good that you sorted out.
If you create the transaction and set flags later, then you need to sync
back with transaction via:
-
http://kamailio.org/docs/modules/stable/modules/tmx.html#tmx.f.t_flush_flags
Cheers,
Daniel
>
>
>
> On Tue, Jan 6, 2015 at 7:00 AM, Muhammad Shahzad
> <shaheryarkh at gmail.com <mailto: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 <mailto: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 <mailto: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 <mailto: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
>> <mailto: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
>> <mailto: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
>> <mailto: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
>>> <http://1.0.0.127:5060>]: Call from
>>> 'you at kamailio.org
>>> <mailto:you at kamailio.org>' to
>>> 'you at kamailio.org
>>> <mailto: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
>>> <mailto:sip%3A00xxxxxxxxxx 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
>>> <http://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 list
>>> sr-dev at lists.sip-router.org <mailto:sr-dev at lists.sip-router.org>
>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>>
>> --
>> Daniel-Constantin Mierla
>> http://twitter.com/#!/miconda <http://twitter.com/#%21/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
>> <mailto:sr-users at lists.sip-router.org>
>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>
>>
>>
>>
>>
>
> --
> Daniel-Constantin Mierla
> http://twitter.com/#!/miconda <http://twitter.com/#%21/miconda> - http://www.linkedin.com/in/miconda
>
>
>
>
--
Daniel-Constantin Mierla
http://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/9e1d6548/attachment.html>
More information about the sr-users
mailing list