rfc9866v2.txt | rfc9866.txt | |||
---|---|---|---|---|
skipping to change at line 156 ¶ | skipping to change at line 156 ¶ | |||
floating DODAG. In any case, however, achieving this state for all | floating DODAG. In any case, however, achieving this state for all | |||
nodes is slow, can generate heavy traffic, and is difficult to | nodes is slow, can generate heavy traffic, and is difficult to | |||
implement correctly [Iwanicki16] [Paszkowska19] [Ciolkosz19]. | implement correctly [Iwanicki16] [Paszkowska19] [Ciolkosz19]. | |||
To start with, tearing down all DODAG paths requires each of the dead | To start with, tearing down all DODAG paths requires each of the dead | |||
LBR's neighbors to detect that its link with the LBR is no longer up. | LBR's neighbors to detect that its link with the LBR is no longer up. | |||
Otherwise, any of the neighbors unaware of this fact can keep | Otherwise, any of the neighbors unaware of this fact can keep | |||
advertising a finite Rank and can thus be other nodes' parent or | advertising a finite Rank and can thus be other nodes' parent or | |||
ancestor in the DODAG; such nodes will incorrectly believe they have | ancestor in the DODAG; such nodes will incorrectly believe they have | |||
a valid path to the dead LBR. Detecting a crash of a link by a node | a valid path to the dead LBR. Detecting a crash of a link by a node | |||
normally happens when the node has sufficiently observed many | normally happens when the node has observed a sufficient number of | |||
forwarding failures over the link. Therefore, considering the low- | forwarding failures over the link. Therefore, considering the low- | |||
data-rate applications of LLNs, the period from the crash to the | data-rate applications of LLNs, the period from the crash to the | |||
moment of eliminating the last link to the dead LBR from the DODAG | moment of eliminating the last link to the dead LBR from the DODAG | |||
may be long. Subsequently, learning by all nodes that none of their | may be long. Subsequently, learning by all nodes that none of their | |||
links can form any path leading to the dead LBR also adds latency, | links can form any path leading to the dead LBR also adds latency, | |||
partly due to parent changes that the nodes independently perform in | partly due to parent changes that the nodes independently perform in | |||
attempts to repair their broken paths locally. Since a non-LBR node | attempts to repair their broken paths locally. Since a non-LBR node | |||
has only local knowledge of the network, potentially inconsistent | has only local knowledge of the network, potentially inconsistent | |||
with that of other nodes, such parent changes often produce paths | with that of other nodes, such parent changes often produce paths | |||
containing loops, which have to be broken before all nodes can | containing loops, which have to be broken before all nodes can | |||
skipping to change at line 325 ¶ | skipping to change at line 325 ¶ | |||
| +---------------------------+ 5 | | | +---------------------------+ 5 | | |||
+--------------------------------------------------+ | +--------------------------------------------------+ | |||
Figure 1: RNFD States and Transitions | Figure 1: RNFD States and Transitions | |||
To begin with, when any node joins a DODAG Version, the DODAG root | To begin with, when any node joins a DODAG Version, the DODAG root | |||
must appear alive, so the node initializes RNFD with its LORS equal | must appear alive, so the node initializes RNFD with its LORS equal | |||
to "UP". For a properly working DODAG root, the node remains in | to "UP". For a properly working DODAG root, the node remains in | |||
state "UP". | state "UP". | |||
However, when a node (acting as a Sentinel) starts suspecting that | However, when a node acting as a Sentinel starts suspecting that the | |||
the root may have crashed, it changes its LORS to "SUSPECTED DOWN" | root may have crashed, it changes its LORS to "SUSPECTED DOWN" | |||
(transition 1 in Figure 1). The transition from "UP" to "SUSPECTED | (transition 1 in Figure 1). The transition from "UP" to "SUSPECTED | |||
DOWN" can happen based on the node's observations at either the data | DOWN" can happen based on the node's observations at either the data | |||
plane (for instance, link-layer triggers about missing hop-by-hop | plane (e.g., link-layer triggers about missing hop-by-hop | |||
acknowledgments for packets forwarded over the node's link to the | acknowledgments for packets forwarded over the node's link to the | |||
root) or at the control plane (for example, a significant growth in | root) or at the control plane (e.g., a significant growth in the | |||
the number of Sentinels already suspecting the root to be dead). In | number of Sentinels already suspecting the root to be dead). In | |||
state "SUSPECTED DOWN", the Sentinel node may verify its suspicion | state "SUSPECTED DOWN", the Sentinel node may verify its suspicion | |||
and/or inform other nodes about the suspicion. When this has been | and/or inform other nodes about the suspicion. When this has been | |||
done, it changes its LORS to "LOCALLY DOWN" (transition 2a). In some | done, it changes its LORS to "LOCALLY DOWN" (transition 2a). In some | |||
cases, the verification need not be performed, and as an | cases, the verification need not be performed, and as an | |||
optimization, a direct transition from "UP" to "LOCALLY DOWN" | optimization, a direct transition from "UP" to "LOCALLY DOWN" | |||
(transition 2b) can be done instead. | (transition 2b) can be done instead. | |||
If a sufficient number of Sentinels have their LORS equal to "LOCALLY | If a sufficient number of Sentinels have their LORS equal to "LOCALLY | |||
DOWN", all nodes (Sentinels and Acceptors) consent globally that the | DOWN", all nodes (Sentinels and Acceptors) consent globally that the | |||
DODAG root must have crashed and set their LORS to "GLOBALLY DOWN", | DODAG root must have crashed and set their LORS to "GLOBALLY DOWN", | |||
End of changes. 4 change blocks. | ||||
6 lines changed or deleted | 6 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |