Hi to all,
please could somevody help me with more complicated rtpproxy scenario? I still cannot understand how to make it working.
We have SBC based on kamailio 3.2.3. Everything seems to work until I want to translate all SDP messages by SBC IP address (for both sides). Moreover, I need to translate ipv4 to ipv6 and vice versa too.
I found some example script how to achieve ipv4 to ipv6 and vice versa and I am tryinf to use it. It is relatively easy to translate all RFC addresses to one public IP, but I need to translate even our public IPS into SBC IP.
I made some rtpproxy sets:
modparam("rtpproxy", "rtpproxy_sock", "1 == udp:127.0.0.1:7722") (EXTRA_OPTS="-l SBC_IP") for internal net to external
modparam("rtpproxy", "rtpproxy_sock", "2 == udp:127.0.0.1:7723") (EXTRA_OPTS="-l /SBC_IP -6 SBC_IP6") for ipv4 to ipv6
modparam("rtpproxy", "rtpproxy_sock", "3 == udp:127.0.0.1:7724") (EXTRA_OPTS="-l SBC_IP -6 /SBC_IP6") for ipv6 to ipv4
modparam("rtpproxy", "rtpproxy_sock", "4 == udp:127.0.0.1:7725") (EXTRA_OPTS="-l SBC_IP/SBC_IP) for external to internal
but I cannot make it working. Either there are problems with "incorrect port 0 in reply from rtp proxy" or SDP gets malformed because of more times rtpproxy_manage().
Please can you help me with some basic hint, where into routing logic put rtpproxy_manage() and set_rtpproxy_set() ? Moreover, how to check if rtpproxy was already forced?
I could not find any example of forcing RTP proxy for all calls for both sides. I need this because entire RTP traffic has to go across SBC. And my internal IPs are not private.
Thank you for any hint, Lukas Macura
Hi!
Some hints:
Do not try to put several RTP proxies in a row - only one instance per call should be used.
Consider this simple example (I do not know the details of your network): - internal LAN: IPv4 only - external: IPv4 + IPv6 - the SBC handles only int<->ext calls (no int<->int and no ext<->ext)
Then create 2 rtpproxy sets. rtpproxy's first interface is the internal, the second is the external: 1) IPv4(int)-IPv4(ext): rtpproxy -l int.ip.add.ress/ext.ip.add.ress [-6 addr1[/addr2]] 2) IPv4(int)-IPv6(ext): rtpproxy -l int.ip.add.ress -6 /ext.ipv6.add.ress
For requests from extern-v4 to intern use: set_rtp_proxy_set("1"); rtpproxy_manage("ei") and for the respective responses use: set_rtp_proxy_set("1"); rtpproxy_manage("ie")
For requests from intern to extern-v4 use: set_rtp_proxy_set("1"); rtpproxy_manage("ie") and for the respective responses use: set_rtp_proxy_set("1"); rtpproxy_manage("ei")
For requests from extern-v6 to intern use: set_rtp_proxy_set("2"); rtpproxy_manage("ei") and for the respective responses use: set_rtp_proxy_set("2"); rtpproxy_manage("ie")
For requests from intern to extern-v6 use: set_rtp_proxy_set("2"); rtpproxy_manage("ie") and for the respective responses use: set_rtp_proxy_set("2"); rtpproxy_manage("ei")
Of course you need some ways to find out if the target is IP4 or IP6 before calling set_rtp_proxy_set().
If you use IPv6 also internally, then add another proxy set with internal and external IPv6 address.
regards Klaus
On 23.05.2012 01:53, Lukas Macura wrote: