[Pce] Benjamin Kaduk's Discuss on draft-ietf-pce-wson-rwa-ext-11: (with DISCUSS and COMMENT)

Benjamin Kaduk <kaduk@mit.edu> Sun, 03 February 2019 03:38 UTC

Return-Path: <kaduk@mit.edu>
X-Original-To: pce@ietf.org
Delivered-To: pce@ietfa.amsl.com
Received: from ietfa.amsl.com (localhost [IPv6:::1]) by ietfa.amsl.com (Postfix) with ESMTP id B912D130EF2; Sat, 2 Feb 2019 19:38:31 -0800 (PST)
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
From: Benjamin Kaduk <kaduk@mit.edu>
To: The IESG <iesg@ietf.org>
Cc: draft-ietf-pce-wson-rwa-ext@ietf.org, Daniele Ceccarelli <daniele.ceccarelli@ericsson.com>, pce-chairs@ietf.org, daniele.ceccarelli@ericsson.com, pce@ietf.org
X-Test-IDTracker: no
X-IETF-IDTracker: 6.90.0
Auto-Submitted: auto-generated
Precedence: bulk
Message-ID: <154916511174.18400.15146609335810321774.idtracker@ietfa.amsl.com>
Date: Sat, 02 Feb 2019 19:38:31 -0800
Archived-At: <https://mailarchive.ietf.org/arch/msg/pce/kNAPraEP9N9x3FJePNaQaTG1InM>
Subject: [Pce] Benjamin Kaduk's Discuss on draft-ietf-pce-wson-rwa-ext-11: (with DISCUSS and COMMENT)
X-BeenThere: pce@ietf.org
X-Mailman-Version: 2.1.29
List-Id: Path Computation Element <pce.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/pce>, <mailto:pce-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/pce/>
List-Post: <mailto:pce@ietf.org>
List-Help: <mailto:pce-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/pce>, <mailto:pce-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 03 Feb 2019 03:38:32 -0000

Benjamin Kaduk has entered the following ballot position for
draft-ietf-pce-wson-rwa-ext-11: Discuss

When responding, please keep the subject line intact and reply to all
email addresses included in the To and CC lines. (Feel free to cut this
introductory paragraph, however.)


Please refer to https://www.ietf.org/iesg/statement/discuss-criteria.html
for more information about IESG DISCUSS and COMMENT positions.


The document, along with other ballot positions, can be found here:
https://datatracker.ietf.org/doc/draft-ietf-pce-wson-rwa-ext/



----------------------------------------------------------------------
DISCUSS:
----------------------------------------------------------------------

I'm concerned that this is not sufficiently specified to be implementable
in an interoperable fashion.  In particular, I'm concerned that there need
to be some values allocated from IANA registries that are not currently
mentioned in this document, and there are some potential subtleties
surrounding data structure reuse that I'm not entirely sure about as well.

I include section-by-section comments in this DISCUSS section (populated by
duplicating my COMMENT section and trimming; my apologies is a comment is
duplicated in both ballot sections by mistake).

Section 4.1

   Additionally, given a range of potential labels to allocate, the
   request SHOULD convey the heuristic / mechanism to the allocation.

I can't tell which protocol interaction is being described here.

   <PCReq Message> ::= <Common Header>

                          [<svec-list>]

                          <request-list>

      Where:

         <request-list>::=<request>[<request-list>]

         <request>::= <RP>

                      <ENDPOINTS>

                      <WA>

                      [other optional objects...]

Is this intended to conform to any particular formal language, or is it an
ad hoc description?  Where is <svec-list> defined?  (RFC 5440 spells it as
"<END-POINTS>" and not "<ENDPOINTS>", BTW.)

   If the WA object is present in the request, it MUST be encoded after
   the ENDPOINTS object as defined in [PCEP-GMPLS]. Orderings with
   respect to the other following objects are irrelevant.

The prose and the figure do not exactly match up in this regard (is WA
optional or mandatory; does <WA> need to be the first of the optional
objects?).

     . Wavelength Selection TLV (32 bits): See Section 4.2 for
        details.

Either this is a proper TLV, in which case it has 32 bits of tag and length
plus an additional 32 bits of value, for 64 bits total, or it is not a TLV
and comprises solely of the "value" field of the Wavelength Selection
Sub-TLV.  Section 8.2 allocates a TLV type indicator for it, which suggests
that the full TLV encoding is intended; where are the 32 bits for type and
length reflected in this text and in the figure?

Section 4.3

   The Wavelength Restriction Constraint TLV type is TBD3 (See Section
   8.3). This TLV MAY appear more than once to be able to specify
   multiple restrictions.

This is in conflict with the diagram in Section 4.1 (which does not appear
to depict multiple occurrences).  It's also unclear
that the stated reasoning applies, since the RBNF indicates that (<Link
Identifiers> <Wavelength Restriction>) can repeat, so the need for multiple
TLVs is for different *action* (and count) rather than specifically for the
wavelength restrictions.

How are future "Action" values to be defined?

   Various encoding errors are possible with this TLV (e.g., not
   exactly two link identifiers with the range case, unknown identifier
   types, no matching link for a given identifier, etc.). To indicate
   errors associated with this type, a new Error-Type (TBD8) and an
   Error-value (Error-value=3) MUST be defined so that the PCE MUST
   send a PCErr message with a PCEP-ERROR Object. See Section 5.1 for
   the details.

This normative language is not appropriate -- it in effect is only
constraining the current document, so descriptive language of "a new error
type is assigned" is more appropriate.

What is the mechanism for extensibility of future Link Identifier sub-TLV
types?  Should there be a registry?

Section 4.3.2

RFC 6205 says that the "Identifier" is a per-node assigned and scoped
value that may change on a per-hop basis.  I don't see where our base label
gets scoped to a node (just that it's part of a PCReq message which does
not seem scoped to a node), so this seems problematic.

Section 4.4

   The END-POINTS type generalized endpoint is extended as follows:

   <endpoint-restrictions> ::= <LABEL-REQUEST>

                               <Wavelength Restriction Constraint>

                               [<signal-compatibility-restriction>...]

Where is the original <endpoint-restrictions> definition that is being
updated?  (Why does this definition not include the
<label-restriction-list> component from [PCEP-GMPLS]?)  Why is there no
Updates: relationship to reflect this extension?  Is <Wavelength
Restriction Constraint> supposed to be the same TLV as defined in Section
4.3.2 without a separate containing PCEP object?

Per [PCEP-GMPLS], <LABEL-REQUEST> is a TLV.  Does that not also mean that
<Wavelength Restriction Constraint> and <signal-compatibility-restriction>
need to be (comprised of) sibling TLVs?  This document allocates a TLV type
for Wavelength Restriction Constraint in Section 8.3, but the references to
RFC 7581 for <Optical Interface Class List> and <Client Signal Information>
seem to only be for the encoding of sub-TLVs, with sub-TLV values that live
in the separate "Types for Subfields of WSON Resource Block Information"
registry and are in a colliding namespace.  Don't we need to allocate TLV
values from the same place as <LABEL-REQUEST> (i.e., first-level PCEP TLVs)
in order for this to be en/decodable?

Section 4.4.1

   The permitted sub-sub objects are the Optical Interface Class List
   and the Client Signal information whose encodings are described in
   Section 4.1 and Section 4.2 of [RFC7581], respectively.

Similarly to for the <endpoint-restrictions>, don't we need to allocate XRO
Subobject values in order for these structures to be semantically
en/decodable?

Section 4.4.2

   This is supported by adding the sub-object "WSON Processing Hop
   Attribute TLV" defined for ERO in Section 4.2 [RFC7689] to the PCEP
   IRO object [RFC5440].

The referenced structure is defined as an RSVP-TE LSP attribute.
I cannot find any evidence that its usage in PCEP is defined, nor any TLV
or subobject type allocated for its usage with PCEP.  (Is there some
generic equivalence or mapping between (G)MPLS EROs and IROs and the PCEP
analogues that I haven't encountered yet?)  Don't we need to allocate an
IRO Subobject value for this usage in a PCEP IRO object?  Also, the WSON
Processing Hop Attribute field is encoded as a sequence of sub-TLVs; if we
want to reuse the same sub-TLVs from the existing usage, don't we need to
document the linkage from the existing registry to the new usage somewhere?
How does the error handling translate to PCEP usage?
This seems rather underspecified.

Section 5

I'm very confused by the structure definition.  It claims to be the "TLV
data", but also includes a type and length field so as to indicate that it
is not just the data contents but the header as well.  But the length field
is truncated by a bit for use as the 'M' flag -- how can we modify the
outer TLV header in this way?!  Section 8.4 indicates that this type value
is to be allocated from the "PCEP TLV Type Indicators" subregistry created
by RFC 5440, that uses the full 2 bytes for the "length" field.

Section 5.1

This section describes an Error-value=3 that is not reflected in Section
8.8 in the requests to IANA.

Section 8.5

Isn't this mentioned in Section 4.4 (not 4.3)?

Section 8.6

As above, isn't this mentioned in Section 4.4 (not 4.3)?


----------------------------------------------------------------------
COMMENT:
----------------------------------------------------------------------

Section 3

   A Lambda Switch Capable (LSC) Label Switched Path (LSP) may span one
   or several transparent segments, which are delimited by 3R
   regenerators (Re-amplification, Re-shaping, Re-timing) typically
   with electronic regenerator and optional wavelength conversion. Each
   transparent segment or path in WSON is referred to as an optical
   path. An optical path may span multiple fiber links and the path
   should be assigned the same wavelength for each link. In such case,
   the optical path is said to satisfy the wavelength-continuity
   constraint. Figure 1 illustrates the relationship between a LSC LSP
   and transparent segments (optical paths).

Some nit-level remarks: using "optical path" for both transparent segments
and paths is perhaps confusing; perhaps "an optical path in WSON refers to
a transparent pathe that can comprise of one or more segments".  If the
path "should be assigned the same wavelength for each link", what kind of
constraint is that?  Is it just a nice "feel-good" thing for humans, is
there some physical requirement for it, does it make planning simpler?  I
understand that this is lowercase and thus not intended to be normative,
but on first read it feels like the implication is that there is some
aspect of the physics that drives this to be the case; I don't actually
believe that to be true, though.  What entities would care if the
"wavelength-continuity constraint" is satisfied?  (That is, is it really a
"constraint" or more of a "property"?)

I'm a little confused by Figure 1, shich weems to imply by link labels that
the middle nodes that are not makred "(3R)" are LSC nodes, but isn't it the
case that if these nodes make use of their lamda switching capabilities
that they will cease to be transparent and instead also be 3Rs?

   Note that two optical paths within a WSON LSP do not need to operate
   on the same wavelength (due to the wavelength conversion
   capabilities). Two optical paths that share a common fiber link
   cannot be assigned the same wavelength; Otherwise, the two signals

Are these "two optical paths" part of the same or different LSPs?  My best
reading of the two instances of the phrase are that the first one is the
same LSP and the second usage is for different LSPs, which is pretty
confusing to the reader (if true).

Please expand PSC and TDM.

                            In order to improve the signal quality and
   limit some optical effects several advanced modulation processing
   capabilities are used. [...]

Used by this document specifically, or in general usage?

   This document, however, does not address optical impairments as part
   of RWA path computation.

Do we need a link/reference for "optical impairments"?

Section 4.1

   o  Reserved (16 bits): Reserved for future use and SHOULD be zeroed.

Do we also want to say "ignored on receipt"?

Please expand TED and NMS (IGP is "well-known" per
https://www.rfc-editor.org/materials/abbrev.expansion.txt).

Section 4.3


   Note that "interfaces" are assumed to be bidirectional.

You haven't used the term "interface" (with or without scare quotes) yet,
so this is a dangling reference.

How are future "Action" values to be defined?

   o  Reserved (16 bits): Reserved for future use and SHOULD be zeroed.

And ignored on receipt?

Section 4.3.2

If you're going to copy the Label Set format here from RFC 7579, maybe you
could say something like "repeated here for convenience, with the base
label internal structure included" to spare the reader from having to go
compare the two formats?  This also holds for the list of Action values and
the other field descriptions not already incorporated from RFC 7579 by
reference.

RFC 6205 says that the "Identifier" is a per-node assigned and scoped
value that may change on a per-hop basis.  I don't see where our base label
gets scoped to a node (just that it's part of a PCReq message which does
not seem scoped to a node), so this seems problematic.

Section 4.4

   Path computation for WSON includes checking of signal processing
   capabilities at each interface against requested capability; this
   requirement MAY be implemented by the IGP.  [...]

How is the IGP supposed to check the processing capabilities of an
interface against a given request?  I'd suggest rephrasing this text to
parallel the text in Section 4.3 about how mechanisms to know the interface
capabilities can include IGP or NMS.


   The supported signal processing capabilities are those described in
   [RFC7446]:

"Supported by what?"  Perhaps rephrase as "The signal processing
capabilities considered in the RWA Information Model [RFC7446] are:".

Section 4.4.1

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |X|  Type = X   |     Length    |   Reserved    | Attribute     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

I strongly suggest using a different placeholder than 'X' in "Type = X"
since there is a separate 'X' bit.

   Reserved bits (8 bits) are for future use and SHOULD be zeroed.

And ignored on receipt?

   The Attribute field (8 bits) indicates how the exclusion sub-object
   is to be interpreted. The Attribute can only be 0 (Interface) or 1
   (Node).

I would suggest phrasing this more like "[RFC5521] defines several
Attribute values; the only permitted Attribute values for this sub-object
are [...]".

Section 4.4.2

   This is supported by adding the sub-object "WSON Processing Hop
   Attribute TLV" defined for ERO in Section 4.2 [RFC7689] to the PCEP
   IRO object [RFC5440].

The referenced structure is defined as an RSVP-TE LSP attribute.
I cannot find any evidence that its usage in PCEP is defined, nor any TLV
or subobject type allocated for its usage with PCEP.  (Is there some
generic equivalence or mapping between (G)MPLS EROs and IROs and the PCEP
analogues that I haven't encountered yet?)  Don't we need to allocate an
IRO Subobject value for this usage in a PCEP IRO object?  Also, the WSON
Processing Hop Attribute field is encoded as a sequence of sub-TLVs; if we
want to reuse the same sub-TLVs from the existing usage, don't we need to
document the linkage from the existing registry to the new usage somewhere?
How does the error handling translate to PCEP usage?
This seems rather underspecified.

Section 5

   Option (b) allows distributed label allocation (performed during
   signaling) to complete wavelength allocation.

   The Wavelength Allocation TLV type is TBD4 (See Section 8.4). The
   TLV data is defined as follows:

Could you maybe give a bit more of transition/explanation, e.g., whether
this TLV is used for both (a) and (b), that it's a hop attribute that
appears in a TLV in the ERO's TLV list, etc.

   This TLV is encoded as an attributes TLV, per [RFC5420], which is
   carried in the ERO LSP Attribute Subobjects per [RFC7570].

RFC 7570 seems to call these "Hop Attribute Subobjects", if I'm finding the
right place.  Using consistent naming would be a big help to the (confused)
reader.

Section 6

Thank you for the Manageability Considerations section; it helps give a
picture of how this slots into the broader ecosystem.