This is a small guide on how to install mediaproxy-ng from sources on RPM based systems like CentOS.
Naming convention
All these “ng” stuff are really confusing and sometimes it’s hard to distinguish the pieces among them.
- rtpproxy: it’s a media relaying software for RTP packets. It runs as a service and needs to be controlled and instructed using it’s own protocol.
- rtpproxy module: it’s the Kamailio module that controls the rtpproxy service, from the configuration scripts.
- rtpproxy-ng module: it’s the next generation (ng) module for Kamailio, based on the rtpproxy module. It serves as a replacement for that old module on newer systems.
- mediaproxy: it’s another media relaying software, similar to rtpproxy, but older.
- mediaproxy-ng: despite of its name, it is not the next-generation mediaproxy, but instead, the next generation of the rtpproxy (the service, not the module). From Kamailio, it can be controlled from both the rtpproxy and the rtpproxy-ng modules.
Before you begin: I’m using a x86 virtual machine. This means that you have to change the package names from i686 to x86_64 when necessary.
1. Kernel upgrade: you may not need to do this, so I recommend skipping this step unless you end up with an error like “undefined symbol” when trying to load the kernel module in the last step. In my particular case, I had to do it with my CentOS 6.0 VM.
yum upgrade kernel -y && reboot
2. Install development tools: several tools are needed to perform this step. Instead of manually listing them one by one, I would rather save some typing time by just installing the whole package 😉
yum groupinstall 'Development Tools'
3. Download the sources:Â from github
git clone https://github.com/sipwise/mediaproxy-ng.git
4. Install kernel development headers: this is going to be a kernel module, we need them.
yum install kernel-devel-$(uname -r)
5. A few other dependencies
yum install glib2-devel.i686Â pcre-devel.i686Â libcurl-devel.i686Â libcurl.i686Â xmlrpc-c.i686Â zlib-devel.i686Â iptables-devel.i686
6. Install mediaproxy-ng
cd /usr/src/mediaproxy-ng/daemon make
7. Copy the resulting binary to the PATH: the Makefile doesn’t provide a rule for installing the binary.
cp mediaproxy-ng /usr/bin/
8. Compile and install the iptables extension
cd ../iptables-extension make cp libxt_MEDIAPROXY.so /lib/xtables/
9. Compile and install the kernel module
cd ../kernel-module/ make cp xt_MEDIAPROXY.ko /lib/modules/$(uname -r)/updates/ depmod -a modprobe xt_MEDIAPROXY
10. Finally, if everything went fine, you should be able to see something like this:
# lsmod | grep -i mediaproxy xt_MEDIAPROXY 16512 0 ipv6 264702 39 xt_MEDIAPROXY,ip6t_REJECT,nf_conntrack_ipv6
Why don’t you use the dkms utility for the kernel module? It makes things much easier on kernel changes.
It’s a good idea. Maybe with more time this weekend I’ll investigate further into this subject 🙂
Great description. I had a few dependencies to fill in, but not bad. Finally I keep my Kam farm all Centos !!!
Thanks
H
Glad you’ve found it useful 🙂
do you happen to know how to access mediaproxy-ng from kamailio installed on another server. I am trying to keep signalling and media on 2 different servers.
This is the part that confuses me. ”The mediaproxy dispatcher runs on the same machine as SIP Router and its purpose is to select a media relay for a call. The media relay may run on the same machine as the dispatcher or on multiple remote hosts and its purpose is to forward the streams between the calling parties. To find out more about the architecture of MediaProxy please read the documentation that comes with it.”
Do I need to install mediaproxy-ng on the Kamailio server and the remote hosts? Is there any step by step docs on how to accomplish that?