From: Julian Anastasov <ja@ssi.bg>
To: Alexander Frolkin <avf@eldamar.org.uk>
Cc: lvs-devel@vger.kernel.org
Subject: Re: [PATCH] Sloppy TCP, SH rebalancing, SHP scheduling
Date: Thu, 13 Jun 2013 23:31:11 +0300 (EEST) [thread overview]
Message-ID: <alpine.LFD.2.00.1306132250560.1810@ja.ssi.bg> (raw)
In-Reply-To: <20130613141804.GB31356@eldamar.org.uk>
Hello,
On Thu, 13 Jun 2013, Alexander Frolkin wrote:
> Hi,
>
> I've patched ipvsadm and fixed up the kernel patch.
>
> For the ipvsadm option, I've used (-b|--sched-flags) 123. I don't
Not sure if we need "-b".
> particularly like this style, but I wanted something working for
> testing.
I guess it is difficult to maintain many options,
may be one option --sched-flags should be enough, for example:
--sched-flags sh-fallback,sh-port
In all cases we should not use any of the
--sched-flag-1 variants, better to have scheduler
specific tokens that will set some IP_VS_SVC_F_SCHED* flags.
> I'm using ip_vs_fill_iph_skb for now (if the flag is set), until I hear
> back from you.
OK, we will rely on provided iph later...
> When you're happy with the patches, I can open the discussion up to the
> users mailing list.
>
> Kernel patch:
>
> diff --git a/include/uapi/linux/ip_vs.h b/include/uapi/linux/ip_vs.h
> index a245377..81af9b2 100644
> --- a/include/uapi/linux/ip_vs.h
> +++ b/include/uapi/linux/ip_vs.h
> @@ -20,6 +20,9 @@
> #define IP_VS_SVC_F_PERSISTENT 0x0001 /* persistent port */
> #define IP_VS_SVC_F_HASHED 0x0002 /* hashed entry */
> #define IP_VS_SVC_F_ONEPACKET 0x0004 /* one-packet scheduling */
> +#define IP_VS_SVC_F_SCHED1 0x0008 /* scheduler flag 1 */
> +#define IP_VS_SVC_F_SCHED2 0x0010 /* scheduler flag 2 */
> +#define IP_VS_SVC_F_SCHED3 0x0020 /* scheduler flag 3 */
We have to make the mapping of scheduler flags
public, for example, add:
#define IP_VS_SVC_F_SCHED_SH_FALLBACK IP_VS_SVC_F_SCHED1
#define IP_VS_SVC_F_SCHED_SH_PORT IP_VS_SVC_F_SCHED2
also in libipvs/ip_vs.h, as usually.
> /*
> * Destination Server Flags
> diff --git a/net/netfilter/ipvs/ip_vs_sh.c b/net/netfilter/ipvs/ip_vs_sh.c
> index 0df269d..f9de4d2 100644
> --- a/net/netfilter/ipvs/ip_vs_sh.c
> +++ b/net/netfilter/ipvs/ip_vs_sh.c
> @@ -48,6 +48,10 @@
>
> #include <net/ip_vs.h>
>
> +#include <net/tcp.h>
> +#include <linux/udp.h>
> +#include <linux/sctp.h>
> +
>
> /*
> * IPVS SH bucket
> @@ -74,7 +78,9 @@ struct ip_vs_sh_state {
> /*
> * Returns hash value for IPVS SH entry
> */
> -static inline unsigned int ip_vs_sh_hashkey(int af, const union nf_inet_addr *addr)
> +static inline unsigned int ip_vs_sh_hashkey(int af,
> + const union nf_inet_addr *addr, __be16 port,
> + unsigned int offset)
Arguments should be properly aligned, you can reorder
them, if needed.
> + if (svc->flags & IP_VS_SVC_F_SCHED2) {
> + found = false;
> + for (offset = 0; offset < IP_VS_SH_TAB_SIZE; offset++) {
> + dest = ip_vs_sh_get(svc->af, s, &iph.saddr,
> + port, offset);
> + if (is_unavailable(dest))
> + IP_VS_DBG_BUF(6, "SH: selected unavailable "
> + "server %s:%d (offset %d)",
> + IP_VS_DBG_ADDR(svc->af, &dest->addr),
dest can be NULL => crash
> + ntohs(dest->port),
> + offset);
May be we have to put this for loop in new func, so that
IP_VS_DBG_BUF args are properly aligned? Another option is
to move IP_VS_DBG_BUF into is_unavailable(svc, dest, offset)
and to use it only when dest != NULL.
Regards
--
Julian Anastasov <ja@ssi.bg>
next prev parent reply other threads:[~2013-06-13 20:31 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-24 12:09 [PATCH] Sloppy TCP, SH rebalancing, SHP scheduling Alexander Frolkin
2013-05-24 15:05 ` Julian Anastasov
2013-05-24 15:14 ` Alexander Frolkin
2013-05-24 16:18 ` Aleksey Chudov
2013-05-27 21:31 ` Julian Anastasov
2013-05-28 13:41 ` Aleksey Chudov
2013-05-30 6:37 ` Julian Anastasov
2013-06-07 7:53 ` Alexander Frolkin
2013-06-19 9:03 ` Julian Anastasov
2013-06-19 19:25 ` Julian Anastasov
2013-06-20 17:02 ` Aleksey Chudov
2013-06-20 20:09 ` Julian Anastasov
2013-06-19 20:44 ` Aleksey Chudov
2013-06-22 11:20 ` [PATCH] ipvs: add sync_persist_mode flag Aleksey Chudov
2013-06-22 12:43 ` Julian Anastasov
2013-06-22 21:11 ` Aleksey Chudov
2013-06-23 8:34 ` Julian Anastasov
2013-06-24 14:37 ` Aleksey Chudov
2013-06-24 19:57 ` Julian Anastasov
2013-05-27 21:11 ` [PATCH] Sloppy TCP, SH rebalancing, SHP scheduling Julian Anastasov
2013-06-07 8:12 ` Alexander Frolkin
2013-06-10 19:31 ` Julian Anastasov
2013-06-11 8:38 ` Alexander Frolkin
2013-06-11 19:57 ` Julian Anastasov
2013-06-12 14:10 ` Alexander Frolkin
2013-06-12 20:47 ` Julian Anastasov
2013-06-13 8:38 ` Alexander Frolkin
2013-06-13 12:56 ` Alexander Frolkin
2013-06-13 19:50 ` Julian Anastasov
2013-06-13 14:18 ` Alexander Frolkin
2013-06-13 20:31 ` Julian Anastasov [this message]
2013-06-14 10:22 ` Alexander Frolkin
2013-06-16 6:52 ` Julian Anastasov
2013-06-17 8:32 ` Alexander Frolkin
2013-06-17 9:00 ` Julian Anastasov
2013-06-17 9:04 ` Julian Anastasov
2013-06-17 11:11 ` Alexander Frolkin
2013-06-17 20:05 ` Julian Anastasov
2013-06-18 9:30 ` Alexander Frolkin
2013-06-18 20:52 ` Julian Anastasov
2013-06-14 11:47 ` Alexander Frolkin
2013-06-16 8:30 ` Julian Anastasov
2013-06-17 10:35 ` Alexander Frolkin
2013-06-17 19:48 ` Julian Anastasov
2013-06-18 9:08 ` Alexander Frolkin
2013-06-18 20:41 ` Julian Anastasov
2013-06-10 15:12 ` Alexander Frolkin
2013-06-10 16:03 ` Alexander Frolkin
2013-06-10 20:52 ` Julian Anastasov
2013-06-11 12:38 ` Alexander Frolkin
2013-06-11 20:13 ` Julian Anastasov
2013-06-12 10:49 ` Alexander Frolkin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.LFD.2.00.1306132250560.1810@ja.ssi.bg \
--to=ja@ssi.bg \
--cc=avf@eldamar.org.uk \
--cc=lvs-devel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.