← Volver al índice de módulos

tm

The TM module enables stateful processing of SIP transactions. Stateful logic is costly in terms of memory and CPU.
🔀 Enrutamiento y Proxy SIP Kamailio 6.1 30 parámetros 25 funciones

Descripción general

The TM module enables stateful processing of SIP transactions. Stateful logic is costly in terms of memory and CPU. The main use is services that inherently need state. For example, transaction-based accounting (module acc) needs to process transaction state as opposed to individual messages. Any kind of forking must be implemented transaction statefully. By using transaction states you trade CPU caused by retransmission processing for memory. That only makes sense if CPU consumption per request is huge. For example, if you want to avoid costly DNS resolution for every retransmission of a request to an unresolvable destination, use stateful mode. Then, only the initial message burdens server by DNS queries, subsequent retransmissions will be dropped and will not result in more processes blocked by DNS resolution. The price is more memory consumption and higher processing latency. From the admin's perspective, these are the major functions : t_relay, t_relay_to_udp and t_relay_to_tcp. All of them set up transaction state, absorb retransmissions from upstream, generate downstream retransmissions and correlate replies to requests. t_relay forwards to current URI (be it original request's URI or a URI changed by some of URI-modifying functions, such as sethost). t_relay_to_udp and t_relay_to_tcp forward to a specific address over UDP or TCP respectively. In general, if TM is used, it copies clones of received SIP messages in shared memory. That costs memory and also CPU time (mem

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

Parámetros de configuración

ParámetroTipoDescripción
fr_timer integer 3.2. fr_inv_timer (integer) 3.3. max_inv_lifetime (integer) 3.4. max_noninv_lifetime (integer) 3.5. wt_timer (integer) 3.6. retr_timer1 (integer) 3.7. retr_timer2 (integer) 3.8. noisy_ctimer (integer)
fr_inv_timer integer 3.3. max_inv_lifetime (integer) 3.4. max_noninv_lifetime (integer) 3.5. wt_timer (integer) 3.6. retr_timer1 (integer) 3.7. retr_timer2 (integer) 3.8. noisy_ctimer (integer) 3.9. restart_fr_on_each_rep
max_inv_lifetime integer 3.4. max_noninv_lifetime (integer) 3.5. wt_timer (integer) 3.6. retr_timer1 (integer) 3.7. retr_timer2 (integer) 3.8. noisy_ctimer (integer) 3.9. restart_fr_on_each_reply (integer) 3.10. auto_inv_100
max_noninv_lifetime integer 3.5. wt_timer (integer) 3.6. retr_timer1 (integer) 3.7. retr_timer2 (integer) 3.8. noisy_ctimer (integer) 3.9. restart_fr_on_each_reply (integer) 3.10. auto_inv_100 (integer) 3.11. auto_inv_100_reason
wt_timer integer 3.6. retr_timer1 (integer) 3.7. retr_timer2 (integer) 3.8. noisy_ctimer (integer) 3.9. restart_fr_on_each_reply (integer) 3.10. auto_inv_100 (integer) 3.11. auto_inv_100_reason (string) 3.12. unix_tx_
retr_timer1 integer 3.7. retr_timer2 (integer) 3.8. noisy_ctimer (integer) 3.9. restart_fr_on_each_reply (integer) 3.10. auto_inv_100 (integer) 3.11. auto_inv_100_reason (string) 3.12. unix_tx_timeout (integer) 3.13. agg
retr_timer2 integer 3.8. noisy_ctimer (integer) 3.9. restart_fr_on_each_reply (integer) 3.10. auto_inv_100 (integer) 3.11. auto_inv_100_reason (string) 3.12. unix_tx_timeout (integer) 3.13. aggregate_challenges (integer)
noisy_ctimer integer 3.9. restart_fr_on_each_reply (integer) 3.10. auto_inv_100 (integer) 3.11. auto_inv_100_reason (string) 3.12. unix_tx_timeout (integer) 3.13. aggregate_challenges (integer) 3.14. reparse_invite (integ
restart_fr_on_each_reply integer 3.10. auto_inv_100 (integer) 3.11. auto_inv_100_reason (string) 3.12. unix_tx_timeout (integer) 3.13. aggregate_challenges (integer) 3.14. reparse_invite (integer) 3.15. ac_extra_hdrs (string) 3.16. b
auto_inv_100 integer 3.11. auto_inv_100_reason (string) 3.12. unix_tx_timeout (integer) 3.13. aggregate_challenges (integer) 3.14. reparse_invite (integer) 3.15. ac_extra_hdrs (string) 3.16. blst_503 (integer) 3.17. blst_
auto_inv_100_reason string 3.12. unix_tx_timeout (integer) 3.13. aggregate_challenges (integer) 3.14. reparse_invite (integer) 3.15. ac_extra_hdrs (string) 3.16. blst_503 (integer) 3.17. blst_503_def_timeout (integer) 3.18. bls
unix_tx_timeout integer 3.13. aggregate_challenges (integer) 3.14. reparse_invite (integer) 3.15. ac_extra_hdrs (string) 3.16. blst_503 (integer) 3.17. blst_503_def_timeout (integer) 3.18. blst_503_min_timeout (integer) 3.19
aggregate_challenges integer 3.14. reparse_invite (integer) 3.15. ac_extra_hdrs (string) 3.16. blst_503 (integer) 3.17. blst_503_def_timeout (integer) 3.18. blst_503_min_timeout (integer) 3.19. blst_503_max_timeout (integer) 3.20
reparse_invite integer 3.15. ac_extra_hdrs (string) 3.16. blst_503 (integer) 3.17. blst_503_def_timeout (integer) 3.18. blst_503_min_timeout (integer) 3.19. blst_503_max_timeout (integer) 3.20. blst_methods_add (unsigned in
ac_extra_hdrs string 3.16. blst_503 (integer) 3.17. blst_503_def_timeout (integer) 3.18. blst_503_min_timeout (integer) 3.19. blst_503_max_timeout (integer) 3.20. blst_methods_add (unsigned integer) 3.21. blst_methods_loo
blst_503 integer 3.17. blst_503_def_timeout (integer) 3.18. blst_503_min_timeout (integer) 3.19. blst_503_max_timeout (integer) 3.20. blst_methods_add (unsigned integer) 3.21. blst_methods_lookup (unsigned integer) 3.
blst_503_def_timeout integer 3.18. blst_503_min_timeout (integer) 3.19. blst_503_max_timeout (integer) 3.20. blst_methods_add (unsigned integer) 3.21. blst_methods_lookup (unsigned integer) 3.22. cancel_b_method (integer) 3.23. r
blst_503_min_timeout integer 3.19. blst_503_max_timeout (integer) 3.20. blst_methods_add (unsigned integer) 3.21. blst_methods_lookup (unsigned integer) 3.22. cancel_b_method (integer) 3.23. reparse_on_dns_failover (integer) 3.24
blst_503_max_timeout integer 3.20. blst_methods_add (unsigned integer) 3.21. blst_methods_lookup (unsigned integer) 3.22. cancel_b_method (integer) 3.23. reparse_on_dns_failover (integer) 3.24. on_sl_reply (string) 3.25. contacts
cancel_b_method integer 3.23. reparse_on_dns_failover (integer) 3.24. on_sl_reply (string) 3.25. contacts_avp (string) 3.26. contact_flows_avp (string) 3.27. fr_timer_avp (string) 3.28. fr_inv_timer_avp (string) 3.29. unmatc
reparse_on_dns_failover integer 3.24. on_sl_reply (string) 3.25. contacts_avp (string) 3.26. contact_flows_avp (string) 3.27. fr_timer_avp (string) 3.28. fr_inv_timer_avp (string) 3.29. unmatched_cancel (integer) 3.30. ruri_matching
on_sl_reply string 3.25. contacts_avp (string) 3.26. contact_flows_avp (string) 3.27. fr_timer_avp (string) 3.28. fr_inv_timer_avp (string) 3.29. unmatched_cancel (integer) 3.30. ruri_matching (integer) 3.31. via1_match
contacts_avp string 3.26. contact_flows_avp (string) 3.27. fr_timer_avp (string) 3.28. fr_inv_timer_avp (string) 3.29. unmatched_cancel (integer) 3.30. ruri_matching (integer) 3.31. via1_matching (integer) 3.32. callid_m
contact_flows_avp string 3.27. fr_timer_avp (string) 3.28. fr_inv_timer_avp (string) 3.29. unmatched_cancel (integer) 3.30. ruri_matching (integer) 3.31. via1_matching (integer) 3.32. callid_matching (integer) 3.33. callid_cs
fr_timer_avp string 3.28. fr_inv_timer_avp (string) 3.29. unmatched_cancel (integer) 3.30. ruri_matching (integer) 3.31. via1_matching (integer) 3.32. callid_matching (integer) 3.33. callid_cseq_matching (int) 3.34. pass
fr_inv_timer_avp string 3.29. unmatched_cancel (integer) 3.30. ruri_matching (integer) 3.31. via1_matching (integer) 3.32. callid_matching (integer) 3.33. callid_cseq_matching (int) 3.34. pass_provisional_replies (integer) 3
unmatched_cancel integer 3.30. ruri_matching (integer) 3.31. via1_matching (integer) 3.32. callid_matching (integer) 3.33. callid_cseq_matching (int) 3.34. pass_provisional_replies (integer) 3.35. default_code (integer) 3.36.
ruri_matching integer 3.31. via1_matching (integer) 3.32. callid_matching (integer) 3.33. callid_cseq_matching (int) 3.34. pass_provisional_replies (integer) 3.35. default_code (integer) 3.36. default_reason (string) 3.37.
via1_matching integer 3.32. callid_matching (integer) 3.33. callid_cseq_matching (int) 3.34. pass_provisional_replies (integer) 3.35. default_code (integer) 3.36. default_reason (string) 3.37. disable_6xx_block (integer) 3
callid_matching integer 3.33. callid_cseq_matching (int) 3.34. pass_provisional_replies (integer) 3.35. default_code (integer) 3.36. default_reason (string) 3.37. disable_6xx_block (integer) 3.38. local_ack_mode (integer) 3.

Funciones exportadas

t_relay([host, port])

4.2. t_relay_to_udp([ip, port]) 4.3. t_relay_to_tcp([ip, port]) 4.4. t_relay_to_tls([ip, port]) 4.5. t_relay_to_sctp([ip, port]) 4.6. t_on_failure(failure_route) 4.7. t_on_branch_failure(branch_failure_route) 4.8. t_on_reply(onreply_route) 4.9. t_on_

t_relay_to_udp([ip, port])

4.3. t_relay_to_tcp([ip, port]) 4.4. t_relay_to_tls([ip, port]) 4.5. t_relay_to_sctp([ip, port]) 4.6. t_on_failure(failure_route) 4.7. t_on_branch_failure(branch_failure_route) 4.8. t_on_reply(onreply_route) 4.9. t_on_branch(branch_route) 4.10. t_new

t_relay_to_tcp([ip, port])

4.4. t_relay_to_tls([ip, port]) 4.5. t_relay_to_sctp([ip, port]) 4.6. t_on_failure(failure_route) 4.7. t_on_branch_failure(branch_failure_route) 4.8. t_on_reply(onreply_route) 4.9. t_on_branch(branch_route) 4.10. t_newtran() 4.11. t_reply(code, reaso

t_relay_to_tls([ip, port])

4.5. t_relay_to_sctp([ip, port]) 4.6. t_on_failure(failure_route) 4.7. t_on_branch_failure(branch_failure_route) 4.8. t_on_reply(onreply_route) 4.9. t_on_branch(branch_route) 4.10. t_newtran() 4.11. t_reply(code, reason_phrase) 4.12. t_reply_error()

t_relay_to_sctp([ip, port])

4.6. t_on_failure(failure_route) 4.7. t_on_branch_failure(branch_failure_route) 4.8. t_on_reply(onreply_route) 4.9. t_on_branch(branch_route) 4.10. t_newtran() 4.11. t_reply(code, reason_phrase) 4.12. t_reply_error() 4.13. t_send_reply(code, reason)

t_on_failure(failure_route)

4.7. t_on_branch_failure(branch_failure_route) 4.8. t_on_reply(onreply_route) 4.9. t_on_branch(branch_route) 4.10. t_newtran() 4.11. t_reply(code, reason_phrase) 4.12. t_reply_error() 4.13. t_send_reply(code, reason) 4.14. t_lookup_request() 4.15. t_

t_on_branch_failure(branch_failure_route)

4.8. t_on_reply(onreply_route) 4.9. t_on_branch(branch_route) 4.10. t_newtran() 4.11. t_reply(code, reason_phrase) 4.12. t_reply_error() 4.13. t_send_reply(code, reason) 4.14. t_lookup_request() 4.15. t_retransmit_reply() 4.16. t_release() 4.17. t_fo

t_on_reply(onreply_route)

4.9. t_on_branch(branch_route) 4.10. t_newtran() 4.11. t_reply(code, reason_phrase) 4.12. t_reply_error() 4.13. t_send_reply(code, reason) 4.14. t_lookup_request() 4.15. t_retransmit_reply() 4.16. t_release() 4.17. t_forward_nonack([ip, port]) 4.18.

t_on_branch(branch_route)

4.10. t_newtran() 4.11. t_reply(code, reason_phrase) 4.12. t_reply_error() 4.13. t_send_reply(code, reason) 4.14. t_lookup_request() 4.15. t_retransmit_reply() 4.16. t_release() 4.17. t_forward_nonack([ip, port]) 4.18. t_forward_nonack_udp(ip, port)

t_newtran()

4.11. t_reply(code, reason_phrase) 4.12. t_reply_error() 4.13. t_send_reply(code, reason) 4.14. t_lookup_request() 4.15. t_retransmit_reply() 4.16. t_release() 4.17. t_forward_nonack([ip, port]) 4.18. t_forward_nonack_udp(ip, port) 4.19. t_forward_no

t_reply(code, reason_phrase)

4.12. t_reply_error() 4.13. t_send_reply(code, reason) 4.14. t_lookup_request() 4.15. t_retransmit_reply() 4.16. t_release() 4.17. t_forward_nonack([ip, port]) 4.18. t_forward_nonack_udp(ip, port) 4.19. t_forward_nonack_tcp(ip, port) 4.20. t_forward_

t_reply_error()

4.13. t_send_reply(code, reason) 4.14. t_lookup_request() 4.15. t_retransmit_reply() 4.16. t_release() 4.17. t_forward_nonack([ip, port]) 4.18. t_forward_nonack_udp(ip, port) 4.19. t_forward_nonack_tcp(ip, port) 4.20. t_forward_nonack_tls(ip, port) 4

t_send_reply(code, reason)

4.14. t_lookup_request() 4.15. t_retransmit_reply() 4.16. t_release() 4.17. t_forward_nonack([ip, port]) 4.18. t_forward_nonack_udp(ip, port) 4.19. t_forward_nonack_tcp(ip, port) 4.20. t_forward_nonack_tls(ip, port) 4.21. t_forward_nonack_sctp(ip, po

t_lookup_request()

4.15. t_retransmit_reply() 4.16. t_release() 4.17. t_forward_nonack([ip, port]) 4.18. t_forward_nonack_udp(ip, port) 4.19. t_forward_nonack_tcp(ip, port) 4.20. t_forward_nonack_tls(ip, port) 4.21. t_forward_nonack_sctp(ip, port) 4.22. t_set_fr(fr_inv

t_retransmit_reply()

4.16. t_release() 4.17. t_forward_nonack([ip, port]) 4.18. t_forward_nonack_udp(ip, port) 4.19. t_forward_nonack_tcp(ip, port) 4.20. t_forward_nonack_tls(ip, port) 4.21. t_forward_nonack_sctp(ip, port) 4.22. t_set_fr(fr_inv_timeout [, fr_timeout]) 4.

t_release()

4.17. t_forward_nonack([ip, port]) 4.18. t_forward_nonack_udp(ip, port) 4.19. t_forward_nonack_tcp(ip, port) 4.20. t_forward_nonack_tls(ip, port) 4.21. t_forward_nonack_sctp(ip, port) 4.22. t_set_fr(fr_inv_timeout [, fr_timeout]) 4.23. t_reset_fr() 4

t_forward_nonack([ip, port])

4.18. t_forward_nonack_udp(ip, port) 4.19. t_forward_nonack_tcp(ip, port) 4.20. t_forward_nonack_tls(ip, port) 4.21. t_forward_nonack_sctp(ip, port) 4.22. t_set_fr(fr_inv_timeout [, fr_timeout]) 4.23. t_reset_fr() 4.24. t_set_max_lifetime(inv_lifetim

t_forward_nonack_udp(ip, port)

4.19. t_forward_nonack_tcp(ip, port) 4.20. t_forward_nonack_tls(ip, port) 4.21. t_forward_nonack_sctp(ip, port) 4.22. t_set_fr(fr_inv_timeout [, fr_timeout]) 4.23. t_reset_fr() 4.24. t_set_max_lifetime(inv_lifetime, noninv_lifetime) 4.25. t_reset_max

t_forward_nonack_tcp(ip, port)

4.20. t_forward_nonack_tls(ip, port) 4.21. t_forward_nonack_sctp(ip, port) 4.22. t_set_fr(fr_inv_timeout [, fr_timeout]) 4.23. t_reset_fr() 4.24. t_set_max_lifetime(inv_lifetime, noninv_lifetime) 4.25. t_reset_max_lifetime() 4.26. t_set_retr(retr_t1_

t_forward_nonack_tls(ip, port)

4.21. t_forward_nonack_sctp(ip, port) 4.22. t_set_fr(fr_inv_timeout [, fr_timeout]) 4.23. t_reset_fr() 4.24. t_set_max_lifetime(inv_lifetime, noninv_lifetime) 4.25. t_reset_max_lifetime() 4.26. t_set_retr(retr_t1_interval, retr_t2_interval) 4.27. t_r

t_forward_nonack_sctp(ip, port)

4.22. t_set_fr(fr_inv_timeout [, fr_timeout]) 4.23. t_reset_fr() 4.24. t_set_max_lifetime(inv_lifetime, noninv_lifetime) 4.25. t_reset_max_lifetime() 4.26. t_set_retr(retr_t1_interval, retr_t2_interval) 4.27. t_reset_retr() 4.28. t_set_auto_inv_100(0

t_set_fr(fr_inv_timeout [, fr_timeout])

4.23. t_reset_fr() 4.24. t_set_max_lifetime(inv_lifetime, noninv_lifetime) 4.25. t_reset_max_lifetime() 4.26. t_set_retr(retr_t1_interval, retr_t2_interval) 4.27. t_reset_retr() 4.28. t_set_auto_inv_100(0|1) 4.29. t_branch_timeout() 4.30. t_branch_re

t_reset_fr()

4.24. t_set_max_lifetime(inv_lifetime, noninv_lifetime) 4.25. t_reset_max_lifetime() 4.26. t_set_retr(retr_t1_interval, retr_t2_interval) 4.27. t_reset_retr() 4.28. t_set_auto_inv_100(0|1) 4.29. t_branch_timeout() 4.30. t_branch_replied() 4.31. t_any

t_set_max_lifetime(inv_lifetime, noninv_lifetime)

4.25. t_reset_max_lifetime() 4.26. t_set_retr(retr_t1_interval, retr_t2_interval) 4.27. t_reset_retr() 4.28. t_set_auto_inv_100(0|1) 4.29. t_branch_timeout() 4.30. t_branch_replied() 4.31. t_any_timeout() 4.32. t_any_replied() 4.33. t_grep_status("co

t_reset_max_lifetime()

4.26. t_set_retr(retr_t1_interval, retr_t2_interval) 4.27. t_reset_retr() 4.28. t_set_auto_inv_100(0|1) 4.29. t_branch_timeout() 4.30. t_branch_replied() 4.31. t_any_timeout() 4.32. t_any_replied() 4.33. t_grep_status("code") 4.34. t_is_canceled() 4.

Autores y contribuidores

Jiri KuthanFhG FOKUSJuha Heinanen <jh@tutpro.com>Daniel-Constantin Mierla <miconda@gmail.com>

Copyright © 2003 FhG FOKUS
Copyright © 2008 Juha Heinanen
Copyright © 2016 Daniel-Constantin Mierla

Módulos relacionados

acc acc_diameter acc_json acc_radius alias_db app_jsdt carrierroute cfgt