The present invention relates generally to data exchange and, more particularly, to the optimization of data exchange between or among two or more peers in a peer-to-peer network.
Peer-to-peer networks (PTPNs) have been used to improve data exchange between peers, often referred to as nodes, by exchanging data directly between peers rather than through an intermediary server. PTPNs can provide improved efficiencies, particularly where large amounts of data are exchanged, such as in video conferencing. The capabilities and limitations of individual peers can vary greatly, however, and managing an individual peer's data exchange based only on that peer's capabilities and limitations will limit the extent of the efficiencies a PTPN can provide.
The invention provides a method, system, and program product for optimizing data exchange in a peer-to-peer network.
A first aspect of the invention provides a method of optimizing real-time data exchange in a peer-to-peer network (PTPN), the method comprising: receiving, from each peer in the PTPN: an upload limit of the peer; a download limit of the peer; and a delay to each other peer in the PTPN; determining, for each peer in the PTPN: a rate at which data may be transferred to at least one other peer in the PTPN (transfer rate); and a rate at which data may be received from at least one other peer in the PTPN (receive rate); and instructing each peer in the PTPN to: transfer data to at least one other peer in the PTPN at the transfer rate; and receive data from at least one other peer in the PTPN at the receive rate.
A second aspect of the invention provides a method of optimizing real-time data exchange in a peer-to-peer network (PTPN), the method comprising: transmitting to a server: an upload limit of a peer; a download limit of the peer; and a delay between the peer and each other peer in the PTPN; receiving from the server: an instruction to transfer data to at least one other peer in the PTPN at a transfer rate; and transferring data to the at least one other peer in the PTPN at the transfer rate.
A third aspect of the invention provides a system for optimizing real-time data exchange in a peer-to-peer network (PTPN), the system comprising: at least one device capable of: receiving from each of at least a first peer and a second peer in the PTPN: an upload limit of the peer; a download limit of the peer; and a delay between each peer and each other peer in the PTPN; determining, for each of at least the first peer and the second peer: a rate at which data may be transferred to at least one other peer in the PTPN (transfer rate); and a rate at which data may be received from at least one other peer in the PTPN (receive rate); and instructing each of at least the first peer and the second peer to: transfer data to at least one other peer in the PTPN at the transfer rate; and receive data from at least one other peer in the PTPN at the receive rate.
A fourth aspect of the invention provides a computer-readable storage medium including a program product, which when executed optimizes real-time data exchange in a peer-to-peer network (PTPN), the program product comprising: program code for receiving from each of at least a first peer and a second peer in the PTPN: an upload limit of the peer; a download limit of the peer; and a delay between each peer and each other peer in the PTPN; program code for determining, for each of at least the first peer and the second peer: a rate at which data may be transferred to at least one other peer in the PTPN (transfer rate); and a rate at which data may be received from at least one other peer in the PTPN (receive rate); and program code for instructing each of at least the first peer and the second peer to: transfer data to at least one other peer in the PTPN at the transfer rate; and receive data from at least one other peer in the PTPN at the receive rate.
These and other features of this invention will be more readily understood from the following detailed description of the various aspects of the invention taken in conjunction with the accompanying drawings that depict various embodiments of the invention, in which:
It is noted that the drawings of the invention are not to scale. The drawings are intended to depict only typical aspects of the invention, and therefore should not be considered as limiting the scope of the invention. In the drawings, like numbering represents like elements between the drawings.
As used herein, “optimized” data exchange does not necessarily mean data exchanged at the fastest rate or even a rate at which the highest quality data may be exchanged between two peers. Rather, as used herein, “optimized” data exchange includes data exchanged between and among peers based on the particular capabilities and limitations of each peer and which provides for both efficient and reliable exchange of data between and among the peers. For example, unlike known PTPNs, where a peer typically transfers data to each other peer such that the rate or size of the transfer makes maximal use of the peer's upload limit, embodiments of the invention may determine the transfer rate of the peer to be significantly less than the peer's upload limit, if the download limits of the other peers would render them unable to efficiently receive, decode, display, or otherwise use the data.
Similarly, as used herein, “real-time” data exchange is not meant to refer to an instantaneous data exchange. Rather, “real-time” data exchange refers to both the immediate or contemporaneous transfer of data from a first peer to a second peer as the data are generated and to the immediate or contemporaneous use of such data by the second peer upon its receipt. For example, one context in which an optimized real-time data exchange according to an embodiment of the invention may be made is audio or video conferencing. In such a context, data must be transferred to and used by other peers with very little delay. Too great a delay in either transferring such data to another peer or use of such data by the other peer would lead to undue confusion among the peers. As a consequence, to avoid such confusion, many audio and video conferencing systems and programs will intentionally discard data older than a pre-determined threshold.
Accordingly, in addition to status data sent from peers 320, 322, 324, 326, 328 to server 310, data exchanges 350, 352, 354, 356, 358 further include exchange instructions from server 310 to peers 320, 322, 324, 326, 328. That is, after determining, for each peer 320, 322, 324, 326, 328, a transfer rate (i.e., a rate at which data may be transferred to another peer according to the optimized data exchange) and a receive rate (i.e., a rate at which data may be received from another peer according to the optimized data exchange), server 310 instructs each peer 320, 322, 324, 326, 328 to transfer data to another peer at the transfer rate and to receive data from another peer in the PTPN at the receive rate. In some embodiments, a transfer rate and a receive rate are determined for each pairing of peers 320, 322, 324, 326, 328. For example, still referring to
Thus, server 310 is afforded a global view of the PTPN 300, including the capabilities and limitations of each peer 320, 322, 324, 326, 328. As such, server 310, while not involved in the actual exchange of data between peers 320, 322, 324, 326, 328, is able to optimize such data exchange by virtue of the global view it is afforded. Employing server 310 in making the determinations and sending the exchange instructions described above is more efficient than doing so using one or more of peers 320, 322, 324, 326, 328, which would require each peer 320, 322, 324, 326, 328 to send its upload limit, download limit, delay, etc. to each other peer 320, 322, 324, 326, 328. Aside from needlessly consuming the upload and download bandwidth sought to be most efficiently used, the peers 320, 322, 324, 326, 328 themselves would need to make the determinations, thereby monopolizing computational power that could be better employed in processing or otherwise using the data exchanged.
Rather, according to embodiments of the invention, by each peer 320, 322, 324, 326, 328 providing to server 310 (
For example,
The preferences of individual peers 320, 322, 324, 326, 328 may be used in determining the appropriate streams each peer will transfer or receive. For example, it may be the case that one peer in the video conference is an instructor or other central peer, such that each other peer will prefer to receive a full (AIP) data stream from that peer as a priority. If, as a consequence, the download limit of a peer precludes receipt of a full data stream from other peers, a reduced data stream (e.g., AI or A) may be requested of and received from other peers in the PTPN.
Similarly, it may be the case that the instructor or other central peer has an upload limit that precludes its transfer of a full AIP data stream to each other peer requesting it. In such a case, a hierarchy or other priority system within the PTPN or with respect to the particular video conference may be used to determine the transfer rates of the instructor or central peer with respect to each other peer. In some cases, if the upload limit or download limit of one or more peers is significantly limited, the solution chosen by server 310 (
Returning to
Still referring to
Contrarily, as
It is precisely for this reason, as well as the inherent uncertainties and changeability of upload limits and download limits, that embodiments of the invention do not take advantage of small differences between the limits and the data exchanged, as is the approach of some known methods. For example, referring again to
Embodiments of the invention avoid this weakness, common in known methods, by deliberately eschewing unnecessary maximization of a peer's bandwidth. Rather, the global view afforded through use of server 310 (
It is possible, of course, that in some cases, no peer has sufficient bandwidth to relay a data stream on behalf of another peer. In such cases, a determination would be made, based at least in part on the preferences of the relevant peers, whether a reduced quality data stream will be transferred, whether one or more peers will not receive a data stream from one or more other peers, or a combination thereof. Even in such a case, data exchanged in accordance with embodiments of the invention will be optimized, in that the data exchange is made based on determinations made by server 310 (
Unlike known methods and systems, determining the transfer rate and receive rate for each peer is done individually, according to embodiments of the invention. That is, while the overall optimized data exchange is based on the capabilities and limitations of both the individual peers and the PTPN as a whole, a transfer rate and a receive rate is determined individually for each peer, based on some sorting of the peers. In some embodiments, this sorting is based on decreasing “difficulty.”
For example, a transfer rate and receive rate may be determined first for a peer having the most restricted upload limit or download limit, for a peer having a long delay to at least one other peer, or some combination thereof. Transfer rates and receive rates may then be determined for other peers, with the rates determined last for the peer having the least restricted upload limit, download limit, and/or shortest delay. This enables an efficient use of the PTPN resources by, for example, utilizing the excess bandwidth of other peers to aid in transferring the data of the most restricted peers first. Such allocation of resources may complement the deliberate avoidance of unnecessary maximization of a peer's bandwidth noted above, as the independent determination of transfer and receive rates based on decreasing difficulty will tend to “spread” bandwidth use toward peers with the greatest excess bandwidth.
If data requested of a peer exceeds its upload limit (i.e., YES at S2), it is determined at S4 whether one or more other peer has sufficient bandwidth to relay the requested data. If not (i.e., NO at S4), transfer and receive rates are determined at S5 and each peer is instructed by the server at S7 to exchange data at the rates determined at S5. If one or more other peer has sufficient bandwidth to relay the requested data (i.e., YES at S4), transfer and receive rates are determined at S6 and each peer is instructed by the server at S7 to exchange data at the rates determined at S6. It should be noted, of course, that the rates determined at S3, S5, and S6 will differ.
Computer system 420 is shown including a processing component 422 (e.g., one or more processors), a storage component 424 (e.g., a storage hierarchy), an input/output (I/O) component 426 (e.g., one or more I/O interfaces and/or devices), and a communications pathway 428. In general, processing component 422 executes program code, such as data exchange optimization program 430, which is at least partially fixed in storage component 424. While executing program code, processing component 422 can process data, which can result in reading and/or writing transformed data from/to storage component 424 and/or I/O component 426 for further processing. Pathway 428 provides a communications link between each of the components in computer system 420. I/O component 426 can comprise one or more human I/O devices, which enable a human user 418 to interact with computer system 420 and/or one or more communications devices to enable a system user 418 to communicate with computer system 420 using any type of communications link. To this extent, data exchange optimization program 430 can manage a set of interfaces (e.g., graphical user interface(s), application program interface, and/or the like) that enable human and/or system users 418 to interact with data exchange optimization program 430. Further, data exchange optimization program 430 can manage (e.g., store, retrieve, create, manipulate, organize, present, etc.) the data, such as upload limit data 440, download limit data 442, and delay data 444, using any solution.
In any event, computer system 420 can comprise one or more general purpose computing articles of manufacture (e.g., computing devices) capable of executing program code, such as data exchange optimization program 430, installed thereon. As used herein, it is understood that “program code” means any collection of instructions, in any language, code or notation, that cause a computing device having an information processing capability to perform a particular action either directly or after any combination of the following: (a) conversion to another language, code or notation; (b) reproduction in a different material form; and/or (c) decompression. To this extent, data exchange optimization program 430 can be embodied as any combination of system software and/or application software.
Further, data exchange optimization program 430 can be implemented using a set of modules 432. In this case, a module 432 can enable computer system 420 to perform a set of tasks used by data exchange optimization program 430, and can be separately developed and/or implemented apart from other portions of data exchange optimization program 430. As used herein, the term “component” means any configuration of hardware, with or without software, which implements the actions described in conjunction therewith using any solution, while the term “module” means program code that enables a computer system 420, such as a general purpose computing device, to implement the actions described in conjunction therewith using any solution. When fixed in a storage component 424 of a computer system 420 that includes a processing component 422, a module is a substantial portion of a component that implements the actions. Regardless, it is understood that two or more components, modules, and/or systems may share some/all of their respective hardware and/or software. Further, it is understood that some of the functionality discussed herein may not be implemented or additional functionality may be included as part of computer system 420.
When computer system 420 comprises multiple computing devices, each computing device can have only a portion of data exchange optimization program 430 fixed thereon (e.g., one or more modules 432). However, it is understood that computer system 420 and data exchange optimization program 430 are only representative of various possible equivalent computer systems that may perform a process described herein. To this extent, in other embodiments, the functionality provided by computer system 420 and data exchange optimization program 430 can be at least partially implemented by one or more computing devices that include any combination of general and/or specific purpose hardware with or without program code. In each embodiment, the hardware and program code, if included, can be created using standard engineering and programming techniques, respectively.
Regardless, when computer system 420 includes multiple computing devices, the computing devices can communicate over any type of communications link. Further, while performing a process described herein, computer system 420 can communicate with one or more other computer systems, such as a system user 418, using any type of communications link. In either case, the communications link can comprise any combination of various types of wired and/or wireless links; comprise any combination of one or more types of networks; and/or utilize any combination of various types of transmission techniques and protocols.
As discussed herein, data exchange optimization program 430 enables computer system 420 to optimize data exchange in a PTPN. To this extent, data exchange optimization program 430 is configured to enable computer system 420 to manage upload limit data 440, download limit data 442, and delay data 444, which computer system 420 can process to optimize data exchange in a PTPN. In an embodiment, upload limit data 440 comprises a set of data representing upload limits of peers in a PTPN, download limit data 442 comprises a set of data representing download limits of peers in a PTPN, and delay data 444 comprises a set of data representing delay limits of peers in a PTPN.
In another embodiment, the invention provides a method that performs the process steps of the invention on a subscription, advertising, and/or fee basis. That is, a service provider could offer to optimize data exchange in a PTPN, as described above. In this case, the service provider can create, maintain, support, etc., a computer infrastructure, such as computer system 420, that performs the process steps of the invention for one or more customers. In return, the service provider can receive payment from the customer(s) under a subscription and/or fee agreement and/or the service provider can receive payment from the sale of advertising space to one or more third parties.
In still another embodiment, the invention provides a method of generating a system for optimizing data exchange in a PTPN. In this case, a computer infrastructure, such as computer system 420, can be obtained (e.g., created, maintained, having made available to, etc.) and one or more systems for performing the process steps of the invention can be obtained (e.g., created, purchased, used, modified, etc.) and deployed to the computer infrastructure. To this extent, the deployment of each system can comprise one or more of (1) installing program code on a computer system, such as computer system 420, from a computer-readable medium; (2) adding one or more computer systems to the computer infrastructure; and (3) incorporating and/or modifying one or more existing systems of the computer infrastructure, to enable the computer infrastructure to perform the process steps of the invention.
As used herein, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
The foregoing description of various aspects of the invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed, and obviously, many modifications and variations are possible. Such modifications and variations that may be apparent to a person skilled in the art are intended to be included within the scope of the invention as defined by the accompanying claims.