# US 8,788,573 B2 · Method and apparatus for efficiently expanding a P2P network

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,788,573 B2
- Document ID: US8788573B2
- Status: Granted
- Kind: B2
- Application number: 12/164,979
- Filed: 2008-06-30
- Published: 2008-10-30
- Granted: 2014-07-22
- Earliest claimed: 2005-03-21
- Assignees: International Business Machines Corporation
- Applicants: Raymond B. Jennings, III; Jason D. LaVoie
- Inventors: Raymond B. Jennings, III; Jason D. LaVoie
- Web page: https://patentgrep.com/patent/US8788573B2

## CPC

- H04L 67/104: Peer-to-peer [P2P] networks
- H04L 67/107: {with limitation or expansion of the discovery scope}
- H04L 67/51: Discovery or management thereof, e.g. service location protocol [SLP] or web services
- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- H04L 67/59: Providing operational support to end devices by off-loading in the network or by emulation, e.g. when they are unavailable
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

One embodiment of the present method and apparatus for efficiently expanding a P2P network includes receiving a search request message from a requesting node and sending a response message to the requesting node on behalf of a node that has the requested data, where the response message originates at an intermediate node. The intermediate node may respond on behalf of the “responding” node, for example, in cases where the responding node is too far away from the requesting node to receive the search request message.

## Claims

### Claim 1

A method for transferring data from a first node to a second node in a network, said method comprising steps of:
receiving, at a third node in the network, a search request message originating from said second node, said search request message requesting the data;
determining, by the third node, that the first node has the data and that the search request message will not reach the first node; and
sending, by the third node, a response message to said second node said response message indicating that said first node has the data, wherein said sending comprises:
locating information related to said data in a database associated with said third node, where said database includes at least one entry comprising information taken from a prior response message received by said third node in connection with a prior transfer of said data, the prior response message including a dedicated field that explicitly indicates a length of time for which said data will be available at said first node; and
constructing said response message using said information taken from said prior response message, wherein said information taken from said prior response message comprises at least one of: a name of said data, a description of content of said data, a size of said data, a type of said data, a time of said prior transfer of said data, a number of hops separating said third node from said first node, meta data related to said prior response message, a source of said data, or said prior response message,
wherein the search request message specifies that the response message must come from a source of the data unless a hop count of the search request message has reached a specified value, and wherein the search request message further specifies that the response message is permitted to come from a node other than the source of the data when the hop count reaches the specified value, and
wherein at least one of: the receiving, the determining, or the sending is performed using a processor.

### Claim 2 (depends on 1)

The method of claim 1, where said prior response message originated at said first node.

### Claim 3 (depends on 1)

The method of claim 1, wherein said information related to said data is automatically saved in said database for every response message received by said third node.

### Claim 4 (depends on 1)

The method of claim 1, wherein said information related to said data is saved based on at least one of: available database memory, available database storage, network bandwidth speed, network bandwidth utilization, or a length of time for which said first node has been active on said network.

### Claim 5 (depends on 1)

The method of claim 1, wherein said method is executed at said second node.

### Claim 6 (depends on 1)

The method of claim 1, wherein the third node receives the search request message from a fourth node that is different from the first node and the second node.

### Claim 7 (depends on 1)

The method of claim 1, wherein said third node is an intermediate node located between said first node and second node.

### Claim 8 (depends on 1)

The method of claim 1, wherein the determining comprises:
examining a time to live field or a hop count field of said search request message to determine how far in said network said search request message will travel; and
concluding that said time to live field or hop count field will expire before the search request message reaches the first node.

### Claim 9 (depends on 1)

The method of claim 1, wherein a time period for keeping said at least one entry in said database is dictated by at least one of: a fixed number of most recent data transfers, a fixed number of most popular responses, a fixed number of least popular data responses, or a length of time for which said first node has been active in said network.

### Claim 10 (depends on 1)

The method of claim 1, wherein the prior response message indicates a length of time for which said first node has been active in said network.

### Claim 11 (depends on 1)

The method of claim 1, wherein the search request message specifies that the at least one entry must be no older than a defined age in order for the information to be included in said response message.

### Claim 12

A non-transitory computer readable storage device containing an executable program for transferring data from a first node to a second node in a network, where the program performs steps of:
receiving, at a third node in the network, a search request message originating from said second node, said search request message requesting the data;
determining, by the third node, that the first node has the data and that the search request message will not reach the first node; and
sending, by the third node, a response message to said second node, said response message indicating that said first node has the data, wherein said sending comprises:
locating information related to said data in a database associated with said third node, where said database includes at least one entry comprising information taken from a prior response message received by said third node in connection with a prior transfer of said data, the prior response message including a dedicated field that explicitly indicates a length of time for which said data will be available at said first node; and
constructing said response message using said information taken from said prior response message, wherein said information taken from said prior response message comprises at least one of: a name of said data, a description of content of said data, a size of said data, a type of said data, a time of said prior transfer of said data, a number of hops separating said third node from said first node, meta data related to said prior response message, a source of said data, or said prior response message,
wherein the search request message specifies that the response message must come from a source of the data unless a hop count of the search request message has reached a specified value, and wherein the search request message further specifies that the response message is permitted to come from a node other than the source of the data when the hop count reaches the specified value.

### Claim 13 (depends on 12)

The non-transitory computer readable storage device of claim 12, where said prior response message originated at said first node.

### Claim 14 (depends on 12)

The non-transitory computer readable storage device of claim 12, wherein said information related to said data is automatically saved in said database for every response message received by said third node.

### Claim 15 (depends on 12)

The non-transitory computer readable storage device of claim 12, wherein said information related to said data is saved based on at least one of: available database memory, available database storage, network bandwidth speed, network bandwidth utilization, or a length of time for which said first node has been active on said network.

### Claim 16 (depends on 12)

The non-transitory computer readable storage device of claim 12, wherein said program is executed at said second node.

### Claim 17 (depends on 12)

The non-transitory computer readable storage device of claim 12, wherein said third node is an intermediate node located between said first node and second node.

### Claim 18 (depends on 12)

The non-transitory computer readable storage device of claim 12, wherein the determining comprises:
examining a time to live field or a hop count field of said search request message to determine how far in said network said search request message will travel; and
concluding that said time to live field or hop count field will expire before the search request message reaches the first node.

### Claim 19 (depends on 12)

The non-transitory computer readable storage device of claim 12, wherein a time period for keeping said at least one entry in said database is dictated by at least one of: a fixed number of most recent data transfers, a fixed number of most popular responses, a fixed number of least popular data responses, or a length of time for which said first node has been active in said network.

### Claim 20

Apparatus comprising:
for an input device for receiving, at a third node in the network, a search request message originating from said second node, said search request message requesting the data;
a processor for determining, by the third node, that the first node has the data and that the search request message will not reach the first node;
an output device for sending, by the third node, a response message to said second node, said response message indicating that said first node has the data; and
a database associated with said third node, where said database includes at least one entry comprising information taken from a prior response message received by said third node in connection with a prior transfer of said data, the prior response message including a dedicated field that explicitly indicates a length of time for which said data will be available at said first node,
wherein the processor additionally locates information related to said data in said database,
wherein the output device additionally constructs said response message using said information taken from said prior response message, wherein said information taken from said prior response message comprises at least one of: a name of said data, a description of content of said data, a size of said data, a type of said data, a time of said prior transfer of said data, a number of hops separating said third node from said first node, meta data related to said prior response message, a source of said data, or said prior response message, and
wherein the search request message specifies that the response message must come from a source of the data unless a hop count of the search request message has reached a specified value, and wherein the search request message further specifies that the response message is permitted to come from a node other than the source of the data when the hop count reaches the specified value.
