Subject: Re: [mpls] draft-kini-mpls-entropy-label-src-stacked-tunnels

From: "Nobo Akiya (nobo)" <[email-masked]>
Date: Mon, 3 Feb 2014 15:44:09 +0000

Hi Stephane, et al,

Adding authors of draft-ravisingh-mpls-el-for-seamless-mpls as I believe there's benefit in creating a consistent solution.

I strongly believe (and hope) that we do not want to go with a solution where label stack has multiple ELI/EL at any point in time. Increase in label stack size is concerning, but multiple ELI/EL becomes more concerning from OAM perspective, i.e. it becomes very difficult to compute EL to traverse specific path. Thus, I also think solution 3.3 described in draft-kini-mpls-entropy-label-src-stacked-tunnels is the best idea. But there is one issue.

Q: How does LSR, popping the outer label, determine whether it needs to carry over ELI/EL (re-insert ELI/EL below exposed top label)?

Section 5.3.2 of draft-ravisingh-mpls-el-for-seamless-mpls states:

  At an ingress LER, the router SHOULD not insert an (ELI+EL) for an
   LSP if the packet already contains an ELI.
   This ensures that for a data packet on a hierarchy of LSPs, there
   will be only 1 instance of an (ELI+EL). This helps to prevent the
   issue of section 4.3.1.

Taking the example from draft-ravisingh-mpls-el-for-seamless-mpls ...

                S1                  D1
                  \    ---------    /
                   A===B===C===D===E
                  /    ---------    \
                S2                  D2

   In the above topology, let there be the following LSPs:

        L1: B->D
        L2: A->E, tunneled through LSP L1
        L3: S1->D1, tunneled through LSP L2
        L4: S2->D2, tunneled through LSP L2

Let's say:

(1)    S1 does not push ELI/EL.

(2)    A pushes ELI/EL.

(3)    B does not push ELI/EL, since label stack already contains ELI/EL.

Behavior so far aligns with 5.3.2 of draft-ravisingh-mpls-el-for-seamless-mpls (snippet above). Ideally what should happen is:

(4)    D pops ELI/EL, and pushes (or carries over) ELI/EL below exposed top label.

(5)    E pops ELI/EL, and _does not_ push ELI/EL below exposed top label.

(6)    D1 receives data without any ELI/EL (as expected).

How does nodes D and E determine the right behavior?
>From what I've read in the two drafts, I don't see how this behavior is determined.

If we can address this issue, I think solution is applicable to Segment Routing label stack with ELI/EL, meaning behavior can apply to solution 3.3 of draft-kini-mpls-entropy-label-src-stacked-tunnels.

One possibility is to make use of TC or TTL of EL to keep track of carry-over number. Meaning:

When ELI/EL is not inserted in a new tunnel because ELI/EL exists in the label stack, then:

-        Increment carry-over number.

-        Move ELI/EL to below top label.
When data terminates a tunnel, then:

-        Decrement carry-over number.

-        If (carry-over != 0) re-insert ELI/EL to below exposed top label.

I'm no hardware expert either, and not sure if something like above can be implemented. But if possible, then ELI/EL pushed in SR network can pre-set carry-over number to certain value to ensure it is carried over below top label all the way though, and there is only one ELI/EL at any given time.

All this to say, I think there's a benefit in discussing this topic further, with both drafts in mind.

-Nobo

From: mpls [mailto:[email-masked]] On Behalf Of [email-masked]
Sent: Friday, January 31, 2014 9:12 AM
To: [email-masked]
Cc: [email-masked]
Subject: [mpls] draft-kini-mpls-entropy-label-src-stacked-tunnels

Hi Authors,

I would like to know if you are progressing on this draft ?
Entropy label support for stacked tunnels would be mandatory for us, so I would like to support the work on this topic to have a working solution as soon as possible.

Regarding the solutions you are proposing in the current version, there is none perfect one, and unfortunately all have drawbacks.
The compatibility (on LSR) with current generation of hardwares may be "good" (mandatory ?) for the target solution.

In your document , solution §3.3 "re-usable EL for a stack of tunnels" sounds for me to be the best base idea. I'm just wondering what would be the hardware impact of doing the reinsertion of ELI at tunnel end . Could this be done in one pass ? (IMHO, this may be possible, as today we are able to pop or swap + push FRR headers) As you are three different vendors as co-author, did you already evaluate such impact on your hardwares ? (I'm not expecting details on the mailing list, but I would be interested by details unicast to me and just yes/no on the the list)

To be exhaustive in listing solutions, did you think about leaving the EL/ELI at top of the stack ? I think there is already a case where a special label may be kept at top of the stack (MPLS Router alert).
What would be needed :

-        each hop need to advertise is ability to process EL, if nexthop cannot process EL, it should be removed when forwarded to nexthop (there should be the same requirement for re-usable EL)
I don't think this is really different from re-usable EL in the concept :

-        reusable EL : process top level forwarding label, if popped and next label is EL, pop ELI/EL and next label L, push pack ELI/EL and then L (we need to swap positions between ELI/EL and L) if nexthop is able to process EL.

-        top level EL : process top level ELI, ELI is recognized, ELI/EL is removed, forwarding is done on forwarding label, ELI/EL is pushed back in nexthop is able to process EL.

In term of operations, I think that top level EL may be simpler , but as I'm not hardware coder, may be I'm wrong ... moreover it may be similar to MPLS Router alert processing.

Your thoughts ?

Stephane

_________________________________________________________________________________________________________________________

Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc

pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler

a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,

Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.

This message and its attachments may contain confidential or privileged information that may be protected by law;

they should not be distributed, used or copied without authorisation.

If you have received this email in error, please notify the sender and delete this message and its attachments.

As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.

Thank you.

---

From: Sriganesh Kini <[email-masked]>
Date: Thu, 6 Feb 2014 14:03:52 -0800

Hi Stephane,

On Fri, Jan 31, 2014 at 6:11 AM, <[email-masked]> wrote:

> Entropy label support for stacked tunnels would be mandatory for us, so I
> would like to support the work on this topic to have a working solution as
> soon as possible.
>

Yes, we are progressing on this draft. Thanks for supporting this work.

>
>
>
>
> Regarding the solutions you are proposing in the current version, there is
> none perfect one, and unfortunately all have drawbacks.
>

Precisely why we wanted to put all the options on the table.

> The compatibility (on LSR) with current generation of hardwares may be
> “good” (mandatory ?) for the target solution.
>
>
>
> In your document , solution §3.3 “re-usable EL for a stack of tunnels”
> sounds for me to be the best base idea. I’m just wondering what would be
> the hardware impact of doing the reinsertion of ELI at tunnel end . Could
> this be done in one pass ? (IMHO, this may be possible, as today we are
> able to pop or swap + push FRR headers) As you are three different vendors
> as co-author, did you already evaluate such impact on your hardwares ? (I’m
> not expecting details on the mailing list, but I would be interested by
> details unicast to me and just yes/no on the the list)
>

This is vendor+platform specific question. IMO it is best if the details
are unicast.

>
>
> To be exhaustive in listing solutions, did you think about leaving the
> EL/ELI at top of the stack ? I think there is already a case where a
> special label may
>

Yes, we had considered this. Since it was not inline with RFC6790 and it is
almost exactly the same as the re-usable EL option, we did not include it.

>  be kept at top of the stack (MPLS Router alert).
>
> What would be needed :
>
> -          each hop need to advertise is ability to process EL, if
> nexthop cannot process EL, it should be removed when forwarded to nexthop
> (there should be the same requirement for re-usable EL)
>

EL capability advertisement via IGP is defined
in draft-xu-{isis|ospf}-mpls-elc. Re-inserting EL it at the next place in
the stack where the next EL capability LSR along the path is there is a
better option than just removing EL when nexthop is not EL capable. But
this unnecessary burden on transit LSR. A better alternative could be the
ingress since it can determine more easily as to which LSRs along the path
are not EL capable and then insert multiple ELs such that even if an EL is
dropped when nexthop is not EL capable, then another EL is available in the
stack when the packet reaches LSRs that are EL capable. The tradeoff is
increased stack size, but size increases only by the number of non EL
capable LSR segments along the path.

> I don’t think this is really different from re-usable EL in the concept :
>

Yes. But the differences are subtle.

> -          reusable EL : process top level forwarding label, if popped
> and next label is EL, pop ELI/EL and next label L, push pack ELI/EL and
> then L (we need to swap positions between ELI/EL and L) if nexthop is able
> to process EL.
>
Mostly correct. But note that when a tunnel-segment is terminated at a LSR,
the label-operation for next tunnel-segment is swap. In your example the
operation for the incoming label L would be swap, hence the outgoing label
may be L'. So the received ELI/EL needs to be pushed during this operation.
Advertising this capability is simple since this is the tunnel termination
point. When the operation is swap without terminating the tunnel-segment,
then ELI/EL is not at the top of stack so the transit LSR of the
tunnel-segment does not need any additional capability. So the "no transit
LSR change" property of RFC6790 is preserved. Only the LSRs that are
terminating tunnel-segments need the new capability.

> -          top level EL : process top level ELI, ELI is recognized,
> ELI/EL is removed, forwarding is done on forwarding label, ELI/EL is pushed
> back in nexthop is able to process EL.
>
The biggest drawback is that every LSR along every tunnel-segment should
now have the new behavior of pushing the received ELI/EL after the
forwarding label swap.

>
>
> In term of operations, I think that top level EL may be simpler , but as
> I’m not hardware coder, may be I’m wrong … moreover it may be similar to
> MPLS Router alert processing.
>

It is different from Router-alert processing. Here everything is in the
fast-path and processing has to be at line-rate. In case of Router-alert it
was handoff to a software module for slower-path processing.

> Your thoughts ?

I think top-level EL is harder to deploy and less in-line with RFC6790.

Sri

> _______________________________________________
> mpls mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/mpls
>
>

---

From: <[email-masked]>
Date: Wed, 12 Feb 2014 15:11:15 +0100

Hi Sri,

Pls find more inline

Best Regards,

Stephane

De : [email-masked] [mailto:[email-masked]] De la part de Sriganesh Kini
Envoyé : jeudi 6 février 2014 23:04
À : LITKOWSKI Stephane DTF/DERX
Cc : [email-masked]; [email-masked]
Objet : Re: [mpls] draft-kini-mpls-entropy-label-src-stacked-tunnels

Hi Stephane,

On Fri, Jan 31, 2014 at 6:11 AM, <[email-masked]<mailto:[email-masked]>> wrote:
Hi Authors,

The compatibility (on LSR) with current generation of hardwares may be “good” (mandatory ?) for the target solution.

In your document , solution §3.3 “re-usable EL for a stack of tunnels” sounds for me to be the best base idea. I’m just wondering what would be the hardware impact of doing the reinsertion of ELI at tunnel end . Could this be done in one pass ? (IMHO, this may be possible, as today we are able to pop or swap + push FRR headers) As you are three different vendors as co-author, did you already evaluate such impact on your hardwares ? (I’m not expecting details on the mailing list, but I would be interested by details unicast to me and just yes/no on the the list)

This is vendor+platform specific question. IMO it is best if the details are unicast.
[SLI] Yep ☺

To be exhaustive in listing solutions, did you think about leaving the EL/ELI at top of the stack ? I think there is already a case where a special label may

Yes, we had considered this. Since it was not inline with RFC6790 and it is almost exactly the same as the re-usable EL option, we did not include it.
 [SLI] Agree, put for now, I don’t really want to see this option discarded
be kept at top of the stack (MPLS Router alert).
What would be needed :

EL capability advertisement via IGP is defined in draft-xu-{isis|ospf}-mpls-elc. Re-inserting EL it at the next place in the stack where the next EL capability LSR along the path is there is a better option than just removing EL when nexthop is not EL capable. But this unnecessary burden on transit LSR. A better alternative could be the ingress since it can determine more easily as to which LSRs along the path are not EL capable and then insert multiple ELs such that even if an EL is dropped when nexthop is not EL capable, then another EL is available in the stack when the packet reaches LSRs that are EL capable. The tradeoff is increased stack size, but size increases only by the number of non EL capable LSR segments along the path.

[SLI] Rather than using a new subTLV for advertising ELC , it would be easier to just add a bit in the “Stacked tunnel” (ex segment routing) capability …

-          reusable EL : process top level forwarding label, if popped and next label is EL, pop ELI/EL and next label L, push pack ELI/EL and then L (we need to swap positions between ELI/EL and L) if nexthop is able to process EL.
Mostly correct. But note that when a tunnel-segment is terminated at a LSR, the label-operation for next tunnel-segment is swap.
[SLI] Yes, it may be swap or pop depending of the segment type.

In your example the operation for the incoming label L would be swap, hence the outgoing label may be L'. So the received ELI/EL needs to be pushed during this operation. Advertising this capability is simple since this is the tunnel termination point. When the operation is swap without terminating the tunnel-segment, then ELI/EL is not at the top of stack so the transit LSR of the tunnel-segment does not need any additional capability. So the "no transit LSR change" property of RFC6790 is preserved. Only the LSRs that are terminating tunnel-segments need the new capability.

[SLI] Right, but in a SPRING domain, any node will require this, especially when Traffic engineering use case is used and combination of node/adj segment may use any node.

-          top level EL : process top level ELI, ELI is recognized, ELI/EL is removed, forwarding is done on forwarding label, ELI/EL is pushed back in nexthop is able to process EL.
The biggest drawback is that every LSR along every tunnel-segment should now have the new behavior of pushing the received ELI/EL after the forwarding label swap.

[SLI] Not a big deal , as the node would require to be upgraded to support stacked tunnel also and all nodes in the SPRING domain will require a software upgrade …

In term of operations, I think that top level EL may be simpler , but as I’m not hardware coder, may be I’m wrong … moreover it may be similar to MPLS Router alert processing.

It is different from Router-alert processing. Here everything is in the fast-path and processing has to be at line-rate. In case of Router-alert it was handoff to a software module for slower-path processing.

[SLI] I hope than pop & push of router alert is handled in HW, just packet inspection is done in software (but maybe implementation dependent). We could keep fast path here, as we don’t need packet inspection, just pop, push.

Your thoughts ?

[SLI] Not sure it may be harder to deploy, but agree that it’s not inline with RC6790.
But anyway, I’m not pushing any solution now, discussions are needed to gather opinions/constraints of other people to define the best one.
Are you planning a session on this topic in London ?

Sri

Stephane

Thank you.

_______________________________________________
mpls mailing list
[email-masked]<mailto:[email-masked]>
https://www.ietf.org/mailman/listinfo/mpls