<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.6000.16735" name=GENERATOR></HEAD>
<BODY>
<DIV><FONT face=Tahoma size=2><SPAN
class=524420902-31102008>Hello,</SPAN></FONT></DIV>
<DIV><FONT face=Tahoma size=2><SPAN
class=524420902-31102008></SPAN></FONT> </DIV>
<DIV><FONT face=Tahoma size=2><SPAN class=524420902-31102008>I'm making progress
on my OpenSER 1.3.2 to OpenSIPS 1.4.x upgrade. The catalyst for the
upgrade was to diagnose an OpenSER/Mediaproxy 1.8 problem where media was
bouncing all over the place. Here is the original issue (no NAT unless
specified):</SPAN></FONT></DIV>
<DIV><FONT face=Tahoma size=2><SPAN
class=524420902-31102008></SPAN></FONT> </DIV>
<DIV><FONT face=Tahoma size=2><SPAN class=524420902-31102008>An Asterisk box
sends and INVITE to OpenSER. OpenSER looks it up and finds it belongs to a
NATed user. It statefully forwards the INVITE... the call sets up
normally. Mediaproxy has been invoked because of the callee's NATed
condition. Immediately after the call sets up, Asterisk issues a re-INVITE
to allow the caller and the callee to exchange RTP directly. Well, almost,
with the Mediaproxy involved. All the INVITES and 200s and ACKs are
exchanged correctly.</SPAN></FONT></DIV>
<DIV><FONT face=Tahoma size=2><SPAN
class=524420902-31102008></SPAN></FONT> </DIV>
<DIV><FONT face=Tahoma size=2><SPAN class=524420902-31102008>Now, the weird
part. The callee's RTP is hitting Mediaproxy and forwarding directly to
the caller. This is correct. The caller's audio is hitting
Mediaproxy, but Mediaproxy is forwarding it to the Asterisk box, not to the
callee. The Asterisk box then in turn forwards it back to the
caller. So at this point the caller is receiving both the callee's audio
and his own. And the callee hears nothing.</SPAN></FONT></DIV>
<DIV><FONT face=Tahoma size=2><SPAN
class=524420902-31102008></SPAN></FONT> </DIV>
<DIV><FONT face=Tahoma size=2><SPAN class=524420902-31102008>That was the
original issue. I attempted to upgrade to OpenSIPS + Mediaproxy 2.1, only
to find gobs of gnutls library dependencies I couldn't knowledgably satisfy on
Fedora 7. Ok, so I rework the route script for nathelper/rtpproxy.
After several days of educational frustration, I am to this point: The
original scenario appears to work properly. But, if the caller comes from
one of my PSTN carrier partner's gateways, the funkiness returns.
Sometimes. I've been able to get a network capture (including media) of a
good call and a bad call. The only difference I see is that in the good
call, the Asterisk box squeaks through a single RTP packet to rtpproxy before
the 200 OK to its reinvite comes in from the NATed callee.</SPAN></FONT></DIV>
<DIV><FONT face=Tahoma size=2><SPAN
class=524420902-31102008></SPAN></FONT> </DIV>
<DIV><FONT face=Tahoma size=2><SPAN class=524420902-31102008>How *should*
rtpproxy/mediaproxy handle reinvites? I only got this far by using
unforce_rtp_proxy, then force_rtp_proxy on a loose-routed INVITE w/ SDP (in
other words a reinvite). Should that be necessary? Might the "s"
swap flag be helpful in this scenario somewhere?</SPAN></FONT></DIV>
<DIV><FONT face=Tahoma size=2><SPAN
class=524420902-31102008></SPAN></FONT> </DIV>
<DIV><FONT face=Tahoma size=2><SPAN class=524420902-31102008>A simple solution
would be to disable the reinvites on Asterisk, but that doesn't scale well
enough for my application.</SPAN></FONT></DIV>
<DIV><FONT face=Tahoma size=2><SPAN
class=524420902-31102008></SPAN></FONT> </DIV>
<DIV><FONT face=Tahoma size=2><SPAN class=524420902-31102008>Does anyone know of
any resources they might be able to point me towards?</SPAN></FONT></DIV>
<DIV><FONT face=Tahoma size=2><SPAN
class=524420902-31102008></SPAN></FONT> </DIV>
<DIV><FONT face=Tahoma size=2><SPAN
class=524420902-31102008></SPAN></FONT> </DIV>
<DIV><FONT face=Tahoma size=2><SPAN
class=524420902-31102008>Thanks,</SPAN></FONT></DIV>
<DIV><FONT face=Tahoma size=2><SPAN
class=524420902-31102008>Jeff</SPAN></FONT></DIV></BODY></HTML>