US20050108368A1 - Method and apparatus for representing data available in a peer-to-peer network using bloom-filters - Google Patents

Method and apparatus for representing data available in a peer-to-peer network using bloom-filters Download PDF

Info

Publication number
US20050108368A1
US20050108368A1 US10699359 US69935903A US2005108368A1 US 20050108368 A1 US20050108368 A1 US 20050108368A1 US 10699359 US10699359 US 10699359 US 69935903 A US69935903 A US 69935903A US 2005108368 A1 US2005108368 A1 US 2005108368A1
Authority
US
Grant status
Application
Patent type
Prior art keywords
bloom
peer
data
filter
filters
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US10699359
Inventor
Aditya Mohan
Vasiliki Kalogeraki
Aad Moorsel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett-Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network-specific arrangements or communication protocols supporting networked applications
    • H04L67/10Network-specific arrangements or communication protocols supporting networked applications in which an application is distributed across nodes in the network
    • H04L67/104Network-specific arrangements or communication protocols supporting networked applications in which an application is distributed across nodes in the network for peer-to-peer [P2P] networking; Functionalities or architectural details of P2P networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L29/00Arrangements, apparatus, circuits or systems, not covered by a single one of groups H04L1/00 - H04L27/00 contains provisionally no documents
    • H04L29/02Communication control; Communication processing contains provisionally no documents
    • H04L29/06Communication control; Communication processing contains provisionally no documents characterised by a protocol
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network-specific arrangements or communication protocols supporting networked applications
    • H04L67/10Network-specific arrangements or communication protocols supporting networked applications in which an application is distributed across nodes in the network
    • H04L67/104Network-specific arrangements or communication protocols supporting networked applications in which an application is distributed across nodes in the network for peer-to-peer [P2P] networking; Functionalities or architectural details of P2P networks
    • H04L67/1061Network-specific arrangements or communication protocols supporting networked applications in which an application is distributed across nodes in the network for peer-to-peer [P2P] networking; Functionalities or architectural details of P2P networks involving node-based peer discovery mechanisms
    • H04L67/1068Discovery involving direct consultation or announcement among potential requesting and potential source peers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Application independent communication protocol aspects or techniques in packet data networks
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32High level architectural aspects of 7-layer open systems interconnection [OSI] type protocol stacks
    • H04L69/322Aspects of intra-layer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Aspects of intra-layer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer, i.e. layer seven

Abstract

A method and apparatus is disclosed for representing data available in a peer-to-peer network of processing nodes. In one arrangement, respective Bloom-Filters may be formed at the nodes as a function of data available via the nodes. The Bloom-filters may be communicated between peer-to-peer coupled nodes of the peer-to-peer network that have formed connections using incentive-based criteria to control whether one node connects to another node. A search expression may be formed for locating a data object, and nodes selected as a function of the Bloom-filters and the incentive-based criteria. The search expression may be propagated to the selected nodes, and the result of the search expression output from nodes that satisfy the search expression.

Description

    FIELD OF THE INVENTION
  • The present disclosure relates in general to communicating over data networks, and in particular to communicating queries in peer-to-peer networks.
  • BACKGROUND
  • Over the past decades, the Internet has evolved from a special purpose collection of military and academic networks to a vital carrier of communications for many people around the world. The widespread use of email clients and web browsers has helped fuel the Internet's use by the general populace. Newer applications such as file sharing and instant messaging have further increased the traffic on the Internet.
  • One popular Internet application is decentralized peer-to-peer file sharing. Peer-to-peer protocols such as Gnutella allow data transfers between client computers without the use of well-known servers to categorize, direct, or otherwise manage data traffic. Gnutella is a well known peer-to-peer protocol for distributed search and data retrieval. Each host on the peer-to-peer network can serve and request data, therefore the hosts are sometimes referred to as “servents.” After finding the Internet Protocol address of at least one other servent, a host can join the peer-to-peer network.
  • Servents maintain one or more connections with other servents on the peer-to-peer network and perform data transfer functions of the network. These data transfer functions may include serving data, routing queries, and responding to queries. One application of peer-to-peer file sharing is to discover downloadable data that a user desires. This data is often in the form of a file, and can be located by the file's name or other meta-data embedded in the file.
  • When a user wishes to find a particular file or other data on the network, the user will form a query. This query may include an identifier of the desired data object, and the query may include terms that may be found in the meta-data, such as a title or name of the originator. The query is then broadcast to each immediately connected servent, each of which checks a local repository. If these servents do not have the data, the query is forwarded along the network where the process is repeated until matches are found.
  • Although this method of querying is effective, it can be inefficient. For example, assuming an average query contains 83 bytes of data and is sent over a network. The network is assumed to have an average of eight connections per peer and each query is propagated eight times (or eight “hops”) among peers. In this example, the amount of bandwidth utilized across the network for this one query is over 1.2 gigabytes.
  • Clearly, reducing the amount of bandwidth required to process queries in a decentralized peer-to-peer network is desirable. Processing queries more efficiently may provide other benefits such as greater scalability, balancing of network loads, lower latency of queries, and greater efficacy of searches.
  • SUMMARY
  • Methods and apparatus are disclosed for representing data available in a peer-to-peer network of processing nodes. In one arrangement, respective Bloom-Filters may be formed at the nodes as a function of data available via the nodes. The Bloom-filters may be communicated between peer-to-peer coupled nodes of the peer-to-peer network that have formed connections using incentive-based criteria to control whether one node connects to another node. A search expression may be formed for locating a data object, and nodes selected as a function of the Bloom-filters and the incentive-based criteria. The search expression may be propagated to the selected nodes, and the result of the search expression output from nodes that satisfy the search expression.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a diagram of system in which a peer-to-peer network may be employed according to embodiments of the present invention;
  • FIG. 2 is a network node diagram illustrating the use of Bloom-filters in a peer-to-peer arrangement according to various embodiments of the present invention;
  • FIG. 3 is a diagram illustrating the use of a counter array for tracking Bloom-filter changes in accordance with embodiments of the present invention;
  • FIG. 4 is a flowchart showing a procedure for ranking remote Bloom-filters according to embodiments of the present invention;
  • FIG. 5 is a flowchart of a procedure for propagating Bloom-filter updates according to embodiments of the present invention; and
  • FIG. 6 is a diagram of a data processing arrangement for connecting with a peer-to-peer network according to various embodiments of the present invention.
  • DETAILED DESCRIPTION
  • In the following description of various embodiments, reference is made to the accompanying drawings which form a part hereof, and in which is shown by way of illustration various example manners in which the invention may be practiced. It is to be understood that other embodiments may be utilized, as structural and operational changes may be made without departing from the scope of the present invention.
  • In general, the present disclosure relates to processing of queries in decentralized peer-to-peer data processing arrangements. In one embodiment, the data processing arrangements of a decentralized peer-to-peer network store at least one Bloom-filter associated with each directly connected peer. The Bloom-filters are used for processing queries on the peer-to-peer network. The Bloom-filters indicate a probability that the associated peer contains a target data object that corresponds to the query, or that the target data object is accessible via the peer. For each query, the data processing arrangements may form a ranking based on the Bloom-filter and the query, and send the query to those peers that satisfy a threshold ranking. The data processing arrangements also have a mechanism for updating the Bloom-filters for various events, including removal and insertion of peers and data objects onto the network.
  • Bloom-filters are data structures that allow representation of the membership of a set or collection. When accessing a collection of stored items, an efficient method is desirable for querying whether a specific item is in the collection. The simplest method is to test the query against each item in the set until a match is found. This simple method may work well for small collections, but may be inefficient when the collection size grows larger. A Bloom-filter can be utilized to speed up this type of query.
  • A Bloom-filter may be represented as a bit-vector that is m-bits wide. In most cases, the Bloom-filter may be initialized to all zeros. For each item in the collection, the Bloom-filter is populated by performing k-independent hash functions on the item. These hash functions may be performed on the item itself (e.g., a file) or on a representation of the item (e.g., file name or URI). Each hash function returns a result in the range of {1, . . . ,m}. The bits in the bit-vector corresponding to the results of each hash functions are set to one. This procedure is performed for every item in the set. If a bit corresponding to a hash function result has already been set to one in the bit-vector, then the bit remains one.
  • When querying whether a specific item is in the collection, a Bloom-filter for that item can be formed using the same k-hash functions used to form the collection's Bloom-filter. Performing the query involves checking if each bit that is set to one in the query filter is also set to one in the collection filter. If at least one bit is not set in the collection filter, then the item is not in the collection. If all the corresponding bits are one in the collection filter, this indicates a probability that the item is in the collection, although there may be a probability that the item is not in the collection (i.e., a false positive). However, there are ways known in the art to minimize the probability of false positives taking into account the collection size, the size of the vector m, and number of hash functions k. Even with the occasional false positive, Bloom-filters may provide a significant performance improvement over linear searches in many applications.
  • One use of peer-to-peer networks is for locating a specific data object on a network. Data objects can be any sort of data accessible from the network. In many applications, the data objects are computer files, although those skilled in the art will appreciated that data objects may be any machine accessible data, such as data streams, metadata, and identifiers (e.g., hostnames, usernames).
  • A simple method of processing the queries on a peer-to-peer network involves broadcasting the query to all directly connected peers. The peers examine the query and broadcast it to their directly connected peers, and so on. This method may be effective, although not particularly efficient. This lack of efficiency may become important when large numbers of peers are connected to the network. In a file sharing network such as one using the Gnutella protocol, there may be millions of users connected at any one time, with a correspondingly large number of available data objects.
  • To improve query efficiency, each data processing arrangement that have data objects to share can build a local Bloom-filter (LBF) based on the peer's locally accessible data objects. The peer may also build a set of remote Bloom-filters (RBF) corresponding to each host to which the peer is directly connected. The RBFs indicate the probability that the host associated with the RBF can satisfy a query. The peer can use the RBF to route queries by comparing the query to each RBF, and sending the query only to those that are likely able to fulfill the request. Each peer can also publish its LBF as well as a combination of its RBFs to each new user that connects to the peer. The peers use these Bloom-filters to limit queries only to those peers likely to fulfill the query, therefore making more efficient use of network bandwidth.
  • Referring now to FIG. 1, a representative system environment 100 is illustrated in which a peer-to-peer system may be employed according to embodiments of the present invention. In the representative system environment 100, peers may connect in any number of known ways. These ways include landline network(s) 104, which may include a Global Area Network (GAN) such as the Internet, one or more Wide Area Networks (WAN), Local Area Networks (LAN), and the like. Any computing device or other electronic device that supports the appropriate peer-to-peer protocol may utilize Bloom-filter query processing, such as servers 106, desktop computers 108 or workstations, laptop or other portable computers 110, or any other similar computing device capable of communicating via the network 104, as represented by generic device 112.
  • Peer-to-peer networking may be conducted via one or more wireless networks 114, such as Global System for Mobile Communications (GSM), Universal Mobile Telecommunications System (UMTS), Personal Communications Service (PCS), Time Division Multiple Access (TDMA), Code Division Multiple Access (CDMA), or other mobile network transmission technology. Peer-to-peer capabilities may be included in any mobile electronic device, such as laptop or other portable computers 116, mobile phones 119, Personal Digital Assistants (PDA) 120, or any other similar computing device capable of communicating via the wireless network 114, as represented by generic device 122.
  • Peer-to-peer arrangements may utilize short-range wireless technologies 124, such as Bluetooth, Wireless Local Area Network (WLAN), infrared (IR), etc. In other arrangements, computing arrangements may join a network via direct wired connections, such as depicted by connection path 126. The concepts presented relating to peer-to-peer data transfer are applicable regardless of the manner in which data is provided or distributed between the target devices.
  • An example of a target device that utilizes a peer-to-peer data accessing arrangement is illustrated as the generic computer 118. The computer 118 may include a processor 132, some form of memory 134, and a network interface 136. An operating system (OS) 138 may be included to control the computer 118.
  • The computer 118 may include some form of peer-to-peer networking module 140 implemented in any combination of software and hardware. The peer-to-peer networking module 140 may communicate using the appropriate network and application protocols, and may include the ability to generate and store Bloom-filters 142 for any data objects contained in the computer 118, as well as receiving and storing Bloom-filters 142 from connected peers.
  • One approach of processing network queries using Bloom-filters is illustrated in FIG. 2 according to various embodiments of the invention. A system 200 of peer-to-peer networked entities is illustrated. These entities are represented as nodes 202 a-f. Each node 202 a-f may act as a servent, that is the nodes 202 a-f can both serve data objects to peers and receive data object from peers.
  • The system 200 typically utilizes common protocols that can be used by the nodes 202 a-f. The common protocols include at least the peer-to-peer protocol, and may include lower level network protocols that are part of the protocol stack. For example, the Gnutella protocol is one example of a peer-to-peer protocol, and is often run on top of the Transmission Control Protocol/Internet Protocol (TCP/IP). The nodes 202 a-f may inter-communicate using some version of Gnutella on TCP/IP, even though the applications, operating systems, and architectures may vary between nodes. Gnutella connections formed in this manner are typically TCP/IP sockets, although other network protocols such as Asynchronous Transfer Mode (ATM) may be used if the higher level protocol allows it.
  • It will be appreciated that the nodes 202 a-f may form the peer-to-peer network using multiple network and peer-to-peer protocols. The use of Bloom-filters for query routing may be implemented in the peer-to-peer protocol and be independent of the underlying network protocols. Additionally, the use of Bloom-filters to route queries may be may adapted for independent or simultaneous use with multiple peer-to-peer protocols known in the art.
  • In this system, each node 202 a-f exchanges data traffic with peers using local, incentive based decisions. These incentive-based decisions may be implemented as part of the peer-to-peer protocol. For example, node 202 c has connections to nodes 202 b and 202 d. Node 202 c may use incentive-based criteria for determining whether to initially connect to nodes 202 b, 202 d, as well as which nodes (if any) are favored for routing requests or downloading data. These incentive-based decisions may use any criteria. Typically, incentive-based data traffic criteria are based on network performance measures such as connection bandwidth, latency, reliability, etc. The nodes 202 a-f may use other factors besides network performance to make incentive-based data transfer decisions, such controlling access to nodes for reasons such as data integrity, trustworthiness, cost, and security.
  • Each node 202 a-f may route queries or other data transfers to one or more directly connected nodes, also referred to herein as “peer-to-peer connected” nodes. In general, peer-to-peer or directly connected nodes are defined as nodes having a data connection therebetween using the peer-to-peer protocol. For example, if the peer-to-peer protocol uses TCP/IP as the underlying network protocol, a TCP/IP socket connection may exist between directly connected nodes.
  • If the underlying protocols of the peer-to-peer network are connectionless (e.g., UDP/IP), then the term directly connected can refer to those nodes that actively initiate data exchange data with one another, typically based on local incentives of the nodes. These nodes may form virtual connections for exchanging data and queries rather than relying on connections of the underlying protocol.
  • It will be appreciated that the term “directly connected” does not necessarily imply a direct physical connection between nodes. There may be other network entities between two directly connected nodes, such as routers, hubs, bridges, etc. However, when data is transferred between two system nodes without the data traveling though another system node, the two system nodes generally can be considered directly connected nodes.
  • In an unstructured network as illustrated, the nodes may send queries or perform other data transfers to any combination of directly connected nodes. For example, node 202 d may send a query to any combination of nodes 202 b, 202 c, 202 e, and 202 f. Although node 202 d may limit the query to certain nodes based on local, incentive-based decisions, these decisions are typically based on network performance. Incentive-based query routing decisions typically do not take into account the success of the query. To optimize limited network bandwidth, it is preferable that the node 202 d send queries only to those nodes having some probability of fulfilling the request.
  • Bloom-filters can be used to assist in query routing decisions by indicating which nodes are more likely to fulfill the query. In the illustrated system 200, each node 202 a-f is shown with a set of Bloom-filters maintained by that node. The Bloom-filters include local Bloom-filters (LBF) and remote Bloom-filters (RBF). In the illustration, the LBF is shown as top Bloom-filter in a stack of filters associated with the node. The RBFs are shown below the LBF and separated from the LBF by a horizontal line.
  • The nodes 202 a-f form respective LBFs 204 a-f to reflect the data locally accessible by the nodes 202 a-f. Locally accessible data may include directly coupled memory storage such as disk drives and memory. It will also be appreciated that locally accessible data may include any data accessible by a node of the system that is not provided elsewhere using the peer-to-peer protocol of the system. For example, a device may be able to access network shared storage through protocols such as Server Message Block (SMB) or Network File System (NFS). Although this data may not be considered “locally accessible” in a traditional sense, the device may still share data from those network data storage systems in the same manner as if the data were on an attached drive. This data can be considered locally accessible and included in the LBF, since the device may be the only node in the peer-to-peer system that can access that data.
  • Each LBF 204 a-f can be used by the respective owner nodes 202 a-f for lookup of query data. The LBFs 204 a-f can also be communicated to other nodes to assist in routing of queries. These LBFs 204 a-f may be used to build RBFs for other nodes. In general, an RBF is a Bloom-filter communicated from a first host to a second host based on the data available via the first host. The RBF can be built from the first host's LBF, as well as from RBFs that the first host has received from its direct data connections.
  • One example of forming and communicating RBFs is shown in relation to nodes 202 a and 202 b. Node 202 a has only one connection, that connection being with node 202 b. Therefore node 202 a maintains an RBF 206 received from node 202 b. Node 202 b has connections with three nodes 202 a, 202 c and 202 d. Node 202 b maintains three RBFs 208, 210, and 212, that are associated with nodes 202 a, 202 c and 202 d respectively.
  • Node 202 a only has one direct connection, so the RBF 208 sent from node 202 a to node 202 b is the same as LBF 204 a. Node 202 b has three direct connections, however, so node 202 b can form an RBF 206 targeted for node 202 a using multiple Bloom-filter information. In general, node 202 b can combine its LBF with some set of the RBFs maintained at node 202 b. As shown in FIG. 2, node 202 b can form RBF 206 using a logical OR of LBF 204 b with RBFs 210 and 212. The RBF 208 is not used for forming RBF 206, since RBF 208 was received from node 202 a. In general, a node should not echo any Bloom-filter data back to the nodes from which the Bloom-filter data was received.
  • In a manner similar to the formation of RBF 206 for node 202 a, node 202 b sends RBF 214 to node 202 c. The RBF 214 includes a logical OR of LBF 204 b with RBFs 208 and 212. Each RBF in FIG. 2 may be formed using similar techniques, and communicated between directly connected nodes at least when the nodes enter the system 200.
  • It will be appreciated that when nodes are inserted or removed from the system, updates to other connected nodes may be needed. Similarly, when a node adds or deletes a locally accessible data object, the node's LBF is modified. This may require RBFs to be updated, since the RBF sent by a node may be formed using the LBF. A system using these Bloom-filter mechanisms may require a way to effectively propagate these system changes.
  • For example, assuming node 202 a was the latest node to join the system 200, node 202 a can send RBF 208 to node 202 b. In turn, node 202 b may propagate the newly added information contained in RBF 208 to directly connected nodes 202 c and 202 d. This information would be updated in RBF 214 at node 202 cand in RBF 216 at node 202 d.
  • This propagation of update RBFs may occur immediately when the network changes occur. In such a technique, the updates will spread across the network until all affected nodes have been informed. In other arrangements, the nodes may send updates only at pre-specified intervals. Nodes may individually determine at what intervals updates are passed along to peers. Nodes may store “group updates”, which can be formed as a conglomeration of pending updates to the peers. The group updates may include updates of the local depository reflected by the LBF as well as updates of RBFs received from directly connected peers.
  • Of course, other techniques may be employed to limit the bandwidth consumed by updates, as well as preventing problems such as infinite loops. Bloom-filter updates may include data such as unique identifiers, source identifiers, and time-to-live (TTL) values, to prevent looping or excessive propagation through the network. The unique identifier may be any value used to uniquely identify an update from a given source, such as a sequential or random number. The source identifier may be some value (e.g., an IP address) that identifies the originator of the update. The unique identifier and source identifier may be used to detect whether this update has been received and processed at the local node. If the update has already been received, then the update can be safely ignored and not further propagated.
  • A TTL value may be used with updates to prevent over-propagation of updates. A value indicating the maximum TTL may be included with the update along with a current count of hops. The hop count can be incremented each time the update passes between two directly connected nodes. If the hop count exceeds the TTL, the update does not need to be propagated any further, although it may be processed if not redundant.
  • The process of updating a Bloom filter by adding a new filter may be performed by logically OR'ing the new updates with the filter. However, the removal of Bloom-filters is more involved, because more than one multiple, independent Bloom-filter may set a bit at the same position of the combined Bloom-filter array. Therefore, when subtracting a Bloom-filter, the subtracted array positions cannot automatically set the positions of the subtracted filter to zero.
  • In reference now to FIG. 3, a technique of adding and subtracting updates to a Bloom-filter is illustrated according to embodiments of the present invention. A Bloom-filter array 300 may represent a combination of various Bloom-filters updates. For convenience, the Bloom-filter array 300 is illustrated as six bits wide, although in practice the Bloom-filter array 300 can be any width, and is usually much larger. The Bloom-filter array 300 can be associated with a counter structure 302. The counter structure 302 has a cell (e.g., a counter) corresponding to each bit in the Bloom filter array 300. The counter structure 302 may be formed using any data structure known in the art, such as an array of integers. Each cell in the counter structure 302 maintains a count corresponding to the number of times the location in the Bloom-filter array 300 has been added to or subtracted from by various update operations.
  • When adding new filters to the combined Bloom-filter array 300, each cell in the counter structure 302 corresponding to a bit in the added filter is incremented by one. If a cell in the counter structure 302 increases from zero to one, then the corresponding bit in the Bloom-filter array 300 can also be changed from zero to one. If the counter cell value increases beyond one, the corresponding bit in the Bloom-filter array 300 remains one. Similarly, when removing a filter from the combined Bloom-filter array 300, each position in the counter structure 302 corresponding to a bit in the removed filter is decremented by one. If, after a subtraction, a cell of the counter structure 302 has been decremented to zero, then the associated position in the Bloom-filter is set to zero.
  • For example, subtracting the filter [0, 1, 0, 0, 0, 0] from the Bloom-filter 300 of FIG. 3 would not result in any change to the Bloom-filter array 300 because the counter structure 302 would retain a two in the second cell. However, subtracting the filter [0, 0, 1, 0, 0, 0] would result in the third bit of the Bloom-filter array 300 being set to zero, because the third cell of the counter structure 302 decrements from one to zero.
  • The collections of Bloom-filters maintained by network nodes can be used for routing queries. In a peer-to-peer network, a search is initiated by a network agent (e.g., a user) forming a query. The query may contain any unique identifier that is satisfied by one or more identical data objects on the network, or the query may contain a search term that may be satisfied by multiple, different data objects. For example, a search for a music file by artist “Beethoven” may be satisfied by many different and unique files on the network. However, a search for a particular digital version of “Beethoven's 5th Symphony” that has a certain hash value (e.g., MD5 hash value) may be satisfied by one unique data object on the network, although multiple instances of that object may be available on different nodes of the system.
  • The node that receives the query may first examine its LBF to see if the query can be satisfied locally. The node can also send the query to one or more of its immediate peers. As used herein in relation to a network node, the term “immediate peer” refers to any peers having a direct and open connection to the node. The node originating the query can use its collection of RBFs to determine which immediate peers to route the request, and each subsequent node that receives the query can use its RBFs in deciding how and where to further propagate the query.
  • One example procedure 400 of determining which immediate peers should receive a query is illustrated in FIG. 4 according to embodiments of the present invention. The procedure 400 may be entered (402) with a single parameter, that parameter being the query to be processed. A query Bloom-filter called queryBF is formed (404 a) using the query, and the local repository is searched (404 b). If the local repository can satisfy the query, i.e. the result is not null (406), then the results may be returned (408). Otherwise, a query of other network nodes may proceed. It will be appreciated that in some cases, the network query will still proceed even if the query could be satisfied locally (408). This may be the case, for example, when multiple unique data objects may satisfy the query.
  • A list of immediate peers may be examined to determine which, if any, immediate peers to which the query should be forwarded. This list of immediate peers can be arranged into a data structure called RankedList, which is initialized (410) to zero (or empty).
  • For purposes of this example, it is assumed a list of immediate peers and their associated RBFs is stored in an existing collection, RBFList. RBFList may contain data structures that includes the RBF associated with a directly connected host, as well as other host data such as an IP address. The entries of RBFList are ranked by checking the entry's RBF versus query, and placing the entry in RankedList according to this rank. An RBF is extracted from RBFList and checked for null (412), that would indicate the end of the list. If an RBF is available, two local variables rank and k are initialized (414) to zero. While k is less than the width of the RBF (418), the kth bit of the RBF is compared to the kth bit of queryBF, setting a local variable called “bit” to a one if the bits are the same, and a zero if not (420 a). The value of bit is added to the rank, and k is incremented by one (420 b). This continues until k equals the size of the RBF (418). In this way, the rank is formed as a count of the matching bits of the queryBF and the RBF.
  • In the procedure just described, the rank for the RBF is increased if the associated bits in RBF and queryBF are the same, regardless if they are both one or zero. This can be considered a count of bits of queryBF that match the bits of RBF. In another arrangement, the rank may be formed as a sum of the bits of the queryBF that match the RBF bits. This could be expressed as rank=rank+(queryBF[k]*RBF[k]) in the expression of 420 b. The variable “rank” would be incremented by one if the associated array location of the Bloom-filters include matching ones, and would not be incremented if the array location of either Bloom-filter included a zero.
  • The value of rank is added to RankedList along with the associated RBF (422). After the last RBFList element is found (412), rankedList contains a list of RBFs and a rank associated with each RBF in the list.
  • A second list named toSendList is derived (424) from rankedList. This may involve selecting items from rankedList that satisfy a threshold value, pRate, and placing those items in toSendList. The threshold value pRate may be a simple numerical threshold that determines whether or not the query gets routed to a node. For example, pRate could include a threshold value of Rank calculated for each element in RankedList.
  • In another example, pRate can be defined as the percentage of peers that will be selected (out of the total possible immediate peers) to forward/send the query. This may be expressed as pRate=((no of peers to send or forward the query)/(total number of immediate peers))*100. If the cardinality of RankedList is Ntotal, and the cardinality of toSendList is Nsend, then the number of peers who the query will be sent can be expressed by Nsend=pRate*Ntotal/100. In other words, the first Nsend elements from the RankedList are selected, which corresponds to the Nsend highest ranked peers in RankedList.
  • Other factors may also be included with pRate to determine whether a host receives the query, such as incentive-based routing criteria (e.g., connection bandwidth). The toSendList is then used to transmit (426) the query to the appropriate hosts and the results of this query are then returned (428).
  • The example querying procedure 400 may result in the query being forward to any number of immediate peers. The query may be sent to no peers at all if the threshold is not satisfied. However, it may be desirable to send the query to at least one connected peer at a minimum, based either on a ranking or some other incentive-based selection criteria. It will be appreciated that if each peer forwarded the request to a single, immediate peer that has the highest ranking, the query would proceed as a directed walk through the peer-to-peer network.
  • By limiting the number of nodes that receive a peer-to-peer data object query, the network bandwidth may be used more effectively. Other features may be included with the queries to reduce the utilized bandwidth. A TTL and hop count value may be included with the queries to ensure the queries do not propagate past a certain level in the network. Each node that receives a query may increment the hop count and check the TTL before forwarding query.
  • Each node in the system may maintain a set of Bloom-filters used for processing system queries. In order for the data referenced by the Bloom-filters to be accurate, occasional system updates may be required. This update process will generally update Bloom-filters by reflecting data objects added or removed from the peer-to-peer network. The removal of data objects may occur due to connected nodes changing available data, such as through deletions and additions to local data sources. Data objects may also be added or deleted when nodes are inserted or removed from the network.
  • As previously described, when first connecting to a peer-to-peer network, a node may at least publish its the LBF that reflects locally available data objects. Other updates may be triggered by addition or deletion of a data object locally accessible by a node. One example of how a node may handle updates received from a peer node is shown in the flowchart 500 of FIG. 5. The procedure begins (502) with the received Bloom-filter update, BFUpdate, and an identifier of the remote host, remHost. The remhost identifier is typically an IP address, although other identifiers may be used. The remHost identifier may be checked (504) to see if this host is in the immediate peer list. In this example, the list of identifiers for immediate peers is contained in the collection immPeerList. If remhost is in immPeerList (504), the local collection of RBF data is updated (506). This collection of RBF data is represented as RBFList, similar to the example of FIG. 4.
  • If the address of the updating host is not in the list, then this may be a newly connected peer, and the BFUpdate and remHost may be added (508) to the RBFList collection. Once this maintenance of the RBFList is complete, the receiving node can proceed to send the update to immediate peers. For each peer, a synopsis Bloom-filter is formed that represents the data accessible by other immediately connected peers.
  • The list of immediate peers is traversed by removing each host identifier from immPeerList and checking (512) for the end of list (e.g., a null). The synopsis for this node is initialized (514) to the LBF. The synopsis may be initialized to other values, such as a zero vector, in cases where no LBF is used to advertise locally available data. Next, the list of RBFs is traversed by removing each RBF from RBFList and checking (516) for null. The RBF removed from RBFlist contains a reference to the address of the peer that will receive the RBF.
  • The updated RBF sent from this node to an immediate peer should not include any Bloom-filter data of the immediate peer. Therefore, if the address of this RBF equals (518) that of the destination peer, the RBF is skipped from being added to the synopsis. Otherwise, the RBF can be logically OR'd (520) to the synopsis. Once all the RBFs in RBFList have been traversed, the synopsis may be added (522) to the list. After a synopsis has been built for each immediate peer, the list can be sent (524) to the immediate peers, and the procedure can exit (526).
  • The network clients, servers or other systems for providing peer-to-peer networking using Bloom-filter query routing may be any type of computing device capable of processing and communicating digital information. An example of a representative computing system capable of carrying out operations in accordance with embodiments of the present invention is illustrated in FIG. 7. Hardware, firmware, software or a combination thereof may be used to perform the various querying and data transfer operations described herein. The computing structure 700 of FIG. 7 is an example computing structure that can be used in connection with such a peer-to-peer system.
  • The example computing structure 700 includes a computing arrangement 701. The computing arrangement 701 may act a servent or other network entity used for processing and delivering data objects in a peer-to-peer network. The computing arrangement 701 includes a central processor (CPU) 702 coupled to random access memory (RAM) 704 and read-only memory (ROM) 706. The ROM 706 may be any type of storage media used to store programs, such as programmable ROM (PROM), erasable PROM (EPROM), etc. The processor 702 may communicate with other internal and external components through input/output (I/O) circuitry 708 and bussing 710, to provide control signals and the like. For example, processing of queries may be performed by the computing arrangement 701 directed by instructions from a peer-to-peer protocol module 736 that references stored Bloom-filters 738.
  • External data storage devices, such as databases used for accessing data object queries, may be coupled to I/O circuitry 708 to facilitate data transfer functions according to the present invention. Alternatively, such databases may be locally stored in the storage/memory of the server 701, or otherwise accessible via a local network or networks having a more extensive reach such as the Internet 728.
  • The computing arrangement 701 may also include one or more data storage devices, including hard and floppy disk drives 712, CD-ROM drives 714, and other hardware capable of reading and/or storing information such as DVD, etc. In one example, software for carrying out peer-to-peer queries based on Bloom-filters may be stored and distributed on a CD-ROM 716, diskette 718 or other form of media capable of portably storing information. These storage media may be inserted into, and read by, devices such as the CD-ROM drive 714, the disk drive 712, etc. The software may also be transmitted to computing arrangement 701 via data signals, such as being downloaded electronically via a network, such as the Internet 728. The computing arrangement 701 may be coupled to a display 720, which may be any type of known display or presentation screen, such as LCD displays, plasma display, cathode ray tubes (CRT), etc. A user-input interface 722 may be provided, including one or more user interface mechanisms such as a mouse, keyboard, microphone, touch pad, touch screen, voice-recognition system, etc.
  • The computing arrangement 701 may be coupled to other computing devices, such as landline and/or wireless terminals via a network, for peer-to-peer networking. The computing arrangement 701 may be part of a larger network configuration as in a global area network (GAN) such as the Internet 728, which allows connections to the various landline and/or mobile devices, such as a peer node 730.
  • From the description provided herein, those skilled in the art are readily able to combine hardware and/or software created as described with appropriate general purpose or system and/or computer subcomponents embodiments of the invention, and to create a system and/or computer subcomponents for carrying out the method embodiments of the invention. Embodiments of the present invention may be implemented in any combination of hardware and software.
  • The foregoing description of the example embodiments of the invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. It is intended that the scope of the invention not be limited with this detailed description, but rather the scope of the invention is defined by the claims appended hereto.

Claims (25)

  1. 1. A processor-implemented method for searching for a data object in a plurality of nodes forming a peer-to-peer network, the method comprising:
    forming Bloom-Filters at the nodes as a function of data available via the nodes;
    communicating the Bloom-filters between peer-to-peer coupled nodes of the peer-to-peer network that have formed connections using incentive-based criteria to control whether one node connects to another node;
    forming a search expression for locating the data object;
    selecting nodes to propagate the search expression as a function of the Bloom-filters and the incentive-based criteria;
    propagating the search expression to the selected nodes; and
    outputting a result of the search expression from nodes that satisfy the search expression.
  2. 2. The method of claim 1, wherein forming respective Bloom filters at the nodes includes combining Remote Bloom-filters (RBFs) received from peer-to-peer coupled nodes of the respective nodes.
  3. 3. The method of claim 1, wherein selecting the nodes includes forming a query Bloom-filter based on the search expression and comparing the query Bloom-filter to the respective Bloom-filters.
  4. 4. The method of claim 3, wherein comparing the query Bloom-filter to the respective Bloom-filters includes forming a ranking associated with respective Bloom-filters as a sum of bits of the query Bloom-filter that match the bits of the respective Bloom-filter.
  5. 5. The method of claim 3, wherein comparing the query Bloom-filter to the Bloom-filters includes forming a ranking associated with respective Bloom-filters as a count of bits of the query Bloom-filter that match the bits of the respective Bloom-filter.
  6. 6. The method of claim 1, wherein forming the respective Bloom filters at the nodes includes forming the respective Bloom filters as a function of a local Bloom-filter based on data locally accessible by the respective nodes.
  7. 7. The method of claim 1, wherein the peer-to-peer network comprises a Gnutella network.
  8. 8. A system comprising:
    a plurality of data processors coupled via a peer-to-peer network arrangement, each data processor including;
    a network interface arranged to provide one or more respective connections with one or more associated data processor of the peer-to-peer network arrangement, the connections formed using an incentive-based criteria;
    a memory for storing one or more respective remote Bloom filters representing data accessible via the associated connections; and
    a processing unit arranged to;
    form a query Bloom-filter based on a data query;
    select a subset of the connections as a function of the query Bloom-filter and the respective remote Bloom-filters associated with the connections; and
    send the data query to the subset of the connections.
  9. 9. The system of claim 8, wherein at least one data processor of the plurality of data processors further includes a local data storage adapted for storing data objects.
  10. 10. The system of claim 9, wherein the memory of the at least one data processor is configured for storing a local Bloom-filter representing data accessible via the local data storage.
  11. 11. The system of claim 8, wherein the processing units of the data processors are further arranged to publish a Bloom-filter to a selected connection of the one or more connections, the Bloom-filter representing data accessible via the respective data processors.
  12. 12. The system of claim 11, wherein the Bloom filter is formed as a logical OR of the remote Bloom filters of the respective data processors except for the remote Bloom filter associated with the selected connection.
  13. 13. The system of claim 11, wherein at least one data processor of the plurality of data processors further includes a local data storage adapted for storing data, and the memory of the at least one data processor is configured for storing a local Bloom-filter representing data accessible via the respective local data storage.
  14. 14. The system of claim 13, wherein the Bloom filter is formed as a logical OR of:
    the local Bloom-filter; and
    the remote Bloom filters of the respective data processor except for the remote Bloom filter associated with the selected connection.
  15. 15. The system of claim 8, wherein the peer-to-peer network arrangement includes a Gnutella network arrangement.
  16. 16. A computer-readable medium having instructions stored thereon which are executable on a processor for performing steps comprising:
    forming one or more respective peer-to-peer connections with one or more network peers of the processor using an incentive-based criteria;
    receiving respective remote Bloom-filters representing data accessible via associated peer-to-peer connections;
    forming a query Bloom-filter based on a data query;
    selecting a subset of the peer-to-peer connections as a function of the query Bloom-filter and the respective remote Bloom filters associated with the peer-to-peer connections; and
    sending the data query to the subset of the connections.
  17. 17. The computer-readable medium of claim 16, wherein the steps further include forming a local Bloom-filter based on data accessible via a local data storage of the processor.
  18. 18. The computer-readable medium of claim 16, wherein the steps further include sending a Bloom-filter to a selected peer-to-peer connection of the one or more peer-to-peer connections indicating data accessible via the processor.
  19. 19. The computer-readable medium of claim 18, wherein the Bloom filter is formed as a logical OR of the remote Bloom filters of the processor except for the remote Bloom filter associated with the selected peer-to-peer connection.
  20. 20. The computer-readable medium of claim 11, wherein the peer-to-peer connections utilize a Gnutella protocol.
  21. 21. A method for updating a Bloom-filter array having a plurality of bits that indicate data accessible via a peer-to-peer network, comprising:
    associating respective counters with the bits of the Bloom-filter array;
    receiving a Bloom-filter update having a plurality of bits associated with the bits of the Bloom-filter array that indicate a change in the data accessible via the peer-to-peer network;
    changing the respective counters based on the associated bits of the Bloom-filter update;
    setting the bits of the Bloom-filter array to zero where the respective counters associated with the bits are zero; and
    setting the bits of the Bloom-filter array to one where the respective counters associated with the bits are greater than zero.
  22. 22. The method of claim 21, wherein the Bloom-filter update indicates data added to the peer-to-peer network, and changing the counters based on the bits of the Bloom-filter update includes incrementing all counters associated with non-zero bits of the Bloom-filter update.
  23. 23. The method of claim 21, wherein the Bloom-filter update indicates data removed from the peer-to-peer network, and changing the counters based on the bits of the Bloom-filter update includes decrementing all counters associated with non-zero bits of the Bloom-filter update.
  24. 24. A data processing arrangement, comprising means for storing data objects;
    means for forming respective peer-to-peer data connections with one or more network peers using an incentive-based criteria;
    means for storing remote Bloom-filters associated with respective peer-to-peer data connections, the Bloom-filters indicating data accessible via the respective peer-to-peer data connections;
    means for forming a query for locating one or more data objects of the network peers; and
    means for sending the query to a subset of the peer-to-peer data connections as a function of the query and the Bloom filters associated with the respective peer-to-peer data connections.
  25. 25. The data processing arrangement of claim 24, wherein the peer-to-peer data connections utilize a Gnutella protocol.
US10699359 2003-10-30 2003-10-30 Method and apparatus for representing data available in a peer-to-peer network using bloom-filters Abandoned US20050108368A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US10699359 US20050108368A1 (en) 2003-10-30 2003-10-30 Method and apparatus for representing data available in a peer-to-peer network using bloom-filters

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10699359 US20050108368A1 (en) 2003-10-30 2003-10-30 Method and apparatus for representing data available in a peer-to-peer network using bloom-filters

Publications (1)

Publication Number Publication Date
US20050108368A1 true true US20050108368A1 (en) 2005-05-19

Family

ID=34573280

Family Applications (1)

Application Number Title Priority Date Filing Date
US10699359 Abandoned US20050108368A1 (en) 2003-10-30 2003-10-30 Method and apparatus for representing data available in a peer-to-peer network using bloom-filters

Country Status (1)

Country Link
US (1) US20050108368A1 (en)

Cited By (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050108203A1 (en) * 2003-11-13 2005-05-19 Chunqiang Tang Sample-directed searching in a peer-to-peer system
US20050149734A1 (en) * 2004-01-02 2005-07-07 Nokia Corporation Replay prevention mechanism for EAP/SIM authentication
US20070078827A1 (en) * 2005-10-05 2007-04-05 Microsoft Corporation Searching for information utilizing a probabilistic detector
US20070198419A1 (en) * 2006-02-03 2007-08-23 Park Joon Y Method of transferring digital rights
US20070274324A1 (en) * 2006-05-26 2007-11-29 Microsoft Corporation Local network coding for wireless networks
US20080027923A1 (en) * 2006-07-28 2008-01-31 George David A Method and apparatus for managing peer-to-peer search results
US20080075080A1 (en) * 2006-09-27 2008-03-27 Dina Katabi Methods and apparatus for network coding
US20080154852A1 (en) * 2006-12-21 2008-06-26 Kevin Scott Beyer System and method for generating and using a dynamic bloom filter
US20080232275A1 (en) * 2007-03-23 2008-09-25 Anand Eswaran Data-Type-Based Network Path Configuration
US20080232276A1 (en) * 2007-03-23 2008-09-25 Ravindra Guntur Load-Aware Network Path Configuration
US20080256094A1 (en) * 2007-04-12 2008-10-16 Cisco Technology, Inc. Enhanced bloom filters
US20080301218A1 (en) * 2007-05-31 2008-12-04 Microsoft Corporation Strategies for Compressing Information Using Bloom Filters
WO2009009364A1 (en) * 2007-07-10 2009-01-15 Qualcomm Incorporated Coding methods of communicating identifiers in peer discovery in a peer-to-peer network
US20090016248A1 (en) * 2007-07-10 2009-01-15 Qualcomm Incorporated Coding methods of communicating identifiers in peer discovery in a peer-to-peer network
US20090016249A1 (en) * 2007-07-10 2009-01-15 Qualcomm Incorporated Coding methods of communicating identifiers in peer discovery in a peer-to-peer network
US20090016250A1 (en) * 2007-07-10 2009-01-15 Qualcomm Incorporated Coding methods of communicating identifiers in peer discovery in a peer-to-peer network
US20090319503A1 (en) * 2004-12-03 2009-12-24 National University Of Singapore Matching queries in a network
US20100030840A1 (en) * 2008-07-31 2010-02-04 Microsoft Corporation Content Discovery and Transfer Between Mobile Communications Nodes
US20100027588A1 (en) * 2008-07-31 2010-02-04 Microsoft Corporation Content Transfer
US20100100911A1 (en) * 2008-10-20 2010-04-22 At&T Corp. System and Method for Delivery of Video-on-Demand
US20100153771A1 (en) * 2005-09-30 2010-06-17 Rockwell Automation Technologies, Inc. Peer-to-peer exchange of data resources in a control system
US20100228701A1 (en) * 2009-03-06 2010-09-09 Microsoft Corporation Updating bloom filters
US20100281150A1 (en) * 2007-06-29 2010-11-04 Francoise Sailhan Method of Processing Event Notifications and Event Subscriptions
US20100318795A1 (en) * 2009-06-11 2010-12-16 Qualcomm Incorporated Bloom filter based device discovery
US20120011150A1 (en) * 2009-07-14 2012-01-12 Ashwin Swaminathan Methods and Apparatus for Efficiently Processing Multiple Keyword Queries on a Distributed Network
US20120051363A1 (en) * 2009-06-09 2012-03-01 Zahemszky Andras Packet forwarding in a network
US8185576B2 (en) 2006-03-14 2012-05-22 Altnet, Inc. Filter for a distributed network
US8200826B1 (en) * 2004-09-09 2012-06-12 Openwave Systems Inc. Communal memory
US20120158756A1 (en) * 2010-12-20 2012-06-21 Jimenez Jaime Searching in Peer to Peer Networks
EP2503804A1 (en) * 2011-03-21 2012-09-26 Apple Inc. Apparatus and method for managing peer-to-peer connections between different service providers
US20120317130A1 (en) * 2011-06-13 2012-12-13 Fujitsu Limited Computer product, search method, search apparatus, and node
US20130036236A1 (en) * 2011-08-01 2013-02-07 Xerox Corporation Method and system for creating peer-to-peer geographical routing and multi-attribute similarity routing
US20130132408A1 (en) * 2011-11-23 2013-05-23 Mark Cameron Little System and Method for Using Bloom Filters to Determine Data Locations in Distributed Data Stores
US8498995B1 (en) * 2011-03-24 2013-07-30 Emc Corporation Optimizing data retrieval during event data query processing
US20130318606A1 (en) * 2004-05-11 2013-11-28 The Trustees Of Columbia University In The City Of New York Systems and Methods for Correlating and Distributing Intrusion Alert Information Among Collaborating Computer Systems
US20140259005A1 (en) * 2013-03-08 2014-09-11 Air Computing, Inc. Systems and methods for managing files in a cloud-based computing environment
US20150088882A1 (en) * 2013-06-19 2015-03-26 Hitachi Data Systems Engineering UK Limited Locating file data from a mapping file
US9021296B1 (en) 2013-10-18 2015-04-28 Hitachi Data Systems Engineering UK Limited Independent data integrity and redundancy recovery in a storage system
US20160034311A1 (en) * 2011-05-13 2016-02-04 Oracle International Corporation Tracking large numbers of moving objects in an event processing system
US20160147806A1 (en) * 2014-11-25 2016-05-26 Rolando Blanco Versioned bloom filter
US9418113B2 (en) 2013-05-30 2016-08-16 Oracle International Corporation Value based windows on relations in continuous data streams
US9430494B2 (en) 2009-12-28 2016-08-30 Oracle International Corporation Spatial data cartridge for event processing systems
US9563663B2 (en) 2012-09-28 2017-02-07 Oracle International Corporation Fast path evaluation of Boolean predicates
US9712645B2 (en) 2014-06-26 2017-07-18 Oracle International Corporation Embedded event processing
US9756104B2 (en) 2011-05-06 2017-09-05 Oracle International Corporation Support for a new insert stream (ISTREAM) operation in complex event processing (CEP)
US9805095B2 (en) 2012-09-28 2017-10-31 Oracle International Corporation State initialization for continuous queries over archived views
US9848372B2 (en) 2007-07-10 2017-12-19 Qualcomm Incorporated Coding Methods of communicating identifiers in peer discovery in a peer-to-peer network
US9886486B2 (en) 2014-09-24 2018-02-06 Oracle International Corporation Enriching events with dynamically typed big data for event processing
US9934279B2 (en) 2013-12-05 2018-04-03 Oracle International Corporation Pattern matching across multiple input data streams
US9972103B2 (en) 2015-07-24 2018-05-15 Oracle International Corporation Visually exploring and analyzing event streams
US10083210B2 (en) 2013-02-19 2018-09-25 Oracle International Corporation Executing continuous event processing (CEP) queries in parallel
US10120907B2 (en) 2014-09-24 2018-11-06 Oracle International Corporation Scaling event processing using distributed flows and map-reduce operations

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020120814A1 (en) * 2001-01-10 2002-08-29 Hoi-Jin Lee Partial match partial output cache for computer arithmetic operations
US20020178255A1 (en) * 2001-05-16 2002-11-28 John Hobart Incentive program for a peer-to-peer network
US20030050980A1 (en) * 2001-09-13 2003-03-13 International Business Machines Corporation Method and apparatus for restricting a fan-out search in a peer-to-peer network based on accessibility of nodes
US6560654B1 (en) * 1999-10-12 2003-05-06 Nortel Networks Limited Apparatus and method of maintaining timely topology data within a link state routing network
US20030126122A1 (en) * 2001-09-18 2003-07-03 Bosley Carleton J. Systems, methods and programming for routing and indexing globally addressable objects and associated business models
US20050086520A1 (en) * 2003-08-14 2005-04-21 Sarang Dharmapurikar Method and apparatus for detecting predefined signatures in packet payload using bloom filters
US20080183703A1 (en) * 2003-09-08 2008-07-31 International Business Machines Corporation Uniform search system and method for selectively sharing distributed access-controlled documents
US20100042727A1 (en) * 2003-06-04 2010-02-18 Sony Computer Entertainment Inc. Method and system for managing a peer of a peer-to-peer network to search for available resources

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6560654B1 (en) * 1999-10-12 2003-05-06 Nortel Networks Limited Apparatus and method of maintaining timely topology data within a link state routing network
US20020120814A1 (en) * 2001-01-10 2002-08-29 Hoi-Jin Lee Partial match partial output cache for computer arithmetic operations
US20020178255A1 (en) * 2001-05-16 2002-11-28 John Hobart Incentive program for a peer-to-peer network
US20030050980A1 (en) * 2001-09-13 2003-03-13 International Business Machines Corporation Method and apparatus for restricting a fan-out search in a peer-to-peer network based on accessibility of nodes
US20030126122A1 (en) * 2001-09-18 2003-07-03 Bosley Carleton J. Systems, methods and programming for routing and indexing globally addressable objects and associated business models
US20100042727A1 (en) * 2003-06-04 2010-02-18 Sony Computer Entertainment Inc. Method and system for managing a peer of a peer-to-peer network to search for available resources
US20050086520A1 (en) * 2003-08-14 2005-04-21 Sarang Dharmapurikar Method and apparatus for detecting predefined signatures in packet payload using bloom filters
US20080183703A1 (en) * 2003-09-08 2008-07-31 International Business Machines Corporation Uniform search system and method for selectively sharing distributed access-controlled documents

Cited By (119)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050108203A1 (en) * 2003-11-13 2005-05-19 Chunqiang Tang Sample-directed searching in a peer-to-peer system
US20050149734A1 (en) * 2004-01-02 2005-07-07 Nokia Corporation Replay prevention mechanism for EAP/SIM authentication
US7418595B2 (en) * 2004-01-02 2008-08-26 Nokia Siemens Networks Oy Replay prevention mechanism for EAP/SIM authentication
US9135438B2 (en) * 2004-05-11 2015-09-15 The Trustees Of Columbia University In The City Of New York Systems and methods for correlating and distributing intrusion alert information among collaborating computer systems
US10038704B2 (en) 2004-05-11 2018-07-31 The Trustees Of Columbia University In The City Of New York Systems and methods for correlating and distributing intrusion alert information among collaborating computer systems
US20130318606A1 (en) * 2004-05-11 2013-11-28 The Trustees Of Columbia University In The City Of New York Systems and Methods for Correlating and Distributing Intrusion Alert Information Among Collaborating Computer Systems
US8200826B1 (en) * 2004-09-09 2012-06-12 Openwave Systems Inc. Communal memory
US8271522B2 (en) * 2004-12-03 2012-09-18 National University Of Singapore Matching queries in a network
US20090319503A1 (en) * 2004-12-03 2009-12-24 National University Of Singapore Matching queries in a network
US20100153771A1 (en) * 2005-09-30 2010-06-17 Rockwell Automation Technologies, Inc. Peer-to-peer exchange of data resources in a control system
US9819733B2 (en) 2005-09-30 2017-11-14 Rockwell Automation Technologies, Inc. Peer-to-peer exchange of data resources in a control system
US9628557B2 (en) 2005-09-30 2017-04-18 Rockwell Automation Technologies, Inc. Peer-to-peer exchange of data resources in a control system
US8688780B2 (en) * 2005-09-30 2014-04-01 Rockwell Automation Technologies, Inc. Peer-to-peer exchange of data resources in a control system
US20070078827A1 (en) * 2005-10-05 2007-04-05 Microsoft Corporation Searching for information utilizing a probabilistic detector
US7730058B2 (en) * 2005-10-05 2010-06-01 Microsoft Corporation Searching for information utilizing a probabilistic detector
EP1985057A2 (en) * 2006-02-03 2008-10-29 Motorola, Inc. Method of transferring digital rights
US7526451B2 (en) * 2006-02-03 2009-04-28 Motorola, Inc. Method of transferring digital rights
EP1985057A4 (en) * 2006-02-03 2014-01-15 Motorola Mobility Llc Method of transferring digital rights
US20070198419A1 (en) * 2006-02-03 2007-08-23 Park Joon Y Method of transferring digital rights
US8185576B2 (en) 2006-03-14 2012-05-22 Altnet, Inc. Filter for a distributed network
US9098683B2 (en) 2006-03-14 2015-08-04 Global File Systems Holdings, Llc Filter for a distributed network
US8775508B2 (en) 2006-03-14 2014-07-08 Altnet, Inc. Filter for a distributed network
US20070274324A1 (en) * 2006-05-26 2007-11-29 Microsoft Corporation Local network coding for wireless networks
US8040836B2 (en) * 2006-05-26 2011-10-18 Microsoft Corporation Local network coding for wireless networks
US7509312B2 (en) * 2006-07-28 2009-03-24 International Business Machines Corporation Method and apparatus for managing peer-to-peer search results
US7979414B2 (en) 2006-07-28 2011-07-12 International Business Machines Corporation Method and apparatus for managing peer-to-peer search results
US20080263030A1 (en) * 2006-07-28 2008-10-23 George David A Method and apparatus for managing peer-to-peer search results
US20080027923A1 (en) * 2006-07-28 2008-01-31 George David A Method and apparatus for managing peer-to-peer search results
US20080075080A1 (en) * 2006-09-27 2008-03-27 Dina Katabi Methods and apparatus for network coding
US8081641B2 (en) * 2006-09-27 2011-12-20 Massachusetts Institute Of Technology Methods and apparatus for network coding
US8209368B2 (en) * 2006-12-21 2012-06-26 International Business Machines Corporation Generating and using a dynamic bloom filter
US20080154852A1 (en) * 2006-12-21 2008-06-26 Kevin Scott Beyer System and method for generating and using a dynamic bloom filter
US7937428B2 (en) 2006-12-21 2011-05-03 International Business Machines Corporation System and method for generating and using a dynamic bloom filter
US20080243800A1 (en) * 2006-12-21 2008-10-02 International Business Machines Corporation System and method for generating and using a dynamic blood filter
US20080232276A1 (en) * 2007-03-23 2008-09-25 Ravindra Guntur Load-Aware Network Path Configuration
US8509075B2 (en) * 2007-03-23 2013-08-13 Hewlett-Packard Development Company, Lp Data-type-based network path configuration
US8089882B2 (en) 2007-03-23 2012-01-03 Hewlett-Packard Development Company, L.P. Load-aware network path configuration
US20080232275A1 (en) * 2007-03-23 2008-09-25 Anand Eswaran Data-Type-Based Network Path Configuration
US20080256094A1 (en) * 2007-04-12 2008-10-16 Cisco Technology, Inc. Enhanced bloom filters
US8032529B2 (en) * 2007-04-12 2011-10-04 Cisco Technology, Inc. Enhanced bloom filters
US8224940B2 (en) 2007-05-31 2012-07-17 Microsoft Corporation Strategies for compressing information using bloom filters
US20080301218A1 (en) * 2007-05-31 2008-12-04 Microsoft Corporation Strategies for Compressing Information Using Bloom Filters
US8321528B2 (en) * 2007-06-29 2012-11-27 Telefonaktiebolaget L M Ericsson (Publ) Method of processing event notifications and event subscriptions
US20100281150A1 (en) * 2007-06-29 2010-11-04 Francoise Sailhan Method of Processing Event Notifications and Event Subscriptions
US20090016249A1 (en) * 2007-07-10 2009-01-15 Qualcomm Incorporated Coding methods of communicating identifiers in peer discovery in a peer-to-peer network
US20090016248A1 (en) * 2007-07-10 2009-01-15 Qualcomm Incorporated Coding methods of communicating identifiers in peer discovery in a peer-to-peer network
WO2009009364A1 (en) * 2007-07-10 2009-01-15 Qualcomm Incorporated Coding methods of communicating identifiers in peer discovery in a peer-to-peer network
US8630281B2 (en) * 2007-07-10 2014-01-14 Qualcomm Incorporated Coding methods of communicating identifiers in peer discovery in a peer-to-peer network
US20090016250A1 (en) * 2007-07-10 2009-01-15 Qualcomm Incorporated Coding methods of communicating identifiers in peer discovery in a peer-to-peer network
US9198148B2 (en) 2007-07-10 2015-11-24 Qualcomm Incorporated Coding methods of communicating identifiers in peer discovery in a peer-to-peer network
US8520704B2 (en) 2007-07-10 2013-08-27 Qualcomm Incorporated Coding methods of communicating identifiers in peer discovery in a peer-to-peer network
US20090016353A1 (en) * 2007-07-10 2009-01-15 Qualcomm Incorporated Coding methods of communicating identifiers in peer discovery in a peer-to-peer network
US7961708B2 (en) 2007-07-10 2011-06-14 Qualcomm Incorporated Coding methods of communicating identifiers in peer discovery in a peer-to-peer network
US9848372B2 (en) 2007-07-10 2017-12-19 Qualcomm Incorporated Coding Methods of communicating identifiers in peer discovery in a peer-to-peer network
US8494007B2 (en) 2007-07-10 2013-07-23 Qualcomm Incorporated Coding methods of communicating identifiers in peer discovery in a peer-to-peer network
KR101120329B1 (en) 2007-07-10 2012-03-14 콸콤 인코포레이티드 Coding methods of communicating identifiers in peer discovery in a peer-to-peer network
US8649276B2 (en) * 2008-07-31 2014-02-11 Microsoft Corporation Content transfer
US8402087B2 (en) 2008-07-31 2013-03-19 Microsoft Corporation Content discovery and transfer between mobile communications nodes
US8103718B2 (en) 2008-07-31 2012-01-24 Microsoft Corporation Content discovery and transfer between mobile communications nodes
US20100030840A1 (en) * 2008-07-31 2010-02-04 Microsoft Corporation Content Discovery and Transfer Between Mobile Communications Nodes
US20100027588A1 (en) * 2008-07-31 2010-02-04 Microsoft Corporation Content Transfer
US8949915B2 (en) * 2008-10-20 2015-02-03 At&T Intellectual Property Ii, Lp System and method for delivery of Video-on-Demand
US20100100911A1 (en) * 2008-10-20 2010-04-22 At&T Corp. System and Method for Delivery of Video-on-Demand
US20100228701A1 (en) * 2009-03-06 2010-09-09 Microsoft Corporation Updating bloom filters
US20120051363A1 (en) * 2009-06-09 2012-03-01 Zahemszky Andras Packet forwarding in a network
US8681792B2 (en) * 2009-06-09 2014-03-25 Telefonaktiebolaget L M Ericsson (Publ) Packet forwarding in a network
US20100318795A1 (en) * 2009-06-11 2010-12-16 Qualcomm Incorporated Bloom filter based device discovery
WO2010144748A1 (en) * 2009-06-11 2010-12-16 Qualcomm Incorporated Bloom filter based device discovery
US9179305B2 (en) 2009-06-11 2015-11-03 Qualcomm Incorporated Bloom filter based device discovery
US8996568B2 (en) * 2009-07-14 2015-03-31 Qualcomm Incorporated Methods and apparatus for efficiently processing multiple keyword queries on a distributed network
US20120011150A1 (en) * 2009-07-14 2012-01-12 Ashwin Swaminathan Methods and Apparatus for Efficiently Processing Multiple Keyword Queries on a Distributed Network
US9430494B2 (en) 2009-12-28 2016-08-30 Oracle International Corporation Spatial data cartridge for event processing systems
US20120158756A1 (en) * 2010-12-20 2012-06-21 Jimenez Jaime Searching in Peer to Peer Networks
EP2656244A4 (en) * 2010-12-20 2015-10-21 Ericsson Telefon Ab L M Searching in peer to peer networks
CN103299295A (en) * 2010-12-20 2013-09-11 瑞典爱立信有限公司 Searching in peer to peer networks
WO2012087188A1 (en) * 2010-12-20 2012-06-28 Telefonaktiebolaget L M Ericsson (Publ) Searching in peer to peer networks
US20120246301A1 (en) * 2011-03-21 2012-09-27 Vyrros Andrew H Apparatus and method for managing peer-to-peer connections between different service providers
US9667713B2 (en) * 2011-03-21 2017-05-30 Apple Inc. Apparatus and method for managing peer-to-peer connections between different service providers
EP2503804A1 (en) * 2011-03-21 2012-09-26 Apple Inc. Apparatus and method for managing peer-to-peer connections between different service providers
US8498995B1 (en) * 2011-03-24 2013-07-30 Emc Corporation Optimizing data retrieval during event data query processing
US9756104B2 (en) 2011-05-06 2017-09-05 Oracle International Corporation Support for a new insert stream (ISTREAM) operation in complex event processing (CEP)
US20160034311A1 (en) * 2011-05-13 2016-02-04 Oracle International Corporation Tracking large numbers of moving objects in an event processing system
US9804892B2 (en) 2011-05-13 2017-10-31 Oracle International Corporation Tracking large numbers of moving objects in an event processing system
US9535761B2 (en) * 2011-05-13 2017-01-03 Oracle International Corporation Tracking large numbers of moving objects in an event processing system
US8819036B2 (en) * 2011-06-13 2014-08-26 Fujitsu Limited Computer product, search method, search apparatus, and node
US20120317130A1 (en) * 2011-06-13 2012-12-13 Fujitsu Limited Computer product, search method, search apparatus, and node
US20130036236A1 (en) * 2011-08-01 2013-02-07 Xerox Corporation Method and system for creating peer-to-peer geographical routing and multi-attribute similarity routing
US20130132408A1 (en) * 2011-11-23 2013-05-23 Mark Cameron Little System and Method for Using Bloom Filters to Determine Data Locations in Distributed Data Stores
US8990243B2 (en) * 2011-11-23 2015-03-24 Red Hat, Inc. Determining data location in a distributed data store
US9990401B2 (en) 2012-09-28 2018-06-05 Oracle International Corporation Processing events for continuous queries on archived relations
US9990402B2 (en) 2012-09-28 2018-06-05 Oracle International Corporation Managing continuous queries in the presence of subqueries
US9946756B2 (en) 2012-09-28 2018-04-17 Oracle International Corporation Mechanism to chain continuous queries
US10025825B2 (en) 2012-09-28 2018-07-17 Oracle International Corporation Configurable data windows for archived relations
US9563663B2 (en) 2012-09-28 2017-02-07 Oracle International Corporation Fast path evaluation of Boolean predicates
US9953059B2 (en) 2012-09-28 2018-04-24 Oracle International Corporation Generation of archiver queries for continuous queries over archived relations
US10042890B2 (en) 2012-09-28 2018-08-07 Oracle International Corporation Parameterized continuous query templates
US9703836B2 (en) 2012-09-28 2017-07-11 Oracle International Corporation Tactical query to continuous query conversion
US10102250B2 (en) 2012-09-28 2018-10-16 Oracle International Corporation Managing continuous queries with archived relations
US9715529B2 (en) 2012-09-28 2017-07-25 Oracle International Corporation Hybrid execution of continuous and scheduled queries
US9805095B2 (en) 2012-09-28 2017-10-31 Oracle International Corporation State initialization for continuous queries over archived views
US9852186B2 (en) 2012-09-28 2017-12-26 Oracle International Corporation Managing risk with continuous queries
US10083210B2 (en) 2013-02-19 2018-09-25 Oracle International Corporation Executing continuous event processing (CEP) queries in parallel
US20140259005A1 (en) * 2013-03-08 2014-09-11 Air Computing, Inc. Systems and methods for managing files in a cloud-based computing environment
US20160026455A1 (en) * 2013-03-08 2016-01-28 Mark Christopher Jeffrey Systems and methods for managing files in a cloud-based computing environment
US9418113B2 (en) 2013-05-30 2016-08-16 Oracle International Corporation Value based windows on relations in continuous data streams
US20150088882A1 (en) * 2013-06-19 2015-03-26 Hitachi Data Systems Engineering UK Limited Locating file data from a mapping file
US9069784B2 (en) 2013-06-19 2015-06-30 Hitachi Data Systems Engineering UK Limited Configuring a virtual machine
US9110719B2 (en) 2013-06-19 2015-08-18 Hitachi Data Systems Engineering UK Limited Decentralized distributed computing system
US9304821B2 (en) * 2013-06-19 2016-04-05 Hitachi Data Systems Engineering UK Limited Locating file data from a mapping file
US9235581B2 (en) 2013-10-18 2016-01-12 Hitachi Data Systems Engineering UK Limited Data configuration and migration in a cluster system
US9430484B2 (en) 2013-10-18 2016-08-30 Hitachi, Ltd. Data redundancy in a cluster system
US9021296B1 (en) 2013-10-18 2015-04-28 Hitachi Data Systems Engineering UK Limited Independent data integrity and redundancy recovery in a storage system
US9934279B2 (en) 2013-12-05 2018-04-03 Oracle International Corporation Pattern matching across multiple input data streams
US9712645B2 (en) 2014-06-26 2017-07-18 Oracle International Corporation Embedded event processing
US9886486B2 (en) 2014-09-24 2018-02-06 Oracle International Corporation Enriching events with dynamically typed big data for event processing
US10120907B2 (en) 2014-09-24 2018-11-06 Oracle International Corporation Scaling event processing using distributed flows and map-reduce operations
US20160147806A1 (en) * 2014-11-25 2016-05-26 Rolando Blanco Versioned bloom filter
US9886464B2 (en) * 2014-11-25 2018-02-06 Sap Se Versioned bloom filter
US9972103B2 (en) 2015-07-24 2018-05-15 Oracle International Corporation Visually exploring and analyzing event streams

Similar Documents

Publication Publication Date Title
Clarke et al. Freenet: A distributed anonymous information storage and retrieval system
Cai et al. RDFPeers: a scalable distributed RDF repository based on a structured peer-to-peer network
Tang et al. Coordinated en-route web caching
Tang et al. Hybrid Global-Local Indexing for Efficient Peer-to-Peer Information Retrieval.
Gnawali A keyword-set search system for peer-to-peer networks
US6839769B2 (en) Limiting request propagation in a distributed file system
Aberer et al. An Overview of Peer-to-Peer Information Systems.
Sripanidkulchai et al. Efficient content location using interest-based locality in peer-to-peer systems
Li et al. Semantic small world: An overlay network for peer-to-peer search
Hasan et al. A survey of peer-to-peer storage techniques for distributed file systems
Ramabhadran et al. Prefix hash tree: An indexing data structure over distributed hash tables
Tsoumakos et al. A Comparison of Peer-to-Peer Search Methods.
Hildrum et al. Distributed object location in a dynamic network
US20060149806A1 (en) Hashing algorithm used for multiple files having identical content and fingerprint in a peer-to-peer network
US6654795B1 (en) System and method for distribution of network file accesses over network storage devices
Aberer P-Grid: A self-organizing access structure for P2P information systems
US20060271530A1 (en) Retrieving a replica of an electronic document in a computer network
US20050063318A1 (en) Providing a notification including location information for nodes in an overlay network
US20080016240A1 (en) Method for obtaining information objects in a communication system
US20050076137A1 (en) Utilizing proximity information in an overlay network
US20020073204A1 (en) Method and system for exchange of node characteristics for DATA sharing in peer-to-peer DATA networks
US20050198328A1 (en) Identifying a service node in a network
US20050163050A1 (en) Method for monitoring and providing information over a peer to peer network
Castro et al. Debunking some myths about structured and unstructured overlays
EP1351141A2 (en) Method and system for managing data records on a computer network

Legal Events

Date Code Title Description
AS Assignment

Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MOHAN, ADITYA;KALOGERAKI, VASILIKI;VAN MOORSEL, AAD;REEL/FRAME:015219/0442;SIGNING DATES FROM 20031014 TO 20040405

AS Assignment

Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.;REEL/FRAME:037079/0001

Effective date: 20151027