Alex,
I'm not really knowledgable enough about anycast to say anything useful.  The only is that in your described setup, I cannot really see how you get around the UA behind restricted (or worse) NAT.
    I have never tried to configure SER as a forking proxy, but I wouldn't be surprised if it was possible.
g-)
 
---- Original Message ----
From: Alex Vishnev
To: serusers@lists.iptel.org
Sent: Monday, April 11, 2005 02:30 PM
Subject: RE: LVS, load balancing, and stickness was ==> Re: [Serusers]
moreusrloc synchronization

> Greger and Paul,
>
> I think you understood me correctly regarding forking proxy. It is
> the proxy that will fork out the requests to all available peering
> proxies. This approach does not require stickiness based on Call-id.
> AFAIK, once the forking proxy receives an acknowledgement from one of
> its peers, then the rest of the session will be done directly to that
> peer without the use of the forking proxy. I am considering 2
> approaches to resolve availability of forking proxy. 1 – using
> ANYCAST (good high level article:
> http://www.kuro5hin.org/story/2003/12/31/173152/86). 2 – using dns
> srv. I am still trying to determine if ANYCAST is a good solution for
> creating local RPs with forking proxy. However, I think that dns srv
> records can easily be implemented to allow simple round robin between
> multiple forking proxies. Thoughts?           
>
> Alex
>
>
>
>
> From: serusers-bounces@iptel.org [mailto:serusers-bounces@lists.iptel.org]
> On Behalf Of Greger V. Teigre
> Sent: Monday, April 11, 2005 4:47 AM
> To: kramarv@yahoo.com
> Cc: serusers@lists.iptel.org
> Subject: LVS, load balancing, and stickness was ==> Re: [Serusers]
> more usrloc synchronization
>
> After my last email, I looked at ktcpvs and realized I ignored a
> couple of things: ktcpvs only supports tcp (http is obviously
> tcp-based, but I thought it supported udp for other protocols).  I
> don't know how much work implementing udp would be.  
>     Here is a discussion of SIP and LVS that I found useful (though
> not encouraging).
> http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.services_that_dont_work_yet.html
>
> Paul: I'm starting to get really curious on the standard LVS
> components used for your stickiness!  I'm not aware (also after
> searching now) of an LVS balancing mechanism that allows correct
> stickness on SIP udp...!  
> And I found other too who are looking for it:
> http://archive.linuxvirtualserver.org/html/lvs-users/2005-02/msg00251.html
>
> My understanding is that ipvs must be extended (according to the
> developer) with a call-id based scheduler and that this work has
> several people willing to fund development, but that this has not(?)
> started yet.  The problem is that ipvs is based on ip header analysis
> and extending the hashing algorithms to also include payload-based
> analysis is not straight-forward.    
> g-)
>
>> With regards to stickiness: Have you looked at ktcpvs?  SIP is an
>> "http-like" protocol and I'm pretty sure that you can use the
>> http-based regex hashing to search for Call-Id.  If you cannot use it
>> right out of the box, I'm pretty sure the modifications are minimal.
>>     The user location problem: With a cluster back-end, I also only
>> see save_memory() as the only option.
>> g-)
>>
>>> "Greger V. Teigre" <greger@teigre.com> wrote:
>>>> Greger, thanks a lot.
>>>> The problem with load balancer is that replies goes to the wrong
>>>> server due to rewriting outgoing a.b.c.d . BTW, as Paul pointed, if
>>>> you define some dummy interface with Virtual IP (VIP), there is no
>>>> need to rewrite outgoing messages (I tested this a little).
>>>
>>>
>>> Yes, if you use LVS with direct routing or tunneling, that is what
>>> you experience.
>>> ===Of course. That why I implemented small "session" stickness.
>>> However, it causes additional internal traffic.
>>>
>>>  What I described was a "generic" SIP-aware load balancer where SIP
>>> messages would be rewritten and stickiness implemented based on ex.
>>> UA IP address (or call-id like vovida's load balancer).
>>> ====Sure, it's better solution; I think we'll go this way soon (in
>>> our next version).
>>>
>>>> Why DNS approach is bad (except restricted NAT - let's say I am
>>>> solving this)?
>>>
>>> Well, IMO, DNS SRV in itself is not bad. It's just that many user
>>> clients do not support DNS SRV yet.  Except that, I like the concept
>>> and it will give you a geographical redundancy and load balancing.
>>> ===I am trying to build the following architecture:
>>>
>>> DNS (returns domain's public IP)->LVS+tunneling (Virtual IP)->ser
>>> clusters (with private IPs)
>>>
>>>>
>>>
>>>>
>>>                                                                  DB
>>> (MySQL 4.1 cluster)
>>>
>>>> I guess, Paul utilizes load-balancer scenario you have described.
>>>> Believe there are only proprietary solutions for
>>>> "the-replies-problem". We tried Vovida call-id-persistence package,
>>>> unfortunately it didn't work for us.
>>>
>>> Are you referring to the load balancer proxy? IMHO, the SIP-aware
>>> load balancer makes things a bit messy.  It sounds to me that the
>>> LVS + tunneling/direct routing + virtual IP on dummy adapter is a
>>> better solution.
>>>
>>>> In my configuration I use shared remote DB cluster (with
>>>> replication). Each ser see it as one-public-IP (exactly the
>>>> approach you named for SIP). May be it's good idea to use local DB
>>>> clusters, but if you have more than 2 servers your replication
>>>> algorythm gonna be complex. Additional problem - it still doesn't
>>>> solve usrloc synchronization - you still have to use
>>>> t_replicate()...
>>>
>>>
>>> I'm not sure if I understand.
>>> ===Oh, probably I expressed myself not well enough...
>>>
>>> So, you have 2 servers at two location, each location with a shared
>>> DB and then replication across an IPsec tunnel??
>>>     IMHO, mysql 3.23.x two-way replication is quite shaky and
>>> dangerous to rely on.  With no locking, you will easily get
>>> overwrites and you have to be very sure that your application
>>> doesn't mess up the DB.  I haven't looked at mysql 4.1 clustering,
>>> but from the little I have seen, it looks good. Is that what you
>>> use?
>>>
>>> ===We have 2 or more servers with MysQL 4.1 virtual server (clusters
>>> balanced by LVS). We use MySQL for maintaining subscribers'
>>> accounts, not for location. User location is still in-memory only
>>> so far. I am afraid I have to switch to ser 09 in order to use
>>> save_memory (thanks Paul!) and forward_tcp() for replication.
>>>
>>>> With regard to t_replicate() - it doesn't work for more than 2
>>>> servers, so I used exactly forward_tcp() and save_noreply() (you're
>>>> absolutely right - this works fine so far); all sers are happy. Of
>>>> course, this causes additional traffic. Interesting whether Paul's
>>>> FIFO patch reduces traffic between sers?
>>>
>>> I believe Paul uses forward_tcp() and save_memory() to save the
>>> location to the replicated server's memory, while the
>>> save("location") on the primary server will store to the DB (which
>>> then replicates on the DB level).
>>> g-)
>>>
>>>
>>>
>>>
>>>
>>> Do you Yahoo!?
>>> Yahoo! Small Business - Try our new resources site!
>
>
>
> _______________________________________________
> Serusers mailing list
> serusers@lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers