## 4 System Model
### Gedpar
However, in this routing protocol first of all complete route finding procedure is executed. In E2 EVHR, binary tree is generated (as in LMPC) for ensuring the successful packet transmission. Actually, after ensuring that there is no void hole in the routing path, multiple copies of the packets are transmitted towards the sink node using binary tree. The layering concept for LMPC is presented in Figure 6. The major difference between LMPC and E2 EVHR is that E2 EVHR avoids the void hole by looking the path from source to the destination. (Figure 7), while LMPC looks forward one-hop from neighbor node. Algorithm 7 presents the steps for E2 EVHR protocol. The lines 1-2 are presenting the input and initialization, respectively. The line 3 involves the layering while line 4 shows deployment of the nodes in the network. Total energy for each node is calculated in lines 5-7. The neighbors for each node are calculated in lines 8-10. In lines 12-15, the paths having no void node are evaluated. The lines 16-17 help to find the potential neighbors from the current forward. The packets are then transmitted toward the potential neighbor for continuing the process of transmission. These potential neighbors help the packets to reach at the destination, successfully. Figure 7: Source to destination path finding. Algorithms are processed according to the following order. Firstly, Algorithm 1 is run which takes the input as sensor node S and sink node D. Secondly, Algorithm 2 is called in the response of Algorithm 1. After that, Algorithm 3 is called for potential neighbor selection. In the end, Algorithm 6 is called (in case of void hole occurrence) for void node recovery. While in the case of E2 EVHR, void holes are avoided by finding the path which ensures end to end delivery. ```
1:input: E2 EVHR (node)
2:initialization
3:total number of layers L
4:deploy the nodes n
5:for each node n do
6: calculate total energy
7:endfor
8:for each node n do
9: find neighbor: (neighbor.id, neighbor.coordinates, neighbor.layer)
10:endfor
11:hello messages
12:for route finding do
13: find the path which ensures end-to-end delivery
14: save all the paths
15:endfor
16:for potential neighbor do
17: select the potential neighbors
18:endfor
19:packet sent towards the potential neighbor
20: acknowledgment message
21:end
```

**Algorithm 7** E2 EVHR

## 5 Simulation and Discussion

Simulations are performed to validate the proposed routing techniques. The proposed techniques are compared with GEDAR and LMPC. GEDPAR and E2 EVHR are greedy opportunistic routing protocols in which next forwarder node is selected on the criteria of minimum distance from the current node. In the GEDPAR, firstly, current node enhances transmission range when it finds no neighbor in its transmission range. After that, if the current forwarder still not able to find any node in its range then it executes depth adjustment. During depth adjustment, the node moves from a deeper layer to the shallow one. The second proposed routing algorithm (E2 EVHR) takes some steps from LMPC. Performance of GEDPAR and E2 EVHR are compared on the basis of delay, throughput, Packet Acceptance Ratio (PAR), depth adjustment and energy consumption. These parameters can be defined as follows:

### Delay

It can be defined as the time duration in which packet is successfully received at a sink. It is measured in milliseconds (msec). ### Throughput

Throughput is calculated as the total number of packets received at the sink node to the total number of packets sent from source node in percentage. ### Par

PAR is a ratio between packets received at the sink to the packets sent from the source node. ### Depth Adjustment

The number of times nodes move from deep water to the shallow water to find the next neighbor node in their range. ### Energy Consumption

Total energy consumption of network during transmission, reception, transmission range enhancement and depth adjustment. This total energy consumption of network is measured in Joule (J).