Subject: [mpls] Review of draft-ietf-mpls-lsp-ping-relay-reply-07

From: "Nobo Akiya" <[email-masked]>
Date: Sat, 21 Mar 2015 17:52:03 -0500

Hi Authors,

I was asked to provide a review of the following document:

http://tools.ietf.org/html/draft-ietf-mpls-lsp-ping-relay-reply-07 

The document is well written and addresses a real problem. I do have a
number of (mostly minor and some moderate) comments which I'd like to see
addressed before progressing the document.

Section 2
--------------

   Figure 1 demonstrates a case where one LSP is set up between PE1 and
   PE2.  If PE1's IP address is not distributed to AS2, a traceroute
   from PE1 directed to PE2 could fail if the fault exists somewhere
   between ASBR2 and PE2.

Above is not entirely accurate. The Traceroute from PE1 to PE2 can fail even
if there is no fault. It would be good to clarify this by saying "If PE1's
IP address is not distributed to AS2, a traceroute from PE1 directed towards
PE2 can result in a failure because an LSR in AS2 may not be able to send
the Echo Reply message".

   Note that throughout the document, routable address means that it is
   possible to route an IP packet to this address using the normal
   information exchanged by the IGP operating in the AS

Missing '.' (period) at the end of the paragraph.

   When tracing an LSP from one AN to the remote AN,
   the LSR1/LSR2 node could not make a response to the Echo Request
   either, like the P2 node in the inter-AS scenario in Figure 1.

"... could not make a response to the Echo Request either ..." can perhaps
be rephrased as "... cannot send the Echo Reply either ...", to be a bit
more clear. Yeah it's really a nitpick, but _making_ the response packet and
_sending_ the response packet are two different operations in a code.

Figure 3
--------------

Typically, the numbers at the top (i.e., bit positions 0, 1, 2, ...) are
aligned with columns with '-' character instead of '+' character. In other
words, let's shift the bit positions to the right by one space.

Section 3.3
--------------

s/the Reply/the Echo Reply/

Section 4.1
--------------

   When the Echo Request is first sent by the initiator included a Relay
   Node Address Stack TLV, the TLV MUST contain the initiator address as
   the only entry of the stack of relayed addresses,

I'd like to suggest rephrasing the first half of above sentence as follows.

When the initiator sends the first Echo Request for the Traceroute
operation, with a Relay Node Address Stack TLV, the TLV MUST contain ...

Section 4.2
--------------

   Those address entries with K bit set to 1 MUST be kept in the stack.
   The receiver MUST check the addresses of the stack in sequence from
   bottom to top to find the last address in the stack with the K bit
   set (or the top of the stack if no K bit was found).

Shouldn't above "find the last address in the stack with the K bit set"
instead say "find the last non-Null address in the stack with the K bit
set"? Otherwise the procedure will cause relay LSRs to always refer to this
Null address with K bit set, preventing the first initiator address to be
ever reached when searching for the next relay address. On a related topic,
what is the purpose of allowing a Null address entry with K bit set?

   If a node spans two addressing domains (with respect to this message)
   where nodes on either side may not be able to nodes in the other
   domain,

s/may not be able to nodes/may not be able to reach nodes/

   If a node spans two addressing domains (with respect to this message)
   where nodes on either side may not be able to nodes in the other
   domain, then the final address added MUST set the K bit.

Above procedures defines a strict operation (i.e., MUST) for the K bit
usage. However, how an LSR determines "If a node spans two addressing
domains where nodes on either side may not be ..." is very vague. It might
be possible that we can end up with different implementations of the K bit
setting because of this vagueness. What's your thoughts?

   If the full reply message would exceed the MTU size, the Relay Node
   Address Stack TLV MUST be returned back in the Echo Reply message.
   Some other TLV(s) MUST be dropped.

Well, it's possible that the Relay Node Address Stack TLV has grown so big
and that is the only optional TLV to be included in the Echo Reply. In that
case, the Relay Node Address Stack TLV cannot be included despite the
"MUST". I believe what you are trying to imply here is that the Relay Node
Address Stack TLV takes precedence over other optional TLVs, when
determining which optional TLVs to keep in the Echo Reply. In that case,
perhaps it is better to say "If the full reply message would exceed the MTU
size, the Relay Node Address Stack TLV SHOULD be included in the Echo Reply
message (i.e., other optional TLVs are excluded)."

Section 4.3
--------------

   The Destination Address determined in section 4.2 is used as the next
   relay node address.

Section 4.2 only describes how to update the Relay Node Address Stack TLV.
It also specifies how to update the Destination Address Pointer field.
However, nowhere in section 4.2 talk about how the Destination Address is
determined. I'm assuming "the Destination Address determined ..." is
referring to this address which the Destination Address Pointer is pointing
to. Perhaps it'll be a good idea, somewhere in section 4.2, to say "...
_this_ address is determined to be the Destination Address".

Section 4.4
--------------

   Upon receiving an Relayed Echo Reply message with its own address as
   the destination address in the IP header, the relay node MUST
   determine the next relay node address as described in section 4.3,
   with the modification that the location of the received Destination
   Address is used instead of the bottom of stack in the algorithm.

In above, I think you meant section 4.2 instead of section 4.3.

   The
   destination address in Relay Node Address Stack TLV will be updated
   with the next relay node address.

By "destination address" above, do you mean the Destination Address Pointer
field? If so, a bit of clarification is required. Otherwise, I'm not sure
what you mean by "destination address" above.

The document is not very clear on how these two fields are used.
- Source IP address field of the IP header
- Source Address of Replying Router field of the Relay Node Address Stack
TLV

I'd imagine you'd want one field to be set by the egress LSR and unmodified
by every upstream relay LSRs, and one field to be updated by the egress LSR
and every upstream relay LSR. This is sort of clarified in section 4.7, but
really should be part of the procedures.

Section 4.6
--------------

   During a traceroute operation, multiple Echo Request messages are
   sent.  Each time the TTL is increased, the initiator MUST copy the
   Relay Node Address Stack TLV received in the previous Echo Reply to
   the next Echo Request.

True but don't we want the initiator to "reset" some fields such as Reply
Add Type, Source Address of Replying Router and Destination Address Pointer?

Section 6
--------------

As an added security, a receiver of an MPLS Echo Request should verify that
the first address in the Relay Node Address Stack TLV is the same address as
the source IP address field of the received IP header.

Thanks!

-Nobo

---

From: "[email-masked]" <[email-masked]>
Date: Mon, 23 Mar 2015 23:48:11 +0800

Hi Nobo,
Thank you for the detail review again. See the reply inline below.

to authors,
Please also check, thanks.

Regards
Lizhong
 
From: Nobo Akiya
Date: 2015-03-22 06:52
To: [email-masked]
CC: [email-masked]; 'Loa Andersson'
Subject: Review of draft-ietf-mpls-lsp-ping-relay-reply-07
Hi Authors,

 
 
Section 2
--------------

[Lizhong] accepted.

[Lizhong] accepted.

[Lizhong] accepted.
 
Figure 3
--------------
 
Typically, the numbers at the top (i.e., bit positions 0, 1, 2, ...) are
aligned with columns with '-' character instead of '+' character. In other
words, let's shift the bit positions to the right by one space.
[Lizhong] good catch, thanks.
 
Section 3.3
--------------
 
[Lizhong] accepted.
 
Section 4.1
--------------

 
When the initiator sends the first Echo Request for the Traceroute
operation, with a Relay Node Address Stack TLV, the TLV MUST contain ...
[Lizhong] I'd like to remove "Traceroute" as below. Because in "Ping" mode,
the Relayed Echo Reply mechanism could still work.
When the initiator sends the first Echo Request with a Relay Node Address 
Stack TLV, the TLV MUST contain ...
 
Section 4.2
--------------

Shouldn't above "find the last address in the stack with the K bit set"
instead say "find the last non-Null address in the stack with the K bit
set"? Otherwise the procedure will cause relay LSRs to always refer to this
Null address with K bit set, preventing the first initiator address to be
ever reached when searching for the next relay address. On a related topic,
what is the purpose of allowing a Null address entry with K bit set?
[Lizhong]: please refer to the following in section 4.2.
   If a node spans two addressing domains (with respect to this message)
   where nodes on either side may not be able to nodes in the other
   domain, then the final address added MUST set the K bit.  K bit
   applies in the case of a NULL address, to serve as a warning to the
   initiator that further Echo Request messages may not result in
   receiving Echo Reply messages.
But I believe we need to update section 4.6 as below:
OLD:
Each time the TTL is increased, the initiator MUST copy the
   Relay Node Address Stack TLV received in the previous Echo Reply to
   the next Echo Request.
NEW:
Each time the TTL is increased, the initiator could copy the
   Relay Node Address Stack TLV in the previous Echo Reply to
   the next Echo Request. Some modifications could also be made to the stack TLV, e.g., delete the NIL entry.

[Lizhong] accepted

Above procedures defines a strict operation (i.e., MUST) for the K bit
usage. However, how an LSR determines "If a node spans two addressing
domains where nodes on either side may not be ..." is very vague. It might
be possible that we can end up with different implementations of the K bit
setting because of this vagueness. What's your thoughts?
[Lizhong] this is the principle of the implementation. How to know the 
address information is implementation specific. If fail to get the information,
then it is possible to fail for the echo reply. Maybe "SHOULD" is better here.

[Lizhong] agreed.
 
Section 4.3
--------------

Section 4.2 only describes how to update the Relay Node Address Stack TLV.
It also specifies how to update the Destination Address Pointer field.
However, nowhere in section 4.2 talk about how the Destination Address is
determined. I'm assuming "the Destination Address determined ..." is
referring to this address which the Destination Address Pointer is pointing
to. Perhaps it'll be a good idea, somewhere in section 4.2, to say "...
_this_ address is determined to be the Destination Address".
[Lizhong] good catch. See changes below:
OLD in section 4.2:
The Destination Address Pointer MUST be set to this entry. 
NEW
The Destination Address Pointer MUST be set to this entry which is also the Destination Address.
 
Section 4.4
--------------

[Lizhong] accepted
 
   The
 
By "destination address" above, do you mean the Destination Address Pointer
field? If so, a bit of clarification is required. Otherwise, I'm not sure
what you mean by "destination address" above.
[Lizhong] yes, changed as below:
The Destination Address Pointer in Relay Node Address Stack TLV will be set to
   the next relay node address. 

I'd imagine you'd want one field to be set by the egress LSR and unmodified
by every upstream relay LSRs, and one field to be updated by the egress LSR
and every upstream relay LSR. This is sort of clarified in section 4.7, but
really should be part of the procedures.
[Lizhong] in section 4.2, it says as below:
   Upon receiving a Relay Node Address Stack TLV in an Echo Request
   message, the receiver updates the "Source Address of Replying
   Router".  The address MUST be same as the source IP address of Relay
   Echo Reply (section 4.3) or Echo Reply message (section 4.5) being
   sent.
How to set Source IP address field of the IP header is a standard behavior, and
not speicified in this document.

Section 4.6
--------------

True but don't we want the initiator to "reset" some fields such as Reply
Add Type, Source Address of Replying Router and Destination Address Pointer?
[Lizhong] these fields will be reset by the reply node. But this section should still
be updated as described in previous comments.
 
Section 6
--------------
 
As an added security, a receiver of an MPLS Echo Request should verify that
the first address in the Relay Node Address Stack TLV is the same address as
the source IP address field of the received IP header.
[Lizhong] accepted, thanks.
 
Thanks!
 
-Nobo

---

From: "Nobo Akiya" <[email-masked]>
Date: Mon, 23 Mar 2015 16:35:49 -0500

Hi Lizhong,

Few more follow-up comments in-line with [NOBO].

From: [email-masked] [mailto:[email-masked]] 
Sent: March-23-15 10:48 AM
To: Nobo Akiya; draft-ietf-mpls-lsp-ping-relay-reply
Cc: mpls; loa
Subject: Re: Review of draft-ietf-mpls-lsp-ping-relay-reply-07

Hi Nobo,

to authors,

  _____  

Regards

Lizhong

From: Nobo Akiya <mailto:[email-masked]> 

Date: 2015-03-22 06:52

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

CC: [email-masked] <mailto:[email-masked]> ; 'Loa Andersson' <mailto:[email-masked]> 

Hi Authors,

Section 2

--------------

   between ASBR2 and PE2.

the Echo Reply message".

[Lizhong] accepted.

[Lizhong] accepted.

[Lizhong] accepted.

Figure 3

--------------

Section 3.3

--------------

[Lizhong] accepted.

Section 4.1

--------------

[NOBO] So perhaps what we want to say here is that the first address of the Relay Node Address Stack TLV in the MPLS Echo Request sent must be the same as the source IP address used in the sending packet. In other words, we should not have any text that restricts that there must only be one entry in the Relay Node Address Stack TLV. Then we can follow that up with texts like, when operating in the Traceroute mode, then the first Echo Request sent will have the Relay Node Address Stack TLV containing one local address.

Section 4.2

--------------

OLD:

   the next Echo Request.

NEW:

[NOBO] That’s a reasonable approach to address this, as long as the document states that the initiator MUST delete the NIL entry in subsequent Echo Requests. Otherwise, you will have a case where last entry with K bit set in the TLV is NIL, and described procedures will never reach the top (initiator) address.

   domain,

[Lizhong] accepted

[NOBO] Yes I would be more comfortable with SHOULD than MUST.

[Lizhong] agreed.

Section 4.3

--------------

   relay node address.

OLD in section 4.2:

NEW

Section 4.4

--------------

[Lizhong] accepted

   The

TLV

   sent.

[NOBO] Yes but when receiving an Relayed Echo Reply, how are those two fields updated? I’m guessing that the Source Address of Replying Router field is unmodified, and Source IP address field of the IP header is set to an address of the relay node? Clarifying this point will  be beneficial.

Section 4.6

--------------

   the next Echo Request.

[NOBO] I simply assumed that we want to clear:

-        the Source Address of Replying Router field (along with reply Add Type)

-        Destination Address Pointer

Since value of those fields are meaningless to the subsequent Echo Request. Is there any reason why you want to preserve those values for the subsequent Echo Request?

Thanks,

Nobo

Section 6

--------------

Thanks!

-Nobo

---

From: "[email-masked]" <[email-masked]>
Date: Wed, 25 Mar 2015 00:08:45 +0800

Hi Nobo,
See inline below. Thanks again for the review.

Regards
Lizhong
 
From: Nobo Akiya
Date: 2015-03-24 05:35
To: [email-masked]; 'draft-ietf-mpls-lsp-ping-relay-reply'
CC: 'mpls'; 'loa'
Subject: RE: Review of draft-ietf-mpls-lsp-ping-relay-reply-07
Hi Lizhong,

 
Hi Nobo,
 
to authors,

Regards
Lizhong
 
From: Nobo Akiya
Date: 2015-03-22 06:52

 
 
Section 2
--------------

 

 
 
Figure 3
--------------

Section 3.3
--------------

Section 4.1
--------------

 
 
[NOBO] So perhaps what we want to say here is that the first address of the Relay Node Address Stack TLV in the MPLS Echo Request sent must be the same as the source IP address used in the sending packet. In other words, we should not have any text that restricts that there must only be one entry in the Relay Node Address Stack TLV. Then we can follow that up with texts like, when operating in the Traceroute mode, then the first Echo Request sent will have the Relay Node Address Stack TLV containing one local address.
[Lizhong]: right, not necessary to say "only", but the traceroute related words seem to be included already. So rephrase as below.
When the initiator sends the first Echo Request with a Relay Node Address Stack TLV, the TLV MUST contain the initiator address as the first entry of the stack of relayed addresses, the destination address pointer set to this entry, and the source address of the replying router set to null. 

Section 4.2
--------------

 
[NOBO] That’s a reasonable approach to address this, as long as the document states that the initiator MUST delete the NIL entry in subsequent Echo Requests. Otherwise, you will have a case where last entry with K bit set in the TLV is NIL, and described procedures will never reach the top (initiator) address.
[Lizhong] Will add the following:
The NIL entry with K bit set MUST be deleted, otherwise the Echo Reply message will never be returned.

 

[Lizhong] great.

 
Section 4.3
--------------

 
Section 4.4
--------------

 
   The

 
 
[NOBO] Yes but when receiving an Relayed Echo Reply, how are those two fields updated? I’m guessing that the Source Address of Replying Router field is unmodified, and Source IP address field of the IP header is set to an address of the relay node? Clarifying this point will  be beneficial.
[Lizhong] your understanding is right. Add the following to section 4.3, 4.4 and 4.5.
The Source Address of Replying Router field is kept unmodified, and Source IP address field of the IP header is set to an address of the sending node. 

Section 4.6
--------------

 
[NOBO] I simply assumed that we want to clear:
-        the Source Address of Replying Router field (along with reply Add Type)
-        Destination Address Pointer
Since value of those fields are meaningless to the subsequent Echo Request. Is there any reason why you want to preserve those values for the subsequent Echo Request?
[Lizhong] Whether reseting the two fields will not affect the protocol function. Reseting two fields seems to be redundant. But if you like, we could say:
Reply Add Type, Source Address of Replying Router and Destination Address Pointer MAY be reset to 0.
 
Thanks,
Nobo

Section 6
--------------

Thanks!
 
-Nobo

---

From: "Nobo Akiya" <[email-masked]>
Date: Tue, 24 Mar 2015 14:27:51 -0500

Hi Lizhong,

From: [email-masked] [mailto:[email-masked]] 
Sent: March-24-15 11:09 AM
To: Nobo Akiya; draft-ietf-mpls-lsp-ping-relay-reply
Cc: mpls; loa
Subject: RE: Review of draft-ietf-mpls-lsp-ping-relay-reply-07

Hi Nobo,

  _____  

Regards

Lizhong

From:  <mailto:[email-masked]> Nobo Akiya

Date: 2015-03-24 05:35

To:  <mailto:[email-masked]> [email-masked];  <mailto:[email-masked]> 'draft-ietf-mpls-lsp-ping-relay-reply'

CC:  <mailto:[email-masked]> 'mpls';  <mailto:[email-masked]> 'loa'

Hi Lizhong,

From:  <mailto:[email-masked]> [email-masked] [ <mailto:[email-masked]> mailto:[email-masked]] 
Sent: March-23-15 10:48 AM
To: Nobo Akiya; draft-ietf-mpls-lsp-ping-relay-reply
Cc: mpls; loa
Subject: Re: Review of draft-ietf-mpls-lsp-ping-relay-reply-07

Hi Nobo,

to authors,

  _____  

Regards

Lizhong

From:  <mailto:[email-masked]> Nobo Akiya

Date: 2015-03-22 06:52

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

CC:  <mailto:[email-masked]> [email-masked];  <mailto:[email-masked]> 'Loa Andersson'

Hi Authors,

 <http://tools.ietf.org/html/draft-ietf-mpls-lsp-ping-relay-reply-07> http://tools.ietf.org/html/draft-ietf-mpls-lsp-ping-relay-reply-07 

Section 2

--------------

   between ASBR2 and PE2.

the Echo Reply message".

[Lizhong] accepted.

[Lizhong] accepted.

[Lizhong] accepted.

Figure 3

--------------

Section 3.3

--------------

[Lizhong] accepted.

Section 4.1

--------------

[NOBO2] Ok.

Section 4.2

--------------

OLD:

   the next Echo Request.

NEW:

[NOBO2] Ok.

   domain,

[Lizhong] accepted

[Lizhong] great.

[Lizhong] agreed.

Section 4.3

--------------

   relay node address.

OLD in section 4.2:

NEW

Section 4.4

--------------

[Lizhong] accepted

   The

TLV

   sent.

[NOBO2] Thanks.

Section 4.6

--------------

   the next Echo Request.

[NOBO2] That implies that those fields are meaningless when a node receives an MPLS Echo Request, so it’s better. However, perhaps the two aspects that the document should cover is:

-        Those fields may be preserved or may be reset for subsequent MPLS Echo Request.

-        Those fields are to be ignored in received MPLS Echo Request.

Thanks!

-Nobo

Thanks,

Nobo

Section 6

--------------

Thanks!

-Nobo

---

From: "[email-masked]" <[email-masked]>
Date: Wed, 25 Mar 2015 22:40:03 +0800

Hi Nobo,
You last comment is accepted. Thanks for the review.

Regards
Lizhong
 
From: Nobo Akiya
Date: 2015-03-25 03:27

Hi Nobo,

Regards
Lizhong
 
From: Nobo Akiya
Date: 2015-03-24 05:35

 
Hi Nobo,
 
to authors,

Regards
Lizhong
 
From: Nobo Akiya
Date: 2015-03-22 06:52

 
 
Section 2
--------------

 

 
 
Figure 3
--------------

Section 3.3
--------------

Section 4.1
--------------

 

[NOBO2] Ok.
 
Section 4.2
--------------

 
 
[NOBO2] Ok.

 

 
 
Section 4.3
--------------

 
Section 4.4
--------------

 
   The

 

[NOBO2] Thanks.

Section 4.6
--------------

 

Thanks!
 
-Nobo
 
Thanks,
Nobo

Section 6
--------------

Thanks!
 
-Nobo