Hi List
With the dispatcher module, you can use different ways of load balanced
and weighted serial or parallel forking.
Is there a corresponding way to achieve load balanced serial forking to
a destination set loaded from registered locations?
Use case:
Customer with a high availability set-up has two redundant PBX
registered to the same AoR.
Calls can not be sent in parallel as this would generate two concurrent
calls to the end device but call should be distributed evenly between
the two contacts registered with that AoR.
Mit freundlichen Grüssen
-Benoît Panizzon-
--
I m p r o W a r e A G - Leiter Commerce Kunden
______________________________________________________
Zurlindenstrasse 29 Tel +41 61 826 93 00
CH-4133 Pratteln Fax +41 61 826 93 01
Schweiz Web http://www.imp.ch
______________________________________________________
Hello all!
For a STSH project, kamailio is making HTTP requests to a middleware (REST
API) using HTTP_CLIENT module.
I have set the parameter "timeout" to 2 second, but this increases PDD to
too high levels, so I have set it to 1 second. Problem is that 1sec is also
too high!
The parameter only accepts integer values, so no way to set this to 0.5sec.
I thought of having a way for kamailio to be aware that HTTP node #1 is
down, so next request it will use HTTP node #2 instead. And once in a
while, say, every 60 seconds, kamailio would check status of HTTP node #1
and, if OK, then it will switch back to HTTP node #1 and failover to node
#2 when required.
The HTTP_CLIENT, as far as I know, doesn't do that. So the question is:
what would be the best approach to have this feature on Kamailio? i thought
about using HTable and have a flag with value of the HTTP connection to use
by default. At worst, only the 1st failover request would take 1 or 2
seconds to timeout....then the subsequent HTTP requests would use node #2.
Any ideas?
Atenciosamente / Kind Regards / Cordialement / Un saludo,
*Sérgio Charrua*
Hi List
I'm trying to inspect the content of the $xavp(tm_contacts) to figure
out how t_load_contacts exactly behaves when called multiple times.
$var(k) = 0;
while ($xavp(tm_contacts[$var(k)]) != $null) {
$var(out) = "nothing";
xavp_params_implode("tm_contacts[$var(k)]", "$var(out)");
xlog("L_INFO", "$cfg(route): tm_contacts idx: $var(k) => $var(out)\n");
$var(k) = $var(k) + 1;
}
My stack contains multiple entries.
Unfortunately I struggle to access the lower entries.
xavp_params_implode("tm_contacts[$var(k)]", "$var(out)");
does nothing when $var(k) > 0
What is the best way to dump a complete xavp stack?
I suspect t_load_contacts does flush the complete stack. Is there a way
to stack an xavp on top of another one?
Something like:
xavp_rm("contact_stack"); # Initialize Stack
lookup("location", "sip:alice@example.com");
t_load_contacts(0);
$xavp(contact_stack) = $xavp(tm_contacts);
lookup("location", "sip:bob@example.com");
t_load_contacts(0);
$xavp(contact_stack) = $xavp(tm_contacts); # contact_stack now contains alice + bob
lookup("location", "sip:carlie@example.com");
t_load_contacts(0);
# $xavp(tm_contacts) now contains only charlie.
$xavp(tm_contacts) = $xavp(contact_stack);
# $xavp(tm_contacts) now contains only alice, bob + charlie.
t_next_contacts(); # Push contacts to destination list creating branches.
t_relay(); # Invite all contacts
Mit freundlichen Grüssen
-Benoît Panizzon-
--
I m p r o W a r e A G - Leiter Commerce Kunden
______________________________________________________
Zurlindenstrasse 29 Tel +41 61 826 93 00
CH-4133 Pratteln Fax +41 61 826 93 01
Schweiz Web http://www.imp.ch
______________________________________________________
Hi
version: kamailio 5.7.6 (x86_64/linux)
on Ubuntu from the: http://deb.kamailio.org/kamailio57 repository
AOR alice has 4 contacts with q=0.5
AOR bob has 1 contact with q=0.5
I can reproduce a crash with this code snipplet:
xavp_rm("contact_stack");
# Make sure XAVP does not exist.
lookup("location", "sip:alice@example.com");
t_load_contacts(0);
# after this, $xavp(tm_contacts) has four elements
$xavp(contact_stack) = $xavp(tm_contacts);
# Store the four elements on my stack
# Verify, $xavp(contact_stack) now has four elements, copy successfull.
lookup("location", "sip:bob@example.com");
# after this, $xavp(tm_contacts) has one element
$xavp(tm_contacts) = $xavp(contact_stack);
# Append the four previously saved contact with the one in $xavp(tm_contacts)
if (!t_next_contacts()) {
xlog("L_INFO", "$cfg(route): ERROR NO CONTACTS LOADED \n");
sl_send_reply("500", "Server Internal Error - Cannot get contacts");
}
# Load contacts into destination set to parallel fork to five contacts.
=> segmentation fault!
Shall I open an issue on github or am I performing a forbidden action?
I'm doing some more test to find out where exactly the crash occurs.
I'm not sure if it happens when adding to tm_contacts of when calling
t_next_contacts.
Mit freundlichen Grüssen
-Benoît Panizzon-
--
I m p r o W a r e A G - Leiter Commerce Kunden
______________________________________________________
Zurlindenstrasse 29 Tel +41 61 826 93 00
CH-4133 Pratteln Fax +41 61 826 93 01
Schweiz Web http://www.imp.ch
______________________________________________________
Hello guys,
I'm seeing the dispatcher module used with ds_select_dst($avp(dsdst), "0")
is distributing the calls to a failing gw, to the next available gw instead
of distributing it.
When a gw fails and has been marked as inactive, shouldn't it be taken out
of the list and the list recomputed? is this not the case?
Thanks all
Regards,
David Villasmil
email: david.villasmil.work(a)gmail.com
Hello,
we should consider an online devel meeting sometime soon to summarize
what was done at (and still needs to be done after) devel meeting in
Dusseldorf and plan a bit the targets for next major release 6.0.
If considered useful, I propose Dec 9, 2024 (Monday) at 15:00UTC (16:00
Berlin/Paris/Madrid/Rome), but we can also look for other dates as well.
Topics to be discussed can be added at:
-
https://github.com/kamailio/kamailio-wiki/blob/main/docs/devel/irc-meetings…
Pull requests can be made by users without git access.
Cheers,
Daniel
--
Daniel-Constantin Mierla -- www.asipto.comwww.twitter.com/miconda -- www.linkedin.com/in/miconda
Hi Kamailio Community,
When testing rtpengine_manage and websockets, I noticed that if the
rtpengine table in the database is not used, a new websocket is created for
every call for a given dialog. That is, when an INVITE is received, an
offer is sent to rtpengine. When the 200 OK or 18[3|0] is received, an
answer is sent. However, the WS identifier often changes and as a result
the request is not sent over the same websocket. This is problematic
particularly when using FQDNs in the Kamailio configuration.
When a load balancer is used between Kamailio and rtpengine, the answer may
arrive at a different rtpengine in the cluster.
After tracing through the source, I could not find a configuration
parameter or set of triggers that I could manipulate to fix this. It leads
me to believe it is only possible to reuse the websocket when the rtpengine
table is used.
Does anybody have more experience than I in this area that may be able to
point me in the right direction, making load balancers for rtpengine_manage
calls possible?