Wensong Zhang wrote:
Hello,
On Thu, 13 Jan 2005, Erik Versaevel wrote:
I'm currently trying to create a loadbalacing SIP (voip protocol)
cluster,
however for this to work I need SIP messages from the same call
(identifiable
by the sip callid field) to get to the same realserver over and over
again.
(so, I need persistence based on the contents of the SIP Call-ID
field). This
would call for ktcpvs as we need to process packets at layer 7,
however that
poses 2 new problems, the first is that SIP uses clear text UDP
messages,
not tcp and the second is that there are no SIP modules for ktcpvs.
We cannot use ktcpvs, because ktcpvs supports TCP only, and there is no
SIP modules for TCP transport.
Another option would be to mark SIP packets with iptables/netfilter
based on
the callid, however i run into the same problem, there are no modules to
accomplish this.
The firewall marking doesn't solve the problem. However, we can write
a special SIP UDP scheduling module for IPVS. It can detect the
Call-Id from UDP packet and send it to the SIP server according to the
recorded Call-Id table. We assume that there is no UDP fragments. Some
NAT boxes (such as early IOS version of Cisco router) may drop UDP
fragements except the first one.
Such a module would definitly solve the problem. A round robin with
call-id persistence would be awsome. Currently a device which can do
that costs around $ 10000 each (times 2 for HA).
|