From: Robert Shearman <rshearma@brocade.com>
To: Roopa Prabhu <roopa@cumulusnetworks.com>, <ebiederm@xmission.com>
Cc: <davem@davemloft.net>, <netdev@vger.kernel.org>
Subject: Re: [PATCH net-next RFC] mpls: support for dead routes
Date: Thu, 29 Oct 2015 16:53:29 +0000 [thread overview]
Message-ID: <56324F09.2060103@brocade.com> (raw)
In-Reply-To: <1446133748-13738-1-git-send-email-roopa@cumulusnetworks.com>
On 29/10/15 15:49, Roopa Prabhu wrote:
> From: Roopa Prabhu <roopa@cumulusnetworks.com>
>
> Adds support for both RTNH_F_DEAD and RTNH_F_LINKDOWN flags.
> This resembles ipv4 fib code. I also picked fib_rebalance from
> ipv4. Enabled weights support for nexthop, just because the
> infrastructure is already there.
>
> Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com>
> ---
> I want to get this in before net-next closes as promised.
> I have tested it for the dead/linkdown flags. The multipath selection
> and hash calculation in the face of dead routes needs some more
> work. I am short on cycles this week and thought of getting some
> early feedback. Hence sending this out as RFC. I will continue with some
> more testing. Robert, I am using your hash algo but it needs some more
> work with dead routes. If you already have any thoughts on this, i will
> take them. thanks!.
If you were to sort the array of nexthops (and by implication via
addresses) by their non-deadness keeping a count of the alive nexthops,
then there's no need to resort to an O(n) algorithm for selecting the
nexthop, and no need to store per-nh flags.
E.g. before eth0 link down:
+----------------------+
| rt_nhn = 3 |
| rt_nhn_alive = 3 |
+----------------------+
| nh 0: |
| dev = eth0, ... |
+----------------------+
| nh 1: |
| dev = eth1, ... |
+----------------------+
| nh 2: |
| dev = eth0, ... |
+----------------------+
| vias ... |
+----------------------+
after eth0 link down:
+----------------------+
| rt_nhn = 3 |
| rt_nhn_alive = 1 |
+----------------------+
| nh 0: |
| dev = eth1, ... |
+----------------------+
| nh 1: |
| dev = eth0, ... |
+----------------------+
| nh 2: |
| dev = eth0, ... |
+----------------------+
| vias ... |
+----------------------+
The mpls_select_multipath algorithm just then needs to be changed to use
rt_nhn_alive instead of rt_nhn and will work otherwise as-is.
On link down you'll need to alloc a new route for RCU-safety, but you
can presumably just do a kmemdup to reduce the amount of code you have
to write and sort the nexthops in the copy. Link up will be similar.
Then on the mpls_dump_route, if the index of the nexthop is >=
rt_nhn_alive then the path is link-down. If the nh_dev is NULL then
generate RTNH_F_DEAD|RTNH_F_LINKDOWN for the flags, otherwise just
RTNH_F_LINKDOWN.
This would use less memory and be faster for forwarding.
Thanks,
Rob
next prev parent reply other threads:[~2015-10-29 16:53 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-29 15:49 [PATCH net-next RFC] mpls: support for dead routes Roopa Prabhu
2015-10-29 16:53 ` Robert Shearman [this message]
2015-10-29 18:46 ` roopa
2015-10-30 15:06 ` Robert Shearman
2015-11-01 21:24 ` Eric W. Biederman
2015-11-01 21:27 ` Eric W. Biederman
2015-11-02 1:01 ` roopa
2015-11-02 5:08 ` Eric W. Biederman
2015-11-02 21:18 ` roopa
2015-11-02 19:29 ` [PATCH net-next] mpls: Don't accept multipath configuration until the support is complete Eric W. Biederman
2015-11-02 19:49 ` Sergei Shtylyov
2015-11-03 6:09 ` Eric W. Biederman
2015-11-03 14:03 ` roopa
2015-11-03 15:14 ` Robert Shearman
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=56324F09.2060103@brocade.com \
--to=rshearma@brocade.com \
--cc=davem@davemloft.net \
--cc=ebiederm@xmission.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 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.