[OpenSIPS-Users] OpenSIPS Perl module branching and logging

David Cunningham dcunningham at voisonics.com
Sat May 15 00:26:54 CEST 2010


Bogdan,

Thank you for your help again! We found the source of the problem.


On Thu, May 13, 2010 at 7:05 PM, Bogdan-Andrei Iancu
<bogdan at voice-system.ro> wrote:
> Sorry David,
>
> never used the perl stuff and have no idea how it works :(...
>
> Regards,
> Bogdan
>
> David Cunningham wrote:
>> Thanks Bogdan.
>>
>> Could you give any ideas on this part of my first email?:
>>
>> Can anyone advise how I can (in the Perl) extract the destination
>> addresses from $m as strings to verify that all the destinations are
>> correct after the final $m->append_branch()?
>>
>>
>> On Thu, May 13, 2010 at 6:09 PM, Bogdan-Andrei Iancu
>> <bogdan at voice-system.ro> wrote:
>>
>>> Hi David,
>>>
>>> looking at the message, I see that the ACK is wrongly generated. The
>>> RURI of the ACK must be the contact received in 200 OK (as received by
>>> the phone). The 200 OK shows ast02, but the ACK goes to ast01 , which is
>>> bogus.
>>>
>>> Also the UAC seams to ignore the RR indication - according to the RR
>>> received in 200 OK, the UAC should sent the ACK to sip01 and not to
>>> ast01 .....
>>>
>>> Regards,
>>> Bogdan
>>>
>>> David Cunningham wrote:
>>>
>>>> Hi Bogdan,
>>>>
>>>> That sounds reasonable, but an ngrep trace on the opensips server is
>>>> showing the ACK from the phone is being forwarded to the wrong
>>>> Asterisk, i.e. not the one that sent the 200 OK.
>>>>
>>>> As I mentioned, we are passing routing of messages through a Perl
>>>> module, and this branches messages to all Asterisk servers. I have
>>>> logged the rewrite_ruri() and append_branch() steps so I know these
>>>> are happening to all Asterisk servers.
>>>> I'm therefore not sure how to determine where the fault is, given the
>>>> discrepancy between the logging in the Perl code, which what we're
>>>> seeing actually happen on the ngrep trace.
>>>>
>>>> Can you give any advice? Much appreciated!
>>>>
>>>>
>>>> I've also copied and pasted in here the 200 OK and the ACK. You can
>>>> see that ast02 sends the 200 OK to sip01, but then sip01 sends the ACK
>>>> on to ast01.
>>>>
>>>>
>>>> U 2010/05/11 08:29:01.674692 (ast02):5060 -> (sip01):5060
>>>> SIP/2.0 200 OK.
>>>> Via: SIP/2.0/UDP (sip01);branch=z9hG4bKd334.32c9cde4.1;received=(sip01).
>>>> Via: SIP/2.0/UDP (unknown other
>>>> IP):5060;rport=5060;received=(phone);branch=z9hG4bKaacc9f8227a7ea553.b59f1ab3b79f7cfcc.
>>>> Record-Route: <sip:(sip01);lr=on;ftag=b9d0d92b6c>.
>>>> From: "User" <sip:(calling number)@(sip01):5060>;tag=b9d0d92b6c.
>>>> To: "**" <sip:**@(sip01):5060>;tag=as1a1f4c27.
>>>> Call-ID: a7366e4855e295af.
>>>> CSeq: 18830 INVITE.
>>>> Server: Enswitch.
>>>> Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO.
>>>> Supported: replaces, timer.
>>>> Contact: <sip:**@(ast02)>.
>>>> Content-Type: application/sdp.
>>>> Content-Length: 314.
>>>> .
>>>> v=0.
>>>> o=root 1399767030 1399767030 IN IP4 (ast02).
>>>> s=Asterisk PBX 1.6.1.12.
>>>> c=IN IP4 (ast02).
>>>> t=0 0.
>>>> m=audio 12876 RTP/AVP 0 8 18 101.
>>>> a=rtpmap:0 PCMU/8000.
>>>> a=rtpmap:8 PCMA/8000.
>>>> a=rtpmap:18 G729/8000.
>>>> a=fmtp:18 annexb=no.
>>>> a=rtpmap:101 telephone-event/8000.
>>>> a=fmtp:101 0-16.
>>>> a=ptime:20.
>>>> a=sendrecv.
>>>>
>>>>
>>>>
>>>> U 2010/05/11 08:29:01.984181 (sip01):5060 -> (ast01):5060
>>>> ACK sip:**@(ast01):5060;transport=udp SIP/2.0.
>>>> Record-Route: <sip:(sip01);lr=on;ftag=b9d0d92b6c>.
>>>> Via: SIP/2.0/UDP (sip01);branch=z9hG4bKd334.32c9cde4.3.
>>>> Via: SIP/2.0/UDP (unknown other
>>>> IP):5060;rport=5060;received=(phone);branch=z9hG4bKc0d1abc8b8ff65c68.d1538fb17483e517f.
>>>> Route: <sip:(sip01);lr=on;ftag=b9d0d92b6c>.
>>>> Proxy-Require: com.nortelnetworks.firewall.
>>>> Max-Forwards: 69.
>>>> From: "User" <sip:(calling number)@(sip01):5060>;tag=b9d0d92b6c.
>>>> To: "**" <sip:**@(sip01):5060>;tag=as1a1f4c27.
>>>> Call-ID: a7366e4855e295af.
>>>> CSeq: 18830 ACK.
>>>> User-Agent: Aastra 57i/2.5.2.30.
>>>> Content-Length: 0.
>>>>
>>>>
>>>> On Wed, May 12, 2010 at 9:59 AM, Bogdan-Andrei Iancu
>>>> <bogdan at voice-system.ro> wrote:
>>>>
>>>>
>>>>> In such a case, from SIP point of view, there is a single ACK
>>>>> corresponding to the winning branch (which sent the 200 OK).
>>>>>
>>>>> Regards,
>>>>> Bogdan
>>>>>
>>>>> David Cunningham wrote:
>>>>>
>>>>>
>>>>>> Hi Bogdan,
>>>>>>
>>>>>> That's correct, the ACK for the 200OK.
>>>>>>
>>>>>> On Wed, May 12, 2010 at 8:46 AM, Bogdan-Andrei Iancu
>>>>>> <bogdan at voice-system.ro> wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>> Hi David,
>>>>>>>
>>>>>>> David Cunningham wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> Hello,
>>>>>>>>
>>>>>>>> We are using OpenSIPS with a Perl module which needs to branch SIP
>>>>>>>> messages to multiple Asterisk servers. This is done with a
>>>>>>>> $m->rewrite_ruri() to the first destination, and an
>>>>>>>> $m->append_branch() to each following destination.
>>>>>>>> There's a problem though, that with ACK messages it only seems to
>>>>>>>> arrive at the first Asterisk server.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>> You mean the ACK for 200OK ?
>>>>>>>
>>>>>>> Regards,
>>>>>>> Bogdan
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> Does anyone know of a problem using this method to branch ACK messages?
>>>>>>>>
>>>>>>>> Can anyone advise how I can (in the Perl) extract the destination
>>>>>>>> addresses from $m as strings to verify that all the destinations are
>>>>>>>> correct after the final $m->append_branch()?
>>>>>>>>
>>>>>>>> Thanks for your help!
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>> --
>>>>>>> Bogdan-Andrei Iancu
>>>>>>> www.voice-system.ro
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Users mailing list
>>>>>>> Users at lists.opensips.org
>>>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>> --
>>>>> Bogdan-Andrei Iancu
>>>>> www.voice-system.ro
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Users mailing list
>>>>> Users at lists.opensips.org
>>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>> --
>>> Bogdan-Andrei Iancu
>>> www.voice-system.ro
>>>
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.opensips.org
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>
>>>
>>
>>
>>
>>
>
>
> --
> Bogdan-Andrei Iancu
> www.voice-system.ro
>
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>



-- 
David Cunningham, Voisonics
http://voisonics.com/
US toll-free: +1 888 842 2720
UK: +44 (0) 20 3298 1642
Australia: +61 (0) 2 9037 2180



More information about the Users mailing list