It turned out to be the NAT handling process that screwed the gruu
treatment. Kamailio modified Contact from the OK (because this user is
marked as natted) and calling fix_nated_contact modified the Req-URI of
further in-dialog requests.

I have to look at the details but, using the standard config file as basic,
the NAT flags should no be marked if is_gruu is TRUE. Shall this be
included in the standard kamailio.cfg config file?

Thanks a lot for the answer!

Samuel.


On 1 September 2014 15:46, Daniel-Constantin Mierla <mico...@gmail.com>
wrote:

>  Hello,
>
> the problem is the contact coming with IP address and then used in r-uri
> with IP. In a multi-domain deployment, you cannot assume what is the right
> user id (sip address) to use in case of overlapping usernames. Think about
> rather common multi-tenant scenario where the location can be partitioned
> to different servers, based on domain.
>
> AFAIK, in case GRUU is supported, the UA has to use the give GRUU URI as
> contact for further requests. Kamailio is giving the domain and the UA
> should use it as it is. So, for me it looks as an issue in the UA, unless
> there is some other proxy in the middle changing the contact.
>
> Of course, with the flexibility of kamailio you can fix it in the config,
> like:
> - if there is gr parameter to uri and the domain part is IP (see siputils
> and ipops for appropriate functions to be used), then set $rd to the domain
> of the user.
> - the domain of the user can be discovered from various sources, depending
> on local profile and signaling (e.g, From/To headers, do a sql_query() over
> subscriber table, etc.)
>
> Cheers,
> Daniel
>
>
> On 01/09/14 15:33, samuel wrote:
>
>  anoyone can provide information about how lookup function treats Req-URI
> with gruu?
>
>  Thanks in advance,
> Samuel.
>
>
> On 27 August 2014 09:12, samuel <sam...@gmail.com> wrote:
>
>>    Here it goes, apologies for the length:
>>
>> The registration process is done via TLS and therefore I "can not" post
>> the trace. However, the resulting data is the following:
>>
>> AOR:: s...@domain.com
>> Contact:: sip:83652074@M.N.O.P:34120;transport=tls Q=
>>     Expires:: 569
>>     Callid:: iUcVvmbsda9Yu0DGUm4exTHiZYIqwgtZ
>>     Cseq:: 2
>>     User-agent:: Blink 0.9.1 (Linux)
>>     Received:: sip:M.N.O.P:39961;transport=TLS
>>     State:: CS_DIRTY
>>     Flags:: 0
>>     Cflag:: 64
>>     Socket:: tls:X.Y.Z.W:5061
>>     Methods:: 4294967295
>>     Ruid:: uloc-53fc870d-1097-4
>>     Instance:: <urn:uuid:d63b1c4f-d7dc-4f4e-87f1-948123266dc0>
>>     Reg-Id:: 0
>>     Last-Keepalive:: 1409121941
>>     Last-Modified:: 1409121941
>>
>>  The call trace is the following (Trying and Ringing messages removed for
>> simplicity):
>>
>> U A.B.C.D:5060 -> X.Y.Z.W:5060
>> INVITE sip:999666...@pstn.domain.com SIP/2.0..Via: SIP/2.0/UDP
>> A.B.C.D:5060;branch=z9hG4bK222c6640..Max-Forwards: 70..From: "111222333"
>> <sip:111222333@A.B.C.D>;tag=as1a7b4c7d..To: <
>> sip:999666...@pstn.domain.com>..Contact: 
>> <sip:111222333@A.B.C.D:5060>..Call-ID:
>> 59f5
>> 579c01f8039243ec830d317df994@A.B.C.D:5060..CSeq: 102 INVITE..User-Agent:
>> IPXAdam..Date: Wed, 27 Aug 2014 06:45:54 GMT..Allow: INVITE, ACK, CANCEL,
>> OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH..Supported: replaces,
>> timer..Content-Type: application/sdp..Content-Length: 311....v=0..o=root
>> 936120945 936120945 IN IP4 A.B.C.D..s=Asterisk PBX 11.6-cert2..c=IN IP4
>> A.B.C.D..t=0 0..m=audio 12018 RTP/AVP 8 3 0 101..a=rtpmap:8
>> PCMA/8000..a=rtpmap:3 GSM/8000..a=rtpmap:0 PCMU/8000..a=rtpmap:101
>> telephone-event/8000..a=fmtp:101 0-16..a=silenceSupp:off - - -
>> -..a=ptime:20..a=sendrecv..
>>
>>
>> U X.Y.Z.W:5060 -> A.B.C.D:5060
>> SIP/2.0 200 OK..Via: SIP/2.0/UDP
>> A.B.C.D:5060;rport=5060;branch=z9hG4bK222c6640..Record-Route:
>> <sip:X.Y.Z.W:5061;transport=tls;lr;r2=on;fdrrm=82.63f;nat=yes>..Record-Route:
>> <sip:X.Y.Z.W;lr;r2=on;fdrrm=82.63f;nat=yes>..Call-ID:
>> 59f5579c01f8039243ec830d317df994@A.B.C.D:5060..From: "111222333"
>> <sip:111222333@A.B.C.D>;tag=as1a7b4c7d..To: <
>> sip:999666...@pstn.domain.com>;tag=GcH-CAWXaNVzm0W314zxJF518oM-Okco..CSeq:
>> 102 INVITE..Server: Blink 0.9.1 (Linux)..Allow: SUBSCRIBE, NOTIFY, PRACK,
>> INVITE, ACK, BYE, CANCEL, UPDATE, MESSAGE, REFER..Contact:
>> <sip:sam@M.N.O.P:39961;transport=tls;gr=urn:uuid:d63b1c4f-d7dc-4f4e-87f1-948123266dc0>..Supported:
>> 100rel, replaces, norefersub, gruu..Content-Type:
>> application/sdp..Content-Length:   236....v=0..o=- 3618110757 3618110758
>> IN IP4 M.N.O.P..s=Blink 0.9.1 (Linux)..t=0 0..m=audio 50002 RTP/AVP 8
>> 101..c=IN IP4 M.N.O.P..a=
>> rtcp:50003..a=rtpmap:8 PCMA/8000..a=rtpmap:101
>> telephone-event/8000..a=fmtp:101 0-15..a=sendrecv..
>>
>> U A.B.C.D:5060 -> X.Y.Z.W:5060
>> ACK
>> sip:sam@M.N.O.P:39961;transport=tls;gr=urn:uuid:d63b1c4f-d7dc-4f4e-87f1-948123266dc0
>> SIP/2.0..Via: SIP/2.0/UDP A.B.C.D:5060;branch=z9hG4bK22a00025..Route:
>> <sip:X.Y.Z.W;lr;r2=on;fdrrm=82.63f;nat=yes>,
>> <sip:X.Y.Z.W:5061;transport=tls;lr;r2=on;fdrrm=82.63f;nat=yes>..Max-Forwards:
>> 70..
>> From: "111222333" <sip:111222333@A.B.C.D>;tag=as1a7b4c7d..To: <
>> sip:999666...@pstn.domain.com>;tag=GcH-CAWXaNVzm0W314zxJF518oM-Okco..Contact:
>> <sip:111222333@A.B.C.D:5060>..Call-ID:
>> 59f5579c01f8039243ec830d317df994@A.B.C.D:5060..CSeq: 102
>> ACK..User-Agent: IPXAdam..Content-Length:0....
>>
>>  What I was refering to is that in the logs the lookup process is using
>> sip:sam@M.N.O.P, which is not found because what exists in the registrar
>> database is s...@domain.com. In the Contact header of the 200 OK the
>> local IP is used instead of the FQDN form. I might have been misleaded by
>> the logs or the gruu lookup process, but in the following lines of the code
>> (you were right about the lines and verion):
>>
>> The first log ouput comes from the following lines of lookup.c:
>>
>> 120                 if(puri.gr_val.len>0) {
>> 121                         /* pub-gruu */
>> 122                         inst = puri.gr_val;
>> 123                         LM_DBG("looking up pub gruu [%.*s]\n",
>> inst.len, inst.s);
>>
>> But afterwards, there are these lines, with the return -1 statement:
>>     154                 /* aor or pub-gruu lookup */
>>     155                 ul.lock_udomain(_d, &aor);
>>     156                 res = ul.get_urecord(_d, &aor, &r);
>>     157                 if (res > 0) {
>>     158                         LM_DBG("'%.*s' Not found in usrloc\n",
>> aor.len, ZSW(aor.s));
>>     159                         ul.unlock_udomain(_d, &aor);
>>     160                         return -1;
>>     161                 }
>>     162
>>
>> This is the point where I would need expertise help, because it looks
>> like it uses the "short" AoR (without URI gruu parameters) according to the
>> logs and a -1 is returned. Afterwards there are the lines used to lookup
>> the pub and temp gruu but are not, as far as I understand, used because of
>> the return -1.
>>
>>  What is my mistake in the above assumption?
>>
>>  Thanks a lot for the amazing fast reply.
>>
>> Samuel.
>>
>>
>>
>>  On 26 August 2014 18:22, Daniel-Constantin Mierla <mico...@gmail.com>
>> wrote:
>>
>>>  Hello,
>>>
>>> can you send a trace that includes the registration as well as the call?
>>>
>>> The pub-gruu is using the AoR, iirc.
>>>
>>> Also, the line you refer to is not matching anymore with latest 4.1.x --
>>> paste the code around it to locate it properly.
>>>
>>> Cheers,
>>> Daniel
>>>
>>>
>>> On 26/08/14 18:05, samuel wrote:
>>>
>>>     Hi all,
>>>
>>> I'm having some issues treating requests within dialogs with gruu
>>> enabled with kamailio 4.1.2.
>>>
>>>  I've got the "standard" configuration of WITHIN route with the adition
>>> of the next lines:
>>>
>>>                         if(is_gruu()){
>>>                                 route(LOCATION);
>>>                         };
>>>
>>>  before the the RELAY route call in the loose_route section.
>>>
>>> The "problem" is that the ACK with a pub-gruu on the Req-URI is not
>>> properly lookup. In the logs I can see the following statements:
>>>  2(4232) DEBUG: registrar [lookup.c:123]: lookup(): looking up pub gruu
>>> [urn:uuid:d63b1c4f-d7dc-4f4e-87f1-948123266dc0]
>>>  2(4232) DEBUG: registrar [lookup.c:158]: lookup(): 'sam@A.B.C.D' Not
>>> found in usrloc
>>>
>>>  Where A.B.C.D is the local IP of the UA.
>>>
>>> Looking at the code, this last line looks like is looking for the
>>> "standard" URI (username@domain) instead of using the pub gruu. Am I
>>> right with this assumption or am I missing something from the code?
>>> As far as I could look, it looks like there's an exit -1 statement in
>>> the line 158 of lookup.c which disables the following gruu treatment.
>>>
>>>  Since the username with IP is not registered, this ACK is lost and the
>>> sesion is not stablished (lost ACK).
>>>
>>>  Can anyone provide some hints why is this failing?
>>>
>>> Thanks a lot in advance!
>>> Samuel.
>>>
>>>
>>>
>>>  _______________________________________________
>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing 
>>> listsr-us...@lists.sip-router.orghttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>
>>>
>>> --
>>> Daniel-Constantin Mierlahttp://twitter.com/#!/miconda - 
>>> http://www.linkedin.com/in/miconda
>>> Next Kamailio Advanced Trainings 2014 - http://www.asipto.com
>>> Sep 22-25, Berlin, Germany ::: Oct 15-17, San Francisco, USA
>>>
>>>
>>> _______________________________________________
>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>>> sr-users@lists.sip-router.org
>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>
>>>
>>
>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing 
> listsr-us...@lists.sip-router.orghttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>
> --
> Daniel-Constantin Mierlahttp://twitter.com/#!/miconda - 
> http://www.linkedin.com/in/miconda
> Next Kamailio Advanced Trainings 2014 - http://www.asipto.com
> Sep 22-25, Berlin, Germany ::: Oct 15-17, San Francisco, USA
>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users@lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

Reply via email to