Hello
In the context of an IMS deployment, does anybody know if Shared iFC mechanism is supported in Kamailio? I don't see configuration options for it, and just wanted to confirm if only regular iFCs (residing on HSS) are supported.
Thank you
Hi,
I am trying to set up VoNR with version 5.8.1, but I cannot find the configuration information and documentation anywhere. Has anyone tested a VoNR call?
Thanks.
We've noticed an issue with UDP endpoints and the usrloc module not sending keepalive packets to them for a long time. Eventually, usrloc will begin doing it, but sometimes it's anywhere between 10 minutes and multiple hours before the endpoint starts receiving an OPTIONS packet.
TCP and TLS endpoints do not have this issue - they being receiving OPTIONS after registration + ka_timeout elapsed.
Has anyone else seen this? It can be very easily seen with a pcap on a device registering via UDP.
Hi,
I recently updated my testing env to 5.8.1 and after that I’ve been receiving dns_cache.c warning “record not alone”.
I found out that it’s been added to quite recent commit: https://github.com/kamailio/kamailio/commit/d8a35b3b6c837b36779e232b65fce61…
And that’s probably the why I haven’t seen it before.
As far as I know, I have no other problem with dns or anything else than the warning appearing in the logs 😊
I can’t quite get what the warning is about?
Clearly refers to dns queries, and with debug I found out that maybe its somehow related to ip which has several domains to pointing it (and queried by one of those domains by this kamailio). Can it be something with the PTR-record?
And this warning comes ones every hour, so probably when some ttl expires, and meanwhile the cache is ok with the situation.
And as a background, I haven’t done any specific dns-configurations in my config, so settings should be pretty much in defaults.
Any advice what I should fix here to get the warning disappear?
-Pyry
Hi,
Hope to find you well,
I have a question about the 'db_flatstore' module in Kamailio. Here's my
script for log rotation:
for f in acc_cdrs_*.log; do
mv -- "$f" "${f%.log}.temp"
done
docker exec -it pcscf kamcmd flatstore.k_rotate
rm *.temp
I want to know if the kamcmd command is blocking and the files can be
removed after that or if I should wait for it to be done before removing
the renamed files.
Regards,
Farzaneh
Dear IMS enthusiasts :-)
Has anyone experience with Kamailio IMS (CSCF) setups, where users with different domain names can be registered at one and the same S-CSCF?
Is this feasible at all?
I mean one IMS for users <user>@ims1.example.com, <user>@ims2.example.com, <user>@ims3.example.com,........ in one and the same S-CSCF, I-CSCF, P-CSCF.
Thanks,
Christoph
Hi there,
We are encountering consistent segfaults after rebooting our Kamailio instance with incoming traffic, specifically when using Kamailio 5.7.4. We think this issue did not occur with version 5.7.2, so it seems to have been introduced in either 5.7.3 or 5.7.4.
Due to team bandwidth constraints and the potential impact on production traffic, we don't want to spend time on trying to reproduce the issue. So we have decided to downgrade to 5.6.4, which we confirmed to be stable. (Probably 5.7.2 would be too - but we didn't try).
Unfortunately, our logging was only set to WARNING level, and we did not capture a core dump, so we cannot provide additional details beyond the following logs:
This was with tcp_reuse_ports=yes:
2024-05-17T15:42:55.582475541Z Listening on
2024-05-17T15:42:55.582512370Z [redacted]
2024-05-17T15:42:55.582538161Z tls: 10.X.X.X:5061 advertise Y.Y.Y:5061
2024-05-17T15:42:55.582543750Z Aliases:
2024-05-17T15:42:55.582549081Z tls: [redacted]:5061
2024-05-17T15:42:55.582574890Z
2024-05-17T15:42:55.587876630Z 0(1) WARNING: tls [tls_init.c:978]: tls_h_mod_init_f(): openssl bug #1491 (crash/mem leaks on low memory) workaround enabled (on low memory tls operations will fail preemptively) with free memory thresholds 18874368 and 9437184 bytes
2024-05-17T15:42:55.703927049Z 35(41) CRITICAL: <core> [core/pass_fd.c:281]: receive_fd(): EOF on 23
2024-05-17T15:42:55.703972029Z 0(1) ALERT: <core> [main.c:791]: handle_sigs(): child process 15 exited by a signal 11
2024-05-17T15:42:55.703978409Z 0(1) ALERT: <core> [main.c:795]: handle_sigs(): core was generated
2024-05-17T15:42:55.705049839Z 35(41) CRITICAL: <core> [core/pass_fd.c:281]: receive_fd(): EOF on 17
2024-05-17T15:42:55.705074209Z 35(41) CRITICAL: <core> [core/pass_fd.c:281]: receive_fd(): EOF on 21
2024-05-17T15:42:55.705081209Z 35(41) CRITICAL: <core> [core/pass_fd.c:281]: receive_fd(): EOF on 22
2024-05-17T15:42:55.705085879Z 35(41) CRITICAL: <core> [core/pass_fd.c:281]: receive_fd(): EOF on 20
2024-05-17T15:42:55.705090319Z 35(41) CRITICAL: <core> [core/pass_fd.c:281]: receive_fd(): EOF on 18
2024-05-17T15:42:55.705094649Z 35(41) CRITICAL: <core> [core/pass_fd.c:281]: receive_fd(): EOF on 19
2024-05-17T15:42:55.705098879Z 35(41) CRITICAL: <core> [core/pass_fd.c:281]: receive_fd(): EOF on 16
2024-05-17T15:42:55.705207399Z 35(41) CRITICAL: <core> [core/pass_fd.c:281]: receive_fd(): EOF on 15
2024-05-17T15:42:55.705459439Z 35(41) CRITICAL: <core> [core/pass_fd.c:281]: receive_fd(): EOF on 27
Without tcp_reuse_ports=yes, the segfault was always preceded by the following line if any existing TLS connections were stuck in TIME_WAIT:
2024-05-16T19:18:51.654447639Z 9(14) WARNING: {1 1 INVITE XXX(a)0.0.0.0} <core> [core/tcp_main.c:1301]: find_listening_sock_info(): binding to source address 10.X.X>X:5061 failed: Address already in use [98]
2024-05-16T19:18:51.746994728Z 0(1) ALERT: <core> [main.c:791]: handle_sigs(): child process 14 exited by a signal 11
When the server wasn't handling any traffic, the issue didn't occur even in 5.7.4.
Does anyone have any insights or suggestions on how to address this issue?
Kind regards
Stefan
Hi
We are receiving 2 to 3 contact headers in the 200 OK response of the
registration request. It appears that the `user_location` is updating
multiple contact headers for the same extension due to network
disconnections. Please suggest a solution to avoid duplicates in the
`user_location` module, or how to ensure that only the latest single
contact header is included in the 200 OK response.
Your suggestion would be appreciated.
Thanks and regards,
Satyaprakash.
Reposting this. If there is an issue with HTML format and/or wireshark
screen cap and I need to upload that separately somewhere else, please
let me know. Thanks.
-Jeff
----- Forwarded message from Jeff Brower <jbrower(a)signalogic.com> -----
Date: Thu, 09 May 2024 05:32:27 +0000
From: Jeff Brower <jbrower(a)signalogic.com>
Subject: [SR-Users] rtpengine timestamp jumps
To: sr-users(a)lists.kamailio.org
Hi rtpengine experts,
We have some customers processing long multi-party call pcaps using
mediaMin who are reporting large amounts of packets with timestamp
jumps but no packet loss (for instance 10% of packets over a 1 hr 45
min call). For example, in the Wireshark excerpt shown below, packets
6 and 8 sent by rtpengine show a timestamp increment of 640, but
sequence number increment of 1:
In the mediaMin output packet log we typically see sections similar to:
:
:
Seq num 98584 timestamp = 3902252372, rtp pyld len = 33 media-R
Seq num 98585 timestamp = 3902252692, rtp pyld len = 33 media
Seq num 98586 timestamp = 3902253012, rtp pyld len = 33 media-R
Seq num 98587 timestamp = 3902253332, rtp pyld len = 33 media
Seq num 98588 timestamp = 3902253652, rtp pyld len = 33 media-R
Seq num 98589 timestamp = 3902253972, rtp pyld len = 33 media
Seq num 98590 timestamp = 3902254292, rtp pyld len = 33 media
Seq num 98591 timestamp = 3902254612, rtp pyld len = 33 media-R
Seq num 98592 timestamp = 3902254932, rtp pyld len = 33 media
Seq num 98593 timestamp = 3902255252, rtp pyld len = 33 media
Seq num 98594 timestamp = 3902255572, rtp pyld len = 33 media-R
Seq num 98595 timestamp = 3902255892, rtp pyld len = 33 media
Seq num 98596 timestamp = 3902256212, rtp pyld len = 33 media
Seq num 98597 timestamp = 3902256532, rtp pyld len = 33 media
Seq num 98598 timestamp = 3902256852, rtp pyld len = 33 media-R
Seq num 98599 timestamp = 3902257172, rtp pyld len = 33 media
Seq num 98600 timestamp = 3902257492, rtp pyld len = 33 media-R
Seq num 98601 timestamp = 3902257812, rtp pyld len = 33 media
Seq num 98602 timestamp = 3902258132, rtp pyld len = 33 media
Seq num 98603 timestamp = 3902258452, rtp pyld len = 33 media
Seq num 98604 timestamp = 3902258772, rtp pyld len = 33 media-R
Seq num 98605 timestamp = 3902259092, rtp pyld len = 33 media
:
:
where media-R packets are timestamp gap repairs (i.e. frame loss
concealment). The behavior tends to be bursty, but once it gets going
it goes for a while and seems relatively consistent.
Is this expected behavior for rtpengine ? If so is rptengine in turn
dealing with some type of "slow packet rate" issue from a remote
sender ?
Thanks, Jeff
----- End forwarded message -----
Dear all,
I would probably need to store some dialog scoped information in an IMS environment, but the ims_dialog module does not implement the $dlg_var() pseudo variable.
Do you know other, maybe better, possibilities to store dialog scoped information in an IMS (CSCF) environment?
Thank,
Christoph
Hi all!
Just wondering what would be you opinion on the following.
We are integrating Kamailio as a stateless redirect server, using SIP 300
Multiple Choices response. The script requires that prior to the
redirection, a HTTP request must be made.
We thought about using HTTP Async Client to make the requests (POST of JSON
content), which is our prefered way of sending HTTP requests, and
depending on the response from the REST API, reply back to UAC a SIP 300
Multiple Choices message and terminate the call flow on Kamailio.
From what I know, HTTP Async Client requires that the TM module be used,
which (it is my understanding) will imply that the whole Kamailio script to
be stateful, which I think is useless as the SIP flow will be really simple:
INVITE ----->
<------- 100 Trying
<------- 300 Multiple Choices
ACK ------>
There is a catch, though, the CPS is very high, above 1000 CPS....
Could anyone share their thoughts on this?
Should we go stateful and use the HTTP Async module?
Should we go stateless and use the HTTP client module?
What would be the best approach to implementing this?
Thanks guys!
*Sérgio Charrua*
Hello list,
I'm trying implementing a solution like:
https://github.com/havfo/WEBRTC-to-SIP/blob/master/etc/kamailio/kamailio.cfg
The 2 problems I have a this moment are:
Call from UDP phone to WebRTC phone, the WebRTC phone reject the call;
the call go to voicemail but in the SDP still have WebRTC SDP
During a SIP UDP - WebRTC Call tranfer the call using phone button...
the transfer don't work.
Any hint
Regards
--
---
I'm SoCIaL, MayBe
Hello,
I encountered a problem stopping Kamailio with FIPS OpenSSL:
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00007ff7292380ac in OPENSSL_sk_pop () from /lib64/libcrypto.so.3
Missing separate debuginfos, use: dnf debuginfo-install
kamailio-5.7.3-4816.x86_64
(gdb) bt
#0 0x00007ff7292380ac in OPENSSL_sk_pop () from /lib64/libcrypto.so.3
#1 0x00007ff72914bf5b in conf_modules_finish_int () from /lib64/libcrypto.so.3
#2 0x00007ff72914c694 in CONF_modules_unload () from /lib64/libcrypto.so.3
#3 0x00007ff7291efff9 in OPENSSL_cleanup () from /lib64/libcrypto.so.3
#4 0x00007ff72954702b in ?? ()
#5 0x0000000100061c08 in ?? ()
#6 0x00007ff7190566c8 in ?? ()
#7 0x00007ffccf196a20 in ?? ()
#8 0x000000000071da8a in futex_release (lock=0x7ff729f08b50 <syslog>)
at core/mem/../mem/../futexlock.h:134
#9 0x00000000006e9448 in destroy_tls () at core/tls_hooks.c:75
#10 0x000000000041f278 in cleanup (show_status=1) at main.c:594
#11 0x0000000000420af1 in shutdown_children (sig=15, show_status=1) at
main.c:721
#12 0x0000000000421717 in handle_sigs () at main.c:752
#13 0x0000000000430c88 in main_loop () at main.c:1988
#14 0x0000000000439d13 in main (argc=14, argv=0x7ffccf1973f8) at main.c:3212
(gdb)
Environment:
Oracle Linux Server 9.3
Kamailio 5.7.3
yum list --installed | grep ssl
openssl.x86_64 10:3.0.7-24.0.3.el9_fips
@tools
openssl-libs.x86_64 10:3.0.7-24.0.3.el9_fips
@tools
openssl-pkcs11.x86_64 0.4.11-7.el9
@anaconda
xmlsec1-openssl.x86_64 1.2.29-9.el9
@AppStream
What can I do for further investigation?
Thanks
Hi All,
I'm having trouble understanding/finding resources on how to handle a 302 message I receive. I'm working on making an inbound sbc with kamailio with clearip integration. I'm successfully sending to kamailio, but am having trouble retrieving the response from clearip in kamailio.
For some background, the intended call flow should be this:
first it should send from caller to kamailio (caller > kamailio), then over tcp kamailio sends to clearip (kamailio > clearip) [This is what is working as expected]
Then I should be able to signal to kamailio to continue the call to the intended destination.
When clearip sends a code back (in this case 302), I want to be able to see that code and send the caller to the correct destination. The problem I keep running into is that I can't seem to see the 302 code in a reply, branch or failure root or checking the status. I'm just lost on what I am misunderstanding and would appreciate if anyone could point me in the right direction on how to approach retrieving the 302 message.
I'm using kamailio version 5.6.3 and debian 12.1
Thanks in advance,
Temi
Hello,
I'm testing Kamailio 5.x as a redirecting server based on calling number.
The calling numbers are stored on a DB and loaded in htable at runtime.
When the INVITE or REGISTER arrive Kamailio checks if there is a match
on $fU in htable (KEY_NAME) and if there is one, it replies with 302
adding the Contact HF with $fU@$sht(cli=>$fU)(with the domain part found
in KEY_VALUE):
append_to_reply("<Contact: sip:$fU@$sht(cli=>$fU)>\r\n");
If I use the full number as KEY_NAME it works as expected, but how can I
match on a prefix instead of the whole $fU?
For example, If I receive a call form 0655123456 I want to match it also
if I have the prefix 0655 in htable.
Do you have some advice to achieve this goal with htable or in a similar
way?
Thank you.
Best regards.
--
Antonio Reale
I have an AWS ec2 instance with Kamailio and rtpengine configured. I am
having a challenge of no voice on calls. I have sip client on my mobile
phone and soft phone on my laptop and the two are on different networks
behind nat. Signaling is working fine but there is no media and when I check
on on the SDP the call logs are showing private ips instead of public ips :
o=- 3 2 IN IP4 192.168.1.33 and c=IN IP4 172.31.36.50. I understand this is
a NAT issue but I am failing to see where is the challenge. My rtpengine
seems to be working fine .
Below is my Kamailio.cfg file link :
https://docs.google.com/document/d/1MKZJGlQjxYbdtw6QcCm9_EmvVPOkMs-YXjlq1ZM2
mmY/edit?usp=drive_link
PCAP file for the call:
https://docs.google.com/document/d/12gofLYhN0-lYIZORngIeuaYxLudLjiNdZgY504Ei
XFs/edit?usp=drive_link
rtpengine.conf
https://docs.google.com/document/d/1QPxey49UzuN3Wd8jp8jc0mFhh31rr1alIO-gl4gP
JEI/edit?usp=drive_link
Please help.
Hi all!
I have been dealing with STIR/SHAKEN for a few weeks now, and while doing
some tests I have found an issue which I can't find the reason for.
The script has the following route logic:
route[HANDLE_STIRSHAKEN]
{
xlog("L_INFO", "HANDLE_STIRSHAKEN - STIR/SHAKEN Logic");
if ($hdrc(Identity) == 0 ){
xlog("L_INFO", "HANDLE_STIRSHAKEN - No Identity Header -> Skipping
this logic");
return;
}
#Verify Call Identity
xlog("L_INFO", "HANDLE_STIRSHAKEN - Identity Header: $hdr(Identity)");
$var(header_1)= $(hdr(Identity){s.select,0,.});
$var(header_2)= $(hdr(Identity){s.select,1,.});
xlog("L_INFO", "HANDLE_STIRSHAKEN - Encoded Header 1: $var(header_1)");
xlog("L_INFO", "HANDLE_STIRSHAKEN - Encoded Header 2: $var(header_2)");
xlog("L_INFO", "HANDLE_STIRSHAKEN - Decoded Header 1:
$(var(header_1){s.decode.base64})");
xlog("L_INFO", "HANDLE_STIRSHAKEN - Decoded Header 2:
$(var(header_2){s.decode.base64})");
xlog("L_INFO", "HANDLE_STIRSHAKEN - Parsing!");
$var(hdr_1_json_payload) = $(var(header_1){s.decode.base64}); # Header 1
xlog("L_INFO", "HANDLE_STIRSHAKEN - Parsed!");
xlog("L_INFO", "HANDLE_STIRSHAKEN - Header 1 payload =
$var(hdr_1_json_payload) ");
$var(hdr_2_json_payload) = $(var(header_2){s.decode.base64}); # Header 2
jansson_get_field($var(hdr_2_json_payload), "attest",
"$var(attest_value)");
jansson_get_field($var(hdr_2_json_payload), "ppt", "$var(ppt_value)");
jansson_get_field($var(hdr_2_json_payload), "typ", "$var(typ_value)");
jansson_get_field($var(hdr_2_json_payload), "x5u", "$var(x5u_value)");
xlog("L_INFO", "HANDLE_STIRSHAKEN - $var(attest_value) $var(ppt_value)
$var(typ_value) $var(x5u_value) ");
}
All it does is parse the Identity header received on the initial INVITE,
decodes it (it is encoded in base64) and writes some JSON values on log.
Nothing serious....
As the Identity header is divided into multiple parts, separated by a ".",
I get the first 2 parts in 2 private variables, as per lines:
$var(header_1)= $(hdr(Identity){s.select,0,.});
$var(header_2)= $(hdr(Identity){s.select,1,.});
Logs show correctly that both variables are populated:
May 10 09:09:42 kamailio1 kamailio[153201]: INFO: {1 10 INVITE
1-1966540(a)10.20.0.1} <script>: HANDLE_STIRSHAKEN - Encoded Header 1:
eyJhbGciOiAiRVMyNTYiLCJwcHQiOiAic2hha2VuIiwidHlwIjogInBhc3Nwb3J0IiwieDV1IjogImh0dHBzOi8vY2VydGlmaWNh
dGVzLmNsZWFyaXAuY29tL2IxNWQ3Y2M5LTBmMjYtNDZjMi04M2VhLWEzZTYzYTgyZWMzYS83Y2M0ZGI2OTVkMTNlZGFkYTRkMWY5ODYxYjliODBmZS5jcnQifQ
May 10 09:09:42 kamailio1 kamailio[153201]: DEBUG: {1 10 INVITE
1-1966540(a)10.20.0.1} <core> [core/parser/msg_parser.c:324]:
parse_headers(): flags=ffffffffffffffff
May 10 09:09:42 kamailio1 kamailio[153201]: DEBUG: {1 10 INVITE
1-1966540(a)10.20.0.1} <core> [core/pvapi.c:1418]: pv_printf_mode(): final
buffer length 34
May 10 09:09:42 kamailio1 kamailio[153201]: DEBUG: {1 10 INVITE
1-1966540(a)10.20.0.1} <core> [core/parser/msg_parser.c:324]:
parse_headers(): flags=ffffffffffffffff
May 10 09:09:42 kamailio1 kamailio[153201]: DEBUG: {1 10 INVITE
1-1966540(a)10.20.0.1} <core> [core/pvapi.c:1418]: pv_printf_mode(): final
buffer length 34
May 10 09:09:42 kamailio1 kamailio[153201]: DEBUG: {1 10 INVITE
1-1966540(a)10.20.0.1} <core> [core/pvapi.c:1418]: pv_printf_mode(): final
buffer length 230
May 10 09:09:42 kamailio1 kamailio[153201]: INFO: {1 10 INVITE
1-1966540(a)10.20.0.1} <script>: HANDLE_STIRSHAKEN - Encoded Header 2:
eyJhdHRlc3QiOiAiQSIsImRlc3QiOiB7InRuIjogWyIxNDA0NTI2NjA2MCJdfSwiaWF0IjogMTU0ODg1OTk4Miwib3JpZyI6IHsi
dG4iOiAiMTgwMDEyMzQ1NjcifSwib3JpZ2lkIjogIjNhNDdjYTIzLWQ3YWItNDQ2Yi04MjFkLTMzZDVkZWVkYmVkNCJ9
However, when decoding both values:
xlog("L_INFO", "HANDLE_STIRSHAKEN - Decoded Header 1:
$(var(header_1){s.decode.base64})");
xlog("L_INFO", "HANDLE_STIRSHAKEN - Decoded Header 2:
$(var(header_2){s.decode.base64})");
only $var(header_2) gets decoded:
May 10 09:09:42 kamailio1 kamailio[153201]: DEBUG: {1 10 INVITE
1-1966540(a)10.20.0.1} <core> [core/parser/msg_parser.c:324]:
parse_headers(): flags=ffffffffffffffff
May 10 09:09:42 kamailio1 kamailio[153201]: DEBUG: {1 10 INVITE
1-1966540(a)10.20.0.1} <core> [core/pvapi.c:1418]: pv_printf_mode(): final
buffer length 34
May 10 09:09:42 kamailio1 kamailio[153201]: DEBUG: {1 10 INVITE
1-1966540(a)10.20.0.1} <core> [core/parser/msg_parser.c:324]:
parse_headers(): flags=ffffffffffffffff
May 10 09:09:42 kamailio1 kamailio[153201]: DEBUG: {1 10 INVITE
1-1966540(a)10.20.0.1} <core> [core/pvapi.c:1418]: pv_printf_mode(): final
buffer length 34
May 10 09:09:42 kamailio1 kamailio[153201]: DEBUG: {1 10 INVITE
1-1966540(a)10.20.0.1} <core> [core/pvapi.c:1418]: pv_printf_mode(): final
buffer length 38
May 10 09:09:42 kamailio1 kamailio[153201]: INFO: {1 10 INVITE
1-1966540(a)10.20.0.1} <script>: *HANDLE_STIRSHAKEN - Decoded Header 1:*
May 10 09:09:42 kamailio1 kamailio[153201]: DEBUG: {1 10 INVITE
1-1966540(a)10.20.0.1} <core> [core/parser/msg_parser.c:324]:
parse_headers(): flags=ffffffffffffffff
May 10 09:09:42 kamailio1 kamailio[153201]: DEBUG: {1 10 INVITE
1-1966540(a)10.20.0.1} <core> [core/pvapi.c:1418]: pv_printf_mode(): final
buffer length 34
May 10 09:09:42 kamailio1 kamailio[153201]: DEBUG: {1 10 INVITE
1-1966540(a)10.20.0.1} <core> [core/parser/msg_parser.c:324]:
parse_headers(): flags=ffffffffffffffff
May 10 09:09:42 kamailio1 kamailio[153201]: DEBUG: {1 10 INVITE
1-1966540(a)10.20.0.1} <core> [core/pvapi.c:1418]: pv_printf_mode(): final
buffer length 34
May 10 09:09:42 kamailio1 kamailio[153201]: DEBUG: {1 10 INVITE
1-1966540(a)10.20.0.1} <core> [core/pvapi.c:1418]: pv_printf_mode(): final
buffer length 182
May 10 09:09:42 kamailio1 kamailio[153201]: INFO: {1 10 INVITE
1-1966540(a)10.20.0.1} <script>: *HANDLE_STIRSHAKEN - Decoded Header 2:
{"attest": "A","dest": {"tn": ["14045266060"]},"iat": 1548859982,"orig":
{"tn": "18001234567"},"origid": "3a47ca23-d7ab-446b-821d-33d5deedbed4"}*
As you can veri
And to ease debugging, I have isolated the line that generates the issue:
May 10 09:09:42 kamailio1 kamailio[153201]: INFO: {1 10 INVITE
1-1966540(a)10.20.0.1} <script>: HANDLE_STIRSHAKEN - Parsing!
May 10 09:09:42 kamailio1 kamailio[153201]: DEBUG: {1 10 INVITE
1-1966540(a)10.20.0.1} <core> [core/parser/msg_parser.c:324]:
parse_headers(): flags=ffffffffffffffff
May 10 09:09:42 kamailio1 kamailio[153201]: DEBUG: {1 10 INVITE
1-1966540(a)10.20.0.1} <core> [core/pvapi.c:1418]: pv_printf_mode(): final
buffer length 34
May 10 09:09:42 kamailio1 kamailio[153201]: DEBUG: {1 10 INVITE
1-1966540(a)10.20.0.1} <core> [core/parser/msg_parser.c:324]:
parse_headers(): flags=ffffffffffffffff
May 10 09:09:42 kamailio1 kamailio[153201]: DEBUG: {1 10 INVITE
1-1966540(a)10.20.0.1} <core> [core/pvapi.c:1418]: pv_printf_mode(): final
buffer length 34
*May 10 09:09:42 kamailio1 kamailio[153201]: ERROR: {1 10 INVITE
1-1966540(a)10.20.0.1 <1-1966540(a)10.20.0.1>} <core> [core/lvalue.c:351]:
lval_pvar_assign(): non existing right pvar*
*May 10 09:09:42 kamailio1 kamailio[153201]: ERROR: {1 10 INVITE
1-1966540(a)10.20.0.1 <1-1966540(a)10.20.0.1>} <core> [core/lvalue.c:411]:
lval_assign(): assignment failed at pos: (21,32-21,64)*
May 10 09:09:42 kamailio1 kamailio[153201]: DEBUG: {1 10 INVITE
1-1966540(a)10.20.0.1} <core> [core/parser/msg_parser.c:324]:
parse_headers(): flags=ffffffffffffffff
May 10 09:09:42 kamailio1 kamailio[153201]: DEBUG: {1 10 INVITE
1-1966540(a)10.20.0.1} <core> [core/pvapi.c:1418]: pv_printf_mode(): final
buffer length 34
May 10 09:09:42 kamailio1 kamailio[153201]: DEBUG: {1 10 INVITE
1-1966540(a)10.20.0.1} <core> [core/parser/msg_parser.c:324]:
parse_headers(): flags=ffffffffffffffff
May 10 09:09:42 kamailio1 kamailio[153201]: DEBUG: {1 10 INVITE
1-1966540(a)10.20.0.1} <core> [core/pvapi.c:1418]: pv_printf_mode(): final
buffer length 34
May 10 09:09:42 kamailio1 kamailio[153201]: DEBUG: {1 10 INVITE
1-1966540(a)10.20.0.1} <core> [core/pvapi.c:1418]: pv_printf_mode(): final
buffer length 27
May 10 09:09:42 kamailio1 kamailio[153201]: INFO: {1 10 INVITE
1-1966540(a)10.20.0.1} <script>: HANDLE_STIRSHAKEN - Parsed!
Even though the $var(header_1) contains a base64 encoded string, the
decoder seems to fail.
If I copy the value contained in $var(header_1) to an online decoder like
https://www.base64decode.org/ the string gets decoded correctly.
I have even modified the line :
$var(header_1)= $(hdr(Identity){s.select,0,.});
to get the reverse index from the Identity string by doing
$var(header_1)= $(hdr(Identity){s.select,-6,.});
It gets the same encoded string, same value (as expected), but the result
is the same: Kamailio's s.decode.base64 fails with the same error.
i'm not sure what
assignment failed at pos: (21,32-21,64)
could mean....
I don't think my code is wrong, as the same function is used on
$var(header_2) value and it works, but maybe someone can correct me.
Greatly appreciate your help.
Cheers,
*Sérgio Charrua*
Hello @all
as we want to enhance our VoIP-Plattform with DMQ functionalities for
replication of Userlocation, Dialog and Hash Tables I made a lot of
tests durings the last week.
For testing I use two Debian 12 Server with Kamailio 5.7.4 (latest git)
Both server have their own floating IP so in case one server fails the
floating changes to the working server. This is done via keepalived
On both servers Kamailio is active and use ip_free_bind=1 so both
Kamailio instances can listen to all necessary IPs.
So we have following network configuration:
Server1:
static IP: 192.168.253.201
floating IP: 192.168.253.200
Server2:
static IP: 192.168.253.202
floating IP: 192.168.253.210
Now I test some calls while I trigger a failover, so Server1 takes over
192.168.253.10
Message
Test
Result
CustomerA -> Proxy -> CustomerB
Failover while Dialogstate 4
BYE is relayed correctly. Dialog is changing to state 5
CDR needs to be written manually -> no problem at all
CustomerA -> Proxy -> CustomerB
Failover while Dialogstate 2
200 OK is relayed correctly although no transaction exist an therefore
no t_reply route is triggered. This is not a big deal because i can use
default onreply_route so all necessary variables can be used via hash table.
BUT Big Problem: Dialog state stays 2, so a following ACK is a bogus event
and the dialog state is never changed to 4. Even worse: after 300 seconds
the dialog is cleaned away by the timer, so I have no chance to do any kind
of accounting.
Test 2 is a real mess, because for me there is only one solution. I have
to check after a failover on incoming replies to an INVITE that was
handled on Server2 if these current dialog state is < 4 and cancel them.
But I can't see how to do it? Are there other ways than using t_cancel?
Or is it even some kind of a bug that a 200 OK does not trigger state 3
on dialog (although I have in mind that it has to be something to do
with missing transaction data, that are not replicated because of
missing replication capabilities of tm module)?
If none of the above is possible I really asking myself of a real use
case of dialog dmq replication.
--
Björn Klasen, Teamleitung NGN VoIP-Backbone
TNG Stadtnetz GmbH, TNG-Technik
Gerhard-Fröhler-Straße 12
24106 Kiel・Deutschland
T +49 431 7097-10
F +49 431 7097-555
bklasen(a)tng.de
https://www.tng.de
Executive board (Geschäftsführer):
Dr. Sven Willert (CEO/Vorsitz),
Gunnar Peter, Sven Schade,
Carsten Tolkmit, Bernd Sontheimer
Amtsgericht Kiel HRB 6002 KI
USt-ID: DE225201428
Die Information über die Verarbeitung Ihrer Daten
gemäß Artikel 12 DSGVO können Sie unter https://www.tng.de/datenschutz/ abrufen.
______________________________________________________________________
Hi,
We are using kamailio and freeswitch, So when we make a call from A to B
the call is going via "kamailio -> freeswitch" and "freeswitch ->
kamailio". Please suggest me how i can set "set_dialog_profile" for both
legs with unique value in kamailio config file.
Thanks.
Hello Experts,
I wanted to check, is there any way to modify the username part of the Refer-To header in Kamailio? For example, I am getting the following header:
REFER-TO: <sip:sip.abc.domain.com:5061;transport=tls; ..... ; .... ; ...>
the username part is missing.
Can I add a username inside it? For example, change it to
REFER-TO: <sip:123@sip.abc.domain.com:5061;transport=tls; ..... ; .... ; ...>
REFER-TO: <sip:test-kam@sip.abc.domain.com:5061;transport=tls; ..... ; .... ; ...>
I could not find any solution in the mailing list, the only way was to remove the header and then re-add it.
Thank you!
Regards,
Shah Hussain
Hi rtpengine experts,
We have some customers processing long multi-party call pcaps using
mediaMin who are reporting large amounts of packets with timestamp
jumps but no packet loss (for instance 10% of packets over a 1 hr 45
min call). For example, in the Wireshark excerpt shown below, packets
6 and 8 sent by rtpengine show a timestamp increment of 640, but
sequence number increment of 1:
In the mediaMin output packet log we typically see sections similar to:
:
:
Seq num 98584 timestamp = 3902252372, rtp pyld len = 33 media-R
Seq num 98585 timestamp = 3902252692, rtp pyld len = 33 media
Seq num 98586 timestamp = 3902253012, rtp pyld len = 33 media-R
Seq num 98587 timestamp = 3902253332, rtp pyld len = 33 media
Seq num 98588 timestamp = 3902253652, rtp pyld len = 33 media-R
Seq num 98589 timestamp = 3902253972, rtp pyld len = 33 media
Seq num 98590 timestamp = 3902254292, rtp pyld len = 33 media
Seq num 98591 timestamp = 3902254612, rtp pyld len = 33 media-R
Seq num 98592 timestamp = 3902254932, rtp pyld len = 33 media
Seq num 98593 timestamp = 3902255252, rtp pyld len = 33 media
Seq num 98594 timestamp = 3902255572, rtp pyld len = 33 media-R
Seq num 98595 timestamp = 3902255892, rtp pyld len = 33 media
Seq num 98596 timestamp = 3902256212, rtp pyld len = 33 media
Seq num 98597 timestamp = 3902256532, rtp pyld len = 33 media
Seq num 98598 timestamp = 3902256852, rtp pyld len = 33 media-R
Seq num 98599 timestamp = 3902257172, rtp pyld len = 33 media
Seq num 98600 timestamp = 3902257492, rtp pyld len = 33 media-R
Seq num 98601 timestamp = 3902257812, rtp pyld len = 33 media
Seq num 98602 timestamp = 3902258132, rtp pyld len = 33 media
Seq num 98603 timestamp = 3902258452, rtp pyld len = 33 media
Seq num 98604 timestamp = 3902258772, rtp pyld len = 33 media-R
Seq num 98605 timestamp = 3902259092, rtp pyld len = 33 media
:
:
where media-R packets are timestamp gap repairs (i.e. frame loss
concealment). The behavior tends to be bursty, but once it gets going
it goes for a while and seems relatively consistent.
Is this expected behavior for rtpengine ? If so is rptengine in turn
dealing with some type of "slow packet rate" issue from a remote
sender ?
Thanks, Jeff
Hello,
Kamailio SIP Server v5.7.5 stable release is out.
This is a maintenance release of the latest stable branch, 5.7, that
includes fixes since the release of v5.7.4. There is no change to
database schema or configuration language structure that you have to do
on previous installations of v5.7.x. Deployments running previous v5.7.x
versions are strongly recommended to be upgraded to v5.7.5.
For more details about version 5.7.5 (including links and guidelines to
download the tarball or from GIT repository), visit:
* https://www.kamailio.org/w/2024/05/kamailio-v5-7-5-released/
RPM, Debian/Ubuntu packages will be available soon as well.
Note that 5.7.x is currently the previous stable release series, the
latest is 5.8.x and v5.8.1 was released on April 3, 2024.
Many thanks to all contributing and using Kamailio!
Cheers,
Daniel
--
Daniel-Constantin Mierla (@ asipto.com)
twitter.com/miconda -- linkedin.com/in/miconda
Kamailio Consultancy, Training and Development Services -- asipto.com
Hello,
I am considering to release Kamailio v5.7.5 (out of branch 5.7) on
Wednesday, May 8, 2024. If anyone is aware of issues not yet on the bug
tracker, report them there asap in order to have a better chance to be
fixed.
Cheers,
Daniel
--
Daniel-Constantin Mierla (@ asipto.com)
twitter.com/miconda -- linkedin.com/in/miconda
Kamailio Consultancy, Training and Development Services -- asipto.com
I noticed that sql_query does not (anymore) work when called from event route:
event_route [tcp:closed] { # Handle TCP connection close
# Delete possible leftover registration
if ($conid)
sql_query("sip_proxy_cache", "DELETE FROM location WHERE server_id=0 AND connection_id=$conid", "result");
}
The query produces errors:
2024-05-07T11:30:14.785915+03:00 siika /usr/bin/sip-proxy[2848078]: CRITICAL: sqlops [sqlops.c:213]: sql_check_connection(): no database handle with reconnect disabled
2024-05-07T11:30:14.785978+03:00 siika /usr/bin/sip-proxy[2848078]: ERROR: sqlops [sqlops.c:232]: sql_query(): invalid connection to database
2024-05-07T11:30:14.786013+03:00 siika /usr/bin/sip-proxy[2848078]: ERROR: sqlops [sqlops.c:237]: sql_query(): with query [DELETE FROM location WHERE server_id=0 AND connection_id=7]
I added the last debug message in order to find out where the error
comes from.
The same query works fine when executed from regular route.
Any ideas why the query fails from event_route?
-- Juha
Hi everyone,
I am trying to assign environment variable as follows
listen=udp:0.0.0.0:5060 advertise $env(MY_IP):5060
Looks like using the environment variable as above is an invalid
configuration.
Is there a way to use IP from env var to advertise. Even better, is there a
way to use result in a stun query as an advertised address?
Thank you,
Pavan Kumar
Hi all!
I'm testing some redirect scenarios with Kamailio 5.7.4 and using
Astterisk 13 and SIPp for unit testing.
The kamailio's script is simple and uses TM, HTTP_ASYNC_MODULE, JSONRPC,
JANSSON, RTJSON and XLog modules.
Request route is simple:
request_route {
route(HANDLE_OPTIONS);
route(HANDLE_RETRANS);
route(HANDLE_CANCEL);
route(REQINIT);
route(HANDLE_INVITE);
}
where HANDLE_RETRANS is:
route[HANDLE_RETRANS]{
# handle retransmissions
xlog("L_INFO","HANDLE_RETRANS - message type is $mt for method
$rm");
if (!is_method("ACK")) {
if(t_precheck_trans()) {
xlog("L_INFO","HANDLE_RETRANS - Precheck Trans");
t_check_trans();
xlog("L_INFO", "HANDLE_RETRANS - Exiting after
Retransmission check - method $rm");
exit;
}
xlog("L_INFO","HANDLE_RETRANS - Check Trans");
t_check_trans();
}
}
and HANDLE INVITE is:
route[HANDLE_INVITE]{
if (is_method("INVITE"))
{
xlog("L_INFO","MAIN - calling TO_CARRIER");
setflag(FLT_ACC);
route(TO_CARRIER);
exit;
}
}
The HTTP requests call a REST API returning a JSON object, that is iterated
and produces a CONTACT header containing multiple choices using
the append_branch() command.
The RELAY route is :
route[RELAY] {
# Sends a 300 Multiple Choices back to the proxy that requested the
routing lookup
xlog("L_INFO","REPLY_302 - send reply");
send_reply("300", "Multiple Choices");
xlog("L_INFO","REPLY_302 - exit");
exit;
}
Which returns indeed a Contact header with multiple contact choices.
When using Asterisk to originate a call to Kamailio, the SIP call flow is
as follows and terminates (SNGrep and TCPDump do not detect anything else):
SRC DST
INVITE (SDP)
──────────────────────────>
100 trying -- your call is
<──────────────────────────
300 Multiple Choices
<──────────────────────────
ACK
──────────────────────────>
However when using SIPp I get some retransmissions after the final ACK.
SRC DST
INVITE (SDP)
──────────────────────────>
100 trying -- your call is
<──────────────────────────
300 Multiple Choices
<──────────────────────────
ACK
──────────────────────────>
300 Multiple Choices
<<<────────────────────────
300 Multiple Choices
<<<────────────────────────
300 Multiple Choices
<<<────────────────────────
SIPp scenario is :
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE scenario SYSTEM "sipp.dtd">
<scenario name="Basic Sipstone UAC">
<!-- In client mode (sipp placing calls), the Call-ID MUST be -->
<!-- generated by sipp. To do so, use [call_id] keyword.
-->
<send retrans="500" start_rtd="true" rrs="true">
<![CDATA[
INVITE sip:[call_number]@[remote_ip]:[remote_port] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
Max-Forwards: 70
From: sipp <sip:sipp@[local_ip]:[local_port]>;tag=[call_number]
To: <sip:[call_number]@[remote_ip]:[remote_port]>
Contact: sip:sipp@[local_ip]:[local_port];transport=[transport]>
Call-ID: [call_id]
CSeq: 102 INVITE
User-Agent: SIPp
Supported: replaces, timer
Content-Type: application/sdp
Subject: Performance Test
Session-Expires: 3600;refresher=uas
Content-Length: [len]
v=0
o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
s=SIPp
c=IN IP[media_ip_type] [media_ip]
t=0 0
m=audio [media_port] RTP/AVP 0
a=rtpmap:0 PCMU/8000
]]>
</send>
<recv response="100" rss="true"> </recv>
<recv response="300" rtd="true" rss="true">
<action>
<ereg regexp="\<([a-zA-Z0-9@.=;]+)[^>]+"
search_in="hdr"
header="Contact: "
assign_to="1"/>
<log message="INFO: 300 Contact Header: [$1]" />
<exec command="echo [$1] >> ./300_ContactHeader.txt" />
</action>
<action>
<ereg regexp="sip:.*@([0-9A-Za-z\.]+):([0-9]+);transport=([A-Z]+)"
search_in="hdr" header="Contact:" check_it="true"
assign_to="dummy,host,port,transport" />
</action>
</recv>
<!-- Reference variables="dummy" /-->
<!-- Send ACK for 180 Ringing
ACK sip:[service]@[remote_ip]:[remote_port] SIP/2.0 -->
<send rrs="true">
<![CDATA[
ACK sip:[call_number]@[remote_ip]:[remote_port] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
Max-Forwards: 70
From: <sip:sipp@[local_ip]:[local_port]>;tag=[call_number]
To: <sip:[call_number]@[remote_ip]:[remote_port]>[peer_tag_param]
Contact: <sip:sipp@[local_ip]:[local_port]>
Call-ID: [call_id]
CSeq: 102 ACK
User-Agent: SIPp
Content-Length: 0
]]>
</send>
<!-- definition of the response time repartition table (unit is ms) -->
<!-- ResponseTimeRepartition value="10, 50, 100, 150, 200, 500, 1000"/ -->
</scenario>
The question is : is there anything wrong with my kamailio script? or with
SIPp scenario? why does kamailio have different behaviours between Asterisk
and SIPp?
Any option to disable retransmissions on Kamailio ? (using UDP)
Thanks in advance,
*Sérgio Charrua*
Hi all,
I am using Kamailio 5.8.1 on a Debian 12 machine with topos and topoh
hiding the topology.
I have observed with modparam("topos", "mask_callid", 1), in-dialog
requests are relayed with the incorrect caller-id.
In the scenario, A calls B. The call is set up and the call-id for the
B-Leg is successfully masked. Then, when A sends a BYE, the BYE is
incorrectly relayed to B with the call-id of the A leg, and B replies with
a 481
If I disable masking the call-id, or disable topos/topoh entirely,
everything looks and works as it should. I have tested with 5.7.4 and the
behaviour is the same.
Does anyone have any ideas for where I should start looking?
Thanks
Matthew
Hi.
I have a question re: IMS SCSCF redundancy.:There are several SCSCF
instances, registration happens via SCSCF1, it goes down after that. UE
make MO call.. PCSCF resolves the common SCSCF fqdn and sends an invite to
available SCSCF2 which does not have UE profile as well as AS address
(which is received during registration SAR/SAA in iFC). There are 2 options
here, either to release the call (as per 3gpp spec upon specific release
code, eg 408/503 UE should perform re-registration - not happen in our case
unfortunately), or to send request for iFC (suspend the call, fire SAR,
receive SAA, check available services, etc) and upon success continue the
call (to AS first)/ Lke IMS Registrar SCSCF save function, but for the
invite. To continue the call without interaction with AS is not a good
idea..
Any advice or workaround on how to achieve desired SCSCF redundancy ?
--
obelousov.tel
Hello!
I have a problem when sending a response sl_send_reply("415", "The other party does not support video calling!"); in route[HTTP_REPLY].
When I make a request using http_async_query() to send a push notification to a mobile device, I need to process the response from the push server and respond with a SIP message to the client. Before sending the request I do $http_req(suspend) = 0;
What am I doing wrong? Why are $fU and $ru equal to null ?
#processing HTTP responses
route[HTTP_REPLY] {
if ($http_ok && $http_rs == 200) {
xlog("L_INFO", "route[HTTP_REPLY]: status $http_rs\n");
xlog("L_INFO", "route[HTTP_REPLY]: body $http_rb\n");
} else if($http_rs == 415 || $http_rs == "415") {
xlog("L_ERR", "route[HTTP_REPLY]: caller: $fU phone: $ru error: $http_err)\n");
send_reply("415", "The other party does not support video calling!");
} else {
xlog("L_ALERT", "route[HTTP_REPLY]: error $http_err)\n");
}
#exit;
}
Hi everyone. We are new to Kamailio and using Kamailio 5.8 with FreeSwitch.
We have the issue with the incoming call from our provider. They are dropping after 30 seconds. The client doesn't receive ACK from Kamailio. But FreeSwitch sends ACK to Kamailio. The outbound call is working fine. At the moment flow is our provider -> FreeSwitch -> Kamailio -> our web client. Could someone give us some directions please? Please find attached Kemi.py.
Thank you so much in advance

Hi all,
i have a problem with my Kamailio SIP Server.
I set up a Kamailio SIP server in a virtual machine on a private network and i connect to this with a WireGuard VPN.
The problem is that i can connect to the SIP server throught different clients and users and i can call the other users, the devices ring and i can answer to the calls but unfortunatly there is no audio during the call :(
I can't understand why, it seems all si OK, a year ago i set up another SIP server with the same configuration and all works correctly with it.
Can anyone help me to understand why? I can copy and paste here all the config files if you need it.
Thank you so much in advance
Christian
As an Official Adobe Bronze Solution Partner, we specialize in AEM development services, consulting, implementation, migration, and cloud services for your business.
Hello
Can anyone help answer these questions:
- if SIP Timer L and Timer M from RFC6026 has been defined at Kamailio (version v5.5.x)?
Timer L: Wait time for accepted INVITE request retransmits
Timer M: Wait time for retransmission of 2xx to INVITE or additional 2xx from other branches of a forked INVITE
- if no specific Timer defined, which timer will be used instead?
thanks
br
jenni
Hi
I've an issue with serial call forking and I hope somebody can help me...
What I'm trying to reach:
We are using Kamailio in a dynamic network with multiple nodes. The
dialplan is implemented using the KEMI interface. The call routing is
completely dynamic. At the moment, we are having call groups, which may
contain 1 or more recipients. If the number of this call group is called,
Kamailio is doing a parallel forking to all group participants. Now I'm
trying to extend the feature, that if nobody hooks up, the call is
forwarded to another number. This has been implemented with serial forking.
So the dialplan adds branches for all call group members with a q value of
1 and the last branch is the failover number with a lower q value. The
branching and failure route works fine.
The problem:
* I have a call group (G Bob 900101), with one participant (Bob 200102).
* The group has a fail over number (if Bob doesn't hook up), which points
again to Bob. I know that this use case doesn't make much sense, but it has
been simplified to show the problem. The failover number can be anything
also another call group which may contain one or more recipients from the
first group again.
* Alice (200101) calls the call group
* The first node (10.0.1.1/10.64.0.1) receives the call and forks it to
branch 1 Bob (202102) with q value 1.0 and to a second branch Bob (202102)
with q value 0.5. fr_timer is set to 10s
* The call is forwarded to node 2 (10.0.2.1/10.64.0.2), where Bob is
registered.
* The call is forwarded to Bobs device (Grandstream GXV3350) and the phone
is ringing.
* After 10s, the first node detects the 408 Request Timeout and switches to
the second branch
* The invite is sent to node 2 and Bobs device again.
* Node 1 also sends a CANCEL to node 2 and Bobs device for the first branch.
* The call in Bobs device is terminated
* Now the problem, the device does not react to the second INVITE. And
after the fr_inv_timer expires, the call is terminated with a 408 Request
Timeout.
I can see that the second INVITE contains another branch ID <ID>.1 compared
to the first INVITE, which had <ID>.0. The CANCEL is also sent with <ID>.0.
I've also tried with a Cisco 8861 3PCC and it doesn't work either. Compared
to the Grandstream, the Cisco device returns an error 500 upon the second
INVITE. Since both devices do not accept what I'm trying, I guess I'm doing
something wrong...
At the moment I'm a bit lost, what the problem could be.
Does somebody have an idea what it is and how I could solve it?
Following two SIP dumps from node 1 and node 2:
Node 1:
|Time | 10.0.1.128 | 10.64.0.1
|
| | | 10.0.1.1 | |
10.0.2.1 |
|2024-01-31 14:17:07.792784| INVITE SDP (g711A g7 |
| |SIP INVITE From: "Alice" <
sips:200101@10.0.1.1:5061> To:<sips:900101@10.0.1.1:5061>
Call-ID:2102072978-5060-296@BA.A.B.BCI CSeq:2950
| |(47276) ------------------> (5061) | |
|
|2024-01-31 14:17:07.793060| 407 Proxy Authentica |
| |SIP Status 407 Proxy Authentication
Required
| |(47276) <------------------ (5061) | |
|
|2024-01-31 14:17:07.796613| ACK | |
| |SIP ACK From: "Alice" <
sips:200101@10.0.1.1:5061> To:<sips:900101@10.0.1.1:5061> CSeq:2950
| |(47276) ------------------> (5061) | |
|
|2024-01-31 14:17:07.799045| INVITE SDP (g711A g7 |
| |SIP INVITE From: "Alice" <
sips:200101@10.0.1.1:5061> To:<sips:900101@10.0.1.1:5061>
Call-ID:2102072978-5060-296@BA.A.B.BCI CSeq:2951
| |(47276) ------------------> (5061) | |
|
|2024-01-31 14:17:07.836471| 100 trying -- your c |
| |SIP Status 100 trying -- your call is
important to us
| |(47276) <------------------ (5061) | |
|
|2024-01-31 14:17:07.865219| | |
INVITE SDP (g711A g7 |SIP INVITE From: "Alice" <
sips:200101@10.0.1.1:5061> To:<sips:900101@10.0.1.1:5061> CSeq:2951
| | | |(5061)
------------------> (5061) |
|2024-01-31 14:17:08.036334| | |
100 trying -- your c |SIP Status 100 trying -- your call is
important to us
| | | |(5061)
<------------------ (5061) |
|2024-01-31 14:17:08.084421| | |
180 Ringing |SIP Status 180 Ringing
| | | |(5061)
<------------------ (5061) |
|2024-01-31 14:17:08.096834| 180 Ringing |
| |SIP Status 180 Ringing
| |(47276) <------------------ (5061) | |
|
|2024-01-31 14:17:18.099644| | |
INVITE SDP (g711A g7 |SIP INVITE From: "Alice" <
sips:200101@10.0.1.1:5061> To:<sips:900101@10.0.1.1:5061> CSeq:2951
| | | |(5061)
------------------> (5061) |
|2024-01-31 14:17:18.100099| | |
CANCEL | |SIP CANCEL From: "Alice" <
sips:200101@10.0.1.1:5061> To:<sips:900101@10.0.1.1:5061> CSeq:2951
| | | |(5061)
------------------> (5061) |
|2024-01-31 14:17:18.259375| | |
100 trying -- your c |SIP Status 100 trying -- your call is
important to us
| | | |(5061)
<------------------ (5061) |
|2024-01-31 14:17:18.274841| | |
200 canceling |SIP Status 200 canceling
| | | |(5061)
<------------------ (5061) |
|2024-01-31 14:17:18.296942| | |
487 Request Terminat |SIP Status 487 Request Terminated
| | | |(5061)
<------------------ (5061) |
|2024-01-31 14:17:18.298630| | |
ACK | |SIP ACK From: "Alice" <
sips:200101@10.0.1.1:5061> To:<sips:900101@10.0.1.1:5061> CSeq:2951
| | | |(5061)
------------------> (5061) |
|2024-01-31 14:17:20.281602| | |
408 Request Timeout |SIP Status 408 Request Timeout
| | | |(5061)
<------------------ (5061) |
|2024-01-31 14:17:20.283433| | |
ACK | |SIP ACK From: "Alice" <
sips:200101@10.0.1.1:5061> To:<sips:900101@10.0.1.1:5061> CSeq:2951
| | | |(5061)
------------------> (5061) |
|2024-01-31 14:17:20.307343| 408 Request Timeout |
| |SIP Status 408 Request Timeout
| |(47276) <------------------ (5061) | |
|
|2024-01-31 14:17:20.309097| ACK | |
| |SIP ACK From: "Alice" <
sips:200101@10.0.1.1:5061> To:<sips:900101@10.0.1.1:5061> CSeq:2951
| |(47276) ------------------> (5061) | |
|
Node 2:
|Time | 10.64.0.1 | 10.64.0.2
|
| | | 10.0.2.1 | |
10.0.2.128 |
|2024-01-31 14:17:07.869305| INVITE SDP (g711A g7 |
| |SIP INVITE From: "Alice" <
sips:200101@10.0.1.1:5061> To:"Bob" <sips:900101@10.0.1.1:5061>
Call-ID:2102072978-5060-296@BA.A.B.BCI CSeq:2951
| |(54454) ------------------> (5061) | |
|
|2024-01-31 14:17:08.036009| 100 trying -- your c |
| |SIP Status 100 trying -- your call is
important to us
| |(5061) <------------------ (5061) | |
|
|2024-01-31 14:17:08.050848| | |
INVITE SDP (g711A g7 |SIP INVITE From: "Alice" <
sips:200101@10.0.1.1:5061> To:"Bob" <sips:900101@10.0.1.1:5061> CSeq:2951
| | | |(5061)
------------------> (5060) |
|2024-01-31 14:17:08.054357| | 100 Trying|
| |SIP Status 100 Trying
| | |(5061)
<-------------------------------------- (5060) |
|2024-01-31 14:17:08.075422| | 180 Ringing
| |SIP Status 180 Ringing
| | |(5061)
<-------------------------------------- (5060) |
|2024-01-31 14:17:08.083887| 180 Ringing |
| |SIP Status 180 Ringing
| |(5061) <------------------ (5061) | |
|
|2024-01-31 14:17:18.100359| INVITE SDP (g711A g7 |
| |SIP INVITE From: "Alice" <
sips:200101@10.0.1.1:5061> To:"Bob" <sips:900101@10.0.1.1:5061>
Call-ID:2102072978-5060-296@BA.A.B.BCI CSeq:2951
| |(54454) ------------------> (5061) | |
|
|2024-01-31 14:17:18.258947| 100 trying -- your c |
| |SIP Status 100 trying -- your call is
important to us
| |(5061) <------------------ (5061) | |
|
|2024-01-31 14:17:18.273819| | |
INVITE SDP (g711A g7 |SIP INVITE From: "Alice" <
sips:200101@10.0.1.1:5061> To:"Bob" <sips:900101@10.0.1.1:5061> CSeq:2951
| | | |(5061)
------------------> (5060) |
|2024-01-31 14:17:18.274460| CANCEL | |
| |SIP Request CANCEL CSeq:2951
| |(54454) ------------------> (5061) | |
|
|2024-01-31 14:17:18.274550| | |
CANCEL | |SIP CANCEL From: "Alice" <
sips:200101@10.0.1.1:5061> To:"Bob" <sips:900101@10.0.1.1:5061> CSeq:2951
| | | |(5061)
------------------> (5060) |
|2024-01-31 14:17:18.274615| 200 canceling |
| |SIP Status 200 canceling
| |(5061) <------------------ (5061) | |
|
|2024-01-31 14:17:18.277438| | 200 OK |
| |SIP Status 200 OK
| | |(5061)
<-------------------------------------- (5060) |
|2024-01-31 14:17:18.279335| | 487 Request
Terminated | |SIP Status 487 Request Terminated
| | |(5061)
<-------------------------------------- (5060) |
|2024-01-31 14:17:18.280785| | |
ACK | |SIP ACK From: "Alice" <
sips:200101@10.0.1.1:5061> To:"Bob" <sips:900101@10.0.1.1:5061> CSeq:2951
| | | |(5061)
------------------> (5060) |
|2024-01-31 14:17:18.296312| 487 Request Terminat |
| |SIP Status 487 Request Terminated
| |(5061) <------------------ (5061) | |
|
|2024-01-31 14:17:18.298900| ACK | |
| |SIP ACK From: "Alice" <
sips:200101@10.0.1.1:5061> To:"Bob" <sips:900101@10.0.1.1:5061> CSeq:2951
| |(54454) ------------------> (5061) | |
|
|2024-01-31 14:17:20.280965| 408 Request Timeout |
| |SIP Status 408 Request Timeout
| |(5061) <------------------ (5061) | |
|
|2024-01-31 14:17:20.283730| ACK | |
| |SIP ACK From: "Alice" <
sips:200101@10.0.1.1:5061> To:"Bob" <sips:900101@10.0.1.1:5061> CSeq:2951
| |(54454) ------------------> (5061) | |
|
At the moment, I'm using Kamailio 5.5.4, but I also did a short try with a
newer version (I guess it was 5.7.4). Both versions showed the same issue.
Best regards
Mathias
Hello,
We have a production Kamailio 5.2.7 server which has suddenly started
reporting spikes in the shared memory use. When looking into this, we
noticed that at the same time as the memory spikes Kamailio also logs a
huge amount of errors like the following.
Can anyone help with an explanation for what's going on? The xx.xx.52.202
address is the Kamailio server itself. We record historical numbers of
network connections for the server overall, and that doesn't show any
increase in the number of TCP connections, either at the time of the spikes
or as a general trend.
Thanks in advance!
Apr 26 09:23:16 vpbx11 /sbin/kamailio[44272]: ERROR: <core>
[core/tcp_main.c:2703]: tcpconn_1st_send(): connect xx.xx.52.202:42726
failed (RST) Connection refused
Apr 26 09:23:16 vpbx11 /sbin/kamailio[44272]: ERROR: <core>
[core/tcp_main.c:2711]: tcpconn_1st_send(): xx.xx.52.202:42726: connect &
send for 0x14bbf44c9f40 failed: Connection refused (111)
Apr 26 09:23:16 vpbx11 /sbin/kamailio[44272]: ERROR: tm
[../../core/forward.h:293]: msg_send_buffer(): tcp_send failed
Apr 26 09:23:16 vpbx11 /sbin/kamailio[44272]: WARNING: <core>
[core/tcp_main.c:1149]: tcp_do_connect(): xx.xx.52.202:42726: could not
find corresponding listening socket for xx.xx.52.202, using default...
--
David Cunningham, Voisonics Limited
http://voisonics.com/
USA: +1 213 221 1092
New Zealand: +64 (0)28 2558 3782
Hello,
Just to confirm, as I quickly checked into a code of 5.8.x branch, there
were no modification on app_python3 module to comply with tls_threads_mode
mechanism?
Asking this beforehand posting a bug, that if using a quite simple script
into module, with tls_threads_mode = 2 Kamailio just hangs at the start and
become unresponsive.
And by simple I mean something like this
class PyKamailio:
def __init__(self):
self.test = 1
def child_init(self, rank):
"""Executed by app_python module when a new worker process (child)
is initialized by Kamailio."""
return 1
def mod_init():
""" Executed by app_python module when it is initialized by Kamailio."""
return PyKamailio()
with tls_threads_mode = 1 and 3 it loads, but if add some HTTPS calls
inside the script (even not the calls, but importing the methods, that are
making calls with import), it just start failing on TLS load, despite that
on packets processed (OPTIONS) no python_exec() is called, just from the
fact of having HTTPS calls into Python script.
--
Best regards,
Ihor (Igor)
Hello Everyone
I am using kamailio with RTP engine for wss to udp to connect my asterisk
server. It all works well like wss to UDP registration via kamailio to
asterisk. Here I am facing an issue with call hold i.e if I hold the call
from B leg it gets disconnected.
Any advice why it get failed and hangups
Thanks
Hello,,
I am using this docker file for installaing kamailio. I wana use it with open5gs for trynig VoNR , I used before it for VoLTE it works but right now I have this error in installation process.
icscf | 0(34) ERROR: <core> [core/sr_module.c:527]: ksr_locate_module(): could not find module <maxfwd> in </usr/lib64/kamailio/modules_k/:/usr/ lib64/kamailio/modules/:/usr/lib/kamailio/modules_k/:/usr/lib/kamailio/modules/:/usr/lib/x86_64-linux-gnu/kamailio/modules/:/usr/local/lib64/kamailio/ modules>
icscf | 0(34) CRITICAL: <core> [core/cfg.y:4008]: yyerror_at(): parse error in config file /etc/kamailio_icscf/kamailio_icscf.cfg, line 94, colu mn 12-19: failed to load module
scscf | 0(38) ERROR: <core> [core/sr_module.c:527]: ksr_locate_module(): could not find module <maxfwd> in </usr/lib64/kamailio/modules_k/:/usr/ lib64/kamailio/modules/:/usr/lib/kamailio/modules_k/:/usr/lib/kamailio/modules/:/usr/lib/x86_64-linux-gnu/kamailio/modules/:/usr/local/lib64/kamailio/
and there is docker file that Im using:
FROM ubuntu:focal
ENV DEBIAN_FRONTEND=noninteractive
# Install updates and dependencies
RUN apt-get update && \
apt-get -y install mysql-server tcpdump screen tmux ntp ntpdate git-core dkms \
gcc flex bison libmysqlclient-dev make libssl-dev libcurl4-openssl-dev \
libxml2-dev libpcre2-dev bash-completion g++ autoconf libmnl-dev \
libsctp-dev libradcli-dev libradcli4 libjson-c-dev pkg-config iproute2 net-tools \
iputils-ping
# Fetch Kamailio code (branch 5.3)
RUN mkdir -p /usr/local/src/ && cd /usr/local/src/ && \
git clone https://github.com/kamailio/kamailio && \
cd kamailio && git checkout 5.8
# Build and Install Kamailio
RUN cd /usr/local/src/kamailio && make cfg
COPY modules.lst /usr/local/src/kamailio/src
RUN cd /usr/local/src/kamailio && \
make -j`nproc` Q=0 all | tee make_all.txt && \
make install | tee make_install.txt && \
ldconfig
COPY kamailio_init.sh /
CMD /kamailio_init.sh
Hi Gang
Somehow I don't get my head around NAT Flags and the nathelper module
https://www.kamailio.org/docs/modules/5.7.x/modules/nathelper.html
In the examples I found, there is: FLT_NATS and FLB_NATB
If I got it right, FLB_NATB is a branch flag, which shall indicate that
the device is 'B'ehind NAT, right?
It is being set, when FLT_NATS is set:
if(isflagset(FLT_NATS)) {
setbflag(FLB_NATB);
}
But when should FLT_NATS be set and what is it's meaning? The examples I
found don't tell me this.
Mit freundlichen Grüssen
-Benoît Panizzon-
--
I m p r o W a r e A G - Leiter Commerce Kunden
______________________________________________________
Zurlindenstrasse 29 Tel +41 61 826 93 00
CH-4133 Pratteln Fax +41 61 826 93 01
Schweiz Web http://www.imp.ch
______________________________________________________
Hi everyone,
New user who is trying to make an outbound proxy to route a lot of freepbx
boxes for outbound calls.
I got this setup and working using dsiprouter. Calls come in from freepbx
trunk using outbound proxy, authenticated using IP auth, and then gets
signed with our stirshaken cert, then routes out to our carriers.
Interested in using plain kamailio. Got everything compiled and
libstirshaken compiled.
Just wanted to see if someone could point me in the right direction for the
cfg file.
I assume I would match how I have it in dsiprouter. That config has a lot
of things I'm not using and having a hard time deciphering it.
My thoughts on what I need:
MySQL database. Have a table for ip auth, a table for voice carriers, and
a table for 911 carriers.
Invite comes in, it checks ip auth table and responds with 403 if it's not
on the list. If it is, proceed to stir shaken signing, and then route the
call? I assume I will need to have some logic to tell voice calls and
emergency calls.
I got plain old routing/forwarding working and now want to focus on locking
it down.
Any thoughts, examples configs, anything would be awesome.
I am hoping to get this working and then having a primary/standby or even
load balancing them but im in the very early stages of trying to get my
head around Kamailio.
Thanks for any insights!
Hi List
I have stumbled over this challenge:
I have a kamailio server without dialog module. Only tmx module, acting
as registrar / rtpengine host.
If the call is routed over that server once, this works fine.
If the call is routed more than once (call from one location to another
on same registrar, call forwarding) then to correctly work, I would need
to engage rtpengine in a way to tell rtpengine to handle both call legs
separately.
By default, rtpengine identifies one call by Call-ID,FromTag,ToTag so
it considers all invocations to target one instance and on the 2nd
invocations it replaces the source rtp ip by it's own ip killing audio.
Using 'loop-protect' to prevent the 2nd invocation 'sort-of' works, but
not cleanly if I use different 'private' ip ranges on my voice core and
IC network to which CPE should not talk.
It is possible to pass a custom Call-ID to rtpengine. So this is how I
am considering finding a solution.
When passing the call-id to rtpengine I could append a leg identifier
to that call-id.
like $avp(rtp-callid) = $ci + $var(leg-id)
How could I reliably generate this leg-id / tell the legs apart?
Consider this situation:
leg 1 leg 2
CPE-A => Kam-Reg => Routing Core => Kam-Reg => CPE-B
Also I wonder if I can use an AVP at all? From Kamailio's Point of
view, the first invite being routed twice could be the same transaction
with same shared AVP, right?
Is there a way to pass some information via flags appended route-header?
Or maybe use the count of via or route header to tell the legs apart?
Any ideas very appreciated.
Mit freundlichen Grüssen
-Benoît Panizzon-
--
I m p r o W a r e A G - Leiter Commerce Kunden
______________________________________________________
Zurlindenstrasse 29 Tel +41 61 826 93 00
CH-4133 Pratteln Fax +41 61 826 93 01
Schweiz Web http://www.imp.ch
______________________________________________________
Hi,
I see the documentation for the sqlite module includes a parameter to
set the journal_mode to wal, but I don't see any way to set
synchronous=normal. Is there a way to run arbitrary PRAGMA statements
upon opening the file or would I have to run it before each query?
Hi everyone,
Here is my setup
SIP Client (MacBook) <=> Kamailio (AWS) <=> Freeswitch (AWS)
When I initiate a call from Client, audio won't be sent out, but the client
can receive audio. (When the client receives the call everything works
fine). I started to trace the SIP message using tdpdump. And here is an
interesting thing.
Kamailio sends the following SDP message while sending 200 OK
v=0
o=FreeSWITCH 1714278184 1714278185 IN IP4 *<freeswitch-ip-address>*
s=FreeSWITCH
c=IN IP4 *<freeswitch-ip-address>*
t=0 0
m=audio 27644 RTP/AVP 120 101
a=rtpmap:120 opus/48000/2
a=fmtp:120 useinbandfec=1
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=ptime:20
But on my computer where SIP client is running I receive following message
v=0
o=FreeSWITCH 1714278184 1714278185 IN IP4 *<kamailio-ip-address>*
s=FreeSWITCH
c=IN IP4 *<kamailio-ip-address>*
t=0 0
m=audio 27644 RTP/AVP 120 101
a=rtpmap:120 opus/48000/2
a=fmtp:120 useinbandfec=1
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=ptime:20
Somehow, somewhere, somebody is modifying the IP address in the SDP
message, hence the SIP client is sending audio to "Kamailio" instead of
"Freeswitch" server.
My initial guess was my router might be modifying it. After checking the
router settings I found SIP ALG is enabled. I disabled it, yet no use.
I changed my internet connection to a different provider and things started
working. SDP is not getting modified.
Have you ever faced such an issue where someone/something is modifying the
SDP messages. How did you debug to figure out which component was modifying
it? And common fixes for such weird situations?
Thanks and Regards,
Pavan Kumar
Hi All,
If run Kamailio in Active/Passive mode lets say there are 100 transactions going on Active node and then Active went down, now i want passive to be aware of all those ongoing transactions so that it can handle ongoing calls transactions smoothly so how to store them in db? Is there any way to do so? i know there is module dialog for tracking calls etc but i just want to handle transactions.
Thanks in advance.
Ram
Hello everyone,
While going through the WebRTC example configuration (cfg) to better
understand and implement it in my setup, I came across a potential issue in
the code block. The code in question can be found at this link:
https://github.com/kamailio/kamailio/blob/465994de2859c7863b4cef8457be0a207…
In the code, there is an "if else" block, "if(loose_route())" that seems to
be incorrect. It appears that the "if" block will always evaluate to true,
given that "loose_route" never returns 0. According to the documentation,
the return values of "loose_route" are specified as 1, 2, -1, -2, -3.
Therefore, it seems the "if" block is unnecessary, and the "else" block
will never be executed. Could someone please confirm this observation and,
if accurate, suggest a correction for the code?
Thank you for your attention to this matter.
Best regards,
Pavan Kumar
Hello list,
I'm using Kamailio to balance SIP request between two Asterisk. I have a
problem with Parking calls using Asterisk Application. When a user
parking a call, some times can't pick up parked call because the call to
pick up the Call go to the other Asterisk.
I'm using the 1 algorithm "hash over from URI" without success.
Any hint?
--
---
I'm SoCIaL, MayBe
Hello,
I'm trying to set up the dispatcher module from kamailio, but I'm running into errors just loading the dispatcher module and setting the params in my config file and would like to know where I'm going wrong.
I've added destinations through kamctl as well and whenever I try to use dispatcher reload or dispatcher dump, I get a 500 error saying neither of those methods are found.
I'm using kamailio version 5.6.3 and these are the errors I'm getting when starting up kamailio:
/usr/sbin/kamailio[102176]: ERROR: dispatcher [dispatch.c:824]: ds_load_list(): can't open list file [/etc/kamailio/dispatcher.list]
/usr/sbin/kamailio[102176]: ERROR: dispatcher [dispatcher.c:434]: mod_init(): no dispatching list loaded from file
/usr/sbin/kamailio[102176]: ERROR: <core> [core/sr_module.c:974]: init_mod(): Error while initializing module dispatcher (/usr/lib/x86_64-linux-gnu/kamailio/modules/dispatcher.so)
Many thanks in advance,
Temi