<div dir="ltr"><pre>On 19/07/17 08:31 AM, Ismir Saljic wrote:
><i> Hello,
</i>><i>
</i>><i> I've issue with bridging media between IPv4 and IPv6 clients. 
</i>><i> IPv4-IPv4 and IPv6-IPv6 calls are working without issues.
</i>><i> I'm using kamailio 4.4.2 and configuration according to: 
</i>><i> <a href="http://kb.asipto.com/kamailio:kamailio-mixed-ipv4-ipv6">http://kb.asipto.com/kamailio:kamailio-mixed-ipv4-ipv6</a> 
</i>><i> <<a href="http://kb.asipto.com/kamailio:kamailio-mixed-ipv4-ipv6">http://kb.asipto.com/kamailio:kamailio-mixed-ipv4-ipv6</a>>
</i>><i>
</i>><i> SIP signalling is working without issues,but media addresses in SDP 
</i>><i> are not rewritten correctly.
</i>><i>
</i>><i> The server is on amazon AWS and both kamailio and RTPengine are on the 
</i>><i> same server.
</i>><i> RTPengine is running using these options:
</i>><i>
</i>><i> /usr/sbin/rtpengine   --interface=privateIPv4!publicIPv4
</i>><i>                                  --interface=GlobalIPv6
</i>><i>    --listen-udp=<a href="http://127.0.0.1:22222">127.0.0.1:22222</a> <<a href="http://127.0.0.1:22222">http://127.0.0.1:22222</a>>
</i>><i>    --tos=184
</i>><i> --pidfile=/var/run/rtpengine.pid
</i>><i>    --log-level=6
</i>><i>    --log-facility=daemon
</i>
I would suggest to use Kamailio's rtpengine module instead of rtpproxy, 
together with --listen-ng instead of --listen-udp.

The UDP protocol of the rtpproxy module should work with rtpengine, but 
not many people are using it, so it's always possible that some bugs 
creep in. I'll look into it anyway, but in the long run, it's much 
preferable to switch to the rtpengine module.

Cheers<br>##########################<br></pre><pre>Hello Richard,<br><br></pre><pre>thank you very much for your answer. I will try to use rtpengine module.<br></pre><pre>As I can see from logs, kamailio is sending correctly data to rtpengine but rtp engine<br></pre><pre>failed to parse IPv6 address from SDP body.<br></pre><pre>I'm sending flags to rtpengine according to the howto from link I've posted in the original post.<br></pre><pre>This is the part of the config:<br><br><span class="gmail-kw1">if</span> <span class="gmail-br0">(</span><span class="gmail-sy0">!</span><span class="gmail-br0">(</span>isflagset<span class="gmail-br0">(</span>FLT_NATS<span class="gmail-br0">)</span> <span class="gmail-sy0">||</span> isbflagset<span class="gmail-br0">(</span>FLB_NATB<span class="gmail-br0">)</span>
                        <span class="gmail-sy0">||</span> isbflagset<span class="gmail-br0">(</span>FLB_V4V6<span class="gmail-br0">)</span><span class="gmail-br0">)</span><span class="gmail-br0">)</span>
                <span class="gmail-kw1">return</span><span class="gmail-sy0">;</span>
 
        <span class="gmail-kw1">if</span><span class="gmail-br0">(</span>isbflagset<span class="gmail-br0">(</span>FLB_V4V6<span class="gmail-br0">)</span><span class="gmail-br0">)</span> <span class="gmail-br0">{</span>
                <span class="gmail-kw1">if</span><span class="gmail-br0">(</span>af<span class="gmail-sy0">==</span>INET6<span class="gmail-br0">)</span> <span class="gmail-br0">{</span>
                        rtpproxy_manage<span class="gmail-br0">(</span><span class="gmail-st0">"FAEI"</span><span class="gmail-br0">)</span><span class="gmail-sy0">;</span>
                <span class="gmail-br0">}</span> <span class="gmail-kw1">else</span> <span class="gmail-br0">{</span>
                        rtpproxy_manage<span class="gmail-br0">(</span><span class="gmail-st0">"FAIE"</span><span class="gmail-br0">)</span><span class="gmail-sy0">;</span>
                <span class="gmail-br0">}</span>
        <span class="gmail-br0">}</span> <span class="gmail-kw1">else</span> <span class="gmail-br0">{</span>
                <span class="gmail-kw1">if</span><span class="gmail-br0">(</span>af<span class="gmail-sy0">==</span>INET6<span class="gmail-br0">)</span> <span class="gmail-br0">{</span>
                        rtpproxy_manage<span class="gmail-br0">(</span><span class="gmail-st0">"FAEE"</span><span class="gmail-br0">)</span><span class="gmail-sy0">;</span>
                <span class="gmail-br0">}</span> <span class="gmail-kw1">else</span> <span class="gmail-br0">{</span>
                        rtpproxy_manage<span class="gmail-br0">(</span><span class="gmail-st0">"FAII"</span><span class="gmail-br0">)</span><span class="gmail-sy0">;<span class=""><br><br></span></span></pre><pre><span class="gmail-sy0"><span class="">I'm not sure if I need to inform rtpengine that in SDP body will be IPv6 address.<br><br></span></span></pre><pre><span class="gmail-sy0"><span class="">Thanks<br></span></span></pre><pre><span class="gmail-sy0"><span class="">Ismir<br></span></span></pre><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jul 19, 2017 at 2:31 PM, Ismir Saljic <span dir="ltr"><<a href="mailto:isaljic@gmail.com" target="_blank">isaljic@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div class="gmail-h5"><div><div><div><div>Hello,<br><br></div>I've issue with bridging media between IPv4 and IPv6 clients. IPv4-IPv4 and IPv6-IPv6 calls are working without issues.<br></div>I'm using kamailio 4.4.2 and configuration according to: <a href="http://kb.asipto.com/kamailio:kamailio-mixed-ipv4-ipv6" target="_blank">http://kb.asipto.com/kamailio:<wbr>kamailio-mixed-ipv4-ipv6</a><br><br></div><div>SIP signalling is working without issues,but media addresses in SDP are not rewritten correctly.<br><br><div>The server is on amazon AWS and both kamailio and RTPengine are on the same server.<br></div>RTPengine is running using these options:<br><br>/usr/sbin/rtpengine   --interface=privateIPv4!public<wbr>IPv4 <br>                                 --interface=GlobalIPv6 <br>                              <wbr>   --listen-udp=<a href="http://127.0.0.1:22222" target="_blank">127.0.0.1:22222</a> <br>                              <wbr>   --tos=184 <br>                              <wbr>   --pidfile=/var/run/rtpengine.p<wbr>id <br>                              <wbr>   --log-level=6 <br>                              <wbr>   --log-facility=daemon<br><br><br></div><div>In
 case of IPv4-IPv6 call, INVITE message contains correct IPv4 address 
but 200 OK response to the caller still contains IPv6 address of the 
callee in SDP body instead of IPv4 address of the server/RTPengine.<br></div><div>This is the log during generation of the 200 OK response. Seems that RTPengine failed to parse IPv4 address from SDP body.<br></div><div><br>Jul
 19 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> 
[parser/msg_parser.c:618]: parse_msg(): SIP Reply  (status):<br>Jul 19 
08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> 
[parser/msg_parser.c:620]: parse_msg():  version: <SIP/2.0><br>Jul
 19 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> 
[parser/msg_parser.c:622]: parse_msg():  status:  <200><br>Jul 19 
08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> 
[parser/msg_parser.c:624]: parse_msg():  reason:  <OK><br>Jul 19 
08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> 
[parser/parse_via.c:1254]: parse_via_param(): Found param type 232, 
<branch> = <z9hG4bK5afe.c59aef39af345458e<wbr>17940722ba0c70b.0>;
 state=6<br>Jul 19 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: 
<core> [parser/parse_via.c:1254]: parse_via_param(): Found param 
type 234, <received> = <Server's GlobalIPv6>; state=6<br>Jul
 19 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> 
[parser/parse_via.c:1254]: parse_via_param(): Found param type 236, 
<i> = <8>; state=16<br>Jul 19 08:02:42  
/usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> 
[parser/parse_via.c:2642]: parse_via(): end of header reached, state=5<br>Jul
 19 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> 
[parser/msg_parser.c:496]: parse_headers(): parse_headers: Via found, 
flags=2<br>Jul 19 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: 
<core> [parser/msg_parser.c:498]: parse_headers(): parse_headers: 
this is the first via<br>Jul 19 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> [receive.c:178]: receive_msg(): After parse_msg...<br>Jul
 19 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: tm 
[t_lookup.c:1011]: t_check_msg(): DEBUG: t_check_msg: msg id=143 global 
id=142 T start=0xffffffffffffffff<br>Jul 19 08:02:42  
/usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> 
[parser/parse_via.c:1254]: parse_via_param(): Found param type 234, 
<received> = <178.165.130.177>; state=6<br>Jul 19 08:02:42  
/usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> 
[parser/parse_via.c:1254]: parse_via_param(): Found param type 232, 
<branch> = <z9hG4bK.BUIgttWpK>; state=6<br>Jul 19 08:02:42  
/usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> 
[parser/parse_via.c:1254]: parse_via_param(): Found param type 235, 
<rport> = <2066>; state=16<br>Jul 19 08:02:42  
/usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> 
[parser/parse_via.c:2642]: parse_via(): end of header reached, state=5<br>Jul
 19 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> 
[parser/msg_parser.c:496]: parse_headers(): parse_headers: Via found, 
flags=62<br>Jul 19 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: 
<core> [parser/msg_parser.c:509]: parse_headers(): parse_headers: 
this is the second via<br>Jul 19 08:02:42  
/usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> 
[parser/parse_addr_spec.c:172]<wbr>: parse_to_param(): DEBUG: add_param: 
tag=2996330c<br>Jul 19 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: 
<core> [parser/parse_addr_spec.c:894]<wbr>: parse_addr_spec(): end of 
header reached, state=29<br>Jul 19 08:02:42  
/usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> 
[parser/msg_parser.c:173]: get_hdr_field(): DEBUG: get_hdr_field: 
<To> [59]; uri=[<a href="mailto:sip%3Auser@domain.com" target="_blank">sip:user@domain.com</a>]<br>Jul 19 08:02:42  
/usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> 
[parser/msg_parser.c:175]: get_hdr_field(): DEBUG: to body 
["user"<<a href="mailto:sip%3Auser@domain.com" target="_blank">sip:user@domain.com</a>>]<br>Jul 19 08:02:42  
/usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> 
[parser/msg_parser.c:153]: get_hdr_field(): get_hdr_field: cseq 
<CSeq>: <21> <INVITE><br>Jul 19 08:02:42  
/usr/local/sbin/kamailio[1691]<wbr>: DEBUG: tm [t_lookup.c:888]: 
t_reply_matching(): DEBUG: t_reply_matching: hash 61349 label 0 branch 0<br>Jul
 19 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: tm 
[t_lookup.c:943]: t_reply_matching(): DEBUG: t_reply_matching: reply 
matched (T=0x7f7f95c19a10)!<br>Jul 19 08:02:42  
/usr/local/sbin/kamailio[1691]<wbr>: DEBUG: tm [t_hooks.c:266]: 
run_trans_callbacks_internal()<wbr>: DBG: trans=0x7f7f95c19a10, callback type
 2, id 0 entered<br>Jul 19 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: 
DEBUG: acc [acc_logic.c:644]: tmcb_func(): acc callback called for 
t(0x7f7f95c19a10) event type 2, reply code 200<br>Jul 19 08:02:42  
/usr/local/sbin/kamailio[1691]<wbr>: DEBUG: tm [t_lookup.c:1080]: 
t_check_msg(): DEBUG: t_check_msg: msg id=143 global id=143 T 
end=0x7f7f95c19a10<br>Jul 19 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: 
DEBUG: tm [t_reply.c:2160]: reply_received(): DEBUG: reply_received: 
org. status uas=180, uac[0]=180 local=0 is_invite=1)<br>Jul 19 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <script>: incoming reply<br>Jul 19 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <script>: BMX: FAIE<br>Jul
 19 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> 
[parser/msg_parser.c:187]: get_hdr_field(): DEBUG: get_hdr_body : 
content_length=559<br>Jul 19 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: 
DEBUG: <core> [parser/msg_parser.c:89]: get_hdr_field(): found end
 of header<br>Jul 19 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: 
<core> [parser/sdp/sdp_helpr_funcs.c:<wbr>504]: extract_mediaip(): 
located IP address [IPv6 of the callee] in `o=' field<br>Jul 19 
08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> 
[parser/sdp/sdp_helpr_funcs.c:<wbr>504]: extract_mediaip(): located IP 
address [IPv6 of the callee] in `c=' field<br>Jul 19 08:02:42  
/usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> 
[parser/sdp/sdp.c:574]: parse_sdp_session(): ignoring unknown type in a=
 line: `a=rtcp-fb:* nack#015#012a=rtcp-fb:* nack pli#015#012'<br>Jul 19 
08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> 
[parser/sdp/sdp.c:574]: parse_sdp_session(): ignoring unknown type in a=
 line: `a=rtcp-fb:* nack pli#015#012'<br>Jul 19 08:02:42  
/usr/local/sbin/kamailio[1691]<wbr>: DEBUG: rtpproxy [rtpproxy_funcs.c:148]: 
check_content_type(): type <application/sdp> found valid<br>Jul 19
 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> 
[parser/parse_addr_spec.c:172]<wbr>: parse_to_param(): DEBUG: add_param: 
tag=aNfQNJz3e<br>Jul 19 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG:
 <core> [parser/parse_addr_spec.c:894]<wbr>: parse_addr_spec(): end of 
header reached, state=29<br>Jul 19 08:02:42  rtpengine[24330]: Got valid
 command from udp:<a href="http://127.0.0.1:28152" target="_blank">127.0.0.1:28152</a>: 1691_12 LAEI6 dcMDMrNRhw IPv6 of the 
callee 58100 aNfQNJz3e;1 2996330c;1<br>Jul 19 08:02:42  rtpengine[24330]: [dcMDMrNRhw] Failed to parse a media stream: /IPv6 of the callee:58100<br>Jul 19 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: rtpproxy [rtpproxy.c:2712]: force_rtp_proxy(): proxy reply: E8<br>Jul
 19 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: ERROR: rtpproxy 
[rtpproxy.c:2735]: force_rtp_proxy(): incorrect port 0 in reply from rtp
 proxy<br>Jul 19 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: tm 
[t_reply.c:1233]: t_should_relay_response(): 
->>>>>>>>> T_code=180, new_code=200<br>Jul 19
 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: tm [t_reply.c:1751]: 
relay_reply(): DEBUG: relay_reply: branch=0, save=0, relay=0 icode=0<br>Jul
 19 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> 
[msg_translator.c:2260]: generate_res_buf_from_sip_res(<wbr>): old size: 
1467, new size: 1319<br>Jul 19 08:02:42  /usr/local/sbin/kamailio[1691]<wbr>:
 DEBUG: <core> [msg_translator.c:2278]: 
generate_res_buf_from_sip_res(<wbr>): copied size: orig:164, new: 16, rest: 
1303 <br>msg=#012SIP/2.0 200 OK#015#012<br>Via: SIP/2.0/TCP 
10.152.108.46:56401;received=X<wbr>.X.X.X;<br>branch=z9hG4bK.BUIgttWpK;rport<wbr>=2066<br>Record-Route:
 <sip:[Server's 
IPv6];transport=tcp;r2=on;lr;n<wbr>at=v46><br>Record-Route: 
<sip:X.X.X.X;transport=tcp;r2=<wbr>on;lr;nat=v46><br>Contact: 
<sip:user@[IPv6 of the 
callee]:59335;rinstance=836aa3<wbr>6a01097072;transport=tcp><br>To: 
"user"<<a href="mailto:sip%3Auser@domain.com" target="_blank">sip:user@domain.com</a>>;ta<wbr>g=2996330c<br>From: "caller" 
<<a href="mailto:sip%3Acaller@domain.com" target="_blank">sip:caller@domain.com</a>>;tag=aN<wbr>fQNJz3e<br>Call-ID: 
dcMDMrNRhw<br>CSeq: 21 INVITE<br>Allow: SUBSCRIBE, NOTIFY, 
INVITE, ACK, CANCEL, BYE, REFER, INFO, OPTIONS, 
MESSAGE<br>Content-Type: application/sdp<br>Supported: 
replaces<br>User-Agent: Bria 5 release 5.0.0 stamp 
85993<br>Content-Length: 559<br><br>v=0<br>o=- 241380314
 3 IN IP6 IPv6 of the callee(should be IPv4 address of the server)<br>s=Bria 5 release 5.0.0 stamp 
85993<br>c=IN IP6 IPv6 of the callee (should be IPv4 address of the server)<br><br><br><br></div><div>The same situation is in case of IPv6-IPv4 call.<br></div>This is the part of the log in case of IPV6-IPv4 call when kamailio is creating INVITE to the IPv4 callee:<br><br>Jul 19 08:04:52  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <script>: BMX: FAIE<br>Jul 19 08:04:52  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> [parser/sdp/sdp_helpr_funcs.c:<wbr>504]: extract_mediaip(): located IP address [IPv6 Address] in `o=' field<br>Jul 19 08:04:52  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: <core> [parser/sdp/sdp_helpr_funcs.c:<wbr>504]: extract_mediaip(): located IP address [IPv6 Address] in `c=' field<br>Jul 19 08:04:52  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: rtpproxy [rtpproxy_funcs.c:148]: check_content_type(): type <application/sdp> found valid<br>Jul 19 08:04:52  rtpengine[24330]: Got valid command from udp:<a href="http://127.0.0.1:28152" target="_blank">127.0.0.1:28152</a>: 1691_13 UAEI6 85993YWVkNmQ4YTFmN2JkZWQ4NjIzM<wbr>GYwMDBlM2RlOGY0ZDQ 2a03:f81:abcd:172:16:20:119:2 50168 1430094e;1<br>Jul 19 08:04:52  rtpengine[24330]: [85993YWVkNmQ4YTFmN2JkZWQ4NjIz<wbr>MGYwMDBlM2RlOGY0ZDQ] Creating new call<br>Jul 19 08:04:52  rtpengine[24330]: [85993YWVkNmQ4YTFmN2JkZWQ4NjIz<wbr>MGYwMDBlM2RlOGY0ZDQ] Failed to parse a media stream: /IPv6:50168<br>Jul 19 08:04:52  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: rtpproxy [rtpproxy.c:2712]: force_rtp_proxy(): proxy reply: E8<br>Jul 19 08:04:52  /usr/local/sbin/kamailio[1691]<wbr>: ERROR: rtpproxy [rtpproxy.c:2735]: force_rtp_proxy(): incorrect port 0 in reply from rtp proxy<br>Jul 19 08:04:52  /usr/local/sbin/kamailio[1691]<wbr>: DEBUG: siputils [checks.c:97]: has_totag(): no totag<br><br></div><div><br></div><div>Any help would be very appreciated!<br><br></div><div>Thank you<br></div>Kind regards</div></div><div class="gmail-m_7508830339653551509gmail-yj6qo gmail-m_7508830339653551509gmail-ajU"><div id="gmail-m_7508830339653551509gmail-:2eb" class="gmail-m_7508830339653551509gmail-ajR"><img class="gmail-m_7508830339653551509gmail-ajT" src="https://ssl.gstatic.com/ui/v1/icons/mail/images/cleardot.gif"></div></div></div>
</blockquote></div><br></div></div>