[SR-Users] dmq_is_from_node() issue
Charles Chance
charles.chance at sipcentric.com
Wed Jul 22 16:46:45 CEST 2015
Hi,
This is expected. The point of DMQ is to enable dynamic scaling without
having to define every node in advance in Kamailio config.
You should not use dmq_is_from_node() with dmq_handle_message() - it is not
intended to be a security check for KDMQ messages, but for other messages
replicated directly in your config (e.g. REGISTER).
For KDMQ, you should listen on a dedicated IP and/or port and lock down at
network/firewall level. Then your DMQ handling block should look something
like:
if (method == "KDMQ") {
if ($Rp == 5070) {
dmq_handle_message();
} else {
drop;
}
}
Do this help? Or is there something else you're looking to achieve?
Cheers,
Charles
On 22 July 2015 at 15:22, Asgaroth <00asgaroth00 at gmail.com> wrote:
> Hi All,
>
> I have an issue with the dmq_is_from_node() function, whereby it does not
> detect a node is on the bus if it has been removed from its "table" due to
> previously failed, i presume, ping requests.
>
> I have the following snippet in my main routing block:
>
> if(is_method("KDMQ")) {
> if (dmq_is_from_node()) {
> dmq_handle_message();
> exit;
> } else {
> xlog("L_INFO", "KDMQ message recieved from node not on our
> bus!! ($si:$sp) Dropping.");
> exit;
> }
> }
>
> I have the following dmq module parameters enabled for dmq:
>
> modparam("dmq", "server_address", DMQ_ADDRESS)
> modparam("dmq", "notification_address", "sip:lb.domain.com:5060")
> modparam("dmq", "multi_notify", 1)
> modparam("dmq", "num_workers", 4)
>
> DMQ_ADDRESS is set to each of the addresses in the lb.domain.com for each
> local kamailio instance
>
> lb.domain.com resolves to the following addresses:
> 10.6.0.109
> 10.6.0.110
> 10.6.0.111
>
> If I start up the 1st instance of kamailio and do not start the other 2
> within the default ping timout then I get the expected log message of dmq
> removing the nodes from its table, for example:
>
> kamailio[26657]: ERROR: dmq [notification_peer.c:588]:
> notification_resp_callback_f(): deleting server sip:10.6.0.111:5060
> because of failed request
> kamailio[26657]: ERROR: dmq [notification_peer.c:588]:
> notification_resp_callback_f(): deleting server sip:10.6.0.110:5060
> because of failed request
>
> However, if I then start one, or both, of the other nodes, then the KDMQ
> requests are dropped due to my snippet above, I presume, because
> dmq_is_from_node() checks its "active" table. See messages below as an
> example of the above snippet in action:
>
> kamailio[26656]: INFO: <script>: KDMQ message recieved from node not on
> our bus!! (10.6.0.110:5060) Dropping.
> kamailio[26656]: INFO: <script>: KDMQ message recieved from node not on
> our bus!! (10.6.0.111:5060) Dropping.
>
> Is this expected behaviour from the dmq_is_from_node() function? I would
> have expected it to always check the addresses resolved in the notification
> address, or am I using this function in a manner not intended.
>
> Any suggestions/tips would be greatly appreciated.
>
> Thanks
>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
--
*** We're rebranding! Learn more here
<http://www.sipcentric.com/2015/07/were-rebranding/> ***
www.sipcentric.com
Follow us on twitter @sipcentric <http://twitter.com/sipcentric>
Sipcentric Ltd. Company registered in England & Wales no. 7365592. Registered
office: Faraday Wharf, Innovation Birmingham Campus, Holt Street,
Birmingham Science Park, Birmingham B7 4BB.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20150722/1db98372/attachment.html>
More information about the sr-users
mailing list