-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of I?aki Baz 
Castillo
Sent: Wednesday, July 09, 2008 8:03 AM
To: [email protected]
Subject: [Sip-implementors] Is valid a retransmissions from 
differentaddress:port ?

Hi, imagine a UAC sending a request that arrives to UAS from IP_A:port_A.

Later the UAC closes the TCP connection or UDP link and resend the *same* 
request (same "branch", "sent-by" and "method") from IP_B:port_B.

If UAC is behind NAT then "Via" "received" and "rport" parameters would be 
different in both identical requests.
[Rockson] the value of received and rport is appended by UAS not UAC, it's only 
possible that the top Via has a valueless rport.

Is it a valid retransmission? I think so since it respects the 3 points:

------------------------
 17.2.3 Matching Requests to Server Transactions
   The  request matches a transaction if:

      1. the branch parameter in the request is equal to the one in the
         top Via header field of the request that created the
         transaction, and

      2. the sent-by value in the top Via of the request is equal to the
         one in the request that created the transaction, and

      3. the method of the request matches the one that created the
         transaction, except for ACK, where the method of the request
         that created the transaction is INVITE.
------------------------


The problem is that the UAS transaction layer must reply with the last response 
for the original request, but this reply is not exactly the same since top Via 
can be different ("received" and "rport") so the reply would be modified before 
re-send. Also the socket to use is different.
[Rockson] I think for UDP, the response for retransmission of req would sent to 
the addr:port the original req comes from,
Since the received and rport is populated as addr:port the original req comes 
from , when server transaction notice that it need reply to a retransmitted 
req, 
It just give transport layer the previous sent response, which have received 
and rport already.

So when transport get the response, it just does as per RFC3581, send the 
reponse as per received and rport, which is the addr:port the original req 
comes from.

It should be OK, since both UAC and NAT will live the origianl addr:port open.

RFC3581 3.  Client Behavior
   When the client sends the request, if the request is sent using UDP,
   the client MUST be prepared to receive the response on the same IP
   address and port it used to populate the source IP address and source
   port of the request.

   When there is a NAT between the client and server, the request will
   create (or refresh) a binding in the NAT.  This binding must remain
   in existence for the duration of the transaction in order for the
   client to receive the response.

for TCP, you do not need to retramsmit it, since it's reliable transport.


Is it then a valid retransmission? Does any implementation consider this issue?

Thanks.





--
Iñaki Baz Castillo

_______________________________________________
Sip-implementors mailing list
[email protected]
https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors

_______________________________________________
Sip-implementors mailing list
[email protected]
https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors

Reply via email to