netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Hannes Frederic Sowa <hannes@stressinduktion.org>
To: Roopa Prabhu <roopa@cumulusnetworks.com>
Cc: netdev <netdev@vger.kernel.org>,
	Daniel Walton <dwalton@cumulusnetworks.com>
Subject: Re: question on ipv6 support for duplicate nexthops
Date: Fri, 27 Jun 2014 09:15:27 +0200	[thread overview]
Message-ID: <1403853327.7028.7.camel@localhost> (raw)
In-Reply-To: <53AB41B3.1020201@cumulusnetworks.com>

On Mi, 2014-06-25 at 14:40 -0700, Roopa Prabhu wrote:
> ipv4 allows duplicate nexthops. Multiple instances of same
>   nexthops maybe used to give higher weights to some nexthops
> (though the "weight" attribute can be used for the same purpose).
> 
> ipv6 does not seem to support duplicate nexthops.
> 
> Example: The below ipv6 route is rejected by the kernel
> #ip -6 route add 2001:10:1:3::/64 nexthop via 2001:10:1:2::99 nexthop 
> via 2001:10:1:2::99
> 
> The below patch points to the code that is preventing the addition of 
> duplicate nexthops.
> 
> I am not sure yet if there are other side effects to the patch below.
> If there is interest in making ipv6 consistent with ipv4 for duplicate 
> nexthop handling, i can submit a patch.

ECMP routes are normal routing entries in the fib, just hold together
via an internal list and thus behave differently than IPv4 ECMP routes.

I don't see that just removing the check for duplicate entries will make
that work correctly.

Also you remove some pretty important expire update code.

Bye,
Hannes

> diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c
> index cb4459b..afecc87 100644
> --- a/net/ipv6/ip6_fib.c
> +++ b/net/ipv6/ip6_fib.c
> @@ -698,20 +698,6 @@ static int fib6_add_rt2node(struct fib6_node *fn, 
> struct rt6_info *rt,
>                                  break;
>                          }
> 
> -                       if (iter->dst.dev == rt->dst.dev &&
> -                           iter->rt6i_idev == rt->rt6i_idev &&
> - ipv6_addr_equal(&iter->rt6i_gateway,
> - &rt->rt6i_gateway)) {
> -                               if (rt->rt6i_nsiblings)
> -                                       rt->rt6i_nsiblings = 0;
> -                               if (!(iter->rt6i_flags & RTF_EXPIRES))
> -                                       return -EEXIST;
> -                               if (!(rt->rt6i_flags & RTF_EXPIRES))
> -                                       rt6_clean_expires(iter);
> -                               else
> -                                       rt6_set_expires(iter, 
> rt->dst.expires);
> -                               return -EEXIST;
> -                       }
>                          /* If we have the same destination and the same 
> metric,
>                           * but not the same gateway, then the route we 
> try to
>                           * add is sibling to this route, increment our 
> counter
> 
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

      reply	other threads:[~2014-06-27  7:15 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-25 21:40 question on ipv6 support for duplicate nexthops Roopa Prabhu
2014-06-27  7:15 ` Hannes Frederic Sowa [this message]

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=1403853327.7028.7.camel@localhost \
    --to=hannes@stressinduktion.org \
    --cc=dwalton@cumulusnetworks.com \
    --cc=netdev@vger.kernel.org \
    --cc=roopa@cumulusnetworks.com \
    /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).