Thanks again for the reply.
Im more concerned with rebalancing than draining; that was just another issue i was
concerned about but its good to see i can solve that aspect.
I will look more closely at keydb (thanks for the heads-up) but will that work with
encrypted media? My understanding was that another rtpengine could not reliably take over
an encrypted session as there is no mechanism for sharing the DTLS handshake/connection.
Blessings,
--
Daniel
________________________________
From: Henning Westerholt <hw(a)gilawa.com>
Sent: Monday, September 16, 2024 11:43 AM
To: Kamailio (SER) - Users Mailing List <sr-users(a)lists.kamailio.org>
Cc: Daniel Donoghue <oneofsomany(a)hotmail.com>
Subject: RE: rtpengine module
Hello Daniel,
there are RPC commands to easily drain a rtpengine node, there is no need for fancy
re-INVITE sending logic etc.. Have also a look to the “rtpengine_allow_op” parameter.
Regarding the keydb, I think you did not look much into it. It’s a clustered redis
basically, without the need for key space notifications and the like. You can have even
master-master replication. It has some maintenance issues, though, but people are using
it. Its supported from rtpengine.
Cheers,
Henning
From: Daniel Donoghue via sr-users <sr-users(a)lists.kamailio.org>
Sent: Montag, 16. September 2024 11:09
To: Kamailio (SER) - Users Mailing List <sr-users(a)lists.kamailio.org>
Cc: Daniel Donoghue <oneofsomany(a)hotmail.com>
Subject: [SR-Users] Re: rtpengine module
Hi Henning, thank you for your reply.
The problem I see with using a b2bua for sending the reinvite is that kamailio selects the
rtpengine node for the offer and answer to both parties involved in the call because it,
and rtpengine, sit in the middle. As such, one b2bua telling the other it is changing its
media stream location is only relevant to rtpengine which means the other party shouldnt
get new media information. The b2bua can only change its own local session setup.
This idea might work, i suppose, if the rtpengine in question is actually down and
kamailio has detected it as being down but it does not work in cases where i want to
rebalance calls across multiple rtpengine nodes or move a call to another node for
debugging purposes or simply to drain a node ready to shut it down.
As i understand it, keydb is redis compatible which indicates it works the same way as
rtpengine's current redis functionality which i dont think will do what i want as i
dont believe it can share tls encrypted rtp sessions across nodes and has a noisy,
keyspace notifications and 1 database per node, pre defined. This is not a workable
solution for us.
opensips has an rtp_relay module specifically for this purpose:
https://blog.opensips.org/2021/06/09/media-re-anchoring-using-opensips-3-2/.
Blessings,
--
Daniel
________________________________
From: Henning Westerholt <hw@gilawa.com<mailto:hw@gilawa.com>>
Sent: Monday, September 16, 2024 10:49 AM
To: Kamailio (SER) - Users Mailing List
<sr-users@lists.kamailio.org<mailto:sr-users@lists.kamailio.org>>
Cc: Daniel Donoghue <oneofsomany@hotmail.com<mailto:oneofsomany@hotmail.com>>
Subject: RE: rtpengine module
Hello,
Kamailio does not provide B2BUA functionality which would be needed for this to work.
There are some modules that implement some functionality in this area, like the
rtp_media_server module, you can have a look there. Have a look at this old discussion for
more details:
https://sr-users.sip-router.narkive.com/BWdc8gsd/kamailio-users-re-invite-m…
If you want to do a re-invite on a call, usually you should rely on a B2BUA component in
your architecture.
As you are having issues scaling rtpengine, maybe it makes sense to concentrate on this
topic. Some people are using something like keydb which provides an easier scaling for
this particular NoSQL storage.
Cheers,
Henning
--
Henning Westerholt –
https://skalatan.de/blog/
Kamailio services –
https://gilawa.com<https://gilawa.com/>
From: Daniel Donoghue via sr-users
<sr-users@lists.kamailio.org<mailto:sr-users@lists.kamailio.org>>
Sent: Montag, 16. September 2024 09:36
To: sr-users@lists.kamailio.org<mailto:sr-users@lists.kamailio.org>
Cc: Daniel Donoghue <oneofsomany@hotmail.com<mailto:oneofsomany@hotmail.com>>
Subject: [SR-Users] rtpengine module
Hello,
I am using rtpengine to encrypt and decrypt DTLS and SDES audio streams for my calls. I
have a set of rtpengine instances running, configured using a database, such that it is
easy to scale up on demand. This works well for initiating a call and balancing load
across multiple instances but I want to be able to recover from rtpengine failure.
I have looked at configuring rtpengine with a redis service but do not believe that to be
helpful in this case as im using encrypted media and because the configuration of
rtpengine with redis has a lot of overheads, limits scaling and requires non standard
configuration of a redis cluster.
I would like to be able to re-anchor media streams instead of relying on rtpengine to
synchronise itself across a redis cluster. For this to work, i believe i would have to use
the uac module to send a reINVITE and I speculate that i would need to use an xhttp event
to trigger this remotely when a failure is detected.
I am unclear, though, how to get to a specific call within kamailio from the xhttp route
in order to do anything to it, if i even need to, and i am nuclear how to make the
rtpengine module select a new node for sdp for the reinvite?
How can i achieve my goal?
Perhaps it would be possible to modify the rtpengine module itself to support generating a
reinvite and selecting a new node on receipt of an rpc request?
Hoping someone can help me find a way forward
With every blessing,
Daniel