[SR-Users] Setting $conid per branch
Daniel-Constantin Mierla
miconda at gmail.com
Wed Mar 17 08:18:47 CET 2021
Hello,
On 11.03.21 10:55, Marrold wrote:
> Hi Daniel,
>
> I didn't spot those TCPOPs functions, I'll give them a try and let you
> know how I get on.
>
> Do you have any idea why Kamailio is intermittently selecting the
> wrong connection using ID vs peer address?
have you tried and got that with lookup("location") or only with your
script-based reg_fetch_contact()?
Cheers,
Daniel
>
> Thanks for the suggestions.
> Matthew
>
> On Wed, Mar 10, 2021 at 7:27 AM Daniel-Constantin Mierla
> <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>
> Hello,
>
> a while ago I did some work to make possible to specify the
> outgoing tcp connection id, see:
>
> *
> https://www.kamailio.org/docs/modules/stable/modules/tcpops.html#tcpops.f.tcp_set_otcpid
> <https://www.kamailio.org/docs/modules/stable/modules/tcpops.html#tcpops.f.tcp_set_otcpid>
>
> And the next function after it.
>
> However, the testing was minimal, maybe not verifying the entire
> chain with t_relay()/forward(). Even more, the specifying of the
> outbound tcp connection was supposed to be done internally by the
> lookup("location"), the functions from tcpops being added for more
> config flexibility, suitable for single branch forwarding or
> branch_route blocks.
>
> However, in your seem to do manual processing with
> reg_fetch_contacts(), not rely on lookup location. You can test
> with master and use $sbranch(...) and corresponding functions from
> pv module, instead of setting the r-uri and append_branch().
>
> Cheers,
> Daniel
>
> On 10.03.21 06:00, Marrold wrote:
>> Hi,
>>
>> I've done a bit more digging and realised that $conid is
>> read-only, and only available for an inbound connection - so I
>> dont think it will achieve what I need.
>>
>> I did a bit more troubleshooting and observed the differences in
>> the debug log between two identical calls:
>>
>> This example failed - the INVITEs went out to the incorrect
>> endpoint / TCP connection. The "ulc_conid" from the location
>> table for the TCP endpoint is 13:
>>
>> Mar 9 10:30:20 proxy-01 /sbin/kamailio[27014]: ERROR: <script>:
>> Adding to main branch. ua: Yealink SIP-T42G 29.83.0.120 ru:
>> sip:442079460000 at 10.0.130.218:5060
>> <http://sip:442079460000@10.0.130.218:5060> du:
>> sip:203.0.113.1:1046 <http://203.0.113.1:1046> ulc_conid: 0
>> flags: 192 ci: 162e3e84-4036-48d7-a1d1-79cc92b7cea4-2-1 at sip-server-01
>> Mar 9 10:30:20 proxy-01 /sbin/kamailio[27014]: ERROR: <script>:
>> Adding to child branch. ua: Yealink SIP-T58 58.85.0.5 ru:
>> sip:442079460000 at 10.0.130.241:50130;transport=TCP du:
>> sip:203.0.113.1:50130;transport=tcp ulc_conid: 13 flags: 192 ci:
>> 162e3e84-4036-48d7-a1d1-79cc92b7cea4-2-1 at sip-server-01
>>
>> The debug log shows the wrong connection was found /by id, /which
>> in this case was 2, but should have been 13:
>>
>> Mar 9 10:30:21 proxy-01 /sbin/kamailio[27014]: INFO: <script>:
>> ONSEND: rm: INVITE ru: sip:442079460000 at 10.0.130.218:5060
>> <http://sip:442079460000@10.0.130.218:5060> du:
>> sip:203.0.113.1:1046 <http://203.0.113.1:1046> proto: udp src:
>> 185.28.212.61:5060 <http://185.28.212.61:5060> dest:
>> 203.0.113.1:1046 <http://203.0.113.1:1046> ci:
>> 162e3e84-4036-48d7-a1d1-79cc92b7cea4-2-1 at sip-server-01
>> Mar 9 10:30:21 proxy-01 /sbin/kamailio[27014]: INFO: <script>:
>> ONSEND: rm: INVITE ru: sip:442079460000 at 10.0.130.218:5060
>> <http://sip:442079460000@10.0.130.218:5060> du:
>> sip:203.0.113.1:1046 <http://203.0.113.1:1046> proto: tcp src:
>> 185.28.212.61:5062 <http://185.28.212.61:5062> dest:
>> 203.0.113.1:50130 <http://203.0.113.1:50130> ci:
>> 162e3e84-4036-48d7-a1d1-79cc92b7cea4-2-1 at sip-server-01
>> Mar 9 10:30:21 proxy-01 /sbin/kamailio[27014]: DEBUG: <core>
>> [core/tcp_main.c:1651]: _tcpconn_find(): found connection by id: 2
>> Mar 9 10:30:21 proxy-01 /sbin/kamailio[27014]: DEBUG: <core>
>> [core/tcp_main.c:2545]: tcpconn_send_put(): found fd in cache (5,
>> 0x7fedc49d2448, 2)
>>
>> This example worked - the INVITEs went out to the correct
>> endpoints / TCP connections. The "ulc_conid" from the location
>> table for the TCP endpoint is still 13:
>>
>> Mar 9 10:42:30 proxy-01 /sbin/kamailio[27016]: ERROR: <script>:
>> Adding to main branch. ua: Yealink SIP-T42G 29.83.0.120 ru:
>> sip:442079460000 at 10.0.130.218:5060
>> <http://sip:442079460000@10.0.130.218:5060> du:
>> sip:203.0.113.1:1046 <http://203.0.113.1:1046> ulc_conid: 0
>> flags: 192 ci: 95ba0691-bdfc-4293-b99d-d46946cb5180-2-1 at sip-server-01
>> Mar 9 10:42:30 proxy-01 /sbin/kamailio[27016]: ERROR: <script>:
>> Adding to child branch. ua: Yealink SIP-T58 58.85.0.5 ru:
>> sip:442079460000 at 10.0.130.241:50130;transport=TCP du:
>> sip:203.0.113.1:50130;transport=tcp ulc_conid: 13 flags: 192 ci:
>> 95ba0691-bdfc-4293-b99d-d46946cb5180-2-1 at sip-server-01
>>
>> The debug log shows the correct connection was found /by peer
>> address /and determined the correct connection 13:
>>
>> Mar 9 10:42:31 proxy-01 /sbin/kamailio[27016]: INFO: <script>:
>> ONSEND: rm: INVITE ru: sip:442079460000 at 10.0.130.218:5060
>> <http://sip:442079460000@10.0.130.218:5060> du:
>> sip:203.0.113.1:1046 <http://203.0.113.1:1046> proto: udp src:
>> 185.28.212.61:5060 <http://185.28.212.61:5060> dest:
>> 203.0.113.1:1046 <http://203.0.113.1:1046> conid: <null> ci:
>> 95ba0691-bdfc-4293-b99d-d46946cb5180-2-1 at sip-server-01
>> Mar 9 10:42:31 proxy-01 /sbin/kamailio[27016]: INFO: <script>:
>> ONSEND: rm: INVITE ru: sip:442079460000 at 10.0.130.218:5060
>> <http://sip:442079460000@10.0.130.218:5060> du:
>> sip:203.0.113.1:1046 <http://203.0.113.1:1046> proto: tcp src:
>> 185.28.212.61:5062 <http://185.28.212.61:5062> dest:
>> 203.0.113.1:50130 <http://203.0.113.1:50130> conid: <null> ci:
>> 95ba0691-bdfc-4293-b99d-d46946cb5180-2-1 at sip-server-01
>> Mar 9 10:42:31 proxy-01 /sbin/kamailio[27016]: DEBUG: <core>
>> [core/tcp_main.c:1670]: _tcpconn_find(): found connection by peer
>> address (id: 13)
>> Mar 9 10:42:31 proxy-01 /sbin/kamailio[27016]: DEBUG: <core>
>> [core/tcp_main.c:2548]: tcpconn_send_put(): tcp connection found
>> (0x7fedc49ce0e8), acquiring fd
>>
>> Additionally I checked the connection IDs and IPs / Ports before
>> a failed and working call and they had not changed, it was the
>> same TCP connection - so it doesn't appear to be some interaction
>> with a connection closing or changing. We also don't see this
>> issue using the standard lookup() function.
>>
>> Does anyone know why Kamailio is intermittently switching between
>> finding by peer address and id, and why it's using the wrong ID?
>>
>> Thanks again
>> Matthew
>>
>>
>> On Tue, Mar 9, 2021 at 8:56 AM Marrold <kamailio at marrold.co.uk
>> <mailto:kamailio at marrold.co.uk>> wrote:
>>
>> Hi all,
>>
>> I'm currently adding a feature to our Kamailio configuration
>> to fork calls based on user agent.
>>
>> To do so I'm getting the registered endpoints
>> with reg_fetch_contacts() iterating through and matching on
>> them, then using seturi() / append_branch() and setting the
>> dst-uri and flags as required.
>>
>> However, calls are intermittently going to the wrong TCP
>> connection, despite the logs showing the correct destination
>> IP and port in the ONSEND route.
>>
>> Looking in the location table I can see each registration has
>> a connection_id, and the debug log indicates it's finding the
>> connection by ID:
>>
>> DEBUG: <core> [core/tcp_main.c:1651]: _tcpconn_find(): found
>> connection by id: 3
>>
>> Is there a way to set the conid per branch? Is it necessary?
>>
>> We're using kamailio 5.3.3 on Debian 10.
>>
>> Thanks
>> Matthew
>>
>>
>> _______________________________________________
>> Kamailio (SER) - Users Mailing List
>> sr-users at lists.kamailio.org <mailto:sr-users at lists.kamailio.org>
>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users <https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users>
>
> --
> Daniel-Constantin Mierla -- www.asipto.com <http://www.asipto.com>
> www.twitter.com/miconda <http://www.twitter.com/miconda> -- www.linkedin.com/in/miconda <http://www.linkedin.com/in/miconda>
> Funding: https://www.paypal.me/dcmierla <https://www.paypal.me/dcmierla>
>
--
Daniel-Constantin Mierla -- www.asipto.com
www.twitter.com/miconda -- www.linkedin.com/in/miconda
Funding: https://www.paypal.me/dcmierla
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20210317/7b065629/attachment-0001.htm>
More information about the sr-users
mailing list