draft-ietf-lsr-flex-algo-20.txt   draft-ietf-lsr-flex-algo-20-jgs-comments.txt
       
Skipping Skipping
  draft-ietf-lsr-flex-algo-20   draft-ietf-lsr-flex-algo-20
   
  Abstract   Abstract
   
  IGP protocols traditionally compute best paths over the network based   IGP protocols traditionally compute best paths over the network based
  on the IGP metric assigned to the links. Many network deployments   on the IGP metric assigned to the links. Many network deployments
  use RSVP-TE based or Segment Routing based Traffic Engineering to   use RSVP-TE based or Segment Routing based Traffic Engineering to
  steer traffic over a path that is computed using different metrics or   steer traffic over a path that is computed using different metrics or
  constraints than the shortest IGP path. This document proposes a   constraints than the shortest IGP path. This document specifies a
  solution that allows IGPs themselves to compute constraint-based   solution that allows IGPs themselves to compute constraint-based
  paths over the network. This document also specifies a way of using   paths over the network. This document also specifies a way of using
  Segment Routing (SR) Prefix-SIDs and SRv6 locators to steer packets   Segment Routing (SR) Prefix-SIDs and SRv6 locators to steer packets
  along the constraint-based paths.   along the constraint-based paths.
   
  Status of This Memo   Status of This Memo
   
  This Internet-Draft is submitted in full conformance with the   This Internet-Draft is submitted in full conformance with the
       
Skipping Skipping
  19. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 42   19. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 42
  20. References . . . . . . . . . . . . . . . . . . . . . . . . . 43   20. References . . . . . . . . . . . . . . . . . . . . . . . . . 43
  20.1. Normative References . . . . . . . . . . . . . . . . . . 43   20.1. Normative References . . . . . . . . . . . . . . . . . . 43
  20.2. Informative References . . . . . . . . . . . . . . . . . 45   20.2. Informative References . . . . . . . . . . . . . . . . . 45
  Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 46   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 46
   
  1. Introduction   1. Introduction
   
  An IGP-computed path based on the shortest IGP metric is often be   An IGP-computed path based on the shortest IGP metric is often
  replaced by a traffic-engineered path due to the traffic requirements   replaced by a traffic-engineered path due to requirements
  which are not reflected by the IGP metric. Some networks engineer   which are not reflected by the IGP metric. Some networks engineer
  the IGP metric assignments in a way that the IGP metric reflects the   the IGP metric assignments in a way that the IGP metric reflects the
  link bandwidth or delay. If, for example, the IGP metric is   link bandwidth or delay. If, for example, the IGP metric
  reflecting the bandwidth on the link and the user traffic is delay   reflects the bandwidth on the link and user traffic is delay
   
   
   
   
   
   
   
  sensitive, the best IGP path may not reflect the best path from such   sensitive, the best IGP path may not reflect the best path from such
  users' perspective.   a user's perspective.
    jgs: or "from such users' perspectives" but as it was written, there was a
    disagreement in number, so I made it singular 'user'.
   
  To overcome this limitation, various sorts of traffic engineering   To overcome this limitation, various sorts of traffic engineering
  have been deployed, including RSVP-TE and SR-TE, in which case the TE   have been deployed, including RSVP-TE and SR-TE, in which case the TE
  component is responsible for computing paths based on additional   component is responsible for computing paths based on additional
  metrics and/or constraints. Such paths need to be installed in the   metrics and/or constraints. Such paths need to be installed in the
  forwarding tables in addition to, or as a replacement for, the   forwarding tables in addition to, or as a replacement for, the
  original paths computed by IGPs. Tunnels are often used to represent   original paths computed by IGPs. Tunnels are often used to represent
  the engineered paths and mechanisms like one described in [RFC3906]   the engineered paths and mechanisms like the one described in [RFC3906]
  are used to replace the native IGP paths with such tunnel paths.   are used to replace the native IGP paths with such tunnel paths.
   
  This document specifies a set of extensions to IS-IS, OSPFv2, and   This document specifies a set of extensions to IS-IS, OSPFv2, and
  OSPFv3 that enable a router to advertise TLVs that (a) identify   OSPFv3 that enable a router to advertise TLVs that (a) identify
  calculation-type, (b) specify a metric-type, and (c) describe a set   calculation-type, (b) specify a metric-type, and (c) describe a set
  of constraints on the topology, that are to be used to compute the   of constraints on the topology, that are to be used to compute the
  best paths along the constrained topology. A given combination of   best paths along the constrained topology. A given combination of
  calculation-type, metric-type, and constraints is known as a   calculation-type, metric-type, and constraints is known as a
  "Flexible Algorithm Definition". A router that sends such a set of   "Flexible Algorithm Definition". A router that sends such a set of
  TLVs also assigns a Flex-Algorithm value to the specified combination   TLVs also assigns a Flex-Algorithm value to the specified combination
  of calculation-type, metric-type, and constraints.   of calculation-type, metric-type, and constraints.
   
  This document also specifies a way for a router to use IGPs to   This document also specifies a way for a router to use IGPs to
  associate one or more SR Prefix-SIDs or SRv6 locators with a   associate one or more Segment Routing (SR) Prefix-SIDs or Segment Routing over IPv6 (SRv6) locators with a
  particular Flex-Algorithm. Each such Prefix-SID or SRv6 locator then   particular Flex-Algorithm. Each such Prefix-SID or SRv6 locator then
  represents a path that is computed according to the identified Flex-   represents a path that is computed according to the identified Flex-
  Algorithm.   Algorithm.
    jgs: "SR" is in the well-known abbreviations list
    (https://www.rfc-editor.org/materials/abbrev.expansion.txt), but "SRv6"
    isn't. We could suggest the RFC Editor add "SRv6", but really it seems
    reader-friendly to expand these on first use anyway, as I've done with the
    text above.
    jgs: Making this edit also led me to wonder -- does "SR" above really mean
    "SR-MPLS"? Because "SR" as such is an architecture, right, not an
    instantiation? (SR-MPLS is also not in the well-known abbreviations list...)
    jgs: Please provide references for Prefix-SID and SRv6 locator?
    jgs: Finally, it seems to me as though a useful piece of context for the
    new reader is something like what I'm suggesting below:
    Not all routers in a given network need to participate in a given
    Flexible Algorithm. The Flexible Algorithm(s) a given router
    participates in is determined by configuration.
   
  2. Requirements Language   2. Requirements Language
   
  The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
  "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
  "OPTIONAL" in this document are to be interpreted as described in BCP   "OPTIONAL" in this document are to be interpreted as described in BCP
  14 [RFC2119] [RFC8174] when, and only when, they appear in all   14 [RFC2119] [RFC8174] when, and only when, they appear in all
  capitals, as shown here.   capitals, as shown here.
       
Skipping Skipping
  received from other nodes via IGP flooding.   received from other nodes via IGP flooding.
   
  Flexible Algorithm Participation - per data-plane configuration state   Flexible Algorithm Participation - per data-plane configuration state
  that expresses whether the node is participating in a particular   that expresses whether the node is participating in a particular
  Flexible Algorithm.   Flexible Algorithm.
   
  IGP Algorithm - value from the the "IGP Algorithm Types" registry   IGP Algorithm - value from the the "IGP Algorithm Types" registry
  defined under "Interior Gateway Protocol (IGP) Parameters" IANA   defined under "Interior Gateway Protocol (IGP) Parameters" IANA
  registries. IGP Algorithms represents the triplet (Calculation Type,   registry grouping. IGP Algorithms represents the triplet (Calculation Type,
  Metric, Constraints), where the second and third elements of the   Metric, Constraints), where the second and third elements of the
  triple MAY be unspecified.   triple MAY be unspecified.
   
  ABR - Area Border Router. In IS-IS terminology it is also known as   ABR - Area Border Router. In IS-IS terminology it is also known as
  L1/L2 router.   L1/L2 router.
   
  ASBR - Autonomous System Border Router.   ASBR - Autonomous System Border Router.
   
       
Skipping Skipping
  network. Some networks are deployed as multiple planes. A simple   network. Some networks are deployed as multiple planes. A simple
  form of constraint may be to use a particular plane. A more   form of constraint may be to use a particular plane. A more
  sophisticated form of constraint can include some extended metric as   sophisticated form of constraint can include some extended metric as
  described in [RFC8570]. Constraints which restrict paths to links   described in [RFC8570]. Constraints which restrict paths to links
  with specific affinities or avoid links with specific affinities are   with specific affinities or avoid links with specific affinities are
  also possible. Combinations of these are also possible.   also possible. Combinations of these are also possible.
   
  To provide maximum flexibility, we want to provide a mechanism that   To provide maximum flexibility, we want to provide a mechanism that
  allows a router to (a) identify a particular calculation-type, (b)   allows a router to (a) identify a particular calculation-type and (b)
  metric-type, (c) describe a particular set of constraints, and (d)   metric-type, (c) describe a particular set of constraints, and (d)
  assign a numeric identifier, referred to as Flex-Algorithm, to the   assign a numeric identifier, referred to as Flex-Algorithm, to the
  combination of that calculation-type, metric-type, and those   combination of that calculation-type, metric-type, and those
  constraints. We want the mapping between the Flex-Algorithm and its   constraints. We want the mapping between the Flex-Algorithm and its
  meaning to be flexible and defined by the user. As long as all   meaning to be flexible and defined by the user. As long as all
  routers in the domain have a common understanding as to what a   routers in the domain have a common understanding as to what a
  particular Flex-Algorithm represents, the resulting routing   particular Flex-Algorithm represents, the resulting routing
  computation is consistent and traffic is not subject to any looping.   computation is consistent and traffic is not subject to any looping.
       
Skipping Skipping
   
   
   
   
   
   
   
  Flexible-Algorithm is a numeric identifier in the range 128-255 that   Flexible-Algorithm is a numeric identifier in the range 128-255 that
  is associated via configuratin with the Flexible-Algorithm   is associated via configuration with the Flexible-Algorithm
  Definition.   Definition.
   
  IANA "IGP Algorithm Types" registry defines the set of values for IGP   The IANA "IGP Algorithm Types" registry defines the set of values for IGP
  Algorithms. We propose to allocate the following values for Flex-   Algorithms. The following values area allocated from this registry for Flex-
  Algorithms from this registry:   Algorithms:
   
  128-255 - Flex-Algorithms   128-255 - Flex-Algorithms
   
  5. Flexible Algorithm Definition Advertisement   5. Flexible Algorithm Definition Advertisement
   
  To guarantee the loop-free forwarding for paths computed for a   To guarantee loop-free forwarding for paths computed for a
  particular Flex-Algorithm, all routers that (a) are configured to   particular Flex-Algorithm, all routers that (a) are configured to
  participate in a particular Flex-Algorithm, and (b) are in the same   participate in a particular Flex-Algorithm, and (b) are in the same
  Flex-Algorithm definition advertisement scope MUST agree on the   Flex-Algorithm definition advertisement scope MUST agree on the
  definition of the Flex-Algorithm.   definition of the Flex-Algorithm.
    jgs: It would be correct -- wouldn't it? -- to add "The following procedures
    ensure this condition is fulfilled." If that's not wrong, I think it would
    help the new reader.
   
  5.1. IS-IS Flexible Algorithm Definition Sub-TLV   5.1. IS-IS Flexible Algorithm Definition Sub-TLV
   
  The IS-IS Flexible Algorithm Definition Sub-TLV (FAD Sub-TLV) is used   The IS-IS Flexible Algorithm Definition Sub-TLV (FAD Sub-TLV) is used
  to advertise the definition of the Flex-Algorithm.   to advertise the definition of the Flex-Algorithm.
   
  The IS-IS FAD Sub-TLV is advertised as a Sub-TLV of the IS-IS Router   The IS-IS FAD Sub-TLV is advertised as a Sub-TLV of the IS-IS Router
  Capability TLV-242 that is defined in [RFC7981].   Capability TLV-242 that is defined in [RFC7981].
       
Skipping Skipping
   
   
   
   
   
  Flex-Algorithm: Single octet value between 128 and 255 inclusive.   Flex-Algorithm: Single octet value between 128 and 255 inclusive.
   
  Metric-Type: Type of metric to be used during the calculation.   Metric-Type: Type of metric to be used during the calculation.
  Following values are defined:   The following values are defined:
   
  0: IGP Metric   0: IGP Metric
   
  1: Min Unidirectional Link Delay as defined in [RFC8570],   1: Min Unidirectional Link Delay as defined in [RFC8570],
  section 4.2, encoded as application specific link attribute as   section 4.2, encoded as application specific link attribute as
  specified in [RFC8919] and Section 12 of this document.   specified in [RFC8919] and Section 12 of this document.
   
  2: Traffic Engineering Default Metric as defined in [RFC5305],   2: Traffic Engineering Default Metric as defined in [RFC5305],
       
Skipping Skipping
  Types" registry defined under "Interior Gateway Protocol (IGP)   Types" registry defined under "Interior Gateway Protocol (IGP)
  Parameters" IANA registries. IGP algorithms in the range of 0-127   Parameters" IANA registries. IGP algorithms in the range of 0-127
  have a defined triplet (Calculation Type, Metric, Constraints).   have a defined triplet (Calculation Type, Metric, Constraints).
  When used to specify the Calc-Type in the FAD Sub-TLV, only the   When used to specify the Calc-Type in the FAD Sub-TLV, only the
  Calculation Type defined for the specified IGP Algorithm is used.   Calculation Type defined for the specified IGP Algorithm is used.
  The Metric/Constraints MUST NOT be inherited. If the required   The Metric/Constraints MUST NOT be inherited. If the required
  calculation type is Shortest Path First, the value 0 SHOULD appear   calculation type is Shortest Path First, the value 0 SHOULD appear
  in this field.   in this field.
    jgs: Why isn't the SHOULD a MUST? If SHOULD is appropriate, it would be
    desirable to explain the anticipated exception cases here.
   
  Priority: Value between 0 and 255 inclusive that specifies the   Priority: Value between 0 and 255 inclusive that specifies the
  priority of the advertisement.   priority of the advertisement. Numerically greater values are
    preferred.
    jgs: I see that in 5.3 (1) you tell us that this is a higher-better value.
    It might be nice to mention that here. I've suggested text above.
   
  Sub-TLVs - optional sub-TLVs.   Sub-TLVs - optional sub-TLVs.
   
  The IS-IS FAD Sub-TLV MAY be advertised in an LSP of any number. IS-   The IS-IS FAD Sub-TLV MAY be advertised in an LSP of any number. IS-
  IS router MAY advertise more than one IS-IS FAD Sub-TLV for a given   IS router MAY advertise more than one IS-IS FAD Sub-TLV for a given
  Flexible-Algorithm (see Section 6).   Flexible-Algorithm (see Section 6).
   
  The IS-IS FAD Sub-TLV has an area scope. The Router Capability TLV   The IS-IS FAD Sub-TLV has an area scope. The Router Capability TLV
  in which the FAD Sub-TLV is present MUST have the S-bit clear.   in which the FAD Sub-TLV is present MUST have the S-bit clear.
   
  IS-IS L1/L2 router MAY be configured to re-generate the winning FAD   An IS-IS L1/L2 router MAY be configured to re-generate the winning FAD
  from level 2, without any modification to it, to level 1 area. The   from level 2, without any modification to it, to the level 1 area. The
  re-generation of the FAD Sub-TLV from level 2 to level 1 is   re-generation of the FAD Sub-TLV from level 2 to level 1 is
  determined by the L1/L2 router, not by the originator of the FAD   determined by the L1/L2 router, not by the originator of the FAD
  advertisement in the level 2. In such case, the re-generated FAD   advertisement in the level 2. In such a case, the re-generated FAD
  Sub-TLV will be advertised in the level 1 Router Capability TLV   Sub-TLV will be advertised in the level 1 Router Capability TLV
  originated by the L1/L2 router.   originated by the L1/L2 router.
   
  L1/L2 router MUST NOT re-generate any FAD Sub-TLV from level 1 to   An L1/L2 router MUST NOT re-generate any FAD Sub-TLV from level 1 to
  level 2.   level 2.
   
   
   
   
   
   
   
  5.2. OSPF Flexible Algorithm Definition TLV   5.2. OSPF Flexible Algorithm Definition TLV
   
  OSPF FAD TLV is advertised as a top-level TLV of the RI LSA that is   The OSPF FAD TLV is advertised as a top-level TLV of the Router Information (RI) LSA that is
  defined in [RFC7770].   defined in [RFC7770].
   
  OSPF FAD TLV has the following format:   The OSPF FAD TLV has the following format:
   
   
  0 1 2 3   0 1 2 3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  | Type | Length |   | Type | Length |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |Flex-Algorithm | Metric-Type | Calc-Type | Priority |   |Flex-Algorithm | Metric-Type | Calc-Type | Priority |
       
Skipping Skipping
  Type: 16   Type: 16
   
  Length: variable, dependent on the included Sub-TLVs   Length: variable, dependent on the included Sub-TLVs
   
  Flex-Algorithm:: Flex-Algorithm number. Value between 128 and 255   Flex-Algorithm:: Flex-Algorithm number. Value between 128 and 255
  inclusive.   inclusive.
   
  Metric-Type: Type of metric to be used during the calculation.   Metric-Type: Type of metric to be used during the calculation.
  Following values are defined:   The following values are defined:
   
  0: IGP Metric   0: IGP Metric
   
  1: Min Unidirectional Link Delay as defined in [RFC7471],   1: Min Unidirectional Link Delay as defined in [RFC7471],
  section 4.2, encoded as application specific link attribute as   section 4.2, encoded as application specific link attribute as
  specified in [RFC8920] and Section 12 of this document.   specified in [RFC8920] and Section 12 of this document.
   
  2: Traffic Engineering metric as defined in [RFC3630], section   2: Traffic Engineering metric as defined in [RFC3630], section
       
Skipping Skipping
  in multiple Router Information LSAs that have the same flooding   in multiple Router Information LSAs that have the same flooding
  scope, the OSPF FAD TLV in the Router Information (RI) LSA with the   scope, the OSPF FAD TLV in the Router Information (RI) LSA with the
  numerically smallest Instance ID MUST be used and subsequent   numerically smallest Instance ID MUST be used and subsequent
  instances of the OSPF FAD TLV MUST be ignored.   instances of the OSPF FAD TLV MUST be ignored.
   
  The RI LSA can be advertised at any of the defined opaque flooding   The RI LSA can be advertised at any of the defined opaque flooding
  scopes (link, area, or Autonomous System (AS)). For the purpose of   scopes (link, area, or Autonomous System (AS)). For the purpose of
  OSPF FAD TLV advertisement, area-scoped flooding is REQUIRED. The   OSPF FAD TLV advertisement, area-scoped flooding is REQUIRED. The
  Autonomous System flooding scope SHOULD NOT be used by default unless   Autonomous System flooding scope SHOULD NOT be used unless
  local configuration policy on the originating router indicates domain   local configuration policy on the originating router indicates domain
  wide flooding.   wide flooding.
   
  5.3. Common Handling of Flexible Algorithm Definition TLV   5.3. Common Handling of Flexible Algorithm Definition TLV
   
  This section describes the protocol-independent handling of the FAD   This section describes the protocol-independent handling of the FAD
  TLV (OSPF) or FAD Sub-TLV (IS-IS). We will refer to it as FAD TLV in   TLV (OSPF) or FAD Sub-TLV (IS-IS). We will refer to it as FAD TLV in
  this section, even though in the case of IS-IS it is a Sub-TLV.   this section, even though in the case of IS-IS it is a Sub-TLV.
       
Skipping Skipping
  The value of the Flex-Algorithm MUST be between 128 and 255   The value of the Flex-Algorithm MUST be between 128 and 255
  inclusive. If it is not, the FAD TLV MUST be ignored.   inclusive. If it is not, the FAD TLV MUST be ignored.
   
  Only a subset of the routers participating in the particular Flex-   Only a subset of the routers participating in the particular Flex-
  Algorithm need to advertise the definition of the Flex-Algorithm.   Algorithm need to advertise the definition of the Flex-Algorithm.
   
  Every router, that is configured to participate in a particular Flex-   Every router, that is configured to participate in a particular Flex-
  Algorithm, MUST select the Flex-Algorithm definition based on the   Algorithm, MUST select the Flex-Algorithm definition based on the
  following ordered rules. This allows for the consistent Flex-   following ordered rules. This allows for consistent Flex-
  Algorithm definition selection in cases where different routers   Algorithm definition selection in cases where different routers
  advertise different definitions for a given Flex-Algorithm:   advertise different definitions for a given Flex-Algorithm:
   
  1. From the advertisements of the FAD in the area (including both   1. From the advertisements of the FAD in the area (including both
  locally generated advertisements and received advertisements)   locally generated advertisements and received advertisements)
  select the one(s) with the highest priority value.   select the one(s) with the numerically greatest priority value.
   
  2. If there are multiple advertisements of the FAD with the same   2. If there are multiple advertisements of the FAD with the same
  highest priority, select the one that is originated from the   numerically greatest priority, select the one that is originated from the
  router with the highest System-ID, in the case of IS-IS, or Router   router with the numerically greatest System-ID, in the case of IS-IS, or Router
  ID, in the case of OSPFv2 and OSPFv3. For IS-IS, the System-ID is   ID, in the case of OSPFv2 and OSPFv3. For IS-IS, the System-ID is
   
   
   
   
   
   
   
  described in [ISO10589]. For OSPFv2 and OSPFv3, standard Router   described in [ISO10589]. For OSPFv2 and OSPFv3, standard Router
  ID is described in [RFC2328] and [RFC5340] respectively.   ID is described in [RFC2328] and [RFC5340] respectively.
    The FAD selected according to these rules is also known as the
    "winning FAD".
    jgs: I suggested the above text because you refer to the "winning FAD" multiple
    places but don't formally define that term.
   
  A router that is not configured to participate in a particular Flex-   A router that is not configured to participate in a particular Flex-
  Algorithm MUST ignore FAD Sub-TLVs advertisements for such Flex-   Algorithm MUST ignore FAD Sub-TLVs advertisements for such Flex-
  Algorithm.   Algorithm.
   
  A router that is not participating in a particular Flex-Algorithm is   A router that is not participating in a particular Flex-Algorithm is
  allowed to advertise FAD for such Flex-Algorithm. Receiving routers   allowed to advertise FAD for such Flex-Algorithm. Receiving routers
  MUST consider FAD advertisement regardless of the Flex-Algorithm   MUST consider a received FAD advertisement regardless of the Flex-Algorithm
  participation of the FAD originator.   participation of that FAD advertisement's originator.
   
  Any change in the Flex-Algorithm definition may result in temporary   Any change in the Flex-Algorithm definition may result in temporary
  disruption of traffic that is forwarded based on such Flex-Algorithm   disruption of traffic that is forwarded based on such Flex-Algorithm
  paths. The impact is similar to any other event that requires   paths. The impact is similar to any other event that requires
  network-wide convergence.   network-wide convergence.
    jgs: IMO this would merit discussion in the Operational Considerations
    section. In particular, is there any advice regarding how to
    stage/sequence FAD config changes in order to minimize disruption?
   
  If a node is configured to participate in a particular Flexible-   If a node is configured to participate in a particular Flexible-
  Algorithm, but there is no valid Flex-Algorithm definition available   Algorithm, but there is no valid Flex-Algorithm definition available
  for it, or the selected Flex-Algorithm definition includes   for it, or the selected Flex-Algorithm definition includes
  calculation-type, metric-type, constraint, flag, or Sub-TLV that is   calculation-type, metric-type, constraint, flag, or Sub-TLV that is
  not supported by the node, it MUST stop participating in such   not supported by the node, it MUST stop participating in such
  Flexible-Algorithm. That implies that it MUST NOT announce   Flexible-Algorithm. That implies that it MUST NOT announce
  participation for such Flexible-Algorithm as specified in Section 11   participation for such Flexible-Algorithm as specified in Section 11
       
Skipping Skipping
  One of the limitations of IS-IS [ISO10589] is that the length of a   One of the limitations of IS-IS [ISO10589] is that the length of a
  TLV/sub-TLV is limited to a maximum of 255 octets. For the FAD sub-   TLV/sub-TLV is limited to a maximum of 255 octets. For the FAD sub-
  TLV, there are a number of sub-sub-TLVs (defined below) which are   TLV, there are a number of sub-sub-TLVs (defined below) which are
  supported. For a given Flex-Algorithm, it is possible that the total   supported. For a given Flex-Algorithm, it is possible that the total
  number of octets required to completely define a FAD exceeds the   number of octets required to completely define a FAD exceeds the
  maximum length supported by a single FAD sub-TLV. In such cases, the   maximum length supported by a single FAD sub-TLV. In such cases, the
  FAD may be split into multiple such sub-TLVs and the content of the   FAD may be split into multiple such sub-TLVs and the content of the
  multiple FAD sub-TLVs combined to provide a complete FAD for the   multiple FAD sub-TLVs combined to provide a complete FAD for the
  Flex-Algorithm. In such case, the fixed portion of the FAD (see   Flex-Algorithm. In such a case, the fixed portion of the FAD (see
  Section 5.1) MUST be identical in all FAD sub-TLVs for a given Flex-   Section 5.1) MUST be identical in all FAD sub-TLVs for a given Flex-
  Algorithm from a given IS. In case the fixed portion of such FAD   Algorithm from a given IS. In case the fixed portion of such FAD
  Sub-TLVs differ, the values in the fixed portion in the FAD sub-TLV   Sub-TLVs differ, the values in the fixed portion in the FAD sub-TLV
  in the first occurrence in the lowest numbered LSP from a given IS   in the first occurrence in the lowest numbered LSP from a given IS
  MUST be used.   MUST be used.
   
  Any specification that introduces a new ISIS FAD sub-sub-TLV MUST   Any specification that introduces a new IS-IS FAD sub-sub-TLV MUST
  specify whether the FAD sub-TLV may appear multiple times in the set   specify whether the FAD sub-TLV may appear multiple times in the set
   
   
   
   
   
   
  of FAD sub-TLVs for a given Flex-Algorithm from a given IS and how to   of FAD sub-TLVs for a given Flex-Algorithm from a given IS and how to
       
Skipping Skipping
  defined in [RFC7308].   defined in [RFC7308].
   
  The IS-IS FAEAG Sub-TLV MUST NOT appear more than once in a single   The IS-IS FAEAG Sub-TLV MUST NOT appear more than once in a single
  IS-IS FAD Sub-TLV. If it appears more than once, the IS-IS FAD Sub-   IS-IS FAD Sub-TLV. If it appears more than once, the IS-IS FAD Sub-
  TLV MUST be ignored by the receiver.   TLV MUST be ignored by the receiver.
   
  The IS-IS FAEAG Sub-TLV MUST NOT appear more than once in the set of   The IS-IS FAEAG Sub-TLV MUST NOT appear more than once in the set of
  FAD sub-TLVs for a given Flex-Algorithm from a given IS. If it   FAD sub-TLVs for a given Flex-Algorithm from a given IS. If it
  appears more than once in such set, the IS-IS FAEAG Sub-TLV in the   appears more than once in such a set, the IS-IS FAEAG Sub-TLV in the
  first occurrence in the lowest numbered LSP from a given IS MUST be   first occurrence in the lowest numbered LSP from a given IS MUST be
  used and any other occurrences MUST be ignored.   used and any other occurrences MUST be ignored.
   
   
   
   
   
   
       
Skipping Skipping
   
  6.2. IS-IS Flexible Algorithm Include-Any Admin Group Sub-TLV   6.2. IS-IS Flexible Algorithm Include-Any Admin Group Sub-TLV
   
  The Flexible Algorithm definition can specify 'colors' that are used   The Flexible Algorithm definition can specify 'colors' that are used
  by the operator to include links during the Flex-Algorithm path   by the operator to include links during the Flex-Algorithm path
  computation.   computation.
   
  The IS-IS Flexible Algorithm Include-Any Admin Group Sub-TLV is used   The IS-IS Flexible Algorithm Include-Any Admin Group Sub-TLV is used
  to advertise include-any rule that is used during the Flex-Algorithm   to advertise the include-any rule that is used during the Flex-Algorithm
  path calculation as specified in Section 13.   path calculation as specified in Section 13.
   
  The format of the IS-IS Flexible Algorithm Include-Any Admin Group   The format of the IS-IS Flexible Algorithm Include-Any Admin Group
  Sub-TLV is identical to the format of the FAEAG Sub-TLV in   Sub-TLV is identical to the format of the FAEAG Sub-TLV in
  Section 6.1.   Section 6.1.
   
  The IS-IS Flexible Algorithm Include-Any Admin Group Sub-TLV Type is   The IS-IS Flexible Algorithm Include-Any Admin Group Sub-TLV Type is
  2.   2.
   
  The IS-IS Flexible Algorithm Include-Any Admin Group Sub-TLV MUST NOT   The IS-IS Flexible Algorithm Include-Any Admin Group Sub-TLV MUST NOT
  appear more than once in a single IS-IS FAD Sub-TLV. If it appears   appear more than once in a single IS-IS FAD Sub-TLV. If it appears
  more than once, the IS-IS FAD Sub-TLV MUST be ignored by the   more than once, the IS-IS FAD Sub-TLV MUST be ignored by the
  receiver.   receiver.
   
  The IS-IS Flexible Algorithm Include-Any Admin Group Sub-TLV MUST NOT   The IS-IS Flexible Algorithm Include-Any Admin Group Sub-TLV MUST NOT
  appear more than once in the set of FAD sub-TLVs for a given Flex-   appear more than once in the set of FAD sub-TLVs for a given Flex-
  Algorithm from a given IS. If it appears more than once in such set,   Algorithm from a given IS. If it appears more than once in such a set,
  the IS-IS Flexible Algorithm Include-Any Admin Group Sub-TLV in the   the IS-IS Flexible Algorithm Include-Any Admin Group Sub-TLV in the
  first occurrence in the lowest numbered LSP from a given IS MUST be   first occurrence in the lowest numbered LSP from a given IS MUST be
  used and any other occurrences MUST be ignored.   used and any other occurrences MUST be ignored.
   
  6.3. IS-IS Flexible Algorithm Include-All Admin Group Sub-TLV   6.3. IS-IS Flexible Algorithm Include-All Admin Group Sub-TLV
   
  The Flexible Algorithm definition can specify 'colors' that are used   The Flexible Algorithm definition can specify 'colors' that are used
  by the operator to include link during the Flex-Algorithm path   by the operator to include links during the Flex-Algorithm path
  computation.   computation.
   
  The IS-IS Flexible Algorithm Include-All Admin Group Sub-TLV is used   The IS-IS Flexible Algorithm Include-All Admin Group Sub-TLV is used
  to advertise include-all rule that is used during the Flex-Algorithm   to advertise the include-all rule that is used during the Flex-Algorithm
  path calculation as specified in Section 13.   path calculation as specified in Section 13.
   
  The format of the IS-IS Flexible Algorithm Include-All Admin Group   The format of the IS-IS Flexible Algorithm Include-All Admin Group
  Sub-TLV is identical to the format of the FAEAG Sub-TLV in   Sub-TLV is identical to the format of the FAEAG Sub-TLV in
  Section 6.1.   Section 6.1.
   
  The IS-IS Flexible Algorithm Include-All Admin Group Sub-TLV Type is   The IS-IS Flexible Algorithm Include-All Admin Group Sub-TLV Type is
  3.   3.
       
Skipping Skipping
   
   
   
  more than once, the IS-IS FAD Sub-TLV MUST be ignored by the   more than once, the IS-IS FAD Sub-TLV MUST be ignored by the
  receiver.   receiver.
   
  The IS-IS Flexible Algorithm Include-All Admin Group Sub-TLV MUST NOT   The IS-IS Flexible Algorithm Include-All Admin Group Sub-TLV MUST NOT
  appear more than once in the set of FAD sub-TLVs for a given Flex-   appear more than once in the set of FAD sub-TLVs for a given Flex-
  Algorithm from a given IS. If it appears more than once in such set,   Algorithm from a given IS. If it appears more than once in such a set,
  the IS-IS Flexible Algorithm Include-All Admin Group Sub-TLV in the   the IS-IS Flexible Algorithm Include-All Admin Group Sub-TLV in the
  first occurrence in the lowest numbered LSP from a given IS MUST be   first occurrence in the lowest numbered LSP from a given IS MUST be
  used and any other occurrences MUST be ignored.   used and any other occurrences MUST be ignored.
   
  6.4. IS-IS Flexible Algorithm Definition Flags Sub-TLV   6.4. IS-IS Flexible Algorithm Definition Flags Sub-TLV
   
  The IS-IS Flexible Algorithm Definition Flags Sub-TLV (FADF Sub-TLV)   The IS-IS Flexible Algorithm Definition Flags Sub-TLV (FADF Sub-TLV)
  is a Sub-TLV of the IS-IS FAD Sub-TLV. It has the following format:   is a Sub-TLV of the IS-IS FAD Sub-TLV. It has the following format:
       
Skipping Skipping
  +- -+   +- -+
  | ... |   | ... |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  where:   where:
   
  Type: 4   Type: 4
   
  Length: variable, non-zero number of octets of the Flags field   Length: variable, non-zero number of octets of the Flags field
    jgs: Is it fine if the length is not a multiple of four? If so, why the
    difference from the way you define length in §6.1?
    Also, this is the only Length field in this document that specifies
    it must be non-zero. That makes me think all the other Length fields
    MAY be zero. Is that right? Or, should they also say "non-zero"?
   
  Flags:   Flags:
   
  0 1 2 3 4 5 6 7...   0 1 2 3 4 5 6 7...
  +-+-+-+-+-+-+-+-+...   +-+-+-+-+-+-+-+-+...
  |M| | | ...   |M| | | ...
  +-+-+-+-+-+-+-+-+...   +-+-+-+-+-+-+-+-+...
   
       
Skipping Skipping
  on receipt.   on receipt.
   
  The IS-IS FADF Sub-TLV MUST NOT appear more than once in a single IS-   The IS-IS FADF Sub-TLV MUST NOT appear more than once in a single IS-
  IS FAD Sub-TLV. If it appears more than once, the IS-IS FAD Sub-TLV   IS FAD Sub-TLV. If it appears more than once, the IS-IS FAD Sub-TLV
  MUST be ignored by the receiver.   MUST be ignored by the receiver.
   
  The IS-IS FADF Sub-TLV MUST NOT appear more than once in the set of   The IS-IS FADF Sub-TLV MUST NOT appear more than once in the set of
  FAD sub-TLVs for a given Flex-Algorithm from a given IS. If it   FAD sub-TLVs for a given Flex-Algorithm from a given IS. If it
  appears more than once in such set, the IS-IS FADF Sub-TLV in the   appears more than once in such a set, the IS-IS FADF Sub-TLV in the
  first occurrence in the lowest numbered LSP from a given IS MUST be   first occurrence in the lowest numbered LSP from a given IS MUST be
  used and any other occurrences MUST be ignored.   used and any other occurrences MUST be ignored.
   
  If the IS-IS FADF Sub-TLV is not present inside the IS-IS FAD Sub-   If the IS-IS FADF Sub-TLV is not present inside the IS-IS FAD Sub-
  TLV, all the bits are assumed to be set to 0.   TLV, all the bits are assumed to be set to 0.
   
  If a node is configured to participate in a particular Flexible-   If a node is configured to participate in a particular Flexible-
  Algorithm, but the selected Flex-Algorithm definition includes a bit   Algorithm, but the selected Flex-Algorithm definition includes a bit
       
Skipping Skipping
  The IS-IS FAESRLG Sub-TLV MUST NOT appear more than once in a single   The IS-IS FAESRLG Sub-TLV MUST NOT appear more than once in a single
  IS-IS FAD Sub-TLV. If it appears more than once, the IS-IS FAD Sub-   IS-IS FAD Sub-TLV. If it appears more than once, the IS-IS FAD Sub-
  TLV MUST be ignored by the receiver.   TLV MUST be ignored by the receiver.
   
  The IS-IS FAESRLG Sub-TLV MAY appear more than once in the set of FAD   The IS-IS FAESRLG Sub-TLV MAY appear more than once in the set of FAD
  sub-TLVs for a given Flex-Algorithm from a given IS. This may be   sub-TLVs for a given Flex-Algorithm from a given IS. This may be
  necessary in cases where the total number of SRLG values which are   necessary in cases where the total number of SRLG values which are
  specified cause the FAD sub-TLV to exceed the maximum length of a   specified cause the FAD sub-TLV to exceed the maximum length of a
  single FAD sub-TLV. In such case the receiver MUST use the union of   single FAD sub-TLV. In such a case the receiver MUST use the union of
  all values across all IS-IS FAESRLG Sub-TLVs from such set.   all values across all IS-IS FAESRLG Sub-TLVs from such set.
   
  7. Sub-TLVs of OSPF FAD TLV   7. Sub-TLVs of OSPF FAD TLV
   
  7.1. OSPF Flexible Algorithm Exclude Admin Group Sub-TLV   7.1. OSPF Flexible Algorithm Exclude Admin Group Sub-TLV
   
  The Flexible Algorithm Exclude Admin Group Sub-TLV (FAEAG Sub-TLV) is   The Flexible Algorithm Exclude Admin Group Sub-TLV (FAEAG Sub-TLV) is
  a Sub-TLV of the OSPF FAD TLV. It's usage is described in   a Sub-TLV of the OSPF FAD TLV. Its usage is described in
  Section 6.1. It has the following format:   Section 6.1. It has the following format:
   
  0 1 2 3   0 1 2 3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  | Type | Length |   | Type | Length |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  | Extended Admin Group |   | Extended Admin Group |
       
Skipping Skipping
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   
  where:   where:
   
  Type: 3 for OSPFv2, 26 for OSPFv3   Type: 3 for OSPFv2, 26 for OSPFv3
   
  Length: 8 octets   Length: 8 octets
   
  Flex-Algorithm: Single octet value between 128 and 255 inclusive.   Flex-Algorithm: Single octet, value between 128 and 255 inclusive.
   
  Flags: single octet value   Flags: One octet
   
  0 1 2 3 4 5 6 7   0 1 2 3 4 5 6 7
  +-+-+-+-+-+-+-+-+   +-+-+-+-+-+-+-+-+
  |E| |   |E| |
  +-+-+-+-+-+-+-+-+   +-+-+-+-+-+-+-+-+
   
  E bit : position 0: The type of external metric. If bit is   E bit : position 0: The type of external metric. If bit is
  set, the metric specified is a Type 2 external metric. This   set, the metric specified is a Type 2 external metric. This
  bit is applicable only to OSPF External and NSSA external   bit is applicable only to OSPF External and NSSA external
  prefixes. This is semantically the same as E bit in section   prefixes. This is semantically the same as the E bit in section
  A.4.5 of [RFC2328] and section A.4.7 of [RFC5340] for OSPFv2   A.4.5 of [RFC2328] and section A.4.7 of [RFC5340] for OSPFv2
  and OSPFv3 respectively.   and OSPFv3 respectively.
   
  Bits 1 through 7: MUST be cleared by sender and ignored by   Bits 1 through 7: MUST be cleared by sender and ignored by
  receiver.   receiver.
    jgs: Are "sender" and "receiver" sufficiently clear to OSPF practitioners
    that there would be no ambiguity? I can think of two different ways
    to read them -- one is that the "sender" is the router that
    originates the LSA, and the "receiver" is any router that processes
    the LSA. I think that's what you mean. The other, pedantic, reading,
    is the "sender" is any router that puts the LSA on the wire, and the
    "receiver" is any router that takes the LSA from the wire, so anyone
    participating in flooding would be both a "sender" and a "receiver"
    at times.
    If this is how people write OSPF specs and talk about OSPF, fine.
    But if there are more precise terms than "sender" and "receiver" in
    use, it would be nice to use them.
   
  Reserved: Must be set to 0, ignored at reception.   Reserved: Must be set to 0, ignored at reception.
   
  Metric: 4 octets of metric information   Metric: 4 octets of metric information
   
  The OSPF FAPM Sub-TLV MAY appear multiple times in its parent TLV.   The OSPF FAPM Sub-TLV MAY appear multiple times in its parent TLV.
  If it appears more than once with the same Flex-Algorithm value, the   If it appears more than once with the same Flex-Algorithm value, the
  first instance MUST be used and any subsequent instances MUST be   first instance MUST be used and any subsequent instances MUST be
       
Skipping Skipping
   
  The OSPFv2 Extended Inter-Area ASBR (EIA-ASBR) LSA is an OSPF Opaque   The OSPFv2 Extended Inter-Area ASBR (EIA-ASBR) LSA is an OSPF Opaque
  LSA [RFC5250] that is used to advertise additional attributes related   LSA [RFC5250] that is used to advertise additional attributes related
  to the reachability of the OSPFv2 ASBR that is external to the area   to the reachability of the OSPFv2 ASBR that is external to the area
  yet internal to the OSPF domain. Semantically, the OSPFv2 EIA-ASBR   yet internal to the OSPF domain. Semantically, the OSPFv2 EIA-ASBR
  LSA is equivalent to the fixed format Type 4 Summary LSA [RFC2328].   LSA is equivalent to the fixed format Type 4 Summary LSA [RFC2328].
  Unlike the Type 4 Summary LSA, the LSID of the EIA-ASBR LSA does not   Unlike the Type 4 Summary LSA, the LSID of the EIA-ASBR LSA does not
  carry the ASBR Router-ID - the ASBR Router-ID is carried in the body   carry the ASBR Router-ID - the ASBR Router-ID is carried in the body
  of the LSA. OSPFv2 EIA-ASBR LSA is advertised by an OSPFv2 ABR and   of the LSA. The OSPFv2 EIA-ASBR LSA is advertised by an OSPFv2 ABR and
  its flooding is defined to be area-scoped only.   its flooding is defined to be area-scoped only.
   
  An OSPFv2 ABR generates the EIA-ASBR LSA for an ASBR when it is   An OSPFv2 ABR generates the EIA-ASBR LSA for an ASBR when it is
  advertising the Type-4 Summary LSA for it and has the need for   advertising the Type-4 Summary LSA for it and has the need for
  advertising additional attributes for that ASBR beyond what is   advertising additional attributes for that ASBR beyond what is
  conveyed in the fixed format Type-4 Summary LSA. An OSPFv2 ABR MUST   conveyed in the fixed format Type-4 Summary LSA. An OSPFv2 ABR MUST
  NOT advertise the EIA-ASBR LSA for an ASBR for which it is not   NOT advertise the EIA-ASBR LSA for an ASBR for which it is not
  advertising the Type 4 Summary LSA. This ensures that the ABR does   advertising the Type 4 Summary LSA. This ensures that the ABR does
       
Skipping Skipping
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  | LS sequence number |   | LS sequence number |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  | LS checksum | Length |   | LS checksum | Length |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  | |   | |
  +- TLVs -+   +- TLVs -+
  | ... |   | ... |
    jgs: Maybe add something like
   
    Other than where specified below, these fields' definitions are as
    given in [RFC2328] Section A.4.1.
   
  The Opaque Type used by the OSPFv2 EIA-ASBR LSA is TBD (suggested   The Opaque Type used by the OSPFv2 EIA-ASBR LSA is TBD1 (suggested
  value 11). The Opaque Type is used to differentiate the various   value 11). The Opaque Type is used to differentiate the various
  types of OSPFv2 Opaque LSAs and is described in Section 3 of   types of OSPFv2 Opaque LSAs and is described in Section 3 of
  [RFC5250]. The LS Type MUST be 10, indicating that the Opaque LSA   [RFC5250]. The LS Type MUST be 10, indicating that the Opaque LSA
  flooding scope is area-local [RFC5250]. The LSA Length field   flooding scope is area-local [RFC5250]. The LSA Length field
  [RFC2328] represents the total length (in octets) of the Opaque LSA,   [RFC2328] represents the total length (in octets) of the Opaque LSA,
  including the LSA header and all TLVs (including padding).   including the LSA header and all TLVs (including padding).
    jgs: The way you've written "The LSA Length field [RFC2328]" is a little
    confusing. The reference makes it sound as though you're simply relying
    on the RFC 2328 definition, and I guess you basically are since the
    TLVs portion is just the balance of "the LSA". But RFC 2328 doesn't
    define a Length field (so capitalized) which makes unpacking this
    harder than it needs to be.
    Since the Length field is just exactly what RFC 2328 says it is, the
    easiest fix would be to remove that entire sentence. No need to
    redefine something that's already defined, unless it's needed for
    clarity.
    If you do feel it's needed for clarity, then I suggest something like
    "The Length field is as defined in [RFC2328] Section A.4.1. It
    represents the total length (in octets) of the Opaque LSA, including
    the LSA header and all TLVs (including padding)."
   
  The Opaque ID field is an arbitrary value used to maintain multiple   The Opaque ID field is an arbitrary value used to maintain multiple
  OSPFv2 EIA-ASBR LSAs. For OSPFv2 EIA-ASBR LSAs, the Opaque ID has no   OSPFv2 EIA-ASBR LSAs. For OSPFv2 EIA-ASBR LSAs, the Opaque ID has no
  semantic significance other than to differentiate OSPFv2 EIA-ASBR   semantic significance other than to differentiate OSPFv2 EIA-ASBR
  LSAs originated by the same OSPFv2 ABR. If multiple OSPFv2 EIA-ASBR   LSAs originated by the same OSPFv2 ABR. If multiple OSPFv2 EIA-ASBR
  LSAs specify the same ASBR, the attributes from the Opaque LSA with   LSAs specify the same ASBR, the attributes from the Opaque LSA with
  the lowest Opaque ID SHOULD be used.   the lowest Opaque ID SHOULD be used.
   
       
Skipping Skipping
  the same as the format used by the Traffic Engineering Extensions to   the same as the format used by the Traffic Engineering Extensions to
  OSPFv2 [RFC3630]. The variable TLV section consists of one or more   OSPFv2 [RFC3630]. The variable TLV section consists of one or more
  nested TLV tuples. Nested TLVs are also referred to as sub- TLVs.   nested TLV tuples. Nested TLVs are also referred to as sub- TLVs.
  The Length field defines the length of the value portion in octets   The Length field defines the length of the value portion in octets
  (thus, a TLV with no value portion would have a length of 0). The   (thus, a TLV with no value portion would have a length of 0). The
  TLV is padded to 4-octet alignment; padding is not included in the   TLV is padded to 4-octet alignment; padding is not included in the
  Length field (so a 3-octet value would have a length of 3, but the   Length field (so a 3-octet value would have a length of 3, but the
  total size of the TLV would be 8 octets). Nested TLVs are also   total size of the TLV would be 8 octets). Nested TLVs are also
  32-bit aligned. For example, a 1-byte value would have the Length   32-bit aligned. For example, a 1-octet value would have the Length
  field set to 1, and 3 octets of padding would be added to the end of   field set to 1, and 3 octets of padding would be added to the end of
  the value portion of the TLV. The padding is composed of zeros.   the value portion of the TLV. The padding is composed of zeros.
    jgs: I have mixed feelings about how you cut-and-paste the definition from
    RFC 3630 Section 2.3.2 instead of just referencing it. On one hand, the
    material starting with "for example" is new, provides more clarity, and
    the requirement for padding to be zeroes is new. On the other hand, your
    reference to the Length field, which makes sense in the original context
    of RFC 3630 §2.3.2, is confusing here -- you have a diagram above with a
    field called Length, but that is NOT what you're talking about here.
    In 3630 there's a TLV diagram that makes it clear at a glance what's
    being talked about.
   
    Again I think the easiest fix is to leave the first sentence (adding
    "Section 2.3.2" to the reference) and remove the rest, although if it's
    important to specify zero-padding then leave that sentence.
   
    On the other hand if you feel the full detail is needed for clarity,
    then go all the way and make this its own subsection and don't just
    copy-paste the definition portion from 3630, copy the TLV diagram too,
    so the reader isn't led astray.
   
   
   
   
   
   
   
  10.1.1. OSPFv2 Extended Inter-Area ASBR TLV   10.1.1. OSPFv2 Extended Inter-Area ASBR TLV
       
Skipping Skipping
   
  Sub-TLVs : variable   Sub-TLVs : variable
   
  Only a single OSPFv2 EIA-ASBR TLV MUST be advertised in each OSPFv2   Only a single OSPFv2 EIA-ASBR TLV MUST be advertised in each OSPFv2
  EIA-ASBR LSA and the receiver MUST ignore all instances of this TLV   EIA-ASBR LSA and the receiver MUST ignore all instances of this TLV
  other than the first one in an LSA.   other than the first one in an LSA.
   
  OSPFv2 EIA-ASBR TLV MUST be present inside an OSPFv2 EIA-ASBR LSA   OSPFv2 EIA-ASBR TLV MUST be present inside an OSPFv2 EIA-ASBR LSA
  with at least a single sub-TLV included, otherwise the OSPFv2 EIA-   and must include at least a single sub-TLV, otherwise the OSPFv2 EIA-
  ASBR LSA MUST be ignored by the receiver.   ASBR LSA MUST be ignored by the receiver.
   
  10.2. OSPF Flexible Algorithm ASBR Metric Sub-TLV   10.2. OSPF Flexible Algorithm ASBR Metric Sub-TLV
   
  The OSPF Flexible Algorithm ASBR Metric (FAAM) Sub-TLV supports the   The OSPF Flexible Algorithm ASBR Metric (FAAM) Sub-TLV supports the
  advertisement of a Flex-Algorithm specific metric associated with a   advertisement of a Flex-Algorithm specific metric associated with a
  given ASBR reachability advertisement by an ABR.   given ASBR reachability advertisement by an ABR.
   
       
Skipping Skipping
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |Flex-Algorithm | Reserved |   |Flex-Algorithm | Reserved |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  | Metric |   | Metric |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   
  where:   where:
   
  Type: 1 for OSPFv2, TBD (suggested value 30) for OSPFv3   Type: 1 for OSPFv2, TBD2 (suggested value 30) for OSPFv3
   
  Length: 8 octets   Length: 8 octets
   
  Flex-Algorithm: Single octet value between 128 and 255 inclusive.   Flex-Algorithm: Single octet value between 128 and 255 inclusive.
   
  Reserved: Must be set to 0, ignored at reception.   Reserved: Three octets. Must be set to 0, ignored at reception.
   
  Metric: 4 octets of metric information   Metric: 4 octets of metric information
   
  The OSPF FAAM Sub-TLV MAY appear multiple times in its parent TLV.   The OSPF FAAM Sub-TLV MAY appear multiple times in its parent TLV.
  If it appears more than once with the same Flex-Algorithm value, the   If it appears more than once with the same Flex-Algorithm value, the
  first instance MUST be used and any subsequent instances MUST be   first instance MUST be used and any subsequent instances MUST be
  ignored.   ignored.
   
  The advertisement of the ASBR reachability using the OSPF FAAM Sub-   The advertisement of the ASBR reachability using the OSPF FAAM Sub-
  TLV inside the OSPFv2 EIA-ASBR LSA follows the section 12.4.3 of   TLV inside the OSPFv2 EIA-ASBR LSA follows Section 12.4.3 of
  [RFC2328] and inside the OSPFv3 E-Inter-Area-Router LSA follows the   [RFC2328] and inside the OSPFv3 E-Inter-Area-Router LSA follows
  section 4.8.5 of [RFC5340]. The reachability of the ASBR is   Section 4.8.5 of [RFC5340]. The reachability of the ASBR is
  evaluated in the context of the specific Flex-Algorithm.   evaluated in the context of the specific Flex-Algorithm.
   
  The FAAM computed by the ABR will be equal to the metric to reach the   The FAAM computed by the ABR will be equal to the metric to reach the
  ASBR for a given Flex-Algorithm in a source area or the cumulative   ASBR for a given Flex-Algorithm in a source area or the cumulative
  metric via other ABR(s) when the ASBR is in a remote area. This is   metric via other ABR(s) when the ASBR is in a remote area. This is
  similar in nature to how the metric is set when the ASBR reachability   similar in nature to how the metric is set when the ASBR reachability
  metric is computed in the default algorithm for the metric in the   metric is computed in the default algorithm for the metric in the
  OSPFv2 Type 4 ASBR Summary LSA and the OSPFv3 Inter-Area-Router LSA.   OSPFv2 Type 4 ASBR Summary LSA and the OSPFv3 Inter-Area-Router LSA.
       
Skipping Skipping
   
   
   
   
  areas unless that ASBR is reachable for it in the context of that   areas unless that ASBR is reachable for it in the context of that
  specific Flex-Algorithm.   specific Flex-Algorithm.
   
  An OSPF ABR MUST include the OSPF FAAM Sub-TLVs as part of the ASBR   An OSPF ABR MUST include the OSPF FAAM Sub-TLVs as part of the ASBR
  reachability advertisement between areas for the Flex-Algorithm for   reachability advertisement between areas for any Flex-Algorithm for
  which the winning FAD includes the M-flag and the ASBR is reachable   which the winning FAD includes the M-flag and the ASBR is reachable
  in the context of that specific Flex-Algorithm.   in the context of that specific Flex-Algorithm.
   
  OSPF routers MUST use the OSPF FAAM Sub-TLV to calculate the   OSPF routers MUST use the OSPF FAAM Sub-TLV to calculate the
  reachability of the ASBRs if the winning FAD for the specific Flex-   reachability of the ASBRs if the winning FAD for the specific Flex-
  Algorithm includes the M-flag. OSPF routers MUST NOT use the OSPF   Algorithm includes the M-flag. OSPF routers MUST NOT use the OSPF
  FAAM Sub-TLV to calculate the reachability of the ASBRs for the   FAAM Sub-TLV to calculate the reachability of the ASBRs for the
  specific Flex-Algorithm if the winning FAD for such Flex-Algorithm   specific Flex-Algorithm if the winning FAD for such Flex-Algorithm
  does not include the M-flag. Instead, the OSPFv2 Type 4 Summary LSAs   does not include the M-flag. Instead, the OSPFv2 Type 4 Summary LSAs
  or the OSPFv3 Inter-Area-Router-LSAs MUST be used instead as   or the OSPFv3 Inter-Area-Router-LSAs MUST be used instead as
  specified in section 16.2 of [RFC2328] and section 4.8.5 of [RFC5340]   specified in section 16.2 of [RFC2328] and section 4.8.5 of [RFC5340]
  for OSPFv2 and OSPFv3 respectively.   for OSPFv2 and OSPFv3 respectively.
   
  The processing of the new or changed OSPF FAAM Sub-TLV triggers the   The processing of a new or changed OSPF FAAM Sub-TLV triggers the
  processing of the External routes similar to what is described in   processing of External routes similar to what is described in
  section 16.5 of the [RFC2328] for OSPFv2 and section 4.8.5 of   section 16.5 of the [RFC2328] for OSPFv2 and section 4.8.5 of
  [RFC5340] for OSPFv3 for the specific Flex-Algorithm. The External   [RFC5340] for OSPFv3 for the specific Flex-Algorithm. The External
  and NSSA External route calculation should be limited to Flex-   and NSSA External route calculation should be limited to Flex-
  Algorithm(s) for which the winning FAD(s) includes the M-flag.   Algorithm(s) for which the winning FAD(s) includes the M-flag.
   
  Processing of the OSPF FAAM Sub-TLV does not require the existence of   Processing of the OSPF FAAM Sub-TLV does not require the existence of
  the equivalent OSPFv2 Type 4 Summary LSA or the OSPFv3 Inter-Area-   the equivalent OSPFv2 Type 4 Summary LSA or the OSPFv3 Inter-Area-
  Router-LSA that is advertised by the same ABR inside the area. When   Router-LSA that is advertised by the same ABR inside the area. When
  the OSPFv2 EIA-ASBR LSA or the OSPFv3 E-Inter-Area-Router-LSA are   the OSPFv2 EIA-ASBR LSA or the OSPFv3 E-Inter-Area-Router-LSA are
  advertised along with the OSPF FAAM Sub-TLV by the ABR for a specific   advertised along with the OSPF FAAM Sub-TLV by the ABR for a specific
  ASBR, it is expected that the same ABR would advertise the   ASBR, it is expected that the same ABR would advertise the
  reachability of the same ASBR in the equivalent base LSAs - i.e., the   reachability of the same ASBR in the equivalent base LSAs - i.e., the
  OSPFv2 Type 4 Summary LSA or the OSPFv3 Inter-Area-Router-LSA. The   OSPFv2 Type 4 Summary LSA or the OSPFv3 Inter-Area-Router-LSA. The
  presence of the base LSA is not mandatory for the usage of the   presence of the base LSA is not mandatory for the usage of the
  extended LSA with the OSPF FAAM Sub-TLV. This means that the order   extended LSA with the OSPF FAAM Sub-TLV. This means that the order
  in which these LSAs are received is not significant.   in which these LSAs are received is not significant.
    jgs: The "it is expected" leads me to wonder, what is the consequence if
    that expectation is violated. Should this be a mandate ("MUST advertise
    the reachability of the same ASBR in...") rather than just an
    expectation?
   
  11. Advertisement of Node Participation in a Flex-Algorithm   11. Advertisement of Node Participation in a Flex-Algorithm
   
  When a router is configured to support a particular Flex-Algorithm,   When a router is configured to support a particular Flex-Algorithm,
  we say it is participating in that Flex-Algorithm.   we say it is participating in that Flex-Algorithm.
   
  Paths for various data-planes MAY be computed for a specific Flex-   Paths for various data-planes MAY be computed for a specific Flex-
  Algorithm. Each data-plane uses its own specific forwarding over   Algorithm. Each data-plane uses its own specific forwarding over
       
Skipping Skipping
   
   
   
   
   
   
   
  Flex-Algorithm for each data-plane. Some data-planes may share a   Flex-Algorithm for each data-plane. Some data-planes may share a
  common participation advertisement (e.g. SR MPLS and SRv6).   common participation advertisement (e.g. SR-MPLS and SRv6).
   
  11.1. Advertisement of Node Participation for Segment Routing   11.1. Advertisement of Node Participation for Segment Routing
   
  [RFC8667], [RFC8665], and [RFC8666] (IGP Segment Routing extensions)   [RFC8667], [RFC8665], and [RFC8666] (IGP Segment Routing extensions)
  describe how the SR-Algorithm is used to compute the IGP best path.   describe how the SR-Algorithm is used to compute the IGP best path.
   
  Routers advertise the support for the SR-Algorithm as a node   Routers advertise support for the SR-Algorithm as a node
  capability as described in the above mentioned IGP Segment Routing   capability as described in the above-mentioned IGP Segment Routing
  extensions. To advertise participation for a particular Flex-   extensions. To advertise participation for a particular Flex-
  Algorithm for Segment Routing, including both SR MPLS and SRv6, the   Algorithm for Segment Routing, including both SR-MPLS and SRv6, the
  Flex-Algorithm value MUST be advertised in the SR-Algorithm TLV   Flex-Algorithm value MUST be advertised in the SR-Algorithm TLV
  (OSPF) or sub-TLV (IS-IS).   (OSPF) or sub-TLV (IS-IS).
   
  Segment Routing Flex-Algorithm participation advertisement is   Segment Routing Flex-Algorithm participation advertisement is
  topology independent. When a router advertises participation in an   topology independent. When a router advertises participation in an
  SR-Algorithm, the participation applies to all topologies in which   SR-Algorithm, the participation applies to all topologies in which
  the advertising node participates.   the advertising node participates.
   
       
Skipping Skipping
   
  Bit-3: Flexible Algorithm (X-bit)   Bit-3: Flexible Algorithm (X-bit)
   
  ASLA Admin Group Advertisements to be used by the Flexible Algorithm   ASLA Admin Group Advertisements to be used by the Flexible Algorithm
  application MAY use either the Administrative Group or Extended   application MAY use either the Administrative Group or Extended
  Administrative Group encodings. If the Administrative Group encoding   Administrative Group encodings. If the Administrative Group encoding
  is used, then the first 32 bits of the corresponding FAD sub-TLVs are   is used, then the first 32 bits of the corresponding FAD sub-TLVs are
  mapped to the link attribute advertisements as specified in RFC 7308.   mapped to the link attribute advertisements as specified in RFC 7308.
    jgs: I think "the first 32 bits of the corresponding FAD sub-TLVs" can't
    possibly be strictly the correct wording. But before you read the rest
    of this long (ish) comment, keep in mind that my preferred solution is
    to drop the final sentence -- if you agree then we're done. If not, read
    on.
    First, I think you must be talking about the various admin group
    sub-TLVs (so, exclude admin group, include-any admin group, include-all
    admin group) and this is what you mean by "the corresponding FAD
    sub-TLVs"? If so, please be more specific, for example by listing the
    sub-TLV types explicitly.
    Second, I guess you don't mean strictly the first 32 bits, but rather
    the first 32 bits of the value portion?
    Finally, when you say "mapped... as specified in RFC 7308" I'm more
    confused than if you'd said nothing (or I think I am!). As I read 7308
    Section 3.2.1, we have these options:
    What's present How to interpret
    -------------- ----------------
    AG Bits 0-31 from AG
    EAG Bits 0-N from EAG
    AG + EAG Bits 0-31 from AG
    Bits 32-N from EAG (ignoring bits 0-31 other than
    possibly logging mismatches)
    Since the value portion of the various FAD admin group sub-TLVs
    doesn't have variant encodings, I wouldn't think there is a need to
    talk about how to map those bits (which are unambiguously 0-N).
    And RFC 7308 is already clear about how to different combinations
    of AG and EAG are mapped.
    If you mean something different from the above, let's please
    discuss.
   
  A receiver supporting this specification MUST accept both ASLA   A receiver supporting this specification MUST accept both ASLA
  Administrative Group and Extended Administrative Group TLVs as   Administrative Group and Extended Administrative Group TLVs as
  defined in [RFC8919] or [RFC8920]. In the case of ISIS, if the   defined in [RFC8919] or [RFC8920]. In the case of IS-IS, if the
  L-Flag is set in ASLA advertisement, as defined in [RFC8919]   L-Flag is set in ASLA advertisement, as defined in [RFC8919]
  Section 4.2, then the receiver MUST be able to accept both   Section 4.2, then the receiver MUST be able to accept both
  Administrative Group TLV as defined in [RFC5305] and Extended   Administrative Group TLV as defined in [RFC5305] and Extended
  Administrative Group TLV as defined in [RFC7308].   Administrative Group TLV as defined in [RFC7308].
   
  13. Calculation of Flexible Algorithm Paths   13. Calculation of Flexible Algorithm Paths
   
  A router MUST be configured to participate in a given Flex-Algorithm   A router MUST be configured to participate in a given Flex-Algorithm
       
Skipping Skipping
  Algorithm path computation. The result of the existing, Flex-   Algorithm path computation. The result of the existing, Flex-
  Algorithm agnostic, two way connectivity check is used during the   Algorithm agnostic, two way connectivity check is used during the
  Flex-Algorithm path computation.   Flex-Algorithm path computation.
   
  As described in Section 11, participation for any particular Flex-   As described in Section 11, participation for any particular Flex-
  Algorithm MUST be advertised on a per data-plane basis. Calculation   Algorithm MUST be advertised on a per data-plane basis. Calculation
  of the paths for any particular Flex-Algorithm MUST be data-plane   of the paths for any particular Flex-Algorithm MUST be data-plane
  specific.   specific.
    jgs: I don't understand your use of MUST above, regarding calculation of
    paths. Computing paths on a data-plane basis seems like it's fundamental
    to this spec -- is there some other choice you think an implementor
    might even make? I would think changing the MUST to (for example) "is"
    would keep the sense of what's being said without causing surprise to
    the reader.
   
  Multiple data-planes MAY use the same Flex-Algorithm value at the   Multiple data-planes MAY use the same Flex-Algorithm value at the
  same time, and and as such, share the FAD for it. Traffic for each   same time, and and as such, share the FAD for it. Traffic for each
  data-plane will be forwarded based on the data-plane specific   data-plane will be forwarded based on the data-plane specific
  forwarding entries.   forwarding entries.
   
   
   
       
Skipping Skipping
  all Flex-Algorithm data-planes.   all Flex-Algorithm data-planes.
   
  The way various data-planes handle nodes that do not participate in   The way various data-planes handle nodes that do not participate in
  Flexible-Algorithm is data-plane specific. If the data-plane only   Flexible-Algorithm is data-plane specific. If the data-plane only
  wants to consider participating nodes during the Flex-Algorithm   wants to consider participating nodes during the Flex-Algorithm
  calculation, then when computing paths for a given Flex-Algorithm,   calculation, then when computing paths for a given Flex-Algorithm,
  all nodes that do not advertise participation for that Flex-Algorithm   all nodes that do not advertise participation for that Flex-Algorithm
  in their data-plane specific advertisements MUST be pruned from the   in their data-plane specific advertisements MUST be pruned from the
  topology. Segment Routing, including both SR MPLS and SRv6, are   topology. Segment Routing, including both SR-MPLS and SRv6, are
  data-planes that MUST use such pruning when computing Flex-Algorithm   data-planes that MUST use such pruning when computing Flex-Algorithm
  paths.   paths.
    jgs: As I mentioned much earlier in this review, Segment Routing references
    seem to be in order. The fact you're making quite specific requirements
    on those data planes re-emphasizes that need.
   
  When computing the path for a given Flex-Algorithm, the metric-type   When computing the path for a given Flex-Algorithm, the metric-type
  that is part of the Flex-Algorithm definition (Section 5) MUST be   that is part of the Flex-Algorithm definition (Section 5) MUST be
  used.   used.
   
  When computing the path for a given Flex-Algorithm, the calculation-   When computing the path for a given Flex-Algorithm, the calculation-
  type that is part of the Flex-Algorithm definition (Section 5) MUST   type that is part of the Flex-Algorithm definition (Section 5) MUST
  be used.   be used.
   
  Various link include or exclude rules can be part of the Flex-   Various link include or exclude rules can be part of the Flex-
  Algorithm definition. To refer to a particular bit within an AG or   Algorithm definition. To refer to a particular bit within an AG or
  EAG we use the term 'color'.   EAG we use the term 'color'.
    jgs: Please expand AG and EAG on first use, or place in the terminology section.
   
  Rules, in the order as specified below, MUST be used to prune links   Rules, in the order as specified below, MUST be used to prune links
  from the topology during the Flex-Algorithm computation.   from the topology during the Flex-Algorithm computation.
    jgs: Since the rules are a sieve (each rule reduces the size of the set left
    by the previous rule) the order of applying them appears to be irrelevant.
   
  For all links in the topology:   For all links in the topology:
    jgs: So, perhaps the previous two paragraphs could be condensed something like,
    Prior to running the Flex-Algorithm computation, the topology is
    pruned as follows:
    (You could write "MUST be pruned" if you feel the need for an RFC 2119
    keyword, although honestly I don't think it's crucial -- similar to my
    earlier comment, it's hard to imagine an implementor making a different
    choice.)
   
  1. Check if any exclude AG rule is part of the Flex-Algorithm   1. Check if any exclude AG rule is part of the Flex-Algorithm
  definition. If such exclude rule exists, check if any color that   definition. If such exclude rule exists, check if any color that
  is part of the exclude rule is also set on the link. If such a   is part of the exclude rule is also set on the link. If such a
  color is set, the link MUST be pruned from the computation.   color is set, the link MUST be pruned from the computation.
   
  2. Check if any exclude SRLG rule is part of the Flex-Algorithm   2. Check if any exclude SRLG rule is part of the Flex-Algorithm
  definition. If such exclude rule exists, check if the link is   definition. If such exclude rule exists, check if the link is
       
Skipping Skipping
  that are part of the include-all rule are also set on the link.   that are part of the include-all rule are also set on the link.
  If all such colors are not set on the link, the link MUST be   If all such colors are not set on the link, the link MUST be
  pruned from the computation.   pruned from the computation.
   
  5. If the Flex-Algorithm definition uses other than IGP metric   5. If the Flex-Algorithm definition uses other than IGP metric
  (Section 5), and such metric is not advertised for the particular   (Section 5), and such metric is not advertised for the particular
  link in a topology for which the computation is done, such link   link in a topology for which the computation is done, such link
  MUST be pruned from the computation. A metric of value 0 MUST NOT   MUST be pruned from the computation. A metric of value 0 MUST NOT
  be assumed in such case.   be assumed in such a case.
   
  13.1. Multi-area and Multi-domain Considerations   13.1. Multi-area and Multi-domain Considerations
   
  Any IGP Shortest Path Tree calculation is limited to a single area.   Any IGP Shortest Path Tree calculation is limited to a single area.
  This applies to Flex-Algorithm calculations as well. Given that the   This applies to Flex-Algorithm calculations as well. Given that the
  computing router does not have visibility of the topology of the next   computing router does not have visibility of the topology of the next
  areas or domain, the Flex-Algorithm specific path to an inter-area or   areas or domain, the Flex-Algorithm specific path to an inter-area or
  inter-domain prefix will be computed for the local area only. The   inter-domain prefix will be computed for the local area only. The
       
Skipping Skipping
  metrics MUST NOT be used during the Flex-Algorithm computation unless   metrics MUST NOT be used during the Flex-Algorithm computation unless
  the FAD selected based on the rules defined in Section 5.3 includes   the FAD selected based on the rules defined in Section 5.3 includes
  the M-Flag, as described in (Section 6.4 or Section 7.4).   the M-Flag, as described in (Section 6.4 or Section 7.4).
   
  In the case of OSPF, when calculating external routes in a Flex-   In the case of OSPF, when calculating external routes in a Flex-
  Algorithm (with FAD selected includes the M-Flag) where the   Algorithm (with FAD selected includes the M-Flag) where the
  advertising ASBR is in a remote area, the metric will be the sum of   advertising ASBR is in a remote area, the metric will be the sum of
  the following:   the following:
    jgs: I don't understand what the words in parentheses are trying to say, can
    you explain?
   
  o the FAPM for that Flex-Algorithm advertised with the external   o the FAPM for that Flex-Algorithm advertised with the external
  route by the ASBR   route by the ASBR
   
  o the metric to reach the ASBR for that Flex-Algorithm from the   o the metric to reach the ASBR for that Flex-Algorithm from the
  local ABR i.e., the FAAM for that Flex-Algorithm advertised by the   local ABR i.e., the FAAM for that Flex-Algorithm advertised by the
  ABR in the local area for that ASBR   ABR in the local area for that ASBR
   
       
Skipping Skipping
   
   
   
   
   
   
  conclude whether the ABR or ASBR has reachability to the inter-area   conclude whether the ABR or ASBR has reachability to the inter-area
  or inter-domain prefix for a given Flex-Algorithm in the next area or   or inter-domain prefix for a given Flex-Algorithm in the next area or
  domain. Sending the Flex-Algoritm traffic for such prefix towards   domain. Sending the Flex-Algoritm traffic for such a prefix towards
  the ABR or ASBR may result in traffic looping or black-holing.   the ABR or ASBR may result in traffic looping or black-holing.
    jgs: I think we've discussed in the context of a different draft recently,
    that there's some desire to consider terms other than "black-holing".
    One reason is that although it's a familiar term to many of us, it
    still may be an obstacle to understanding for people unfamiliar with
    the idiom. Perhaps consider "persistent traffic loss"?
   
  During the route computation, it is possible for the Flex-Algorithm   During the route computation, it is possible for the Flex-Algorithm
  specific metric to exceed the maximum value that can be stored in an   specific metric to exceed the maximum value that can be stored in an
  unsigned 32-bit variable. In such scenarios, the value MUST be   unsigned 32-bit variable. In such scenarios, the value MUST be
  considered to be of value 4,294,967,295 during the computation and   considered to be of value 4,294,967,295 during the computation and
  advertised as such.   advertised as such.
   
  The FAPM MUST NOT be advertised with IS-IS L1 or L2 intra-area,   The FAPM MUST NOT be advertised with IS-IS L1 or L2 intra-area,
  OSPFv2 intra-area, or OSPFv3 intra-area routes. If the FAPM is   OSPFv2 intra-area, or OSPFv3 intra-area routes. If the FAPM is
  advertised for these route-types, it MUST be ignored during the   advertised for these route-types, it MUST be ignored during the
  prefix reachability calculation.   prefix reachability calculation.
   
  The M-flag in FAD is not applicable to prefixes advertised as SRv6   The M-flag in the FAD is not applicable to prefixes advertised as SRv6
  locators. The IS-IS SRv6 Locator TLV   locators. The IS-IS SRv6 Locator TLV
  [I-D.ietf-lsr-isis-srv6-extensions] includes the Algorithm and Metric   [I-D.ietf-lsr-isis-srv6-extensions] includes the Algorithm and Metric
  fields. When the SRv6 Locator is advertised between areas or   fields. When the SRv6 Locator is advertised between areas or
  domains, the metric field in the Locator TLV of IS-IS MUST be used   domains, the metric field in the Locator TLV of IS-IS MUST be used
  irrespective of the M-flag in the FAD advertisement.   irrespective of the M-flag in the FAD advertisement.
   
  OSPF external and NSSA external prefix advertisements MAY include a   OSPF external and NSSA external prefix advertisements MAY include a
  non-zero forwarding address in the prefix advertisements in the base   non-zero forwarding address in the prefix advertisements in the base
       
Skipping Skipping
   
   
   
   
   
   
  to avoid such partitioning by providing enough redundancy inside the   to avoid such partitioning by providing enough redundancy inside the
  area for each Flex-Algorithm being used.   area for each Flex-Algorithm being used.
    jgs: Instead of "the algorithm 0", how about "the base algorithm"?
    The warning seems on point, but the recommendation at the end made me a
    little sad, since it amounts to "don't build bad networks". At minimum,
    maybe change "avoid" to "minimize the risk of"?
   
  14. Flex-Algorithm and Forwarding Plane   14. Flex-Algorithm and Forwarding Plane
   
  This section describes how Flex-Algorithm paths are used in   This section describes how Flex-Algorithm paths are used in
  forwarding.   forwarding.
   
  14.1. Segment Routing MPLS Forwarding for Flex-Algorithm   14.1. Segment Routing MPLS Forwarding for Flex-Algorithm
   
  This section describes how Flex-Algorithm paths are used with SR MPLS   This section describes how Flex-Algorithm paths are used with SR-MPLS
  forwarding.   forwarding.
   
  Prefix SID advertisements include an SR-Algorithm value and, as such,   Prefix SID advertisements include an SR-Algorithm value and, as such,
  are associated with the specified SR-Algorithm. Prefix-SIDs are also   are associated with the specified SR-Algorithm. Prefix-SIDs are also
  associated with a specific topology which is inherited from the   associated with a specific topology which is inherited from the
  associated prefix reachability advertisement. When the algorithm   associated prefix reachability advertisement. When the algorithm
  value advertised is a Flex-Algorithm value, the Prefix SID is   value advertised is a Flex-Algorithm value, the Prefix SID is
  associated with paths calculated using that Flex-Algorithm in the   associated with paths calculated using that Flex-Algorithm in the
       
Skipping Skipping
  paths, MUST be dropped when there are no such paths available.   paths, MUST be dropped when there are no such paths available.
   
  Loop Free Alternate (LFA) paths for a given Flex-Algorithm MUST be   Loop Free Alternate (LFA) paths for a given Flex-Algorithm MUST be
  computed using the same constraints as the calculation of the primary   computed using the same constraints as the calculation of the primary
  paths for that Flex-Algorithm. LFA paths MUST only use Prefix-SIDs   paths for that Flex-Algorithm. LFA paths MUST only use Prefix-SIDs
  advertised specifically for the given algorithm. LFA paths MUST NOT   advertised specifically for the given algorithm. LFA paths MUST NOT
  use an Adjacency-SID that belongs to a link that has been pruned from   use an Adjacency-SID that belongs to a link that has been pruned from
  the Flex-Algorithm computation.   the Flex-Algorithm computation.
    jgs: Maybe supply a reference for LFA.
   
  If LFA protection is being used to protect a given Flex-Algorithm   If LFA protection is being used to protect a given Flex-Algorithm
  paths, all routers in the area participating in the given Flex-   path, all routers in the area participating in the given Flex-
  Algorithm SHOULD advertise at least one Flex-Algorithm specific Node-   Algorithm SHOULD advertise at least one Flex-Algorithm specific Node-
  SID. These Node-SIDs are used to steer traffic over the LFA computed   SID. These Node-SIDs are used to steer traffic over the LFA computed
  backup path.   backup path.
   
  14.2. SRv6 Forwarding for Flex-Algorithm   14.2. SRv6 Forwarding for Flex-Algorithm
   
  This section describes how Flex-Algorithm paths are used with SRv6   This section describes how Flex-Algorithm paths are used with SRv6
  forwarding.   forwarding.
   
   
   
   
   
   
   
  In SRv6 a node is provisioned with topology/algorithm specific   In SRv6 a node is provisioned with a topology/algorithm specific
  locators for each of the topology/algorithm pairs supported by that   locator for each topology/algorithm pair supported by that
  node. Each locator is an aggregate prefix for all SIDs provisioned   node. Each locator is an aggregate prefix for all SIDs provisioned
  on that node which have the matching topology/algorithm.   on that node which have the matching topology/algorithm.
    jgs: If the usage "topology/algorithm" isn't already widespread, may I
    suggest "(topology, algorithm)" instead? I tend to read the slash
    as either/or, whereas what you mean is a pair.
    It's not a big deal and if the ship has sailed already, fine.
   
  The SRv6 locator advertisement in IS-IS   The SRv6 locator advertisement in IS-IS
  [I-D.ietf-lsr-isis-srv6-extensions] includes the MTID value that   [I-D.ietf-lsr-isis-srv6-extensions] includes the MTID value that
  associates the locator with a specific topology. SRv6 locator   associates the locator with a specific topology. SRv6 locator
  advertisements also includes an Algorithm value that explicitly   advertisements also include an Algorithm value that explicitly
  associates the locator with a specific algorithm. When the algorithm   associates the locator with a specific algorithm. When the algorithm
  value advertised with a locator represents a Flex-Algorithm, the   value advertised with a locator represents a Flex-Algorithm, the
  paths to the locator prefix MUST be calculated using the specified   paths to the locator prefix MUST be calculated using the specified
  Flex-Algorithm in the associated topology.   Flex-Algorithm in the associated topology.
   
  Forwarding entries for the locator prefixes advertised in IS-IS MUST   Forwarding entries for the locator prefixes advertised in IS-IS MUST
  be installed in the forwarding plane of the receiving SRv6 capable   be installed in the forwarding plane of the receiving SRv6 capable
  routers when the associated topology/algorithm is participating in   routers when the associated topology/algorithm is participating in
       
Skipping Skipping
   
  15. Operational Considerations   15. Operational Considerations
   
  15.1. Inter-area Considerations   15.1. Inter-area Considerations
   
  The scope of the Flex-Algorithm computation is an area, so is the   The scope of the Flex-Algorithm computation is an area, so is the
  scope of the FAD. In IS-IS, the Router Capability TLV in which the   scope of the FAD. In IS-IS, the Router Capability TLV in which the
  FAD Sub-TLV is advertised MUST have the S-bit clear, which prevents   FAD Sub-TLV is advertised MUST have the S-bit clear, which prevents
  it to be flooded outside of the level in which it was originated.   it from being flooded outside of the level in which it was originated.
  Even though in OSPF the FAD Sub-TLV can be flooded in an RI LSA that   Even though in OSPF the FAD Sub-TLV can be flooded in an RI LSA that
  has AS flooding scope, the FAD selection is performed for each   has AS flooding scope, the FAD selection is performed for each
  individual area in which it is being used.   individual area in which it is being used.
   
  There is no requirement for the FAD for a particular Flex-Algorithm   There is no requirement for the FAD for a particular Flex-Algorithm
  to be identical in all areas in the network. For example, traffic   to be identical in all areas in the network. For example, traffic
  for the same Flex-Algorithm may be optimized for minimal delay (e.g.,   for the same Flex-Algorithm may be optimized for minimal delay (e.g.,
  using delay metric) in one area or level, while being optimized for   using delay metric) in one area or level, while being optimized for
       
Skipping Skipping
  level 1 area. This allows the operator to configure the FAD in one   level 1 area. This allows the operator to configure the FAD in one
  or multiple routers in the level 2, without the need to repeat the   or multiple routers in the level 2, without the need to repeat the
  same task in each level 1 area, if the intent is to have the same FAD   same task in each level 1 area, if the intent is to have the same FAD
  for the particular Flex-Algorithm across all levels. This can   for the particular Flex-Algorithm across all levels. This can
  similarly be achieved in OSPF by using the AS flooding scope of the   similarly be achieved in OSPF by using the AS flooding scope of the
  RI LSA in which the FAD Sub-TLV for the particular Flex-Algoritm is   RI LSA in which the FAD Sub-TLV for the particular Flex-Algoritm is
  advertised.   advertised.
   
  Re-generation of FAD from a level 1 area to the level 2 area is not   Re-generation of the FAD from a level 1 area to the level 2 area is not
  supported in IS-IS, so if the intent is to regenerate the FAD between   supported in IS-IS, so if the intent is to regenerate the FAD between
  IS-IS levels, the FAD MUST be defined on router(s) that are in level   IS-IS levels, the FAD MUST be defined on router(s) that are in level
  2. In OSPF, the FAD definition can be done in any area and be   2. In OSPF, the FAD definition can be done in any area and be
  propagated to all routers in the OSPF routing domain by using the AS   propagated to all routers in the OSPF routing domain by using the AS
  flooding scope of the RI LSA.   flooding scope of the RI LSA.
   
  15.2. Usage of SRLG Exclude Rule with Flex-Algorithm   15.2. Usage of SRLG Exclude Rule with Flex-Algorithm
   
       
Skipping Skipping
  link of last resort by setting the TE metric value in the Flex-   link of last resort by setting the TE metric value in the Flex-
  Algorithm ASLA delay advertisement for the link to the value of (2^24   Algorithm ASLA delay advertisement for the link to the value of (2^24
  - 1) in IS-IS and (2^32 - 1) in OSPF.   - 1) in IS-IS and (2^32 - 1) in OSPF.
   
  16. Backward Compatibility   16. Backward Compatibility
   
  This extension brings no new backward compatibility issues. IS-IS,   This extension brings no new backward compatibility issues. IS-IS,
  OSPFv2 and OSPFv3 all have well defined handling of unrecognized TLVs   OSPFv2 and OSPFv3 all have well defined handling of unrecognized TLVs
  and sub-TLVs that allows the introduction of the new extensions,   and sub-TLVs that allows the introduction of new extensions,
  similar to those defined here, without introducing any   similar to those defined here, without introducing any
  interoperability issues.   interoperability issues.
   
   
   
   
   
   
       
Skipping Skipping
   
  Description: Flexible Algorithms.   Description: Flexible Algorithms.
   
  Reference: This document (Section 4).   Reference: This document (Section 4).
   
  18.1.2. IGP Metric-Type Registry   18.1.2. IGP Metric-Type Registry
   
  IANA is requested to set up a registry called "IGP Metric-Type   IANA is requested to set up a registry called "IGP Metric-Type
  Registry" under an "Interior Gateway Protocol (IGP) Parameters" IANA   Registry" under the "Interior Gateway Protocol (IGP) Parameters" IANA
  registries. The registration policy for this registry is "Standards   grouping. The registration policy for this registry is "Standards
  Action" ([RFC8126] and [RFC7120]).   Action" ([RFC8126] and [RFC7120]).
   
  Values in this registry come from the range 0-255.   Values in this registry come from the range 0-255.
   
  This document registers following values in the "IGP Metric-Type   This document registers following values in the "IGP Metric-Type
  Registry":   Registry":
   
  Type: 0   Type: 0
       
Skipping Skipping
  [RFC5305], section 3.7, and Traffic engineering metric as defined   [RFC5305], section 3.7, and Traffic engineering metric as defined
  in [RFC3630], section 2.5.5   in [RFC3630], section 2.5.5
   
  Reference: This document (Section 5.1)   Reference: This document (Section 5.1)
   
  18.2. Flexible Algorithm Definition Flags Registry   18.2. Flexible Algorithm Definition Flags Registry
   
  IANA is requested to set up a registry called "IS-IS Flexible   IANA is requested to set up a registry called "IS-IS Flexible
  Algorithm Definition Flags Registry" under an "Interior Gateway   Algorithm Definition Flags Registry" under the "Interior Gateway
  Protocol (IGP) Parameters" IANA registries. The registration policy   Protocol (IGP) Parameters" IANA grouping. The registration policy
  for this registry is "Standards Action" ([RFC8126] and [RFC7120]).   for this registry is "Standards Action" ([RFC8126] and [RFC7120]).
    New registrations should be assigned in ascending bit order (see
    Section 6.4).
   
  This document defines the following single bit in Flexible Algorithm   This document defines the following single bit in Flexible Algorithm
  Definition Flags registry:   Definition Flags registry:
   
  Bit # Name   Bit # Name
  ----- ------------------------------   ----- ------------------------------
  0 Prefix Metric Flag (M-flag)   0 Prefix Metric Flag (M-flag)
   
   
  Reference: This document (Section 6.4, Section 7.4).   Reference: This document (Section 6.4, Section 7.4).
   
  18.3. IS-IS IANA Considerations   18.3. IS-IS IANA Considerations
   
  18.3.1. Sub TLVs for Type 242   18.3.1. IS-IS Sub-TLVs for IS-IS Router CAPABILITY TLV
   
  This document makes the following registrations in the "sub-TLVs for   This document makes the following registrations in the "IS-IS Sub-TLVs
  TLV 242" registry.   for IS-IS Router CAPABILITY TLV" registry.
   
  Type: 26.   Type: 26.
   
  Description: Flexible Algorithm Definition.   Description: Flexible Algorithm Definition (FAD).
    jgs: Since this is frequently referred to in this spec as "FAD" I've suggested
    updating its description to include that. I've done similarly below for
    OSPF and for a few other acronyms.
   
  Reference: This document (Section 5.1).   Reference: This document (Section 5.1).
   
   
   
   
   
   
   
   
   
   
  18.3.2. Sub TLVs for for TLVs 135, 235, 236, and 237   18.3.2. IS-IS Sub-TLVs for TLVs Advertising Prefix Reachability
   
  This document makes the following registrations in the "Sub-TLVs for   This document makes the following registrations in the "IS-IS Sub-TLVs for
  for TLVs 135, 235, 236, and 237" registry.   TLVs Advertising Prefix Reachability" registry.
   
  Type: 6   Type: 6
   
  Description: Flexible Algorithm Prefix Metric.   Description: Flexible Algorithm Prefix Metric (FAPM).
   
  Reference: This document (Section 8).   Reference: This document (Section 8).
   
  18.3.3. Sub-Sub-TLVs for Flexible Algorithm Definition Sub-TLV   18.3.3. Sub-Sub-TLVs for Flexible Algorithm Definition Sub-TLV
   
  This document creates the following Sub-Sub-TLV Registry:   This document creates the following Sub-Sub-TLV Registry, under the
    IS-IS TLV Codepoints grouping.
   
  Registry: Sub-Sub-TLVs for Flexible Algorithm Definition Sub-TLV   Registry: Sub-Sub-TLVs for Flexible Algorithm Definition Sub-TLV
   
  Registration Procedure: Expert review   Registration Procedure: Expert review
    jgs: You might want to preemptively mention here that the IS-IS grouping
    already contains expert review guidance for all Expert Review registries
    under it. Your choice, might save you some review queries though. Text
    if you want it:
    (Note that the IS-IS TLV Codepoints grouping includes Expert
    Review guidance that applies to all registries thereunder.)
   
  Reference: This document (Section 5.1)   Reference: This document (Section 5.1)
   
  This document defines the following Sub-Sub-TLVs in the "Sub-Sub-TLVs   This document defines the following Sub-Sub-TLVs in the "Sub-Sub-TLVs
  for Flexible Algorithm Definition Sub-TLV" registry:   for Flexible Algorithm Definition Sub-TLV" registry:
   
  Type: 1   Type: 1
   
       
Skipping Skipping
  Description: Flexible Algorithm Exclude SRLG   Description: Flexible Algorithm Exclude SRLG
   
  Reference: This document (Section 6.5).   Reference: This document (Section 6.5).
   
  18.4. OSPF IANA Considerations   18.4. OSPF IANA Considerations
   
  18.4.1. OSPF Router Information (RI) TLVs Registry   18.4.1. OSPF Router Information (RI) TLVs Registry
   
    This specification makes the following registration in
  This specification updates the OSPF Router Information (RI) TLVs   the OSPF Router Information (RI) TLVs
  Registry.   Registry.
   
  Type: 16   Type: 16
   
  Description: Flexible Algorithm Definition TLV.   Description: Flexible Algorithm Definition (FAD) TLV.
   
  Reference: This document (Section 5.2).   Reference: This document (Section 5.2).
   
  18.4.2. OSPFv2 Extended Prefix TLV Sub-TLVs   18.4.2. OSPFv2 Extended Prefix TLV Sub-TLVs
   
  This document makes the following registrations in the "OSPFv2   This document makes the following registrations in the "OSPFv2
  Extended Prefix TLV Sub-TLVs" registry.   Extended Prefix TLV Sub-TLVs" registry.
   
  Type: 3   Type: 3
   
  Description: Flexible Algorithm Prefix Metric.   Description: Flexible Algorithm Prefix Metric (FAPM).
   
  Reference: This document (Section 9).   Reference: This document (Section 9).
   
  18.4.3. OSPFv3 Extended-LSA Sub-TLVs   18.4.3. OSPFv3 Extended-LSA Sub-TLVs
   
  This document makes the following registrations in the "OSPFv3   This document makes the following registrations in the "OSPFv3
  Extended-LSA Sub-TLVs" registry.   Extended-LSA Sub-TLVs" registry.
   
  Type: 26   Type: 26
   
  Description: Flexible Algorithm Prefix Metric.   Description: Flexible Algorithm Prefix Metric (FAPM).
   
  Reference: This document (Section 9).   Reference: This document (Section 9).
   
  Type: TBD (suggested value 30)   Type: TBD2 (suggested value 30)
   
  Description: OSPF Flexible Algorithm ASBR Metric Sub-TLV   Description: OSPF Flexible Algorithm ASBR Metric Sub-TLV
   
  Reference: This document (Section 10.2).   Reference: This document (Section 10.2).
   
   
   
   
   
   
   
   
  18.4.4. OSPF Flex-Algorithm Prefix Metric Bits   18.4.4. OSPF Flex-Algorithm Prefix Metric Bits
   
  This specification requests creation of "OSPF Flex-Algorithm Prefix   This specification requests creation of the "OSPF Flex-Algorithm Prefix
  Metric Bits" registry under the OSPF Parameters Registry with the   Metric Bits" registry under the "Open Shortest Path First (OSPF) Parameters"
    grouping, with the
  following initial values.   following initial values.
   
  Bit Number: 0   Bit Number: 0
   
  Description: E bit - External Type   Description: E bit - External Type
   
  Reference: this document.   Reference: this document.
   
  The bits 1-7 are unassigned and the registration procedure to be   The bits 1-7 are unassigned and the registration procedure to be
  followed for this registry is IETF Review.   followed for this registry is IETF Review.
   
  18.4.5. OSPF Opaque LSA Option Types   18.4.5. OSPF Opaque LSA Option Types
   
  This document makes the following registrations in the "OSPF Opaque   This document makes the following registrations in the "Opaque Link-State
  LSA Option Types" registry.   Advertisements (LSA) Option Types" registry under the "Open Shortest Path
    First (OSPF) Opaque Link-State Advertisements (LSA) Option Types" grouping.
   
  Value: TBD (suggested value 11)   Value: TBD1 (suggested value 11)
   
  Description: OSPFv2 Extended Inter-Area ASBR LSA   Description: OSPFv2 Extended Inter-Area ASBR (EIA-ASBR) LSA
   
  Reference: This document (Section 10.1).   Reference: This document (Section 10.1).
   
  18.4.6. OSPFv2 Externded Inter-Area ASBR TLVs   18.4.6. OSPFv2 Extended Inter-Area ASBR TLVs
   
  This specification requests creation of "OSPFv2 Extended Inter-Area   This specification requests creation of "OSPFv2 Extended Inter-Area
  ASBR TLVs" registry under the OSPFv2 Parameters Registry with the   ASBR TLVs" registry under the OSPFv2 Parameters Registry with the
  following initial values.   following initial values.
   
  Value: 1   Value: 1
   
  Description : Extended Inter-Area ASBR TLV   Description : Extended Inter-Area ASBR TLV
       
Skipping Skipping
   
  The values 2 to 32767 are unassigned, values 32768 to 33023 are   The values 2 to 32767 are unassigned, values 32768 to 33023 are
  reserved for experimental use while the values 0 and 33024 to 65535   reserved for experimental use while the values 0 and 33024 to 65535
  are reserved. The registration procedure to be followed for this   are reserved. The registration procedure to be followed for this
  registry is IETF Review or IESG Approval.   registry is IETF Review or IESG Approval.
   
  18.4.7. OSPFv2 Inter-Area ASBR Sub-TLVs   18.4.7. OSPFv2 Inter-Area ASBR Sub-TLVs
   
  This specification requests creation of "OSPFv2 Extended Inter-Area   This specification requests creation of the "OSPFv2 Extended Inter-Area
  ASBR Sub-TLVs" registry under the OSPFv2 Parameters Registry with the   ASBR Sub-TLVs" registry under the "Open Shortest Path First v2 (OSPFv2)
    Parameters" grouping, with the
  following initial values.   following initial values.
   
   
   
   
   
   
  Value: 1   Value: 1
       
Skipping Skipping
   
  The values 2 to 32767 are unassigned, values 32768 to 33023 are   The values 2 to 32767 are unassigned, values 32768 to 33023 are
  reserved for experimental use while the values 0 and 33024 to 65535   reserved for experimental use while the values 0 and 33024 to 65535
  are reserved. The registration procedure to be followed for this   are reserved. The registration procedure to be followed for this
  registry is IETF Review or IESG Approval.   registry is IETF Review or IESG Approval.
   
  18.4.8. OSPF Flexible Algorithm Definition TLV Sub-TLV Registry   18.4.8. OSPF Flexible Algorithm Definition TLV Sub-TLV Registry
   
  This document creates the following registry:   This document creates the following registry under the "Open Shortest
    Path First (OSPF) Parameters" grouping.
   
  Registry: OSPF Flexible Algorithm Definition TLV sub-TLV   Registry: OSPF Flexible Algorithm Definition TLV sub-TLV
   
  Registration Procedure: Expert review   Registration Procedure: Expert review
   
  Reference: This document (Section 5.2)   Reference: This document (Section 5.2)
   
  The "OSPF Flexible Algorithm Definition TLV sub-TLV" registry will   The "OSPF Flexible Algorithm Definition TLV sub-TLV" registry will
  define sub-TLVs at any level of nesting for the Flexible Algorithm   define sub-TLVs at any level of nesting for the Flexible Algorithm
  TLV and should be added to the "Open Shortest Path First (OSPF)   TLV. New values can be allocated via IETF
  Parameters" registries group. New values can be allocated via IETF  
  Review or IESG Approval.   Review or IESG Approval.
    jgs: I made the minor edit of moving the grouping request for consistency
    with the other requests.
   
    Less trivially, you have a conflict -- the "Registration Procedure"
    line says "Expert review", but then the paragraph right above says "IETF
    Review or IESG Approval". What do you want the registration policy to be?
    Also, if the policy really is Expert Review, you'll need to provide some
    guidance for the expert, since the OSPF grouping doesn't include blanket
    guidance. See RFC 8126 §4.5 for details.
  This document registers following Sub-TLVs in the "TLVs for Flexible   This document registers the following Sub-TLVs in the "TLVs for Flexible
  Algorithm Definition TLV" registry:   Algorithm Definition TLV" registry:
    jgs: What is the real name of the registry? Is it "OSPF Flexible Algorithm
    Definition TLV sub-TLV" which is what you mention first, or is it "TLVs
    for Flexible Algorithm Definition TLV" as immediately above? Probably
    the former but you make the call and do the edit, please.
   
  Type: 1   Type: 1
   
  Description: Flexible Algorithm Exclude Admin Group   Description: Flexible Algorithm Exclude Admin Group
   
  Reference: This document (Section 7.1).   Reference: This document (Section 7.1).
   
  Type: 2   Type: 2
       
Skipping Skipping
  Type: 5   Type: 5
   
  Description: Flexible Algorithm Exclude SRLG   Description: Flexible Algorithm Exclude SRLG
   
  Reference: This document (Section 7.5).   Reference: This document (Section 7.5).
   
  Types in the range 32768-33023 are for experimental use; these will   Types in the range 32768-33023 are for experimental use; these will
  not be registered with IANA, and MUST NOT be mentioned by RFCs.   not be registered with IANA, and MUST NOT be mentioned by RFCs.
    jgs: I see what you're trying to do here but I don't think it's really suitable to
    put directions to RFC authors in the IANA Considerations section. This
    restriction is kind of implicit in the Experimental status anyway. You might
    also want to take a look at RFC 8126 §4.2.
   
  Types in the range 33024-65535 are not to be assigned at this time.   Types in the range 33024-65535 are not to be assigned at this time.
  Before any assignments can be made in the 33024-65535 range, there   Before any assignments can be made in the 33024-65535 range, there
  MUST be an IETF specification that specifies IANA Considerations that   MUST be an IETF specification that specifies IANA Considerations that
  covers the range being assigned.   covers the range being assigned.
   
  18.4.9. Link Attribute Applications Registry   18.4.9. Link Attribute Applications Registry