As the result of the testing, the rtpproxy 1.2.1 builded using git is faulted, see the end of the article or article about kamamilio nat traversal with rtpproxy.
The article describe how to install the rtpproxy server, version 1.2.1, from the source. We need this server as a part of the NAT traversal solution realized with Kamailio and rtpproxy.
Info from the RTPproxy site:
The Sippy RTPproxy is a high-performance software proxy server for RTP streams that can work together with our Kamailio server.
The main purpose of RTPproxy originally had been to make the communication between SIP user agents behind NAT(s) (Network Address Translator) possible. Several cases existed when direct end-to-end communication is not possible and RTP streams have to be relayed through another host. The RTPproxy can be used to setup such a relaying host.
Download source code
We will use the latest version of the rtpproxy server, because the latest version included in apt repository of debian lenny is 1.1.2. For source download we will use the git
Because i have no git installed I will install it
apt-get install git-core
Then we download the source code to your preferred folder
git clone git://sippy.git.sourceforge.net/gitroot/sippy/rtpproxy
Compilation and installation
Go to the folder where the source code was downloaded
./configure
Configure failed cause I have no proper compiler, I install it
apt-get install gcc
and run ./configure again, now it works. And now we will start rest
make make install
Configuration
The rtpproxy server may communicate with Kamailio using the linux or UDP socket, thus mean that rtpproxy may run on the same machine as Kamailio or on another server.
Open the file /etc/default/rtpproxy and add line
CONTROL_SOCK="unix:/var/run/rtpproxy/rtpproxy.sock"
to use unix socket for the communication with kamailio, or uncomment
CONTROL_SOCK=udp:127.0.0.1:22222
to use the UDP socket.
Optionally, if we are using firewall, and we opened some ports for RTP media stream in our firewalls. So we may define to the rtpproxy to use this ports, to achieve this add
EXTRA_OPTS="-m 16384 -M 32767"
Testing with kamailio 3.1
- On debian lenny, you have to edit /etc/init.d/rtpproxy script because it is pointing to other folder as the rtpproxy binary is. By default it is pointing to the /usr/sbin, but after compilation the binary is in /usr/local/bin.
- Other problem, using rtpproxy 1.2.1 with kamalio 3.1.x lead to segmentation fault…so version 1.2.1 is for this case unusable fo us.
Dec 3 11:29:23 pstest /usr/sbin/kamailio[5567]: ERROR: <core> [tcp_read.c:882]: ERROR: tcp_read_req: error reading
Dec 3 11:29:34 pstest kernel: [1285797.388217] rtpproxy[5529]: segfault at 0 ip 409468 sp 7fffe8208d70 error 4 in rtpproxy[400000+f000]