Hello,
On 2/17/12 1:04 PM, Javier Gallart wrote:
> Hi Daniel,
>
> no, in order to find the best match we do a manual trick using
> the s.prefixes transformation (I think you suggested that).
could be, at least is the way I do prefix matching with mysql. Postgres,
on the other hand, afaik, has an index plugin to match the longest
prefix, might not be in default distro, but can be found on the net for
sure.
> We start with the full $rU and stop when we find a non-null value. …
[View More]
> This kamailio is serving many thousands of calls per hour, and the
> response time is pretty much the same as when we used the mtree
> module. For us , using redis has the advantage of being able to load
> the tree data faster than when we used postgres without the need to
> perform a mtree reload.
Loading huge amount of records from mysql takes time indeed.
Maybe prefix matching will be added in redis in the future, or scripted
server side in lua, as I understood it has such feature. Another option
would be to add a custom command in kamailio like redis_cmd_pmatch() to
do internally these prefix-based commands until a match, could simplify
the config if it becomes something very popular.
Also, I forgot about the other solution in kamailio - pdb module written
by 1&1 for number portability:
* http://kamailio.org/docs/modules/stable/modules/pdb.html
Just mentioning it here for let it be known, if redis is working fine
for you, makes no sense to look for other solutions.
Cheers,
Daniel
>
> Regards
>
> Javi
>
>
> On Fri, Feb 17, 2012 at 10:25 AM, Daniel-Constantin Mierla
> <miconda(a)gmail.com <mailto:miconda@gmail.com>> wrote:
>
> Hello Javier,
>
> one question about redis, can it do longest prefix matching or all
> prefixes match?
>
> Cheers,
> Daniel
>
>
> On 2/16/12 2:51 PM, Javier Gallart wrote:
>> Hello Uri
>>
>> I had similar needs and I found the ndb_redis module more suited
>> for that type of task. Instead of a tree you have a hash like
>> this: tname tprefix tvalue. If you do a hget nts $avp(DID) and
>> you get a not null value you have found your exact match. It
>> works very well for me and the time it takes for that "query" is
>> barely noticeable. Of course redis does not address items like
>> persistence, etc the same way a rdbms does.
>> Hope it helps.
>>
>> Regards
>>
>> Javi
>>
>> On Thu, Feb 16, 2012 at 12:00 PM,
>> <sr-users-request(a)lists.sip-router.org
>> <mailto:sr-users-request@lists.sip-router.org>> wrote:
>>
>> Send sr-users mailing list submissions to
>> sr-users(a)lists.sip-router.org
>> <mailto:sr-users@lists.sip-router.org>
>>
>> To subscribe or unsubscribe via the World Wide Web, visit
>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>> or, via email, send a message with subject or body 'help' to
>> sr-users-request(a)lists.sip-router.org
>> <mailto:sr-users-request@lists.sip-router.org>
>>
>> You can reach the person managing the list at
>> sr-users-owner(a)lists.sip-router.org
>> <mailto:sr-users-owner@lists.sip-router.org>
>>
>> When replying, please edit your Subject line so it is more
>> specific
>> than "Re: Contents of sr-users digest..."
>>
>>
>> Today's Topics:
>>
>> 1. how to match exact string value in mtree (Uri Shacked)
>>
>>
>> ----------------------------------------------------------------------
>>
>> Message: 1
>> Date: Thu, 16 Feb 2012 12:54:50 +0200
>> From: Uri Shacked <ushacked(a)gmail.com
>> <mailto:ushacked@gmail.com>>
>> Subject: [SR-Users] how to match exact string value in mtree
>> To: "SIP Router - Kamailio (OpenSER) and SIP Express Router
>> (SER) -
>> Users Mailing List" <sr-users(a)lists.sip-router.org
>> <mailto:sr-users@lists.sip-router.org>>
>> Message-ID:
>> <CAMMbDhTFNXAE-K88=AeMjO7AnA_QJV3Ajj3AH-AxemXN3ze6HQ(a)mail.gmail.com
>> <mailto:AeMjO7AnA_QJV3Ajj3AH-AxemXN3ze6HQ@mail.gmail.com>>
>> Content-Type: text/plain; charset="iso-8859-1"
>>
>> Hi,
>>
>> I am using Mtree to match prefix numbers, some of them starts
>> with 0 or
>> characters like D for example.
>> so, the mtree param is like this:
>>
>> modparam("mtree", "db_url", CFGDB)
>> modparam("mtree", "mtree",
>> "name=nts;dbtable=service_numbers_view;type=0;")
>> modpmodparam("mtree", "char_list", "0123456789*+#YMDabcdefgh")
>> modparam("mtree", "pv_value", "$avp(mtval)")
>> modparam("mtree", "pv_values", "$avp(mtvals)")
>>
>> The thing is, that i tried all:
>>
>> if(!mt_match("nts", "$avp(DID)","1"))
>> if(!mt_match("nts", "$avp(DID)","2"))
>> if(!mt_match("nts", "$avp(DID)","0"))
>>
>> and lets say i have the both prefix in the nts mtree:
>> 09555
>> 09555333
>>
>> And the prefix i search for is $avp(DID)=09555444
>>
>> I allwasy get the 09555 because it is the longest match.
>> I need exact match.....
>>
>> how do i do that?
>>
[View Less]
Hi,
i would like to get the kamailio server ip address on start up and save it
in an $shv().
i tried to use "myself" but did manage to get the ip from it.
any ideas?
Uri
Hello,
On 2/17/12 1:11 PM, Alexandr Dubovikov wrote:
> Hi Daniel,
>
> he use raw_socket in the sipcapture module and save all REGISTER
> messages to location. (something like fraud controling for
> registration). I think in this case he have to ignore socket listener.
not sure I understood -- it is on the server that saves to homer's
database? It gets the traffic over a raw socket and then executes the
config file as usual with functions from other modules?
Cheers,
Daniel
…
[View More]>
> Wbr,
> Alexandr
>
>
>
>
> 17.02.2012 09:19, Daniel-Constantin Mierla wrote:
>> Hello,
>>
>> looks like an invalid listen socket structure, quite strange... what
>> version of kamailio do you have?
>>
>> Also, in gdb, frame 0, can you send the output of:
>>
>> p *_c
>> p *_c->sock
>>
>> You can replace sensitive data (like IP), if you wish.
>>
>> Cheers,
>> Daniel
>>
>> On 2/16/12 10:52 PM, Simpson Chua wrote:
>>> Hi,
>>>
>>> Kamailio is exiting with a segmentation fault when trying to do a
>>> save("location"). Here is some information I gathered.
>>>
>>> Feb 16 15:30:19 ubuntu /usr/local/sbin/kamailio[25721]: DEBUG:
>>> <core> [parser/msg_parser.c:103]: found end of header
>>> Feb 16 15:30:19 ubuntu /usr/local/sbin/kamailio[25721]: ERROR:
>>> <core> [db.c:435]: invalid parameter value
>>> Feb 16 15:30:19 ubuntu /usr/local/sbin/kamailio[25721]: ERROR:
>>> usrloc [udomain.c:564]: failed to use table location
>>> Feb 16 15:30:19 ubuntu kernel: [171540.056663] kamailio[25721]:
>>> segfault at 89 ip 00007fa1f9a41452 sp 00007fff971a3af0 error 4 in
>>> usrloc.so[7fa1f9a37000+1f000]
>>> Feb 16 15:30:19 ubuntu /usr/local/sbin/kamailio[25708]: ALERT:
>>> <core> [main.c:751]: child process 25720 exited by a signal 11
>>> Feb 16 15:30:19 ubuntu /usr/local/sbin/kamailio[25708]: ALERT:
>>> <core> [main.c:754]: core was generated
>>> Feb 16 15:30:19 ubuntu /usr/local/sbin/kamailio[25708]: INFO: <core>
>>> [main.c:766]: INFO: terminating due to SIGCHLD
>>>
>>> Core was generated by `kamailio -w /home/core'.
>>> Program terminated with signal 11, Segmentation fault.
>>> #0 db_insert_ucontact (_c=0x7f5f8f737eb0) at ucontact.c:474
>>> 474 vals[11].val.str_val = _c->sock->sock_str;
>>> (gdb) bt
>>> #0 db_insert_ucontact (_c=0x7f5f8f737eb0) at ucontact.c:474
>>> #1 0x00007f5f916d9649 in insert_ucontact (_r=<optimized out>,
>>> _contact=<optimized out>, _ci=<optimized out>, _c=0x7fff52bbeb88) at
>>> urecord.c:473
>>> #2 0x00007f5f914b785f in insert_contacts (_m=0x7f5f93d7f458,
>>> _d=0x7f5f8f72f680, _a=0x7fff52bbec00) at save.c:428
>>> #3 0x00007f5f914b8d10 in add_contacts (_mode=1, _a=0x7fff52bbec00,
>>> _d=0x7f5f8f72f680, _m=0x7f5f93d7f458) at save.c:737
>>> #4 save (_m=0x7f5f93d7f458, _d=0x7f5f8f72f680, _cflags=4) at save.c:790
>>> #5 0x000000000041ba87 in do_action (h=0x7fff52bbf5d0,
>>> a=0x7f5f93d7f238, msg=0x7f5f93d7f458) at action.c:1128
>>> #6 0x000000000041abe2 in run_actions (h=0x7fff52bbf5d0,
>>> a=0x7f5f93d7f238, msg=0x7f5f93d7f458) at action.c:1610
>>> #7 0x000000000041c05b in do_action (h=0x7fff52bbf5d0,
>>> a=0x7f5f93d7fe08, msg=0x7f5f93d7f458) at action.c:1107
>>> #8 0x000000000041abe2 in run_actions (h=0x7fff52bbf5d0,
>>> a=0x7f5f93d7fe08, msg=0x7f5f93d7f458) at action.c:1610
>>> #9 0x0000000000422fa2 in run_top_route (a=0x7f5f93d7fe08,
>>> msg=0x7f5f93d7f458, c=<optimized out>) at action.c:1683
>>> #10 0x00000000004b061e in receive_msg (buf=<optimized out>,
>>> len=<optimized out>, rcv_info=<optimized out>) at receive.c:207
>>> #11 0x00007f5f91b038b0 in raw_capture_rcv_loop (rsock=5, port1=5060,
>>> port2=8933, ipip=0) at sipcapture.c:1518
>>> #12 0x00007f5f91b03e1f in init_rawsock_children () at sipcapture.c:572
>>> #13 0x00007f5f91b04033 in child_init (rank=<optimized out>) at
>>> sipcapture.c:542
>>> #14 0x0000000000507a0f in init_mod_child (m=0x7f5f93d7b2b0, rank=0)
>>> at sr_module.c:886
>>> #15 0x0000000000507974 in init_mod_child (m=0x7f5f93d7b668, rank=0)
>>> at sr_module.c:883
>>> #16 0x0000000000507974 in init_mod_child (m=0x7f5f93d7c178, rank=0)
>>> at sr_module.c:883
>>> #17 0x0000000000507974 in init_mod_child (m=0x7f5f93d7c4b0, rank=0)
>>> at sr_module.c:883
>>> #18 0x0000000000476149 in main_loop () at main.c:1661
>>> #19 0x000000000041a940 in main (argc=<optimized out>,
>>> argv=0x7fff52bbfd68) at main.c:2475
>>>
>>> Any idea why this is happening? Is there something in the REGISTER
>>> message that is causing this?
>>>
>>> Thanks,
>>> Simpson
>>>
>>>
>>> _______________________________________________
>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>>> sr-users(a)lists.sip-router.org
>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>
>> --
>> Daniel-Constantin Mierla --http://www.asipto.com
>> http://linkedin.com/in/miconda -- http://twitter.com/miconda
>>
>>
>> _______________________________________________
>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>> sr-users(a)lists.sip-router.org
>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
--
Daniel-Constantin Mierla -- http://www.asipto.comhttp://linkedin.com/in/miconda -- http://twitter.com/miconda
[View Less]
Is it possible to monitor 2 interfaces?
I have 2 Asterisk servers and they are on 2 different switches so I need to
capture ETH0 and ETH3 which is where the mirror ports are connected to from
each switch.
Thanks
I've been contemplating Daniel's earlier question about using the CAcert
certificates with Lumicall
sip5060.net should already accept mutual authentication from other
Kamailio instances running with a CAcert certificate
However, the Lumicall dialer itself will only connect to servers that
are using a cert signed by a root CA trusted within Android. This
applies to both the SIP and STUN over TLS support.
It may be possible for me to embed the CACert root in the Lumicall
package and create a …
[View More]custom trust manager - allowing Lumicall to work
with any server using CAcert TLS certificates. Does anyone have any
strong feelings about not doing something like that?
[View Less]
Hi,
I am using Mtree to match prefix numbers, some of them starts with 0 or
characters like D for example.
so, the mtree param is like this:
modparam("mtree", "db_url", CFGDB)
modparam("mtree", "mtree", "name=nts;dbtable=service_numbers_view;type=0;")
modpmodparam("mtree", "char_list", "0123456789*+#YMDabcdefgh")
modparam("mtree", "pv_value", "$avp(mtval)")
modparam("mtree", "pv_values", "$avp(mtvals)")
The thing is, that i tried all:
if(!mt_match("nts", "$avp(DID)","1"))
if(!mt_match("nts",…
[View More] "$avp(DID)","2"))
if(!mt_match("nts", "$avp(DID)","0"))
and lets say i have the both prefix in the nts mtree:
09555
09555333
And the prefix i search for is $avp(DID)=09555444
I allwasy get the 09555 because it is the longest match.
I need exact match.....
how do i do that?
[View Less]
Hello,
there will be a VoIP Users Conference (VUC) session dedicated to
Kamailio SIP Server next week, Friday, February 17, starting with
17:00GMT. VUC is an online weekly audio conferencing event, you can
connect via SIP and IRC to interact with the other participants.
More details (including the ways to connect) are available at:
*
http://www.kamailio.org/w/2012/02/kamailio-at-voipuserconference-fri-feb-17…
Join the event to learn about latest developments and future plans for
…
[View More]the project, ask questions about your interested topics. Spreading the
word about the event is also appreciated.
Cheers,
Daniel
--
Daniel-Constantin Mierla -- http://www.asipto.comhttp://linkedin.com/in/miconda -- http://twitter.com/miconda
[View Less]
Hello,
I am trying to compile mi_xmlrpc on Solaris 10 64bit OS and I am
getting this error:
CC (gcc) [M mi_xmlrpc.so] abyss_xmlrpc_server.o
abyss_xmlrpc_server.c:948:1: error: conflicting types for 'shutdownAbyss'
abyss_xmlrpc_server.c:945:34: note: previous declaration of
'shutdownAbyss' was here
abyss_xmlrpc_server.c: In function 'normalLevelAbyssRun':
abyss_xmlrpc_server.c:1005:42: warning: passing argument 2 of
'xmlrpc_registry_set_shutdown' from incompatible pointer …
[View More]type [enabled
by default]
/opt/csw/include/xmlrpc-c/server.h:114:1: note: expected 'void (*
const)(struct xmlrpc_env * const, void * const, const char * const,
void * const)' but argument is of type 'void (*)(struct xmlrpc_env *
const, void * const, const char * const)'
gmake[1]: *** [abyss_xmlrpc_server.o] Error 1
gmake: *** [modules_k] Error 1
Thanks
Nathaniel L Keeling
[View Less]
Hi, can someone please recommend the most appropriate modules to
rewrite R-URIs based on a database lookup table? I've read the
documentation for lcr and carrierroute but not sure if they can do
this.
In most cases it will be a simple R-URI rewrite but I also need to
rewrite based on From user.
ie
R-URI match From match new R-URI
=========== ========== =========
*97(a)example.com 6[0-9](a)example.com *97(a)10.0.0.1
*…
[View More]97(a)example.com 7[0-9](a)example.com *97(a)10.0.0.2
6[0-9](a)example.com match any rewrite domain to 10.0.0.1
abc(a)example.com match any def(a)example.com
Thanks
Ben
[View Less]