[SR-Users] loose_route() and FQDN

Igor Olhovskiy igorolhovskiy at gmail.com
Fri May 7 14:43:47 CEST 2021


Daniel,

Seems to be it's really the case, but with other function

With FQDN in RR


      |is_first_hop()|

is not acting correctly for reply.

> For incoming SIP replies, it means that top Record-Route URI is 
> 'myself' and source address is not matching it
But in Record-Route we have "myself", but *is_first_hop()* returning 0.

Thanks!

Regards,
Igor

On 07.05.2021 14:22, Daniel-Constantin Mierla wrote:
>
> OK, because looping was something that should not have happened in 
> this case.
>
> Then the problem is that you do not do nat-traversal-like processing 
> for websocket/webrtc traffic. You have to use set_contact_alias() + 
> handle_ruri_alias() because the webrtc endpoints do not set "valid" 
> contact addresses.
>
> Cheers,
> Daniel
>
> On 07.05.21 14:13, Igor Olhovskiy wrote:
>>
>> Ah, no, sorry, I was wrong at this one,
>>
>> This just is not sent with "unable to resolve address 
>> toleivu2gdbh.invalid".
>>
>> Sorry. Looping were something else during my tests, this just with 
>> *advertise* added
>>
>> Regards,
>> Igor
>> On 07.05.2021 14:02, Daniel-Constantin Mierla wrote:
>>>
>>> This looks like incoming ACK, because there is only one Via header, 
>>> so it is not what proxy forwards -- that one is relevant to see what 
>>> headers were consumed and added.
>>>
>>> Cheers,
>>> Daniel
>>>
>>> On 07.05.21 13:51, Igor Olhovskiy wrote:
>>>> Sure.
>>>>
>>>> ACK sip:88290 at toleivu2gdbh.invalid;transport=wss SIP/2.0
>>>> Via: SIP/2.0/UDP 
>>>> A_IP_ADDRESS:5060;rport;branch=z9hG4bKPj8d05548a-91ef-4332-8617-32f8eeebf8f2
>>>> From: <sip:88881 at A_IP_ADDRESS>;tag=0a3e31a6-96ad-42d0-9310-81b35cedbd3d
>>>> To: <sip:88290 at KAMAILIO_FQDN>;tag=hvra7mj3q0
>>>> Call-ID: 46f44741-d155-4dd5-8fd8-78e540fc1acb
>>>> CSeq: 18326 ACK
>>>> Route: 
>>>> <sip:KAMAILIO_FQDN;lr;r2=on;ftag=0a3e31a6-96ad-42d0-9310-81b35cedbd3d;nat=wss>
>>>> Route: 
>>>> <sip:KAMAILIO_FQDN:8089;transport=ws;lr;r2=on;ftag=0a3e31a6-96ad-42d0-9310-81b35cedbd3d;nat=wss>
>>>> Max-Forwards: 70
>>>> User-Agent: Asterisk PBX 13.33.0
>>>> Content-Length:  0
>>>>
>>>>
>>>> By loop I meant, Kamailio just relaying it back to self and discard.
>>>>
>>>> Regards,
>>>> Igor
>>>> On 07.05.2021 13:48, Daniel-Constantin Mierla wrote:
>>>>>
>>>>> Can you paste the ACK that loops, after being handled once by 
>>>>> Kamailio?
>>>>>
>>>>> Cheers,
>>>>> Daniel
>>>>>
>>>>> On 07.05.21 13:25, Igor Olhovskiy wrote:
>>>>>>
>>>>>> Daniel,
>>>>>>
>>>>>> Yes, it is.
>>>>>>
>>>>>> alias=...
>>>>>>
>>>>>> Also tried with
>>>>>>
>>>>>> listen = IP advertise FQDN
>>>>>>
>>>>>> same behavior, loose_route() stops acting correctly.
>>>>>>
>>>>>> PS: Forgot to add, Kamailio 5.4.3 / 5.4.4
>>>>>>
>>>>>> Regards,
>>>>>> Igor
>>>>>> On 07.05.2021 13:21, Daniel-Constantin Mierla wrote:
>>>>>>>
>>>>>>> Hello,
>>>>>>>
>>>>>>> is the KAMAILIO_FQDN set as local domain for Kamailio (via alias 
>>>>>>> parameter or domain module+register myself)?
>>>>>>>
>>>>>>> Cheers,
>>>>>>> Daniel
>>>>>>>
>>>>>>> On 07.05.21 11:17, Igor Olhovskiy wrote:
>>>>>>>>
>>>>>>>> Hello,
>>>>>>>>
>>>>>>>> I saw there are some topics on this already and carefully 
>>>>>>>> walked through all of them, but can't solve following issue.
>>>>>>>>
>>>>>>>> For a reason I do need that in Record-Route header sent to 
>>>>>>>> endpoint would present FQDN. If it matters, it's UDP/WSS 
>>>>>>>> conversion done on Kamailio.
>>>>>>>>
>>>>>>>> So, scheme is quite simple
>>>>>>>>
>>>>>>>> Enpoint A  ->UDP-> Kamailio ->WSS-> Endpoint B (NAT)
>>>>>>>>
>>>>>>>> Main issue here, that if in Record-Route headers it's FQDN, but 
>>>>>>>> not IP addresses, on a new transactions with a dialog (ACK on 
>>>>>>>> 200, PRACK, BYE), Kamailio*loose_route()* function resolves 
>>>>>>>> address of destination not current dialog, but actual R-URI (or 
>>>>>>>> itself, if R-URI is something from WebRTC world) that is not 
>>>>>>>> correct due to NAT.
>>>>>>>>
>>>>>>>> If in RR headers IP addresses are present - all is working as 
>>>>>>>> expected.
>>>>>>>>
>>>>>>>> As an example (RR with FQDN)
>>>>>>>>
>>>>>>>> B answers 200
>>>>>>>>
>>>>>>>> SIP/2.0 200 OK
>>>>>>>> Record-Route: 
>>>>>>>> <sip:KAMAILIO_FQDN:8089;transport=ws;r2=on;lr=on;ftag=0a3e31a6-96ad-42d0-9310-81b35cedbd3d;nat=wss>
>>>>>>>> Record-Route: 
>>>>>>>> <sip:KAMAILIO_FQDN;r2=on;lr=on;ftag=0a3e31a6-96ad-42d0-9310-81b35cedbd3d;nat=wss>
>>>>>>>> Via: SIP/2.0/UDP <A_IP_ADDRESS>:5060;received=A IP 
>>>>>>>> ADDRESS;rport=5060;branch=z9hG4bKPj67fb6d86-97d7-4231-995b-e54b0f62881e
>>>>>>>> To: <sip:88290@<KAMAILIO_FQDN>>;tag=hvra7mj3q0
>>>>>>>> From: 
>>>>>>>> <sip:+XXXX7688881@<KAMAILIO_FQDN>>;tag=0a3e31a6-96ad-42d0-9310-81b35cedbd3d
>>>>>>>> Call-ID: 46f44741-d155-4dd5-8fd8-78e540fc1acb
>>>>>>>> CSeq: 18326 INVITE
>>>>>>>> Contact: <sip:88290 at toleivu2gdbh.invalid;transport=wss>
>>>>>>>> Allow: ACK,CANCEL,INVITE,MESSAGE,BYE,OPTIONS,INFO,NOTIFY,REFER
>>>>>>>> Supported: outbound
>>>>>>>> Content-Type: application/sdp
>>>>>>>> Content-Length: 817
>>>>>>>>
>>>>>>>>
>>>>>>>> ACK looks like
>>>>>>>>
>>>>>>>> ACK sip:88290 at toleivu2gdbh.invalid;transport=wss SIP/2.0
>>>>>>>> Via: SIP/2.0/UDP 
>>>>>>>> A_IP_ADDRESS:5060;rport;branch=z9hG4bKPj8d05548a-91ef-4332-8617-32f8eeebf8f2
>>>>>>>> From: 
>>>>>>>> <sip:88881 at A_IP_ADDRESS>;tag=0a3e31a6-96ad-42d0-9310-81b35cedbd3d
>>>>>>>> To: <sip:88290 at KAMAILIO_FQDN>;tag=hvra7mj3q0
>>>>>>>> Call-ID: 46f44741-d155-4dd5-8fd8-78e540fc1acb
>>>>>>>> CSeq: 18326 ACK
>>>>>>>> Route: 
>>>>>>>> <sip:FQDN;lr;r2=on;ftag=0a3e31a6-96ad-42d0-9310-81b35cedbd3d;nat=wss>
>>>>>>>> Route: 
>>>>>>>> <sip:FQDN:8089;transport=ws;lr;r2=on;ftag=0a3e31a6-96ad-42d0-9310-81b35cedbd3d;nat=wss>
>>>>>>>> Max-Forwards: 70
>>>>>>>> User-Agent: Asterisk PBX 13.33.0
>>>>>>>> Content-Length:  0
>>>>>>>>
>>>>>>>> And Kamailio on *loose_route()* loops ACK to itself. (with 
>>>>>>>> result of function == 1)
>>>>>>>>
>>>>>>>> In a case if in Record-Route/Route headers just IP address of 
>>>>>>>> Kamailio present, all works as expected, but it's not really 
>>>>>>>> behavior I want to achieve.
>>>>>>>>
>>>>>>>> I've tried to play with *record_route_preset("...")* specifying 
>>>>>>>> only WSS part (as suggested in 
>>>>>>>> https://skalatan.de/de/blog/kamailio-sbc-teams) with FQDN, but 
>>>>>>>> no luck.
>>>>>>>>
>>>>>>>> Also wanted to try approach using record_route_preset() 
>>>>>>>> function in branch route, but it was working only with first 
>>>>>>>> branch, not affecting others (but I assume having different RR 
>>>>>>>> headers across branches is not a good idea)
>>>>>>>>
>>>>>>>> -- 
>>>>>>>> Regards,
>>>>>>>> Igor
>>>>>>>>
>>>>>>>> __________________________________________________________
>>>>>>>> Kamailio - Users Mailing List - Non Commercial Discussions
>>>>>>>>    *sr-users at lists.kamailio.org
>>>>>>>> Important: keep the mailing list in the recipients, do not reply only to the sender!
>>>>>>>> Edit mailing list options or unsubscribe:
>>>>>>>>    *https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>>>>>>> -- 
>>>>>>> Daniel-Constantin Mierla --www.asipto.com
>>>>>>> www.twitter.com/miconda  --www.linkedin.com/in/miconda
>>>>>>> Kamailio Advanced Training - Online
>>>>>>> May 17-20, 2021 (Europe Timezone) - June 7-10, 2021 (America Timezone)
>>>>>>>    *https://www.asipto.com/sw/kamailio-advanced-training-online/
>>>>>>
>>>>>> __________________________________________________________
>>>>>> Kamailio - Users Mailing List - Non Commercial Discussions
>>>>>>    *sr-users at lists.kamailio.org
>>>>>> Important: keep the mailing list in the recipients, do not reply only to the sender!
>>>>>> Edit mailing list options or unsubscribe:
>>>>>>    *https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>>>>> -- 
>>>>> Daniel-Constantin Mierla --www.asipto.com
>>>>> www.twitter.com/miconda  --www.linkedin.com/in/miconda
>>>>> Kamailio Advanced Training - Online
>>>>> May 17-20, 2021 (Europe Timezone) - June 7-10, 2021 (America Timezone)
>>>>>    *https://www.asipto.com/sw/kamailio-advanced-training-online/
>>> -- 
>>> Daniel-Constantin Mierla --www.asipto.com
>>> www.twitter.com/miconda  --www.linkedin.com/in/miconda
>>> Kamailio Advanced Training - Online
>>> May 17-20, 2021 (Europe Timezone) - June 7-10, 2021 (America Timezone)
>>>    *https://www.asipto.com/sw/kamailio-advanced-training-online/
> -- 
> Daniel-Constantin Mierla --www.asipto.com
> www.twitter.com/miconda  --www.linkedin.com/in/miconda
> Kamailio Advanced Training - Online
> May 17-20, 2021 (Europe Timezone) - June 7-10, 2021 (America Timezone)
>    *https://www.asipto.com/sw/kamailio-advanced-training-online/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20210507/26f78e79/attachment.htm>


More information about the sr-users mailing list