Subject: Re: [mpls] RFC5036 and "exceeds" / "reaches" limits on send and receive

From: Sandra Murphy <[email-masked]>
Date: Tue, 16 Jan 2018 16:16:29 -0500

oops, I don’t think I ever replied.

No, no outstanding issues, Eric’s explanation is thorough.  I think he agrees that “exceeds” is not quite correct but that “reached” implies the right meaning, and he thinks implementers would be doing the right thing (which I suspected, since things work).

So the language is and has been acceptable as is.  I don’t see a need to push for any further action.

—Sandy

> On Dec 1, 2017, at 11:13 PM, Loa Andersson <[email-masked]> wrote:
> 
> Sandy,
> 
> I think Eric's response is correct. Are there any outstanding issues?
> 
> /Loa
> 
> On 2017-11-21 00:31, Eric Gray wrote:
>> Sandy,
>> 	To answer the part of your question regarding whether the maximum (less than or equal to 255) could ever be exceeded, yes it could.  The procedure was written to support any non-zero maximum less than the maximum value possible.  However, it should say "that is greater than or equal to" the configured maximum, rather than "that exceeds" it.
>> 	I would be a bit surprised to discover that there are implementations where the implementer has not worked that out, but it is possible.  With loop-detection enabled, if you check to see if the received hop count is greater than or equal to the configured maximum, the test would detect the condition, even if the maximum was set to 255.
>> 	In a manner of speaking - since the text 3.4.5.1.1 uses "reached" with respect to "maximum Hop Count limit" - one could argue that "greater than or equal to" is implicit.  Since Loop detection is only enabled if using Path Vectors, this check would be performed if attempting to detect a loop during setup.
>> 	Note that an implementation can easily avoid this situation by treating any attempt to set a maximum value greater than MAX-Field-Value-minus-one as an error.
>> --
>> Eric Gray
>> -----Original Message-----
>> From: mpls [mailto:[email-masked]] On Behalf Of Sandra Murphy
>> Sent: Tuesday, November 14, 2017 10:40 PM
>> To: [email-masked]
>> Cc: Sandra Murphy <[email-masked]>
>> Subject: [mpls] RFC5036 and "exceeds" / "reaches" limits on send and receive
>> I am reading RFC5036, the LDP spec.
>> I’m finding the language about the loop detection to be a bit ambiguous.
>> The text varies as to whether a loop is detected when something “exceeds” the limit or when something “reaches” the limit.
>> Some examples below.
>> I read the algorithms in the Appendix as requiring a check for “exceeds” on receipt, but no check for either “exceeds” or “reaches” on send. I don’t see a requirement when sending any message to check the hop count or the path vector length to see if it has reached/exceeded the limit.  [The Appendix A procedure descriptions are said to take precedence over any description in the text.]
>> Does that mean that an LSR might send a message that was doomed to be rejected upon receipt?  Is that the intent?
>> For the hop count in particular - the hop count field, if I read the spec correctly, is one octet, so a maximum value of 255.  I have not found a requirement that the “configured maximum value” for the hop count MUST be strictly less than the Hop Count TLV’s largest possible hop count value.
>> So if an LSR is propagating a Label Request message that had a hop count of 255, it should increment the hop count when sending to its neighbor.  What happens then - what value is sent?  I don’t see this covered in the Appendix’s algorithms, and the text is ambiguous.
>> If an LSR is checking to see if a received message’s Hop Count TLV has a HC Value that exceeds the “configured maximum value”, and the configured maximum value is configured to be 255, would the test ever succeed?
>> I figure I’ve missed something fundamental, as implementors would have to have figured this out.  And the usual configured maximum values are not going to push either limit.  But still, it would be good to understand.
>> Thanks.
>> —Sandy
>> Some examples of “exceeds” and “reaches”
>> Section 2.8.2, p 26
>>       If R receives a Label Mapping message from its next hop with a Hop
>>       Count TLV that exceeds the configured maximum value, or with a
>>       Path Vector TLV containing its own LSR Id or that exceeds the
>>       maximum allowable length, then R detects that the corresponding
>>       LSP contains a loop.
>> Section 3.4.4.1, p 40
>>    If an LSR receives a message containing a Hop Count TLV, it MUST
>>    check the hop count value to determine whether the hop count has
>>    exceeded its configured maximum allowable value.  If so, it MUST
>>    behave as if the containing message has traversed a loop by sending a
>>    Notification message signaling Loop Detected in reply to the sender
>>    of the message.
>> Section 2.8, p 23
>>                                                an LSR that detects a
>>          Path Vector has reached the maximum length behaves as if the
>>          containing message has traversed a loop.
>>          An LSR that detects a Hop Count has reached a configured
>>          maximum value behaves as if the containing message has
>>          traversed a loop.
>> <In this case, there’s no indication if the LSR is checking the maximum on receipt of a message or on sending after having incremented the value.>
>> Section 3.4.5.1.1, p 42
>>    Note that a Label Request message with a Path Vector TLV is forwarded
>>    until:
>>       1. A loop is found,
>>       2. The LSP egress is reached, or
>>       3. The maximum Path Vector limit or maximum Hop Count limit is
>>          reached.  This is treated as if a loop had been detected.
>> _______________________________________________
>> mpls mailing list
>> [email-masked]
>> https://www.ietf.org/mailman/listinfo/mpls
>> _______________________________________________
>> mpls mailing list
>> [email-masked]
>> https://www.ietf.org/mailman/listinfo/mpls
> 
> -- 
> 
> 
> Loa Andersson                        email: [email-masked]
> Senior MPLS Expert
> Huawei Technologies (consultant)     phone: +46 739 81 21 64