
anorexicpoodle wrote:
Session state, so in the event the load balancers experience a failover, new messages within existing sessions (re-invite, refer, bye etc) are still routed appropriately. Obviously if the elements being load balanced across experience a failure, sessions on the failed element are gone, so I am not worried about that, just more about making the middle as invisible as possible.
If you are referring to sequential, in-dialog messages such as re-INVITEs, BYEs, etc., these are routed on the basis of SIP protocol semantics and not state. At least, not in the case of a proxy, which may keep transactional state but not dialog or session state. In-dialog requests are identified as such by the presence of a From and To tag parameter and a Route: header, not by the maintenance of any additional state. When Kamailio or OpenSIPS routes such a request now, it does not refer to any dialog state it keeps internally; the only state it maintains is on transactions, and all of those requests constitute new transactions. In conclusion, I believe you are mistaken. It is quite possible to open a dialog with a successful INVITE transaction on one proxy, experience host failover and initialise a new proxy instance, and correctly route a re-INVITE, BYE, etc. UAs keep dialog and/or session state. Proxies do not. If you use a proxy as a load-balancer, it will meet the requirement. I suppose the only caveat with stateful forwarding is if failover occurs in the middle of a pending transaction that has not yet received a final positive or negative reply; however, in that case, routing should fall back on Via headers if no transactional state is present. Kamailio and OpenSIPS would do the job quite nicely here. <shameless plug>This is what we do at Evariste. Contact me if off-list if you are interested in having someone do this implementation. Otherwise, I will be happy to answer any other questions you may have.</shameless plug> -- Alex -- Alex Balashov - Principal Evariste Systems Web : http://www.evaristesys.com/ Tel : (+1) (678) 954-0670 Direct : (+1) (678) 954-0671