Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEATURE] RTPEngine pool selection algo #3036

Open
spacetourist opened this issue Mar 17, 2023 · 1 comment · May be fixed by #3563
Open

[FEATURE] RTPEngine pool selection algo #3036

spacetourist opened this issue Mar 17, 2023 · 1 comment · May be fixed by #3563

Comments

@spacetourist
Copy link
Contributor

spacetourist commented Mar 17, 2023

Is your feature request related to a problem? Please describe.

When opensips is handling calls using and external RTPEngine media proxy for SRTP/DTLS traffic (in my situation in front of FreeSWITCH media servers) it is important that the rtp proxy selected in the initial offer continues to be used throughout the call. In the event that a different media proxy is selected the DTLS renegotiation is triggered and this can disrupt and crash the back end media server (exact reasons unknown).

Describe the solution you'd like

When we disable an instance in the pool this instance should continue to be used for any existing call sessions and only new sessions should be ignoring disabled hosts. There maybe a reason for multiple disabled modes to allow flexibility for anyone wishing to immediately disable a node from all activity.

Implementation

Describe alternatives you've considered

Capturing the RTP socket selected after the initial offer, storing to the dialog and forcing all subsequent requests to this node. This is not going to work correctly as the node will be disabled and will likely cause those calls to fail.

Additional context

The current implementation is based on a crude hashing algorithm which assumes no change in the underlying pool, when a change is made all calculations will be affected. Including all the sockets in the pool (enabled and disabled) for every calculation and then checking the disabled flag before final selection (moving on to first enabled socket) will address this issue and impact only those which would have selected the disabled node during initial offer. Adding nodes to the pool will still trigger the issue however.

@github-actions
Copy link

github-actions bot commented Apr 2, 2023

Any updates here? No progress has been made in the last 15 days, marking as stale. Will close this issue if no further updates are made in the next 30 days.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants