[Kamailio-Users] Request for a special parallel serial forking scenario

Klaus Feichtinger klaus.feichtinger at gmx.net
Thu Jan 28 13:39:51 CET 2010


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




More information about the sr-users mailing list