I want to use Session timers to refresh SDP on RTPengine node failure.
If call RTP streams established via first RTPengine node, and then this RTPengine node is stopped, then rtpengine Kamailio module do not try to use other RTPengine nodes.
Update /etc/kamailio/kamailio.cfg using patch like
diff --git a/etc/kamailio.cfg b/etc/kamailio.cfg
index be71dbb54a..1a6788f79f 100644
--- a/etc/kamailio.cfg
+++ b/etc/kamailio.cfg
@@ -1,4 +1,7 @@
#!KAMAILIO
+#!define WITH_DEBUG
+#!define WITH_NAT
+#!define WITH_RTPENGINE
#
# Kamailio SIP Server v5.5 - default configuration script
# - web: https://www.kamailio.org
@@ -195,6 +198,8 @@ children=8
* listen=[proto]:[localip]:[lport] advertise [publicip]:[pport]
* - it can be set many times to add more sockets to listen to */
# listen=udp:10.0.0.10:5060
+listen=tcp:3.236.25.6:5060
+listen=tcp:[2600:1f18:578:5700::6]:5060
/* life time of TCP connection when there is no traffic
* - a bit higher than registration expires to cope with UA behind NAT */
@@ -456,7 +461,7 @@ modparam("presence_xml", "force_active", 1)
#!ifdef WITH_NAT
#!ifdef WITH_RTPENGINE
# ----- rtpengine params -----
-modparam("rtpengine", "rtpengine_sock", "udp:127.0.0.1:2223")
+modparam("rtpengine", "rtpengine_sock", "udp6:rtp-us-east-1a-6.nga911.com:2223 udp6:rtp-us-east-1a-7.nga911.com:2223")
#!else
# ----- rtpproxy params -----
modparam("rtpproxy", "rtpproxy_sock", "udp:127.0.0.1:7722")
@@ -528,6 +533,11 @@ request_route {
# handle requests within SIP dialogs
route(WITHINDLG);
+ if (loose_route()) {
+ route(NATMANAGE);
+ record_route();
+ route(RELAY);
+ }
### only initial requests (no To tag)
# authentication
@@ -850,10 +860,11 @@ route[NATMANAGE] {
if (!(isflagset(FLT_NATS) || isbflagset(FLB_NATB))) return;
#!ifdef WITH_RTPENGINE
- if(nat_uac_test("8")) {
- rtpengine_manage("SIP-source-address replace-origin replace-session-connection");
+ if($avp(rtpengine_offer) == "done") {
+ rtpengine_answer("ICE=remove address-family=IP4 SDES=off");
} else {
- rtpengine_manage("replace-origin replace-session-connection");
+ rtpengine_offer("ICE=remove address-family=IP6 SDES=off");
+ $avp(rtpengine_offer) = "done";
}
#!else
if(nat_uac_test("8")) {
Establish call via this Kamailio. In my case used Route
header in initial INVITE.
When a call is established, then need stop RTPengine daemon on node used for media proxing.
Wait when the caller sends a session refresh.
According to Kamailio logs not attempt to reach another RTPengine node if the first node not available more.
In kam.log please check messages related to
Call-ID: 6aac81b6-a028-11eb-8bf8-870daa274dfe
CSeq: 34815260 INVITE
In log you will find at string 3437
11(31837) exec: {1 34815260 INVITE 6aac81b6-a028-11eb-8bf8-870daa274dfe} *** cfgtrace:dbg_cfg_trace(): branch_route=[NATMANAGE] c=[/root/kamailio/etc/kamailio.cfg] l=866 a=25 n=rtpengine_offer
11(31837) DEBUG: {1 34815260 INVITE 6aac81b6-a028-11eb-8bf8-870daa274dfe} rtpengine [rtpengine_funcs.c:144]: check_content_type(): type <application/sdp> found valid
11(31837) DEBUG: {1 34815260 INVITE 6aac81b6-a028-11eb-8bf8-870daa274dfe} rtpengine [rtpengine.c:1834]: build_rtpp_socks(): same rtpengines list version: 1 (1618738091)
11(31837) DEBUG: {1 34815260 INVITE 6aac81b6-a028-11eb-8bf8-870daa274dfe} rtpengine [rtpengine.c:3266]: select_rtpp_node_old(): rtpengine hash table lookup find node=udp6:rtp-us-east-1a-7.nga911.com:2223 for calllen=36 callid=6aac81b6-a028-11eb-8bf8-870daa274dfe viabranch=
11(31837) ERROR: {1 34815260 INVITE 6aac81b6-a028-11eb-8bf8-870daa274dfe} rtpengine [rtpengine.c:3027]: send_rtpp_command(): can't send command "offer" to RTPEngine <udp6:rtp-us-east-1a-7.nga911.com:2223>
11(31837) DEBUG: {1 34815260 INVITE 6aac81b6-a028-11eb-8bf8-870daa274dfe} rtpengine [rtpengine.c:1834]: build_rtpp_socks(): same rtpengines list version: 1 (1618738091)
11(31837) DEBUG: {1 34815260 INVITE 6aac81b6-a028-11eb-8bf8-870daa274dfe} rtpengine [rtpengine.c:3266]: select_rtpp_node_old(): rtpengine hash table lookup find node=udp6:rtp-us-east-1a-7.nga911.com:2223 for calllen=36 callid=6aac81b6-a028-11eb-8bf8-870daa274dfe viabranch=
11(31837) ERROR: {1 34815260 INVITE 6aac81b6-a028-11eb-8bf8-870daa274dfe} rtpengine [rtpengine.c:2664]: rtpp_function_call(): no available proxies
At this moment one other RTPengine node is available, but rtpengine Kamailio module does not try to reach this node.
no-rtpengine-swithover.pcap.gz
kamailio -v
[centos@sbc-a2 ~]$ kamailio -v
version: kamailio 5.5.0-pre0 (x86_64/linux) 9413fc
flags: USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MMAP, PKG_MALLOC, 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: 9413fc
compiled on 04:03:33 Apr 3 2021 with gcc 8.3.1
[centos@sbc-a2 ~]$ cat /etc/os-release
NAME="CentOS Linux"
VERSION="8"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.