invoke scheduler for every received packet

Roberto Nibali ratz at drugphish.ch
Thu Jul 13 08:44:24 BST 2006


Zdravo Viktor,

>>> this is a second time I'am addressing list with this question. I have
>>> been using LVS with ops patch, which enables invoking scheduler module
>>> for every received packet (no connection caching).
>> I have just briefly skimmed over this patch and am a bit unsure how 
>> efficient it is, but it seems to not populate the template cache. Why 
>> invoking the scheduler module for every packet is special, I fail to 
>> see. Having non-persistent scheduling to does the same. But I've only 
>> looked at the patch for 2 minutes.
> Thanks for the fast replay. Actually I'm not sure what non-persistent scheduling does, 
> maybe it is solution for may problem, I'll check it out.

You don't need to, since it's clear to me what the OPS does now. For 
your case using a UDP-based application OPS makes sense. We're 
discussing the patch now, as you can see.

> What I need and what OPS is doing 
> is that every packet (eg. UDP) received for virtual service is passed to desired scheduler.

But only to the initially one chosen. If you chose SED scheduler for 
your service, it will be SED for the time being.

> Which is not I believe LVS default behavior, because of connection hashing.

Correct.

> So with OPS scheduler is invoked per packet basis and decision about destination server 
> is made every time. This is important for protocols which have multiplexed connections 
> over same IP and PORT pair. Such as SIP communication between two proxy servers.

Absolutely.

>> http://archive.linuxvirtualserver.org/html/lvs-users/2005-09/msg00214.html
> Yes I'm aware of this patch.
>> still applies to the latest 2.6.x kernel with some fuzz, of course.
> I meant what is status of patch for kernel 2.6.x and above. I've been
> using it on 2.4.13.

The only problem I see hindering it from immediate inclusion is that 
potential user space breakage. In short time, I think it can be solved 
by adding another long option like "--flags" to ipvsadm, which queries 
the kernel for the flags being set. This would need another kernel 
function in ip_vs_ctl.c, since IIRC it's not there yet. I'd do it, 
however I have absolutely no time until Sunday. And if Sunday is again 
as sunny as it has been the past 2 months, I'll be outside doing sports 
and sun-bathing.

>>  We 
>> have actually never reviewed this patch, so I wonder if it would be time 
>> to review it and submit for inclusion. 
> I'm aware that patch could be easily adapted for newer kernels because
> of its simplicity. But I'm not sure is there need for this if exists
> another way to achieve same thing with something already included in LVS
> (maybe something like non-persistent scheduling as you have noted).

No, it's the right thing to do, especially because Julian wrote it :).

>> Could you give me an exact 
>> explanation what it does and how it's used?
> Well, patch is used in very simple fashion. You just add switches -o or
> --ops when creating virtual service. As Julian wrote this results in
> connections used for only one packet scheduling. I suppose they are
> expired as soon as they are created. This enables packet routing to
> different destinations even if they are coming from same client port.

Either DH or SH could give you similar results, however it's not the same.

> I hope I've been clear enough. 

Yep, I have actually woken up :). I'm an "old fart" and my brain cells 
aren't that sharp anymore.

Cheers,
Roberto Nibali, ratz
-- 
echo 
'[q]sa[ln0=aln256%Pln256/snlbx]sb3135071790101768542287578439snlbxq' | dc

Search lvs-users Archives
Limit search to: Subject & Body Subject Author
Sort by: Reverse Sort

More information about the lvs-users mailing list