Hi all,

I was wondering if someone can help me understand how the ICE parameter works in the rtpengine module works.

So basically our client does an ICE candidate lookup and grabs a list of them and applies it to the INVITE that gets sent to the Kamailio.  The list looks like this:

2020-12-03T18:05:46.456030+00:00 ashmainkama51 kamailio[22147]: a=candidate:3373280875 1 udp 2122262783 2001:8a0:78fc:7000:e1d7:e93:3c50:ee71 59827 typ host generation 0 network-id 2 network-cost 10
2020-12-03T18:05:46.456057+00:00 ashmainkama51 kamailio[22147]: a=candidate:3040609428 1 udp 2122197247 2001:8a0:78fc:7000:d979:bf75:dbc0:69f 59828 typ host generation 0 network-id 3 network-cost 10
2020-12-03T18:05:46.456081+00:00 ashmainkama51 kamailio[22147]: a=candidate:1681997092 1 udp 2122129151 192.168.1.66 59829 typ host generation 0 network-id 1 network-cost 10
2020-12-03T18:05:46.456106+00:00 ashmainkama51 kamailio[22147]: a=candidate:2274611867 1 tcp 1518283007 2001:8a0:78fc:7000:e1d7:e93:3c50:ee71 9 typ host tcptype active generation 0 network-id 2 network-cost 10
2020-12-03T18:05:46.456131+00:00 ashmainkama51 kamailio[22147]: a=candidate:4223662180 1 tcp 1518217471 2001:8a0:78fc:7000:d979:bf75:dbc0:69f 9 typ host tcptype active generation 0 network-id 3 network-cost 10
2020-12-03T18:05:46.456155+00:00 ashmainkama51 kamailio[22147]: a=candidate:717406676 1 tcp 1518149375 192.168.1.66 9 typ host tcptype active generation 0 network-id 1 network-cost 10
2020-12-03T18:05:46.456180+00:00 ashmainkama51 kamailio[22147]: a=candidate:2130547417 1 udp 8199935 206.81.191.27 61165 typ relay raddr 85.247.0.121 rport 53091 generation 0 network-id 1 network-cost 10


In the rtpengine_offer, I have this:

rtpengine_offer("ICE=force DTLS=passive replace-session-connection replace-origin external internal");

What i am trying to do is to tell the freeswitch endpoint to use rtpengine as ICE candidate and I see in the SDP this is happening:

a=candidate:6296910676 1 udp 659136 206.81.191.52 52766 typ host generation 0

Btw..206.81.191.52 is a separate AWS instance running rtpengine binary.

On the rtpengine_answer, I tell the remote client side the same thing..use rtpengine as your ICE candidate:

rtpengine_answer("ICE=force DTLS=passive replace-session-connection replace-origin internal external");

and this is snippet from 200 OK:

a=candidate:6296910676 1 udp 659136 206.81.191.52 52766 typ host generation 0

Question:

Why does the rtpengine logs still show that it's trying to use  2001:8a0:78fc:7000:e1d7:e93:3c50:ee71 as RTP candidate in this scenario?  

Dec  3 18:05:47 ashmainrtpe42 rtpengine[8505]: DEBUG: [ep1sbnkk9tikhg4kpmot]: Forward to sink endpoint: 2001:8a0:78fc:7000:e1d7:e93:3c50:ee71:59827 (RTP seq 25423 TS 0)

I thought ICE=force will handle such adjustments so that all rtp is handled by the rtpengine to our client and bypass the STUN server?



Thanks.

--
Andy Chen
Sr. Telephony Lead Engineer



*Confidentiality Notice: The information contained in this e-mail and any
attachments may be confidential. If you are not an intended recipient, you
are hereby notified that any dissemination, distribution or copying of this
e-mail is strictly prohibited. If you have received this e-mail in error,
please notify the sender and permanently delete the e-mail and any
attachments immediately. You should not retain, copy or use this e-mail or
any attachment for any purpose, nor disclose all or any part of the
contents to any other person. Thank you.*