[SR-Users] Dispatcher module and xavp_dst

Julien Chavanton jchavanton at gmail.com
Thu Sep 1 15:21:55 CEST 2022


On second thought, the documentation looks accurate to me.

Do you have the latency stats enabled ?

3.26. ds_ping_latency_stats (int)

If yes, the priority values you are using seem a bit low 1ms and 10ms.
If not, the algorithm should behave simply like that :
"The algorithm will load balance using round-robin prioritizing the
gateways with the highest priority. "





On Thu, Sep 1, 2022 at 9:09 AM Julien Chavanton <jchavanton at gmail.com>
wrote:

> Maybe the documentation should be improved, it seems the first bullet
> point should say.
>
> "The algorithm will load balance using round-robin prioritizing the
> gateways with the highest *adjusted* priority. "
>
>
>
> On Thu, Sep 1, 2022 at 9:06 AM Julien Chavanton <jchavanton at gmail.com>
> wrote:
>
>> Hi, did you look at the documentation of  algorithm 13 ?
>>
>> The priority is used in combination with the latency to determine the
>> preferred gateway.
>> Once you confirm that this is what you want "latency latency optimized
>> dispatching", we can help to clarify why and how this may not work as
>> expected.
>>
>>
>> Regards
>>
>>
>> https://kamailio.org/docs/modules/devel/modules/dispatcher.html
>>
>>    -
>>
>>    “13” - latency optimized dispatching
>>
>>    - The algorithm will load balance using round-robin prioritizing the
>>    gateways with the highest priority.
>>
>>    - If ds_ping_latency_stats is active the algorithm will adjust the
>>    priority of the gateway automatically, the priority will be lowered by 1
>>    point every time the latency ms is as high as the priority.
>>
>>    - If the attribute 'cc=1' is set, the latency used is congestion ms :
>>    estimate (current latency ms) - average (normal condition latency ms).
>>
>>    *Example 1.46. latency_optimized_dispatching usage*
>>
>>    Using this simple formula :
>>        ADJUSTED_PRIORITY = PRIORITY - (ESTIMATED_LATENCY_MS/PRIORITY)
>>
>>    GATEWAY | PRIORITY | ESTIMATED | ADJUSTED | LOAD
>>       #    |          |  LATENCY  | PRIORITY | DISTRIBUTION
>>       1    |    30    |    21     |    30    | 33%
>>       2    |    30    |    91     |    27    | 0%
>>       3    |    30    |    61     |    28    | 0%
>>       4    |    30    |    19     |    30    | 33%
>>       5    |    30    |    32     |    29    | 0%
>>       6    |    30    |    0      |    30    | 33%
>>       7    |    30    |    201    |    24    | 0%
>>
>>
>>    With congestion control the formula becomes :
>>        CONGESTION_MS = CURRENT_LATENCY_MS - NORMAL_CONDITION_LATENCY_MS
>>        ADJUSTED_PRIORITY = PRIORITY - (CONGESTION_MS/PRIORITY)
>>
>>
>>    -
>>
>>
>>
>>
>> On Thu, Sep 1, 2022 at 2:38 AM Pyry Aaltonen <pyry.aaltonen at cuuma.com>
>> wrote:
>>
>>> Hello,
>>>
>>>
>>>
>>> I’m quite new user with kamailio (heard first time about it a year ago
>>> and joined the list yesterday) and now wondering how the xavp_dst should
>>> work.
>>>
>>>
>>>
>>> I had read from the documentation that
>>>
>>> ”The first XAVP is the current selected destination.”
>>>
>>>
>>>
>>> I use ds_select_dst with alg 13. And my kamailio version is kamailio
>>> 5.5.3 (x86_64/linux)
>>>
>>>
>>>
>>> So when my dispatcher list is like (I have also tried to differ the
>>> priority value like 10 and 1, but doesn’t make difference)
>>>
>>> 10 sip:1.2.3.4;transport=tcp 10 1 type=type1
>>>
>>> 10 sip:4.3.2.1;transport=tcp 10 1 type=type2
>>>
>>>
>>>
>>> If one of the destinations fails (dx/ip), and it happens to be the one
>>> with higher priority or the one that just gets higher position in the
>>> dispatcher list if the prio Is equal.
>>>
>>> My xavp_$xavp(dsdst=>attrs) get null value. And, if I try to seek
>>> $(xavp(dsdst[0]=>attrs) or $(xavp(dsdst[1]=>attrs) I also got nothing.
>>>
>>>
>>>
>>> If both destinations are up with equal priority, it selects them with
>>> round-robin, and the xavp_$xavp(dsdst=>attrs) has the type value of the
>>> selected destination as expected, also the $(xavp(dsdst[0]=>attrs) or
>>> $(xavp(dsdst[1]=>attrs) contains the destinations so that the selected
>>> is 0 and the other is at position 1.
>>>
>>> The $du is updated as I expect so if one fails the other one is selected
>>> always, why the xavp_dst isn’t working same way, or am I missing something?
>>>
>>>
>>>
>>> If needed I’ll try to provide more information,
>>>
>>> Thanks already in advance
>>>
>>>
>>>
>>> -Pyry
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> __________________________________________________________
>>> Kamailio - Users Mailing List - Non Commercial Discussions
>>>   * sr-users at lists.kamailio.org
>>> Important: keep the mailing list in the recipients, do not reply only to
>>> the sender!
>>> Edit mailing list options or unsubscribe:
>>>   * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20220901/f3a67fdf/attachment.htm>


More information about the sr-users mailing list