# Routing Protocols for Low Power and Lossy Networks in Internet of Things Applications
## 3 Routing Protocols for Low-Power and Lossy Networks  
### Initial Approaches  
Following the presentation of the 6 LoWPAN problem statement and goals through RFC 4919 [10], several routing protocols were proposed. The initial intention of the solutions was to offer routing solutions to provide multihop communication among IEEE 802.15.4 devices with support to IPv6. The main protocols, which are published, mainly, by means of Internet-Drafts (I-D), are briefly introduced in the following paragraphs. The Hierarchical routing for 6 LoWPAN (Hi-Low) is a hierarchical-based routing protocol that proposes the use of the dynamic address assignment scheme [44]. The basic idea of Hi-Low is to create a routing tree in which each node has a unique short address with 16 bits. In the Hi-Low topology, the network nodes are divided into three types: coordinator, router (parent), or end device (child). Each node of the network maintains a table with information about its neighbors such as its short address, device type, depth, and others. In the Hi-Low operation, a node initially seeks and tries to join an already existent network. If it finds a node that is already in the network, the node that is already part of the network should define a short address to the new node. If the network is not found, the node assumes the function of coordinator, creates a new network, and defines its short address as zero. A parent (or coordinator) node must define the address of its children nodes using Equation (1), in which \(MC\) is a parameter that defines the maximum number of children that a node can have and \(addressParent\) is the address of the parent. Hi-Low nodes frequently send beacon messages to update the neighboring information in the table. In the routing operation, a Hi-Low node uses the destination address to calculate whether the message should be sent to its parent or its child. \[childAddress=(MC*addressParent)+1 \tag{1}\]  
The 6 LoWPAN Ad hoc On-demand Distance vector routing (LOAD) is a simplified version of the well-known AODV developed for 6 LoWPAN [45]. During the protocol functioning, it creates a mesh network topology without considering the IPv6 network layer. LOAD supports both the EUI-64 address and 16-bit short address. Seeking to reduce the size of control packets, LOAD does not use destination sequence numbers. Thus, to avoid loops, only the destination of an RREQ (Route Request) message can create an RREP (Route Reply) as a response. Although not mandatory, a LOAD node may use local repair when it detects a link break during data packet forwarding. When the local repair fails, a LOAD node may generate an RERR (Route Error) message to inform the originator of the data packet that it was not possible deliver the message to the destination. Different from AODV, an RERR message of LOAD indicates just one unreachable address. Due to limitations of network devices and seeking to reduce the computational resource usage, LOAD does not use a precursor list like in AODV. Furthermore, LOAD allows the use of the LQI (Link Quality Indicator) as a routing metric in addition to the hop distance. Although there are different ways of using LQI as a routing metric, LOAD adopts the LQI to avoid routes that have a link quality lower than an initially-defined threshold. Besides, LOAD does not use HELLO messages or passive acknowledgments. In [46], the authors proposed a Dynamic MANET On-demand for 6 LoWPAN (DYMO-low) routing protocol. DYMO-low is a routing protocol based on DYMO and, consequently, on the well-known AODV. DYMO-low uses three types of control messages: RREQ, RREP, and RBER (like in AODV). The protocol was fully projected for use over IEEE 802.15.4 devices. Thus, routing messages should not be fragmented. The choice of the best path to forward a message is done considering the LQI value and route cost. HELLO messages (used in AODV) are not used in DYMO-low. In contrast, the protocol uses IEEE 802.15.4 acknowledgment messages to determine if a neighboring node is reachable.