Hi all
Is there a way to skip a branch in branch route?
Situation: Two registrar server with DMQ synced location database.
CPE register via TCP or TLS. To properly work, message have to be sent
over the existing TCP connection.
Multiple CPE register to one AOR.
CPE1 and CPE2 register to Registrar 1
CPE3 registers to Registrar 2
On Registrar 1 there is an established TCP connection to CPE1 and CPE2
but not to CPE3.
Within the Branch Route to the CPE I can check if there is a TCP
as the Branch Route is executed for every contact in that AOR:
branch_route[BR_TO_CPE]
{
[...]
$var(reg_contact_addr) = $(ulc(aor=>addr)[$T_branch_idx]{uri.host});
$var(socket) = $(ulc(aor=>socket)[$T_branch_idx]);
if ($var(socket) == 0) {
xlog("L_ERROR", "$cfg(route): No Socket for: $var(reg_contact_addr)");
}
[...]
}
This log an error if the socket is not present on the local registrar.
But is there a way to tell kamailio to skip/discard that contact?
My intention is to parallel branch from the core to both registrars,
that way all contacts would still get the call but via established
TCP socket (and in case of UDP and NAT via correct know ip for ALG port-forwarding).
--
Mit freundlichen Grüssen
-Benoît Panizzon- @ HomeOffice und normal erreichbar
--
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
______________________________________________________
Hello everyone!
I'm running Kamailio 5.6.2 and having a potential problem on one of the
systems. The Slow timer process slowly consumes more and more of its PKG
memory. I did not allow it to use all memory by restartink Kamailio during
afterhours so I'm not sure what the consequences might be.
I'm suspecting that this could be caused by my configuration but not sure
how exactly. Can anyone please tell me how the Slow timer process can be
debugged? Is it possible to see what it is storing in the memory and what
data is piling up?
Thanks a lot!
Regarts, Volodymyr Ivanets.
Hello all,
I'm currently working on a proxy where I need to change To and From headers
in order to normalize the numbers to +E164.
I would like to be able to restore using and $avp() or $dlg_var() and
without writing parameters on the Record-Route headers.
I've tried to use restore_mode in auto mode and restore_dlg parameter with
value 1 but still got the parameters on the inserted Record-Route.
I've tried manual mode and using the configured $avp() to restore, but the
parameters still got written on the Request-URI.
I thought of using restore_mode with value "none" saving original values in
an $avvp() and doing the replace, however, uac_replace() on Request Route
or branch routes. That way i can't replace the values of To and From in the
replies.
That being said, my questions are :
- Is there a way to use manual or auto mode without writing info on the
Record-Route and only using $avp() ?
- Is there a way to make changes on the To and From header on replies?
Thanks in advance,
Best Regards,
Duarte Rocha
Hello!
Are there any technical difficulties in adding tlsa module with the
statically linked OpenSSL v1.1.1 to the package builder (deb)?
--
BR,
Denys Pozniak
**Issue Description**
I'm encountering an issue with my Kamailio configuration related to the inclusion of the "Accounting-Record-Type" (480) and "Accounting-Record-Number" (485) AVPs in Credit-Control Request (CCR) messages sent from the S-CSCF to the OCS.
**Issue Details**
- **Problem**: The "Accounting-Record-Type" and "Accounting-Record-Number" AVPs are being added to CCR messages generated by my Kamailio instance.
- **Expected Behavior**: According to modern Diameter and 3GPP standards (e.g., RFC 4006 and TS 32.299), these AVPs should not be included in CCR messages.
**Configuration Details**
- **Kamailio Version**: 5.3.0
- **SigScale OCS Version**: 3.2.9
Note that I have redacted some specific information for confidentiality reasons. The actual values are placed in my Kamailio main configuration file (`kamailio.cfg`) and Diameter-specific configuration files (where applicable).
Kamailio.cfg:
modparam("ims_charging", "db_url", DB_URL)
modparam("ims_charging", "db_mode", 1)
modparam("ims_charging", "origin_host", HOSTNAME);
modparam("ims_charging", "origin_realm", NETWORKNAME);
modparam("ims_charging", "destination_host", DESTINATION_HOST);
modparam("ims_charging", "destination_realm", DESTINATION_REALM);
modparam("ims_charging","service_context_id_root", RO_ROOT);
modparam("ims_charging","service_context_id_ext", RO_EXT);
modparam("ims_charging","service_context_id_mnc", MNC);
modparam("ims_charging","service_context_id_mcc", MCC);
modparam("ims_charging","interim_update_credits",30);
modparam("ims_charging","timer_buffer",5);
SCSCF.xml:
<?xml version="1.0" encoding="UTF-8"?>
<DiameterPeer
FQDN="scscf.mncXXX.mccXXX.3gppnetwork.org"
Realm="ims.mncXXX.mccXXX.3gppnetwork.org"
Vendor_Id="10415"
Product_Name="CDiameterPeer"
AcceptUnknownPeers="1"
DropUnknownOnDisconnect="1"
Tc="30"
Workers="16"
QueueLength="32"
TransactionTimeout="5"
SessionsHashSize="128"
DefaultAuthSessionTimeout="3600"
MaxAuthSessionTimeout="3600"
>
<Peer FQDN="diameter" Realm="ims.mncXXX.mccXXX.3gppnetwork.org" port="3868"/>
<Peer FQDN="192.168.2.31" Realm="ocs.ims.mncXXX.mccXXX.3gppnetwork.org" port="3868"/>
<Acceptor port="3868" bind="eth0"/>
<Auth id="16777216" vendor="10415"/><!-- 3GPP Cx -->
<Auth id="16777216" vendor="4491"/><!-- CableLabs Cx -->
<Auth id="16777216" vendor="13019"/><!-- ETSI/TISPAN Cx -->
<Auth id="16777216" vendor="0"/><!-- ETSI/TISPAN Cx -->
<Auth id="4" vendor="10415"/> <!--3GPP Ro -->
<Acct id="4" vendor="10415" />
<!--
Supported Vendor IDs - list of values which will be sent in the CER/CEA in the
Supported-Vendor-ID AVPs
-->
<SupportedVendor vendor="10415" />
<Realm name="ocs.ims.mncXXX.mccXXX.3gppnetwork.org">
<Route FQDN="192.168.2.31" metric="10"/>
</Realm>
<DefaultRoute FQDN="diameter" metric="10"/>
</DiameterPeer>
I am using SigScale OCS as my Online Charging System. Here is the error log I received from SigScale OCS:
ERROR REPORT==== 5-Sep-2023::07:27:01.393554 ===
"DIAMETER AVP unsupported"
service_name: {ocs_diameter_acct_service,{0,0,0,0},3868}
capabilities: {diameter_caps,
{<<"host1">>, <<"scscf-1.ims.mncXXX.mccXXX.3gppnetwork.org">>},
{<<"COMPANYNAME.local">>, <<"ims.mncXXX.mccXXX.3gppnetwork.org">>},
{[{0,0,0,0}],[{172,18,0,7}]},
{50386,10415},
{<<"SigScale OCS">>,<<"CDiameterPeer">>},
{[],[]},
{[10415],[10415]},
{[4,16777238],[16777216]},
{[],[]},
{[],[]},
{[{'diameter_base_Vendor-Specific-Application-Id',10415,[16777238],[]}],
[{'diameter_base_Vendor-Specific-Application-Id',10415,[16777216],[]},
{'diameter_base_Vendor-Specific-Application-Id',4491,[16777216],[]},
{'diameter_base_Vendor-Specific-Application-Id',13019,[16777216],[]},
{'diameter_base_Vendor-Specific-Application-Id',10415,[4],[]},
{'diameter_base_Vendor-Specific-Application-Id',10415,[],[4]}]},
{[329],[]},
{[],[]}}
errors: [{5001,
{diameter_avp,480,undefined,true,false,
<<0,0,0,2>>,
'Accounting-Record-Type',2,'Enumerated',5}},
{5001,
{diameter_avp,485,undefined,true,false,
<<0,0,0,0>>,
'Accounting-Record-Number',0,'Unsigned32',6}},
{5001,
{diameter_avp,260,undefined,true,false,
<<0,0,1,10,64,0,0,12,0,0,40,175,0,0,1,2,64,0,0,12,0,0,0,4>>,
'Vendor-Specific-Application-Id',
{'3gpp_ro_Vendor-Specific-Application-Id',10415,[4],[]},
'Grouped',10}}]
I would greatly appreciate it if someone from the community could provide insights into the following:
1. Possible Configurations: Are there specific configurations or modules in Kamailio that might cause the inclusion of non-standard AVPs in CCR messages?
2. IMS Ro Interface Behavior: Does anyone have experience with IMS Ro interface behavior using Kamailio that could shed light on this?
If you have any guidance, suggestions, or solutions to help me troubleshoot and resolve this problem, please share them. Thank you for your assistance.
Hello,
Running ”kamcmd permissions.trustedReload” it instantly returns “Reload OK” but I cannot repeat the reload for about 8 seconds. This is the same for dialplan.reload and dispatcher.reload.
root@superman.local:/# kamcmd permissions.trustedReload
Reload OK
root@superman.local:/# kamcmd permissions.trustedReload
error: 500 - ongoing reload
root@superman.local:/# kamcmd permissions.trustedReload
error: 500 - ongoing reload
There are scenarios where I might need to reload the permission table multiple times within this 8 second window. Is this some kind of intended block or is something at fault?
modparam("db_mysql", "ping_interval", 60)
modparam("db_mysql", "timeout_interval", 4)
modparam("db_mysql", "auto_reconnect", 1)
modparam("db_mysql", "opt_ssl_mode", 0)
modparam("permissions", "db_url", "mysql://kamailio:xxxxx@aws-rds-database /kamailio")
version: kamailio 5.7.1 (x86_64/linux)
flags: USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MMAP, PKG_MALLOC, MEM_JOIN_FREE, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLOCKLIST, HAVE_RESOLV_RES, TLS_PTHREAD_MUTEX_SHARED
ADAPTIVE_WAIT_LOOPS 1024, MAX_RECV_BUFFER_SIZE 262144, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: unknown
compiled with gcc 10.2.1
/M
Is there any specific reason why shared memory can be configured via the
config files ("shm_mem_size") AND CLI flags ("-m") but package memory can
only be set via CLI flags ("-M")?
Did no one ever came across the need to configure the package memory limit
so far, or is there another way to achieve it without using the CLI flag?
--
Ivan Ribakov
Software Engineer
www.zaleos.net