# Energy and Distance-Aware Hopping Sensor
## 2 The Proposed Protocol to Relocate Hopping Sensors
### Components and Brief Descriptions of the Proposed Protocol  
It is assumed that the selection of the appropriate cluster headers has already been made among the sensor nodes deployed in the rugged and wide area where the data is desired to be collected. Each cluster header can jump to expand transmission range, and the entire region is clustered based on the maximum transmission radius as shown in Figure 2. In Reference [24], research has been conducted on how the transmission radius increases with the jumping height. The cluster header identifies the member sensor nodes in its cluster zone and uses the message types shown in Figure 3 to relocate the hopping sensor nodes. * **HELLO message**: The cluster header periodically (using \"helloMsgTimer\") broadcasts a HELLO message to identify its member sensor nodes. The member sensor node receiving HELLO checks the address of the HELLO transmitted (src) and registers it as its own cluster header. Also, if there are more than two registered addresses, the member sensor node becomes a relay node. Figure 3: The message types for the proposed protocol. Figure 2: The definition of the terms in hopping sensor networks. type: HELLO
* src: The address of the header node that sends HELLO
* dst: Broadcast address
* **HELLO-ACK message**: In response to HELLO, the member sensor node receiving the HELLO message transmits HELLO-ACK to its cluster header. * type: HELLO-ACK
* src: The address of the member sensor node transmitting the HELLO-ACK
* dst: src of HELLO message received
* relayNode: Set to \"true\" if the sensor node transmitting the HELLO-ACK is a relay node; otherwise, set to \"false\". * **helloMsgTimer**: The cluster header executes the timer helloMsgTimer for a predetermined time by itself after the HELLO transmission. When the timer expires, the cluster header computes the number of its member nodes using HELLO-ACKs, and if the member nodes number is less than a certain number, it can determine that its zone could be a sensing hole. It periodically broadcasts HELLO for sensing hole identification and executes the timer helloMsgTimer again. * **RELAY message**: If the member sensor node of the header is insufficient (i.e., a sensing hole), the header broadcasts a RELAY message to all its relay nodes. * type: RELAY
* src: The address of the header that sends the RELAY message
* dst: Broadcast address
* **RELAY-ACK message**: The relay node sends a RELAY-ACK response message to the cluster header that sent the RELAY. * type: RELAY-ACK
* src: The address of relay node sending RELAY-ACK
* dst: src of RELAY message received
* **REQ (Request) message**: The REQ is a message that the cluster header, in which the sensing hole occurs, requests a relocation of the member sensor nodes to neighboring cluster zones. The cluster header of the sensing hole transmits a REQ message to the relay node using the first received RELAY-ACK. The relay node that receives the REQ transmits the REQ to any one of the cluster headers that is not the sending address (src) of the received REQ among the cluster headers of the relay node. After a cluster header of the sensing hole transmits a REQ, if the cluster header receives a RELAY-ACK from another relay node, the newly received RELAY-ACK is ignored. * type: REQ
* src: The address of the header of the sensing hole that transmits the REQ or the address of the relay node when forwarding REQ
* dst: src of the RELAY-ACK received or the address of the cluster header of the relay node when it forwards REQ message
* cnt: Number of member sensor nodes required in the sensing hole
* holeAddr: The address of the header where the sensing hole occurred
* hGPS: Location information of the sensing hole header
* **ADV message**: A cluster header neighboring a sensing hole and receiving the REQ broadcasts an ADV to its member sensor nodes.