## 6 Energy-Efficient, Priority-Based Forwarding (EPF)
### EPF Forwarding Model  
There are two communication modes in the IoT system discussed in earlier sections: a pull-based communication model that needs an interest request to respond with a data packet and a push-based communication model in which sensing nodes in the IoT system itself sense, collect, process and send data to the consumer without any prior request for that data. When the consumer node sends an interest packet for content, the interest is sent to a neighbor node for content discovery and retrieval. The node matches its CS against the requested content. If data is found, the producer node sends data back to the consumer node. If there is no entry in the PIT or the CS, then the consumer node itself retransmits the packet to the controller to discover a producer in an efficient way. After receiving the interest packet, the controller checks its GIT for the matching content name and the producer of that content. After matching the content in the GIT, the controller computes the best possible and shortest path between the consumer and producer using the Dijkstra algorithm. In this computation, the controller verifies the residual energy of the potential forwarder with the content type and the active network status. The Dijkstra algorithm is the classical single-source algorithm that is always optimized in computation [32]. After the computation and path establishment, the controller sends the packet back to the consumer node after embedding the path information in the packet. The consumer sends the interest packet to the producer, and every potential forwarder responds to the request after matching the path-naming scheme. All the nodes that do not match the path naming will drop the packet, while other nodes will send data back toward the consumer or forward the packet toward the next hop. As discussed in detail, the regular and unimportant sensing data is much more present in the IoT environment than high priority and important data. Important information is rarely generated after time in the network, while the regular flow of the traffic in the IoT system can cause problems for the sensor node's energy. Therefore, the arrival of high-priority information can be met with problems in in-time and efficient delivery. Government-related information, law enforcement agency-related information, high red-alert alarms, emergency situations, road accidents, and theft are scenarios of high priority; chatting, traffic patterns, and temperature are low-priority information. We categorized the five different types of data according to priority type in Table 1.  
Potential forwarders check the name embedded in an interest and data packet to differentiate the high and low priority packets. Naming schemes match the name in packet headers to the priority level, as defined in Table 1. An energy threshold is set to achieve reliable transmission of high priority interest and data packets. We set the energy threshold value as 16%. Only high priority packets can forward through nodes beyond defined energy thresholds. GIT will update residual energy when the node's residual energy reaches the threshold after getting information from L_info_pkt. In our scheme, the priority mechanism is performed by using the timer-based rebroadcast mechanism for both interest and data packets. A defer timer value is set locally by each forwarder after evaluating the priority level that is embedded in packet header. The value of the timer is computed in a fully distributed way by each processing node without incurring any signaling overhead. Interest and data packet communication are described in Algorithm 2 and discussed above in EPF forwarding model.