[SR-Users] kamailio as UAC and NAPTR / sendsocket question

Karsten Horsmann khorsmann at gmail.com
Fri Aug 9 19:20:48 CEST 2019


Hi Mailinglist,

for my future me and anybody that had the same issue, the new uac parameter
default_socket + tcp_reuse_port fixed the issue for me.

https://github.com/kamailio/kamailio/commit/27b6f0aba06796f0c52e32fad809d3781b17ce6b

Thanks to Henning.

Cheers
Karsten Horsmann


Karsten Horsmann <khorsmann at gmail.com> schrieb am Do., 4. Juli 2019, 15:58:

> Hi Frederico and Daniel.
>
> Today i found also the "tcp_reuse_port" documentation. Thanks Federico for
> the hint.
> With that paramenter to yes - i have still the issue that kamailio
> generates on force_send_socket or $fs (which is the same IMHO at the end)
> generates UDP.
> It forced the right IP but the transport is wrong. Without tcp_reuse_port
> it was the same stuff.
>
> I also tried a new listen param like "listen tcp:212.zz.xx.ab:8000" and
> point it to that direction.
> $fs and force_send_socket seems to be working with ip in that case. At the
> bottom I xlogged the du prameter.
>
> It feels like an special special corner case with naptr overwrite, uac and
> empty du tcp.
>
> $fs="212.zz.xx.ab"
>
> 13:07:35.839094 IP (tos 0x10, ttl 64, id 62416, offset 0, flags [none],
> proto UDP (17), length 472)
>     212.zz.xx.ab.sip > 217.0.26.67.sip: [bad udp cksum 0x9796 -> 0x68cb!]
> SIP, length: 444
>         REGISTER sip:sip-trunk.telekom.de SIP/2.0
>         Via: SIP/2.0/UDP
> 212.zz.xx.ab;branch=z9hG4bKc689.5afe94c5000000000000000000000000.0;i=0
>         To: <sip:+49xxxxxxxx at sip-trunk.telekom.de>
>         From: <sip:+49xxxxxxxx at sip-trunk.telekom.de
> >;tag=0e37b8f111de3a41f982d1e82cae2fe3-b388
>         CSeq: 10 REGISTER
>         Call-ID: 547d384144e9b23e-7166 at 212.zz.xx.ab
>         Max-Forwards: 70
>         Content-Length: 0
>         User-Agent: SBC-OS
>         Contact: <sip:49xxxxxxxx at 212.zz.xx.ab>
>         Expires: 360
>
>
> Jul  4 13:10:01 siptrunk1 /usr/sbin/kamailio[9380]: INFO: <script>:
> [tm:local-request] request rm:[REGISTER] from fu:[
> sip:+49xxxxxxxx at sip-trunk.telekom.de] to ru:[sip:sip-trunk.telekom.de]
> rP:[UDP] sut:[sip:212.zz.xx.ab:5060;transport=tcp] du:[sip:
> reg.sip-trunk.telekom.de] dP:[UDP]
> Jul  4 13:10:01 siptrunk1 /usr/sbin/kamailio[9380]: ERROR: <script>: its
> [REGISTER] [sip:sip-trunk.telekom.de]
> Jul  4 13:10:11 siptrunk1 /usr/sbin/kamailio[9380]: INFO: <script>:
> [tm:local-request] request rm:[REGISTER] from fu:[
> sip:+49xxxxxxxx at sip-trunk.telekom.de] to ru:[sip:sip-trunk.telekom.de]
> rP:[UDP] sut:[sip:212.zz.xx.ab:5060;transport=tcp] du:[sip:
> reg.sip-trunk.telekom.de] dP:[UDP]
>
> Am Do., 4. Juli 2019 um 10:50 Uhr schrieb Federico Cabiddu <
> federico.cabiddu at gmail.com>:
>
>> Actually you can force the TCP socket (e.g. sending from the same socket
>> you are listening on) if the kernel has support for SO_REUSEPORT (linux >
>> 3.9, FreeBSD, OSX) and you enable tcp_reuse_port in kamailio configuration (
>> https://www.kamailio.org/wiki/cookbooks/5.2.x/core#tcp_reuse_port).
>>
>> Best,
>>
>> Federico
>>
>> On Thu, Jul 4, 2019 at 10:27 AM Daniel Tryba <d.tryba at pocos.nl> wrote:
>>
>>> On Wed, Jul 03, 2019 at 06:38:28PM +0200, Karsten Horsmann wrote:
>>> > any one here that can imagine why force sendsocket generates an udp
>>> packet
>>> > if the target accept only tcp? And without fs it generates an tcp
>>> packet.
>>> > For uac registrations outbound?
>>>
>>> Reading the cookbook documentation of force_send_socket raises
>>> questions:
>>>  Force to send the message from the specified socket (it _must_ be one
>>>  of the sockets specified with the listen directive). If the
>>>  protocol doesn't match (e.g. UDP message forced to a TCP
>>>  socket) the closest socket of the same protocol is used.
>>>
>>> It relates to the listen directive, but if you are listening on a TCP
>>> port/socket you can't use that port/socket to create new outbound
>>> connections (to the best of my knowledge).
>>>
>>> You already tried $fs but without proto and port:
>>>
>>> https://www.kamailio.org/wiki/cookbooks/5.2.x/pseudovariables#fs_-_forced_socket
>>> proto is taken from $du if missing and I guess port is 5060 if missing.
>>> So if you are listening on 5060 tcp that can't be used for the outbound
>>> message, 5060 from udp is the closed match perhaps.
>>>
>>>
>>> _______________________________________________
>>> Kamailio (SER) - Users Mailing List
>>> sr-users at lists.kamailio.org
>>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>>>
>> _______________________________________________
>> Kamailio (SER) - Users Mailing List
>> sr-users at lists.kamailio.org
>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>>
>
>
> --
> Mit freundlichen Grüßen
> *Karsten Horsmann*
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20190809/463f099a/attachment.html>


More information about the sr-users mailing list