AD6LoWPAN Stack implements RPL in Non-Storing Mode. In this mode, the routing table entries are maintained only on Border Router.
Let us consider the following network:
Here R1 is trying to join the Border Router (BR). When R1 sends a DAO (Destination Information Object) the BR makes an entry of the R1 into the source route table with the next hop address set as invalid. This is to indicate that the R1 is a direct child and needs no routing in between.
When R2 joins the network and chooses R1 as default router, it sends a DAO (Destination Information Object) to its parent (R1), which in turn forwards the same to the Border Router (BR). Now this BRmakes an entry for the R2 into the source route table with the next hop address set as R1. This indicates that to reach R2, the packet needs to be routed through R1.
AD6LoWPAN implements non-storing (fully source routed) mode of operation. So when BR wants to send a packet to N1 it creates a routing header with all the hops needed to reach N1. This is achieved as following:
When the BR wants to transmits a packet to N1, it searches for the N1’s IP address in the source route table. If it finds the N1’s IP address and adds the same in routing header. If the Next hop address for N1’s source route entry is not invalid, it adds the next hop address in the routing header. In our example the next hop is R3, so the border router looks for the route to reach R3. This is done until an address is found which is immediate child to border router is found (with invalid next hop address).
Now the packet is transmitted to R1 (immediate child of BR), which will forward it to R2 until it reaches N1.
This FAQ was generated from the following discussion: What type of routing (source/non-source) is supported in AD6LoWPAN?