COMMUNICATING IN A COMPUTER ENVIRONMENT
Communicating in a peer-to-peer computer environment. A tracker peer is contacted and a list of peer nodes are obtained at a user device. A subset of peer nodes are selected from the list of peer nodes to act as relay nodes for a communication. An appropriate compression scheme is selected for the communication at the user device. Data is transmitted to at least one relay node for the at least one relay node to forward to at least one other user device, wherein the relay node is one of the subset of the peer nodes. Data is received at the user device from the at least one relay node forwarded from the at least one other user.
1 . A computer implemented method for communicating in a peer-to-peer computer environment, said method comprising:
contacting a tracker peer and obtaining a list of peer nodes at a user device;
selecting a subset of peer nodes from said list of peer nodes to act as relay nodes for a communication;
selecting an appropriate compression scheme for said communication at said user device;
transmitting data to at least one relay node for said at least one relay node to forward to at least one other user device, wherein said relay node is one of said subset of said peer nodes; and
receiving data at said user device from said at least one relay node forwarded from said at least one other user.
2 . The computer-implemented method of claim 1 wherein said selecting a subset of peer nodes to act as relay nodes further comprises:
employing an optimization procedure based on factors relating to said peer nodes of said list of peer nodes.
3 . The computer-implemented method of claim 2 wherein said factors relating to said peer nodes comprises an amount of available resources of said peer nodes, wherein said resources are CPU and bandwidth.
4 . The computer-implemented method of claim 2 wherein said factors relating to said peer nodes comprises a type of Internet connection of said peer nodes.
5 . The computer-implemented method of claim 2 wherein said factors relating to said peer nodes comprises a distance between a user and said peer nodes, wherein said distance comprises round trip time, hops, and forward trip time.
6 . The computer-implemented method of claim 2 wherein said factors relating to said peer nodes comprises a length of time a relay protocol has been running on one of said peer nodes.
7 . The computer-implemented method of claim 2 wherein said factors relating to said peer nodes comprises a historic reliability of one of said peer nodes.
8 . The computer-implemented method of claim 1 wherein said selecting appropriate compression scheme for said communication further comprises:
selecting a media format for said communication.
9 . The computer-implemented method of claim 1 wherein said selecting appropriate compression scheme for said communication further comprises:
selecting a type of encoding for said communication.
10 . The computer-implemented method of claim 1 wherein said selecting appropriate compression scheme for said communication further comprises:
employing error correcting code.
11 . The computer-implemented method of claim 10 wherein said error correcting code is packet level Forward Error Correction (FEC).
12 . The computer-implemented method of claim 1 , further comprising:
transmitting data to a second relay node for said second relay node to forward to said at least one other user device, wherein said second relay node is one of said subset of said peer nodes; and
receiving data from said second relay node forwarded from said at least one other user.
13 . A computer-usable storage medium having instructions embodied therein for causing a computer system to perform the steps of communicating in a peer-to-peer computer environment:
contacting a tracker peer and obtaining a list of peer nodes at a user device;
selecting a subset of peer nodes from said list of peer nodes to act as relay nodes for a communication;
selecting an appropriate compression scheme for said communication at said user device;
transmitting data to at least one relay node for said at least one relay node to forward to at least one other user device, wherein said relay node is one of said subset of said peer nodes; and
receiving data at said user device from said at least one relay node forwarded from said at least one other user.
14 . The computer-usable storage medium of claim 13 wherein said selecting a subset of peer nodes to act as relay nodes further comprises:
employing an optimization procedure based on factors relating to said peer nodes of said list of peer nodes.
15 . The computer-usable storage medium of claim 14 wherein said factors relating to said peer nodes comprises an amount of available resources of said peer nodes, wherein said resources are CPU and bandwidth.
16 . The computer-usable storage medium of claim 14 wherein said factors relating to said peer nodes comprises a type of Internet connection of said peer nodes.
17 . The computer-usable storage medium of claim 14 wherein said factors relating to said peer nodes comprises a distance between a user and said peer nodes, wherein said distance comprises round trip time, hops, and forward trip time.
18 . The computer-usable storage medium of claim 14 wherein said factors relating to said peer nodes comprises a length of time a relay protocol has been running on one of said peer nodes.
19 . The computer-usable storage medium of claim 14 wherein said factors relating to said peer nodes comprises a historic reliability of one of said peer nodes.
20 . The computer-usable storage medium of claim 13 wherein said selecting appropriate compression scheme for said communication further comprises:
selecting a media format for said communication.
21 . The computer-usable storage medium of claim 13 wherein said selecting appropriate compression scheme for said communication further comprises:
selecting a type of encoding for said communication.
22 . The computer-usable storage medium of claim 13 wherein said selecting appropriate compression scheme for said communication further comprises:
employing error correcting code.
23 . The computer-usable storage medium of claim 22 wherein said error correcting code is packet level Forward Error Correction (FEC).
24 . The computer-usable storage medium of claim 13 , further comprising:
transmitting data to a second relay node for said second relay node to forward to said at least one other user device, wherein said second relay node is one of said subset of said peer nodes; and
receiving data from said second relay node forwarded from said at least one other user.
25 . A computer implemented method for communicating in a peer-to-peer computer environment, said method comprising:
receiving a portion of a communication from a first user device at a relay peer, wherein said relay peer is one of a list of potential peers and wherein said first user device and a second user device have disparate CPU power and bandwidth capabilities;
transcoding said portion of said communication to comprise a base layer and an enhanced layer;
sending said base layer of said portion of said communication to said second user device from said relay peer; and
selectively sending said enhanced layer of said portion of said communication to said second user device depending upon a set of capabilities of said second user device.
26 . The computer implemented method as recited in claim 25 , further comprising:
terminating said receiving said portion of said communication from said first user device at said relay peer during said communication;
receiving said portion of said communication from said first user device at a second relay peer; and
sending said portion of said communication to said second user from said second relay peer.
27 . The computer implemented method as recited in claim 25 wherein said relay peer replicates said portion of said communication and sends said replicated said portion to a plurality of other user devices.
28 . The computer implemented method as recited in claim 25 wherein said first user device is a user computer system and said second user device is a handheld mobile device.
29 . The computer implemented method as recited in claim 25 wherein said receiving said portion of said communication from said first user further comprises:
transcoding said portion of said communication to change a resolution of said communication.
30 . The computer implemented method as recited in claim 25 wherein said sending said portion of said communication further comprises:
sending only said base layer to said second user device; and
sending said base layer and said enhanced layer to a third user device.
31 . A computer-usable storage medium having instructions embodied therein for causing a computer system to perform the steps of communicating in a peer-to-peer computer environment:
receiving a portion of a communication from a first user device at a relay peer, wherein said relay peer is one of a list of potential peers and wherein said first user device and a second user device have disparate CPU power and bandwidth capabilities;
transcoding said portion of said communication to comprise a base layer and an enhanced layer;
sending said base layer of said portion of said communication to said second user device from said relay peer; and
selectively sending said enhanced layer of said portion of said communication to said second user device depending upon a set of capabilities of said second user device.
32 . The computer-usable storage medium as recited in claim 31 , further comprising:
terminating said receiving said portion of said communication from said first user device at said relay peer during said communication;
receiving said portion of said communication from said first user device at a second relay peer; and
sending said portion of said communication to said second user from said second relay peer.
33 . The computer-usable storage medium as recited in claim 31 wherein said relay peer replicates said portion of said communication and sends said replicated said portion to a plurality of other user devices.
34 . The computer-usable storage medium as recited in claim 31 wherein said first user device is a user computer system and said second user device is a handheld mobile device.
35 . The computer-usable storage medium as recited in claim 31 wherein said receiving
said portion of said communication from said first user further comprises:
transcoding said portion of said communication to change a resolution of said communication.
36 . The computer-usable storage medium as recited in claim 31 wherein said sending said portion of said communication further comprises:
sending only said base layer to said second user device; and
sending said base layer and said enhanced layer to a third user device.
37 . A system for communicating in a peer-to-peer computer environment, said system comprising:
a tracker peer configured to send a list of potential relay peers upon a request from a user device;
a first user device configured to contact said tracker peer to obtain said list of potential relay peer and further configured to send and receive a communication to at least one relay peer selected from said list of potential relay peers;
a second user device configured to send and receive said communication from said at least one relay peer, wherein said second user device has capabilities disparate to the capabilities of said first user device;
said at least one relay peer configured to receive said communication from said first user device and transcode said communication into a base layer and an enhanced layer and sending base layer to said second user device and sending said enhanced layer to said second user device upon a confirmation of said second user device that second user device meets a minimum capability requirement.
38 . The system of claim 37 , further comprising:
a central server configured to replace said tracker upon a failure of said tracker peer and configured to replace said at least one relay peer upon failure of said at least one relay peer.
39 . The system of claim 37 , further comprising:
a second relay peer configured to replace said at least one relay peer upon failure of said at least one relay peer.