<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><blockquote type="cite" class="">An MPLS packet may in transit receive additional labels. I most cases (all?), this will be most properly seen as a LSP hierarchy (tunneling one LSP into another LSP), so closer to a notion of ingress rather than something related to the initial LSP. But I don't know if the distinction is of importance.<br class=""><br class="">The cases that comes to mind would be:<br class="">- tunneling into a fast-reroute bypass LSP (possibly a segment routing LSP, see segment routing TI LFA)<br class="">- seamless MPLS<br class="">- carrier's carrier type of deployment<br class=""></blockquote><br class=""></div><div class=""><br class=""></div><div class=""><Rodny> I would add SR-policy as the most generic example. Ideally, any router along the path, being the (real / app-facing) head-end or not, should be capable of injecting a SID-list to enforce any given forwarding policy. So i believe that David’s patch is needed as is: to cover both ip->mpls and mpls->mpls scenarios.</div><div class=""><br class=""></div><div class=""><a href="https://datatracker.ietf.org/doc/html/draft-filsfils-spring-segment-routing-policy" class="">https://datatracker.ietf.org/doc/html/draft-filsfils-spring-segment-routing-policy</a></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><blockquote type="cite" class=""><blockquote type="cite" class="">How does this compare with running the packet a couple of times through<br class="">the mpls table to get all of the desired labels applied?</blockquote></blockquote><br class=""></div><div class=""><br class=""></div><div class=""><Rodny> I would like to know more about this one too.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">/Rodny</div><div class=""><br class=""></div><br class=""><div><blockquote type="cite" class=""><div class="">On Mar 26, 2017, at 3:23 PM, David Ahern via frr <<a href="mailto:frr@lists.nox.tf" class="">frr@lists.nox.tf</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; margin: 0px;" class=""><span style="font-family: -webkit-system-font, 'Helvetica Neue', Helvetica, sans-serif; color: rgb(127, 127, 127);" class=""><b class=""><br class="Apple-interchange-newline">From:<span class="Apple-converted-space"> </span></b></span><span style="font-family: -webkit-system-font, 'Helvetica Neue', Helvetica, sans-serif;" class="">David Ahern <<a href="mailto:dsa@cumulusnetworks.com" class="">dsa@cumulusnetworks.com</a>><br class=""></span></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; margin: 0px;" class=""><span style="font-family: -webkit-system-font, 'Helvetica Neue', Helvetica, sans-serif; color: rgb(127, 127, 127);" class=""><b class="">Subject:<span class="Apple-converted-space"> </span></b></span><span style="font-family: -webkit-system-font, 'Helvetica Neue', Helvetica, sans-serif;" class=""><b class="">Re: Fwd: Re: [PATCH net-next 0/4] net: mpls: Allow users to configure more labels per route</b><br class=""></span></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; margin: 0px;" class=""><span style="font-family: -webkit-system-font, 'Helvetica Neue', Helvetica, sans-serif; color: rgb(127, 127, 127);" class=""><b class="">Date:<span class="Apple-converted-space"> </span></b></span><span style="font-family: -webkit-system-font, 'Helvetica Neue', Helvetica, sans-serif;" class="">March 26, 2017 at 3:22:51 PM PDT<br class=""></span></div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; margin: 0px;" class=""><span style="font-family: -webkit-system-font, 'Helvetica Neue', Helvetica, sans-serif; color: rgb(127, 127, 127);" class=""><b class="">To:<span class="Apple-converted-space"> </span></b></span><span style="font-family: -webkit-system-font, 'Helvetica Neue', Helvetica, sans-serif;" class="">Thomas Morin <<a href="mailto:thomas.morin@orange.com" class="">thomas.morin@orange.com</a>>, DUGEON Olivier IMT/OLN <<a href="mailto:olivier.dugeon@orange.com" class="">olivier.dugeon@orange.com</a>>, "<a href="mailto:amine.kherbouche@6wind.com" class="">amine.kherbouche@6wind.com</a>" <<a href="mailto:amine.kherbouche@6wind.com" class="">amine.kherbouche@6wind.com</a>>, "<a href="mailto:jefftant@gmail.com" class="">jefftant@gmail.com</a>" <<a href="mailto:jefftant@gmail.com" class="">jefftant@gmail.com</a>>, "<a href="mailto:frr@lists.nox.tf" class="">frr@lists.nox.tf</a>" <<a href="mailto:frr@lists.nox.tf" class="">frr@lists.nox.tf</a>>, Bruno Decraene <<a href="mailto:bruno.decraene@orange.com" class="">bruno.decraene@orange.com</a>>, roopa <<a href="mailto:roopa@cumulusnetworks.com" class="">roopa@cumulusnetworks.com</a>><br class=""></span></div><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">On 3/26/17 11:02 AM, Thomas Morin wrote:</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">Hi David,<br class=""><br class="">[adding my colleague Bruno to the list, he may correct things I might<br class="">have oversimplified on segment routing, or have a idea about 12]<br class=""><br class="">2017-03-25, David Ahern:<br class=""><blockquote type="cite" class="">Eric's question below is basically adding labels at tunnel ingress vs<br class="">while traversing the LSP. I was generically increasing both to more than<br class="">2 labels. Opinions?<br class=""></blockquote><br class="">An MPLS packet may in transit receive additional labels. I most cases<br class="">(all?), this will be most properly seen as a LSP hierarchy (tunneling<br class="">one LSP into another LSP), so closer to a notion of ingress rather than<br class="">something related to the initial LSP. But I don't know if the<br class="">distinction is of importance.<br class=""><br class="">The cases that comes to mind would be:<br class="">- tunneling into a fast-reroute bypass LSP (possibly a segment routing<br class="">LSP, see segment routing TI LFA)<br class="">- seamless MPLS<br class="">- carrier's carrier type of deployment<br class=""><br class="">In these cases a router could receive an MPLS packet, and possibly after<br class="">popping the topmost, push a stack of labels onto the packet.<br class=""></blockquote><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">And that's my takeaway from past discussions on this topic (number of</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">labels).</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class="">About the email below:<br class="">- how did 12 end up being considered "covering all currently known<br class="">segment routing use cases" ? it seems that SR could use an arbitrary<br class="">number of labels  (not saying 12 is a bad number, but...)<br class=""></blockquote><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">I believe the consensus was 8 but Olivier had a use case for more. The</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">way I have this coded means the performance impact is to users adding</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">more and more labels - which is expected and appropriate.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">- I'm not sure what Eric's idea of "running the packet a couple of times<br class="">through the mpls table to get all of the desired labels applied" would<br class="">mean: after the first lookup, what data would be used as key for the<br class="">following lookup ?<br class=""></blockquote><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">no idea. I need him to clarify.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">- back to your question, which seems to imply one could possibly<br class="">increase number of labels for ingress without increasing number of<br class="">labels for transit: isn't the same datastructure used in both to<br class="">represent an mpls next hop (in RFC3031, both the ILM and FTN point to<br class="">NHLFE entries, but I haven't digged enough to identify how these maps to<br class="">the kernel implementation)<br class=""></blockquote><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">no. Ingress is handled by a lightweight tunnel infrastructure. In 'ip'</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">terms the route specifies lwt with mpls encap. LSP MPLS is handled as a</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">typical protocol family with its own route database.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">- would a concept of a linked list of mpls_nh make sense, each with one<br class="">label to impose, make sense, so that no hard limit is put on the label<br class="">stack depth?<br class=""></blockquote><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">each nexthop has its own label stack. The nexthops are essentially an</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">array at the end of the mpls route.</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">_______________________________________________</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">frr mailing list</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="mailto:frr@lists.nox.tf" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">frr@lists.nox.tf</a><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="https://lists.nox.tf/listinfo/frr" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">https://lists.nox.tf/listinfo/frr</a></div></blockquote></div><br class=""><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><div class="">On Mar 26, 2017, at 1:16 PM, Jeff Tantsura <<a href="mailto:jefftant@gmail.com" class="">jefftant@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class="">Hi Thomas,<br class=""><br class="">Good points.<br class=""><br class="">There’s no free lunch in fast path universe, packet recalculation has price associated with it, the most obvious things are increased latency and reduced throughput, there’s more.<br class="">Sorry for repeating myself - not being linux kernel expert myself - I’d appreciate pros/cons analysis of taking different approaches, the impact of adding new code and system behavior with it.<br class=""><br class="">Those who expect the underlying platform to be not X86 only (Cumulus?) what are your expectation from HAL/ HW SDK prospective?  <br class=""><br class="">Cheers,<br class="">Jeff<br class=""><br class=""><br class=""><blockquote type="cite" class="">On Mar 26, 2017, at 12:02, Thomas Morin <<a href="mailto:thomas.morin@orange.com" class="">thomas.morin@orange.com</a>> wrote:<br class=""><br class="">Hi David,<br class=""><br class="">[adding my colleague Bruno to the list, he may correct things I might have oversimplified on segment routing, or have a idea about 12]<br class=""><br class="">2017-03-25, David Ahern:<br class=""><blockquote type="cite" class="">Eric's question below is basically adding labels at tunnel ingress vs<br class="">while traversing the LSP. I was generically increasing both to more than<br class="">2 labels. Opinions?<br class=""></blockquote><br class="">An MPLS packet may in transit receive additional labels. I most cases (all?), this will be most properly seen as a LSP hierarchy (tunneling one LSP into another LSP), so closer to a notion of ingress rather than something related to the initial LSP. But I don't know if the distinction is of importance.<br class=""><br class="">The cases that comes to mind would be:<br class="">- tunneling into a fast-reroute bypass LSP (possibly a segment routing LSP, see segment routing TI LFA)<br class="">- seamless MPLS<br class="">- carrier's carrier type of deployment<br class=""><br class="">In these cases a router could receive an MPLS packet, and possibly after popping the topmost, push a stack of labels onto the packet.<br class=""><br class="">About the email below:<br class="">- how did 12 end up being considered "covering all currently known segment routing use cases" ? it seems that SR could use an arbitrary number of labels  (not saying 12 is a bad number, but...)<br class="">- I'm not sure what Eric's idea of "running the packet a couple of times through the mpls table to get all of the desired labels applied" would mean: after the first lookup, what data would be used as key for the following lookup ?<br class="">- back to your question, which seems to imply one could possibly increase number of labels for ingress without increasing number of labels for transit: isn't the same datastructure used in both to represent an mpls next hop (in RFC3031, both the ILM and FTN point to NHLFE entries, but I haven't digged enough to identify how these maps to the kernel implementation)<br class="">- would a concept of a linked list of mpls_nh make sense, each with one label to impose, make sense, so that no hard limit is put on the label stack depth?<br class=""><br class="">-Thomas<br class=""><br class=""><br class=""><br class=""><blockquote type="cite" class="">-------- Forwarded Message --------<br class="">Subject: Re: [PATCH net-next 0/4] net: mpls: Allow users to configure<br class="">more labels per route<br class="">Date: Sat, 25 Mar 2017 14:15:54 -0500<br class="">From: Eric W. Biederman <<a href="mailto:ebiederm@xmission.com" class="">ebiederm@xmission.com</a>><br class="">To: David Ahern <<a href="mailto:dsa@cumulusnetworks.com" class="">dsa@cumulusnetworks.com</a>><br class="">CC: <a href="mailto:netdev@vger.kernel.org" class="">netdev@vger.kernel.org</a>, <a href="mailto:roopa@cumulusnetworks.com" class="">roopa@cumulusnetworks.com</a>, <a href="mailto:rshearma@brocade.com" class="">rshearma@brocade.com</a><br class=""><br class="">David Ahern <<a href="mailto:dsa@cumulusnetworks.com" class="">dsa@cumulusnetworks.com</a>> writes:<br class=""><br class=""><blockquote type="cite" class="">Bump the maximum number of labels for MPLS routes from 2 to 12. To keep<br class="">memory consumption in check the labels array is moved to the end of mpls_nh<br class="">and mpls_iptunnel_encap structs as a 0-sized array. Allocations use the<br class="">maximum number of labels across all nexthops in a route for LSR and the<br class="">number of labels configured for LWT.<br class=""><br class="">The mpls_route layout is changed to:<br class=""><br class=""> +----------------------+<br class=""> | mpls_route           |<br class=""> +----------------------+<br class=""> | mpls_nh 0            |<br class=""> +----------------------+<br class=""> | alignment padding    |   4 bytes for odd number of labels; 0 for even<br class=""> +----------------------+<br class=""> | via[rt_max_alen] 0   |<br class=""> +----------------------+<br class=""> | alignment padding    |   via's aligned on sizeof(unsigned long)<br class=""> +----------------------+<br class=""> | ...                  |<br class=""><br class="">Meaning the via follows its mpls_nh providing better locality as the<br class="">number of labels increases. UDP_RR tests with namespaces shows no impact<br class="">to a modest performance increase with this layout for 1 or 2 labels and<br class="">1 or 2 nexthops.<br class=""><br class="">The new limit is set to 12 to cover all currently known segment<br class="">routing use cases.<br class=""></blockquote><br class="">How does this compare with running the packet a couple of times through<br class="">the mpls table to get all of the desired labels applied?<br class=""><br class="">I can certainly see the case in an mpls tunnel ingress where this might<br class="">could be desirable.    Which is something you implement in your last<br class="">patch.  However is it at all common to push lots of labels at once<br class="">during routing?<br class=""><br class="">I am probably a bit naive but it seems absurd to push more<br class="">than a handful of labels onto a packet as you are routing it.<br class=""><br class="">Eric<br class=""><br class=""></blockquote><br class=""></blockquote><br class=""><br class="">_______________________________________________<br class="">frr mailing list<br class=""><a href="mailto:frr@lists.nox.tf" class="">frr@lists.nox.tf</a><br class="">https://lists.nox.tf/listinfo/frr<br class=""></div></div><div class=""><br class=""></div></body></html>