hello,
as we are all aware kamailio create a lot of processes for many tasks.
im using kamailio in kubernetes and i would like to monitor only sip processes with top command.
i only need a way to get only kamailio sip processes id (udp receiver that handle sip request) .
but i dont knwo how to get it.
top -c -p id1,id2,id3,id4
Thanks
Hello im using kamailio and rtpengine to build a custom SBC.
i was using freeswitch as my b2bua but i noticed a lot of issues when cps and simultaneous increased so i tried sems and i have better results.
But i do not really understand sems license so i want to know if i can use it.
i read from sems github
"It is licensed under dual
license terms, the GPL (v2+) and proprietary license. This
program is released under the GPL with the additional exemption
that compiling, linking, and/or using OpenSSL is allowed.
For a license to use SEMS under non-GPL terms, please contact
FRAFOS GmbH at info(a)frafos.com"
so my question is if i want to use sems as b2bua with kamailio and rtpengine and make profit of it do i need to purchase a license each time i want to sell it to a customer ?
Thanks.
Hi all
I'm wondering what is best practice to configure kamailio for a setup shown
below. Carriers only support interconnection over a private network so I
need to terminate every separate network on kamailio machine (and on
RTPEngine) . That will turn very quickly into an administration nightmare
as we add more and more carriers.
My plan is to terminate carrier private networks on a router and NAT the
traffic to kamailio where it leads me to a kamailio behind NAT setup. Well,
in theory set_advertised_address and set_advertised_port per message can do
the trick... at least I hope.
Also, some carriers require a SIP registration to activate SIP trunks. I do
that using UAC module (remote registration) but here again I got a problem
with contact address as you can set only one contact address
(modparam("uac", "reg_contact_addr", "10.1.1.11:5060")).
/--RTP 10000-19999-- RTPEngine1 -----RTP------+-- IPPBX1
carrier1 --- NAT ---| | |
| | |
carrier2 --- NAT ---+-----SIP 5060------ kamailio ----SIP---- Dispatcher
| | |
carrier3 --- NAT ---| | |
\--RTP 20000-29999-- RTPEngine2 -----RTP------+-- IPPBX2
So bottom line, I'm wondering what would be the best practice for such a
scenario ?
That would spare me from hitting many pitfalls.
Would really appreciate a hint.
Regards,
Tihomir.
Hello,
I have been trying to find documentation on Kamailio IMS and Vo5G support for open5gs. I wanted to ask you directly if Kamailio IMS does support Vo5G with open5gs?
Thank you
Hi,
I trying to use smsops module as SMSC.
When I sending message from UE I see re-sending same message after each
RP-ACK(~10 attempt).
What could be the problem?
Thanks!
pcap in attach.
kamailio 5.3.2
--
*Yours faithfully,*
*Eugene B.*
Were looking to test a kamilio on Open5gs 5g stand alone ( non lte, non NSA) can you conform or provide documents or install instructions on how this is accomplished. I can not find much of any details if Kamilio support Open5Gs 5g SA and what features it does support on a 5g SA core.
Seth Sandland
Wireless Communications IT Engineer
Pacific Northwest National Laboratory
Tel: (509) 375-6842
Email: seth.sandland(a)pnnl.gov<mailto:seth.sandland@pnnl.gov>
www.pnnl.gov<http://www.pnnl.gov/>
[A close up of a logo Description automatically generated]
Hello,
I'm trying to get state of endpoint from PUBLISH message in a most
simple way using xmlops module
Trying to make this
$xml(body=>doc) = $rb;
log("L_ERR", "$rU is now in state $xml(body=>xpath:/dialog-info/dialog/state)\n");
XML in PUBLISH itself
<?xml version="1.0"?>
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="0" state="full" entity="sip:88881@dev.company">
<dialog id="v6qmEYf5yI" direction="initiator">
<state>confirmed</state>
</dialog>
</dialog-info>
Actual text in log is
... <script>: 88881 is now in state
Means it's empty. xmlops module is loaded with no parameters. Tried also
string
$xml(body=>xpath:/dialog-info/dialog/state/text())
-> same result
What am I missing here?
kamailio 5.4.6
--
Thanks in advance,
Igor
Hi,
I'm trying to use the async module from a python3 Kemi script but it
conflicts with the keyword async. Any suggestions on how it can be used? Is
there an alternative to KSR.async.route()?
Thanks,
Ahmed
Hi,
I've enabled ACC and CDR logging and it's working fine for the logging but
I noticed something wrong in the CDR table , the call source and
destinations are depending on the BYE message not the initial invite dialog
ACC table
+-----+--------+--------------------------------------+---------------------+---------------+---------------------------+--------------+--------------+--------------------------------------+
| id | method | callid | time
| src_ip | src_domain | src_user | dst_ouser
| dst_domain |
+-----+--------+--------------------------------------+---------------------+---------------+---------------------------+--------------+--------------+--------------------------------------+
| 216 | BYE | 81fa79a0-3deb-47b6-80ab-831a78a5d46e | 2022-02-09 06:57:51
| x.x.x.x | domain.com | DST_CLID | SRC_CLID | domain.com
|
| 215 | INVITE | 81fa79a0-3deb-47b6-80ab-831a78a5d46e | 2022-02-09 06:55:17
| x.x.x.x | domain.com | SRC_CLID | DST_CLID |
dst_domain.com |
The INVITE is the correct one with SRCIP x.x.x.x and domain.com but the BYE
reversed the order since the the DST_CLID who sent the BYE so it's now
logged as the source
and the final CDR log looks like
+--------+--------------+---------------------------+--------------+--------------------------------------+---------------------+---------------------+----------+-----+-------+--------+-------+---------+
| cdr_id | src_username | src_domain | dst_username |
dst_domain | call_start_time | call_end_time
+--------+--------------+---------------------------+--------------+--------------------------------------+---------------------+---------------------+----------+-----+-------+--------+-------+---------+
| 195 | DST_CLID | domain.com | SRC_CLID | domain.com
| 2022-02-09 06:55:12 | 2022-02-09 06:57:51 |
the CDR as shown is reversed regarding the source/dst username
I tried to enable the direction ACC direction flag but didn't help and here
is my current paramters
modparam("acc", "early_media", 0)
modparam("acc", "report_ack", 0)
modparam("acc", "report_cancels", 0)
modparam("acc", "detect_direction", 0)
modparam("acc", "log_flag", FLT_ACC)
modparam("acc", "log_missed_flag", FLT_ACCMISSED)
modparam("acc", "cdr_enable", 1)
modparam("acc", "cdrs_table", "cdrs")
Can you please advise how to configure ACC/CDR to log the CDR with the
correct initial INVITE call flow regardless of the BYE direction ?
Hi there,
I have a weird issue with kamailio (latest docker
image kamailio-ci:5.5.2-alpine) and http_async_client.
Before posting a lot of logs, let me describe what I want to achieve.
I have a Kamailio and a SIP Phone.
The SIP phone sends a REGISTER to kamailio, then in my routing block, I
check if I have an Authorization header.
Since I don't have an Authorization (first message), I
use "www_challenge()".
This replies to the SIP phone, and then the SIP phone sends a new REGISTER
with the correct Authorization header.
So far so good.
Now, when I get the REGISTER with Authorization header, I want to ask an
HTTP endpoint if this user is allowed to connect and check the password
using http_async_query().
The problem is that when the transaction resumes, the tmx module is unhappy
and throws this error :
30(36) CRITICAL: tmx [t_var.c:546]: pv_get_tm_reply_code(): no picked
branch (-1) for a final response in MODE_ONFAILURE
And a 500 error is sent back to the sip phone.
The AUTH_REPLY route is still called and I can use the $http* values.
Do you see something that I am doing wrong or missing in my logic?
Is pausing/resuming to use the async http client is allowed if I'm handling
a REGISTER transaction?
Here's a simplified version of my routing block (not far from reality):
##### SNIP
request_route{
route(AUTH);
route[AUTH]{
if (is_method("REGISTER"){
if(no_auth_header){
www_challenge("$td","1");
exit;
}
else{
t_newtran();
http_async_query("http://xxx.xxx.xxx.xxx:9000/auth?foo=bar",
"AUTH_REPLY");
}
}
}
route[AUTH_REPLY]{
xlog("L_INFO", "route[HTTP_REPLY]: status $http_rs\n");
}
}
##### END SNIP
Best regards!