About The Algorithm “13” - latency optimized dispatching,
Is now reviewed once and tested, it will most likely be ready to merge soon.
I want to share my thoughts on it one more time as it is not too late to get more feedback before we merge.
I think it is the best algorithm in most use cases, here is why :
It is providing round-robin and fail-over with automatic de-prioritization of slow/unresponsive gateways.
You probably asked yourself the following questions in the past : "How do I set the thresholds to put a gateway out of service ?"
*ds_probing_threshold*, *ds_inactive_threshold* and timers ...
- If your thresholds are too strict, you may end up running out of gateway. - If your thresholds are too tolerant, you may end up adding excessive delays to call establishment and using degraded gateways.
The automatic de-prioritization can help to address this concern more efficiently by providing more flexibility.
- it can react faster than lets say 2 consecutive timeouts. - it will not disable gateways but simply de-prioritize / reorder them if needed.
The only main drawback I can imagine is when you always need to evenly distribute calls using round-robin. It may be needed sometimes but in this case it means you are willing accept to send calls to a degraded gateway or trough degraded network paths.
Even if you may select to preset a mixture of round-robin sets, thanks to *ds_select_routes* however it will stay static, needs to be configured precisely, and will not react to degradation automatically.
I hope this will help use to protect QoS and lower latency of calls routed by Kamailio.
Feel free to let me know what you think Julien