Skip to main content

Appendix A. Example Operation

This appendix provides some examples to illustrate the dissemination of addressing information and prefixes with RPL. The examples depict information being distributed with PIOs and RIOs and the use of DIO and DAO messages. Note that this appendix is not normative, and that the specific details of a RPL addressing plan and autoconfiguration may vary according to specific implementations. RPL merely provides a vehicle for disseminating information that may be built upon and used by other mechanisms.

Note that these examples illustrate use of address autoconfiguration schemes supported by information distributed within RPL. However, if an implementation includes another address autoconfiguration scheme, RPL nodes might be configured not to set the 'A' flag in PIO options, though the PIO can still be used to distribute prefix and addressing information.

A.1. Example Operation in Storing Mode with Node-Owned Prefixes

Figure 32 illustrates the logical addressing architecture of a simple RPL network operating in Storing mode. In this example, each Node, A, B, C, and D, owns its own prefix and makes that prefix available for address autoconfiguration by on-link devices. (This is conveyed by setting the 'A' flag and the 'L' flag in the PIO of the DIO messages). Node A owns the prefix A::/64, Node B owns B::/64, and so on. Node B autoconfigures an on-link address with respect to Node A, A::B. Nodes C and D similarly autoconfigure on-link addresses from Node B's prefix, B::C and B::D, respectively. Nodes have the option of setting the 'R' flag and publishing their address within the Prefix field of the PIO.

                              +-------------+
| Root |
| |
| Node A |
| |
| A::A |
+------+------+
|
|
|
+------+------+
| A::B |
| |
| Node B |
| |
| B::B |
+------+------+
|
|
|
.--------------+--------------.
/ \
/ \
+------+------+ +------+------+
| B::C | | B::D |
| | | |
| Node C | | Node D |
| | | |
| C::C | | D::D |
+-------------+ +-------------+


Figure 32: Storing Mode with Node-Owned Prefixes

A.1.1. DIO Messages and PIO

Node A, for example, will send DIO messages with a PIO as follows:

  • 'A' flag: Set
  • 'L' flag: Set
  • 'R' flag: Clear
  • Prefix Length: 64
  • Prefix: A::

Node B, for example, will send DIO messages with a PIO as follows:

  • 'A' flag: Set
  • 'L' flag: Set
  • 'R' flag: Set
  • Prefix Length: 64
  • Prefix: B::B

Node C, for example, will send DIO messages with a PIO as follows:

  • 'A' flag: Set
  • 'L' flag: Set
  • 'R' flag: Clear
  • Prefix Length: 64
  • Prefix: C::

Node D, for example, will send DIO messages with a PIO as follows:

  • 'A' flag: Set
  • 'L' flag: Set
  • 'R' flag: Set
  • Prefix Length: 64
  • Prefix: D::D

A.1.2. DAO Messages

Node B will send DAO messages to Node A with the following information:

  • Target B::/64
  • Target C::/64
  • Target D::/64

Node C will send DAO messages to Node B with the following information:

  • Target C::/64

Node D will send DAO messages to Node B with the following information:

  • Target D::/64

A.1.3. Routing Information Base

Node A will conceptually collect the following information into its Routing Information Base (RIB):

  • A::/64 connected
  • B::/64 via B's link local
  • C::/64 via B's link local
  • D::/64 via B's link local

Node B will conceptually collect the following information into its RIB:

  • ::/0 via A's link local
  • B::/64 connected
  • C::/64 via C's link local
  • D::/64 via D's link local

Node C will conceptually collect the following information into its RIB:

  • ::/0 via B's link local
  • C::/64 connected

Node D will conceptually collect the following information into its RIB:

  • ::/0 via B's link local
  • D::/64 connected

A.2. Example Operation in Storing Mode with Subnet-Wide Prefix

Figure 33 illustrates the logical addressing architecture of a simple RPL network operating in Storing mode. In this example, the root Node A sources a prefix that is used for address autoconfiguration over the entire RPL subnet. (This is conveyed by setting the 'A' flag and clearing the 'L' flag in the PIO of the DIO messages.) Nodes A, B, C, and D all autoconfigure to the prefix A::/64. Nodes have the option of setting the 'R' flag and publishing their address within the Prefix field of the PIO.

                              +-------------+
| Root |
| |
| Node A |
| A::A |
| |
+------+------+
|
|
|
+------+------+
| |
| Node B |
| A::B |
| |
+------+------+
|
|
.--------------+--------------.
/ \
/ \
+------+------+ +------+------+
| | | |
| Node C | | Node D |
| A::C | | A::D |
| | | |
+-------------+ +-------------+

Figure 33: Storing Mode with Subnet-Wide Prefix

A.2.1. DIO Messages and PIO

Node A, for example, will send DIO messages with a PIO as follows:

  • 'A' flag: Set
  • 'L' flag: Clear
  • 'R' flag: Clear
  • Prefix Length: 64
  • Prefix: A::

Node B, for example, will send DIO messages with a PIO as follows:

  • 'A' flag: Set
  • 'L' flag: Clear
  • 'R' flag: Set
  • Prefix Length: 64
  • Prefix: A::B

Node C, for example, will send DIO messages with a PIO as follows:

  • 'A' flag: Set
  • 'L' flag: Clear
  • 'R' flag: Clear
  • Prefix Length: 64
  • Prefix: A::

Node D, for example, will send DIO messages with a PIO as follows:

  • 'A' flag: Set
  • 'L' flag: Clear
  • 'R' flag: Set
  • Prefix Length: 64
  • Prefix: A::D

A.2.2. DAO Messages

Node B will send DAO messages to Node A with the following information:

  • Target A::B/128
  • Target A::C/128
  • Target A::D/128

Node C will send DAO messages to Node B with the following information:

  • Target A::C/128

Node D will send DAO messages to Node B with the following information:

  • Target A::D/128

A.2.3. Routing Information Base

Node A will conceptually collect the following information into its RIB:

  • A::A/128 connected
  • A::B/128 via B's link local
  • A::C/128 via B's link local
  • A::D/128 via B's link local

Node B will conceptually collect the following information into its RIB:

  • ::/0 via A's link local
  • A::B/128 connected
  • A::C/128 via C's link local
  • A::D/128 via D's link local

Node C will conceptually collect the following information into its RIB:

  • ::/0 via B's link local
  • A::C/128 connected

Node D will conceptually collect the following information into its RIB:

  • ::/0 via B's link local
  • A::D/128 connected

A.3. Example Operation in Non-Storing Mode with Node-Owned Prefixes

Figure 34 illustrates the logical addressing architecture of a simple RPL network operating in Non-Storing mode. In this example, each Node, A, B, C, and D, owns its own prefix, and makes that prefix available for address autoconfiguration by on-link devices. (This is conveyed by setting the 'A' flag and the 'L' flag in the PIO of the DIO messages.) Node A owns the prefix A::/64, Node B owns B::/64, and so on. Node B autoconfigures an on-link address with respect to Node A, A::B. Nodes C and D similarly autoconfigure on-link addresses from Node B's prefix, B::C and B::D, respectively. Nodes have the option of setting the 'R' flag and publishing their address within the Prefix field of the PIO.

                              +-------------+
| Root |
| |
| Node A |
| |
| A::A |
+------+------+
|
|
|
+------+------+
| A::B |
| |
| Node B |
| |
| B::B |
+------+------+
|
|
|
.--------------+--------------.
/ \
/ \
+------+------+ +------+------+
| B::C | | B::D |
| | | |
| Node C | | Node D |
| | | |
| C::C | | D::D |
+-------------+ +-------------+

Figure 34: Non-Storing Mode with Node-Owned Prefixes

A.3.1. DIO Messages and PIO

The PIO contained in the DIO messages in the Non-Storing mode with node-owned prefixes can be considered to be identical to those in the Storing mode with node-owned prefixes case (Appendix A.1.1).

A.3.2. DAO Messages

Node B will send DAO messages to Node A with the following information:

  • Target B::/64, Transit A::B

Node C will send DAO messages to Node A with the following information:

  • Target C::/64, Transit B::C

Node D will send DAO messages to Node A with the following information:

  • Target D::/64, Transit B::D

A.3.3. Routing Information Base

Node A will conceptually collect the following information into its RIB. Note that Node A has enough information to construct source routes by doing recursive lookups into the RIB:

  • A::/64 connected
  • B::/64 via A::B
  • C::/64 via B::C
  • D::/64 via B::D

Node B will conceptually collect the following information into its RIB:

  • ::/0 via A's link local
  • B::/64 connected

Node C will conceptually collect the following information into its RIB:

  • ::/0 via B's link local
  • C::/64 connected

Node D will conceptually collect the following information into its RIB:

  • ::/0 via B's link local
  • D::/64 connected

A.4. Example Operation in Non-Storing Mode with Subnet-Wide Prefix

Figure 35 illustrates the logical addressing architecture of a simple RPL network operating in Non-Storing mode. In this example, the root Node A sources a prefix that is used for address autoconfiguration over the entire RPL subnet. (This is conveyed by setting the 'A' flag and clearing the 'L' flag in the PIO of the DIO messages.) Nodes A, B, C, and D all autoconfigure to the prefix A::/64. Nodes must set the 'R' flag and publish their address within the Prefix field of the PIO, in order to inform their children which address to use in the transit option.

                              +-------------+
| Root |
| |
| Node A |
| A::A |
| |
+------+------+
|
|
|
+------+------+
| |
| Node B |
| A::B |
| |
+------+------+
|
|
.--------------+--------------.
/ \
/ \
+------+------+ +------+------+
| | | |
| Node C | | Node D |
| A::C | | A::D |
| | | |
+-------------+ +-------------+

Figure 35: Non-Storing Mode with Subnet-Wide Prefix

A.4.1. DIO Messages and PIO

Node A, for example, will send DIO messages with a PIO as follows:

  • 'A' flag: Set
  • 'L' flag: Clear
  • 'R' flag: Set
  • Prefix Length: 64
  • Prefix: A::A

Node B, for example, will send DIO messages with a PIO as follows:

  • 'A' flag: Set
  • 'L' flag: Clear
  • 'R' flag: Set
  • Prefix Length: 64
  • Prefix: A::B

Node C, for example, will send DIO messages with a PIO as follows:

  • 'A' flag: Set
  • 'L' flag: Clear
  • 'R' flag: Set
  • Prefix Length: 64
  • Prefix: A::C

Node D, for example, will send DIO messages with a PIO as follows:

  • 'A' flag: Set
  • 'L' flag: Clear
  • 'R' flag: Set
  • Prefix Length: 64
  • Prefix: A::D

A.4.2. DAO Messages

Node B will send DAO messages to Node A with the following information:

  • Target A::B/128, Transit A::A

Node C will send DAO messages to Node A with the following information:

  • Target A::C/128, Transit A::B

Node D will send DAO messages to Node A with the following information:

  • Target A::D/128, Transit A::B

A.4.3. Routing Information Base

Node A will conceptually collect the following information into its RIB. Note that Node A has enough information to construct source routes by doing recursive lookups into the RIB:

  • A::A/128 connected
  • A::B/128 via A::A
  • A::C/128 via A::B
  • A::D/128 via A::B

Node B will conceptually collect the following information into its RIB:

  • ::/0 via A's link local
  • A::B/128 connected

Node C will conceptually collect the following information into its RIB:

  • ::/0 via B's link local
  • A::C/128 connected

Node D will conceptually collect the following information into its RIB:

  • ::/0 via B's link local
  • A::D/128 connected

A.5. Example with External Prefixes

Consider the simple network illustrated in Figure 36. In this example, there are a group of routers participating in a RPL network: a DODAG root, Nodes A, Y, and Z. The DODAG root and Node Z also have connectivity to different external network domains (i.e., external to the RPL network). Note that those external networks could be RPL networks or another type of network altogether.

                          RPL Network        +-------------------+
RPL::/64 | |
| External |
[RPL::Root] (Root)----------+ Prefix |
| | EXT_1::/64 |
| | |
| +-------------------+
[RPL::A] (A)
:
:
:
[RPL::Y] (Y)
| +-------------------+
| | |
| | External |
[RPL::Z] (Z)------------+ Prefix |
: | EXT_2::/64 |
: | |
: +-------------------+

Figure 36: Simple Network Example

In this example, the DODAG root makes a prefix available to the RPL subnet for address autoconfiguration. Here, the entire RPL subnet uses that same prefix, RPL::/64, for address autoconfiguration, though in other implementations more complex/hybrid schemes could be employed.

The DODAG root has connectivity to an external (with respect to that RPL network) prefix EXT_1::/64. The DODAG root may have learned of connectivity to this prefix, for example, via explicit configuration or IPv6 ND on a non-RPL interface. The DODAG root is configured to announce information on the connectivity to this prefix.

Similarly, Node Z has connectivity to an external prefix EXT_2::/64. Node Z also has a sub-DODAG underneath of it.

  1. The DODAG root adds a RIO to its DIO messages. The RIO contains the external prefix EXT_1::/64. This information may be repeated in the DIO messages emitted by the other nodes within the DODAG. Thus, the reachability to the prefix EXT_1::/64 is disseminated down the DODAG.

  2. Node Z may advertise reachability to the Target network EXT_2::/64 by sending DAO messages using EXT_2::/64 as a Target in the Target option and itself (Node Z) as a parent in the Transit Information option. (In Storing mode, that Transit Information option does not need to contain the address of Node Z). A non-storing root then becomes aware of the 1-hop link (Node Z -- EXT_2::/64) for use in constructing source routes. Node Z may additionally advertise its reachability to EXT_2::/64 to nodes in its sub-DODAG by sending DIO messages with a PIO, with the 'A' flag cleared.