# Routing Protocols for Low Power and Lossy Networks in Internet of Things Applications
## 4 Enhanced Routing Solutions for Internet of Things Networks
### RPL Objective Functions
Different from the previously-presented OF-FL, FUZZY OF obtains the quality of a route using two fuzzification processes. The first considers the two metrics: delay and ETX. As a result of the first process, an output called QoS is produced. This QoS output, together with the energy metric, are the two inputs of the second fuzzification process, which provides the path quality value. Notice that the result of both fuzzification processes is a maximizable value. Thus, the node should select, as its preferred parent, the neighbor candidate with the highest quality value. In FUZZY OF, the rank value of a node is obtained through the sum of the rank of its preferred parent with respective computed quality. Thus, the proposed OF allows RPL to construct a routing topology considering both QoS and energy aspects. [PERSON] et al. [100] also adopted fuzzy systems to design a new set of context-aware objective functions for RPL. The authors aimed to provide a solution that can dynamically adjust its functioning to better attend to the requirements of the applications. Thus, they defined four Delivery Quality- and Context-Aware Objective Functions (DQCA-OF) considering the metrics of ETX, consumed energy, and the number of hops. A priority level was also defined for each metric used in DQCA-OFs. As an example, DQCA-OF1 was designed with the additive combination of the routing metrics ETX and number of hops. Each one of these metrics has a priority level that varies among high (1), medium (3), and low (5). Thus, the DQCA-OF proposal stored the routing needs of applications inside a database to adjust the priority level of metrics according to the requirements of each scenario. The authors also proposed a fuzzy system to combine the metrics of DQCA-OFs, alternatively. Thus, for each DQCA-OF exists a DQCA-OF (FL) that merges the routing metrics using the proposed fuzzy system to classify the routes. Therefore, the authors created a set of eight OFs that can be dynamically chosen according to the IoT application requirements for improving energy usage and QoS. An objective function, developed for a specific implementation of RPL for Agricultural LLNs (A-LLNs), is presented in [101]. The Scalable Context-Aware Objective Function (SCAOF) introduces context-aware features in RPL to fulfill the QoS requirements of A-LLNs. The proposed OF combines Link Color Object (LCO) metrics and an additive metric composed of ETX and RE (remaining energy). The LCO is used to propagate information about the links, such as workload, hardware, and availability. The RE metric is an additive metric that represents the average remaining energy of the nodes that compose a path. All this information is obtained locally by the nodes or exchanged using DIO messages. To select its preferred parent, a sensor node seeks its parents with the appropriated LCO, and afterwards, it chooses the one with the lowest second metric (composed of ETX and RE). Next, the node should compute its rank based on ETX and RE and subsequently forward it to its neighbors. Hence, SCAOF provides the combined use of several routing metrics to fulfill the requirements of A-LLNs, mainly QoS and energy efficiency. [PERSON] et al. [102] proposed the Parent-Aware Objective Function (PAOF), an objective function that aims to offer network load balancing for LLNs. PAOF uses both ETX and parent count to perform the rank computing and preferred parent selection. The parent count metric represents the number of potential preferred parents of the node. These two metrics are combined in a lexical way. In the comparison between two candidate nodes, PAOF first verifies the ETX modular difference between them. Whether it is smaller than \(MinHopRankIncrease\) or not, the node should select the best parent to be the candidate with the lowest parent count. \(MinHopRankIncrease\) is a default variable value of RPL that defines the minimum value increased in the rank for each parent of the node.