## 3 Preliminaries and Motivations
### RPL Fundamentals
#### 3.1.2 Routing Establishment  
After setting up the basic topology, the routing mechanism starts to work. RPL routing contains three roles of nodes. LBR is known as a root in the routing perspective. The nodes that only send and receive data are termed leaf nodes, while a router indicates a node that can perform the routing function and data communication. Typically, leaf nodes are located  
Figure 2: An example of the DODAG formation process. LBR broadcasts the initial DIO message at first, then nodes B and C receive, update, and broadcast their own DIO messages. Node D repeats the process, then the related nodes choose their preferred parents. on the edge of DODAG, otherwise they would cut off that network routing. Routers are placed in the middle of DODAG, which is the main constituent of the routing mechanism. Based on the data transmission direction, RPL routing is classified into two types: upward routing and downward routing. In RFC 6550, downward routing is distinguished from two modes: the non-storing mode and storing mode. The downward routing mode is determined by the primitive DIO message broadcast by root. According to standard, once the downward routing mode has been decided, it cannot be changed during the whole DODAG process. In the non-storing mode, every DODAG-joined node unicasts a DAO message to its preferred parent. However, the receiver of DAO is root. During a path, all the middle nodes will not store or process it; they will just forward it to preferred parents until it reaches the root. Then root stores the related information of the DAO original source. In more detail, that related information contains the DAO original source's own and its preferred parent's IPv6 addresses. Based on that information, which is collected from each node, the root produces a source routing header to allow downward routing. For example, in Figure 3b, node E starts to establish its downward routing. It firstly sends DAO to the preferred parent node C, then nodes C and B, one after another, forward that DAO to the LBR node A. Then, the downward route to node E has been established through node A's source routing table. On the contrary, in storing mode, the receiver of DAO is that sender's preferred parent, instead of the root. In this case, the preferred parent will store the related information of incoming DAO message, and then process a new DAO message to its preferred parent. This process will be repeated by each node within the path to the root. Finally, the root receives a DAO message from its children. Each node stores its subtree's routing information, which allows the hop-by-hop routing scheme [34]. Figure 3c illustrates an example of the process in the storing mode to set up a downward routing to node E, as well as the corresponding changes of routing table of each middle node. The combination of all related nodes' routing tables consists of the downward routing path to node E. The detailed content of the DAO message and routing table is explained in the next section, as a comparison between the proposed RPL in this research and the standard RPL. Figure 3: The three different routing schemes in RPL. (**a**) shows the upward routing. In fact, there is no upward routing table stored, every node just sends messages to its preferred parent directly. In (**a**), a virtual upward routing table is shown just in logic; while (**b,c**) describe the downward routing with the non-storing mode and storing mode, respectively. The pattern “#:DAO(E)” means that node E is the originator of that DAOs set, and the logical order of which in the DAOs set is #. In both downward routing cases, only node E’s DAOs sets are shown. Other nodes follow the same way to send and process their own DAOs set.