[Iot-directorate] IOTdir Review of draft-ietf-roll-dao-projection-19

Toerless Eckert <tte@cs.fau.de> Mon, 13 September 2021 21:02 UTC

Return-Path: <eckert@i4.informatik.uni-erlangen.de>
X-Original-To: iot-directorate@ietfa.amsl.com
Delivered-To: iot-directorate@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2F6FF3A0DC7 for <iot-directorate@ietfa.amsl.com>; Mon, 13 Sep 2021 14:02:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.898
X-Spam-Level:
X-Spam-Status: No, score=-1.898 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=unavailable autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nlPvOec5fTBT for <iot-directorate@ietfa.amsl.com>; Mon, 13 Sep 2021 14:02:46 -0700 (PDT)
Received: from faui40.informatik.uni-erlangen.de (faui40.informatik.uni-erlangen.de [131.188.34.40]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 16EE93A0DB6 for <iot-directorate@ietf.org>; Mon, 13 Sep 2021 14:02:42 -0700 (PDT)
Received: from faui48e.informatik.uni-erlangen.de (faui48e.informatik.uni-erlangen.de [IPv6:2001:638:a000:4134::ffff:51]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by faui40.informatik.uni-erlangen.de (Postfix) with ESMTPS id 75AB5548053 for <iot-directorate@ietf.org>; Mon, 13 Sep 2021 23:02:35 +0200 (CEST)
Received: by faui48e.informatik.uni-erlangen.de (Postfix, from userid 10463) id 650FD4E1603; Mon, 13 Sep 2021 23:02:35 +0200 (CEST)
Resent-From: Toerless Eckert <tte@cs.fau.de>
Resent-Date: Mon, 13 Sep 2021 23:02:35 +0200
Resent-Message-ID: <YT+8ax83cKgRjdHe@faui48e.informatik.uni-erlangen.de>
Resent-To: iot-directorate@ietf.org
Date: Mon, 30 Aug 2021 00:26:20 +0200
From: Toerless Eckert <tte@cs.fau.de>
To: Routing Over Low power and Lossy networks <roll@ietf.org>, draft-ietf-roll-dao-projection.all@ietf.org
Message-ID: <20210829222620.GA6858@faui48f.informatik.uni-erlangen.de>
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
User-Agent: Mutt/1.10.1 (2018-07-13)
Archived-At: <https://mailarchive.ietf.org/arch/msg/iot-directorate/H3fBK8W7OIRiHjgfv34Eygd-FGc>
Subject: [Iot-directorate] IOTdir Review of draft-ietf-roll-dao-projection-19
X-BeenThere: iot-directorate@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Mailing list for the IoT Directorate Members <iot-directorate.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/iot-directorate>, <mailto:iot-directorate-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/iot-directorate/>
List-Post: <mailto:iot-directorate@ietf.org>
List-Help: <mailto:iot-directorate-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/iot-directorate>, <mailto:iot-directorate-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 13 Sep 2021 21:02:58 -0000

draft: draft-ietf-roll-dao-projection-19
Review-source: IOTdir
Reviewer: Toerless Eckert
Review result: Technology ready, Text has various issues, mostly difficult to understand.

Dear Authors

Thanks a lot for this work.  This is cool technology, it has the 
ability to provide very flexible and wide range of path steering
and header optimizations for RPL networks. 

Overview:

I am not sure i understand all finer details due likely
to some impedance mismatch between the expected RPL expertise of the text
and mine, but i think that the proposed technology is sound
and has on the technoloy (not text) side only few details that may
 need to be added (missing guidance or references on timers,
maybe MTU handling if that is not supposed to be well-known, etc.).

If there is any technological gap, then it is me hoping that this
could be a solution for the RFC8994 A.9.4 problem, but alas this
solution does not support establishment of additional routes for
storage mode DODAGs. Too bad. Especially because its not quite clear
to me why that would not be possible to easily do as well. But
in understand how that RPL profile may not have been of any interest
for this work.

As i am not an expert for RPL, but mostly familia with only 
basic use of RPL, i am not sure how much of an expert a reader of this 
document is expected to be to be able to read, understand and vet this text.
I think i and other RPL beginners would be able to understand the text
and vet potential gotches better if more explanations where given,
and my feedback indicates this accordingly. But i will not claim
whether such explanations are always deemed necessary for the target
audience.

The mayor issue in the text is that it front-loads a lot of details
that are then hard to understand and open questions are only answered
much later. For example, packet encoding is put first in the document,
as opposed to (as i have observed it in more RFCs) at the end. Then
the text follows with processing description, and only finally with
what i consider to be a complete description of how the pieces
interact through examples. As mentioned in the details, i think the order should
be as much as possible top-down, starting with sufficienly complex
examples that introduce the technology to the extend that the
main concepts are used in the example. E.g.: sequential or complex track, 
sements, destinations, targets.

I only performed very opportunistic spell check, please do one yourself.
Please run idnits check too, it complains about the abstract for me.

Appended draft with numbered lines and non-numbered line feedback/comments.

Cheers & thanks again
    Toerless


     5	ROLL                                                     P. Thubert, Ed.
     6	Internet-Draft                                             Cisco Systems
     7	Updates: 6554 (if approved)                                  R.A. Jadhav
     8	Intended status: Standards Track                             Huawei Tech
     9	Expires: 28 January 2022                                     M. Gillmore
    10	                                                                   Itron
    11	                                                            27 July 2021
    12	
    13	
    14	                  Root initiated routing state in RPL
    15	                   draft-ietf-roll-dao-projection-19
...

   135	1.  Introduction
   136	
   137	   RPL, the "Routing Protocol for Low Power and Lossy Networks" [RPL]
   138	   (LLNs), is a generic Distance Vector protocol that is well suited for
   139	   application in a variety of low energy Internet of Things (IoT)
   140	   networks.  RPL forms Destination Oriented Directed Acyclic Graphs
   141	   (DODAGs) in which the Root often acts as the Border Router to connect
   142	   the RPL domain to the Internet.  The Root is responsible to select
                          ^^^^^^^^^^^^^^^
Really ? What is the "often" case where e.g.: at least nodes in the RPL network
can reach nodes across the Internet ? Aka: from my understanding, the common
deployment would attach to other limited domain (RFC8799) networks, for example
if i correctly glean from rfc9030, but not "the Internet". Otherwise, please
 provide a reference to justify "often ... to the Internet".

Aka: suggest to replace Internet with "other network" or maybe "a backbone".

   142	   the RPL domain to the Internet.  The Root is responsible to select
   143	   the RPL Instance that is used to forward a packet coming from the
   144	   Internet into the RPL domain and set the related RPL information in

Same comments about "the Internet".

   147	   The "6TiSCH Architecture" [6TiSCH-ARCHI] also leverages the
   148	   "Deterministic Networking Architecture" [RFC8655] centralized model
   149	   whereby the device resources and capabilities are exposed to an
   150	   external controller which installs routing states into the network
   151	   based on some objective functions that reside in that external
   152	   entity.  With DetNet and 6TiSCH, the component of the controller that

The DetNet architecture has a lot more aspects for which i am not sure, that
6TiSCH matches them (have not gone fully through 6TiSCH-ARCHI). Aka: DetNet as
of today implies the per-hop,per-flow IntServ architecture, but no DiffServ
for DetNet service hops. Is this what 6TiSCH-ARCHI does as well ?

If not, then maybe change to "levereges the aspects of the ..." to make
the claim more scoped to what the paragraph describes.

   152	   entity.  With DetNet and 6TiSCH, the component of the controller that
   153	   is responsible of computing routes is called a Path Computation
   154	   Element ([PCE]).
   155	
   156	   Based on heuristics of usage, path length, and knowledge of device
   157	   capacity and available resources such as battery levels and
   158	   reservable buffers, the PCE with a global visibility on the system
   159	   can compute direct Peer to Peer (P2P) routes that are optimized for
   160	   the needs expressed by an objective function.  This document

"Based on heuristics" has one doubt whether the result is deerministic. Not
saying heuristics may not play a role, but maybe fnd a better wording.

"global visibility" sounds like weather satellites. More specifically when
reading, i wonder if the scope of the discussion in this document can be
constraint to a single RPL network, or if it is important to understand
that the mechanisms of this document a also enabling more "interesting" paths.

Aka: If the following is one of the cases for which this drafts work is
in support of, then i would really like to see this type of picture and
explanation added as something like a reference picture with explanation:

               Client11               Client21             ClientN1
                |                      |                    |
  PCE        RPL-network1         RPL-network2         RPL-networkN     
   |        Root1     Rtr1b      Root2    Rtr2b  ...   RootN   RtrNb
   |          |         |          |        |           |       |
  ..................................................................
                       Backbone Network, L2 / L3, e.g.:
  -+----------+---------+----------+--------+-----------+-------+----

Aka: The PCE can calculate paths between clients in this internetwork.
An example path between Client11 and ClientN1 is composed of the
projected path between Client11 and one of the nodes connecting RPL-network1
to the backbone, e.g.: Rtr1b, a path through the backbone, and finally
a path through RPL-networkN, again including the choice of edge
router to the backbone, e.g.: RtrNb.

I guess if the solution does not support RtrIb, then its explanation
could more easily be constrained to just a single RPL-network.

   160	   the needs expressed by an objective function.  This document

This statement is confusing.
Without this draft, the objective functions result in specific paths,
and these paths are insufficient, so the PCE also uses this drafts
mechanism to achieve better paths. So the objective function clearly
was not sufficient. Besides, the objective function is very specific
to parameters used in distributed path calculation, not PCE.

In my mind, there is some goal/objective for the path to be calculated,
and this objective is achieved by OF to create DODAG and paths, and if
those paths are insufficient, then 
and a controller can achieve that objective by defining a
but when the controller determinses that it can not solely be achieved
through objective function parameters, then it starts using this drafts
mechanism...

   160	   the needs expressed by an objective function.  This document

Suggest new paragraph before "This"

   161	   specifies protocol extensions to RPL [RPL] that enable the Root of a
   162	   main DODAG to install centrally-computed routes inside the DODAG on
   163	   behalf of a PCE.
   172	
   173	   This specification expects that the main RPL Instance is operated in
   174	   RPL Non-Storing Mode of Operation (MOP) to sustain the exchanges with
   175	   the Root.  In that Mode, the Root has enough information to build a
                    ^ Only ?
   176	   basic DODAG topology based on parents and children, but lacks the
                                                                  ^ still
   177	   knowledge of siblings.  This document adds the capability for nodes

Aka: in storing mode the root would even have less information, right ?

   178	   to advertise sibling information in order to improve the topological
   179	   awareness of the Root.
   180	
   181	   As opposed to the classical RPL operations where routes are injected
   182	   by the Target nodes, the protocol extensions enable the Root of a
   183	   DODAG to project the routes that are needed onto the nodes where they
   184	   should be installed.  This specification uses the term Projected
   185	   Route to refer to those routes.  Projected Routes can be used to
   186	   reduce the size of the source routing headers with loose source
   187	   routing operations down the main RPL DODAG.  Projected Routes can
   188	   also be used to build transversal routes for route optimization and
   189	   Traffic Engineering purposes, between nodes of the DODAG.
   190	
   191	   A Projected Route may be installed in either Storing and Non-Storing
   192	   Mode, potentially resulting in hybrid situations where the Mode of
   193	   the Projected Route is different from that of the main RPL Instance.
   194	   A Projected Route may be a stand-alone end-to-end path or a Segment
   195	   in a more complex forwarding graph called a Track.
   197	   The concept of a Track was introduced in the 6TiSCH architecture, as
   198	   a potentially complex path with redundant forwarding solutions along
   199	   the way.

Please add a reference to the spec that introduced Track.

Where is "stand-alone" introduced ? If elswhere, add reference, otherwise
say its introduced here. Also, everything else is capitalized, maybe you want
to capitalize also Stand Alone.

   199     With this specification, a Track is a DODAG formed by a RPL
   200	   local Instance that is rooted at the Track Ingress.  If there is a
   201	   single Track Egress, then the Track is reversible to form another
   202	   DODAG by reversing the direction of each edge.  A node at the ingress
   203	   of more than one Segment in a Track may use one or more of these
   204	   Segments to forward a packet inside the Track.

The last sentence is using the term Segment to explain something new, but the
term Segment was not sufficiently defined in before. Other than that a Segment
can be or is always (?) a Projected Route, but Projected Route is also undefined.
   
   206	   The "Reliable and Available Wireless (RAW) Architecture/Framework"
   207	   [RAW-ARCHI] defines the Path Selection Engine (PSE) that adapts the
   208	   use of the path redundancy within a Track to defeat the diverse
   209	   causes of packet loss.
   210
   211	   The PSE is a dataplane extension of the PCE; it controls the
   212	   forwarding operation of the packets within a Track, using Packet ARQ,
   213	   Replication, Elimination, and Overhearing (PAREO) functions over the
   214	   Track segments, to provide a dynamic balance between the reliability
   215	   and availability requirements of the flows and the need to conserve
   216	   energy and spectrum.
   217	
   218	   The time scale at which the PCE (re)computes the Track can be long,
   219	   using long-term statistical metrics to perform global optimizations
   220	   at the scale of the whole network.  Conversely, the PSE makes
   229	   forwarding decisions at the time scale of one or a small collection
   230	   of packets, based on a knowledge that is limited in scope to the
   231	   Track itself, so it can be refreshed at a fast pace.

I would suggest to restructure this. Before going into the RPL details as you do
in before, maybe start with the problem to be solved. Which seems to be a
mechanism to support packet replication, traversal over alternative paths and
duplicate elimination (and seemingly more). 6TiSCH introduced Tracks as the
concept for redundant paths, RAW inroduced PAREO. This document introduces
one solution to to build Tracks with RPL und a mechanism called Projected Routes.

Something like that to have a more logical sequence of explanations, top to bottom.
   
   233	   Projected Routes must be used with the parsimony to limit the amount

Parsimony in he sense you use it, was never used in RFCs, rc871 used law of parsimony.
Suggest to reword for easier reading. For example, "Care must be taken that state installed for
projected routes fit in each devices resources".

Is the amount of traffic solely a responsibility of the installation of projected
routes ? Isn't this also responsibility of the PSE ? (just guessing, haven't read
up on it).

   234	   of state that is installed in each device to fit within the device
   235	   resources, and to maintain the amount of rerouted traffic within the
   237	   capabilities of the transmission links.  The methods used to learn
   237	   the node capabilities and the resources that are available in the
   238	   devices and in the network are out of scope for this document.
   239	
   240	   This specification uses the RPL Root as a proxy to the PCE.  The PCE
   241	   may be collocated with the Root, or may reside in an external
   242	   Controller.
   243	
   244	   In that case, the PCE exchanges control messages with the Root over a
              ^^^^ the latter
   245	   Southbound API that is out of scope for this specification.  The
                     ^ PCE
   246	   algorithm to compute the paths and the protocol used by an external
   247	   PCE to obtain the topology of the network from the Root are also out
   248	   of scope.

In his AD review for draft-ietf-bier-te-arch, Alvaro asked me to provide examples
for such topology discovery. YOu can of course wait out if this will happen for
his doc too, i personally have no strong opinions, but if you need example
text, see draft-ietf-bier-te-arch, 3.2.1.1, Third paragraph.

Personally, i do not like the conditioning that a southbound API is supposedly
only necessary when the PCE is external from the RPL Root. IMHO, there always
needs to be at least an informat model for Projected Routes. Which you may
agree on, but its not mentioned. PCE and RPL Root can just be independent
software entities on the same node.


   260	2.2.  Glossary
   261	
   262	   This document often uses the following acronyms:
   263	
   264	   CMO:  Control Message Option
   265	   DAO:  Destination Advertisement Object
   266	   DAG:  Directed Acyclic Graph
   267	   DODAG:  Destination-Oriented Directed Acyclic Graph; A DAG with only
   268	      one vertex (i.e., node) that has no outgoing edge (i.e., link)
   269	   LLN:  Low-Power and Lossy Network
   270	   MOP:  RPL Mode of Operation
   271	   P-DAO:  Projected DAO
   272	   P-Route:  Projected Route
   273	   PDR:  P-DAO Request
   274	   RAN:  RPL-Aware Node (either a RPL Router or a RPL-Aware Leaf)
   275	   RAL:  RPL-Aware Leaf
   276	   RH:  Routing Header
   285	   RPI:  RPL Packet Information
   286	   RTO:  RPL Target Option
   287	   RUL:  RPL-Unaware Leaf
   288	   SIO:  RPL Sibling Information Option
   289	   SR-VIO:  A Source-Routed Via Information Option, used in Non-Storing-
   290	      Mode P-DAO messages.
   291	   TIO:  RPL Transit Information Option
   292	   SF-VIO:  A Via Information Option, used in Storing-Mode P-DAO
   293	      messages.
   294	   VIO:  A Via Information Option; it can be a SF-VIO or an SR-VIO.

I had a hard time remembering SR-VIO and SF-VIO throughout the text. Maybe
SM-VIO and NSM-VIO would be easier to remember and better because they explicitly
refer to the explanation (Storing Mode, Non-Storing Mode).

I'll spare you the request for a full Terminology section for these terms with
references, maybe others will do so.

It would make sense though to move the terms newly introduced in this doc,
such as P-Route , P-DAO and the like into section 2.3 and rename 2.3 to "New terms".
Derived terms like P-Route can of course stay concise.
   
   296	2.3.  Other Terms
...

   327	3.  Extending RFC 6550

You have tagged this draft as an Update to RFC6550. You should IMHO have a
section where you summarize what that exactly entails, ideally call "Updated to RFC6550".

AFAIK, we do not have a good formal structure for such update description, Mirja
tried to propose some more keywords, but so far, Update can mean anything.

I would suggest to summarize what type of update this is by making statements
answering the following type of questions (maybe i forgot some). These statements
are also useful when they are answering the questions below with No. I leave it up to
you if you feel this would be good to go here in the beginnin, or if you'd rather
want to summarize it in the end of the document.

Questions:

Does this document specify any functionality that is REQUIREDS or RECOMMENDED
for implementations of RFC6550 ? If so, please detail them.  Else, this can be called
a fully OPTIONAL update for RFC6550.

Will implementations supporting this RFC continue to be backward compatible with
all prior RFCs, RFC6550 and related ? If not, please describe any changes in 
interoperability.

Does this RFC introduce any functional extensions to RFC6550 or other RFC
through mechanisms other than pre-defined extension points ?

Are any pre-defined extension points of RFC6550 or other RFC used, which are not
already IANA registries ?  If so, please include references to the original RFC
section where that extension point was described.

(first time i am trying to formalize these type of question...)

IMHO outside the scope of documenting the "Update" flag is mixed deployment.
If there is no text for that, would be good to add that somehwere. Update section
wouldn't be a bad place.


   341	3.1.  Projected DAO

At this point i am worried whether i am correctly guessing at the forwarding
plane behavior of projected routes, because i felt it was presented in the
Intro section mostly en-passant, but it is hard to follow the document with
the correct explanation of how forwarding works.

What i figured from the Intro is that Projected Routes would allow the root
to specify a loose path in the RH, even though only non-storing mode is used.
Whenever a RPL node then sees a next-op in the RH it looks for a projected
Route towards that next-hop and hmm... just forwards the packet to the
first next hop on the projeted route ? Or it needs to change the routing
header to prepend the projected route ?

And i have absolutely no idea what interactions there are between PSE and
Projected routes in the forwarding plane..

Section 9 has some signalling examples. Maybe it would be good to create
some introductory example that shows the relevant forwarding plane aspects.

   343	   Section 6 of [RPL] introduces the RPL Control Message Options (CMO),
   344	   including the RPL Target Option (RTO) and Transit Information Option
   345	   (TIO), which can be placed in RPL messages such as the Destination
   346	   Advertisement Object (DAO).

   346	   This specification extends the DAO
   347	   message with the Projected DAO (P-DAO); a P-DAO message signals a
   348	   Projected Route to one or more Targets using the new CMOs presented
   349	   therein.

This is confusing. If i am guessing right, i would suggest to write:

This specification defines a new CMO carrying a Projected Route. When this
Projected Route CMO is included in a DAO message, this is called a Projected DAO (P-DAO).

I do not get the "signals _a_ Projected Route to one or _more_ Targets". How can
a single P-DAO be signalled to more than one recipient ?


   349     This specification enables to combine one or more Projected
   350	   Routes into a DODAG called a Track, that is traversed to reach the
   351	   Targets.
   352	
   353	   The Track is assimilated with the DODAG formed for a Local RPL
   354	   Instance.  The local RPLInstanceID of the Track is called the
   355	   TrackID, more in Section 7.2.  A P-DAO message for a Track signals
   356	   the TrackID in the RPLInstanceID field.  The Track Ingress is
   357	   signaled in the DODAGID field of the Projected DAO Base Object; that
   358	   field is elided in the case of the main RPL Instance.  The Track
   359	   Ingress is the Root of the Track, as shown in Figure 1.

How about the text here first finishes up the specification of the P-DAO CMO
before explaining some, but likely not all details of how this stuff
works together ?

   360	
   361	   This specification defines the new "Projected DAO" (P) flag.  The 'P'
   362	   flag is encoded in bit position 2 (to be confirmed by IANA) of the
   363	   Flags field in the DAO Base Object.  The Root MUST set it to 1 in a
   364	   Projected DAO message.  Otherwise it MUST be set to 0.  It is set to
   365	   0 in legacy implementations as specified respectively in Sections
   366	   20.11 and 6.4 of [RPL]. .
   367	
   368	      0                   1                   2                   3
   369	      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
   370	     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   371	     |    TrackID    |K|D|P|  Flags  |   Reserved    | DAOSequence   |
   372	     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   373	     |                                                               |
   374	     +                                                               +
   375	     |                                                               |
   376	     +               IPv6 Address of the Track Ingress               +
   377	     |                                                               |
   378	     +                                                               +
   379	     |                                                               |
   380	     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   381	     |   Option(s)...
   382	     +-+-+-+-+-+-+-+-+
   383	
   384	                    Figure 1: Projected DAO Base Object
   385	
   386	   New fields:
   387	
   388	   TrackID:  In the case of a P-DAO, the RPLInstanceID field is called
   397	      TrackID.  This is a naming convenience but does not change the
   398	      semantics and format of the RPLInstanceID that is used as TrackID.

Maybe then stick to calling it RPLInstanceID in the ASCII and not calling it
a new field (nitpicking).
   
   400	   P:  1-bit flag (position to be confirmed by IANA).
   401	
   402	      The 'P' flag is set to 1 by the Root to signal a Projected DAO,
   403	      and it is set to 0 otherwise.
   404	
   405	   In RPL Non-Storing Mode, the TIO and RTO are combined in a DAO
   406	   message to inform the DODAG Root of all the edges in the DODAG, which
   407	   are formed by the directed parent-child relationships.  Options may
   408	   be factorized; multiple RTOs may be present to signal a collection of
   409	   children that can be reached via the parent(s) indicated in the
   410	   TIO(s) that follows the RTOs.  This specification generalizes the
   411	   case of a parent that can be used to reach a child with that of a
   412	   whole Track through which both children and siblings of the Track
   413	   Egress are reachable.

This again seems to be mixing larger logical behavior explanation into what
probably should be just the spec for the new message encodings here. See how
you can decouple the larger system explamnations from the encoding spec.
   
   415	   New CMOs called the Via Information Options (VIO) are introduced for
   416	   use in P-DAO messages as a multihop alternative to the TIO.  One VIO

a) Add forward pointer to section defining VIO

b I get the feeling as if the whole mentioning of TIO and RTO above should simply
go in a separate chapter for RPL experts with a title like "Why are TIO and RTO
not sufficient". Or "How to combine TIO/RTO with SF-VIO" etc.. but try to
stick to topic at hand here. Feeble minded readers like myself can only balance
a limited number of partially understood terms in the air at the same time.

   417	   is the Stateful VIO (SF-VIO); the SF-VIO installs Storing-Mode
                                                            ^ a ?
   418	   Projected Route  along a strict segment.  The other is the Source-
                          ^ s ?
   419	   Routed VIO (SR-VIO); the SR-VIO installs a Non-Storing-Mode Projected
   420	   Route at the Track Ingress, which uses that state to encapsulate a
   421	   packet with a Routing Header (RH) to the Track Egress.

Question... If i just use basic RPL with non-storing mode, i already
need an RH. And that is let's say a strict path. So after the first hop of that
RH, my next hop is actually a track ingres for which i have SR-VIO. Does this
mean i need to do a full new IPv6 encap of the packet to insert the new
RH for the track ? If so:

a) i'd say: "to encapsulate the packet into an IPv6 packe with a new RH to the track egress.
b) What about MTU issues due to the encap ? Can not find word MTU in text.
   
   423	   Like in a DAO message, the RTOs can be factorized in a P-DAO, but the
   424	   Via Information Options cannot. 

   424	   A P-DAO contains one or more RTOs
                  ^ MUST/SHOULD/MAY ?

   425	   that indicate the destinations that can be reached via the Track, and
   426	   exactly one VIO that signals a sequence of nodes .  In Non-Storing
                                                           ^ That form the track ?

       root ....... Track-Ingres ...(Track Midpoints)... Track-Egres ..... Destination1
                                                                     ...
                                                                     ...   DestinationN
P-DAO has:
  one RTO for each DestinationI
  one VIO for the Track: Midpoints,Egres

Semantic: When packet reaches Track-Ingres, it checks whether destination or
next-hop is one of the DestinationI, if so, then use the track. If SR-VIO,
then encap IPv6/RH, if SF-VIO, then just forward to first hop on track, 
which will also have installed the right state for the track...

Something like this with picture would make the whole concept so much
easier to understand (to me).

   427	   Mode, the Root sends the P-DAO to the Track Ingress where the source-
   428	   routing state is stored.  In Storing Mode, the P-DAO is sent to the
   429	   Track Egress and forwarded along the Segment in the reverse
   430	   direction, installing a Storing Mode state to the Track Egress at
   431	   each hop.  In both cases the Track Ingress is the owner of the Track,
   432	   and it generates the P-DAO-ACK when the installation is successful.

How would the root know whether in storing node all the track midpoints
did successfully install the necessary track state ? If not, hen it would be
worth pointing out how storing mode may end up being less reliable ? 

   434	3.2.  Sibling Information Option

Is there any reason why we wouldn't first want to have the VIO section here
so a feeble minded reader could pop off some open definitions of the stack
and declare understanding victory on whats explaind so far ?

To answe my own question, i think your structure is around whatever RFC
is supposedly extended by a new semantic introduced, but that results in
terrible flow of reading. I would strongly suggest to  reshuffle the
text from the most simple cases to the most complex cases and have
separate short sections summarizing for each affected RFC how it is
extended usin the template questions above, using references to the main
specification part.

   436	   This specification adds another CMO called the Sibling Information
   437	   Option (SIO) that is used by a RPL Aware Node (RAN) to advertise a
   438	   selection of its candidate neighbors as siblings to the Root, more in
   439	   Section 6.4.  The sibling selection process is out of scope.  The
   440	   expectation is that a node reports a Sibling Address in a SIO based
   441	   on an active address registration [RFC8505] from that sibling for
   442	   that address with the 'R' flag not set in the EARO.  The node may
   443	   assess the liveliness of the sibling at any time by performing a
   444	   registration for one of its own addresses, either a link local or a
   453	   global one, depending on whether the node expects the sibling to
   454	   perform a matching advertisement in its own SIO.

I am not even going to try to understand this without a prior graphical
example use case on how this would be used.

   456	3.3.  P-DAO Request
   457	
   458	   Two new RPL Control Messages are also introduced, to enable a RAN to
   459	   request the establishment of a Track between self as the Track
   460	   Ingress Node and a Track Egress.  The RAN makes its request by
   461	   sending a new P-DAO Request (PDR) Message to the Root.  The Root
   462	   confirms with a new PDR-ACK message back to the requester RAN, see
   463	   Section 6.1 for more.

The split between this text and 6.1 is weird and IMHO not helpfull. Merge.
WHats ven the logic to split some explanations out into section 6 and leave
others (P-DAO for example) here ?

I would also like some motivational example of what would make a RAN send
out a P-DAO Request. Could it be that the RAN is a PSE ingres ? I am asking,
because this looks like a request where it might be highly desirable to have
more contextual information in the request than just the few fields defined in
6.1. How about a 32 bit policy-ID field or the like.. But just guessing.
Something for the PCE to match up PSE stuff it established with P-DAO
requests it receives later. Unless you feel strongly that association is
unambiguous now.

   463     A positive PDR-ACK indicates that the Track
   464	   was built and that the Roots commits to maintain the Track for the
   465	   negotiated lifetime.  In the case of a complex Track, each Segment is
   466	   maintained independently and asynchronously by the Root, with its own
   467	   lifetime that may be shorter, the same, or longer than that of the
   468	   Track.

I guess those different liftimes are not meant to make the solution more fragile
by randomnly expiring timers for different parts of a track, but because the
the parts of a projected routes affected can only change when they expire ?
In any case, an explanation of the semantic impact of lifetimes would be
useful.

   468     The Root may use an asynchronous PDR-ACK with an negative
   469	   status to indicate that the Track was terminated before its time.

And if that happens, what should a RAN do that has some configuration telling
it to request the P-DAO ? Sounds like the need for the definition of some
exponential back-off re-request scheme ?

Also, when the request is just renewed upon timeout, but the reply changes,
i figure that the impact in stateful mode may be some inconsistent forwarding
while the track midpoints update their routes. No issue i guess in stateless.
Would be useful to mention. Not sure if/what countermeasures for consistency
RPL already provides. If it does, would be good to mention.

   471	3.4.  Extending the RPI
   472	
   473	   Sending a Packet within a RPL Local Instance requires the presence of
   474	   the abstract RPL Packet Information (RPI) described in section 11.2.
   475	   of [RPL] in the outer IPv6 Header chain (see [USEofRPLinfo]).  The
   476	   RPI carries a local RPLInstanceID which, in association with either
   477	   the source or the destination address in the IPv6 Header, indicates
   478	   the RPL Instance that the packet follows.
   479	
   480	   This specification extends [RPL] to create a new flag that signals
   481	   that a packet is forwarded along a projected route.
   482	
   483	   Projected-Route 'P':  1-bit flag.  It is set to 1 if this packet is
   484	      sent over a projected route and set to 0 otherwise.

This leaves me guessing when and how this applied. I can see how this would be
applicable to both stateful and stateless Projected route operastions, but in
either case, the forwarding plane behavior needs to be explained, ideall with
example for each (of the two?) cases.

Also: Please add forward pointer to next section saying "For concrete encoding
of the P flag, see section 4.".

   486	4.  Extending RFC 6553

I think this RFC MUST claim to be an update to RFC6553, because the P-flag
added to this concrete RPI RFC exhausts a non-IANA extension point, and
the only way to formally avoid that any other RFCs could collide (and allocate
the same bit) is to make this RFC an update to RFC6553. Same logic also
applies to update for RFC6550 and P-DAO P flag.

Just to be save, claim also update to RFC9008 to given how you mention it,
and we obviously want this RFC to also apply to RPI headers with 0x23.

   511	                                     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   512	                                     |  Option Type  |  Opt Data Len |
   513	     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   514	     |O|R|F|P|0|0|0|0| RPLInstanceID |          SenderRank           |
   515	     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   516	     |                         (sub-TLVs)                            |
   517	     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   518	
   519	                    Figure 2: Extended RPL Option Format
   520	
   521	   Option Type:  0x23 or 0x63, see [USEofRPLinfo]
   522	
   523	   Opt Data Len:  See [RFC6553]
                         ^ unchanged, 
   524	
   525	   'O', 'R' and 'F' flags:  See [RFC6553].  Those flags MUST be set to 0
   526	      by the sender and ignored by the receiver if the 'P' flag is set.
   527	
   528	   Projected-Route 'P':  1-bit flag as defined in Section 3.4.
   529	
   530	   RPLInstanceID:  See [RFC6553].  Indicates the TrackId if the 'P' flag
   531	      is set.

Add 'see also section 3.1' ?
   
   533	   SenderRank:  See [RFC6553].  This field MUST be set to 0 by the
   534	      sender and ignored by the receiver if the 'P'flag is set.

Would you mind to add expanation as to what can happen when this passes via a router not supporting
this RFC and therefore ignoring the P flag but interpreting the other fields ?

   536	5.  Extending RFC 8138
   537	
   538	   Section 6.3 of [RFC8138] presents the formats of the 6LoWPAN Routing
   539	   Header of type 5 (RPI-6LoRH) that compresses the RPI for normal RPL
                                       ^
   in the IANA "Critical 6LoWPAN Routing Header Type Registry"

   540	   operation.  The format of the RPI-6LoRH is not suited for Projected
   541	   routes since the O,R,F flags are not used and the Rank is unknown and
   542	   ignored.
   543	
   544	   This specification introduces a new 6LoRH, the P-RPI-6LoRH, with a
   545	   type of 7.  The P-RPI-6LoRH header is usually a a Critical 6LoWPAN
                    ^                                   ^^^
                    |
   in the IANA "Critical 6LoWPAN Routing Header Type Registry"

   546	   Routing Header, but it can be elective as well if an SRH-6LoRH is
                                      ^^^^^^^^^^^^^^^^^^^
also use type TBD1 from the IANA "Electivce 6LoWPAN Routing Header Type Registry"

https://www.iana.org/assignments/_6lowpan-parameters/_6lowpan-parameters.xhtml#critical-6lowpan-routing-header-type

Elective Type 7 is already gone. If you want to get the same numbers for
elective and critical yo may want to also revisit to choose 7 for critical.

Who made you be so adventerous to write an actual number 7 into the draft without an
early allocation anyhow ? How about asking for an early allocation ?

   547	   present and controls the routing decision.
   548	
   549	   The P-RPI-6LoRH is designed to compress the RPI along RPL Projected
   550	   Routes.  It sformat is as follows:
                     ^^^
   551	
   565	                0                   1                   2
   566	                0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
   567	               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   568	               |1|0|E| Length  | 6LoRH Type 7  | RPLInstanceID |
   569	               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   570	
   571	
   572	                        Figure 3: P-RPI-6LoRH Format
   573	
   574	   Elective 'E':  See [RFC8138].  The 'E' flag is set to 1 to indicate
   575	      an Elective 6LoRH, meaning that it can be ignored when forwarding.

Please explain length or point to RFC8138 (inchanged from RFC8318, section XX.YY).

Please DO NEVER include the assicned number into the field, just write "6LoRH Type".
Explain in text that is the assined type for criical or elective depending on E flag.

Explain that RPLInstanceID is the TrackID (see section 3.1 ?) Or if not, what it is.

   577	6.  New RPL Control Messages and Options
   578	
   579	6.1.  New P-DAO Request Control Message
   580	
   581	   The P-DAO Request (PDR) message is sent by a Node in the main DODAG
   582	   to the Root.  It is a request to establish or refresh a Track where
   583	   this node is Track Ingress.  The source IPv6 address of the PDR
   584	   signals the Track Ingress of the requested Track, and the TrackID is
   585	   indicated in the message itself.  One and only one RPL Target Option
   586	   MUST be present in the message.  The RTO signals the Track Egress,
   587	   more in Section 7.1.
   588	
   589	   The RPL Control Code for the PDR is 0x09, to be confirmed by IANA.

Correct form is TBDi (TBD2 ?) instead of 0x09.
If you are not in a hurry, all TBDi can be resolved during IANA/RFC-editor procss.
If you want to lock in a number get an early allocation first.

   590	   The format of PDR Base Object is as follows:
   591	
   592	      0                   1                   2                   3
   593	      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
   594	     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   595	     |   TrackID     |K|R|   Flags   |  ReqLifetime  | PDRSequence   |
   596	     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   597	     |   Option(s)...
   598	     +-+-+-+-+-+-+-+-+
   599	
   600	                     Figure 4: New P-DAO Request Format
   601	
   602	   TrackID:  8-bit field indicating the RPLInstanceID associated with
   603	      the Track.
   604	
   605	   K:  The 'K' flag is set to indicate that the recipient is expected to
   606	      send a PDR-ACK back.
   607	
   608	   R:  The 'R' flag is set to request a Complex Track for redundancy.
   609	
   610	   Flags:  Reserved.  The Flags field MUST initialized to zero by the
   611	      sender and MUST be ignored by the receiver
   612	
   613	
   614	
   615	
   616	Thubert, et al.          Expires 28 January 2022               [Page 11]
   617	
   618	Internet-Draft               DAO Projection                    July 2021
   619	
   620	
   621	   ReqLifetime:  8-bit unsigned integer.  The requested lifetime for the
   622	      Track expressed in Lifetime Units (obtained from the DODAG
   623	      Configuration option).
   624	
   625	      A PDR with a fresher PDRSequence refreshes the lifetime, and a
   626	      PDRLifetime of 0 indicates that the track should be destroyed.

... It would be sent for example when the function for which the Node requested
the track is deactivated. ?!

   628	   PDRSequence:  8-bit wrapping sequence number, obeying the operation
   629	      in section 7.2 of [RPL].  The PDRSequence is used to correlate a
   630	      PDR-ACK message with the PDR message that triggered it.  It is
   631	      incremented at each PDR message and echoed in the PDR-ACK by the
   632	      Root.
   633	
   634	6.2.  New PDR-ACK Control Message
   635	
   636	   The new PDR-ACK is sent as a response to a PDR message with the 'K'
   637	   flag set.  The RPL Control Code for the PDR-ACK is 0x0A, to be
   638	   confirmed by IANA.  Its format is as follows:

Same IANA/TBD concern as above.

   639	
   640	      0                   1                   2                   3
   641	      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
   642	     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   643	     |    TrackID    |     Flags     | Track Lifetime|  PDRSequence  |
   644	     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   645	     | PDR-ACK Status|                Reserved                       |
   646	     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   647	     |  Option(s)...
   648	     +-+-+-+-+-+-+-+
   649	
   650	                Figure 5: New PDR-ACK Control Message Format
   651	
   652	   TrackID:  The RPLInstanceID of the Track that was created.  The value
   653	      of 0x00 is used to when no Track was created.
                              ^^

Same question as in before. Any standardized logic what to do in case of 0x00 failure,
if not, then why not.

   654	
   655	   Flags:  Reserved.  The Flags field MUST initialized to zero by the
   656	      sender and MUST be ignored by the receiver
   657	
   658	   Track Lifetime:  Indicates that remaining Lifetime for the Track,
   659	      expressed in Lifetime Units; the value of zero (0x00) indicates
   660	      that the Track was destroyed or not created.
   661	
   662	   PDRSequence:  8-bit wrapping sequence number.  It is incremented at
   663	      each PDR message and echoed in the PDR-ACK.

according to section 7.2 of [RPL] ?!

   665	   PDR-ACK Status:  8-bit field indicating the completion.  The PDR-ACK
                                                                 ^ status
   666	      Status is substructured as indicated in Figure 6:
   676	
   677	                                 0 1 2 3 4 5 6 7
   678	                                +-+-+-+-+-+-+-+-+
   679	                                |E|R|  Value    |
   680	                                +-+-+-+-+-+-+-+-+
   681	
   682	                       Figure 6: PDR-ACK status Format
   683	
   684	      E:  1-bit flag.  Set to indicate a rejection.  When not set, the
   685	         value of 0 indicates Success/Unqualified acceptance and other
   686	         values indicate "not an outright rejection".
   687	      R:  1-bit flag.  Reserved, MUST be set to 0 by the sender and
   688	         ignored by the receiver.
   689	      Status Value:  6-bit unsigned integer.  Values depending on the
   690	         setting of the 'E' flag, see Table 27 and Table 28.
   691	
   692	   Reserved:  The Reserved field MUST initialized to zero by the sender
                                             ^ be
   693	      and MUST be ignored by the receiver
   694	
   695	6.3.  Via Information Options
   696	
   697	   A VIO signals the ordered list of IPv6 Via Addresses that constitutes
   698	   the hops of either a Serial Track or a Segment of a more Complex
   699	   Track.  A VIO MUST contain at least one Via Address, and a Via
   700	   Address MUST NOT be present more than once, otherwise the VIO MUST be
   701	   ignored.

If i understand it correctly, for the SR-VIO, the sequence of addresses would
ultimately end up in the RPL steering header of packets. I browsed through
RFC8754 and think i can not find a similar exclusion. So a justification
why this optimization is done for SF-VIO would be good if you really want to keep it.

For SF-VIO, this seems to be taken apart and every node listed creates a
next-hop route. So if the same node is addressed twice, it could become
confused, which instance of its own address to choose to install the route, right ?


And what does "ignore" mean anyhow, e.g.: would the Target Options still be acted
upon ? It rather sounds to me as if you would want the whole Projected DAO message
to be rejected ?

Is duplicate address the only case of a "broken" projected DAO that you can
discover and reject ? E.g.: can nodes have multiple addresses ? Such as
anycast addresses ?

Would be good to elaborate about such "broken" projected DAO more if there are different
cases of it.

   701	   The format of the Via Information Options is as follows:
   732	
   733	        0                   1                   2                   3
   734	        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
   735	       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   736	       |   Type        | Option Length |     Flags     |   SegmentID   |
   737	       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   738	       |Segm. Sequence | Seg. Lifetime |      SRH-6LoRH header         |
   739	       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   740	       |                                                               |
   741	       +                                                               +
   742	       .                                                               .
   743	       .                     Via Address 1                             .
   744	       .                                                               .
   745	       +                                                               +
   746	       |                                                               |
   747	       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   748	       |                                                               |
   749	       .                              ....                             .
   752	       |                                                               |
   751	       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   752	       |                                                               |
   753	       +                                                               +
   754	       .                                                               .
   755	       .                     Via Address n                             .

add (n <= 15) ?

   756	       .                                                               .
   757	       +                                                               +
   758	       |                                                               |
   759	       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   760	
   761	
   762	                  Figure 7: VIO format (uncompressed form)
   763	
   764	   Option Type:  0x0B for SF-VIO, 0x0C for SR-VIO (to be confirmed by
   765	      IANA)

Same concern as prior illegal occupations of IANA codepoints in this spec ;-))
   
   767	   Option Length:  In bytes; variable, depending on the number of Via
   768	      Addresses and the compression.

Something like total size of the Option ... in bytes ?
Is this semantic mandated by prior RFC ?  If it could count differently,
it could allow for more than 15 hops, although i have no idea if that would
be relevant.

   770	   SegmentID:  8-bit field that identifies a Segment within a Track or
   771	      the main DODAG as indicated by the TrackID field.  The value of 0
   772	      is used to signal a Serial Track, i.e., made of a single segment.

Another basic signaling element not yet explained, so somewhat mysterious here

   774	   Segment Sequence:  8-bit unsigned integer.  The Segment Sequence
   775	      obeys the operation in section 7.2 of [RPL] and the lollipop
   776	      starts at 255.
   777
   778	      When the Root of the DODAG needs to refresh or update a Segment in
   779	      a Track, it increments the Segment Sequence individually for that
   780	      Segment.
   781	
   789	      The Segment information indicated in the VIO deprecates any state
   790	      for the Segment indicated by the SegmentID within the indicated
   791	      Track and sets up the new information.
   792	
   793	      A VIO with a Segment Sequence that is not as fresh as the current
   794	      one is ignored.
   795	
   796	      A VIO for a given DODAGID with the same (TrackID, SegmentID,
   797	      Segment Sequence) indicates a retry; it MUST NOT change the
   798	      Segment and MUST be propagated or answered as the first copy.
   799	
   800	   Segment Lifetime:  8-bit unsigned integer.  The length of time in
   801	      Lifetime Units (obtained from the Configuration option) that the
   802	      Segment is usable.
   803	
   804	      The period starts when a new Segment Sequence is seen.  The value
   805	      of 255 (0xFF) represents infinity.  The value of zero (0x00)
   806	      indicates a loss of reachability.
   807	
   808	      A P-DAO message that contains a VIO with a Segment Lifetime of
   809	      zero is referred as a No-Path P-DAO in this document.
   810	
   811	   SRH-6LoRH header:  The first 2 bytes of the (first) SRH-6LoRH as
   812	      shown in Figure 6 of [RFC8138].  A 6LoRH Type of 4 means that the
   813	      VIA Addresses are provided in full with no compression.
   814	
   815	   Via Address:  An IPv6 address along the Segment.
   816	
   817	      In a SF-VIO, the list is a strict path between direct neighbors,
   818	      from the Segment Ingress to Egress, both included.  The router
   819	      that processes an SF-VIO MAY create additional routing state
   820	      towards the nodes after self via the node immediately after self
   821	      in the SF-VIO, but in case of memory shortage the routes to the
   822	      Targets have precedence since they are the ones that the router
   823	      commits to store.

Again, i am at a lack of understanding the base theory of operations of forwarding,
I have Track Ingres, Track Egres, Destinations, Target and somehow i have
Segments with addresses, wheree i do not know how Segment Ingres and Segment Egres
may or may not map to Track Ingres/Egres, Destinations or Targets.

Picture me this, please ? ;-))

So, what exactly does the routing state look like ? whats the lookup ?
Something like (RPLInstanceID==TrackID, Destination) ? Or rather: What is
the example scenario when a the above described additional routing state
to the nodes after self would would be used ?

   825	      In an SR-VIO, the list includes the egress but not the ingress
   826	      node.  It starts at the first hop and ends at a Track Egress.  In

Seems like a mayor difference in flexiblity of stateful vs. stateless operations than ?
No segment layer with SR-VIO ?

   827	      that case, the Track Egress MUST be considered as an implicit
   828	      Target, so it MUST NOT be listed it in a RPL Target Option.  The
   829	      list in an SR-VIO may be loose, provided that each listed node has
   830	      a path to the next listed node, e.g., via a segment or another
   831	      Track.

But you are not telling me you would want to create the freedom to have stateless
operation rely on routing state created by SF-VIO where you said it might
not exist in case of memory shortage which the stateless encapsulator would
know nothing about, right ?

   833	      In the case of a SF-VIO, or if [RFC8138] is not used in the data
   834	      packets, then the Root MUST use only one SRH-6LoRH per Via
   835	      Information Option, and the compression is the same for all the
   836	      addresses, as shown in Figure 7.

I do not see any address compression in Figure 7, nor was compression mentioned
so far. 

Do you mean figure 7 in section 5.1 of [RFC8138] ?

   845	      In case of an SR-VIO, and if [RFC8138] is in use in the main
   846	      DODAG, then the Root SHOULD optimize the size of the SR-VIO;

Any example how ?

   846         more
   847	      than one SRH-6LoRH may be present, e.g., if the compression level
   848	      changes inside the Segment and different SRH-6LoRH Types are
   849	      required.

That rather sounds as if those are cases where optimiation would no be possible ?

   849        The content of the SR-VIO starting at the first SRH-
   850	      6LoRH header is thus verbatim the one that the Track Ingress
   851	      places in the packet encapsulation to reach the Track Ingress.

Example with picture would help.

   853	6.4.  Sibling Information Option
   854	
   855	   The Sibling Information Option (SIO) provides indication on siblings
   856	   that could be used by the Root to form Projected Routes.  One or more
   857	   SIO(s) may be placed in the DAO messages that are sent to the Root in
   858	   Non-Storing Mode.

Is this some poor-mans (little signaling) form of signaling to help the
root do some topology discovery ? If so, then it probably would be something
that needs to go to the PCE, right ? Maybe this type of high level
explanation in the tex would be helpful. If i am guessing wrong then i even understand
less.

   859	
   860	   The format of the SIO is as follows:
   861	
   862	        0                   1                   2                   3
   863	        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
   864	       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   865	       |   Type        | Option Length |Comp.|B|D|Flags|    Opaque     |
   866	       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   867	       |            Step of Rank       |          Reserved             |
   868	       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   869	       |                                                               |
   870	       +                                                               +
   871	       .                                                               .
   872	       .       Sibling DODAGID (if the D flag not set)               .
   873	       .                                                               .
   874	       +                                                               +
   875	       |                                                               |
   876	       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   877	       |                                                               |
   878	       +                                                               +
   879	       .                                                               .
   880	       .                     Sibling Address                           .
   881	       .                                                               .
   882	       +                                                               +
   883	       |                                                               |
   884	       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   885	
   886	                Figure 8: Sibling Information Option Format
   887	
   888	   Option Type:  0x0D (to be confirmed by IANA)

You're maxing out your repeat offender penalty of illegal IANA code point misappropriation ;-)
   
   890	   Option Length:  In bytes, the size of the option.
   891	
   892	   Compression Type:  3-bit unsigned integer.  This is the SRH-6LoRH
   901	      Type as defined in figure 7 in section 5.1 of [RFC8138] that
   902	      corresponds to the compression used for the Sibling Address and
   903	      its DODAGID if  resent.  The Compression reference is the Root of
                             ^ p ?
   904	      the main DODAG.
   905	
   906	   Reserved for Flags:  MUST be set to zero by the sender and MUST be
   907	      ignored by the receiver.
   908	
   909	   B:  1-bit flag that is set to indicate that the connectivity to the
   910	      sibling is bidirectional and roughly symmetrical.  In that case,
   911	      only one of the siblings may report the SIO for the hop.  If 'B'

How would they do that (decide which one reports the SIO ?).

   911	      only one of the siblings may report the SIO for the hop.  If 'B'
   912	      is not set then the SIO only indicates connectivity from the
   913	      sibling to this node, and does not provide information on the hop
   914	      from this node to the sibling.

I hope there is a simple way to do 'B' or more of a benefit than just cutting
down reporting data by 50%. Any standardized mechanism ?

   916	   D:  1-bit flag that is set to indicate that sibling belongs to the
   917	      same DODAG.  When not set, the Sibling DODAGID is indicated.
   918	
   919	   Flags:  Reserved.  The Flags field MUST initialized to zero by the
                                                  ^ be
   920	      sender and MUST be ignored by the receiver
   921	
   922	   Opaque:  MAY be used to carry information that the node and the Root
   923	      understand, e.g., a particular representation of the Link
   924	      properties such as a proprietary Link Quality Information for
   925	      packets received from the sibling.  An industrial Alliance that
   926	      uses RPL for a particular use / environment MAY redefine the use
   927	      of this field to fit its needs.

Is there a prior RPL example of such a field ? Pointer to that wold be
useful. I hav a hard time seeing how this would not result in all type of
misinterpretation unless the industrial alliance whose registration space
is to be used for Upaque is unambigously derivable from the device (type)
or link (type).

I would prefer to add MUST be set to 0 and be ignored upon receiving and
go on saying, IETF specification MUST NOT use or define this field, but
non-IETF specification may use it. Aka: why not give such external specs
the same starting ground (0-filled) that we give our own extension points.

But again: pre-existing examples of BCP spec text for such an Opaque field would
be helpful.

   929	   Step of Rank:  16-bit unsigned integer.  This is the Step of Rank
   930	      [RPL] as computed by the Objective Function between this node and
   931	      the sibling.
   932	
   933	   Reserved:  The Reserved field MUST initialized to zero by the sender
   934	      and MUST be ignored by the receiver
   935	
   936	   Sibling DODAGID:  2 to 16 bytes, the DODAGID of the sibling in a
   937	      [RFC8138] compressed form as indicated by the Compression Type
   938	      field.  This field is present if and only if the D flag is not
   939	      set.
   940	
   941	   Sibling Address:  2 to 16 bytes, an IPv6 Address of the sibling, with
   942	      a scope that MUST be make it reachable from the Root, e.g., it
   943	      cannot be a Link Local Address.  The IPv6 address is encoded in
   944	      the [RFC8138] compressed form indicated by the Compression Type
   945	      field.
   956	
   957	   An SIO MAY be immediately followed by a DAG Metric Container.  In
            ^ "A for consonant start of TLA"
   958	   that case the DAG Metric Container provides additional metrics for
   959	   the hop from the Sibling to this node.
   960	
   961	7.  Projected DAO

Given how this section seems to describe what the title of the doc is,
maybe it should also be named that way "Root initiated routing state".

   962	
   963	   This draft adds a capability to RPL whereby the Root of a main DODAG

Define what a "main DODAG" is. I guess its a DODAG not created by the
mechanisms of this draft, but also: what are non-main DODAGs ? Or is the
opposite just the projected DAO ?

   964	   installs a Track as a collection of Projected Routes, using a
   965	   Projected-DAO (P-DAO) message to maintain each individual route.  The

What is an individual route ? 

   966	   P-DAO signals a collection of Targets in the RPL Target Option(s)
   967	   (RTO).  Those Targets can be reached via a sequence of routers
   968	   indicated in a VIO.  A P-DAO message MUST contain exactly one VIO,
   969	   which is either a SF-VIO or an SR-VIO, and MUST follow one or more
   970	   RTOs.  There can be at most one such sequence of RTO(s) and an Via
   971	   Information Option.  A track is identified by a tuple DODAGID,
                             ^ in a P-DAO

Also, is "at most" correct ?
How about there MUST be exactly one sequece of one or more RTO followed vy one VIO ? 
Or is it valid to have no RTO, or no VIO ?

   972	   TrackID and each route within a Track is indexed by a SegmentID.

So, IMHO, this whole section 7 needs to come before section 3, because it is
here where you start defining the functionality from higher layer, but then
section 3 goes into the encoding details. I observe that all RFCs i remember
have the order of starting wih the overall functionality and bring the encoding
details of messages later (but then i am forgetfull of what i have read and
also say this because as my comments before will show, i struggled  to make
head & tails out of how the pieces fit together).

   973	
   974	   A P-DAO MUST be sent from the address of the Root that serves as
   975	   DODAGID for the main DODAG.  It MUST be sent to a GUA or a ULA of

Expand GUA, ULA, provide reference for ULA, and/or add to initial list of terms in doc.

   976	   either the ingress or the egress of the Segment, more below.  If the
   977	   'K' Flag is present in the P-DAO, and unless the P-DAO does not reach
   978	   it, the ingress of the Segment is the node that acknowledges the
   979	   message, using a DAO-ACK that MUST be sent back to the address that
   980	   serves as DODAGID for the main DODAG.

Sentence too convoluted. Try to make two out of it.

You are not using the same term here as in 974, so this makes one wonder if
the DAO-ACK is to be sent back to the same address it was sent from or not.
If it is meant to be sent back to the same address, why not say "sent back to
the address of the root, which the P-DAO was sent from". 

   982	   Like a classical DAO message, a P-DAO causes a change of state only
   983	   if it is "new" per section 9.2.2.  "Generation of DAO Messages" of
   984	   the RPL specification [RPL]; this is determined using the Segment
   985	   Sequence information from the VIO as opposed to the Path Sequence
                                            ^ in the P-DAO
   986	   from a TIO.  Also, a Segment Lifetime of 0 in a VIO indicates that
                     ^ in the DAO.
   987	   the projected route associated to the Segment is to be removed.
   988	
   989	   There are two kinds of operation for the Projected Routes, the
   990	   Storing Mode and the Non-Storing Mode.
   991	
   992	   *  The Non-Storing Mode is discussed in Section 7.3.2.  A Non-Storing
   993	      Mode P-DAO carries an SR-VIO with the loose list of Via Addresses
                                                         ^ steering
   994	      that forms a source-routed Segment to the Track Egress.  The
   995	      recipient of the P-DAO is the Track Ingress; it MUST install a
   996	      source-routed state to the Track Egress and reply to the Root
   997	      directly using a DAO-ACK message if requested to.
   998	
   999	   *  The Storing Mode is discussed in Section 7.3.1.  A Storing Mode
  1000	      P-DAO carries a  SF-VIO with the strict  list of Via Addresses from
                             ^n                      ^ steering
  1001	      the ingress to the egress of the Segment in the data path order.
  1002	      The routers listed in the Via Addresses, except the egress, MUST
  1003	      install a routing state to the Target(s) via the next Via Address
  1004	      in the SF-VIO.  In normal operations, the P-DAO is propagated
  1013	      along the chain of Via Routers from the egress router of the path
  1014	      till the ingress one, which confirms the installation to the Root
  1015	      with a DAO-ACK message.

In 976 you point to further below as to where the P-DAO is to be sent. But hen
in the bullet points 992 and 999 you do not explicitly say tha the SR-VIO is sent
to the track ingres and that the SF-VIO is sent to the track egres. Please
add such sentences accordingly.

I think the description of ACK processing from 976++ fits better here after, given
how its an additional detail happening after the P-DAO is processed according
to the two bullet points above.

Q: If in the SF-VIO case, the egress does not install any state, then why send
the P-DAO to it instead of to the pre-ultimate hop ? Explanation might be helpful
in the text.

  1016	
  1017	   In case of a forwarding error along a Projected Route, an ICMP error

Arre we talking about the forwaring of data packets that are following a projected route,
or processing error of the P-DAO ? Please be specific. An example of a forwarding
error would help.

I suspect it is the data packets. Is there also any other error for processing of
the P-DAO other than missing ACK ? Aka: wha exactly happens in the duplicate address
in VIO If lets say the root was too stsupid to figure it out ?

  1018	   is sent to the Root with a new Code "Error in Projected Route" (See
  1019	   Section 11.13).  The Root can then modify or remove the Projected
  1020	   Route.  The "Error in Projected Route" message has the same format as
  1021	   the "Destination Unreachable Message", as specified in RFC 4443
  1022	   [RFC4443].
  1023	
  1024	   The portion of the invoking packet that is sent back in the ICMP
  1025	   message SHOULD record at least up to the RH if one is present, and
  1026	   this hop of the RH SHOULD be consumed by this node so that the
           ^^^^                                     ^^^^
which hop ? The hop that has problems and wants to generate the ICMP error?

  1027	   destination in the IPv6 header is the next hop that this node could
  1028	   not reach.  if a 6LoWPAN Routing Header (6LoRH) [RFC8138] is used to

So ultimately, you want the root to be able to figure out from the ICMP,
which nodeA can not reach a next-hop nodeB, right ? WOuld be good to say that,
but the description of how to achieve this by messing with the ICMP error
reported original packet stub still escapes me. Is that "consumed by" procedure
already done some place else ? If so, hen a reference to prior way how this is
done would be good. If not, then elaborating a bit more to make it easier to
understand would help.

  1028	   not reach.  if a 6LoWPAN Routing Header (6LoRH) [RFC8138] is used to
  1029	   carry the IPv6 routing information in the outer header then that
  1030	   whole 6LoRH information SHOULD be present in the ICMP message.

How would a root then figure out nodeA/nodeB ?

  1031	
  1032	   The sender and exact operation depend on the Mode and is described in
  1033	   Section 7.3.2 and Section 7.3.1 respectively.
  1034	
  1035	7.1.  Requesting a Track
  1036	
  1037	   A Node is free to ask the Root for a new Track for which it will be
  1038	   Ingress at any time.  This is done with a PDR message, that indicates

for which it wants to be ingres ? E.g.: no idea what "will be at any time" means.

  1039	   the desired TrackID and the duration for which the Track should be
  1040	   established.  Upon a PDR, the Root MAY install the necessary

An example of why the node would generate it, and where it has the TrackID from
would help here.

  1041	   Segments, in which case it answers with a PDR-ACK indicating the
  1042	   granted Track Lifetime.  All the Segments MUST be of a same mode,
  1043	   either Storing or Non-Storing.  All the Segments MUST be created with
  1044	   the same TrackID and the same DODAGID signaled in the P-DAO.
  1045	
  1046	   The Root is free to design the Track as it wishes, and to change the
  1047	   Segments overtime to serve the Track as needed, without notifying the
  1048	   resquesting Node.  The Segment Lifetime in the P-DAO messages does
             ^
Presumably, a requesting node would likely also be the ingres of one P-DAO of
the track, right ? But establishment of the track via P-DAO is only related to
the PDR/PDR-ACK in the root ?

Might be useful to have some place a higher level description of "initiation" models,
and point to it. Aka: the way i figure, initiation can come from PCE and go through root,
no other nodes involved. Or it comes somehow via PDR initiaor... but how/why.

Also "free to " is a bit of a misnomer, right ? Aka: If the root is free, then it
should also be able to notify the requesting node, but there really is no other
notification than acknowledging in PDR-ACK acceptance to take care of the request
or to indicate failure of it. Aka, write maybe: "The root designs the Track as it wishes....
there are no notifications to the requesting node when changing the track".

  1049	   not need to be aligned to the Requested Lifetime in the PDR, or
  1050	   between P-DAO messages for different Segments.  The Root may use
  1051	   shorter lifetimes for the Segments and renew them faster than the
  1052	   Track is, or longer lifetimes in which case it will need to tear down
  1053	   the Segments if the Track is not renewed.
  1054	
  1055	   When the Track Lifetime that was returned in the PDR-ACK is close to
  1056	   elapse, the resquesting Node needs to resend a PDR using the TrackID
  1057	   in the PDR-ACK to extend the lifetime of the Track, else the Track
  1058	   will time out and the Root will tear down the whole structure.

How close ? Any guidance ?
  
  1068	
  1069	   If the Track fails and cannot be restored, the Root notifies the
  1070	   resquesting Node asynchronously with a PDR-ACK with a Track Lifetime
             ^
  1071	   of 0, indicating that the Track has failed, and a PDR-ACK Status
  1072	   indicating the reason of the fault.
  1073	
  1074	7.2.  Identifying a Track
  1075	
  1076	   RPL defines the concept of an Instance to signal an individual
  1077	   routing topology but does not have a concept of an administrative
  1078	   distance, which exists in certain proprietary implementations to sort
  1079	   out conflicts between multiple sources of routing information within
  1080	   one routing topology.
  1081	
  1082	   This draft leverages the RPL Instance model as follows:

... to sort out conflicts between multiple sources of routing information ??
aka: tie the text together, the way it is written it is confusing.

It also seems as if it would be better to high level answer how P-DAO avoids
the need for administrative distances here, instead of letting readers try to figure it
out from all the details of the following bullet points, because those bullet points
explain a lot more, so the whole administative distance stuff will get lost.

The way i see it is that P-DAO do not require administrative distance because

a) They will be preferred because of prefixlength vs. default route to root when
   used within pre-existing RPLinstance.
b) They can be explicitly indicated through their own RPLinstance called TrackID
   in the RPL packet header, therefore not colliding with routes from pre-existing
   RPLinstances.

  1083	
  1084	   *  The Root MAY use P-DAO messages to add better routes in the main
  1085	      (Global) Instance in conformance with the routing objectives in
  1086	      that Instance.  To achieve this, the Root MAY install an Storing-

What actually happens if those P-DAO routes are not in conformance with the routing
objectives of that instance ? Anything worse than that the routing objective does
not well express what the routes are doing ?

I am asking, because i would assume that the routing objectives likely will never
be able to express all the characteristics that may come out of a bunch of Tracks.
Therefore i fear that this conformance sentence is somewhat career limiting to
P-DAOs.

But i am not sure about the overall framework. Is there some form of policy framework,
whereby traffic may choose one out of multiple instances, and what you really want
to say is that Tracks should be assigned to the track that best matches what the
Track attempts to improve upon so that traffic choosing one out of multiple
insances can continue to do so, and track will improve the desired outcome ?

Aka: Motivating this setnence, maybe in the way i am imagining it (if correct) might
help. And it might also better capture the goal of choosing a particular instance
for a track than referring to the formal routing objectives instead of maybe
the informal intent of an instance, which may be constituted from the routing
objectives of DAOs and the traffic engineered objectives of P-DAOs. 

  1086	      that Instance.  To achieve this, the Root MAY install an Storing-
                                                                     ^ just a - storing is spoken with consonant first.
  1087	      Mode P-Route along a path down the main Non-Storing Mode DODAG.
  1088	      This enables a loose source routing and reduces the size of the
  1089	      Routing Header, see Appendix A.1.
  1090	
  1091	      When adding an Storing-Mode P-Route to the main RPL Instance, the
                           ^ just a
  1092	      Root MUST set the RPLInstanceID field of the P-DAO message (see
  1093	      section 6.4.1. of [RPL]) to the RPLInstanceID of the main DODAG,
  1094	      and MUST NOT use the DODAGID field.  A Projected Route provides a

Whats the significance of the DODAGID here ? What would happen if it was set ?

  1095	      longer match to the Target Address than the default route via the
  1096	      Root, so it is preferred.
  1097	
  1098	      Once the Projected Route is installed, the intermediate nodes
  1099	      listed in the SF-VIO after first one (i.e.  The ingress) can be
  1100	      elided from the RH in packets sent along the Segment signaled in
  1101	      the P-DAO.  The resulting loose source routing header indicates
  1102	      (one of) the Target(s) as the next entry after the ingress.
  1103	
  1104	   *  The Root MAY also use P-DAO messages to install a specific (say,
  1105	      Traffic Engineered) path as a Serial or as a Complex Track, to a

Serial Track and Complex Track are not defined/explained yet. See comments
earlier that you need to start off with pictured examples from which to
much more easily define such terms.

  1106	      particular endpoint that is the Track Egress.  In that case, the
  1107	      Root MUST install a Local RPL Instance (see section 5 of [RPL]),
  1108	      and the Local RPLInstanceID is called TrackID.

Do i need a separate RPL instance to loosely tie together multiple sequential 
SF-VIO ?  Lets say i have 20 hops in stateless. I figure i have 3 segments of
5 hops each that ae often used. So i establish separate tracks for each of
them, and then my routing headers in the future would be able to be reduced
by 3 * 5 = 15 hops, aka: having 3 loose hops tied together by 5 strict hops.

  1109	
  1110	      In that case, the TrackID MUST be unique for the Global Unique
  1111	      IPv6 Address (GUA) or Unique-Local Address (ULA) of the Track

You where missing those expansions in before, so here they would now be redundant
when you fix them up in before.

  1112	      Ingress that serves as DODAGID for the Track.  The Track Ingress
  1113	      owns the namespace of its TrackIDs, so it can pick any unused
  1114	      value to request a new Track with a PDR.  The Root is aware of all

The root of the main DODAG, or main RPL instance or the like ? Aka: There may be
multiple roots for different instances/dodags, right ? 

  1115	      the active Tracks, so it can also pick any unused value to form
  1116	      Tracks without a PDR.  To avoid a collision of the Root and the
  1125	      Track Ingress picking the same value at the same time, it is
  1126	      RECOMMENDED that the Track Ingress starts allocating the ID value
  1127	      of the Local RPLInstanceID (see section 5.1. of [RPL]) used as
  1128	      TrackIDs with the value 0 incrementing, while the Root starts with
  1129	      63 decrementing.

  1131	      This way, a Track is uniquely identified by the tuple (DODAGID,
  1132	      TrackID) where the TrackID is always represented with the D flag
  1133	      set to 0.

Explain where the D flag is, first time i think its used in the text.

I think i may be confused about the namespace and its limitations or at least
not well educaed by the text ;-)

So the track ingres IPv6 serves as DODAGID. So every node can have up to 64 - N Tracks,
where N is the number of non-rack RPL instances for which the node is the root ?

Would be good to write this out explicitly (or accordingly corrected if wrong).

  1135	      The Track Egress Address and the TrackID MUST be signaled in the
  1136	      P-DAO message as shown in Figure 1.
  1137	
  1138	7.3.  Installing a Track
  1139	
  1140	   A Storing-Mode P-DAO contains an SF-VIO that signals the strict
  1141	   sequence of consecutive nodes to form a segment between a segment
  1142	   ingress and a segment egress (both included).  It installs a route of
  1143	   a higher precedence along the segment towards the Targets indicated
  1144	   in the Target Options.  The segment is included in a DODAG indicated

Ok, now i am getting confused again by this text.

"higher precendence - than what ? Also, is there a definition of precedence in the
context of RPL ? If so, reference to definition would be good. 

Previously you only used precedence related to priority to store/maintain
a route, which i guess is a differrent meaning of the word than here.

In 7.2, it sounded as if there would be no pre-existing route to the target
other than through the root because of prefix-length. If that is what you mean
here, and unless precedence has a well defined meaning, maybe just replace precedence
with prefix-length.

It is also not quite clear to me if tracks can never be installed into storing-mode
RPL instances where they could not conflict with equal-prefix-length "native" routes.
AFAIK, the spec only said the main RPLinstance must be non-storing mode. Can there nit
be other, storing mode RPL instances ?

But of course, i am likely confused...

  1144	   in the Target Options.  The segment is included in a DODAG indicated
  1145	   by the P-DAO Base Object, that may be the one formed by the main RPL
  1146	   Instance, or a Track associated with a local RPL Instance.  A Track
  1147	   Egress is signaled as a Target in the P-DAO, and as the last entry is
  1148	   an SF-VIO of a last segment towards that Egress.
  1149	
  1150	   A Non-Storing-Mode P-DAO signals a strict or loose sequence of nodes
                                   ^ contains an SR-VIO to...
  1151	   between the Track Ingress (excluded) and a Track Egress (included).
  1152	   It installs a source-routed path of a higher precedence within the
                                                        ^^^^^^^^^^ same consideration as above
  1153	   Track indicated by the P-DAO Base Object, towards the Targets
  1154	   indicated in the Target Options.  The source-routed path requires a
  1155	   Source-Routing header which implies an encapsulation to add the SRH
                                                                   ^^^^^^^^^^^

Same consideration as much earlier, e.g.: encapsulate into new IPv4 with SRH ?!

  1156	   to an existing packet.
  1157	
  1158	   The next entry in the sequence must be either a neighbor of the
  1159	   previous entry, or reachable as a Target via another Projected Route,
  1160	   either Storing or Non-Storing.  If it is reachable over a Storing
  1161	   Mode Projected Route, the next entry in the loose sequence is the
  1162	   Target of a previous segment and the ingress of a next segment; the
  1163	   segments are associated with the same Track, which avoids the need of
  1164	   an encapsulation.  Conversely, if it is reachable over a Non-Storing
  1165	   Mode Projected Route, the next loose source routed hop of the inner
  1166	   Track is a Target of a previous Track and the ingress of a next
  1167	   Track, which requires a de- and a re-encapsulation.

This is a game of blindfold chess. Pictured examples of the two cases described
would help a lot to understand and verify the points made/claimed here.

  1181	   A Serial Track is installed by a single Projected Routes that signals
                                                                  ^
  1182	   the sequence of consecutive nodes, either in Storing or Non-Storing
  1183	   Mode.  If can be a loose Non-Storing Mode Projected Route, in which
                   ^
  1184	   case the next loose entry must recursively be reached over a Serial
  1185	   Track.

Please check whats standard *-Storing-Mode or *-Storing Mode - and make text
consistent.

  1186	
  1187	   A Complex Track can be installed as a collection of Projected Routes
  1188	   with the same DODAGID and Track ID.  The Ingress of a Non-Storing

If this is turned around, does it become the still missing definition of a
complex track ?

Multiple projected routes can be installed into a single (DODAGID,TrackID).
This leads to Sequential or Complex Tracks ??

  1188	   with the same DODAGID and Track ID.  The Ingress of a Non-Storing
  1189	   Mode Projected Route must be the owner of the DODAGID.  The Ingress
  1190	   of a Storing Mode Projected Route must be either the owner of the
  1191	   DODAGID, or the egress of a preceding Storing Mode Projected Route in
  1192	   the same Track.  In the latter case, the Targets of the Projected
  1193	   Route must be Targets of the preceding Projected Route to ensure that
  1194	   they are visible from the track Ingress.
  1195	
  1196	7.3.1.  Storing-Mode P-Route

Please go back through the text and replace all instances of Projected Route
after the first occurance with P-Route. You use both terms randomnly interchanged,
which is confusing. Better to stick to the abbreviation only.

I also observe, that i would be much less confused about the text if this high-level
explanation was preceeding the detailed explanation earlier in the beginning of section 7.

Please think how to resort the text of section 7 so it starts with the pictures
and high-level explanation and then goes into the more formal detail spec.
  
  1198	   Profile 1 extends RPL operation in a Non-Storing Mode network with

Without further explanation, the first unexplained use of Profile is derailing and
confusing. Suggest to just delete the mentioning of profiles and just define them
in Section 8. 

  1199	   Storing-Mode Projected Routes that install segments along the main
  1200	   DODAG and enable to loose source routing between the Root and the
  1201	   targets.
  1202	
  1203	7.3.1.1.  Installing a Storing-Mode P-Route
  1204	
  1205	   As illustrated in Figure 9, a P-DAO that carries a SF-VIO enables the
  1206	   Root to install a stateful route towards a collection of Targets
  1207	   along a Segment between a Track Ingress and a Track Egress using a
  1208	   projected DAO Message.
  1209	
  1210	           ------+---------
  1211	                 |          Internet
  1212	                 |
  1213	              +-----+
  1214	              |     | Border Router
  1215	              |     |  (RPL Root)
  1216	              +-----+                      |     ^                   |
  1217	                 |                         | DAO | ACK               |
  1218	           o    o   o    o                 |     |                   |
  1219	       o o   o  o   o  o  o o   o          |  ^       | Projected    .
  1220	      o  o o  o o    o\  o   o  o  o       |  | DAO   | Route        .
  1221	      o   o    o  o    \o--o    o  o  o    | ^        |              .
  1222	     o  o   o  o   o        \o   o o       v | DAO    v              .
  1223	     o          o   LLN   T1   T2     o                                |
  1224	         o o   o        o     o              Loose Source Route Path |
  1225	      o       o      o    o                 From Root To Destination v
  1226	
  1227	                        Figure 9: Projecting a route


Do you think you can visualise an example P-route into the picture ? 
I started a bit of bit of it above..

  1228	
  1237	   In order to install the relevant routing state along the Segment ,
  1238	   the Root sends a unicast P-DAO message to the Track Egress router of
  1239	   the routing Segment that is being installed.  The P-DAO message
  1240	   contains a SF-VIO with the direct sequence of Via Addresses.  The SF-
                                      ^^^^^^ strict

  1241	   VIO follows one or more RTOs indicating the Targets to which the
  1242	   Track leads.  The SF-VIO contains a Segment Lifetime for which the

In this explanation it would be helpful to explain conditions for targets, e.g.:
Target must either be direc neighbor of the P-Route egres, or be Target of some 
P-Route2 with the P-Route egres as its ingres. Right ?

  1243	   state is to be maintained.
  1244	
  1245	   The Root sends the P-DAO directly to the egress node of the Segment.
  1246	   In that P-DAO, the destination IP address matches the last Via
  1247	   Address in the SF-VIO.  This is how the egress recognizes its role.
  1248	   In a similar fashion, the ingress node recognizes its role as it
  1249	   matches first Via Address in the SF-VIO.
  1250	
  1251	   The Egress node of the Segment is the only node in the path that does
  1252	   not install a route in response to the P-DAO; it is expected to be
  1253	   already able to route to the Target(s) on its own.  If one of the
  1254	   Targets is not known, the node MUST answer to the Root with a
  1255	   negative DAO-ACK listing the Target(s) that could not be located
  1256	   (suggested status 10 to be confirmed by IANA).

So complex/sequential Tracks need to be established from destination to source.
What happens with a track when th egress looses routing information for a destination ?
(if thats answere elsehwhere, a pointer to that section would be helpfull here).
  
  1258	   If the egress node can reach all the Targets, then it forwards the
  1259	   P-DAO with unchanged content to its loose predecessor in the Segment

Shouldn't that be strict instead of loose ? If it was loose, how would that loose
predecessor know how to send the data packets to the successor without adding
another encap/RH if the underlying main RPL instance was NSM ?

  1260	   as indicated in the list of Via Information options, and recursively
  1261	   the message is propagated unchanged along the sequence of routers
  1262	   indicated in the P-DAO, but in the reverse order, from egress to
  1263	   ingress.
  1264	
  1265	   The address of the predecessor to be used as destination of the
  1266	   propagated DAO message is found in the Via Address the precedes the
  1267	   one that contain the address of the propagating node, which is used
  1268	   as source of the message.
  1269	
  1270	   Upon receiving a propagated DAO, all except the Egress Router MUST
  1271	   install a route towards the DAO Target(s) via their successor in the
  1272	   SF-VIO.  The router MAY install additional routes towards the VIA
  1273	   Addresses that are the SF-VIO after the next one, if any, but in case
  1274	   of a conflict or a lack of resource, the route(s) to the Target(s)
  1275	   have precedence.
  1276	
  1277	   If a router cannot reach its predecessor in the SF-VIO, the router
  1278	   MUST answer to the Root with a negative DAO-ACK indicating the
  1279	   successor that is unreachable (suggested status 11 to be confirmed by
  1280	   IANA).
  1281	
  1282	   The process continues till the P-DAO is propagated to ingress router
                                 ^until
  1283	   of the Segment, which answers with a DAO-ACK to the Root.  The Root
  1284	   always expects a DAO-ACK, either from the Track Ingress with a
  1293	   positive status or from any node along the segment with a negative
  1294	   status.  If the DAO-ACK is not received, the Root may retry the DAO
  1295	   with the same TID, or tear down the route.
  1296	
  1297	7.3.1.2.  Maintaining and Tearing Down a Storing-Mode P-Route
  1298	
  1299	   A Segment Lifetime of 0 in a VIO is used to clean up the state.  The
                                                                    ^
                                                                    P-route state
  1300	   P-DAO is forwarded as described above, but the DAO is interpreted as
  1301	   a No-Path DAO and results in cleaning up existing state as opposed to
  1302	   refreshing an existing one or installing a new one.
  1303	
  1304	   Note that the continuity of the segment may be broken; this happens
  1305	   if the bidirectional connectivity between contiguous hops of the
  1306	   segment is lost.  In that case the Root needs to send the projected
  1307	   DAO to one or more intermediate node(s) as opposed to the egress
  1308	   node, indicating a portion of segment that is being replaced or
  1309	   cleaned up.  At the extreme, the P-DAO updates only one node, in
  1310	   which case it contains only one VIO.

Hmm... how does this work given how the egres is meant to not install route state,
so if you want to fix up some intermediate segments, then the egres of that
fixup VIO, which is not the final egres of the full VIO  would from the prior
explanation have to invoke its function of checking the targets reachability,
but not to establish storing mode state. Some more explanation here might be
helpful. I think his can work, but i think the egres of a fixup VIO needs to
be careful and behave differently to a non-fixup actual track egres.

  1311	
  1312	   In case of a forwarding error along an Storing-Mode P-Route, the node
  1313	   that fails to forward SHOULD send an ICMP error with a code "Error in
  1314	   Projected Route" to the Root.  Failure to do so may result in packet
  1315	   loss and wasted resources along the Projected Route that is broken.
  1316	
  1317	7.3.2.  Non-Storing-Mode P-Route
  1318	
  1319	   As illustrated in Figure 10, a P-DAO that carries an SR-VIO enables
  1320	   the Root to install a source-routed path from a Track Ingress towards
  1321	   a Target along the main DODAG.
  1349	
  1349	              ------+---------
  1350	                    |          Internet
  1351	                    |
  1352	                 +-----+
  1353	                 |     | Border Router
  1354	                 |     |  (RPL Root)
  1355	                 +-----+                    |  P  ^ ACK
  1356	                    |        Track          | DAO |
  1357	              o    o   o  o  Ingress X      V     |   X
  1358	          o o   o  o   o  o     o   X   o             X Source
  1359	         o  o o  o o    o   o  o    X  o  o           X Routed
  1360	         o   o    °  o     o   o   o X     o          X Segment
  1361	        o  o   o  o   o  o    o  o     X Track        X
  1362	           o  o  o  o             o     Egress
  1363	
  1364	          o       o               o    o
  1365	        o          o             o     o
  1366	                                      destination
  1367	
  1368	                          LLN
  1369	
  1370	                 Figure 10: Projecting a Non-Storing Route

So there is some attempt here to visualize the P-Route, but it mentions destination
and not target, so i am again confused about the difference of those terms...
Would be good to show Target(s) in the picture.
  
  1372	   When forwarding a packet to a destination for which the router

which router ? The Track ingres ?

  1373	   determines that routing happens via a Track Target, the router

"via a track target" sounds as if destination is different from trac target.
What is the routing information from which that router can determine that
a destination is reachable via a target ? The P-Route only signals targets, right ?

  1374	   inserts the Source Routing Header in the packet with the final
  1375	   destination at the Track Egress.

encapsulates the packet with a new IPv6/SRH header ?

Now it sounds as if final destination is the same as track egres, so not even target...
even more confused now.
  1376	
  1377	   In order to signal the Segment, the router encapsulates the packet
  1378	   with an IP-in-IP header and a Routing Header as follows:

It seems as if we're not discussing installation of non-storing P-Routes at all,
but immediately skip to data-plane for non-storing P-Routes ?

I would suggest to have even if a very short section for installation of the non-storing
P-Route in one subsection and then aother subsection for the data-plane.

The storing mode text above does not seem to have a dedicated data-plane subsecton too,
so quite inconsistent...

  1379	
  1380	   *  In the uncompressed form the source of the packet is this router,

this router...

  1381	      the destination is the first Via Address in the SR-VIO, and the RH
  1382	      is a Source Routing Header (SRH) [RFC6554] that contains the list
  1383	      of the remaining Via Addresses terminating by the Track Egress.
  1384	
  1385	   *  The preferred alternate in a network where 6LoWPAN Header
  1386	      Compression [RFC6282] is used is to leverage "IPv6 over Low-Power
  1387	      Wireless Personal Area Network (6LoWPAN) Paging Dispatch"
  1388	      [RFC8025] to compress the RPL artifacts as indicated in [RFC8138].
  1389	
  1390	      In that case, the source routed header is the exact copy of the
  1391	      (chain of) SRH-6LoRH found in the SR-VIO, also terminating by the
  1392	      Track Egress.  The RPI-6LoRH is appended next, followed by an IP-
  1393	      in-IP 6LoRH Header that indicates the Ingress Router in the
  1394	      Encapsulator Address field, see as a similar case Figure 20 of
  1395	      [TURN-ON_RFC8138].

I will trust this is correct, as i can not verify this quickly due to my lack of
this encap details.

  1404	
  1405	   In the case of a loose source-routed path, there MUST be either a
  1406	   segment for the same Track to the loose next hop, on which case the
  1407	   packet is forwarded to the next hop along that segment, a common
  1408	   neighbor with the loose next hop, on which case the packet is
  1409	   forwarded to that neighbor, or another Track to the loose next hop
  1410	   for which this node or a neighbor is Ingress.  In the latter case,
  1411	   another encapsulation takes place and the process possibly recurses;
  1412	   otherwise the packet is dropped.

I can not comment on this because i am still lost as to the semantic of segment given
he absence of any illustrative pictures for multi-segment Tracks so far in the document.
  
  1414	   In case of a forwarding error along a Source Route path, the node
  1415	   that fails to forward SHOULD send an ICMP error with a code "Error in
  1416	   Source Routing Header" back to the source of the packet, as described
  1417	   in section 11.2.2.3. of [RPL].  Upon this message, the encapsulating
  1418	   node SHOULD stop using the source route path for a period of time and

How long should that period be. Elaborate for how the encapsulating node
should determine the period.

  1419	   it SHOULD send an ICMP message with a Code "Error in Projected Route"
  1420	   to the Root.  Failure to follow these steps may result in packet loss
  1421	   and wasted resources along the source route path that is broken.
  1422	
  1423	7.4.  Forwarding Along a Track

In 7.3.2 you already detail parts of this. Again, i would strongly suggest
to revert order, with this section first, before getting into the currently
earlier stated details.

  1425	   This draft leverages the RPL Forwarding model follows:
  1426	
  1427	   *  In the data packets, the Track DODAGID and the TrackID MUST be
  1428	      respectively signaled as the IPv6 Source Address and the
  1429	      RPLInstanceID field of the RPI that MUST be placed in the outer
  1430	      chain of IPv6 Headers.

I think an outer chain(mail) can be found as an armor on medieval knights, but in our
case i think it is the outer header of the packets chain of IPv6 headers.

  1432	      The RPI carries a local RPLInstanceID called the TrackID, which,
  1433	      in association with the DODAGID, indicates the Track along which
  1434	      the packet is forwarded.
  1435	
  1436	      The D flag in the RPLInstanceID MUST be set to 0 to indicate that
  1437	      the source address in the IPv6 header is set ot the DODAGID, more
                                                           ^^
  1438	      in Section 7.4.

This is section 7.4.

  1439	
  1440	   *  This draft conforms the principles of [USEofRPLinfo] with regards
                                 ^ to
  1441	      to packet forwarding and encapsulation along a Track.
  1442	
  1443	      -  In that case, the Track is the DODAG, the Track Ingress is the

In the case where the Track is the main DODAG ... ?

  1444	         Root, and the Track Egress is a RAL, and neighbors of the Track

Is there any reason why to say RAL instead of node ? First time you use RAL, so wondering.

  1445	         Egress that can be reached via the Track are RULs.  The
  1446	         encapsulation rules in [USEofRPLinfo] apply.

Not sure what RFC editor says, but given how RAL/RUL are first mentioned here,
even though they are listed in glossary, expanding them here can not hurt.

I think you may want to find a place early in he document where you want to say
that "node" without qualification in this doc mean RAN, maybe also add to glossary.

It would be helpfull to clariy what i think this section wants to say without hoping that
readers can / want to deduce it from [UseofRPLinfo]. How about the following table:

        Node role                   Supported node type
        Track ingres                RAN
        Track midpoint              RAN
        Track egres                 RAN, RAL
        Neighbor of track egres     RAN, RAL, RUL

(hope this is roughly ok, else fix up).

  1448	      -  If the Track Ingress is the originator of the packet and the
  1449	         Track Egress is the destination of the packet, there is no need
  1450	         for an encapsulation.
  1451	
  1459	
  1460	
  1461	      -  So the Track Ingress must encapsulate the traffic that it did
  1462	         not originate, and add an RPI in any fashion.
  1463	
  1464	      A packet that is being routed over the RPL Instance associated to
  1465	      a first Non-Storing Mode Track MAY be placed (encapsulated) in a
  1466	      second Track to cover one loose hop of the first Track.  On the

I can not follow this explanation without an example picture. When reading it,
the first thing that comes to mind is that it sounds as if i could have sequential
second Tracks in different RPL Instances, but it is unclear whether this is 
is a predondition of this case of whether its irrelevant.

  1466	      second Track to cover one loose hop of the first Track.  On the
  1467	      other hand, a Storing Mode Track must be strict and a packet that
  1468	      it placed in a Storing Mode Track MUST follow that Track till the

:%s/\<till\>/until/g
Don't speak emacs.

  1469	      Track Egress.
  1470	
  1471	      When a Track Egress extracts a packet from a Track (decapsulates
  1472	      the packet), the Destination of the inner packet MUST be either
  1473	      this node or a direct neighbor, or a Target of another Segment of
  1474	      the same Track for which this node is ingress, otherwise the
  1475	      packet MUST be dropped.

.... and (see reference) ICMP must be raied according to... etc. pp ?!

This last paragraph should really be as early in the document as possible.

  1476	
  1477	   All properties of a Track operations are inherited form the main RPL
  1478	   Instance that is used to install the Track.  For instance, the use of
  1479	   compression per [RFC8138] is determined by whether it is used in the
  1480	   main instance, e.g., by setting the "T" flag [TURN-ON_RFC8138] in the
  1481	   RPL configuration option.

Can there be multiple main instances ? If so, that should be mentioned and
maybe an example given.

  1482	
  1483	8.  Profiles
  1484	
  1485	   This document provides a set of tools that may or may not be needed
  1486	   by an implementation depending on the type of application it serves.
  1487	   This sections described profiles that can be implemented separately
  1488	   and can be used to discriminate what an implementation can and cannot
  1489	   do.
  1490	
  1491	   Profile 0  Profile 0 is the legacy support of [RPL] Non-Storing Mode.
  1492	      It provides the minimal common functionality that must be
  1493	      implemented as a prerequisite to all the Track-supporting
  1494	      profiles.  The other Profiles extend Profile 0 with selected
  1495	      capabilities that this specification introduces on top.

Is this profile a term estblished outside this document already, then please
do provide reference. If it is only introuced in this document, then what
exactly needs to be implemented for it ?

Let me guss: This is a new definition in this document, and it refers to nodes
that do not implement anything from this draft, but only RPL NSM acccording to
(fill in, best with section), and to deploy any of this documents technology,
ALL RAL in the network MUST implement Profile 0 or better. Or maybe not...
Maybe only RAL that are used to pass P-Route traffic MUST be Profile 0 or better ?!


If i am guessing right than my prior paragraphs text might be a better starting
point with less gussing.

  1496	
  1497	   Profile 1 (Storing-Mode P-Route Segments along the main DODAG)  Profi
  1498	      le 1 does not create new paths; it combines Storing and Non-
  1499	      Storing Modes to balance the size of the routing header in the
  1500	      packet and the amount of state in the intermediate routers in a
  1501	      Non-Storing Mode RPL DODAG.

You should be able to state exactly what part of this spec a node MUST/SHOULD
implement to be in compliance with Profile 1. Same is true for the other profiles.
Might be difficult to structure the documents into subsections such that
you can list those subsections that are required (incrementally) for each Profile,
but otherwise its really hard to figure out if or if not an implementation is
compliant with a profile.
  
  1503	   Profile 2 (Non-Storing-Mode P-Route Segments along the main DODAG)  P
  1504	      rofile 2 extends Profile 0 with Strict Source-Routing Non-Storing-

Can you try to persuade tools to not split words (P rofile) ?

  1505	      Mode Projected Routes along the main DODAG.  Profile 2 provides
  1506	      the same capability to compress the SRH in packets down the main
  1507	      DODAG as Profile 1, but it require an encapsulation, in order to
  1508	      insert an additional SRH between the loose source routing hops.
  1509	
  1517	   Profile 3  Profile 3 and above build Tracks that do not necessarily
  1518	      follow the main DODAG.  In order to form the best path possible,
                                                                             ^ ?
DODAG ? "best possible" is unexplained. Might be good to give (maybe textual is
sufficient) the most simple example of how an additional DODAG/TrackID would
be limited if it can not support Sibling Information Option. This might be
obvious to RPL experts of course..

  1519	      those Profiles require the support of Sibling Information Option
  1520	      to inform the Root of additional possible hops.  Profile 3 extends
  1521	      Profile 1 with additional Storing-Mode Projected Routes that
  1522	      install segments that do not follow the main DODAG.  If the
  1523	      Segment Ingress (in the SF-VIO) is the same as the IPv6 Address of
  1524	      the Track Ingress (in the projected DAO base Object), the P-DAO
  1525	      creates an implicit Track between the Segment Ingress and the
  1526	      Segment Egress.
  1527	
  1528	   Profile 4  Profile 4 extends Profile 2 with Strict Source-Routing
  1529	      Non-Storing-Mode Projected Routes to form Tracks inside the main
  1530	      DODAG.  A Track is formed as one or more strict source source
  1531	      routed paths between the Root that is the Track Ingress, and the
  1532	      Track Egress that is the last node

Why is this Profile 4 when Profile 3 says that all further profiles
do not necessarily follow the main DODAG ? Aka: What would not work if
you where to make 4 become eg.: 2.5 ?
  
  1534	   Profile 5  Profile 5 Combines Profile 4 with Profile 1 and enables to
  1535	      loose source routing between the Ingress and the Egress of the
  1536	      Track.  As in Profile 1, Storing-Mode Projected Routes connect the
  1537	      dots in the loose source route.
  1538	
  1539	   Profile 6  Profile 6 Combines Profile 4 with Profile 2 and also
  1540	      enables to loose source routing between the Ingress and the Egress
  1541	      of the Track.

How about a table where rows are features, columns profiles and intersections
checkmarks ? Right now i am lost in the details.


  1542	
  1543	9.  Example Track Signaling
  1544	
  1545	   The remainder of the section provides an example of how a Track can
  1546	   be signaled
  1547	
  1548	                                                  ===> F
  1549	                   A ===> B ===> C ===> D===> E <
  1550	                                                  ===> G
  1551	
  1552	
  1553	                         Figure 11: Reference Track
  1554	
  1555	   A is Track ingress, E is track Egress.  C is stitching point.  F and

First time "stitching point" is used. Can you avoid a new term here ? Else explain.

  1556	   G are E's neighbors, "external" to the Track, and reachable from A
  1557	   over the Track A->E.

I guess this is a two-segment Track with one segment A-...>C and one segment C-...>E.

What is the "<" after E good for ?

Why use the same symbol ===> for track and for getting from E to F, G ?
Are F and G  Targets and/or destinations ? Please introduce those terms into the example.

How about indicating both the physical connectivity with "---" and the track with "===>"

Also show / disinguish the two segments accordingly through better ASCII graphics.

  1558	
  1559	   In a general manner we want:
  1560	
  1561	   *  P-DAO 1 signals C==>B==>E

I hope B should be D, else i am heck more confused.

Please say what this signaling establishes. We learned in before that a P-DAO
has not only a VIO, but also some targets. So what are the targets of this P-DAO ?

  1562	
  1563	   *  P-DAO 2 signals A==>B==>C

Likewise

  1573	   *  P-DAO 3 signals F and G via the A==>E Track

What does hthis mean ? Whats the entry, whats the exit ? whats the VIO, whats the
target of P-DAO 3 ?

  1575	   P-DAO 3 being loose, it can only be non-storing.  Note that since the
  1576	   Root is always the ingress of a Track, and all SR-VIOs are now Track,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^                 ^^^^^^^^^^^^^^^^^^^^^^^^^

Which root ? the root of the main DODA ? 
I don't parse the second ^^^^ either.

  1577	   the Root being signaled in the DAO base object can now be elided in
  1578	   the VIA list in SR-VIO.  This enables the construction by the main
  1579	   root of the RFC 8138 optimized SRH-6LoRH in the SR-VIO, to be placed
  1580	   as is in the packet by the Root.

I can not follow that paragraph. Would it be posible to constrain the example
to not also include the SRH-6LoRH complexity, given how its an option ? One
step at a time ?

  1581	
  1582	9.1.  Using Storing-Mode Segments
  1583	
  1584	   A==>B==>C and C==>D==>E are segments of a same Track.  Note that the

See above. his explanation comes too late.

  1585	   storing mode signaling imposes strict continuity in a segment.  One
           ^^^^^^^^^^^^^^^^^^^^^^                ^^^^^^^^^^ steering

So i am confused if actually the storing mode signaling imposes that strict
steering. I guess if i start from the egres, and it wants to forward the P-DAO
to the prior hop node in the VIO, if that prior hop is a neighbor, then it
would send the P-DAO directly to that neighbor, but if it is not a direct
neighbor, it would need to go through the root. I guess this is 101 knowledge
from RFC6550, so if i had the time to read anothe 150 pages, i might be able
to deduce that, but i guess it wouldn't hurt to put the same explanation into
th text, e.g.: P-DAO must be sent directly from each segment node to its
prior segment node, and in a non-storing DODAG, this is only possible if
they are neighbors.

Also:
One of the fundamental explanations missing is the definition of the relationship
between a segment and a P-Route. The way i figure, a P-DAO is (segment, {targets})
and represents a set of P-routes { targetI -> segment } targetI in {targets}).

And then definition of tracks as composed of sequences of P-routes constructed
from likely trees of P-DAO

Or something like that...


  1586	   benefit of strict routing is that loops are avoided along the Track.

As long as the underlying topology does not change and direct neigbors start
to becom non-diret neighbors. In which case i think the segment wold need
to be immediately invalidated. But the question raised in before about
ICMP errors is valid, especially when i think about path divesity forwarding.
In path diversity you often do NOT want to have traffic triggered errors, but
jus sit out the error, even if that trafic gets dropped somehwere along the path.
Any desirable repair to do on the topolocy could/should come ffom non-traffic
trigers, such as neighbor tracking to the management plane.

Is there any way for traffic itself in the Routing information header to indicate
if it does or does not want to get ICMP indications when it fails to get forwarded ?
That would be ideal to distingish between non-redundant and redundant traffic
ICMP reaction...

  1587	
  1588	9.1.1.  Stitched Segments

Sequential ?

  1589	
  1590	   Storing-Mode P-DAO 1 and 2 are sent to E and C, as follows:
  1591	
  1592	              +===============+==============+==============+
  1593	              |     Field     | P-DAO 1 to E | P-DAO 2 to C |
  1594	              +===============+==============+==============+
  1595	              |      Mode     | Storing      | Storing      |
  1596	              +---------------+--------------+--------------+
  1597	              | Track Ingress | A            | A            |
  1598	              +---------------+--------------+--------------+
  1599	              |    TrackID    | (A, 129)     | (A, 129)     |
  1600	              +---------------+--------------+--------------+
  1601	              |      VIO      | C, D, E      | A, B, C      |
  1602	              +---------------+--------------+--------------+
  1603	              |    Targets    | E, F, G      | E, F, G      |
  1604	              +---------------+--------------+--------------+
  1605	
  1606	                          Table 1: P-DAO Messages

Please add a line showing the SegmentID of the VIO so its clear how
the P-DAO are distinguished. I guess that is the identifier used, right ?

If this example is pimped up as asked for above, it would make a good
intro example, although it does not cover all options. But at last the
fact that the track ingres for the secnd (C,D,E) segment is still A
was not clear to me in before.

Also, i guess that if the track was more of a tree, then the targets
of some earlier segments wold be a superset of the targets of later
segments at a branching point.

  1608	   As a result the RIBs are set as follows:
  1609	
  1629	         +======+=============+=========+=============+==========+
  1630	         | Node | Destination | Origin  | Next Hop(s) | TrackID  |
  1631	         +======+=============+=========+=============+==========+
  1632	         |  E   | F, G        | P-DAO 1 | Neighbor    | (A, 129) |

But E would know about F and G alrady before P-DAO 1, so i wonder...

he example didn't call out which DODAG we're forwarding across. I guess this
is a sequental Track, which the example also does not say. 

In any case, instead of saying just "Destination", it would be good to
say Destination in which context in the table. "Destination in RPLInstance TrackID1 ???"

Q: If this is not in the main DODAG, but in that TrackID1 DODAG,
and we didn't send any P-DAO yet. Can we actually send/deliver packets ?
I guess no, right ? So what seems to happen is that we first have some
F, G neighbor information from the main DODAG, and because of P-DAO 1,
this information is inherited into the forwarding for TrackID1 DODAG ?
That would be good to show, or explain.

Also, given how you previously whee pointing out that these routes
are used over routes to the node because of prefix-length, should the
entries in the destination not rather read F/128, G/128, likewise for all the
other entries below ? Or does RPL imply fixed /128 unless its a /0 ? default
route to the root ?

Also: TrackID is 129 i think. (A, 129) seems to be the DODAG (Identifier?).
So maybe rename or rewrite accordingly.

  1633	         +------+-------------+---------+-------------+----------+
  1634	         |  D   | E           | P-DAO 1 | Neighbor    | (A, 129) |
  1635	         +------+-------------+---------+-------------+----------+
  1636	         |  "   | F, G        | P-DAO 1 | E           | (A, 129) |
  1637	         +------+-------------+---------+-------------+----------+
  1638	         |  C   | D           | P-DAO 1 | Neighbor    | (A, 129) |
  1639	         +------+-------------+---------+-------------+----------+
  1640	         |  "   | E, F, G     | P-DAO 1 | D           | (A, 129) |
  1641	         +------+-------------+---------+-------------+----------+
  1642	         |  B   | C           | P-DAO 2 | Neighbor    | (A, 129) |
  1643	         +------+-------------+---------+-------------+----------+
  1644	         |  "   | E, F, G     | P-DAO 2 | C           | (A, 129) |
  1645	         +------+-------------+---------+-------------+----------+
  1646	         |  A   | B           | P-DAO 2 | Neighbor    | (A, 129) |
  1647	         +------+-------------+---------+-------------+----------+
  1648	         |  A   | E, F, G     | P-DAO 2 | B           | (A, 129) |
  1649	         +------+-------------+---------+-------------+----------+
  1650	
  1651	                            Table 2: RIB setting
  1652	
  1653	   E recognizes that it is the Track Egress because it is both a Target
  1654	   and a Segment Endpoint.

... of P-DAO 1 ?

What would happen if E was not listed as a Target in P-DAO 2 ? 
Would that impact the ability to deliver packets to F, G via (A, 129) ?
If so, why ?  If its possible to deliver to (F,G) without indicating E in
target list, hen i think the statement is wrong.

And i can't see how the logic works. Lets assume C has a neighbor H,
so now we set the targets for P-DAO 2 to E,F,G,H. How would the notion
of including C into this target list help C to decide wheher to deliver
packets to H directly instead of leting them maybe go through further
segments ? Aka: It seems to me that if the logic is that if you are
sement endpoint, and any track egres for that segments P-DAO is a neighbor
in the main dodag, then you do forward directly to that target.

Yes/No/Maybe ? ;-))

Also: I think there should be some "Punt" line in the FIB on E for E as
a target. And it seems to me that that Punt line would be created
by including the segment endpoint into the target list. Maybe one
does not want to be able to address a segment endpoint via the Track DODAG...

  1656	   Packets originated by A to E, F, or G, do not require an
                             ^^^ from a source X via

  1657	   encapsulation.  In any fashion, the outer headers of the packets that
           ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^ remove

how about "any additional encapsulation beside the one outer encapsulation
required for non-storage-mode" ?

Because immediately following you do write and show that outer encapsulation header.

  1657	   encapsulation.  In any fashion, the outer headers of the packets that
  1658	   are forwarded along the Track have the following settings:
  1659	
  1660	    +========+===================+===================+================+
  1661	    | Header | IPv6 Source Addr. | IPv6 Dest.  Addr. | TrackID in RPI |
  1662	    +========+===================+===================+================+
  1663	    | Outer  |         A         |     E, F or G     |    (A, 129)    |
  1664	    +--------+-------------------+-------------------+----------------+
  1665	    | Inner  |       X != A      |     E, F or G     |      N/A       |
  1666	    +--------+-------------------+-------------------+----------------+

Maybe add note: The Inner header is only required for X != A. 

  1667	
  1668	                      Table 3: Packet header settings
  1669	
  1670	   As an example, say that A has a packet for F.  Using the RIB above:
  1671	
  1672	   *  From P-DAO 2: A forwards to B and B forwards to C.
  1673	
  1674	   *  From P-DAO 1: C forwards to D and D forwards to E.
  1675	
  1676	   *  From Neighbor Cache Entry: C delivers the packet to F.
                                         ^ E ?

But see above, your FIB shows that E -> F as part of (A, 129), whereas the neighbor
cache entry is probably independent of 129, right ? So one of those statements
(table or neighbor-cache-entry) is wrong.
  
  1685	9.1.2.  External routes
                ^^^^^^^^^^^^^^^

New term not used in before. Explain.
  
  1687	   Storing-Mode P-DAO 1 and 2, and Non-Storing-Mode P-DAO 3, are sent to
  1688	   E, C and A, respectively, as follows:
  1689	
  1690	      +===============+==============+==============+==============+
  1691	      |               | P-DAO 1 to E | P-DAO 2 to C | P-DAO 3 to A |
  1692	      +===============+==============+==============+==============+
  1693	      |      Mode     | Storing      | Storing      | Non-Storing  |
  1694	      +---------------+--------------+--------------+--------------+
  1695	      | Track Ingress | A            | A            | A            |
  1696	      +---------------+--------------+--------------+--------------+
  1697	      |    TrackID    | (A, 129)     | (A, 129)     | (A, 129)     |
  1698	      +---------------+--------------+--------------+--------------+
  1699	      |      VIO      | C, D, E      | A, B, C      | E            |
  1700	      +---------------+--------------+--------------+--------------+
  1701	      |    Targets    | E            | E            | F, G         |
  1702	      +---------------+--------------+--------------+--------------+

Some explanation about the purpose of this example would be useful.

Seems to be something like. In this example, we want to avoid creating
state for F,G on B,C,D. We do this by using the two storing mode segmnts
P-DAO1 and P-DAO 2 to reach E and a non-storing segment P-DAO 3 to reach F
and G.

I am not clear why P-DAO 3 needs to be non-storing though. What would happen
if the only change to above was to indicate P-DAO 3 as storing ? aka: why
would B,C,D need to bother about any Target list of segments that they are not on ?

  1704	                         Table 4: P-DAO Messages
  1705	
  1706	   As a result the RIBs are set as follows:
  1707	
  1708	         +======+=============+=========+=============+==========+
  1709	         | Node | Destination | Origin  | Next Hop(s) | TrackID  |
  1710	         +======+=============+=========+=============+==========+
  1711	         |  E   | F, G        | P-DAO 1 | Neighbor    | (A, 129) |
                                        ^^^^^^^

Shouldn't this be P-DAO 3 ??

  1712	         +------+-------------+---------+-------------+----------+
  1713	         |  D   | E           | P-DAO 1 | Neighbor    | (A, 129) |
  1714	         +------+-------------+---------+-------------+----------+
  1715	         |  C   | D           | P-DAO 1 | Neighbor    | (A, 129) |
  1716	         +------+-------------+---------+-------------+----------+
  1717	         |  "   | E           | P-DAO 1 | D           | (A, 129) |
  1718	         +------+-------------+---------+-------------+----------+
  1719	         |  B   | C           | P-DAO 2 | Neighbor    | (A, 129) |
  1720	         +------+-------------+---------+-------------+----------+
  1721	         |  "   | E           | P-DAO 2 | C           | (A, 129) |
  1722	         +------+-------------+---------+-------------+----------+
  1723	         |  A   | B           | P-DAO 2 | Neighbor    | (A, 129) |
  1724	         +------+-------------+---------+-------------+----------+
  1725	         |  A   | E           | P-DAO 2 | B           | (A, 129) |
  1726	         +------+-------------+---------+-------------+----------+
  1727	         |  A   | F, G        | P-DAO 3 | E           | (A, 129) |
  1728	         +------+-------------+---------+-------------+----------+
  1729	
  1730	                            Table 5: RIB setting
  1731	
  1741	   Packets from A to E do not require an encapsulation.  In any fashion,
                                                 ^^^^^^^^^^^^^   ^^^^^^^^^^^^^^  delete
                                                 Inner Header

  1742	   the outer headers of the packets that are forwarded along the Track
  1743	   have the following settings:
  1744	
  1745	   +========+===================+====================+================+
  1746	   | Header | IPv6 Source Addr. | IPv6 Dest.  Addr.  | TrackID in RPI |
  1747	   +========+===================+====================+================+
  1748	   | Outer  |         A         |         E          |    (A, 129)    |
  1749	   +--------+-------------------+--------------------+----------------+
  1750	   | Inner  |         X         | E (X != A), F or G |      N/A       |
  1751	   +--------+-------------------+--------------------+----------------+
  1752	
  1753	                     Table 6: Packet header settings
  1754	
  1755	   As an example, say that A has a packet for F.  Using the RIB above:
  1756	
  1757	   *  From P-DAO 3: A encapsulates the packet the Track signaled by
                                                     ^ for     ^ (A,129)
  1758	      P-DAO 3, with the outer header above.  Now the packet destination
  1759	      is E.
             ^ of the Outer Header
  1760	
  1761	   *  From P-DAO 2: A forwards to B and B forwards to C.
  1762	
  1763	   *  From P-DAO 1: C forwards to D and D forwards to E; E decapsulates
  1764	      the packet.
                        ^ because it is the destination of the Outer Header
         ?? AND ? a valid target  for (A, 129) ??? (see question above
  1765	
  1766	   *  From Neighbor Cache Entry: C delivers packets to F or G.
  1767	
  1768	9.1.3.  Segment Routing

New term not used in before in this doc, define, reference (RFC8402 ?), etc. pp.

  1770	   Storing-Mode P-DAO 1 and 2, and Non-Storing-Mode P-DAO 3, are sent to
  1771	   E, B and A, respectively, as follows:

Again: Please add purpose/goal of this example.

If you did improve initial picture to show segments, then of course these
ar different now.


  1773	      +===============+==============+==============+==============+
  1774	      |               | P-DAO 1 to E | P-DAO 2 to B | P-DAO 3 to A |
  1775	      +===============+==============+==============+==============+
  1776	      |      Mode     | Storing      | Storing      | Non-Storing  |
  1777	      +---------------+--------------+--------------+--------------+
  1778	      | Track Ingress | A            | A            | A            |
  1779	      +---------------+--------------+--------------+--------------+
  1780	      |    TrackID    | (A, 129)     | (A, 129)     | (A, 129)     |
  1781	      +---------------+--------------+--------------+--------------+
  1782	      |      VIO      | C, D, E      | A, B         | C, E         |
  1783	      +---------------+--------------+--------------+--------------+
  1784	      |    Targets    | E            | B, C         | F, G         |
  1785	      +---------------+--------------+--------------+--------------+
  1786	
  1787	                         Table 7: P-DAO Messages

Does this example only work with B being the exit node for P-DAO2, or could
it equally work if we kept P-DAO 2 unchanged, ending at C, but the target only being C ?
I am guessing it could be, given how C would also need to look into P-DAO1 route
towards E, right ? Aka: Minimal change over prior example might make it easier..

  1797	   As a result the RIBs are set as follows:
  1798	
  1799	         +======+=============+=========+=============+==========+
  1800	         | Node | Destination | Origin  | Next Hop(s) | TrackID  |
  1801	         +======+=============+=========+=============+==========+
  1802	         |  E   | F, G        | P-DAO 1 | Neighbor    | (A, 129) |
  1803	         +------+-------------+---------+-------------+----------+
  1804	         |  D   | E           | P-DAO 1 | Neighbor    | (A, 129) |
  1805	         +------+-------------+---------+-------------+----------+
  1806	         |  C   | D           | P-DAO 1 | Neighbor    | (A, 129) |
  1807	         +------+-------------+---------+-------------+----------+
  1808	         |  "   | E           | P-DAO 1 | D           | (A, 129) |
  1809	         +------+-------------+---------+-------------+----------+
  1810	         |  B   | C           | P-DAO 2 | Neighbor    | (A, 129) |
  1811	         +------+-------------+---------+-------------+----------+
  1812	         |  A   | B           | P-DAO 2 | Neighbor    | (A, 129) |
  1813	         +------+-------------+---------+-------------+----------+
  1814	         |  "   | C           | P-DAO 2 | B           | (A, 129) |
  1815	         +------+-------------+---------+-------------+----------+
  1816	         |  "   | E, F, G     | P-DAO 3 | C, E        | (A, 129) |
  1817	         +------+-------------+---------+-------------+----------+
  1818	
  1819	                            Table 8: RIB setting
  1820	
  1821	   Packets from A to E do not require an encapsulation, but carry a SRH
 
a third header instead of encap ?

  1822	   via C.  In any fashion, the outer headers of the packets that are
  1823	   forwarded along the Track have the following settings:
  1824	
  1825	   +========+===================+====================+================+
  1826	   | Header | IPv6 Source Addr. | IPv6 Dest.  Addr.  | TrackID in RPI |
                                          ^^^^^^^^^^^^^^^^^

the SRH for th Outer Header is not just an Pv6 Dest. Addr.

  1827	   +========+===================+====================+================+
  1828	   | Outer  |         A         |  C till C then E   |    (A, 129)    |
  1829	   +--------+-------------------+--------------------+----------------+
  1830	   | Inner  |         X         | E (X != A), F or G |      N/A       |
  1831	   +--------+-------------------+--------------------+----------------+
  1832	
  1833	                     Table 9: Packet header settings
  1834	
  1835	   As an example, say that A has a packet for F.  Using the RIB above:
  1836	
  1837	   *  From P-DAO 3: A encapsulates the packet the Track signaled by
  1838	      P-DAO 3, with the outer header above.  Now the destination in the
  1839	      IPv6 Header is C, and a SRH signals the final destination is E.
  1840	
  1841	   *  From P-DAO 2: A forwards to B and B forwards to C.
  1842	
  1843	   *  From P-DAO 3: C processes the SRH and sets the destination in the
  1844	      IPv6 Header to E.
  1845	
  1853	   *  From P-DAO 1: C forwards to D and D forwards to E; E decapsulates
  1854	      the packet.
  1855	
  1856	   *  From the Neighbor Cache Entry: C delivers packets to F or G.
  1857	
  1858	9.2.  Using Non-Storing-Mode joining Tracks
  1859	
  1860	   A==>B==>C and C==>D==>E are Tracks expressed as non-storing P-DAOs.
  1861	
  1862	9.2.1.  Stitched Tracks

sequential Tracks ?
  
  1864	   Non-Storing Mode P-DAO 1 and 2 are sent to C and A respectively, as
  1865	   follows:
  1866	
  1867	              +===============+==============+==============+
  1868	              |               | P-DAO 1 to C | P-DAO 2 to A |
  1869	              +===============+==============+==============+
  1870	              |      Mode     | Non-Storing  | Non-Storing  |
  1871	              +---------------+--------------+--------------+
  1872	              | Track Ingress | C            | A            |
  1873	              +---------------+--------------+--------------+
  1874	              |    TrackID    | (C, 131)     | (A, 129)     |
  1875	              +---------------+--------------+--------------+
  1876	              |      VIO      | D, E         | B, C         |
  1877	              +---------------+--------------+--------------+
  1878	              |    Targets    | F, G         | E, F, G      |
  1879	              +---------------+--------------+--------------+

WOuld it be possible for both DAO to have the same number (129) given how
they are disambiguated by the source address ? If so i think it would strenthen
the example by doing so and highlighting that these are not the same Tracks anymore,
even if they reuse the same TrackID.

  1880	
  1881	                          Table 10: P-DAO Messages
  1882	
  1883	   As a result the RIBs are set as follows:
  1884	
  1885	
  1886	
  1887	
  1888	
  1889	
  1890	
  1891	
  1892	
  1893	
  1894	
  1895	
  1896	
  1897	
  1898	
  1899	
  1900	
  1901	
  1902	
  1903	
  1904	Thubert, et al.          Expires 28 January 2022               [Page 34]
  1905	
  1906	Internet-Draft               DAO Projection                    July 2021
  1907	
  1908	
  1909	         +======+=============+=========+=============+==========+
  1910	         | Node | Destination | Origin  | Next Hop(s) | TrackID  |
  1911	         +======+=============+=========+=============+==========+
  1912	         |  E   | F, G        | ND      | Neighbor    | Any      |
  1913	         +------+-------------+---------+-------------+----------+
  1914	         |  D   | E           | ND      | Neighbor    | Any      |
  1915	         +------+-------------+---------+-------------+----------+
  1916	         |  C   | D           | ND      | Neighbor    | Any      |
  1917	         +------+-------------+---------+-------------+----------+
  1918	         |  "   | E, F, G     | P-DAO 1 | D, E        | (C, 131) |
  1919	         +------+-------------+---------+-------------+----------+
  1920	         |  B   | C           | ND      | Neighbor    | Any      |
  1921	         +------+-------------+---------+-------------+----------+
  1922	         |  A   | B           | ND      | Neighbor    | Any      |
  1923	         +------+-------------+---------+-------------+----------+
  1924	         |  "   | C, E, F, G  | P-DAO 2 | B, C        | (A, 129) |
  1925	         +------+-------------+---------+-------------+----------+
  1926	
  1927	                           Table 11: RIB setting
  1928	
  1929	   Packets from A to E, F and G do not require an encapsulation, though
  1930	   it is preferred that A encapsulates and C decapsulates.  Either way,
  1931	   they carry a SRH via B and C, and C needs to encapsulate to E, F, or
  1932	   G to add an SRH via D and E.  The encapsulating headers of packets
  1933	   that are forwarded along the Track between C and E have the following
  1934	   settings:
  1935	
  1936	    +========+===================+===================+================+
  1937	    | Header | IPv6 Source Addr. | IPv6 Dest.  Addr. | TrackID in RPI |
  1938	    +========+===================+===================+================+
  1939	    | Outer  |         C         |  D till D then E  |    (C, 131)    |
  1940	    +--------+-------------------+-------------------+----------------+
  1941	    | Inner  |         X         |     E, F, or G    |      N/A       |
  1942	    +--------+-------------------+-------------------+----------------+
  1943	
  1944	                      Table 12: Packet header settings
  1945	
  1946	   As an example, say that A has a packet for F.  Using the RIB above:
  1947	
  1948	   *  From P-DAO 2: A encapsulates the packet with destination of F in
  1949	      the Track signaled by P-DAO 2.  The outer header has source A,
  1950	      destination B, an SRH that indicates C as the next loose hop, and
  1951	      a RPI indicating a TrackId of 129 from A's namespace.
  1952	
  1953	   *  From the SRH: Packets forwarded by B have source A, destination C
  1954	      , a consumed SRH, and a RPI indicating a TrackId of 129 from A's
  1955	      namespace.  C decapsulates.
  1956	
  1965	   *  From P-DAO 1: C encapsulates the packet with destination of F in
  1966	      the Track signaled by P-DAO 1.  The outer header has source C,
  1967	      destination D, an SRH that indicates E as the next loose hop, and
  1968	      a RPI indicating a TrackId of 131 from C's namespace.  E
  1969	      decapsulates.
  1970	
  1971	9.2.2.  External routes

sequential tracks with external routes ?

  1972	
  1973	   Non-Storing Mode P-DAO 1 is sent to C and Non-Storing Mode P-DAO 2
  1974	   and 3 are sent A, as follows:
  1975	
  1976	      +===============+==============+==============+==============+
  1977	      |               | P-DAO 1 to C | P-DAO 2 to A | P-DAO 3 to A |
  1978	      +===============+==============+==============+==============+
  1979	      |      Mode     | Non-Storing  | Non-Storing  | Non-Storing  |
  1980	      +---------------+--------------+--------------+--------------+
  1981	      | Track Ingress | C            | A            | A            |
  1982	      +---------------+--------------+--------------+--------------+
  1983	      |    TrackID    | (C, 131)     | (A, 129)     | (A, 141)     |
  1984	      +---------------+--------------+--------------+--------------+
  1985	      |      VIO      | D, E         | B, C         | E            |
  1986	      +---------------+--------------+--------------+--------------+
  1987	      |    Targets    | E            | E            | F, G         |
  1988	      +---------------+--------------+--------------+--------------+
  1989	
  1990	                         Table 13: P-DAO Messages
  1991	
  1992	   As a result the RIBs are set as follows:
  1993	
  1994	
  1995	
  1996	
  1997	
  1998	
  1999	
  2000	
  2001	
  2002	
  2003	
  2004	
  2005	
  2006	
  2007	
  2008	
  2009	
  2010	
  2011	
  2012	
  2013	
  2014	
  2015	
  2016	Thubert, et al.          Expires 28 January 2022               [Page 36]
  2017	
  2018	Internet-Draft               DAO Projection                    July 2021
  2019	
  2020	
  2021	         +======+=============+=========+=============+==========+
  2022	         | Node | Destination | Origin  | Next Hop(s) | TrackID  |
  2023	         +======+=============+=========+=============+==========+
  2024	         |  E   | F, G        | ND      | Neighbor    | Any      |
  2025	         +------+-------------+---------+-------------+----------+
  2026	         |  D   | E           | ND      | Neighbor    | Any      |
  2027	         +------+-------------+---------+-------------+----------+
  2028	         |  C   | D           | ND      | Neighbor    | Any      |
  2029	         +------+-------------+---------+-------------+----------+
  2030	         |  "   | E           | P-DAO 1 | D, E        | (C, 131) |
  2031	         +------+-------------+---------+-------------+----------+
  2032	         |  B   | C           | ND      | Neighbor    | Any      |
  2033	         +------+-------------+---------+-------------+----------+
  2034	         |  A   | B           | ND      | Neighbor    | Any      |
  2035	         +------+-------------+---------+-------------+----------+
  2036	         |  "   | C, E        | P-DAO 2 | B, C        | (A, 129) |
  2037	         +------+-------------+---------+-------------+----------+
  2038	         |  "   | F, G        | P-DAO 3 | E           | (A, 141) |
  2039	         +------+-------------+---------+-------------+----------+
  2040	
  2041	                           Table 14: RIB setting
  2042	
  2043	   The encapsulating headers of packets that are forwarded along the
  2044	   Track between C and E have the following settings:
  2045	
  2046	    +========+===================+===================+================+
  2047	    | Header | IPv6 Source Addr. | IPv6 Dest.  Addr. | TrackID in RPI |
  2048	    +========+===================+===================+================+
  2049	    | Outer  |         C         |  D till D then E  |    (C, 131)    |
  2050	    +--------+-------------------+-------------------+----------------+
  2051	    | Middle |         A         |         E         |    (A, 141)    |
  2052	    +--------+-------------------+-------------------+----------------+
  2053	    | Inner  |         X         |     E, F or G     |      N/A       |
  2054	    +--------+-------------------+-------------------+----------------+
  2055	
  2056	                      Table 15: Packet header settings
  2057	
  2058	   As an example, say that A has a packet for F.  Using the RIB above:
  2059	
  2060	   *  From P-DAO 3: A encapsulates the packet with destination of F in
  2061	      the Track signaled by P-DAO 3.  The outer header has source A,
  2062	      destination E, and a RPI indicating a TrackId of 141 from A's
  2063	      namespace.  This recurses with:
  2064	
  2065	   *  From P-DAO 2: A encapsulates the packet with destination of E in
  2066	      the Track signaled by P-DAO 2.  The outer header has source A,
  2067	      destination B, an SRH that indicates C as the next loose hop, and
  2068	      a RPI indicating a TrackId of 129 from A's namespace.
  2069	
  2070	
  2071	
  2072	Thubert, et al.          Expires 28 January 2022               [Page 37]
  2073	
  2074	Internet-Draft               DAO Projection                    July 2021
  2075	
  2076	
  2077	   *  From the SRH: Packets forwarded by B have source A, destination C
  2078	      , a consumed SRH, and a RPI indicating a TrackId of 129 from A's
  2079	      namespace.  C decapsulates.
  2080	
  2081	   *  From P-DAO 1: C encapsulates the packet with destination of E in
  2082	      the Track signaled by P-DAO 1.  The outer header has source C,
  2083	      destination D, an SRH that indicates E as the next loose hop, and
  2084	      a RPI indicating a TrackId of 131 from C's namespace.  E
  2085	      decapsulates.
  2086	
  2087	9.2.3.  Segment Routing

segment routing with exernal routes ?
  2088	
  2089	   Non-Storing Mode P-DAO 1 is sent to C and Non-Storing Mode P-DAO 2
  2090	   and 3 are sent A, as follows:
  2091	
  2092	      +===============+==============+==============+==============+
  2093	      |               | P-DAO 1 to C | P-DAO 2 to A | P-DAO 3 to A |
  2094	      +===============+==============+==============+==============+
  2095	      |      Mode     | Non-Storing  | Non-Storing  | Non-Storing  |
  2096	      +---------------+--------------+--------------+--------------+
  2097	      | Track Ingress | C            | A            | A            |
  2098	      +---------------+--------------+--------------+--------------+
  2099	      |    TrackID    | (C, 131)     | (A, 129)     | (A, 141)     |
  2100	      +---------------+--------------+--------------+--------------+
  2101	      |      VIO      | D, E         | B            | C, E         |
  2102	      +---------------+--------------+--------------+--------------+
  2103	      |    Targets    |              | C            | F, G         |
  2104	      +---------------+--------------+--------------+--------------+
  2105	
  2106	                         Table 16: P-DAO Messages
  2107	
  2108	   As a result the RIBs are set as follows:
  2109	
  2110	
  2111	
  2112	
  2113	
  2114	
  2115	
  2116	
  2117	
  2118	
  2119	
  2120	
  2121	
  2122	
  2123	
  2124	
  2125	
  2126	
  2127	
  2128	Thubert, et al.          Expires 28 January 2022               [Page 38]
  2129	
  2130	Internet-Draft               DAO Projection                    July 2021
  2131	
  2132	
  2133	         +======+=============+=========+=============+==========+
  2134	         | Node | Destination | Origin  | Next Hop(s) | TrackID  |
  2135	         +======+=============+=========+=============+==========+
  2136	         |  E   | F, G        | ND      | Neighbor    | Any      |
  2137	         +------+-------------+---------+-------------+----------+
  2138	         |  D   | E           | ND      | Neighbor    | Any      |
  2139	         +------+-------------+---------+-------------+----------+
  2140	         |  C   | D           | ND      | Neighbor    | Any      |
  2141	         +------+-------------+---------+-------------+----------+
  2142	         |  "   | E           | P-DAO 1 | D, E        | (C, 131) |
  2143	         +------+-------------+---------+-------------+----------+
  2144	         |  B   | C           | ND      | Neighbor    | Any      |
  2145	         +------+-------------+---------+-------------+----------+
  2146	         |  A   | B           | ND      | Neighbor    | Any      |
  2147	         +------+-------------+---------+-------------+----------+
  2148	         |  "   | C           | P-DAO 2 | B, C        | (A, 129) |
  2149	         +------+-------------+---------+-------------+----------+
  2150	         |  "   | E, F, G     | P-DAO 3 | C, E        | (A, 141) |
  2151	         +------+-------------+---------+-------------+----------+
  2152	
  2153	                           Table 17: RIB setting
  2154	
  2155	   The encapsulating headers of packets that are forwarded along the
  2156	   Track between A and B have the following settings:
  2157	
  2158	    +========+===================+===================+================+
  2159	    | Header | IPv6 Source Addr. | IPv6 Dest.  Addr. | TrackID in RPI |
  2160	    +========+===================+===================+================+
  2161	    | Outer  |         A         |  B till D then E  |    (A, 129)    |
  2162	    +--------+-------------------+-------------------+----------------+
  2163	    | Middle |         A         |         C         |    (A, 141)    |
  2164	    +--------+-------------------+-------------------+----------------+
  2165	    | Inner  |         X         |     E, F or G     |      N/A       |
  2166	    +--------+-------------------+-------------------+----------------+
  2167	
  2168	                      Table 18: Packet header settings
  2169	
  2170	   The encapsulating headers of packets that are forwarded along the
  2171	   Track between B and C have the following settings:
  2172	
  2173	
  2174	
  2175	
  2176	
  2177	
  2178	
  2179	
  2180	
  2181	
  2182	
  2183	
  2184	Thubert, et al.          Expires 28 January 2022               [Page 39]
  2185	
  2186	Internet-Draft               DAO Projection                    July 2021
  2187	
  2188	
  2189	    +========+===================+===================+================+
  2190	    | Header | IPv6 Source Addr. | IPv6 Dest.  Addr. | TrackID in RPI |
  2191	    +========+===================+===================+================+
  2192	    | Outer  |         A         |         C         |    (A, 141)    |
  2193	    +--------+-------------------+-------------------+----------------+
  2194	    | Inner  |         X         |     E, F or G     |      N/A       |
  2195	    +--------+-------------------+-------------------+----------------+
  2196	
  2197	                      Table 19: Packet header settings
  2198	
  2199	   The encapsulating headers of packets that are forwarded along the
  2200	   Track between C and E have the following settings:
  2201	
  2202	    +========+===================+===================+================+
  2203	    | Header | IPv6 Source Addr. | IPv6 Dest.  Addr. | TrackID in RPI |
  2204	    +========+===================+===================+================+
  2205	    | Outer  |         C         |  D till D then E  |    (C, 131)    |
  2206	    +--------+-------------------+-------------------+----------------+
  2207	    | Middle |         A         |         E         |    (A, 141)    |
  2208	    +--------+-------------------+-------------------+----------------+
  2209	    | Inner  |         X         |     E, F or G     |      N/A       |
  2210	    +--------+-------------------+-------------------+----------------+
  2211	
  2212	                      Table 20: Packet header settings
  2213	
  2214	   As an example, say that A has a packet for F.  Using the RIB above:
  2215	
  2216	   *  From P-DAO 3: A encapsulates the packet with destination of F in
  2217	      the Track signaled by P-DAO 3.  The outer header has source A,
  2218	      destination C, an SRH that indicates E as the next loose hop, and
  2219	      a RPI indicating a TrackId of 141 from A's namespace.  This
  2220	      recurses with:
  2221	
  2222	   *  From P-DAO 2: A encapsulates the packet with destination of C in
  2223	      the Track signaled by P-DAO 2.  The outer header has source A,
  2224	      destination B, and a RPI indicating a TrackId of 129 from A's
  2225	      namespace.  B decapsulates forwards to C based on a sibling
  2226	      connected route.
  2227	
  2228	   *  From the SRH: C consumes the SRH and makes the destination E.
  2229	
  2230	   *  From P-DAO 1: C encapsulates the packet with destination of E in
  2231	      the Track signaled by P-DAO 1.  The outer header has source C,
  2232	      destination D, an SRH that indicates E as the next loose hop, and
  2233	      a RPI indicating a TrackId of 131 from C's namespace.  E
  2234	      decapsulates.
  2235	

Sorry, i skipped mostly across 1883 to here, running out of time.
  
  2245	10.  Security Considerations
  2246	
  2247	   It is worth noting that with [RPL], every node in the LLN is RPL-
  2248	   aware and can inject any RPL-based attack in the network.  This draft

I guss even RUL nodes, which i think came after rfc6550 could be nasty too and
inject RPL messages.

  2249	   uses messages that are already present in RPL [RPL] with optional
  2250	   secured versions.  The same secured versions may be used with this
  2251	   draft, and whatever security is deployed for a given network also
  2252	   applies to the flows in this draft.
  2253	
  2254	   The LLN nodes depend on the 6LBR and the RPL participants for their
  2255	   operation.  A trust model must be put in place to ensure that the
  2256	   right devices are acting in these roles, so as to avoid threats such
  2257	   as black-holing, (see [RFC7416] section 7).  This trust model could
  2258	   be at a minimum based on a Layer-2 Secure joining and the Link-Layer
  2259	   security.  This is a generic 6LoWPAN requirement, see Req5.1 in
  2260	   Appendix B.5 of [RFC8505].

  2261	
  2262	   In a general manner, the Security Considerations in [RPL], and
  2263	   [RFC7416] apply to this specification as well.  The Link-Layer
  2264	   security is needed in particular to prevent Denial-Of-Service attacks
  2265	   whereby a rogue router creates a high churn in the RPL network by
  2266	   constantly injected forged P-DAO messages and using up all the
  2267	   available storage in the attacked routers.

Seems like the answer is no.

  2268	
  2269	   Additionally, the trust model could include a role validation (e.g.,
  2270	   using a role-based authorization) to ensure that the node that claims
  2271	   to be a RPL Root is entitled to do so.  That trust should propagate
  2272	   from egress to ingress in the case of a Storing Mode P-DAO.

In ANIMA i am pondering to get role-based certificates to enable something like this.
Is there any existing solution for this ? If not, then it would be good to mention this
as a gap. In general, the whole PCE based routing model does put more reliance of a
trustworthy PCE into the solution, but it eliminates  a lot of security attacks
coming from the normal peer-2-peer routing model (i am just making this argument
in my bier-te draft, ask me again, when i have read BenK's feedback ;-).

But when
like it seems in this solution, one mixes the tradtional non-role based signaling
with PCE input then it looks like a bigge gap than in before, because now these
new routes allow to potentially create even more black holes than may have been
possible in before (not quite sure).

In any case, you can also mention that you did try to eliminate one new type of
attack by injection of duplicate addresses in tracks by mandating to discover such
issue. Not sure though if this is the best set of heuristics that nodes could
apply to self-defend themslfes and further hops from incorrect new messages. Miht
be worth to ponder.

  2273	
  2274	11.  IANA Considerations

I am not going to read this (out of time). I would suggest as mentione din before to replace
all numbers with TBDi and then strongly consider early IANA allocation. That would
also help a lot to resolve any possible issues with any of the registration asks by
mean of the IANA/expert review ensueing.

  2276	11.1.  New Elective 6LoWPAN Routing Header Type
  2277	
  2278	   This document updates the IANA registry titled "Elective 6LoWPAN
  2279	   Routing Header Type" that was created for [RFC8138] and assigns the
  2280	   following value:
  2281	
  2282	                  +=======+=============+===============+
  2283	                  | Value | Description | Reference     |
  2284	                  +=======+=============+===============+
  2285	                  |   7   | P-RPI-6LoRH | This document |
  2286	                  +-------+-------------+---------------+
  2287	
  2288	                       Table 21: New Elective 6LoWPAN
  2289	                            Routing Header Type
  2290	
  2291	
  2292	
  2293	
  2294	
  2295	
  2296	Thubert, et al.          Expires 28 January 2022               [Page 41]
  2297	
  2298	Internet-Draft               DAO Projection                    July 2021
  2299	
  2300	
  2301	11.2.  New Critical 6LoWPAN Routing Header Type
  2302	
  2303	   This document updates the IANA registry titled "Critical 6LoWPAN
  2304	   Routing Header Type" that was created for [RFC8138] and assigns the
  2305	   following value:
  2306	
  2307	                  +=======+=============+===============+
  2308	                  | Value | Description | Reference     |
  2309	                  +=======+=============+===============+
  2310	                  |   7   | P-RPI-6LoRH | This document |
  2311	                  +-------+-------------+---------------+
  2312	
  2313	                       Table 22: New Critical 6LoWPAN
  2314	                            Routing Header Type
  2315	
  2316	11.3.  New Subregistry For The RPL Option Flags
  2317	
  2318	   IANA is required to create a subregistry for the 8-bit RPL Option
  2319	   Flags field, as detailed in Figure 2, under the "Routing Protocol for
  2320	   Low Power and Lossy Networks (RPL)" registry.  The bits are indexed
  2321	   from 0 (leftmost) to 7.  Each bit is tracked with the following
  2322	   qualities:
  2323	
  2324	   *  Bit number (counting from bit 0 as the most significant bit)
  2325	
  2326	   *  Indication When Set
  2327	
  2328	   *  Reference
  2329	
  2330	   Registration procedure is "Standards Action" [RFC8126].  The initial
  2331	   allocation is as indicated in Table 26:
  2332	
  2333	           +============+======================+===============+
  2334	           | Bit number | Indication When Set  | Reference     |
  2335	           +============+======================+===============+
  2336	           |     0      | Down 'O'             | [RFC6553]     |
  2337	           +------------+----------------------+---------------+
  2338	           |     1      | Rank-Error (R)       | [RFC6553]     |
  2339	           +------------+----------------------+---------------+
  2340	           |     2      | Forwarding-Error (F) | [RFC6553]     |
  2341	           +------------+----------------------+---------------+
  2342	           |     3      | Projected-Route (P)  | This document |
  2343	           +------------+----------------------+---------------+
  2344	
  2345	                        Table 23: Initial PDR Flags
  2346	
  2347	
  2348	
  2349	
  2350	
  2351	
  2352	Thubert, et al.          Expires 28 January 2022               [Page 42]
  2353	
  2354	Internet-Draft               DAO Projection                    July 2021
  2355	
  2356	
  2357	11.4.  New RPL Control Codes
  2358	
  2359	   This document extends the IANA Subregistry created by RFC 6550 for
  2360	   RPL Control Codes as indicated in Table 24:
  2361	
  2362	          +======+=============================+===============+
  2363	          | Code | Description                 | Reference     |
  2364	          +======+=============================+===============+
  2365	          | 0x09 | Projected DAO Request (PDR) | This document |
  2366	          +------+-----------------------------+---------------+
  2367	          | 0x0A | PDR-ACK                     | This document |
  2368	          +------+-----------------------------+---------------+
  2369	
  2370	                     Table 24: New RPL Control Codes
  2371	
  2372	11.5.  New RPL Control Message Options
  2373	
  2374	   This document extends the IANA Subregistry created by RFC 6550 for
  2375	   RPL Control Message Options as indicated in Table 25:
  2376	
  2377	          +=======+============================+===============+
  2378	          | Value | Meaning                    | Reference     |
  2379	          +=======+============================+===============+
  2380	          |  0x0B | Stateful VIO (SF-VIO)      | This document |
  2381	          +-------+----------------------------+---------------+
  2382	          |  0x0C | Source-Routed VIO (SR-VIO) | This document |
  2383	          +-------+----------------------------+---------------+
  2384	          |  0x0D | Sibling Information option | This document |
  2385	          +-------+----------------------------+---------------+
  2386	
  2387	                  Table 25: RPL Control Message Options
  2388	
  2389	11.6.  SubRegistry for the Projected DAO Request Flags
  2390	
  2391	   IANA is required to create a registry for the 8-bit Projected DAO
  2392	   Request (PDR) Flags field.  Each bit is tracked with the following
  2393	   qualities:
  2394	
  2395	   *  Bit number (counting from bit 0 as the most significant bit)
  2396	
  2397	   *  Capability description
  2398	
  2399	   *  Reference
  2400	
  2401	   Registration procedure is "Standards Action" [RFC8126].  The initial
  2402	   allocation is as indicated in Table 26:
  2403	
  2404	
  2405	
  2406	
  2407	
  2408	Thubert, et al.          Expires 28 January 2022               [Page 43]
  2409	
  2410	Internet-Draft               DAO Projection                    July 2021
  2411	
  2412	
  2413	          +============+========================+===============+
  2414	          | Bit number | Capability description | Reference     |
  2415	          +============+========================+===============+
  2416	          |     0      | PDR-ACK request (K)    | This document |
  2417	          +------------+------------------------+---------------+
  2418	          |     1      | Requested path should  | This document |
  2419	          |            | be redundant (R)       |               |
  2420	          +------------+------------------------+---------------+
  2421	
  2422	                        Table 26: Initial PDR Flags
  2423	
  2424	11.7.  SubRegistry for the PDR-ACK Flags
  2425	
  2426	   IANA is required to create an subregistry for the 8-bit PDR-ACK Flags
  2427	   field.  Each bit is tracked with the following qualities:
  2428	
  2429	   *  Bit number (counting from bit 0 as the most significant bit)
  2430	
  2431	   *  Capability description
  2432	
  2433	   *  Reference
  2434	
  2435	   Registration procedure is "Standards Action" [RFC8126].  No bit is
  2436	   currently defined for the PDR-ACK Flags.
  2437	
  2438	11.8.  Subregistry for the PDR-ACK Acceptance Status Values
  2439	
  2440	   IANA is requested to create a Subregistry for the PDR-ACK Acceptance
  2441	   Status values.
  2442	
  2443	   *  Possible values are 6-bit unsigned integers (0..63).
  2444	
  2445	   *  Registration procedure is "Standards Action" [RFC8126].
  2446	
  2447	   *  Initial allocation is as indicated in Table 27:
  2448	
  2449	            +-------+------------------------+---------------+
  2450	            | Value | Meaning                | Reference     |
  2451	            +-------+------------------------+---------------+
  2452	            | 0     | Unqualified acceptance | This document |
  2453	            +-------+------------------------+---------------+
  2454	
  2455	            Table 27: Acceptance values of the PDR-ACK Status
  2456	
  2457	11.9.  Subregistry for the PDR-ACK Rejection Status Values
  2458	
  2459	   IANA is requested to create a Subregistry for the PDR-ACK Rejection
  2460	   Status values.
  2461	
  2462	
  2463	
  2464	Thubert, et al.          Expires 28 January 2022               [Page 44]
  2465	
  2466	Internet-Draft               DAO Projection                    July 2021
  2467	
  2468	
  2469	   *  Possible values are 6-bit unsigned integers (0..63).
  2470	
  2471	   *  Registration procedure is "Standards Action" [RFC8126].
  2472	
  2473	   *  Initial allocation is as indicated in Table 28:
  2474	
  2475	             +-------+-----------------------+---------------+
  2476	             | Value | Meaning               | Reference     |
  2477	             +-------+-----------------------+---------------+
  2478	             | 0     | Unqualified rejection | This document |
  2479	             +-------+-----------------------+---------------+
  2480	
  2481	              Table 28: Rejection values of the PDR-ACK Status
  2482	
  2483	11.10.  SubRegistry for the Via Information Options Flags
  2484	
  2485	   IANA is requested to create a Subregistry for the 5-bit Via
  2486	   Information Options (Via Information Option) Flags field.  Each bit
  2487	   is tracked with the following qualities:
  2488	
  2489	   *  Bit number (counting from bit 0 as the most significant bit)
  2490	
  2491	   *  Capability description
  2492	
  2493	   *  Reference
  2494	
  2495	   Registration procedure is "Standards Action" [RFC8126].  No bit is
  2496	   currently defined for the Via Information Options (Via Information
  2497	   Option) Flags.
  2498	
  2499	11.11.  SubRegistry for the Sibling Information Option Flags
  2500	
  2501	   IANA is required to create a registry for the 5-bit Sibling
  2502	   Information Option (SIO) Flags field.  Each bit is tracked with the
  2503	   following qualities:
  2504	
  2505	   *  Bit number (counting from bit 0 as the most significant bit)
  2506	
  2507	   *  Capability description
  2508	
  2509	   *  Reference
  2510	
  2511	   Registration procedure is "Standards Action" [RFC8126].  The initial
  2512	   allocation is as indicated in Table 29:
  2513	
  2514	
  2515	
  2516	
  2517	
  2518	
  2519	
  2520	Thubert, et al.          Expires 28 January 2022               [Page 45]
  2521	
  2522	Internet-Draft               DAO Projection                    July 2021
  2523	
  2524	
  2525	    +============+===================================+===============+
  2526	    | Bit number | Capability description            | Reference     |
  2527	    +============+===================================+===============+
  2528	    |     0      | Connectivity is bidirectional (B) | This document |
  2529	    +------------+-----------------------------------+---------------+
  2530	
  2531	                       Table 29: Initial SIO Flags
  2532	
  2533	11.12.  New Destination Advertisement Object Flag
  2534	
  2535	   This document modifies the "Destination Advertisement Object (DAO)
  2536	   Flags" registry initially created in Section 20.11 of [RPL] .
  2537	
  2538	   Section 3.1 also defines one new entry in the Registry as follows:
  2539	
  2540	          +---------------+------------------------+-----------+
  2541	          | Bit Number    | Capability Description | Reference |
  2542	          +---------------+------------------------+-----------+
  2543	          | 2 (suggested) | Projected DAO (P)      | THIS RFC  |
  2544	          +---------------+------------------------+-----------+
  2545	
  2546	              Table 30: New Destination Advertisement Object
  2547	                                (DAO) Flag
  2548	
  2549	11.13.  Error in Projected Route ICMPv6 Code
  2550	
  2551	   In some cases RPL will return an ICMPv6 error message when a message
  2552	   cannot be forwarded along a Projected Route.  This ICMPv6 error
  2553	   message is "Error in Projected Route".
  2554	
  2555	   IANA has defined an ICMPv6 "Code" Fields Registry for ICMPv6 Message
  2556	   Types.  ICMPv6 Message Type 1 describes "Destination Unreachable"
  2557	   codes.  This specification requires that a new code is allocated from
  2558	   the ICMPv6 Code Fields Registry for ICMPv6 Message Type 1, for "Error
  2559	   in Projected Route", with a suggested code value of 8, to be
  2560	   confirmed by IANA.
  2561	
  2562	12.  Acknowledgments
  2563	
  2564	   The authors wish to acknowledge JP Vasseur, Remy Liubing, James
  2565	   Pylakutty and Patrick Wetterwald for their contributions to the ideas
  2566	   developed here.
  2567	
  2568	13.  Normative References
  2569	
  2570	
  2571	
  2572	
  2573	
  2574	
  2575	
  2576	Thubert, et al.          Expires 28 January 2022               [Page 46]
  2577	
  2578	Internet-Draft               DAO Projection                    July 2021
  2579	
  2580	
  2581	   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
  2582	              Requirement Levels", BCP 14, RFC 2119,
  2583	              DOI 10.17487/RFC2119, March 1997,
  2584	              <https://www.rfc-editor.org/info/rfc2119>.
  2585	
  2586	   [RFC4443]  Conta, A., Deering, S., and M. Gupta, Ed., "Internet
  2587	              Control Message Protocol (ICMPv6) for the Internet
  2588	              Protocol Version 6 (IPv6) Specification", STD 89,
  2589	              RFC 4443, DOI 10.17487/RFC4443, March 2006,
  2590	              <https://www.rfc-editor.org/info/rfc4443>.
  2591	
  2592	   [RFC6282]  Hui, J., Ed. and P. Thubert, "Compression Format for IPv6
  2593	              Datagrams over IEEE 802.15.4-Based Networks", RFC 6282,
  2594	              DOI 10.17487/RFC6282, September 2011,
  2595	              <https://www.rfc-editor.org/info/rfc6282>.
  2596	
  2597	   [RPL]      Winter, T., Ed., Thubert, P., Ed., Brandt, A., Hui, J.,
  2598	              Kelsey, R., Levis, P., Pister, K., Struik, R., Vasseur,
  2599	              JP., and R. Alexander, "RPL: IPv6 Routing Protocol for
  2600	              Low-Power and Lossy Networks", RFC 6550,
  2601	              DOI 10.17487/RFC6550, March 2012,
  2602	              <https://www.rfc-editor.org/info/rfc6550>.
  2603	
  2604	   [RFC6553]  Hui, J. and JP. Vasseur, "The Routing Protocol for Low-
  2605	              Power and Lossy Networks (RPL) Option for Carrying RPL
  2606	              Information in Data-Plane Datagrams", RFC 6553,
  2607	              DOI 10.17487/RFC6553, March 2012,
  2608	              <https://www.rfc-editor.org/info/rfc6553>.
  2609	
  2610	   [RFC6554]  Hui, J., Vasseur, JP., Culler, D., and V. Manral, "An IPv6
  2611	              Routing Header for Source Routes with the Routing Protocol
  2612	              for Low-Power and Lossy Networks (RPL)", RFC 6554,
  2613	              DOI 10.17487/RFC6554, March 2012,
  2614	              <https://www.rfc-editor.org/info/rfc6554>.
  2615	
  2616	   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
  2617	              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
  2618	              May 2017, <https://www.rfc-editor.org/info/rfc8174>.
  2619	
  2620	   [RFC8126]  Cotton, M., Leiba, B., and T. Narten, "Guidelines for
  2621	              Writing an IANA Considerations Section in RFCs", BCP 26,
  2622	              RFC 8126, DOI 10.17487/RFC8126, June 2017,
  2623	              <https://www.rfc-editor.org/info/rfc8126>.
  2624	
  2625	14.  Informative References
  2626	
  2627	
  2628	
  2629	
  2630	
  2631	
  2632	Thubert, et al.          Expires 28 January 2022               [Page 47]
  2633	
  2634	Internet-Draft               DAO Projection                    July 2021
  2635	
  2636	
  2637	   [RFC7102]  Vasseur, JP., "Terms Used in Routing for Low-Power and
  2638	              Lossy Networks", RFC 7102, DOI 10.17487/RFC7102, January
  2639	              2014, <https://www.rfc-editor.org/info/rfc7102>.
  2640	
  2641	   [RFC6997]  Goyal, M., Ed., Baccelli, E., Philipp, M., Brandt, A., and
  2642	              J. Martocci, "Reactive Discovery of Point-to-Point Routes
  2643	              in Low-Power and Lossy Networks", RFC 6997,
  2644	              DOI 10.17487/RFC6997, August 2013,
  2645	              <https://www.rfc-editor.org/info/rfc6997>.
  2646	
  2647	   [RFC7416]  Tsao, T., Alexander, R., Dohler, M., Daza, V., Lozano, A.,
  2648	              and M. Richardson, Ed., "A Security Threat Analysis for
  2649	              the Routing Protocol for Low-Power and Lossy Networks
  2650	              (RPLs)", RFC 7416, DOI 10.17487/RFC7416, January 2015,
  2651	              <https://www.rfc-editor.org/info/rfc7416>.
  2652	
  2653	   [6TiSCH-ARCHI]
  2654	              Thubert, P., Ed., "An Architecture for IPv6 over the Time-
  2655	              Slotted Channel Hopping Mode of IEEE 802.15.4 (6TiSCH)",
  2656	              RFC 9030, DOI 10.17487/RFC9030, May 2021,
  2657	              <https://www.rfc-editor.org/info/rfc9030>.
  2658	
  2659	   [RAW-ARCHI]
  2660	              Thubert, P., Papadopoulos, G. Z., and L. Berger, "Reliable
  2661	              and Available Wireless Architecture/Framework", Work in
  2662	              Progress, Internet-Draft, draft-ietf-raw-architecture-00,
  2663	              12 July 2021, <https://datatracker.ietf.org/doc/html/
  2664	              draft-ietf-raw-architecture-00>.
  2665	
  2666	   [TURN-ON_RFC8138]
  2667	              Thubert, P., Ed. and L. Zhao, "A Routing Protocol for Low-
  2668	              Power and Lossy Networks (RPL) Destination-Oriented
  2669	              Directed Acyclic Graph (DODAG) Configuration Option for
  2670	              the 6LoWPAN Routing Header", RFC 9035,
  2671	              DOI 10.17487/RFC9035, April 2021,
  2672	              <https://www.rfc-editor.org/info/rfc9035>.
  2673	
  2674	   [RFC8655]  Finn, N., Thubert, P., Varga, B., and J. Farkas,
  2675	              "Deterministic Networking Architecture", RFC 8655,
  2676	              DOI 10.17487/RFC8655, October 2019,
  2677	              <https://www.rfc-editor.org/info/rfc8655>.
  2678	
  2679	   [RFC8025]  Thubert, P., Ed. and R. Cragie, "IPv6 over Low-Power
  2680	              Wireless Personal Area Network (6LoWPAN) Paging Dispatch",
  2681	              RFC 8025, DOI 10.17487/RFC8025, November 2016,
  2682	              <https://www.rfc-editor.org/info/rfc8025>.
  2683	
  2684	
  2685	
  2686	
  2687	
  2688	Thubert, et al.          Expires 28 January 2022               [Page 48]
  2689	
  2690	Internet-Draft               DAO Projection                    July 2021
  2691	
  2692	
  2693	   [RFC8138]  Thubert, P., Ed., Bormann, C., Toutain, L., and R. Cragie,
  2694	              "IPv6 over Low-Power Wireless Personal Area Network
  2695	              (6LoWPAN) Routing Header", RFC 8138, DOI 10.17487/RFC8138,
  2696	              April 2017, <https://www.rfc-editor.org/info/rfc8138>.
  2697	
  2698	   [RFC8505]  Thubert, P., Ed., Nordmark, E., Chakrabarti, S., and C.
  2699	              Perkins, "Registration Extensions for IPv6 over Low-Power
  2700	              Wireless Personal Area Network (6LoWPAN) Neighbor
  2701	              Discovery", RFC 8505, DOI 10.17487/RFC8505, November 2018,
  2702	              <https://www.rfc-editor.org/info/rfc8505>.
  2703	
  2704	   [USEofRPLinfo]
  2705	              Robles, M.I., Richardson, M., and P. Thubert, "Using RPI
  2706	              Option Type, Routing Header for Source Routes, and IPv6-
  2707	              in-IPv6 Encapsulation in the RPL Data Plane", RFC 9008,
  2708	              DOI 10.17487/RFC9008, April 2021,
  2709	              <https://www.rfc-editor.org/info/rfc9008>.
  2710	
  2711	   [PCE]      IETF, "Path Computation Element",
  2712	              <https://datatracker.ietf.org/doc/charter-ietf-pce/>.
  2713	
  2714	Appendix A.  Applications

I wouldn't call this applications, its more like optimiations goals or the like
  2715	
  2716	A.1.  Loose Source Routing

Optimizing packet size vs. routing state via Loose Source Routing
  
  2718	   A RPL implementation operating in a very constrained LLN typically
  2719	   uses the Non-Storing Mode of Operation as represented in Figure 12.
  2720	   In that mode, a RPL node indicates a parent-child relationship to the
  2721	   Root, using a Destination Advertisement Object (DAO) that is unicast
  2722	   from the node directly to the Root, and the Root typically builds a
  2723	   source routed path to a destination down the DODAG by recursively
  2724	   concatenating this information.
  2725	
  2726	              ------+---------
  2727	                    |          Internet
  2728	                    |
  2729	                 +-----+
  2730	                 |     | Border Router
  2731	                 |     |  (RPL Root)
  2732	                 +-----+                      ^     |        |
  2733	                    |                         | DAO | ACK    |
  2734	              o    o   o    o                 |     |        | Strict
  2735	          o o   o  o   o  o  o o   o          |     |        | Source
  2736	         o  o o  o o    o   o   o  o  o       |     |        | Route
  2737	         o   o    o  o     o  o    o  o  o    |     |        |
  2738	        o  o   o  o   o         o   o o       |     v        v
  2739	        o          o             o     o
  2740	                          LLN
  2741	
  2742	
  2743	
  2744	Thubert, et al.          Expires 28 January 2022               [Page 49]
  2745	
  2746	Internet-Draft               DAO Projection                    July 2021
  2747	
  2748	
  2749	                Figure 12: RPL Non-Storing Mode of operation
  2750	
  2751	   Based on the parent-children relationships expressed in the non-
  2752	   storing DAO messages,the Root possesses topological information about
  2753	   the whole network, though this information is limited to the
  2754	   structure of the DODAG for which it is the destination.  A packet
  2755	   that is generated within the domain will always reach the Root, which
  2756	   can then apply a source routing information to reach the destination
  2757	   if the destination is also in the DODAG.  Similarly, a packet coming
  2758	   from the outside of the domain for a destination that is expected to
  2759	   be in a RPL domain reaches the Root.
  2760	
  2761	   It results that the Root, or then some associated centralized
  2762	   computation engine such as a PCE, can determine the amount of packets
  2763	   that reach a destination in the RPL domain, and thus the amount of
  2764	   energy and bandwidth that is wasted for transmission, between itself
  2765	   and the destination, as well as the risk of fragmentation, any
  2766	   potential delays because of a paths longer than necessary (shorter
  2767	   paths exist that would not traverse the Root).
  2768	
  2769	   As a network gets deep, the size of the source routing header that
  2770	   the Root must add to all the downward packets becomes an issue for
  2771	   nodes that are many hops away.  In some use cases, a RPL network
  2772	   forms long lines and a limited amount of well-Targeted routing state
  2773	   would allow to make the source routing operation loose as opposed to
  2774	   strict, and save packet size.

Maybe ad to be more explicit:

And example of such well-targeted routing state is what is needed to reach the
neared loose steerig hops.

  2774	   Limiting the packet size is directly
  2775	   beneficial to the energy budget, but, mostly, it reduces the chances
  2776	   of frame loss and/or packet fragmentation, which is highly
  2777	   detrimental to the LLN operation.  Because the capability to store a
  2778	   routing state in every node is limited, the decision of which route
  2779	   is installed where can only be optimized with a global knowledge of
  2780	   the system, a knowledge that the Root or an associated PCE may
  2781	   possess by means that are outside of the scope of this specification.
  2782	
  2783	   This specification enables to store a Storing Mode state in
  2784	   intermediate routers, which enables to limit the excursion of the
  2785	   source route headers in deep networks.  Once a P-DAO exchange has
  2786	   taken place for a given Target, if the Root operates in non Storing
  2787	   Mode, then it may elide the sequence of routers that is installed in
  2788	   the network from its source route headers to destination that are
  2789	   reachable via that Target, and the source route headers effectively
  2790	   become loose.
  2791	
  2792	
  2793	
  2794	
  2795	
  2796	
  2797	
  2798	
  2799	
  2800	Thubert, et al.          Expires 28 January 2022               [Page 50]
  2801	
  2802	Internet-Draft               DAO Projection                    July 2021
  2803	
  2804	
  2805	A.2.  Transversal Routes
  2806	
  2807	   RPL is optimized for Point-to-Multipoint (P2MP) and Multipoint-to-
  2808	   Point (MP2P), whereby routes are always installed along the RPL DODAG
  2809	   respectively from and towards the DODAG Root.  Transversal Peer to
  2810	   Peer (P2P) routes in a RPL network will generally suffer from some
  2811	   elongated (stretched) path versus the best possible path, since
  2812	   routing between 2 nodes always happens via a common parent, as
  2813	   illustrated in Figure 13:

That figure needs to be improved if anyone who doesn't know what a transversal
route is is expected to understand it. Just paint a picture with the minimum
number of nodes to show a transversal route not part of the DODAG.
Figure 14 is kinda ok., but in 13 its really unclear where traffic flows and why.

Also: Is there any RPL messaging that would allow for the Root to have enough
knowledge about transversal connectibity not part of the DODAG, which it could
then tell the PCE ? If not, then for fairness, it would be good to highlight this as
a gap for the solution.
  
  2815	   *  In Storing Mode, unless the destination is a child of the source,
  2816	      the packets will follow the default route up the DODAG as well.
  2817	      If the destination is in the same DODAG, they will eventually
  2818	      reach a common parent that has a route to the destination; at
  2819	      worse, the common parent may also be the Root.  From that common
  2820	      parent, the packet will follow a path down the DODAG that is
  2821	      optimized for the Objective Function that was used to build the
  2822	      DODAG.
  2823	
  2824	   *  in Non-Storing Mode, all packets routed within the DODAG flow all
  2825	      the way up to the Root of the DODAG.  If the destination is in the
  2826	      same DODAG, the Root must encapsulate the packet to place an RH
  2827	      that has the strict source route information down the DODAG to the
  2828	      destination.  This will be the case even if the destination is
  2829	      relatively close to the source and the Root is relatively far off.
  2830	
  2831	
  2832	                      ------+---------
  2833	                       |          Internet
  2834	                       |
  2835	                    +-----+
  2836	                    |     | Border Router
  2837	                    |     |  (RPL Root)
  2838	                    +-----+
  2839	                       X
  2840	                 ^    v   o    o
  2841	             ^ o   o  v   o  o  o o   o
  2842	            ^  o o  o v    o   o   o  o  o
  2843	            ^   o    o  v     o  o    o  o  o
  2844	           S  o   o  o   D         o   o o
  2845	           o          o             o     o
  2846	                             LLN
  2847	
  2848	       Figure 13: Routing Stretch between S and D via common parent X
  2849	
  2850	   It results that it is often beneficial to enable transversal P2P
  2851	   routes, either if the RPL route presents a stretch from shortest
  2852	   path, or if the new route is engineered with a different objective,
  2853	
  2854	
  2855	
  2856	Thubert, et al.          Expires 28 January 2022               [Page 51]
  2857	
  2858	Internet-Draft               DAO Projection                    July 2021
  2859	
  2860	
  2861	   and that it is even more critical in Non-Storing Mode than it is in
  2862	   Storing Mode, because the routing stretch is wider.  For that reason,
  2863	   earlier work at the IETF introduced the "Reactive Discovery of
  2864	   Point-to-Point Routes in Low Power and Lossy Networks" [RFC6997],
  2865	   which specifies a distributed method for establishing optimized P2P
  2866	   routes.  This draft proposes an alternate based on a centralized
  2867	   route computation.
  2868	
  2869	                 ------+---------
  2870	                       |          Internet
  2871	                       |
  2872	                    +-----+
  2873	                    |     | Border Router
  2874	                    |     |  (RPL Root)
  2875	                    +-----+
  2876	                       |
  2877	                 o    o   o    o
  2878	             o o   o  o   o  o  o o   o
  2879	            o  o o  o o    o   o   o  o  o
  2880	            o   o    o  o     o  o    o  o  o
  2881	           S>>A>>>B>>C>>>D         o   o o
  2882	           o          o             o     o
  2883	                             LLN
  2884	
  2885	                   Figure 14: Projected Transversal Route
  2886	
  2887	   This specification enables to store source-routed or Storing Mode
  2888	   state in intermediate routers, which enables to limit the stretch of
  2889	   a P2P route and maintain the characteristics within a given SLA.  An
  2890	   example of service using this mechanism oculd be a control loop that
  2891	   would be installed in a network that uses classical RPL for
  2892	   asynchronous data collection.  In that case, the P2P path may be
  2893	   installed in a different RPL Instance, with a different objective
  2894	   function.
  2895	
  2896	Authors' Addresses
  2897	
  2898	   Pascal Thubert (editor)
  2899	   Cisco Systems, Inc
  2900	   Building D
  2901	   45 Allee des Ormes - BP1200
  2902	   06254 Mougins - Sophia Antipolis
  2903	   France
  2904	
  2905	   Phone: +33 497 23 26 34
  2906	   Email: pthubert@cisco.com
  2907	
  2908	
  2909	
  2910	
  2911	
  2912	Thubert, et al.          Expires 28 January 2022               [Page 52]
  2913	
  2914	Internet-Draft               DAO Projection                    July 2021
  2915	
  2916	
  2917	   Rahul Arvind Jadhav
  2918	   Huawei Tech
  2919	   Kundalahalli Village, Whitefield,
  2920	   Bangalore 560037
  2921	   Karnataka
  2922	   India
  2923	
  2924	   Phone: +91-080-49160700
  2925	   Email: rahul.ietf@gmail.com
  2926	
  2927	
  2928	   Matthew Gillmore
  2929	   Itron, Inc
  2930	   Building D
  2931	   2111 N Molter Road
  2932	   Liberty Lake,  99019
  2933	   United States
  2934	
  2935	   Phone: +1.800.635.5461
  2936	   Email: matthew.gillmore@itron.com
  2937	
  2938	
  2939	
  2940	
  2941	
  2942	
  2943	
  2944	
  2945	
  2946	
  2947	
  2948	
  2949	
  2950	
  2951	
  2952	
  2953	
  2954	
  2955	
  2956	
  2957	
  2958	
  2959	
  2960	
  2961	
  2962	
  2963	
  2964	
  2965	
  2966	
  2967	
  2968	Thubert, et al.          Expires 28 January 2022               [Page 53]