I came across this: "The only time when TURN is necessary is when one of the peers is behind a symmetric NAT and the other peer is behind either a symmetric NAT or port-restricted NAT." So how can a peer behind a symmetric NAT connect another behind, e.g., full cone NAT?
For example, let the peer behind the symmetric NAT be A and the other behind full cone NAT be B. The call process should be something like:
- A finds from STUN (no TURN) server that its local address and port (Al:Alp) be mapped to server reflexive values (As:Asp), which should only be meaningful between A and STUN server since it's symmetric NAT. (right?)
- Similarly, B finds its Bl:Blp be mapped to Bs:Bsp.
- A sends out SIP INVITE and SDP section in the INVITE tells to use As:Asp to receive media.
- B replies in 200 OK that to use Bs:Bsp to receive media.
- Media starts and A sends to B. Note that since it's symmetric NAT, a new port will be created by NAT, so the packet will be As:Asp' -> Bs:Bsp (where Asp' is the newly created port). The NAT in B's side will pass the packet (since it's full cone) and B will get A's media.
- From the SIP/SDP, B knows to use As:Asp to send media to A and this will be dropped in A's symmetric NAT, right?
Please check if I understand the steps correctly or not. So how can A (behind a symmetric NAT) to communicate B (behind a full cone or address-restricted cone)?
Thanks.