## 4 Proposed Scheme
### Packet Types in EESEVBF  
The proposed protocol defines five different types of packets, which are _Neighbor Request_, _Acknowledgment_, _Container_, _Announcement_ and _Data Packet_. The sensor nodes are deployed in the 3D region. The holding time mechanism is used to select the next forwarder when the packet is broadcast by the source node and received by the PFNs. If the PFNs remain static throughout the simulation life, then one specific node will always be selected when the source broadcasts the packet. The selected node will go to a dead state in a limited time due to the repeated selection. Therefore, the sensor nodes move and randomly change their positions. The qualified forwarding nodes are shallower than the current source node and the distance between them is lesser than the transmission range. To find these forwarding nodes, the source node broadcasts the _Neighbor Request Packet_. The format of the _Neighbor Request Packet_ is _NRP(id,dpt,ty)_, where _id_ represents a unique integer number assigned to each node in the initialization phase, _dpt_ contains information about the depth, and _ty_ is a binary number used to differentiate between the packets. The value of _ty_ for _NRP_ is \"00\". When the neighbor receives a _Neighbor Request Packet_, it replies with an _Acknowledgment Packet_. The format of an  
Figure 5: _Vacoustic_ vs. Temp.  
Figure 6: _Vacoustic_ vs. Salinity.  
_Acknowledgment Packet_ is _AP(id,dpt,ei,ty)_, where _id_ is a unique number assigned to each node, _dpt_ is the depth information, _ei_ is the energy status and ty is \"01\" representing the packet type. _The Container Packet (CP)_ is used to exchange the priorities at the first hop between the PFNs of the source node. The neighbor node, upon receiving a data packet from the source node, calculates its own holding time as well as finds the minimum holding time at the second hop. The format of a _Container Packet is CP(id,HT1 st,HT2 nd,ty)_ where id is the unique number of the sending node, _HT1 st_ is the holding time of the node at the first hop, _HT2 nd_ is the sum of the holding time of the node at the first hop and with the minimum holding of the PFNs at the second hop. Similar to the other types, ty differentiates the packet with the value of \"10\" for CP. When the source node receives the Container packets from all the neighbors, it broadcasts the _Announcement Packet (AC)_. This type of packet is used for the solution of the hidden terminal problem discussed later in this section. The format of the _Announcement Packet_ is AC (_hpid,x,y,z,ty) where _hpid,x,y,_ and z represents the id and coordinates of the highest priority node respectively and ty value for AC is \"11\". The last packet type is _Data Packet (DP)_, which is the actual data to be sent to the centralized station. The format of _Data Packet_ is _DP(HD,PD,ty)_. HD representing the header of the packet contains information about the packet generating node and the centralized station, PD is the payload of the data packet, and the ty value in this case is \"111\". The payload is the most crucial part containing the actual information about the environment. If the above packets are transmitted in short intervals, then higher network overhead and energy consumption are expected. Therefore, to avoid this problem, each node keeps its corresponding neighbor table, which is for the purpose of keeping a track record of their neighbors. The format of the neighbor table is NeighTab(NID, Ei, Depth, _HTr,_ TU), where NID represents the neighbor node ID, Ei is the residual energy of the node, _HTr_ is its holding time and TU represents the time for updating the neighbor entry. Meanwhile, if the source node initiates/receives the second packet when there is enough time for updating the neighbor table, then it will directly broadcast the _Data Packet_ and the _Announcement Packet_ from the previous holding time estimations.