A method of communication at a first node, comprising: receiving a packet from a second node including packet type information indicating whether the received packet is a query packet or a response; determining that the received packet is a query packet (442,542) based on the packet type information, the query packet including information indicating at least a transaction identifier, the transaction identifier being a value that uniquely identifies an ongoing query-response transaction within a local neighborhood of the first and second node; characterised by the steps of: determining a transaction type based on the packet type information included in the query packet, wherein the packet type information included in the query packet indicates which of the following possibilities applies: (a) the query packet requests a response from one node, (b) the query packet requests a response from any nodes of a set of nodes, (c) the query packet requests a response from any M nodes of N nodes where N is greater than M, or (d) the query packet requests a response from each node of a set of nodes; determining whether to transmit a response packet (452, 454, 456; 552, 554, 556) based on the transaction type and/or a transaction identifier; and transmitting a response packet to the second node in response to determining to transmit the response. receiving a packet from a second node including packet type information indicating whether the received packet is a query packet or a response; determining that the received packet is a query packet (442,542) based on the packet type information, the query packet including information indicating at least a transaction identifier, the transaction identifier being a value that uniquely identifies an ongoing query-response transaction within a local neighborhood of the first and second node; characterised by the steps of: determining a transaction type based on the packet type information included in the query packet, wherein the packet type information included in the query packet indicates which of the following possibilities applies: (a) the query packet requests a response from one node, (b) the query packet requests a response from any nodes of a set of nodes, (c) the query packet requests a response from any M nodes of N nodes where N is greater than M, or (d) the query packet requests a response from each node of a set of nodes; determining whether to transmit a response packet (452, 454, 456; 552, 554, 556) based on the transaction type and/or a transaction identifier; and transmitting a response packet to the second node in response to determining to transmit the response. determining a transaction type based on the packet type information included in the query packet, wherein the packet type information included in the query packet indicates which of the following possibilities applies: (a) the query packet requests a response from one node, (b) the query packet requests a response from any nodes of a set of nodes, (c) the query packet requests a response from any M nodes of N nodes where N is greater than M, or (d) the query packet requests a response from each node of a set of nodes; (a) the query packet requests a response from one node, (b) the query packet requests a response from any nodes of a set of nodes, (c) the query packet requests a response from any M nodes of N nodes where N is greater than M, or (d) the query packet requests a response from each node of a set of nodes; determining whether to transmit a response packet (452, 454, 456; 552, 554, 556) based on the transaction type and/or a transaction identifier; and transmitting a response packet to the second node in response to determining to transmit the response.