Subject: Re: [mpls] I-D Action: draft-rosen-mpls-rfc3107bis-01.txt

From: Lucy yong <[email-masked]>
Date: Fri, 17 Jun 2016 20:02:43 +0000

Hi Eric,

It is good to extend MPLS to support multi label capability and operation. Here are some comments/suggestions to the draft.

*         Sn 3.2.2, the listed local policies seem all related to label swapping actions.
 it is valuable to add a new local policy as follow:

o   Add a single label or a sequence of labels to the NLRI before propagating the route.

     This policy results that, when a node receives a MPLS packet, it will pop out the label(s)
     and forward the packet to next hop.

*         Sn 4 data plane description is not sufficient. When applying mutli labels on data plane, we need to specify the rules to fill the label stack entries beside pushing labels; e.g. TTL, EXP. To backward comparable (RFC3032), need to clarify TTL, EXP processing applying to the top label before and after label process action.

*         This feature gives each next hop flexibility to determine how many labels to bind a prefix, which may impact Path MTU. We SHOULD avoid each path segment to fragment labeled packets. Either use PMTU discovery or configuration parameter to determine the proper MTU and limit the fragmentation to be done once. If a next hop decides to advertise different # of labels to different prefix, the case will be more complex. The draft needs describe this.

*         This example in Sn 4 is not correct.

   In this case, if S1 receives an MPLS data packet whose top label is
   L21 and whose second label is L22, S1 will remove both L21 and L22
  from the label stack, and replace them with <L11,L12,...L1k>.  Note
   that the fact that L21 is a context label is known only to S1; other
   BGP speakers do not know how S1 will interpret L21 (or L22).

   The ability to replace one or more labels by one or more labels can
   provide great flexibility, but must be done carefully.  Let's suppose
   again that S1 receives an UPDATE that specifies prefix P, label stack
   <L11,L12,...,L1k>, and next hop N1.  And suppose that S1 propagates
   this UPDATE to BGP speaker S2 after setting next hop self and after
   replacing the label field with <L21,L22,...L2k>.  Finally, suppose
   that S1 programs its data plane so that when it processes a received
   MPLS packet whose top label is L21, it replaces L21 with
   <L11,L12,...,L1k>, and then tunnels the packet to N1.

   In this case, BGP speaker S2 will have received a route with prefix
   P, label field <L21,L22,...L2k>, and next hop S1.  If S2 decides to
   forward an IP packet according to this route, it will push
   <L21,L22,...L2k> onto the packet's label stack, and tunnel the packet
   to S1.  S1 will replace L21 with <L11,L12,...,L1k>, and will tunnel
   the packet to N1.  N1 will receive the packet with the following
   label stack: <L11,L12,...L1k,L22,...L2k>.  While this may be useful
   in certain scenarios, it may provide unintended results in other
   scenarios. -end

   Lucy: Label <L21,L22,L2k> is advertised by S1, it does not make a sense that S1
   programs its data plane so that when it processes a received MPLS packet whose top label
   is L21, it replaces L21 with <L11,L12,..L1k>, and tunnel the packet to N1, i.e.
   N1 will receive the packet with the following
   label stack: <L11,L12,...L1k,L22,...L2k>. S1 should replace <L21, L22, ..L2k> with
   <L11,L12,...,L1k> in this case.

Regards,
Lucy

-----Original Message-----
From: mpls [mailto:[email-masked]] On Behalf Of [email-masked]
Sent: Tuesday, May 31, 2016 9:05 AM
To: [email-masked]
Cc: [email-masked]
Subject: [mpls] I-D Action: draft-rosen-mpls-rfc3107bis-01.txt

A New Internet-Draft is available from the on-line Internet-Drafts directories.

This draft is a work item of the Multiprotocol Label Switching of the IETF.

        Title           : Using BGP to Bind MPLS Labels to Address Prefixes

        Author          : Eric C. Rosen

      Filename        : draft-rosen-mpls-rfc3107bis-01.txt

      Pages           : 22

      Date            : 2016-05-31

Abstract:

   This document specifies a set of procedures for using BGP to

   advertise that a specified router has bound a specified MPLS label

   (or a specified sequence of MPLS labels, organized as a contiguous

   part of a label stack) to a specified address prefix.  This can be

   done by sending a BGP UPDATE message whose Network Layer Reachability

   Information field contains both the prefix and the MPLS label(s), and

   whose Next Hop field identifies the node at which said prefix is

   bound to said label(s).  This document obsoletes RFC 3107.

The IETF datatracker status page for this draft is:

https://datatracker.ietf.org/doc/draft-rosen-mpls-rfc3107bis/

There's also a htmlized version available at:

https://tools.ietf.org/html/draft-rosen-mpls-rfc3107bis-01

A diff from the previous version is available at:

https://www.ietf.org/rfcdiff?url2=draft-rosen-mpls-rfc3107bis-01

Please note that it may take a couple of minutes from the time of submission until the htmlized version and diff are available at tools.ietf.org.

Internet-Drafts are also available by anonymous FTP at:

ftp://ftp.ietf.org/internet-drafts/

_______________________________________________

mpls mailing list

[email-masked]<mailto:[email-masked]>

https://www.ietf.org/mailman/listinfo/mpls

---

From: Eric C Rosen <[email-masked]>
Date: Mon, 20 Jun 2016 15:06:35 -0400

Hi Lucy,

Thanks for reviewing the draft!
>
> ·Sn 3.2.2, the listed local policies seem all related to label 
> swapping actions.
>
> oAdd a single label or a sequence of labels to the NLRI before 
> propagating the route.
>
>      This policy results that, when a node receives a MPLS packet, it 
> will pop out the label(s) and forward the packet to next hop.
>
I think this is a sub-case of "replacing one label with multiple labels".
>
> ·Sn 4 data plane description is not sufficient. When applying mutli 
> labels on data plane, we need to specify the rules to fill the label 
> stack entries beside pushing labels; e.g. TTL, EXP. To backward 
> comparable (RFC3032), need to clarify TTL, EXP processing applying to 
> the top label before and after label process action.
>
3107bis does not convey TTL or TC values, so I think all we need to say 
is that "the setting of the TTL and TC fields in the label stack of a 
data packet is determined by local policy".
>
> ·This feature gives each next hop flexibility to determine how many 
> labels to bind a prefix, which may impact Path MTU. We SHOULD avoid 
> each path segment to fragment labeled packets.
>
MPLS does not have fragmentation, so it is not possible to fragment 
labeled packets ;-)

> Either use PMTU discovery or configuration parameter to determine the 
> proper MTU and limit the fragmentation to be done once. If a next hop 
> decides to advertise different # of labels to different prefix, the 
> case will be more complex. The draft needs describe this.
>
3107bis provides a mechanism that can be used to propagate an 
instruction to push a sequence of labels onto a packet's label stack.  
You're right that a router should not be instructed to push on so many 
labels that the MTU is exceeded.  But this is always an issue with MPLS, 
and is not specifically related to 3107bis.  It is outside the scope of 
this draft to specify procedures for determining the maximum number of 
labels that can be safely pushed.
>
> ·This example in Sn 4 is not correct.
>
>    label stack: <L11,L12,...L1k,L22,...L2k>.
>
Whether this example corresponds to an actual use case is debatable.  
The example merely shows something that can be done with the specified 
mechanisms.

This scenario would only be useful if S1 knows somehow that L22 will 
rise to the top of the packet's label stack at a node to which L22 is 
meaningful.
>
> S1 should replace <L21, L22, ..L2k> with
>
No, 3107bis does not (and should not) modify any of the rules for 
processing the label stack of an incoming packet.

Eric

---

From: Lucy yong <[email-masked]>
Date: Mon, 20 Jun 2016 19:38:42 +0000

Hi Eric,

Pls see inline below.

From: Eric C Rosen [mailto:[email-masked]]
Sent: Monday, June 20, 2016 2:07 PM
To: Lucy yong
Cc: [email-masked]
Subject: Re: [mpls] I-D Action: draft-rosen-mpls-rfc3107bis-01.txt

Hi Lucy,

o   Add a single label or a sequence of labels to the NLRI before propagating the route.
     This policy results that, when a node receives a MPLS packet, it will pop out the label(s) and forward the packet to next hop.
I think this is a sub-case of "replacing one label with multiple labels".
[Lucy] IMO, two are different. The case here does not replace any label in NLRI, just add one or multiple labels to the NLRI.

*         Sn 4 data plane description is not sufficient. When applying mutli labels on data plane, we need to specify the rules to fill the label stack entries beside pushing labels; e.g. TTL, EXP. To backward comparable (RFC3032), need to clarify TTL, EXP processing applying to the top label before and after label process action.
3107bis does not convey TTL or TC values, so I think all we need to say is that "the setting of the TTL and TC fields in the label stack of a data packet is determined by local policy".
[Lucy] True. But 3107 does describes data plane operation accordingly. So it should at least mention these fields setting must be compatible to RFC3032 because no intention to change here.

*         This feature gives each next hop flexibility to determine how many labels to bind a prefix, which may impact Path MTU. We SHOULD avoid each path segment to fragment labeled packets.
MPLS does not have fragmentation, so it is not possible to fragment labeled packets ;-)
[Lucy] pls check RFC3032.

Either use PMTU discovery or configuration parameter to determine the proper MTU and limit the fragmentation to be done once. If a next hop decides to advertise different # of labels to different prefix, the case will be more complex. The draft needs describe this.
3107bis provides a mechanism that can be used to propagate an instruction to push a sequence of labels onto a packet's label stack.
[Lucy] yes.
You're right that a router should not be instructed to push on so many labels that the MTU is exceeded.  But this is always an issue with MPLS, and is not specifically related to 3107bis.  It is outside the scope of this draft to specify procedures for determining the maximum number of labels that can be safely pushed.
[Lucy]  This mechanism adds more complex for Path MTU computation. It is good to point out it when describing data plane.

Whether this example corresponds to an actual use case is debatable.  The example merely shows something that can be done with the specified mechanisms.

This scenario would only be useful if S1 knows somehow that L22 will rise to the top of the packet's label stack at a node to which L22 is meaningful.
[Lucy] IMO: this is a fault case.

S1 should replace <L21, L22, ..L2k> with
   <L11,L12,...,L1k> in this case.
No, 3107bis does not (and should not) modify any of the rules for processing the label stack of an incoming packet.
[Lucy] ??
Lucy

Eric

---

From: Eric C Rosen <[email-masked]>
Date: Tue, 21 Jun 2016 10:56:00 -0400

> This policy results that, when a node receives a MPLS packet, it will 
> pop out the label(s) and forward the packet to next hop.
>
> */[Lucy] IMO, two are different. The case here does not replace any 
> label in NLRI, just add one or multiple labels to the NLRI. /*
>
That's the same as replacing <x> by <a,b,x>.
> *//*
> 3107bis does not convey TTL or TC values, so I think all we need to 
> say is that "the setting of the TTL and TC fields in the label stack 
> of a data packet is determined by local policy".
>
> */[Lucy] True. But 3107 does describes data plane operation 
> accordingly. So it should at least mention these fields setting must 
> be compatible to RFC3032 because no intention to change here./*
>
I'll add the following text:

    When pushing labels onto a packet's label stack, the Time-to-Live
    (TTL) field ([RFC3032], [RFC3443]) and the Traffic Class (TC) field
    ([RFC3032], [RFC5462]) of each label stack entry must of course be
    set.  This document does not specify any set of rules for setting
    these fields; that is a matter of local policy.

> *//*
> */[Lucy] pls check RFC3032./*
>
I'd forgotten that RFC3032 contains an elaborate discussion about 
applying IP fragmentation in the case where the MPLS payload is an IP 
datagram and pushing on labels might cause the MTU to be exceeded.   In 
1997, it seemed like that might be important, but I don't think those 
procedures are actually used much (if at all).

I don't think 3107bis needs to mention MTU issues, any more than any 
other draft that provides a way of distributing labels.
> *//*
> *//*
> labels that the MTU is exceeded.  But this is always an issue with 
> MPLS, and is not specifically related to 3107bis.  It is outside the 
> scope of this draft to specify procedures for determining the maximum 
> number of labels that can be safely pushed.
>
> */[Lucy]  This mechanism adds more complex for Path MTU computation. 
> It is good to point out it when describing data plane. /*
>
The "data plane" section of 3107bis is about forming a packet's label 
stack based on the information in SAFI-128 or SAFI-4 UPDATES. It is not 
a general discussion of MPLS data plane issues.
> *//*
> */[Lucy] IMO: this is a fault case./*
>
As I said, this is just an example of something you could do with the 
mechanisms of 3107bis.  If there's no use case for it, no one will do it.

> */[Lucy] ??/*
If S1 really wanted to replace <L21,L22,...,L2k> with <L11,L12,...,L1k> 
it would program each of <L21,L22,...,L2(k-1)> as a POP, and it would 
program L2k as a "POP and then PUSH <L11,L12,...,L2k>".  But that's a 
different example than the one given in the draft.

---

From: Lucy yong <[email-masked]>
Date: Tue, 21 Jun 2016 15:21:51 +0000

I thought about this example :) and think the followings may result different control plane and data plane operations.
Add <a,b>  to NLRI, ->  <a,b,x ...>
Replace <x> by  <a,b,x ...>

The first one works regardless if x exists or not, especially when x means multiple labels.

Lucy

From: Eric C Rosen [mailto:[email-masked]]
Sent: Tuesday, June 21, 2016 9:56 AM
To: Lucy yong
Cc: [email-masked]
Subject: Re: [mpls] I-D Action: draft-rosen-mpls-rfc3107bis-01.txt

*         This feature gives each next hop flexibility to determine how many labels to bind a prefix, which may impact Path MTU. We SHOULD avoid each path segment to fragment labeled packets.
MPLS does not have fragmentation, so it is not possible to fragment labeled packets ;-)
[Lucy] pls check RFC3032.
I'd forgotten that RFC3032 contains an elaborate discussion about applying IP fragmentation in the case where the MPLS payload is an IP datagram and pushing on labels might cause the MTU to be exceeded.   In 1997, it seemed like that might be important, but I don't think those procedures are actually used much (if at all).

I don't think 3107bis needs to mention MTU issues, any more than any other draft that provides a way of distributing labels.

You're right that a router should not be instructed to push on so many labels that the MTU is exceeded.  But this is always an issue with MPLS, and is not specifically related to 3107bis.  It is outside the scope of this draft to specify procedures for determining the maximum number of labels that can be safely pushed.
[Lucy]  This mechanism adds more complex for Path MTU computation. It is good to point out it when describing data plane.
The "data plane" section of 3107bis is about forming a packet's label stack based on the information in SAFI-128 or SAFI-4 UPDATES.  It is not a general discussion of MPLS data plane issues.

This scenario would only be useful if S1 knows somehow that L22 will rise to the top of the packet's label stack at a node to which L22 is meaningful.
[Lucy] IMO: this is a fault case.
As I said, this is just an example of something you could do with the mechanisms of 3107bis.  If there's no use case for it, no one will do it.

S1 should replace <L21, L22, ..L2k> with
   <L11,L12,...,L1k> in this case.
No, 3107bis does not (and should not) modify any of the rules for processing the label stack of an incoming packet.
[Lucy] ??
If S1 really wanted to replace <L21,L22,...,L2k> with <L11,L12,...,L1k> it would program each of <L21,L22,...,L2(k-1)> as a POP, and it would program L2k as a "POP and then PUSH <L11,L12,...,L2k>".  But that's a different example than the one given in the draft.