Agree. There is a general need for transaction-associated replies and dialog-associated in-dialog requests (and their replies) to all go to the same node. There are Via and Record-Route attributes you can set to make this happen, assuming you're opposed to the load balancer keeping state based on a hash over the Call-ID or something.
The LB role is extremely natural for a proxy like Kamailio, BTW, since it follows Via and Route anyway just by definition. Dumb (that is, protocol-unaware) load balancers which just generically round-robin UDP messages won't work with SIP, because this method assumes that no UDP message is related to any other. In SIP that is a completely invalid assumption and the relationships are manifold.
-- Sent from mobile. Apologies for brevity and errors.
-----Original Message----- From: Brandon Armstead brandon@cryy.com To: "Kamailio (SER) - Users Mailing List" sr-users@lists.kamailio.org Sent: Wed, 24 Oct 2018 12:01 PM Subject: Re: [SR-Users] DMQ and DIALOG
Set a cookie and relay those subsequent transactions down to proper endpoint that they initially went over.
On Wed, Oct 24, 2018 at 1:56 AM Phillman25 Kyriacou phillman25@gmail.com wrote:
Hi List!
I currently have 3 Kamailio's (Version 5.1) in an ACTIVE-ACTIVE-ACTIVE scenario behind a load balancer all 3 nodes are listening and advertising the same virtual ip of the load balancer. Im using dmq module together with dialogue module to sync the state of the dialog to all 3 nodes. Is there a way or module that i can use to also sync every transaction?
Problem that im facing right now is that an INVITE will come to Kamailio1 and the 100 TRYING or 183 RINGING or 200OK will go to Kamailio2 and since Kamailio1 hasn't received a response will retransmit the INVITE. Or is there a way with dmq to also update the other nodes for responses like 100 ,183 or 200 OK so that Kamailio1 knows not to retransmit?
Maybe im going down the wrong path? :)
Any assistance would be greatly appreciated
My config for dmq and dialog:
#=====================DIALOG==================================== modparam("dialog", "enable_dmq", 1)
#=====================DMQ======================================= modparam("dmq", "server_address", "sip:x.x.x.x:5080") modparam("dmq", "notification_address", "sip:y.y.y.y:5080") modparam("dmq", "multi_notify", 1) modparam("dmq", "num_workers", 4) modparam("dmq", "ping_interval", 30)
request_route {
# MANAGE ALL DIALOGS dlg_manage();
if(is_method("KDMQ")) { dmq_handle_message(); }
Thanks! Phillip _______________________________________________ Kamailio (SER) - Users Mailing List sr-users@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users