## 4 TB-RPL Mechanism
### Presentation of TB-RPL Mechanism  
TB-RPL slightly modified the original DAO format to fit the proposed functions. The modified DAO format is shown in Figure 4. The _Flags_ is an 8-bit undefined field reserved for future use, which benefits our design exactly. The first bit in that field is used to indicate whether it is a weak DAO message. That is the only modification of the standard DAO format. The components of DAO, as well as the combination of options, are the foundation of the whole process. In the RPL standard, a DAO message format consists of a base object along with several other options. These options include target options (TO) and transit information options (TIO), in which both options can be more than one. Based on the context of standard RPL, three terms are defined explicitly: originator, producer, and forwarder of the DAO. A DAO originator indicates the node to whom  
Figure 4: The modified DAO message format used by TB-RPL. The red mark is the weak flag bit. The fields DODAGID and Parent Address are optional that are marked with *. downward routes are provided. A DAO forwarder refers to the node that works in the non-storing mode and just forwards the DAO initialized by the originator. A DAO producer means the node works in the storing mode and produces the current DAO in the DAOs set initialized by the originator. Among types of DAO message components, the following is the summary of the most important and closely related fields:  
* The \"TO\" field: it contains the IPv6 address of an originator node. That IPv6 address is also called the destination used by the DAO producer to reach the originator; also, the originator node itself can be a DAO producer;
* The \"TIO\" field: it includes the IPv6 address of the direct DAO parent of this DAO producer (in the storing mode)/originator (in the non-storing mode), which is stored in the parent address subfield. For more details, the destination is the ID (IPv6 address) of the originator, to whom downward routes are provided. In standard RPL, this corresponds simply to what is advertised by a node in its DAO messages. In TB-RPL, however, any node on the path to the DODAG root may advertise one of its downstream nodes by generating a DAO containing the ID thereof as a TO. A node that generates such a DAO with a TO for one of its downstream nodes is called a DAO producer. DAOs are treated like any corresponding types of DAOs in standard RPL. First, a DAO initialized by the originator contains: (1) the ID of the originator of the DAOs set (contained in TO, and the child is the originator node itself in this case); (2) the ID of the preferred parent of the originator (contained in TIO). Second, a DAO transmitted through a forwarder contains the same as that of the originator (because it is just a simple forwarding). Third, a DAO made by a producer contains: (1) the ID of the originator of the DAOs set (contained in TO, and the originator is a child of the current forwarder); (2) the ID of the preferred parent of the current producer (contained in TIO). Last, an example of detailed two types of downward routing schemes in RPL is illustrated in Figure 5.  
Figure 5: The detailed downward routing schemes in RPL, while **(a,b)** describe the downward routing with the non-storing mode and the storing mode, respectively. The pattern “#:DAO(X,Y)” (X, Y are placeholders) indicates that the logical order in corresponding DAOs set is number #, while the originator of this downward routing is node X and the preferred parent of originator/current producer is node Y. Specifically, in the non-storing mode, node A generates a route table in the primitive form, where Parent is the preferred parent of Destination. When node A performs source routing, a source routing table will be logically produced as shown. In Figure 5a, node E is the originator, nodes C and B are forwarders, and node A is the root.