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
_______________________________________________