Subject: Re: [PATCH net-next 0/3] mpls: multipath support

From: Robert Shearman <[email-masked]>
Date: Wed, 12 Aug 2015 18:30:14 +0100

On 11/08/15 22:45, Roopa Prabhu wrote:
> From: Roopa Prabhu <[email-masked]>
>
> This patch series adds multipath support to mpls routes.
>
> resembles ipv4 multipath support. The multipath route nexthop
> selection algorithm is the same code as in ipv4 fib code.
>
> I understand that the multipath algorithm in ipv4 is undergoing
> some changes and will move mpls to similar algo if applicable once
> those get merged.

Is it necessary for the mpls patch selection algorithm to closely 
resemble the ipv4 one? A flow based algorithm would be much better for 
traffic that is sensitive to re-ordering (e.g TCP, L2VPN) and IMHO we 
should do this from the start for MPLS.

I've also been looking at implementing this functionality. I've got a 
set of patches for this that I can send if you'd like.

>
> mpls multipath support can be moved under CONFIG_MPLS_ROUTE_MULTIPATH if
> needed similar to CONFIG_IP_ROUTE_MULTIPATH. I started with that
> but that resulted in too many #ifdef CONFIG_MPLS_ROUTE_MULTIPATH
> throughout the af_mpls code. If there is a strong reason
> to introduce a config option, I will respin v2 with
> CONFIG_MPLS_ROUTE_MULTIPATH. These multipath patches do not introduce
> any UAPI changes.

I agree with not having such a config option - I can't see a strong 
reason for it.

Thanks,
Rob

>
> example iproute2 usage:
> $ip -f mpls route add 100 nexthop as 200 via inet 10.1.1.2 dev swp1 \
> 	nexthop as 300 via inet 10.1.1.6 dev swp2
>
> $ip -f mpls route show
> 100
> 	nexthop as to 200 via inet 10.1.1.2  dev swp1
> 	nexthop as to 300 via inet 10.1.1.6  dev swp2
>
>
> Roopa Prabhu (3):
>    mpls: move mpls_route nexthop fields to a new nhlfe struct
>    mpls: consistently use u8 to store number of labels
>    mpls: add multipath route support
>
>   include/net/mpls_iptunnel.h |    2 +-
>   net/mpls/af_mpls.c          |  519 ++++++++++++++++++++++++++++++++-----------
>   net/mpls/internal.h         |   44 +++-
>   3 files changed, 437 insertions(+), 128 deletions(-)
>