-----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