Vivienne,
See inline.
After further testing I have determined what exactly
seems to be
happening. When the private client initiates a call to the public
phone and the public phone then rings back the private phone,
everything is fine. However if after a period of time, the public
phone rings the private phone, there is no audio.
This is interesting, because now your OKs seem to be correct. Please note that BOTH the
INVITE going to the private and the OK going back to the public should have both Contact
and c IP address changed for proxying to work.
What is interesting, is that you say it works if you call the public phone first once and
then call the private right away. This doesn't really make sense at all as long as the
private phone rings when you have no audio. Because, if it rings, the NAT is still open
and SIP messaging is working...
When you say "no audio", does that mean in no directions?! If you do a
netstat -nlp | grep rtpproxy, you will find four udp ports, two for each client (1 x RTCP,
1 x RTP). Do a tcpdump port x on each of them to see if traffic goes through the proxy.
BTW, you can start ngrep with this script (do mkdir /var/log/sip first):
#!/bin/sh
nohup /path-to-ngrep/ngrep -t -W byline port 5060 2>&1 | rotatelogs
/var/log/sip/sip 86400 &
You will then get easier to read output and everything is written to files (and they are
rotate every day).
If you could, it would be great to see a full (all messages) SIP ngrep dump for the
following actions:
1. Public calls private, keeps the line open for 5 seconds and then private hangs up
2. Private calls public, keeps the line open for 5 seconds and then public hangs up
3. Step 1 once more.
I assume that you should experience #1 with no (one-way?which way?) audio, #2 is ok, #3
works based on your description.
Im presuming this is somthing got to do with the fact
that the
RTPProxy doesnt know where the audio should be delivered or something
got to do with ports?? My registration messages should last for many
days. I have included the 200OK message sequences below when 2092
(public) rings 2093(private) and theres no audio. I would like if
someone could clarify if the "nortpproxy:yes" is appropriate and if
the "c" field of the sdp is correct. Should the c field contain the
public address of the natted client or the address of the rtpproxy??
nortpproxy:yes means that force_rtp_proxy() has been called for the message and c IP
address has been replaced.
The c IP address should (when you proxy) be the public address of the rtpproxy.
g-)