Reliable network streaming of a single data stream over multiple physical interfaces
First Claim
1. A method for sending a single data stream from a sending endpoint to a receiving endpoint, wherein both of the sending endpoint and the receiving endpoint each have multiple physical interfaces connecting the sending endpoint and the receiving endpoint to multiple networks, respectively, the method comprising:
- determining a data capacity throughput for each of the multiple physical interfaces, wherein the data capacity throughput is an amount of data throughput which is currently possible of being sent over a respective physical interface;
partitioning the single data stream into multiple data packets, wherein each of the multiple data packets has header information which identifies a sequence identifier indicating an in-sequence position of the data packet in the single data stream;
designating on a sending side of the sending endpoint, for each said data packet, a send-side physical interface and a receive-side physical interface, wherein the designation depends at least partly on the data capacity throughput;
sending different portions of the partitioned data packets over different ones of the multiple physical interfaces in accordance with the designation;
receiving the different portions of the partitioned data packets at the receiving endpoint;
determining by the receiving endpoint an amount of data received on each of the multiple physical interfaces, and any changes in the data capacity throughput for each of the multiple physical interfaces on a recipient side of the receiving endpoint;
reconstructing the single data stream at the receiving endpoint by combining the received partitioned data packets into the single data stream in accordance with the header information of the multiple data packets; and
sending an acknowledgment over each of the multiple physical interfaces from the receiving endpoint to the sending endpoint indicating the determined amount of data received on each of the different ones of the multiple physical interfaces, wherein the acknowledgment includes an indication of the determined changes in the data capacity throughput for each of the multiple physical interfaces on the recipient side,wherein, when the acknowledgment indicates that an amount of a portion of data packets was not received over one of the multiple physical interfaces, then, depending on the data capacity throughput of the multiple physical interfaces, the sending endpoint repartitions the portion of the data stream corresponding to the not received data packets, and sends the repartitioned data packets over one or more of available ones of the multiple physical interfaces, andwherein at least some of the repartitioned data packets are sent over physical interfaces which are different than the physical interfaces on which the data packets of the data stream, corresponding to the repartitioned data packets, were originally sent.
1 Assignment
0 Petitions
Accused Products
Abstract
Sending a single data stream from a sending endpoint to a receiving endpoint, wherein both of the sending endpoint and the receiving endpoint each have multiple physical interfaces connecting the sending and receiving endpoint to multiple networks, respectively, is provided. The single data stream is partitioned into multiple data packets. A physical interface is designated on the sending side and the receiving side in accordance with a data capacity throughput of each of the multiple physical interfaces. Different portions of the partitioned data packets are then sent over different ones of the multiple physical interfaces in accordance with the designation. The single data stream is then reconstructed by combining received partitioned data packets into the single data stream in accordance with header information. An acknowledgment is sent to the sending endpoint indicating an amount of data received on each multiple physical interface, including any changes in the data capacity throughput.
88 Citations
19 Claims
-
1. A method for sending a single data stream from a sending endpoint to a receiving endpoint, wherein both of the sending endpoint and the receiving endpoint each have multiple physical interfaces connecting the sending endpoint and the receiving endpoint to multiple networks, respectively, the method comprising:
-
determining a data capacity throughput for each of the multiple physical interfaces, wherein the data capacity throughput is an amount of data throughput which is currently possible of being sent over a respective physical interface; partitioning the single data stream into multiple data packets, wherein each of the multiple data packets has header information which identifies a sequence identifier indicating an in-sequence position of the data packet in the single data stream; designating on a sending side of the sending endpoint, for each said data packet, a send-side physical interface and a receive-side physical interface, wherein the designation depends at least partly on the data capacity throughput; sending different portions of the partitioned data packets over different ones of the multiple physical interfaces in accordance with the designation; receiving the different portions of the partitioned data packets at the receiving endpoint; determining by the receiving endpoint an amount of data received on each of the multiple physical interfaces, and any changes in the data capacity throughput for each of the multiple physical interfaces on a recipient side of the receiving endpoint; reconstructing the single data stream at the receiving endpoint by combining the received partitioned data packets into the single data stream in accordance with the header information of the multiple data packets; and sending an acknowledgment over each of the multiple physical interfaces from the receiving endpoint to the sending endpoint indicating the determined amount of data received on each of the different ones of the multiple physical interfaces, wherein the acknowledgment includes an indication of the determined changes in the data capacity throughput for each of the multiple physical interfaces on the recipient side, wherein, when the acknowledgment indicates that an amount of a portion of data packets was not received over one of the multiple physical interfaces, then, depending on the data capacity throughput of the multiple physical interfaces, the sending endpoint repartitions the portion of the data stream corresponding to the not received data packets, and sends the repartitioned data packets over one or more of available ones of the multiple physical interfaces, and wherein at least some of the repartitioned data packets are sent over physical interfaces which are different than the physical interfaces on which the data packets of the data stream, corresponding to the repartitioned data packets, were originally sent. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A method for sending a single data stream from a sending endpoint to a receiving endpoint, wherein both of the sending endpoint and the receiving endpoint each have multiple physical interfaces connecting the sending endpoint and the receiving endpoint to multiple networks, respectively, and wherein in said method the sending endpoint performs the steps of:
-
determining a data capacity throughput for each of the multiple physical interfaces, wherein the data capacity throughput is an amount of data throughput which is currently possible of being sent over a respective physical interface; partitioning the single data stream into multiple data packets, wherein each of the multiple data packets has header information which identifies a sequence identifier indicating an in-sequence position of the data packet in the single data stream; designating for each said data packet, a send-side physical interface and a receive-side physical interface, wherein the designation depends at least partly on the data capacity throughput; sending different portions of the partitioned data packets over different ones of the multiple physical interfaces in accordance with the designation; and receiving an acknowledgment over each of the multiple physical interfaces sent from the receiving endpoint, wherein the receiving endpoint determines an amount of data received on each of the multiple physical interfaces, and determines any changes in the data capacity throughput for each of the multiple physical interfaces on a recipient side of the receiving endpoint, wherein the acknowledgment indicates the determined amount of data received by the receiving endpoint on each of the different ones of the multiple physical interfaces, and wherein the acknowledgment includes an indication of the determined changes in the data capacity throughput for each of the multiple physical interfaces on the recipient side, wherein, when the acknowledgment indicates that an amount of a portion of data packets was not received over one of the multiple physical interfaces, then, depending on the data capacity throughput of the multiple physical interfaces, the sending endpoint repartitions the portion of the data stream corresponding to the not received data packets, and sends the repartitioned data packets over one or more of available ones of the multiple physical interfaces, and wherein at least some of the repartitioned data packets are sent over physical interfaces which are different than the physical interfaces on which the data packets of the data stream, corresponding to the repartitioned data packets, were originally sent. - View Dependent Claims (14)
-
-
15. A method for sending a single data stream from a sending endpoint to a receiving endpoint, wherein both of the sending endpoint and the receiving endpoint each have multiple physical interfaces connecting the sending endpoint and the receiving endpoint to multiple networks, respectively, and wherein in said method the receiving endpoint performs the steps of:
-
receiving different portions of partitioned data packets, wherein the single data stream is partitioned into multiple data packets, and different portions of the partitioned data packets are sent over different ones of the multiple physical interfaces in accordance with a designated send-side physical interface and a designated receive side physical interface, depending at least partly on a data capacity throughput for each of the multiple physical interfaces, wherein the data capacity throughput is an amount of data throughput which is currently possible of being sent over a respective physical interface; reconstructing the single data stream by combining the received partitioned data packets into the single data stream, wherein each of the multiple data packets has header information which identifies a sequence identifier indicating an in-sequence position of the data packet in the single data stream, and the single data stream is combined in accordance with the header information of the multiple data packets; determining an amount of data received on each of the multiple physical interfaces, and any changes in the data capacity throughput for each of the multiple physical interfaces on a recipient side of the receiving endpoint; and sending an acknowledgment over each of the multiple physical interfaces to the sending endpoint indicating the determined amount of data received on each of the different ones of the multiple physical interfaces, wherein the acknowledgment includes an indication of the determined changes in the data capacity throughput for each of the multiple physical interfaces on the recipient side, wherein, when the acknowledgment indicates that an amount of a portion of data packets was not received over one of the multiple physical interfaces, then, depending on the data capacity throughput of the multiple physical interfaces, the sending endpoint repartitions the portion of the data stream corresponding to the not received data packets, and sends the repartitioned data packets over one or more of available ones of the multiple physical interfaces, and wherein at least some of the repartitioned data packets are sent over physical interfaces which are different than the physical interfaces on which the data packets of the data stream, corresponding to the repartitioned data packets, were originally sent.
-
-
16. A sending endpoint comprising:
-
a computer-readable memory constructed to store computer-executable process steps; and a processor constructed to execute the computer-executable process steps stored in the memory; wherein the process steps stored in the memory cause the processor to send a single data stream from the sending endpoint to a receiving endpoint, wherein both of the sending endpoint and the receiving endpoint each have multiple physical interfaces connecting the sending endpoint and the receiving endpoint to multiple networks, respectively, and wherein the process steps stored in the memory include computer-executable process steps to; determine a data capacity throughput for each of the multiple physical interfaces, wherein the data capacity throughput is an amount of data throughput which is currently possible of being sent over a respective physical interface; partition the single data stream into multiple data packets, wherein each of the multiple data packets has header information which identifies a sequence identifier indicating an in-sequence position of the data packet in the single data stream; designate for each said data packet, a send-side physical interface and a receive-side physical interface, wherein the designation depends at least partly on the data capacity throughput; send different portions of the partitioned data packets over different ones of the multiple physical interfaces in accordance with the designation; and receive an acknowledgment over each of the multiple physical interfaces sent from the receiving endpoint, wherein the receiving endpoint determines an amount of data received on each of the multiple physical interfaces, and determines any changes in the data capacity throughput for each of the multiple physical interfaces on a recipient side of the receiving endpoint, wherein the acknowledgment indicates the determined amount of data received by the receiving endpoint on each of the different ones of the multiple physical interfaces, and wherein the acknowledgment includes an indication of the determined changes in the data capacity throughput for each of the multiple physical interfaces on the recipient side, wherein, when the acknowledgment indicates that an amount of a portion of data packets was not received over one of the multiple physical interfaces, then, depending on the data capacity throughput of the multiple physical interfaces, the sending endpoint repartitions the portion of the data stream corresponding to the not received data packets, and sends the repartitioned data packets over one or more of available ones of the multiple physical interfaces, and wherein at least some of the repartitioned data packets are sent over physical interfaces which are different than the physical interfaces on which the data packets of the data stream, corresponding to the repartitioned data packets, were originally sent.
-
-
17. A receiving endpoint comprising:
-
a computer-readable memory constructed to store computer-executable process steps; and a processor constructed to execute the computer-executable process steps stored in the memory; wherein the process steps stored in the memory cause the processor to receive a single data stream sent from a sending endpoint to the receiving endpoint, wherein both of the sending endpoint and the receiving endpoint each have multiple physical interfaces connecting the sending endpoint and the receiving endpoint to multiple networks, respectively, and wherein the process steps store in the memory include computer-executable process steps to; receive different portions of partitioned data packets, wherein the single data stream is partitioned into multiple data packets, and different portions of the partitioned data packets are received over different ones of the multiple physical interfaces in accordance with a designated send-side physical interface and a designated receive side physical interface, depending at least partly on a data capacity throughput for each of the multiple physical interfaces, wherein the data capacity throughput is an amount of data throughput which is currently possible of being sent over a respective physical interface; reconstruct the single data stream by combining the received partitioned data packets into the single data stream, wherein each of the multiple data packets has header information which identifies a sequence identifier indicating an in-sequence position of the data packet in the single data stream, and the single data stream is combined in accordance with the header information of the multiple data packets; determine an amount of data received on each of the multiple physical interfaces, and any changes in the data capacity throughput for each of the multiple physical interfaces on a recipient side of the receiving endpoint; and send an acknowledgment over each of the multiple physical interfaces to the sending endpoint indicating the determined amount of data received on each of the different ones of the multiple physical interfaces, wherein the acknowledgment includes an indication of the determined changes in the data capacity throughput for each of the multiple physical interfaces on the recipient side, wherein, when the acknowledgment indicates that an amount of a portion of data packets was not received over one of the multiple physical interfaces, then, depending on the data capacity throughput of the multiple physical interfaces, the sending endpoint repartitions the portion of the data stream corresponding to the not received data packets, and sends the repartitioned data packets over one or more of available ones of the multiple physical interfaces, and wherein at least some of the repartitioned data packets are sent over physical interfaces which are different than the physical interfaces on which the data packets of the data stream, corresponding to the repartitioned data packets, were originally sent.
-
-
18. A non-transitory computer-readable memory medium on which is stored computer-executable process steps for causing a processor to send a single data stream from a sending endpoint to a receiving endpoint, wherein both of the sending endpoint and the receiving endpoint each have multiple physical interfaces connecting the sending endpoint and the receiving endpoint to multiple networks, respectively, said process steps comprising:
-
determining a data capacity throughput for each of the multiple physical interfaces, wherein the data capacity throughput is an amount of data throughput which is currently possible of being sent over a respective physical interface; partitioning the single data stream into multiple data packets, wherein each of the multiple data packets has header information which identifies a sequence identifier indicating an in-sequence position of the data packet in the single data stream; designating for each data packet, a send-side physical interface and a receive-side physical interface, wherein the designation depends at least partly on the data capacity throughput; sending different portions of the partitioned data packets over different ones of the multiple physical interfaces in accordance with the designation; and receiving an acknowledgment over each of the multiple physical interfaces sent from the receiving endpoint, wherein the receiving endpoint determines an amount of data received on each of the multiple physical interfaces, and determines any changes in the data capacity throughput for each of the multiple physical interfaces on a recipient side of the receiving endpoint, wherein the acknowledgment indicates the determined amount of data received by the receiving endpoint on each of the different ones of the multiple physical interfaces, and wherein the acknowledgment includes an indication of the determined changes in the data capacity throughput for each of the multiple physical interfaces on the recipient side, wherein, when the acknowledgment indicates that an amount of a portion of data packets was not received over one of the multiple physical interfaces, then, depending on the data capacity throughput of the multiple physical interfaces, the sending endpoint repartitions the portion of the data stream corresponding to the not received data packets, and sends the repartitioned data packets over one or more of available ones of the multiple physical interfaces, and wherein at least some of the repartitioned data packets are sent over physical interfaces which are different than the physical interfaces on which the data packets of the data stream, corresponding to the repartitioned data packets, were originally sent.
-
-
19. A non-transitory computer-readable memory medium on which is stored computer-executable process steps for causing a processor to receive a single data stream sent from a sending endpoint to a receiving endpoint, wherein both of the sending endpoint and the receiving endpoint each have multiple physical interfaces connecting the sending endpoint and the receiving endpoint to multiple networks, respectively, said process steps comprising:
-
receiving different portions of partitioned data packets, wherein the single data stream is partitioned into multiple data packets, and different portions of the partitioned data packets are sent over different ones of the multiple physical interfaces in accordance with a designated send-side physical interface and a designated receive side physical interface, depending at least partly on a data capacity throughput for each of the multiple physical interfaces, wherein the data capacity throughput is an amount of data throughput which is currently possible of being sent over a respective physical interface; reconstructing the single data stream by combining the received partitioned data packets into the single data stream, wherein each of the multiple data packets has header information which identifies a sequence identifier indicating an in-sequence position of the data packet in the single data stream, and the single data stream is combined in accordance with the header information of the multiple data packets; determining an amount of data received on each of the multiple physical interfaces, and any changes in the data capacity throughput for each of the multiple physical interfaces on a recipient side of the receiving endpoint; and sending an acknowledgment over each of the multiple physical interfaces to the sending endpoint indicating the determined amount of data received on each of the different ones of the multiple physical interfaces, wherein the acknowledgment includes an indication of the determined changes in the data capacity throughput for each of the multiple physical interfaces on the recipient side, wherein, when the acknowledgment indicates that an amount of a portion of data packets was not received over one of the multiple physical interfaces, then, depending on the data capacity throughput of the multiple physical interfaces, the sending endpoint repartitions the portion of the data stream corresponding to the not received data packets, and sends the repartitioned data packets over one or more of available ones of the multiple physical interfaces, and wherein at least some of the repartitioned data packets are sent over physical interfaces which are different than the physical interfaces on which the data packets of the data stream, corresponding to the repartitioned data packets, were originally sent.
-
Specification