- Query flooding
Query flooding is a method to search for a resource on a
P2P network . It is simple but scales very poorly and thus is rarely used. Early versions of theGnutella protocol operated by query flooding; newer versions use more efficient search algorithms.Operation
A
P2P network generally consists of a large number of nodes each connected not to all other nodes, but a small subset of the nodes. If a node wants to find a resource on the network, which may be on a node it does not know about, it could simply broadcast its search query to its immediate neighbours. If the neighbours do not have the resource, it then asks its neighbours to forward the query to their neighbours in turn. This is repeated until the resource is found or all the nodes have been contacted, or perhaps a network-imposed hop limit is reached.Query flooding is simple to implement and is practical for small networks with few requests. It contacts all reachable nodes in the network and so can precisely determine whether a resource can be found in the network (
Freenet , for example, only returns a probabilistic result).On the other hand, every request may cause every node to be contacted. Each node might generate a small number of queries; however, each such query floods the network. Thus, a larger network would generate far more traffic per node than a smaller one, making it inherently unscalable. Additionally, because a node can flood the network simply by issuing a request for a nonexistent resource, it could be possible to launch a
denial of service attack on the network.Alternatives
[http://rfc-gnutella.sourceforge.net/src/rfc-0_6-draft.html Version 0.6] of the
Gnutella protocol mandates "query routing".A [http://gnutella-specs.rakjar.de/index.php/The_Query_Routing_Protocol simplified version] of the [http://www.limewire.com/developer/query_routing/keyword%20routing.htm specification] explains how theideas of [http://aeolusres.homestead.com/files/index.html the original research] are implemented. Other file sharing networks, such as the kad network, use distributed hash tables to index files and for keyword searches. BitTorrent creates individualoverlay network s for sharing individual files (or archives). Searches are "performed" by other mechanisms, such as locating torrent files indexed on a web site. A similar mechanism can be use on the Gnutella network with magnet links. For instanceBitzi provides a web interface to search for magnet links.Earlier P2P networks, such as
napster , used a centralized database to locate files. This does not have a scaling problem, but the central server is a single point of failure.See also
*
Flooding algorithm
Wikimedia Foundation. 2010.