Re: [Teas] WG Last Call on draft-ietf-teas-gmpls-lsp-fastreroute-05

"Adrian Farrel" <adrian@olddog.co.uk> Wed, 15 June 2016 18:05 UTC

Return-Path: <adrian@olddog.co.uk>
X-Original-To: teas@ietfa.amsl.com
Delivered-To: teas@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 302C012D9DA for <teas@ietfa.amsl.com>; Wed, 15 Jun 2016 11:05:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.619
X-Spam-Level:
X-Spam-Status: No, score=-2.619 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Q1xjvgHHkzzc for <teas@ietfa.amsl.com>; Wed, 15 Jun 2016 11:05:18 -0700 (PDT)
Received: from asmtp3.iomartmail.com (asmtp3.iomartmail.com [62.128.201.159]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 34E9F12D874 for <teas@ietf.org>; Wed, 15 Jun 2016 11:05:17 -0700 (PDT)
Received: from asmtp3.iomartmail.com (localhost.localdomain [127.0.0.1]) by asmtp3.iomartmail.com (8.13.8/8.13.8) with ESMTP id u5FI5Edj030241; Wed, 15 Jun 2016 19:05:14 +0100
Received: from 950129200 (jplon-nat11.juniper.net [193.110.55.11]) (authenticated bits=0) by asmtp3.iomartmail.com (8.13.8/8.13.8) with ESMTP id u5FI52x0030182 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NO); Wed, 15 Jun 2016 19:05:03 +0100
From: Adrian Farrel <adrian@olddog.co.uk>
To: 'Vishnu Pavan Beeram' <vishnupavan@gmail.com>, teas@ietf.org
References: <CA+YzgTvxwGgKimyOa==VTVWfhoGwr_r1oYEh7Mz_6WhNvqAxEg@mail.gmail.com>
In-Reply-To: <CA+YzgTvxwGgKimyOa==VTVWfhoGwr_r1oYEh7Mz_6WhNvqAxEg@mail.gmail.com>
Date: Wed, 15 Jun 2016 19:04:57 +0100
Message-ID: <06e301d1c730$700cf4f0$5026ded0$@olddog.co.uk>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_NextPart_000_06E4_01D1C738.D1D94C30"
X-Mailer: Microsoft Outlook 14.0
Thread-Index: AQJ1OciCyjlkvPKh1oEvcPoJ9gCEyp6j7Maw
Content-Language: en-gb
X-TM-AS-MML: disable
X-TM-AS-Product-Ver: IMSS-7.1.0.1679-8.0.0.1202-22394.001
X-TM-AS-Result: No--24.935-10.0-31-10
X-imss-scan-details: No--24.935-10.0-31-10
X-TMASE-MatchedRID: yebcs53SkkDSw3nP8ewgPHBRIrj8R47FQPCWRE0Lo8IRGBl5KzzwoJlf IIoJIzJ5t0KXk7peKNW342ikYbSxXfO+1v+CuCQhYD9XTRdaMO1QCOsAlaxN7+OxOq7LQlGLiLv xs8vuNmYEexWEqS0/e9bDZUm716LdPO4UMN0S4O3gRxgvUtyKpJzgaKQCrSfqh8BhJvgqWBkiTB zOVyM14H/hU1Np6a63SUhgXTuyHdF8XbDftE7Is0M/y5EMs/JmzSnbR3NwN1y5IifwYL1+qxI9f Atn+ipxjMLrtfCoBpnPYV9GeDKRewvWKSf314zXjWe5HOFKvuPbfhPoK08N9VcZNuxCoduStx6L m/haEDxOcnrCnJXOuoJri8wpIXsPGpigU4seSLdIRA38P/dwbsI4/HWRf1tgOZFwp3VYjuUOk99 2ZGhwB6sojX6D5mJ0CTJMP6+kw5vrOSAC3t+JyJVIEKhlTKpsKVrLOZD1BXTkZs+OkNvWw2MNQ5 PkChIbTzXxv+S0Ulxx6IbyCGzzLPPtClEs9sT6p9ciXoJ/pWs0AKed0u9fBxjQD3m2MCf7FZVnC 8D3nqtcuAQwN9JEDx2crgWoXC6jSReiLCvBHEASWCj0fkOcnGXSofv/sdGO4q/WXXiA5Hw4Cy1T AHEtDQ2+/LMTETdnvsyOcarRlsJZw9tpBKtKOi4uTw19Klh6+Z9Bnb4S77Uz91mDYZLM5UTLx02 IcThUKEoTLfKqAzuaJj+m2zXkFflYy+7Yif7JLcLAlVGnzPrPTYo1Nwkfy82mvbig5LjGJz/Fli 73wMiFU9/ajlv8Te4f2crH8VUDe2AvRmABnaueAiCmPx4NwGmRqNBHmBve1B0Hk1Q1KyLm0EqN7 mnB3i1XUZZVE1iFlJx1UuGf0u+B+Eyc97Z/1Xoxa9U4vmov8QKZAT+JhkQ=
Archived-At: <https://mailarchive.ietf.org/arch/msg/teas/EEuJp3LSQlOcTozYpE0mcoqDUC8>
Subject: Re: [Teas] WG Last Call on draft-ietf-teas-gmpls-lsp-fastreroute-05
X-BeenThere: teas@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
Reply-To: adrian@olddog.co.uk
List-Id: Traffic Engineering Architecture and Signaling working group discussion list <teas.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/teas>, <mailto:teas-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/teas/>
List-Post: <mailto:teas@ietf.org>
List-Help: <mailto:teas-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/teas>, <mailto:teas-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 15 Jun 2016 18:05:22 -0000

Hi I reviewed this document as part of last call, having not paid attention to it for some considerable time.
 
This document describes what is essentially a simple a useful feature, but it over-complicates life (such as in 4.5.2), includes confusing text (such as in 1. and 4.5.1), and seems to miss some details.
 
I think the document could use more work before publication.
 
(Caveat - I do not have an implementation of this function that I am working on.)
 
Thanks,
Adrian
 
---
 
I found the Introduction particularly heavy to read. This is not an
uncommon problem because it is often the oldest text, used to exist to
justify the work, and is rarely updated except to add to the catalogue of
issues being addressed.
 
One of the problems described in the Introduction is unclear to me. The
text says
 
   When using FRR procedures with bidirectional co-routed GMPLS LSPs, it
   is possible in some cases for the RSVP signaling refreshes to stop
   reaching some nodes along the primary LSP path after the PLRs finish
   rerouting signaling onto the bypass tunnels.  This may occur when
   using node protection bypass tunnels after a link failure event and
   when RSVP signaling is sent in-fiber and in-band with data.  This is
   caused by the asymmetry of paths that may be taken by the
   bidirectional LSP's signaling in the forward and reverse directions
   after FRR reroute.  In such cases, the RSVP soft-state timeout 
   causes the protected bidirectional LSP to be destroyed, with
   subsequent traffic loss after FRR.
 
Firstly a minor point: you can strike "in-fiber and" since it is 
automatically covered by "in-band with data".
 
Now the main point. I think the problem you describe specifically arises
when the "asymmetry of paths that may be taken" extends to asymmetry of
PLR/MP pairs. That is, the choice of path is not relevant because the
bypass tunnel appears as a single hop, but if there is some mismatch of
PLR/MP choice then one direction of the protected LSP may pop out of its
protection tunnel at a different point from where the other enters its
protection tunnel.
 
It may be more helpful to express the Introduction in terms of
objectives and desires rather than complaints about deficiencies in 
4090. Thus...
 
1. You want the same PLR/MP pairs to be selected in each direction.
2. You want both PLRs to select the same bidirectional bypass tunnel.
3. You need next-hop-label and next-next-hop label exchanges to work
   for both directions of the protected LSP.
 
Now, assuming you do all of these, doesn't the soft-state timeout
problem go away? Or are you describing a different problem where you 
use node protection in the case of a link failure leaving a downstream
node up but not receiving refresh messages? I think that is a 4090
problem that is not specific to this draft and is generally solved by
not doing node protection for link failure!
 
---
 
The term "primary LSP" seems to be introduced in this document.
 
Maybe you should define it or replace it with "protected LSP" which is
what you probably mean.
 
In other protection work (in MPLS and CCAMP) the term "primary" is used
exchangeably with "working", and along with "secondary" and "backup". 
But, that doesn't seem appropriate here because you don't really have a
primary/secondary concept.
 
---
 
In 2.2 you define upstream/downstream PLR. You might do similar for MPs
because the definitions are not intuitive or consistent with previous
work.
 
Normally upstream and downstream are relative positional terms ("LSR A is
upstream of LSR B" or "the upstream LSR"), but you are using them in a
directional sense where we normally use "forward" and "reverse".
 
Thus, when you say "downstream PLR" you mean "the node upstream of the 
fault (i.e., between the ingress and the fault) that performs PLR 
function on the forward path". When used in your sense, we have 
typically said something far more longwinded but carefully clear, such 
as "the PLR for the downstream direction of traffic flow."
 
I think you should think about whether it would be helpful to change the
terms you use especially in view of the definition of MP in 4090 (and
reproduced in 2.2).
 
---
 
2.2
 
Is no familiarity with 3471, 3473, and 4090 assumed?
I wonder why you redefine (restate definitions of) terms from 4090.
(Expanding abbreviations is a fine thing to do.)
 
---
 
2.2
 
I think...
 
   LSR: An MPLS Label Switching Router.
   LSP: An MPLS Label Switched Path. 
 
---
 
2.2
 
I don't really think PRR is the most helpful name you could have given
to what is actually the "PLR on the forward path of the bidirectional 
LSP." From what is the PRR remote? 
 
Furthermore, in 6.2 you have...
 
   The downstream MP R5 that receives rerouted protected LSP RSVP Path
   message through the bypass tunnel, in addition to the regular MP
   processing defined in [RFC4090], gets promoted to a Point of Remote
   Repair (PRR) role and performs the following actions to re-coroute
   signaling and data traffic over the same path in both directions:
 
So the downstream MP is a PRR.
But using the definition from 2.2 the PRR is "an upstream PLR".
Meaning that the upstream PLR is the downstream MP?
 
---
 
3.
 
To be completely clear, where you have "These FRR procedures" I think
you mean "Those FRR procedures". That is, you mean that the FRR 
procedures or 4090 apply to bidirectional associated GMPLS LSPs, and
not that the procedures of this document apply to bidirectional
associated GMPLS LSPs.
 
---
 
In section 4.5 I found myself asking why you didn't use RFC 5750. The
function is the same, I suppose, so maybe it is about codepoints. 
 
I think I have a preference for keeping as few ERO/RRO subobjects 
having different presence rules as possible.
 
---
 
In 4.5.1 you have...
 
   When the BYPASS_ASSIGNMENT subobject is added in the RECORD_ROUTE
   Object:
 
     o The BYPASS_ASSIGNMENT subobject MUST be added prior to the
       Node-ID subobject containing the node's address.
 
     o The Node-ID subobject MUST also be added.
 
     o The IPv4 or IPv6 subobject MUST also be added.
 
     o The Label subobject MUST also be added.
 
You'll recall that there is no such thing as  "Node-ID subobject" per se
(see http://www.iana.org/assignments/rsvp-parameters/rsvp-parameters.xhtml#rsvp-parameters-24)
What you have available is IPv4 address subobjects and IPv6 address
subobjects that can contain addresses of interfaces or addresses of 
nodes and flags you can set to define the context per RFC 4561. You 
should rewrite in that context.
 
You might go to 6.1.3 of RFC 4990 and state which options are allowed 
and which cannot work with the BYPASS_ASSIGNMENT subobject.
 
BTW, does this not work with unnumbered interfaces, or did you forget?
 
I'm surprised that you put the BYPASS_SUBOBJECT before the IPv4/6
address subobject. This is counter to the way label subobjects are
placed after the IPv4/6 subobjects. Furthermore, how do I tell the
difference between node protection and link protection in this scheme?
Seems to me that you want to say that the location of the 
BYPASS_ASSIGNMENT object tells you whether it is the node or the link 
being protected, and that would work best by putting it after the thing
it protects.
 
it's worth noting (per RFC 3209) that labels are assigned in Resv 
messages so that in the first Path message setting up an LSP it is not
possible to include the Label subobject (contrary to your MUST?). This
means that the BYPASS_ASS subobject cannot be present on the Path that
sets up the LSP, but must be added later.
 
---
 
Surely you need a new error message for "BYPASS_ASSIGNMENT unknown"?
 
---
 
Hiding here, I think is the fact that the address of the node present in
an address subobject is used to identify the tunnel along with the 
tunnel ID. You need to be really careful because:
- a node may use multiple addresses to identify itself in different RROs
- a node may use multiple address to initiate signaling different 
  tunnels
 
You need to call this out more clearly.
 
---
 
In 4.5.1
 
   In the absence of BYPASS_ASSIGNMENT subobject, the upstream PLR
   (downstream MP) SHOULD NOT assign a bypass tunnel in the reverse
   direction.  This allows the downstream PLR to always initiate the
   bypass assignment and upstream PLR (downstream MP) to simply reflect
   the bypass assignment.
 
Doesn't this cause problems if only node protection is in use and it is 
the link downstream of the protected node that fails? In this case only 
the "upstream PLR" detects the failure, but it cannot act because the
BYPASS_ASSIGNMENT subobject wasn't present.
 
Perhaps your answer is "serves you right for not doing the right thing"
which would seem reasonable!
 
On the other hand, why do you create this problem for yourselves? When 
you say...
   The BYPASS_ASSIGNMENT subobject SHOULD be added by each downstream
   PLR in the RSVP Path RECORD_ROUTE message of the GMPLS signaled
   bidirectional primary LSP to record the downstream bidirectional
   bypass tunnel assignment.
...you could instead say...
   When the procedures defined in this document are in use, the
   BYPASS_ASSIGNMENT subobject MUST be added by each downstream PLR in
   the RSVP Path RECORD_ROUTE message of the GMPLS signaled 
   bidirectional primary LSP to record the downstream bidirectional
   bypass tunnel assignment.
 
Then you could say that the absence of the subobject means that the
relevant node/link is not protected by a bidirectional bypass tunnel.
 
---
 
In 4.5.1 you say...
 
   An upstream PLR (downstream MP) SHOULD examine the entire Path RRO
   and look at all BYPASS_ASSIGNMENT subobjects in order to assign a
   reverse bypass tunnel.  The choice of a reverse bypass tunnel (if
   multiple bypass tunnels exist) is based on the local policy on the
   downstream MP and is discussed in Section 4.5.2 of this document.
 
Naively, this conflicts with the previous paragraph that seems to say:
find a sub-object and use it. Maybe you should merge the paragraphs so 
is it is clear that you do *this* paragraph first, then apply 4.5.2, and
then apply the previous paragraph.
 
But I think you are making a rod for your own back! Parsing the whole
RRO is pretty ugly because of the amount of processing required, and 
will require the ability to step over unknown subobjects. But more on 
this in 4.5.2.
 
---
 
Finally for 4.5.1 you have...
 
   The bypass assignment co-ordination procedure described in this
   Section can be used for both one-to-one backup described in Section
   3.1 of [RFC4090] and facility backup described in Section 3.2 of
   [RFC4090].
 
This is true, but it is not so simple in a proper implementation. That 
is, it would be really neat if the upstream PLR could tell whether to do
one-to-one or facility backup without having to be globally configured.
And it may be necessary (OK, it is necessary) to have an error code when 
to report the BYPASS_ASSIGNMENT identifies a bypass tunnel that is
already in use for one-to-one protection.
 
---
 
I think 4.5.2 is just wrong :-(
 
The objective you have voiced is that the forward and reverse protection
paths should be the same. That means that the same pair of PLRs/MPs must
be selected, and they must use the same tunnel as well.
 
In this section you appear to say that the upstream PLR (i.e., the PLR
for the reverse path) has freedom to choose which protection tunnel to
use to carry the reverse path traffic, with the result that forward and
reverse protection may be on different tunnels.
 
Somehow (and I don't think this I-D does it) the two PLRs for any 
failure must agree which tunnel they are using. Hopefully (!) that
decision is made before the error is detected.
 
---
  
4.5.3
 
"MUST NOT be added to a Resv RRO"
 
Fair enough. Add a forward pointer to section 7.
But in section 7, please reference 3209 not 2205 (EROs/RROs did not
exist in standard RSVP until RSVP-TE came along.)
 
---
 
In section 5 I wasn't clear what happens if the error is only detected 
in one direction. Is it acceptable for only one of the Resv/Path to be
rerouted over the tunnel and for traffic in one direction only to use 
the tunnel? Or is the PLR that did not detect the error expected to 
see the rerouted message (or sniff the rerouted data) and switch 
accordingly in its turn?
 
The same question applies to reversion. Does this need to be 
coordinated?
 
From: Teas [mailto:teas-bounces@ietf.org] On Behalf Of Vishnu Pavan Beeram
Sent: 13 June 2016 05:32
To: teas@ietf.org
Subject: [Teas] WG Last Call on draft-ietf-teas-gmpls-lsp-fastreroute-05
 
All,
This starts a two week working group last call on
draft-ietf-teas-gmpls-lsp-fastreroute-05.

The working group last call ends on Monday, June 27th. Please
send your comments to the TEAS mailing list.

As is always the case, positive comments, e.g., "I've reviewed this
document and believe it is ready for publication", are welcome!
This is useful and important, even from authors.
Note, IPR has been disclosed on this draft.

Thanks,
Pavan (and Lou)