Hi,

Thats question i asked several times here, to be honest no 100% workable 
solution.
So after drinking many beers the idea flashed to brain and 
implementation seems to work nice so far.
Approach below works even if both UAs behind (different) NAT, as long as 
UA keep connection/flow alive ... .
Off course all this apply to proxy .... .

Here is how id did:

/* NAT traversal.
        When we do record routing, store request sender flow info and 
request target flow info.
         Now the tricky part, how proxy later which flow is target 
(because both sides can send requests).
         Sender-flow will store from-tag to flow and target-flow will 
store flowID only (Because we don't know to-tag).
         Later if request to-tag matches(incoming request), use that 
flow, otherwise(outgoing request) other flow.
                
              flowInfo: sender-flow "/" target-flow
                            sender-flow = from-tag ":" flowID
                            target-flow = flowID                       
  */

Off course flowInfo should be HMAC encrypted, but in test period i keep 
it open, easier to debug.

Term Flow:
    A Flow is a network protocol layer (layer 4) association
    between two hosts that is represented by the network address and
    port number of both ends and by the protocol.  For TCP, a flow is
    equivalent to a TCP connection.  For UDP a flow is a bidirectional
    stream of datagrams between a single pair of IP addresses and
     ports of both peers.


Any comments will be welcome.


Arif wrote:
> Hi!!
>
> I am kind of lost in a scenario..where..
>
> UAC (behind NAT) initiates a session with a UAS (Not behind NAT) through 
> Proxy (Statefull)..
> Now invite goes to Proxy and then routed to UAS.. and response is also 
> relayed back to UAC as per rfc 3261 and 3581..
> The UAC does not use any STUN etc.
>
> However IF UAS wants to end the session with BYE, it will send this request 
> to Proxy (coz proxy had record-routed), but how shall proxy
> route this request back to UAC (which is behind NAT), coz the contact address 
> which UAC had sent in initial invite contained private IP.
>
> is there any way we can make Proxy aware of this state and try to route 
> request back to UAC?
>
> regards
>
> Arif
>
>
>       
> _______________________________________________
> 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