← Volver al índice de módulos

dispatcher

This module offers SIP load balancer functionality and it can be used as SIP traffic dispatcher. There are many load balancing and traffic dispatching algorithms that you can choose from, for example:
🔀 Enrutamiento y Proxy SIP Kamailio 6.1 30 parámetros 25 funciones

Descripción general

This module offers SIP load balancer functionality and it can be used as SIP traffic dispatcher. There are many load balancing and traffic dispatching algorithms that you can choose from, for example: round-robin, weight based load balancing, call load distribution, and hashing over SIP message attributes. The module can be used as a stateless load balancer; it does not depend on any call state tracking module. It requires the TM module if you enable auto-discovery of active/inactive gateways. It is very lightweight, therefore suitable for handling heavy SIP traffic. As the module has a small footprint and the ability to load balancing rules from a plain text file, it is suitable for embedded systems.

Documentación oficial: https://www.kamailio.org/docs/modules/stable/modules/dispatcher.html
Código fuente: https://github.com/kamailio/kamailio/tree/master/src/modules/dispatcher

Parámetros de configuración

ParámetroTipoDescripción
list_file string 3.2. db_url (string) 3.3. table_name (string) 3.4. setid_col (string) 3.5. destination_col (string) 3.6. flags_col (string) 3.7. priority_col (string) 3.8. attrs_col (string) 3.9. force_dst (int) 3.10
db_url string 3.3. table_name (string) 3.4. setid_col (string) 3.5. destination_col (string) 3.6. flags_col (string) 3.7. priority_col (string) 3.8. attrs_col (string) 3.9. force_dst (int) 3.10. flags (int) 3.11. u
table_name string 3.4. setid_col (string) 3.5. destination_col (string) 3.6. flags_col (string) 3.7. priority_col (string) 3.8. attrs_col (string) 3.9. force_dst (int) 3.10. flags (int) 3.11. use_default (int) 3.12. xa
setid_col string 3.5. destination_col (string) 3.6. flags_col (string) 3.7. priority_col (string) 3.8. attrs_col (string) 3.9. force_dst (int) 3.10. flags (int) 3.11. use_default (int) 3.12. xavp_dst (str) 3.13. xavp_
destination_col string 3.6. flags_col (string) 3.7. priority_col (string) 3.8. attrs_col (string) 3.9. force_dst (int) 3.10. flags (int) 3.11. use_default (int) 3.12. xavp_dst (str) 3.13. xavp_dst_mode (int) 3.14. xavp_ctx
flags_col string 3.7. priority_col (string) 3.8. attrs_col (string) 3.9. force_dst (int) 3.10. flags (int) 3.11. use_default (int) 3.12. xavp_dst (str) 3.13. xavp_dst_mode (int) 3.14. xavp_ctx (str) 3.15. xavp_ctx_mod
priority_col string 3.8. attrs_col (string) 3.9. force_dst (int) 3.10. flags (int) 3.11. use_default (int) 3.12. xavp_dst (str) 3.13. xavp_dst_mode (int) 3.14. xavp_ctx (str) 3.15. xavp_ctx_mode (int) 3.16. hash_pvar (st
attrs_col string 3.9. force_dst (int) 3.10. flags (int) 3.11. use_default (int) 3.12. xavp_dst (str) 3.13. xavp_dst_mode (int) 3.14. xavp_ctx (str) 3.15. xavp_ctx_mode (int) 3.16. hash_pvar (str) 3.17. setid_pvname (s
force_dst int 3.10. flags (int) 3.11. use_default (int) 3.12. xavp_dst (str) 3.13. xavp_dst_mode (int) 3.14. xavp_ctx (str) 3.15. xavp_ctx_mode (int) 3.16. hash_pvar (str) 3.17. setid_pvname (str) 3.18. attrs_pvnam
flags int 3.11. use_default (int) 3.12. xavp_dst (str) 3.13. xavp_dst_mode (int) 3.14. xavp_ctx (str) 3.15. xavp_ctx_mode (int) 3.16. hash_pvar (str) 3.17. setid_pvname (str) 3.18. attrs_pvname (str) 3.19. ds_p
use_default int 3.12. xavp_dst (str) 3.13. xavp_dst_mode (int) 3.14. xavp_ctx (str) 3.15. xavp_ctx_mode (int) 3.16. hash_pvar (str) 3.17. setid_pvname (str) 3.18. attrs_pvname (str) 3.19. ds_ping_method (string) 3.20
xavp_dst str 3.13. xavp_dst_mode (int) 3.14. xavp_ctx (str) 3.15. xavp_ctx_mode (int) 3.16. hash_pvar (str) 3.17. setid_pvname (str) 3.18. attrs_pvname (str) 3.19. ds_ping_method (string) 3.20. ds_ping_from (strin
xavp_dst_mode int 3.14. xavp_ctx (str) 3.15. xavp_ctx_mode (int) 3.16. hash_pvar (str) 3.17. setid_pvname (str) 3.18. attrs_pvname (str) 3.19. ds_ping_method (string) 3.20. ds_ping_from (string) 3.21. ds_ping_interval
xavp_ctx str 3.15. xavp_ctx_mode (int) 3.16. hash_pvar (str) 3.17. setid_pvname (str) 3.18. attrs_pvname (str) 3.19. ds_ping_method (string) 3.20. ds_ping_from (string) 3.21. ds_ping_interval (int) 3.22. ds_ping_f
xavp_ctx_mode int 3.16. hash_pvar (str) 3.17. setid_pvname (str) 3.18. attrs_pvname (str) 3.19. ds_ping_method (string) 3.20. ds_ping_from (string) 3.21. ds_ping_interval (int) 3.22. ds_ping_fr_timer (int) 3.23. ds_pro
hash_pvar str 3.17. setid_pvname (str) 3.18. attrs_pvname (str) 3.19. ds_ping_method (string) 3.20. ds_ping_from (string) 3.21. ds_ping_interval (int) 3.22. ds_ping_fr_timer (int) 3.23. ds_probing_threshold (int) 3
setid_pvname str 3.18. attrs_pvname (str) 3.19. ds_ping_method (string) 3.20. ds_ping_from (string) 3.21. ds_ping_interval (int) 3.22. ds_ping_fr_timer (int) 3.23. ds_probing_threshold (int) 3.24. ds_inactive_threshol
attrs_pvname str 3.19. ds_ping_method (string) 3.20. ds_ping_from (string) 3.21. ds_ping_interval (int) 3.22. ds_ping_fr_timer (int) 3.23. ds_probing_threshold (int) 3.24. ds_inactive_threshold (int) 3.25. ds_ping_rep
ds_ping_method string 3.20. ds_ping_from (string) 3.21. ds_ping_interval (int) 3.22. ds_ping_fr_timer (int) 3.23. ds_probing_threshold (int) 3.24. ds_inactive_threshold (int) 3.25. ds_ping_reply_codes (string) 3.26. ds_pro
ds_ping_from string 3.21. ds_ping_interval (int) 3.22. ds_ping_fr_timer (int) 3.23. ds_probing_threshold (int) 3.24. ds_inactive_threshold (int) 3.25. ds_ping_reply_codes (string) 3.26. ds_probing_mode (int) 3.27. ds_pin
ds_ping_interval int 3.22. ds_ping_fr_timer (int) 3.23. ds_probing_threshold (int) 3.24. ds_inactive_threshold (int) 3.25. ds_ping_reply_codes (string) 3.26. ds_probing_mode (int) 3.27. ds_ping_latency_stats (int) 3.28. d
ds_ping_fr_timer int 3.23. ds_probing_threshold (int) 3.24. ds_inactive_threshold (int) 3.25. ds_ping_reply_codes (string) 3.26. ds_probing_mode (int) 3.27. ds_ping_latency_stats (int) 3.28. ds_retain_latency_stats (int)
ds_probing_threshold int 3.24. ds_inactive_threshold (int) 3.25. ds_ping_reply_codes (string) 3.26. ds_probing_mode (int) 3.27. ds_ping_latency_stats (int) 3.28. ds_retain_latency_stats (int) 3.29. ds_latency_estimator_alpha
ds_inactive_threshold int 3.25. ds_ping_reply_codes (string) 3.26. ds_probing_mode (int) 3.27. ds_ping_latency_stats (int) 3.28. ds_retain_latency_stats (int) 3.29. ds_latency_estimator_alpha (int) 3.30. ds_hash_size (int) 3.3
ds_ping_reply_codes string 3.26. ds_probing_mode (int) 3.27. ds_ping_latency_stats (int) 3.28. ds_retain_latency_stats (int) 3.29. ds_latency_estimator_alpha (int) 3.30. ds_hash_size (int) 3.31. ds_hash_expire (int) 3.32. ds_ha
ds_probing_mode int 3.27. ds_ping_latency_stats (int) 3.28. ds_retain_latency_stats (int) 3.29. ds_latency_estimator_alpha (int) 3.30. ds_hash_size (int) 3.31. ds_hash_expire (int) 3.32. ds_hash_initexpire (int) 3.33. ds
ds_ping_latency_stats int 3.28. ds_retain_latency_stats (int) 3.29. ds_latency_estimator_alpha (int) 3.30. ds_hash_size (int) 3.31. ds_hash_expire (int) 3.32. ds_hash_initexpire (int) 3.33. ds_hash_check_interval (int) 3.34. o
ds_retain_latency_stats int 3.29. ds_latency_estimator_alpha (int) 3.30. ds_hash_size (int) 3.31. ds_hash_expire (int) 3.32. ds_hash_initexpire (int) 3.33. ds_hash_check_interval (int) 3.34. outbound_proxy (str) 3.35. ds_default
ds_latency_estimator_alpha int 3.30. ds_hash_size (int) 3.31. ds_hash_expire (int) 3.32. ds_hash_initexpire (int) 3.33. ds_hash_check_interval (int) 3.34. outbound_proxy (str) 3.35. ds_default_socket (str) 3.36. ds_default_sockname
ds_hash_size int 3.31. ds_hash_expire (int) 3.32. ds_hash_initexpire (int) 3.33. ds_hash_check_interval (int) 3.34. outbound_proxy (str) 3.35. ds_default_socket (str) 3.36. ds_default_sockname (str) 3.37. ds_ping_sock

Funciones exportadas

ds_select_dst(set, alg[, limit])

4.2. ds_select_domain(set, alg[, limit]) 4.3. ds_select(set, alg [, limit]) 4.4. ds_select_routes(rules, mode [, limit]) 4.5. ds_next_dst() 4.6. ds_next_domain() 4.7. ds_set_dst() 4.8. ds_set_domain() 4.9. ds_mark_dst([state]) 4.10. ds_mark_addr(stat

ds_select_domain(set, alg[, limit])

4.3. ds_select(set, alg [, limit]) 4.4. ds_select_routes(rules, mode [, limit]) 4.5. ds_next_dst() 4.6. ds_next_domain() 4.7. ds_set_dst() 4.8. ds_set_domain() 4.9. ds_mark_dst([state]) 4.10. ds_mark_addr(state, setid, uri) 4.11. ds_list_exists(group

ds_select(set, alg [, limit])

4.4. ds_select_routes(rules, mode [, limit]) 4.5. ds_next_dst() 4.6. ds_next_domain() 4.7. ds_set_dst() 4.8. ds_set_domain() 4.9. ds_mark_dst([state]) 4.10. ds_mark_addr(state, setid, uri) 4.11. ds_list_exists(groupid) 4.12. ds_is_from_list([groupid

ds_select_routes(rules, mode [, limit])

4.5. ds_next_dst() 4.6. ds_next_domain() 4.7. ds_set_dst() 4.8. ds_set_domain() 4.9. ds_mark_dst([state]) 4.10. ds_mark_addr(state, setid, uri) 4.11. ds_list_exists(groupid) 4.12. ds_is_from_list([groupid [, mode [, uri] ] ]) 4.13. ds_is_active(group

ds_next_dst()

4.6. ds_next_domain() 4.7. ds_set_dst() 4.8. ds_set_domain() 4.9. ds_mark_dst([state]) 4.10. ds_mark_addr(state, setid, uri) 4.11. ds_list_exists(groupid) 4.12. ds_is_from_list([groupid [, mode [, uri] ] ]) 4.13. ds_is_active(groupid [, uri]) 4.14. d

ds_next_domain()

4.7. ds_set_dst() 4.8. ds_set_domain() 4.9. ds_mark_dst([state]) 4.10. ds_mark_addr(state, setid, uri) 4.11. ds_list_exists(groupid) 4.12. ds_is_from_list([groupid [, mode [, uri] ] ]) 4.13. ds_is_active(groupid [, uri]) 4.14. ds_load_update() 4.15.

ds_set_dst()

4.8. ds_set_domain() 4.9. ds_mark_dst([state]) 4.10. ds_mark_addr(state, setid, uri) 4.11. ds_list_exists(groupid) 4.12. ds_is_from_list([groupid [, mode [, uri] ] ]) 4.13. ds_is_active(groupid [, uri]) 4.14. ds_load_update() 4.15. ds_load_unset() 4.

ds_set_domain()

4.9. ds_mark_dst([state]) 4.10. ds_mark_addr(state, setid, uri) 4.11. ds_list_exists(groupid) 4.12. ds_is_from_list([groupid [, mode [, uri] ] ]) 4.13. ds_is_active(groupid [, uri]) 4.14. ds_load_update() 4.15. ds_load_unset() 4.16. ds_reload() 4.17.

ds_mark_dst([state])

4.10. ds_mark_addr(state, setid, uri) 4.11. ds_list_exists(groupid) 4.12. ds_is_from_list([groupid [, mode [, uri] ] ]) 4.13. ds_is_active(groupid [, uri]) 4.14. ds_load_update() 4.15. ds_load_unset() 4.16. ds_reload() 4.17. ds_dsg_fetch(setid) 4.18.

ds_mark_addr(state, setid, uri)

4.11. ds_list_exists(groupid) 4.12. ds_is_from_list([groupid [, mode [, uri] ] ]) 4.13. ds_is_active(groupid [, uri]) 4.14. ds_load_update() 4.15. ds_load_unset() 4.16. ds_reload() 4.17. ds_dsg_fetch(setid) 4.18. ds_dsg_fetch_uri(setid, uri) 4.19. ds

ds_list_exists(groupid)

4.12. ds_is_from_list([groupid [, mode [, uri] ] ]) 4.13. ds_is_active(groupid [, uri]) 4.14. ds_load_update() 4.15. ds_load_unset() 4.16. ds_reload() 4.17. ds_dsg_fetch(setid) 4.18. ds_dsg_fetch_uri(setid, uri) 4.19. ds_oc_set_attrs(setid, uri, rval

ds_is_from_list([groupid [, mode [, uri] ] ])

4.13. ds_is_active(groupid [, uri]) 4.14. ds_load_update() 4.15. ds_load_unset() 4.16. ds_reload() 4.17. ds_dsg_fetch(setid) 4.18. ds_dsg_fetch_uri(setid, uri) 4.19. ds_oc_set_attrs(setid, uri, rval, tval, sval)

ds_is_active(groupid [, uri])

4.14. ds_load_update() 4.15. ds_load_unset() 4.16. ds_reload() 4.17. ds_dsg_fetch(setid) 4.18. ds_dsg_fetch_uri(setid, uri) 4.19. ds_oc_set_attrs(setid, uri, rval, tval, sval)

ds_load_update()

4.15. ds_load_unset() 4.16. ds_reload() 4.17. ds_dsg_fetch(setid) 4.18. ds_dsg_fetch_uri(setid, uri) 4.19. ds_oc_set_attrs(setid, uri, rval, tval, sval)

ds_load_unset()

4.16. ds_reload() 4.17. ds_dsg_fetch(setid) 4.18. ds_dsg_fetch_uri(setid, uri) 4.19. ds_oc_set_attrs(setid, uri, rval, tval, sval)

ds_reload()

4.17. ds_dsg_fetch(setid) 4.18. ds_dsg_fetch_uri(setid, uri) 4.19. ds_oc_set_attrs(setid, uri, rval, tval, sval)

ds_dsg_fetch(setid)

4.18. ds_dsg_fetch_uri(setid, uri) 4.19. ds_oc_set_attrs(setid, uri, rval, tval, sval)

ds_dsg_fetch_uri(setid, uri)

4.19. ds_oc_set_attrs(setid, uri, rval, tval, sval)

ds_oc_set_attrs(setid, uri, rval, tval, sval)

4.1. ds_select_dst(set, alg[, limit])

ds_select_dst(set, alg[, limit])

The method selects a destination from addresses set. It returns true if a new destination is set. The selected address is set to dst_uri field (aka the outbound proxy address or the $du variable), not being visible in the SIP request.

ds_select_domain(set, alg[, limit])

The method selects a destination from addresses set and rewrites the host and port from R-URI. The parameters have same meaning as for ds_select_dst().

ds_select(set, alg [, limit])

The method selects a destination from addresses set and adds it in the XAVP specified for this module. It is not updating R-URI nor the destination URI. The parameters have same meaning as for ds_select_dst().

ds_select_routes(rules, mode [, limit])

The method selects destinations following the rules combining groups add algorithms, controlling where the first destination address is pushed, and optionally setting a limit of selected addresses.

ds_next_dst()

Takes the next destination address from the corresponding XAVPs and sets the dst_uri (outbound proxy address).

ds_next_domain()

Takes the next destination address from the corresponding XAVPs and sets the domain part of the request URI.

Autores y contribuidores

Daniel-Constantin Mierla <miconda@gmail.com>Carsten BockOlle E. JohanssonEdvina ABAlessandro ArrichielloHewlett PackardLuis MartinJulien Chavanton <jchavanton@gmail.com>Federico Cabiddu <federico.cabiddu@gmail.com>Tyler Moore <tmoore@dopensource.com>

Copyright © 2004 FhG FOKUS
Copyright © 2005 Voice Sistem
Copyright © 2010 Daniel-Constantin Mierla (asipto.com)
Copyright © 2014 Olle E. Johansson, Edvina AB
Copyright © 2015 Alessandro Arrichiello, Hewlett Packard
Copyright © 2017, 2018 Julien chavanton, Flowroute
Copyright © 2020 Federico Cabiddu, Libon
Copyright © 2025 Tyler Moore, dOpenSource

Módulos relacionados

acc acc_diameter acc_json acc_radius alias_db app_jsdt carrierroute cfgt