netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Stephen Hemminger <shemminger@vyatta.com>
To: Andreas Henriksson <andreas@fatal.se>
Cc: netdev@vger.kernel.org, kaber@trash.net
Subject: Re: [PATCH] iproute2: drop equalize support.
Date: Fri, 27 Mar 2009 11:29:47 -0700	[thread overview]
Message-ID: <20090327112947.27a5ae7a@nehalam> (raw)
In-Reply-To: <20090314163735.GA9762@amd64.fatal.se>

On Sat, 14 Mar 2009 17:37:35 +0100
Andreas Henriksson <andreas@fatal.se> wrote:

> Hello Stephen and netdev people!
> 
> Currently you can configure "equalize" and it looks all fine and dandy.
> The kernel has the interface defined, but apparently there's never actually
> been any implementation for it (only a never merged patch in the 2.4 era).
> 
> I'm suggesting to drop the code to give any potential users of this feature
> the benefit of receiving a proper error message. I see it unlikely that
> this will be implemented in the near future, but if it ever happens
> reviving the iproute2 side should be as easy as git revert this patch.
> 
> For more details see http://bugs.debian.org/149897
> 
> Regards, 
> Andreas Henriksson
> 
> 
> diff --git a/debian/rules b/debian/rules
> index 132455f..4d825ca 100755
> diff --git a/doc/ip-cref.tex b/doc/ip-cref.tex
> index bb4eb78..b333842 100644
> --- a/doc/ip-cref.tex
> +++ b/doc/ip-cref.tex
> @@ -1380,13 +1380,6 @@ database.
>  even if it does not match any interface prefix. One application of this
>  option may be found in~\cite{IP-TUNNELS}.
>  
> -\item \verb|equalize|
> -
> ---- allow packet by packet randomization on multipath routes.
> -Without this modifier, the route will be frozen to one selected
> -nexthop, so that load splitting will only occur on per-flow base.
> -\verb|equalize| only works if the kernel is patched.
> -
>  
>  \end{itemize}
>  
> diff --git a/ip/iproute.c b/ip/iproute.c
> index 6a2ea05..529159b 100644
> --- a/ip/iproute.c
> +++ b/ip/iproute.c
> @@ -67,9 +67,9 @@ static void usage(void)
>  	fprintf(stderr, "NODE_SPEC := [ TYPE ] PREFIX [ tos TOS ]\n");
>  	fprintf(stderr, "             [ table TABLE_ID ] [ proto RTPROTO ]\n");
>  	fprintf(stderr, "             [ scope SCOPE ] [ metric METRIC ]\n");
> -	fprintf(stderr, "INFO_SPEC := NH OPTIONS FLAGS [ nexthop NH ]...\n");
> +	fprintf(stderr, "INFO_SPEC := NH OPTIONS [ nexthop NH ]...\n");
>  	fprintf(stderr, "NH := [ via ADDRESS ] [ dev STRING ] [ weight NUMBER ] NHFLAGS\n");
> -	fprintf(stderr, "OPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ]\n");
> +	fprintf(stderr, "OPTIONS := [ mtu NUMBER ] [ advmss NUMBER ]\n");
>  	fprintf(stderr, "           [ rtt TIME ] [ rttvar TIME ]\n");
>  	fprintf(stderr, "           [ window NUMBER] [ cwnd NUMBER ] [ initcwnd NUMBER ]\n");
>  	fprintf(stderr, "           [ ssthresh NUMBER ] [ realms REALM ] [ src ADDRESS ]\n");
> @@ -78,7 +78,6 @@ static void usage(void)
>  	fprintf(stderr, "          unreachable | prohibit | blackhole | nat ]\n");
>  	fprintf(stderr, "TABLE_ID := [ local | main | default | all | NUMBER ]\n");
>  	fprintf(stderr, "SCOPE := [ host | link | global | NUMBER ]\n");
> -	fprintf(stderr, "FLAGS := [ equalize ]\n");
>  	fprintf(stderr, "MP_ALGO := { rr | drr | random | wrandom }\n");
>  	fprintf(stderr, "NHFLAGS := [ onlink | pervasive ]\n");
>  	fprintf(stderr, "RTPROTO := [ kernel | boot | static | NUMBER ]\n");
> @@ -387,8 +386,6 @@ int print_route(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
>  		fprintf(fp, "onlink ");
>  	if (r->rtm_flags & RTNH_F_PERVASIVE)
>  		fprintf(fp, "pervasive ");
> -	if (r->rtm_flags & RTM_F_EQUALIZE)
> -		fprintf(fp, "equalize ");
>  	if (r->rtm_flags & RTM_F_NOTIFY)
>  		fprintf(fp, "notify ");
>  
> @@ -428,9 +425,7 @@ int print_route(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
>  		PRTFL(FAST, "fastroute");
>  		PRTFL(NOTIFY, "notify");
>  		PRTFL(TPROXY, "proxy");
> -#ifdef RTCF_EQUALIZE
> -		PRTFL(EQUALIZE, "equalize");
> -#endif
> +
>  		if (flags)
>  			fprintf(fp, "%s%x> ", first ? "<" : "", flags);
>  		if (tb[RTA_CACHEINFO]) {
> @@ -859,9 +854,6 @@ int iproute_modify(int cmd, unsigned flags, int argc, char **argv)
>  			addattr32(&req.n, sizeof(req), RTA_FLOW, realm);
>  		} else if (strcmp(*argv, "onlink") == 0) {
>  			req.r.rtm_flags |= RTNH_F_ONLINK;
> -		} else if (matches(*argv, "equalize") == 0 ||
> -			   strcmp(*argv, "eql") == 0) {
> -			req.r.rtm_flags |= RTM_F_EQUALIZE;
>  		} else if (strcmp(*argv, "nexthop") == 0) {
>  			nhs_ok = 1;
>  			break;
> diff --git a/man/man8/ip.8 b/man/man8/ip.8
> index e948d03..e4a57ff 100644
> --- a/man/man8/ip.8
> +++ b/man/man8/ip.8
> @@ -163,7 +163,7 @@ replace " | " monitor " } "
>  .IR METRIC " ]"
>  
>  .ti -8
> -.IR INFO_SPEC " := " "NH OPTIONS FLAGS" " ["
> +.IR INFO_SPEC " := " "NH OPTIONS" " ["
>  .B  nexthop
>  .IR NH " ] ..."
>  
> @@ -177,7 +177,7 @@ replace " | " monitor " } "
>  .IR NUMBER " ] " NHFLAGS
>  
>  .ti -8
> -.IR OPTIONS " := " FLAGS " [ "
> +.IR OPTIONS " := [ "
>  .B  mtu
>  .IR NUMBER " ] [ "
>  .B  advmss
> @@ -213,10 +213,6 @@ throw " | " unreachable " | " prohibit " | " blackhole " | " nat " ]"
>  .IR NUMBER " ]"
>  
>  .ti -8
> -.IR FLAGS " := [ "
> -.BR equalize " ]"
> -
> -.ti -8
>  .IR NHFLAGS " := [ "
>  .BR onlink " | " pervasive " ]"
>  
> @@ -1582,14 +1578,6 @@ to assign (or not to assign) protocol tags.
>  pretend that the nexthop is directly attached to this link,
>  even if it does not match any interface prefix.
>  
> -.TP
> -.B equalize
> -allow packet by packet randomization on multipath routes.
> -Without this modifier, the route will be frozen to one selected
> -nexthop, so that load splitting will only occur on per-flow base.
> -.B equalize
> -only works if the kernel is patched.
> -
>  .SS ip route delete - delete route
>  
>  .B ip route del

applied, i think this was part of the aborted effort at more complex
multipath support. If it ever returns, we can re-enable it.

  reply	other threads:[~2009-03-27 18:30 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-14 16:37 [PATCH] iproute2: drop equalize support Andreas Henriksson
2009-03-27 18:29 ` Stephen Hemminger [this message]
2009-03-27 18:37   ` Patrick McHardy

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=20090327112947.27a5ae7a@nehalam \
    --to=shemminger@vyatta.com \
    --cc=andreas@fatal.se \
    --cc=kaber@trash.net \
    --cc=netdev@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).