Ultrapeers shield leaf nodes from almost all Ping and Query traffic. Mainly two suggested approaches of managing ultrapeers and leaf nodes have been proposed.
The bit vector is then sent to the ultrapeer. The ultrapeer can then check the words of an incoming query, by running them through the same hash function, and forward the query if the bit vector indicates that matching resources are present in the leaf node. This method is commonly referred to as DHT-based routing, of which two variants is discussed in [HHH$^+$02] and [Pin01].
Some of the benefits of bit vector matching is that the bit vector can be compressed and has better support for incremental updates. It is easier to implement the hash check then to efficiently check an index.
Ultrapeers communicate with other ultrapeers using the broadcast scheme initially presented by Gnutella. It is also possible to have ultrapeers perform additional levels of bit vector passing, creating several layers of ultrapeers, but this has not been implemented.
A problem with ultrapeers is that the risk of receiving false answers to a query increases. Since an ultrapeer 15#15 answers a query by saying that servent 5#5 has a certain list of hits the node issuing the query relies on the behaviour of 15#15 and that 5#5 has not disconnected or changed its set of shared files without notifying 15#15.