Hi,
Looking at an issue with SIP-Cisco and a Barracuda firewall, I've come
across something I need to know more about.
The setup is as follows:
CLIENT -> KAMAILIO -> ASTERISK
CLIENT <- KAMAILIO <- ASTERISK
Client sends INVITE, Kamailio forwards to Asterisk, SIP 100 and SIP 183
are being sent and finally a 200 OK. We now expect the Client to send
back an ACK packet, but that never reaches us.
In this case the SIP 183 is the first packet that contains the full
record route of the path, the 200 OK contain the same record-routes being:
Record-Route:
<sip:192.168.0.200;r2=on;lr;ftag=12D1120C-1C4;did=4c8.9203;nat=yes>
Record-Route: <sip:1.2.3.4;r2=on;lr;ftag=12D1120C-1C4;did=4c8.9203;nat=yes>
Record-Route: <sip:4.3.2.1;r2=on;lr;did=4c8.3f471377>
Record-Route: <sip:10.0.0.101;r2=on;lr;did=4c8.3f471377>
192.168.0.200 is the private address of Kamailio
1.2.3.4 is the public address of Kamailio
4.3.2.1 is the public address of the Client
10.0.0.101 is some private addres of the Client
What we're seeing is that the Client is sending his ACK message to our
192.169.200 private address, which he will never reach. So me question
in this case is; is the order of the Record-route headers relevant and
do I have any say in which order Kamailio outputs these headers?
To be clear, the Kamailio config only contains one reference to
record_route which is caught for INVITE messages, which only fires when
all things like NAT and transaction checks haven't already picked it up.
Kind regards,
Dirk
Hello,
writing to see if anyone is aware of any (well known) markup language
for defining structures and function prototypes.
The goal is to use it for specifying the functions exported by KEMI
(https://www.kamailio.org/wiki/devel/config-engines) so we can generate
C code for the exported structure, but more important, to get at least
the index with the functions available over the KEMI. I feel it's going
to be a big burden to write C code and docs in two places, even worse,
to keep both of them sync'ed over the time. At this moment, there are
many functions exported via KEMI, but not documented anywhere (apart of
the C code).
It should allow defining the name of the function, the parameters with
their associated types, return code and eventually the description for
each of them.
At the end we could invent one based on xml format (or something
similar), but I would better use something that already exists there. I
searched quickly, but couldn't find anything straightaway. A hint could
be a format that is used to document the RPC commands.
Once the format is decided, we may have to write a tool to generate C
code to be compiled with the module and the xml docbook file to be
included in the documentation.
Any idea to solve this welcome!
Cheers,
Daniel
--
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Kamailio Advanced Training, Berlin, Oct 24-26, 2016 - http://www.asipto.com
Hello,
Someone has an idea?
Again, Kamailio stop processing SIP during more than 30s. Nothing print in
the logs.
The processing back on when a script detect no answer and restart the
service.
Regards,
Igor.
De : Igor Potjevlesch [mailto:igor.potjevlesch@gmail.com]
Envoyé : vendredi 23 septembre 2016 11:05
À : sr-users(a)lists.sip-router.org
Objet : Dimension number of child
Hello,
I'm wondering if there's a best practise to dimension the number of child to
setup?
I see, very often, Kamailio that stops to reply to SIP traffic for couple a
seconds. This cause some calls drop if RE-INVITE are not processed for
example.
So, I'm wondering if the issue is not due to a lack of child for processing
the SIP traffic.
Thank you for your inputs.
Regards,
Igor.
Hello group,
I know this may be hard to believe but I'm in the process of upgrading
an old, but stable, OpenSER 1.0 group of servers to Kamilio. I'm
basically going to sort of start from scratch with the database and
export my old MySQL database and write some scripts to reimport the data
using kamctl scripts since the database structure has changed
substantially since then it looks like.
I've mostly migrated the config file over fairly easily, except for
AVPops. I've got a section of config file that writes into the
usr_preferences database for call forwarding, but I seem to get the same
error anywhere I try to write to the database using AVPops. Here's the
output I get when checking the config:
0(1378) DEBUG: <core> [pvapi.c:268]: pv_cache_add(): PV cache not initialized, doing it now
0(1378) ERROR: <core> [pvapi.c:828]: pv_parse_spec2(): error searching pvar "avp"
0(1378) ERROR: <core> [pvapi.c:1032]: pv_parse_spec2(): wrong char [s/115] in [$avp(s:callfwd)] at [5 (5)]
0(1378) : <core> [cfg.y:3368]: yyerror_at(): parse error in config file
/usr/local/etc/kamailio/kamailio.cfg, line 145, column 4-18: Can't get from cache: $avp(s:callfwd)
ERROR: bad config file (1 errors)
Here's what I think are the revelant portions of the config file:
modparam("avpops", "db_url", "mysql://user:pass@localhost/kamailio")
modparam("avpops", "avp_table", "usr_preferences")
modparam("avpops", "uuid_column", "uuid")
modparam("avpops", "username_column", "username")
modparam("avpops", "domain_column", "domain")
modparam("avpops", "attribute_column", "attribute")
modparam("avpops", "value_column", "value")
modparam("avpops", "type_column", "type")
<snip>
if (avp_db_load("$from/username", "$avp(s:callfwd)"))
{
if(!avp_db_delete("$from/username", "$avp(s:callfwd)/usr_preferences"))
{
sl_send_reply("500", "Server DB error"); }
}
# avp_write("$ruri","$avp(s:callfwd)"); # Old OpenSER 1.0 syntax...
$avp(s:callfwd) = $ruri; # New Kamailio syntax ??
avp_db_store("$from/username","$avp(s:callfwd)/usr_preferences");
t_relay();
return;
Basically I just want to write the ruri into the usr_preferences
database with an attribute of callfwd but not sure what I'm missing. I
see the error "Can't get from cache" but not sure how that pertains to
what I'm trying to do. Anyone have any ideas?
Thanks,
Brian
Hello,
writing here to decide on a topic opened by pull request 779:
- https://github.com/kamailio/kamailio/pull/779
what would be a fair size for db column storing a password that one
would like to have for proper security?
I would like to make it consistent over all tables that have a password
column by defining a xml entity for the size of these columns. The pull
request suggests 64 chars, has anyone other opinions on making it larger
or smaller?
If they are defined varchar, then should not be a problem of allocated
size, so we can go with 128 if someone feels it worth doing larger now
so we don't have to change it again in the near future.
This change is about db schema, the modules I expect to work with
allocated strings (or have length checks) in this case and should not be
affected.
Cheers,
Daniel
--
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Kamailio Advanced Training, Berlin, Oct 24-26, 2016 - http://www.asipto.com
Hello,
I'm planning on doing some smart load balancing with Kamailio.
We have a distributed network, with multiple Kamailio boxes in different
locations serving as Ingress SBC,
these Kamailio boxes are the entry point for a SIP call and then they route
the call to a pre-configured Asterisk boxes.
I want to move away from this, I would like these Kamailios to be able to
distribute the traffic to Asterisk boxes based on the
actual load on these boxes, the goal is to be more dynamic?
Is there any Kamailio module which could do that? Do I need to integrate
some other tool(Homer etc) with Kamailio to achieve this?
Any suggestions are welcome.
--
*Nitesh Bansal*
Business Development Engineer
http://www.voxbone.com/
we have serial forking already setup properly but need to t_suspend().
found out that it completely breaks the destination set.
other than manually rebuilding the destination set after t_continue(), are
there any other solution out there?
Kelvin Chua
On Fri, Sep 30, 2016 at 10:29:16PM +0530, Infinicalls Infinicalls wrote:
> Hi Daniel,
> This seems to be ideal setup for my requirement. Would you mind
> sharing the kamailio.cfg file with me (with all the important data
> masked) ?
Not much important stuff to censor.
LBIPADDR is the ipadress of the machine itself.
REGISTRARNET/30 is the net of the backend machines.
The dispatcher.list contains the backend registrars
The backend is essentially the default config (with an always on
rtpengine) with the following additions:
You need to enable path.so and set
modparam("path", "use_received", 1)
Tell the registrar module to use path (path_mode 1 fixes you 420
problem):
modparam("registrar", "use_path", 1)
modparam("registrar", "path_mode", 1)
modparam("registrar", "path_use_received", 1)
If you want to send keepalives from the registrar to the enduser:
modparam("nathelper", "ping_nated_only", 0)
modparam("nathelper", "udpping_from_path", 1)
the loadbalancer config has a little blurb about relaying the sipping
from the backend manually using the path header. But I'd advice to ping
from the an external process to have better control (eg sipsak)