Hi Kamailio users,
I have a special question regarding a mixture of serial and parallel forking, operated by
Kamailio-3.0.0.
First of all I will give you a short background information, what the target will be:
I have a SIP-server on place A, 3 gateways on place B and 3 gateways on place C). All (6)
gateways are registered with the same username on SIP server (A), but with different
Q-values (e.g. GW-B1=1.0, GW-C1=1.0, GW-B2=0.8, GW-C2=0.8, GW-B3=0.6, GW-C3=0.6). The
target is, that a call for a gateway MUST be signalled on gateway(s) of place B and C in
parallel (forking) until the call is finally established over one of the two involved
gateways on place B or C. When (one of) the prime gateway(s) (with the highest Q-value)
fail (e.g. they do not send a provisional response within a timeout or send a negative
response), the next gateway(s) should be addressed (with the next lower Q-value), a.s.o.
The parallelism for signalisation on place B and C is necessary, because of redundancy /
safety reasons.
Configuration for serial forking is done as described in the README of the TM module. It
is a mixture of the main route and a failure_route in combination with the functions
t_load_contacts() and t_next_contacts().
The loaded contacts for serial forking differ (from standard scenarios) in that way, that
each sequential target consists of a pair of "users" instead of a single user.
This configuration works well in case that both gateways on place B and C fail at the same
time (BOTH do not send a response or BOTH send a negative
response or one does not send a response and the other one sends a negative response).
However, in case that only ONE of the two (always in parallel) addressed gateways fails,
it does not work as expected. It does nothing and/or waits for an eventually negative
response or the call setup timeout. Only then the next gateway-pair will be addressed.
=> is the behaviour of TM correct/"as designed" to make an AND-relation with
both branches and access the failure_route only then, when both branches fail?
Does anybody have an idea how this problem could be solved or any alternative solution for
this special requirement of parallel signalisation in any case?
Thanks in advance!
Regards,
Klaus
--
GRATIS für alle GMX-Mitglieder: Die maxdome Movie-FLAT!
Jetzt freischalten unter
http://portal.gmx.net/de/go/maxdome01