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

jenus at cyberchaos.nl jenus at cyberchaos.nl
Tue Jun 18 14:57:31 CEST 2019


Charles,

Yes i now only see the "external" host ip in the DMQ packets (except for 
the callid header):

--------------
Session Initiation Protocol (KDMQ)
     Request-Line: KDMQ sip:usrloc at 10.20.8.88:5063 SIP/2.0
         Method: KDMQ
         Request-URI: sip:usrloc at 10.20.8.88:5063
             Request-URI User Part: usrloc
             Request-URI Host Part: 10.20.8.88
             Request-URI Host Port: 5063
         [Resent Packet: False]
     Message Header
         Via: SIP/2.0/UDP 
10.20.8.89:5063;branch=z9hG4bK6bd9.e406be74000000000000000000000000.0
             Transport: UDP
             Sent-by Address: 10.20.8.89
             Sent-by port: 5063
             Branch: z9hG4bK6bd9.e406be74000000000000000000000000.0
         To: <sip:usrloc at 10.20.8.88:5063>
             SIP to address: sip:usrloc at 10.20.8.88:5063
                 SIP to address User Part: usrloc
                 SIP to address Host Part: 10.20.8.88
                 SIP to address Host Port: 5063
         From: 
<sip:usrloc at 10.20.8.89:5063>;tag=eeb67b6ee91998d3c4ad015de5249b76-9cd9
             SIP from address: sip:usrloc at 10.20.8.89:5063
                 SIP from address User Part: usrloc
                 SIP from address Host Part: 10.20.8.89
                 SIP from address Host Port: 5063
             SIP from tag: eeb67b6ee91998d3c4ad015de5249b76-9cd9
         CSeq: 10 KDMQ
             Sequence Number: 10
             Method: KDMQ
         Call-ID: 30b095bd0e83ad17-388 at 172.17.0.2
         Content-Length: 12
         User-Agent: kamailio (5.1.8 (x86_64/linux))
         Max-Forwards: 1
         Content-Type: application/json
     Message Body
         JavaScript Object Notation: application/json
             Object
                 Member Key: "action"
                     Number value: 3

--------------

Jan

Charles Chance schreef op 2019-06-18 13:43:
> The value of the server address parameter is what appears in the from
> header - so if you want replies to go to your advertised/public
> address then this is what the server address should be set to.
> 
> Do the messages now contain the correct IP since updating the server
> address?
> 
> Cheers,
> 
> Charles
> 
> On Tue, 18 Jun 2019 at 12:09, <jenus at cyberchaos.nl> wrote:
> 
>> All
>> 
>> Here the KDMQ reqest from the node that comes online:
>> 
>> ------------------
>> Kamailio start on 10.20.8.89, sends a request to the active node
>> 10.20.8.88
>> ------------------
>> KDMQ sip:usrloc at 10.20.8.88:5063 [1] SIP/2.0
>> Via: SIP/2.0/UDP
>> 
> 10.20.8.89:5063;branch=z9hG4bKd5bb.c2abf9b4000000000000000000000000.0
>> To: <sip:usrloc at 10.20.8.88:5063 [1]>
>> From:
>> <sip:usrloc at 172.17.0.2:5063
>> [2]>;tag=eeb67b6ee91998d3c4ad015de5249b76-7d61
>> CSeq: 10 KDMQ
>> Call-ID: 58f8ada547fd5ba0-225 at 172.17.0.2
>> Content-Length: 12
>> User-Agent: kamailio (5.1.8 (x86_64/linux))
>> Max-Forwards: 1
>> Content-Type: application/json
>> 
>> {"action":3}
>> 
>> SIP/2.0 200 OK
>> Via: SIP/2.0/UDP
>> 
> 10.20.8.89:5063;branch=z9hG4bKd5bb.c2abf9b4000000000000000000000000.0
>> To:
>> <sip:usrloc at 10.20.8.88:5063
>> [1]>;tag=616b7acb681ed5e9cbc485b3faa09d62.f2b6
>> From:
>> <sip:usrloc at 172.17.0.2:5063
>> [2]>;tag=eeb67b6ee91998d3c4ad015de5249b76-7d61
>> CSeq: 10 KDMQ
>> Call-ID: 58f8ada547fd5ba0-225 at 172.17.0.2
>> Server: kamailio (5.1.8 (x86_64/linux))
>> Content-Length: 0
>> -----------------
>> 
>> But after this to response from 10.20.8.88 back to 10.20.8.89 with
>> the
>> usrloc data.  If i replace the primary node that should send the
>> usrloc
>> info with the original kamailio server that is not running in docker
>> i
>> see a KDMQ usrloc at ... back to the server that is starting with all
>> the
>> usrloc data in the body.
>> 
>> Let me know if you need more details or debug logs.
>> 
>> Thanks,
>> 
>> Jan
>> 
>> jenus at cyberchaos.nl schreef op 2019-06-18 08:51:
>>> 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 [3] advertise 10.20.8.88:5063 [4]
>>> 
>>> 
>>> # ----- dmq params -----
>>> modparam("dmq", "server_address", "sip:172.17.0.2:5063 [3]")
>>> 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 [5]
>>>>> [1]>;tag=616b7acb681ed5e9cbc485b3faa09d62.0a3d
>>>>>> From:
>>>>>> <sip:notification_peer at 10.10.10.13:5060 [6]
>>>>> [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
>>> 
>>> 
>>> _______________________________________________
>>> 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
>  --
> 
> CHARLES CHANCE
> Managing Director
> 
> t. 0330 120 1200    m. 07932 063 891
> Sipcentric Ltd. Company registered in England & Wales no. 7365592.
> Registered office: Faraday Wharf, Innovation Birmingham Campus, Holt
> Street, Birmingham Science Park, Birmingham B7 4BB.
> 
> Links:
> ------
> [1] http://sip:usrloc@10.20.8.88:5063
> [2] http://sip:usrloc@172.17.0.2:5063
> [3] http://172.17.0.2:5063
> [4] http://10.20.8.88:5063
> [5] http://sip:notification_peer@10.10.10.94:5060
> [6] 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