Hi! I already managed to use ICE to establish a call between a client behind symmetric NAT and a client directly (no NAT) connected to my SIP Server, which proves that ICE is working fine :) However, I have a problem when ICE can't establish a connection (ex: Port Restricted Cone NAT to Symmetric NAT). I think I am missing something, because the media (RTP and RTCP) is not starting in caller when the initial answer (200 OK INVITE) is received by the caller. As I am using PJSIP at a low level, the process flow is like this: [When starting a call] == Caller == pjmedia_ice_create() pjmedia_transport_media_create() pjmedia_transport_encode_sdp() pjsip_inv_create_uac() pjsip_inv_invite() pjsip_inv_send_msg() [INVITE goes to answerer] == Answerer == pjsip_inv_answer() pjmedia_ice_create() pjmedia_transport_media_create() pjmedia_transport_encode_sdp() pjsip_inv_send_msg() pjmedia_transport_media_start() [200 OK goes to caller] == Caller == on_media_update(): pjmedia_transport_media_start() on_ice_complete(): pjmedia_endpt_create_sdp() pjmedia_transport_encode_sdp() pjsip_inv_reinvite() pjsip_inv_send_msg() (...) With this process flow, I can see that the default candidates (relayed candidates) are chosen and negotiated; I can even see the media flow going from answerer to relay sever to caller, but not the other way around (caller to relay server to answerer). Any idea why? Am I missing something? Cheers Pedro Gon?alves