<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;">
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Answering my own question, it appears that rtpengine reverses the logic of rtpproxy with regard to the media source address. It trusts the "c" ( connection ) address that the UA puts there. In this case the UA had learned what its public address was. Rtpengine trusts this instead using the source address. Now that the binding request is going to the UA I have to find where the binding response is going.</p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; "> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">On Friday, July 3, 2020 8:06:16 P.M. PDT Robert Dyck wrote:<br /></p>
<p style=" margin-top:12px; margin-bottom:0px; margin-left:40px; margin-right:40px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">While configuring my script for rtpengine I got a rather confusing result. The test involved a UA tethered to a phone with only IPV4 availble. The test was a call to a UA registered with an IPV6 address. The call was answered successfully but there was no media. A sniffer at the rtpengine host ( also opensips ) revealed the following --</p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; "> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:40px; margin-right:40px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">continuous binding request, no media</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:40px; margin-right:40px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">wireless IPV4 -> rtpengine in port -> rtpengine out port -> IPV6 -> AB:CD::</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:40px; margin-right:40px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">The destination address was obviously bogus. Since the address was so short on a hunce I converted it to decimal. It turns out that the binding request was being sent to the NAT's public IPV4 address but as an IPV6 packet.</p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; "> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:40px; margin-right:40px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">The signalling looked. Is this a misconfiguration? Rtpengine is configured in bridging mode with an IPV4 address and an IPV6 address.</p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; "> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:40px; margin-right:40px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'monospace'; color:#000000; background-color:#ffffff;">INVTEe </span><span style=" font-family:'monospace';"><br />                        <br />                       if !rtpengine_offer("in-iface=ipv4 out-iface=ipv6") <br />                               drop; <br />200 OK <br />           <br />                       rtpengine_answer(); <br /><br />INVITE altered by rtpengine, callee will send media to rtpengine ipv6 address <br /><br />m=audio 35010 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126 <br />c=IN IP6 2001::abcd    obfuscated <br />a=candidate:4242527773 1 udp 2122260223 192.168.42.184 46251 typ host generation 0 network-id 1 network-cost 50 <br />a=candidate:810740110 1 udp 1686052607 209.52.88.174 19506 typ srflx raddr 192.168.42.184 rport 46251 generation 0 network-id 1 network-cost 50 <br />a=candidate:2992384749 1 tcp 1518280447 192.168.42.184 9 typ host tcptype active generation 0 network-id 1 network-cost 50 <br /><br />200 OK altered by rtpengine, caller will send to rtpengine ipv4 address via one-to-one NAT <br /><br />m=audio 35000 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126 <br />c=IN IP4 10.20.30.40 <br />a=candidate:704553097 1 udp 2122260223 192.168.1.3 51091 typ host generation 0 network-id 1 <br />a=candidate:2158047068 1 udp 1686052607 10.20.30.40 51091 typ srflx raddr 192.168.1.3 rport 51091 generation 0 network-id 1 <br />a=candidate:1736268921 1 tcp 1518280447 192.168.1.3 9 typ host tcptype active generation 0<br /></span></p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; "> </p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; "> </p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; "> </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /><br /></p></body></html>