[SR-Users] SIP between IPv4 and IPv6 agents

Klaus Darilion klaus.mailinglists at pernau.at
Tue Nov 30 17:56:04 CET 2010



Am 30.11.2010 13:04, schrieb Komáromi Péter:
> Hi again,
>
> My kamailio 1.5 is working well and I'm able to create the session
> between an IPv4 and an IPv6 UA, but there is no RTP session. That's
> the point where the rtpproxy comes in. I installed it, and made a
> bridging (I hope it is): /usr/local/bin/rtpproxy -F -l
> /192.168.124.146 -6 FEC0:0:0:0:0:0:0:2 and started rtpproxy -F start.
> But there is no RTP traffic yet.

I start rtpproxy using the startup script. Therefore I modified the 
startup script /etc/init.d/rtpproxy (IIRC it is provided with the 
rtpproxy source code but must be installed manually):


EXTRA_OPTS="-m 10000 -M 12000 -l 11.136.32.162 -6 
/2a02:850:1:1:216:3eff:feef:1ffe"

in this case 11.136.32.162 is the 'i'nternal interface and 
2a02:FFFF:1:1:216:3eff:feef:1ffe is the 'e'xternal interface.

In kamailio.cfg you have to make sure that you call force_rtp_proxy() 
with proper flags to instruct rtpproxy if you need RTP proxying between 
v4-v4, v6-v6, v4-v6 or v6-v4.

The i and e flags is what you need, take a look at the documentation of
http://www.kamailio.org/docs/modules/3.1.x/modules_k/rtpproxy.html#id2581697

(this is for 3.1, but the flags are the same for 1.5, and the 1.5 doc is 
not that clear).

Thus, in kamailio.cfg, you have to find out the flow of the INVITE, and 
if for example the flow is from an v4 client to an v6 client, then you 
have to call (when as above the v4 it the internal interface and the v6 
is the external interface): force_rtp_proxy("ie")

For the respective 200 OK response you have to call force_rtp_proxy("ei").

If a call is v4->v4 then you call for requests and responses 
force_rtp_proxy("ii"). If a call is v6->v6 then you have to call for 
requests and responses force_rtp_proxy("ee")

> I read here (
> https://www1.ethz.ch/id/people/allid_list/armin/SIP-IPv4-IPv6.pdf ) I
> have to make two tables named â01Clocation _inet4â01D and
> â01Clocation_inet6â01D instead of the only â01Clocationâ01D. If it's

You can have v4 and v6 clients and the same location table - no problem. 
But the thing is that it is difficult to find out if the target will be 
v4 or v6. By separating the v4 and v6 users into separate location 
tables then you can lookup one or the other and find out if the 
registered client was registered by ipv4 or ipv6.

regards
Klaus



More information about the sr-users mailing list