[Roll] Review of draft-ietf-roll-enrollment-priority-05
Konrad Iwanicki <iwanicki@mimuw.edu.pl> Wed, 11 August 2021 21:24 UTC
Return-Path: <iwanicki@mimuw.edu.pl>
X-Original-To: roll@ietfa.amsl.com
Delivered-To: roll@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6F3333A25AA; Wed, 11 Aug 2021 14:24:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id qJ_xwjNqjiFr; Wed, 11 Aug 2021 14:24:46 -0700 (PDT)
Received: from mail.mimuw.edu.pl (mail.mimuw.edu.pl [IPv6:2001:6a0:5001::4]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 215A33A25A8; Wed, 11 Aug 2021 14:24:45 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1]) by duch.mimuw.edu.pl (Postfix) with ESMTP id F2CD36009F7ED; Wed, 11 Aug 2021 23:24:40 +0200 (CEST)
X-Virus-Scanned: amavisd-new at mimuw.edu.pl
Received: from duch.mimuw.edu.pl ([127.0.0.1]) by localhost (mail.mimuw.edu.pl [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id Tl1ib8m0Y3sI; Wed, 11 Aug 2021 23:24:38 +0200 (CEST)
Received: from Konrads-MacBook-Pro.local (unknown [IPv6:2a02:a311:813e:880:f03f:7c51:a3e1:8bbd]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by duch.mimuw.edu.pl (Postfix) with ESMTPSA; Wed, 11 Aug 2021 23:24:37 +0200 (CEST)
From: Konrad Iwanicki <iwanicki@mimuw.edu.pl>
To: Routing Over Low power and Lossy networks <roll@ietf.org>
Cc: roll-chairs <roll-chairs@ietf.org>
References: <f7a504ac-764d-09e9-d969-067e6a21646a@mimuw.edu.pl> <CAO0Djp1Dmj-CSp+GvGrRh+NmL70PekSLLjsnbfKTGHFPOurYXQ@mail.gmail.com> <CO1PR11MB48812CDAA6A2E3DC818FC0C8D8F39@CO1PR11MB4881.namprd11.prod.outlook.com>
Message-ID: <9b7eabc7-e521-bf82-4087-c65e08fc9fc0@mimuw.edu.pl>
Date: Wed, 11 Aug 2021 23:24:36 +0200
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:78.0) Gecko/20100101 Thunderbird/78.12.0
MIME-Version: 1.0
In-Reply-To: <CO1PR11MB48812CDAA6A2E3DC818FC0C8D8F39@CO1PR11MB4881.namprd11.prod.outlook.com>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Language: en-US
Content-Transfer-Encoding: 7bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/roll/UO_V90wFpWFmeVLg2w1fPZwJXCU>
Subject: [Roll] Review of draft-ietf-roll-enrollment-priority-05
X-BeenThere: roll@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Routing Over Low power and Lossy networks <roll.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/roll>, <mailto:roll-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/roll/>
List-Post: <mailto:roll@ietf.org>
List-Help: <mailto:roll-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/roll>, <mailto:roll-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 11 Aug 2021 21:24:50 -0000
Dear Rahul, Pascal, Michael, and all,
As promised, I am sending my remarks about the enrollment priority
draft, version 05, so as to point out the issues I have with the draft,
thereby providing some starting point for discussion at the August
interim. Sorry for the text being rather lengthy, but I wanted to
highlight all major issues that came to my mind. I am not providing any
editorial changes, because those below are more important at this point.
PROTOCOL OPERATION WRT. FIELD MIN PRIORITY
Based on your comments on my previous review, I gather that there are
two different ideas on how the protocol should work, clarifying which
was also the reason for the questions I put in my previous review (of
the draft version 04).
Unless noted otherwise, the text below refers only to the management of
field min priority. In other words, let us completely ignore field
DODAG_Size for a while. We will return to it later.
IDEA 1 (GLOBAL)
The first idea on how the min priority field should be managed is
supported by Pascal, and I will refer to it as GLOBAL. Essentially, it
works as follows:
1. The min priority values are generated solely by the DODAG root node;
other nodes are not allowed to change these values.
2. A node extracts the value from a received option, stores it locally,
and uses it as a base when computing the proxy priority for EBs, which
may also account for the node's local constraints (e.g., load); however,
per 1., only the originally received (and stored) value of min priority
is used in the options in DIOs sent by the node.
3. An option received from ANY node can be used as the source of the min
priority value but the receiving node has to be able to judge whether
the received value is fresher than the one it already stores locally.
4. To this end, a lollipop sequence counter that I proposed, let's call
it OSN, can be used. I suggested adding it to the option, but others
suggested using some existing counters. This is immaterial for
now---more on that later; instead, let us just assume that we have OSN
mapped to some counter.
5. In any case, the root node bumps its OSN when it produces a new value
of min priority. (This condition can also be relaxed but I'd rather not
make this text longer. We can discuss this during the interim.)
6. Whenever a node receives an option with a value of OSN that is
greater than its own local value of OSN, it adopts the received value of
OSN and the received value of min priority as its local ones. Those
values will then be sent in the options in DIOs transmitted by the node.
This is a really simple and robust solution. Its main advantage is that
there are normally many paths that allow a node to learn the value of
min priority, which alleviates the problem of nodes that do not support
the option or nodes that experience (temporal) down times, overload, and
the like. The problem of the different paths being asynchronous, and
hence offering different propagation times for the values of min
priority, is in turn solved by OSN: the counter unambiguously
discriminates between fresher and older values. The effect is that as
long as each node has at least one neighbor (not necessarily a parent)
that supports the option, the min priory values will be eventually
consistent globally.
In contrast, the main drawback of this solution is that the value of min
priority is global. In particular, it does not take into account any
heterogeneity in the load, available resources, etc. in different
regions of the DODAG.
IDEA 2 (FLEXIBLE)
Michael and Rahul thus advocate an alternative idea, let's call it
FLEXIBLE. In this approach, it is possible to adjust the value of min
priority per node by incrementing the base value the node has originally
received. Although the new version (05) of the draft does not describe
this in sufficient detail, from Michael's comments I gather that the
envisioned solution is something as follows:
1. The root sets a value of min priority in the option in its DIOs.
2. A non-root node obtains the value of its min priority only from an
option received from its preferred parent and stores this value locally.
It can then only increase the local value, for instance, accounting for
its local constraints, before putting it into EBs and the options
transmitted in its own DIOs to its children. In other words, the value
of min priority can only grow at each hop, reflecting the local
constraints of the nodes on the path upward to the root.
3. Since for each node, there is only one source of min priority values
(its preferred parent), there are no conflicts. Consequently, in theory,
we could omit OSN, as is the case in the current version of the draft.
(This approach is wrong, as we will see shortly.)
4. To be compatible with the DIO processing rules in RFC 6550, a node
receiving an option with min priority from any neighbor performs the
processing according to the following rule (currently missing in the
draft): "When processing the option, a node ignores the value of min
priority in the option if the option does not come from the node's
preferred parent." (This rule is again wrong, as we will see shortly.)
5. If the node's preferred parent does not support the option, the node
assumes a default value (0x40) for its local min priority. This value,
potentially increased to account for the node's local constraints, is
put in the options in the DIOs transmitted by the node to its children.
The main advantage of this approach is that the min priority value can
be adjusted in a DODAG subtree. The approach thus offers much more
flexibility in configuring the values: an entire subtree that is
overloaded or experiences other problems can adopt a higher min priority
values so as to deflect enrollment traffic to other parts of the DODAG.
A disadvantage is in turn that the approach precisely defines the path
along which a node has to learn its value.
PROBLEMS WITH IDEA 2 (AND A POSSIBLE SOLUTION)
However, because of the existence of just a single path for propagating
min priority value to each node, FLEXIBLE, as presented hitherto, is wrong.
To explain, an important use-case, mentioned also in the present version
of that draft, is disabling enrollment in an entire DODAG. This is done
by the DODAG root setting its min priority value to 0x7f. Now suppose
the DODAG root has done this and that there exists a node, let's call it
X, in the DODAG that does not support the option. The children of node X
would thus adopt values 0x40+delta (depending on their local
constraints) as their min priority values. Since 0x40+delta need not be
equal to 0x7f, an entire subtree of node X need not disable enrollment,
which is invalid.
In general, in FLEXIBLE, nodes that do not support the option are a
major problem, as their ancestors disregard any decisions of upstream
nodes, including the root. The problem can be solved as follows.
- We use multiple paths for propagating min priority information but one
of them is preferred by each node (the one through the node's preferred
parent).
- To ensure consistency, we do employ the aforementioned OSN. Again, for
simplicity let's assume that it is incremented whenever the DODAG root
produces a new value of min priority but, like in GLOBAL, this condition
can be relaxed.
- There is no default value (0x40) a node ever adopts for its min
priority. (Apart perhaps from the value accompanying the initial OSN value.)
- Each node locally stores:
* the last value of OSN
* the accompanying value of min priority
* a bit, let's call it PB, indicating whether the above values come
from the node's preferred parent (1) or not (0)
- In contrast, to the present version of the draft, we maintain the
following invariant:
"For a given OSN value, the value of min priority at any node is
greater than or equal to the value of min priority at the root node."
This is to ensure that no node, including the children of a node that
does not support the option, is able to override the root's setting of
min priority down for a given value of OSN. In particular, the invariant
ensures that if the root disables enrollment globally, then so will all
nodes (under the same assumptions on connectivity as in GLOBAL).
Given these points, the specific rules for processing the option are as
follows:
1. If a node receives an option with a greater value of OSN than its
local one, then eventually it adopts the received values of OSN and min
priority as local ones, and sets PB appropriately (i.e., to 1 if the
option is received from its preferred parent or 0 otherwise). It does
not have to do this immediately. In particular, it may wait for a while
to receive the option with the greater OSN from its preferred parent.
Nevertheless, eventually it MUST adopt the greater OSN (and an
accompanying min priority).
2. If a node receives an option with the same value of OSN as its local
one then:
a. if the option is received from its preferred parent, then it
adopts the value of min priority from the option and sets PB to 1.
b. otherwise,
i. if its local PB is 1, then it ignores the received option;
ii. if its local PB is 0, then it sets its local min priority to
the minimum of its local min priority and the value of min priority from
the option
3. If a node receives an option with a smaller value of OSN than its
local one, then it ignores the received option.
4. If a node changes its preferred parent, then it sets its PB to 0.
5. If a node sends the option in its own DIO, then it puts in the option
its local value of min priority or a greater value (e.g., taking into
account the node's local constraints). It can never sent the option with
a lower value of min priority than its local one.
This should do what I would expect from FLEXIBLE. However, I wrote this
up in a haste, so it would be great if somebody verified the above
algorithm.
As a side note, the algorithm suggests that FLEXIBLE is indeed a bit
more involved than GLOBAL, so a decision should be made, which of them
to put in the draft.
FURTHER ISSUES UNCOVERED IN THE DRAFT OR TO BE DISCUSSED AT THE INTERIM
Irrespective of the decision whether to settle down on GLOBAL or
FLEXIBLE, I believe that the following issues also have to be covered in
the draft (and discussed during the interim).
1. Should DODAG_Size be part of the option?
I mentioned this in my previous review and there has been some
discussion already. I would just like to add one observation to that
discussion: whereas min priority can follow either GLOBAL or FLEXIBLE, I
believe there is an agreement that DODAG_Size should follow GLOBAL when
it comes to propagating its value in the network. This information may
influence our decision on which of the approaches to adopt for min
priority and whether to put DODAG_Size in the option at all or move it
to another one.
2. Which counter to use as OSN?
I proposed a dedicated counter, which I believe is a clean solution.
However, there are other possibilities. I also believe that we agreed
that DTSN from DIO base is not the best choice. In my view, nor is
DODAGVersion but we can discuss this.
3. How do changes to min priority (and OSN) affect DIO Trickle timers?
This is currently not covered in the draft. However, I would imagine
that some decisions regarding min priority should be propagated fast in
a DODAG, and hence require Trickle timer resets. In particular, I would
expect that disabling enrollment globally should be disseminated as soon
as possible. Therefore, if I were to suggest anything, I would say that
a change by a node of min priority to the maximal value (0x7f) from a
lower one MUST entail a Trickle timer reset. In turn, a change from the
maximal value to a smaller one MAY/SHOULD entail a Trickle timer reset.
Other changes are, at least in my view, not that important, but this can
and should be discussed.
4. How does a (temporal) lack of a preferred parent affect the proxy
priority of the node in EBs (and in general, the node's behavior)?
This is also ignored in the draft but it may happen that a node does not
have any preferred parent for a while. In this case, it is unable to
handle any enrollments. What should it do? I would expect that it would
advertise the maximal proxy priority in EBs. However, should it also
modify its local min priority? I would probably be against.
Plus there are smaller issues I mentioned earlier, and I probably forgot
something. In any case, sorry again for such long a text but I hope it
may help during the interim.
Best,
--
- Konrad Iwanicki.
- [Roll] Review of draft-ietf-roll-enrollment-prior… Konrad Iwanicki
- Re: [Roll] Review of draft-ietf-roll-enrollment-p… Rahul Jadhav
- Re: [Roll] Review of draft-ietf-roll-enrollment-p… Pascal Thubert (pthubert)
- Re: [Roll] Review of draft-ietf-roll-enrollment-p… Pascal Thubert (pthubert)
- Re: [Roll] Review of draft-ietf-roll-enrollment-p… Michael Richardson
- Re: [Roll] Review of draft-ietf-roll-enrollment-p… Konrad Iwanicki
- Re: [Roll] Review of draft-ietf-roll-enrollment-p… Pascal Thubert (pthubert)
- Re: [Roll] Review of draft-ietf-roll-enrollment-p… Konrad Iwanicki
- Re: [Roll] Review of draft-ietf-roll-enrollment-p… Pascal Thubert (pthubert)
- Re: [Roll] Review of draft-ietf-roll-enrollment-p… Michael Richardson
- Re: [Roll] Review of draft-ietf-roll-enrollment-p… Michael Richardson
- Re: [Roll] Review of draft-ietf-roll-enrollment-p… Michael Richardson
- Re: [Roll] Review of draft-ietf-roll-enrollment-p… Pascal Thubert (pthubert)
- Re: [Roll] Review of draft-ietf-roll-enrollment-p… Pascal Thubert (pthubert)
- Re: [Roll] Review of draft-ietf-roll-enrollment-p… Konrad Iwanicki
- Re: [Roll] Review of draft-ietf-roll-enrollment-p… Michael Richardson
- Re: [Roll] Review of draft-ietf-roll-enrollment-p… Pascal Thubert (pthubert)
- [Roll] Review of draft-ietf-roll-enrollment-prior… Konrad Iwanicki
- Re: [Roll] Review of draft-ietf-roll-enrollment-p… Pascal Thubert (pthubert)
- [Roll] Review of draft-ietf-roll-aodv-rpl-12 Konrad Iwanicki
- Re: [Roll] Review of draft-ietf-roll-aodv-rpl-12 Charles Perkins
- Re: [Roll] Review of draft-ietf-roll-aodv-rpl-12 Konrad Iwanicki