Re: [PATCH net-next 0/4] net: mpls: Allow users to configure more labels per route
From: Robert Shearman <hidden>
Date: 2017-03-28 09:52:36
On 28/03/17 04:08, Eric W. Biederman wrote:
David Ahern [off-list ref] writes:quoted
On 3/27/17 4:39 AM, Robert Shearman wrote:quoted
On 25/03/17 19:15, Eric W. Biederman wrote:quoted
David Ahern [off-list ref] writes:quoted
Bump the maximum number of labels for MPLS routes from 2 to 12. To keep memory consumption in check the labels array is moved to the end of mpls_nh and mpls_iptunnel_encap structs as a 0-sized array. Allocations use the maximum number of labels across all nexthops in a route for LSR and the number of labels configured for LWT. The mpls_route layout is changed to: +----------------------+ | mpls_route | +----------------------+ | mpls_nh 0 | +----------------------+ | alignment padding | 4 bytes for odd number of labels; 0 for even +----------------------+ | via[rt_max_alen] 0 | +----------------------+ | alignment padding | via's aligned on sizeof(unsigned long) +----------------------+ | ... | Meaning the via follows its mpls_nh providing better locality as the number of labels increases. UDP_RR tests with namespaces shows no impact to a modest performance increase with this layout for 1 or 2 labels and 1 or 2 nexthops. The new limit is set to 12 to cover all currently known segment routing use cases.How does this compare with running the packet a couple of times through the mpls table to get all of the desired labels applied?At the moment (i.e setting output interface for a route to the loopback interface) the TTL would currently be calculated incorrectly since it'll be decremented each time the packet is run through the input processing. If that was avoided, then the only issue would be the lower performance.We have the infrastructure to add all the labels on one pass. It does not make sense to recirculate the packet to get the same effect.I was really asking what are the advantages and disadvantages of this change rather than suggesting it was a bad idea. The information about ttl is useful. Adding that this will route packets with more labels more quickly than the recirculation method is also useful to know.
I should also add that not recirculating also avoids having to allocate extra local labels, which may be limited in supply in some deployments, and avoids the extra control plane/user complexity associated with managing the routes associated with the recirculation. Thanks, Rob