Hey Saku, happy new year!

> From: Saku Ytti <s...@ytti.fi>
> Sent: Tuesday, December 31, 2019 2:12 PM
> 
> On Tue, 31 Dec 2019 at 15:59, <adamv0...@netconsultings.com> wrote:
> 
> > I was going to object that this can't possibly be by design cause what if I
> have 100 labels on the packet, then I realized that ASR1k's QFP gets the
> whole packets not just the first N bytes, so I guess I can see the thought
> process like "since we are getting the whole packet we might as well look
> into IP header and balance based on what we'll find there".
> 
> Based on context I believe 'this' here means ability to look past labels into 
> IP
> headers. This is the norm, not exception. And it is typically followed by
> restriction such as 'up tp 5 labels'.
> 
I thought that what you wrote is obvious from the one liner comment quoted. 
Nevertheless yes correct that's what I meant, that on majority of the NPUs used 
in routers there are limits as to how many labels a platform can skip in order 
to inspect IP header contents and I was going to use this against ASR1k and the 
hard and fast rule to always look for IP header wondering how could this rule 
work if there's a limit of say 5 labels and my packet has more -what will the 
platform do then in terms of load-sharing if it can do such decision based 
solely on contents of the IP header but can't get those during parsing 
operation (due to up to 5 labels limit for instance) possibly leading to some 
kind of exception, however then I realized that QFP used in ASR9k is different 
in this regard and always has access to all the contents of a packet (very much 
like a FW NPUs for instance), therefore the "usual" router limits (e.g. lookup 
up to 5 labels deep) do not apply in case of asr1k so I was playing devil's 
advocate arguing how I could see ASR1k eng. Falling for this trap
 .
So I guess this is the long version of my thought process summed in that one 
liner there.    

> There is absolutely no way to know for sure what is carried by MPLS, 
Exactly 

> so fast
> and simple rule of 4/6 is fine, 
Yes fine as to usually does the right thing, but completely oblivious to any 
guidance on load-sharing carried by the label stack

> as it's the common case to follow MPLS label by
> IP header, with implied promise that any other protocol you send does not
> start with 4 or 6, i.e. code-word is non-optional if you plan to do any 
> transit
> heuristics, no matter how smart the heuristics is, it is heuristics, not
> guarantee.
> 
Hence I'd always prefer transit nodes to use solely the MPLS stack for any 
clues on how to load-share. 
As the PE has much better chance of having an un-skewed view on what is or is 
not part of the same flow therefore my preference is for PEs to record the flow 
information in the flow stack and having P nodes blindly follow that (i.e. the 
use of entropy labels).
For what it's worth nowadays it could be an application or a controller with 
true knowledge of what constitutes a flow programming the label stack a PE 
should impose on a set of packets.  
And it seems this ASR1k acting as MPLS transit node and using port-channel 
interfaces, will happily ignore any clues carried by the label stack.   

> I agree with Lukas that not including labels in balancing hash calculation is
> broken behaviour.
So do I.
I'd have Cisco to update ASR1k documentation also on use of Entropy and Flow 
labels to put a note there that these features are not supported in combination 
with port-channels.
 

adam

_______________________________________________
cisco-nsp mailing list  cisco-nsp@puck.nether.net
https://puck.nether.net/mailman/listinfo/cisco-nsp
archive at http://puck.nether.net/pipermail/cisco-nsp/

Reply via email to