Hi Kamailio Community,
When testing rtpengine_manage and websockets, I noticed that if the rtpengine table in the database is not used, a new websocket is created for every call for a given dialog. That is, when an INVITE is received, an offer is sent to rtpengine. When the 200 OK or 18[3|0] is received, an answer is sent. However, the WS identifier often changes and as a result the request is not sent over the same websocket. This is problematic particularly when using FQDNs in the Kamailio configuration.
When a load balancer is used between Kamailio and rtpengine, the answer may arrive at a different rtpengine in the cluster.
After tracing through the source, I could not find a configuration parameter or set of triggers that I could manipulate to fix this. It leads me to believe it is only possible to reuse the websocket when the rtpengine table is used.
Does anybody have more experience than I in this area that may be able to point me in the right direction, making load balancers for rtpengine_manage calls possible?
Hi,
Without wishing to dismiss the salience of your problem: do you actually need WS?
On Dec 6, 2024, at 1:10 pm, Knserbrave via sr-users sr-users@lists.kamailio.org wrote:
Hi Kamailio Community,
When testing rtpengine_manage and websockets, I noticed that if the rtpengine table in the database is not used, a new websocket is created for every call for a given dialog. That is, when an INVITE is received, an offer is sent to rtpengine. When the 200 OK or 18[3|0] is received, an answer is sent. However, the WS identifier often changes and as a result the request is not sent over the same websocket. This is problematic particularly when using FQDNs in the Kamailio configuration.
When a load balancer is used between Kamailio and rtpengine, the answer may arrive at a different rtpengine in the cluster.
After tracing through the source, I could not find a configuration parameter or set of triggers that I could manipulate to fix this. It leads me to believe it is only possible to reuse the websocket when the rtpengine table is used.
Does anybody have more experience than I in this area that may be able to point me in the right direction, making load balancers for rtpengine_manage calls possible? __________________________________________________________ Kamailio - Users Mailing List - Non Commercial Discussions -- sr-users@lists.kamailio.org To unsubscribe send an email to sr-users-leave@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender!
Hello,
so, you are saying that the connection handling behaviour of Kamailio with rtpengine changes, if you are using database mode compared to not using the database?
I’ve might missed some side-effects, but I think that using rtpengine_manage() should not affect the handling of Websocket connection (or in fact any other connection) operation that Kamailio is doing on the SIP level. The rtpengine_manage() should affect the SDP content of the SIP message body only.
Can you reproduce this behaviour?
Cheers,
Henning
-- Henning Westerholt – https://skalatan.de/blog/ Kamailio services – https://gilawa.comhttps://gilawa.com/
From: Knserbrave via sr-users sr-users@lists.kamailio.org Sent: Friday, December 6, 2024 7:11 PM To: Kamailio (SER) - Users Mailing List sr-users@lists.kamailio.org Cc: Knserbrave knserbrave@gmail.com Subject: [SR-Users] WS and rtpengine_manage
Hi Kamailio Community,
When testing rtpengine_manage and websockets, I noticed that if the rtpengine table in the database is not used, a new websocket is created for every call for a given dialog. That is, when an INVITE is received, an offer is sent to rtpengine. When the 200 OK or 18[3|0] is received, an answer is sent. However, the WS identifier often changes and as a result the request is not sent over the same websocket. This is problematic particularly when using FQDNs in the Kamailio configuration.
When a load balancer is used between Kamailio and rtpengine, the answer may arrive at a different rtpengine in the cluster.
After tracing through the source, I could not find a configuration parameter or set of triggers that I could manipulate to fix this. It leads me to believe it is only possible to reuse the websocket when the rtpengine table is used.
Does anybody have more experience than I in this area that may be able to point me in the right direction, making load balancers for rtpengine_manage calls possible?