[SR-Users] Modify DMQ 200OK in on_reply route

jenus at cyberchaos.nl jenus at cyberchaos.nl
Tue Jun 18 08:51:29 CEST 2019


Julien,

I have the following config:

Host ip: 10.20.8.88  Internal container ip:  172.17.0.2


listen=udp:172.17.0.2:5063 advertise 10.20.8.88:5063


# ----- dmq params -----
modparam("dmq", "server_address", "sip:172.17.0.2:5063")
modparam("dmq", "num_workers", 4)
modparam("dmq", "ping_interval", 90)
modparam("dmq", "notification_address", 
"sip:sip12.voip.domain.test:5063")      (on the other node this is 
sip11.domain.test)
modparam("dmq", "multi_notify", 1)

# ----- dmq_usrloc params -----
modparam("dmq_usrloc", "enable", 1)
modparam("dmq_usrloc", "sync", 1)
modparam("dmq_usrloc", "batch_msg_contacts", 50)  # 50 contacts / 
message
modparam("dmq_usrloc", "batch_size", 10000)       # 10000 contacts / 
batch
modparam("dmq_usrloc", "batch_usleep", 500000)    # one batch every 
500ms


Here is the output of the kamcmd dmq.list_nodes

root at 9d81434d491f:/# kamcmd dmq.list_nodes
{
         host: 10.20.8.89
         port: 5063
         resolved_ip: 10.20.8.89
         status: active
         last_notification: 0
         local: 0
}
{
         host: 10.20.8.88
         port: 5063
         resolved_ip: 10.20.8.88
         status: active
         last_notification: 0
         local: 0
}
{
         host: 172.17.0.2
         port: 5063
         resolved_ip: 172.17.0.2
         status: active
         last_notification: 0
         local: 1
}


I will collect some traces as well of the sync request as requested by 
Charles.

Thanks,

Jan

Julien Chavanton schreef op 2019-06-17 21:00:
> Can you share the settings you are using :
> 
> modparam("dmq", "server_address", "?")
> modparam("dmq", "notification_address", "?")
> 
> On Mon, Jun 17, 2019 at 11:30 AM <jenus at cyberchaos.nl> wrote:
> 
>> Hi all,
>> 
>> Is there any other way to filter DMQ peers? I now have a issue with
>> dmq_usrloc when running in a docker container. When the node comes
>> online the peer is sending the KDMQ usrloc packet (with the
>> registered
>> contacts) to the internal container ip and not the actual external
>> ip.
>> Both ip's show up as DMQ peers, after a few keepalive failures the
>> dmq
>> peer with the internal container ip becomes inactive and no updates
>> are
>> sent to that peer. But the usrloc sync seems to happen before the
>> peer
>> is inactive.
>> 
>> I tried to strip the peers with the internal container ip's, this
>> works
>> for the requests, but i'm not able to fix this for the responses.
>> 
>> Thanks,
>> 
>> Jan
>> 
>> jenus at cyberchaos.nl schreef op 2019-05-02 08:59:
>>> Hi all,
>>> 
>>> I'm trying to run a kamailio DMQ node inside a docker container.
>> All
>>> works fine but i have one issue with DMQ. Since the kamailio
>> process
>>> inside the container is behind a nat i have set the advertise
>> address
>>> to the external ip, this works fine for the via headers but DMQ
>> keeps
>>> sending the internal interface in the KDMQ notification_peer
>> messages.
>>> The external ip is in there as well. Example:
>>> 
>>> SIP/2.0 200 OK
>>> Via: SIP/2.0/UDP
>>> 10.10.10.13;branch=z9hG4bK2dcb.c6326de2000000000000000000000000.0
>>> To:
>>> <sip:notification_peer at 10.10.10.94:5060
>> [1]>;tag=616b7acb681ed5e9cbc485b3faa09d62.0a3d
>>> From:
>>> <sip:notification_peer at 10.10.10.13:5060
>> [2]>;tag=e8f29c06c4b85a188f6533f08d60feb6-ff29
>>> CSeq: 10 KDMQ
>>> Call-ID: 17042656602ca532-23367 at x.x.x.x
>>> Content-Type: text/plain
>>> Server: kamailio (5.1.4 (x86_64/linux))
>>> Content-Length: 222
>>> 
>>> sip:10.10.10.13:5060;status=active
>>> sip:10.10.10.12:5060;status=active
>>> sip:10.10.10.92:5060;status=active
>>> sip:10.10.10.93:5060;status=active
>>> sip:10.10.10.94:5060;status=active   <-- entry for container
>> external
>>> ip
>>> sip:172.17.0.2:5060;status=disabled  <-- entry for container
>> internal
>>> ip
>>> 
>>> 
>>> I tried to strip this entry using the replace_body_atonce in the
>>> tm:local-request route. This works fine for the KDMQ request, but
>> when
>>> i try to remove the same line from 200OK responses that are send
>> out
>>> as a response to incomming KDMQ messages this seems to fail. I use
>> the
>>> following code:
>>> 
>>> # Working code (for outgoing KDMQ requests):
>>> event_route [tm:local-request]
>>> {
>>> if(is_method("KDMQ") && $rU == "notification_peer")
>>> replace_body_atonce("sip:172.17.0.*:5060;status=.*", "");
>>> }
>>> 
>>> # Failing code (for 200OK responses):
>>> reply_route
>>> {
>>> xlog("L_ALERT", "REPLY: Sending out reply, tU is $tU  rs is
>> $rs\n");
>>> if ($rs == "200" && $tU == "notification_peer")
>>> {
>>> replace_body_atonce("sip:172.17.0.*:5060;status=.*", "");
>>> }
>>> }
>>> 
>>> 
>>> I'm running kamailio 5.1.4. Is there a way to strip a line from
>> the
>>> body of a local generated 200OK response? Or is there a way to
>> avoid
>>> that DMQ inserts the internal container ip in the first place.
>>> 
>>> 
>>> Thanks,
>>> 
>>> Jan Hazenberg
>>> 
>>> 
>>> _______________________________________________
>>> 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
> 
> 
> Links:
> ------
> [1] http://sip:notification_peer@10.10.10.94:5060
> [2] http://sip:notification_peer@10.10.10.13:5060
> _______________________________________________
> Kamailio (SER) - Users Mailing List
> sr-users at lists.kamailio.org
> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users




More information about the sr-users mailing list