Hello,
  I think   it is possible to choose wrong transport type to relay . so i prefer that add transport parameter to Route headers. Kamailio handles it with loose_route function and mhomed feature.

Yasin CANER


   F14 200 OK Proxy 1 -> Alice

   SIP/2.0 200 OK
   Contact: <sip:bob@client.biloxi.example.com;transport=tcp>

   ..............
 
   F15 ACK Alice -> Proxy 1

   ACK sip:bob@client.biloxi.example.com SIP/2.0
   Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b76
   Max-Forwards: 70
   Route: <sip:ss1.atlanta.example.com;lr>,
    <sip:ss2.biloxi.example.com;lr>
   From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
   To: Bob <sip:bob@biloxi.example.com>;tag=314159
   Call-ID: 3848276298220188511@atlanta.example.com
   CSeq: 2 ACK
   Content-Length: 0


   F16 ACK Proxy 1 -> Proxy 2

   ACK sip:bob@client.biloxi.example.com SIP/2.0
   Via: SIP/2.0/TCP ss1.atlanta.example.com:5060;branch=z9hG4bK2d4790.1
   Via: SIP/2.0/TCP client.atlanta.example.com:5060;branch=z9hG4bK74b76
    ;received=192.0.2.101
   Max-Forwards: 69
   Route: <sip:ss2.biloxi.example.com;lr>
   From: Alice <sip:alice@atlanta.example.com>;tag=9fxced76sl
   To: Bob <sip:bob@biloxi.example.com>;tag=314159
   Call-ID: 3848276298220188511@atlanta.example.com
   CSeq: 2 ACK
   Content-Length: 0



From: sr-users <sr-users-bounces@lists.kamailio.org> on behalf of Yufei Tao <yufei.tao@gmail.com>
Sent: Sunday, April 28, 2019 11:54 PM
To: Kamailio (SER) - Users Mailing List
Subject: [SR-Users] SIP basic flow question: R-URI in ACK
 

Hi,

 

I have a question regarding basic SIP flow for establishing a call session, and wonder if anyone can help me clarify.

 

For normal call set up, INVITE-OK-ACK, from RFC3261, I believe the ACK’s R-URI should be a copy of the Contact header of the OK message.

 

However in RFC3665 sections 3.1 and 3.2 for example, the ACK’s R-URI missed the parameters from the Contact header of the OK, e.g.

 

In OK the Contact header is:

   Contact: <sip:bob@client.biloxi.example.com;transport=tcp>

 

And  ACK the R-URI is:

ACK sip:bob@client.biloxi.example.com SIP/2.0

 

Which has got the parameter ‘transport=tcp’ removed – why is this?

 

In this case if the proxy connected to Bob handles ACK in the usual way as it would for all in-dialog requests, i.e. based on routing headers only and not extra processing, it’ll try to relay the ACK message to Bob using the default transport UDP which is not expected and will fail.

 

Can anyone help explain why the parameters are removed in RFC3665 examples please? Have I missed anything? Thank you very much!

 

Yufei