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