Claims
- 1. A peer computing system comprising:
a plurality of peer nodes operable to couple to a network, wherein each of the plurality of peer nodes comprises one or more network interfaces, wherein each network interface is configured to communicate over the network in accordance with at least one of one or more network transport protocols; wherein the plurality of peer nodes is configured to implement a peer-to-peer environment on the network according to a peer-to-peer platform comprising one or more peer-to-peer platform protocols for enabling the plurality of peer nodes to discover each other, communicate with each other, and share content in the peer-to-peer environment; wherein one of the plurality of peer nodes is configured to:
establish a communications channel between a network interface of the peer node and a network interface of another of the plurality of peer nodes; transmit messages to the other peer node over the communications channel; receive acknowledgement that one or more of the transmitted messages have been received by the other peer node; and retransmit messages not acknowledged as received by the other peer node to the other peer node on the communications channel.
- 2. The peer computing system as recited in claim 1, wherein, to transmit messages to the other peer node over the communications channel, the peer node is further configured to:
generate the messages; buffer the messages, and after a window of N messages has been buffered, transmit the N messages to the other peer node over the communications channel, wherein N is an integer greater than one.
- 3. The peer computing system as recited in claim 2, wherein the other peer node is configured to receive the transmitted messages, and after receiving M messages, transmit the acknowledgement to the peer node indicating that the M messages have been received, wherein M is a positive integer less than or equal to N.
- 4. The peer computing system as recited in claim 3, wherein N is a positive even integer, and wherein M is equal to N/2.
- 5. The peer computing system as recited in claim 3, wherein M is less than N.
- 6. The peer computing system as recited in claim 5, wherein, to receive acknowledgement that one or more of the transmitted messages have been received by the other peer node, the peer node is further configured to receive the acknowledgement indicating that the M messages have been received, and wherein the peer node is further configured to:
shift the window in the buffer by M messages; and transmit the messages in the shifted window to the other peer node over the communications channel.
- 7. The peer computing system as recited in claim 6, wherein the shifted window includes one or more messages previously transmitted to the other peer node and one or more messages not previously transmitted to the other peer node.
- 8. The peer computing system as recited in claim 2, wherein each of the messages includes a sequence number for use in ordering the received messages on the other peer node, and wherein the other peer node is configured to:
receive the transmitted messages; and after receiving the first M messages in the sequence of N transmitted messages as indicated by the sequence numbers, transmit the acknowledgement to the peer node indicating that the first M messages have been received, wherein M is a positive integer less than N.
- 9. The peer computing system as recited in claim 2, wherein each of the messages includes a sequence number for use in ordering the received messages on the other peer node, and wherein the other peer node is configured to:
continue receiving the transmitted messages until the first M messages in the sequence of N transmitted messages as indicated by the sequence numbers are received or a timeout limit from the time of initial receipt of one of the sequence of N transmitted messages is exceeded, wherein M is a positive integer less than N; if the first M messages in the sequence of N transmitted messages as indicated by the sequence numbers are received, transmit the acknowledgement to the peer node indicating that a count of messages received in continuous sequence from a first message in the sequence of N transmitted messages is M; and if the timeout limit is exceeded before the first M messages in the sequence of N transmitted messages as indicated by the sequence numbers are received, transmit the acknowledgement to the peer node indicating the count of messages received in continuous sequence from the first message in the sequence of N transmitted messages, wherein the count of messages received in continuous sequence is less than M.
- 10. The peer computing system as recited in claim 9, wherein, to receive acknowledgement that one or more of the transmitted messages have been received by the other peer node, the peer node is further configured to receive the acknowledgement indicating that the messages have been received, and wherein the peer node is further configured to:
shift the window in the buffer by the count of messages received in continuous sequence; and transmit the messages in the shifted window to the other peer node over the communications channel.
- 11. The peer computing system as recited in claim 1, wherein each of the messages includes a sequence number for use in ordering the received messages on the other peer node.
- 12. The peer computing system as recited in claim 1, wherein the peer node and the other peer node are further configured to:
monitor reception and retransmission of the messages to determine reliability of the communications channel on the network; and adjust the values of M and N according to said reliability of the communications channel.
- 13. The peer computing system as recited in claim 12, wherein, to adjust the values of M and N, the peer node and the other peer node are further configured to lower the values of M and N if said reliability of the communications channel is poor.
- 14. The peer computing system as recited in claim 12, wherein, to adjust the values of M and N, the peer node and the other peer node are further configured to raise the values of M and N if said reliability of the communications channel is good.
- 15. The peer computing system as recited in claim 1, wherein the other peer node is configured to:
transmit other messages to the peer node over the communications channel; receive acknowledgement that one or more of the transmitted other messages have been received by the peer node; and retransmit messages not acknowledged as received by the peer node to the peer node on the communications channel.
- 16. The peer computing system as recited in claim 1, wherein the peer node comprises an instance of a pipe service executable within the peer node to establish the communications channel, transmit the messages to the other peer node, receive the acknowledgement, and retransmit the messages not acknowledged as received.
- 17. The peer computing system as recited in claim 16, wherein the other peer node comprises another instance of the pipe service executable within the other peer node to receive the transmitted messages and transmit the acknowledgement to the peer node.
- 18. The peer computing system as recited in claim 1, wherein the communications channel passes through one or more relay peers, wherein the one or more relay peers are configured to receive the transmitted messages from the peer node and forward the messages to the other peer node.
- 19. The peer computing system as recited in claim 1, wherein the communications channel passes through one or more firewalls.
- 20. The peer computing system as recited in claim 1, wherein the communications channel passes through one or more Network Address Translation (NAT) gateways.
- 21. The peer computing system as recited in claim 1, wherein one or more other of the plurality of peer nodes are configured to connect to the communications channel, wherein the peer node is further configured to:
transmit messages to the one or more other peer nodes over the communications channel; receive acknowledgements that one or more of the transmitted messages have been received by the one or more other peer nodes; and retransmit messages not acknowledged as received by the one or more other peer nodes to the one or more other peer node on the communications channel.
- 22. The peer computing system as recited in claim 1, wherein the peer node is further configured to compare elapsed time since the messages were transmitted to a timeout limit and, if the elapsed time exceeds the timeout limit, retransmit the messages to the other peer node over the communications channel.
- 23. The peer computing system as recited in claim 1, wherein the peer node is further configured to:
receive a request specifying one or more previously transmitted messages for retransmission by the peer node; and retransmit the specified one or more messages to the other peer node on the communications channel in response to the request.
- 24. The peer computing system as recited in claim 23, wherein the request specifies a sequence number for each of the one or more specified messages, wherein the sequence numbers are for use in ordering the received messages on the other peer node
- 25. A method for providing reliable connections between peer nodes coupled to a peer-to-peer network, the method comprising::
a plurality of peer nodes coupled to the network implementing a peer-to-peer environment on the network according to a peer-to-peer platform comprising one or more peer-to-peer platform protocols for enabling the plurality of peer nodes to discover each other, communicate with each other, and share content in the peer-to-peer environment; establishing a communications channel between a network interface of one of the plurality of peer nodes and a network interface of another of the plurality of peer nodes; the peer node transmitting messages to the other peer node over the communications channel; the peer node receiving acknowledgement that one or more of the transmitted messages have been received by the other peer node; and the peer node retransmitting messages not acknowledged as received by the other peer node to the other peer node on the communications channel.
- 26. The method as recited in claim 25, wherein, in said transmitting messages to the other peer node over the communications channel, the method further comprises:
generating the messages; buffering the messages, and after a window of N messages has been buffered, transmitting the N messages to the other peer node over the communications channel, wherein N is an integer greater than one.
- 27. The method as recited in claim 26, further comprising the other peer node receiving the transmitted messages, and after receiving M messages, transmitting the acknowledgement to the peer node indicating that the M messages have been received, wherein M is a positive integer less than or equal to N.
- 28. The method as recited in claim 27, wherein N is a positive even integer, and wherein M is equal to N/2.
- 29. The method as recited in claim 27, wherein M is less than N.
- 30. The method as recited in claim 29, wherein, in said receiving acknowledgement that one or more of the transmitted messages have been received by the other peer node, the method further comprises the peer node receiving the acknowledgement indicating that the M messages have been received, and wherein the method further comprises:
shifting the window in the buffer by M messages; and transmitting the messages in the shifted window to the other peer node over the communications channel.
- 31. The method as recited in claim 30, wherein the shifted window includes one or more messages previously transmitted to the other peer node and one or more messages not previously transmitted to the other peer node.
- 32. The method as recited in claim 26, wherein each of the messages includes a sequence number for use in ordering the received messages on the other peer node, and wherein the method further comprises:
the other peer node receiving the transmitted messages; and after receiving the first M messages in the sequence of N transmitted messages as indicated by the sequence numbers, the other peer node transmitting the acknowledgement to the peer node indicating that the first M messages have been received, wherein M is a positive integer less than N.
- 33. The method as recited in claim 26, wherein each of the messages includes a sequence number for use in ordering the received messages on the other peer node, and wherein the method further comprises:
the other peer node continuing to receive the transmitted messages until the first M messages in the sequence of N transmitted messages as indicated by the sequence numbers are received or a timeout limit from the time of initial receipt of one of the sequence of N transmitted messages is exceeded, wherein M is a positive integer less than N; if the first M messages in the sequence of N transmitted messages as indicated by the sequence numbers are received, the other peer node transmitting the acknowledgement to the peer node indicating that a count of messages received in continuous sequence from a first message in the sequence of N transmitted messages is M; and if the timeout limit is exceeded before the first M messages in the sequence of N transmitted messages as indicated by the sequence numbers are received, the other peer node transmitting the acknowledgement to the peer node indicating the count of messages received in continuous sequence from the first message in the sequence of N transmitted messages, wherein the count of messages received in continuous sequence is less than M.
- 34. The method as recited in claim 33, wherein, in said receiving acknowledgement that one or more of the transmitted messages have been received by the other peer node, the method further comprises the peer node receiving the acknowledgement indicating that the messages have been received, and wherein the method further comprises:
shifting the window in the buffer by the count of messages received in continuous sequence; and transmitting the messages in the shifted window to the other peer node over the communications channel.
- 35. The method as recited in claim 25, wherein each of the messages includes a sequence number for use in ordering the received messages on the other peer node.
- 36. The method as recited in claim 25, further comprising:
monitoring reception and retransmission of the messages to determine reliability of the communications channel on the network; and adjusting the values of M and N according to said reliability of the communications channel.
- 37. The method as recited in claim 36, wherein, in said adjusting the values of M and N, the method further comprises lowering the values of M and N if said reliability of the communications channel is poor.
- 38. The method as recited in claim 36, wherein, in said adjusting the values of M and N, the method further comprises raising the values of M and N if said reliability of the communications channel is good.
- 39. The method as recited in claim 25, further comprising:
the other peer node transmitting other messages to the peer node over the communications channel; the other peer node receiving acknowledgement that one or more of the transmitted other messages have been received by the peer node; and the other peer node retransmitting messages not acknowledged as received by the peer node to the peer node on the communications channel.
- 40. The method as recited in claim 25, wherein the communications channel passes through a relay peer, the method further comprising the relay peer receiving the transmitted messages from the peer node and forwarding the messages to the other peer node.
- 41. The method as recited in claim 25, wherein the communications channel passes through one or more firewalls.
- 42. The method as recited in claim 25, wherein the communications channel passes through one or more Network Address Translation (NAT) gateways.
- 43. The method as recited in claim 25, further comprising the peer node comparing elapsed time since the messages were transmitted to a timeout limit and, if the elapsed time exceeds the timeout limit, retransmitting the messages to the other peer node over the communications channel.
- 44. The method as recited in claim 25, further comprising:
the peer node receiving a request specifying one or more previously transmitted messages for retransmission by the peer node; and the peer node retransmitting the specified one or more messages to the other peer node on the communications channel in response to the request.
- 45. An article of manufacture comprising software instructions executable on a peer node to implement:
a plurality of peer nodes coupled to the network implementing a peer-to-peer environment on the network according to a peer-to-peer platform comprising one or more peer-to-peer platform protocols for enabling the plurality of peer nodes to discover each other, communicate with each other, and share content in the peer-to-peer environment; establishing a communications channel between a network interface of one of the plurality of peer nodes and a network interface of another of the plurality of peer nodes; the peer node transmitting messages to the other peer node over the communications channel; the peer node receiving acknowledgement that one or more of the transmitted messages have been received by the other peer node; and the peer node retransmitting messages not acknowledged as received by the other peer node to the other peer node on the communications channel.
- 46. The article of manufacture as recited in claim 45, wherein, in said transmitting messages to the other peer node over the communications channel, the software instructions are further executable to implement:
generating the messages; buffering the messages, and after a window of N messages has been buffered, transmitting the N messages to the other peer node over the communications channel, wherein N is an integer greater than one.
- 47. The article of manufacture as recited in claim 46, wherein the software instructions are further executable to implement the other peer node receiving the transmitted messages, and after receiving M messages, transmitting the acknowledgement to the peer node indicating that the M messages have been received, wherein M is a positive integer less than or equal to N.
- 48. The article of manufacture as recited in claim 47, wherein N is a positive even integer, and wherein M is equal to N/2.
- 49. The article of manufacture as recited in claim 47, wherein M is less than N.
- 50. The article of manufacture as recited in claim 49, wherein, in said receiving acknowledgement that one or more of the transmitted messages have been received by the other peer node, the software instructions are further executable to implement the peer node receiving the acknowledgement indicating that the M messages have been received, and wherein the software instructions are further executable to implement:
shifting the window in the buffer by M messages; and transmitting the messages in the shifted window to the other peer node over the communications channel.
- 51. The article of manufacture as recited in claim 50, wherein the shifted window includes one or more messages previously transmitted to the other peer node and one or more messages not previously transmitted to the other peer node.
- 52. The article of manufacture as recited in claim 46, wherein each of the messages includes a sequence number for use in ordering the received messages on the other peer node, and wherein the software instructions are further executable to implement:
the other peer node receiving the transmitted messages; and after receiving the first M messages in the sequence of N transmitted messages as indicated by the sequence numbers, the other peer node transmitting the acknowledgement to the peer node indicating that the first M messages have been received, wherein M is a positive integer less than N.
- 53. The article of manufacture as recited in claim 46, wherein each of the messages includes a sequence number for use in ordering the received messages on the other peer node, and wherein the software instructions are further executable to implement:
the other peer node continuing to receive the transmitted messages until the first M messages in the sequence of N transmitted messages as indicated by the sequence numbers are received or a timeout limit from the time of initial receipt of one of the sequence of N transmitted messages is exceeded, wherein M is a positive integer less than N; if the first M messages in the sequence of N transmitted messages as indicated by the sequence numbers are received, the other peer node transmitting the acknowledgement to the peer node indicating that a count of messages received in continuous sequence from a first message in the sequence of N transmitted messages is M; and if the timeout limit is exceeded before the first M messages in the sequence of N transmitted messages as indicated by the sequence numbers are received, the other peer node transmitting the acknowledgement to the peer node indicating the count of messages received in continuous sequence from the first message in the sequence of N transmitted messages, wherein the count of messages received in continuous sequence is less than M.
- 54. The article of manufacture as recited in claim 53, wherein, in said receiving acknowledgement that one or more of the transmitted messages have been received by the other peer node, the software instructions are further executable to implement the peer node receiving the acknowledgement indicating that the messages have been received, and wherein the software instructions are further executable to implement:
shifting the window in the buffer by the count of messages received in continuous sequence; and transmitting the messages in the shifted window to the other peer node over the communications channel.
- 55. The article of manufacture as recited in claim 45, wherein each of the messages includes a sequence number for use in ordering the received messages on the other peer node.
- 56. The article of manufacture as recited in claim 45, further comprising:
monitoring reception and retransmission of the messages to determine reliability of the communications channel on the network; and adjusting the values of M and N according to said reliability of the communications channel.
- 57. The article of manufacture as recited in claim 56, wherein, in said adjusting the values of M and N, the software instructions are further executable to implement lowering the values of M and N if said reliability of the communications channel is poor.
- 58. The article of manufacture as recited in claim 56, wherein, in said adjusting the values of M and N, the software instructions are further executable to implement raising the values of M and N if said reliability of the communications channel is good.
- 59. The article of manufacture as recited in claim 45, wherein the software instructions are further executable to implement:
the other peer node transmitting other messages to the peer node over the communications channel; the other peer node receiving acknowledgement that one or more of the transmitted other messages have been received by the peer node; and the other peer node retransmitting messages not acknowledged as received by the peer node to the peer node on the communications channel.
- 60. The article of manufacture as recited in claim 45, wherein the communications channel passes through a relay peer, wherein the software instructions are further executable to implement the relay peer receiving the transmitted messages from the peer node and forwarding the messages to the other peer node.
- 61. The article of manufacture as recited in claim 45, wherein the communications channel passes through one or more firewalls.
- 62. The article of manufacture as recited in claim 45, wherein the communications channel passes through one or more Network Address Translation (NAT) gateways.
- 63. The article of manufacture as recited in claim 45, wherein the software instructions are further executable to implement the peer node comparing elapsed time since the messages were transmitted to a timeout limit and, if the elapsed time exceeds the timeout limit, retransmitting the messages to the other peer node over the communications channel.
- 64. The article of manufacture as recited in claim 45, further comprising:
the peer node receiving a request specifying one or more of the transmitted messages for retransmission by the peer node; and the peer node retransmitting the specified one or more messages to the other peer node on the communications channel in response to the request.
PRIORITY INFORMATION
[0001] This application claims benefit of priority to the following provisional applications, each of which is hereby incorporated by reference in its entirety:
[0002] Serial No. 60/263,573 filed Jan. 22, 2001 titled Peer-to-Peer Network Computing Platform;
[0003] Serial No. 60/268,893 filed Feb. 14, 2001 titled Peer-to-Peer Network Computing Platform;
[0004] Serial No. 60/286,225 filed Apr. 24, 2001 titled Peer-to-Peer Network Computing Platform; and
[0005] Serial No. 60/308,932 filed Jul. 31, 2001 titled Trust Mechanism For A Peer-To-Peer Network Computing Platform.
Provisional Applications (4)
|
Number |
Date |
Country |
|
60263573 |
Jan 2001 |
US |
|
60268893 |
Feb 2001 |
US |
|
60286225 |
Apr 2001 |
US |
|
60308932 |
Jul 2001 |
US |