title: when is TURN necessary? symmetric NAT and port-restricted NAT
body: <p>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?</p>
  
  <p>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:</p>
  
  <ol>
  <li>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?)</li>
  <li>Similarly, B finds its Bl:Blp be mapped to Bs:Bsp.</li>
  <li>A sends out SIP INVITE and SDP section in the INVITE tells to use As:Asp to receive media.</li>
  <li>B replies in 200 OK that to use Bs:Bsp to receive media.</li>
  <li>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.</li>
  <li>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?</li>
  </ol>
  
  <p>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)?</p>
  
  <p>Thanks.</p>