System and method for fast, reliable byte stream transport
First Claim
Patent Images
1. A method, comprising:
- receiving, at a transmitter, a first set of credits specifying a first starting data element and a first ending data element within a data stream;
sending, by the transmitter, sequential data elements specified by the first set of credits, commencing at the first starting data element and ceasing at the first ending data element;
receiving, at the transmitter, a second set of credits specifying a second starting data element and a second ending data element within the data stream, the second set of credits specifying a non-overlapping range of the sequential data elements specified by the first set of credits, wherein the second set of credits implicitly acknowledges the sequential data elements specified by the first set of credits; and
sending, by the transmitter, sequential data elements specified by the second set of credits, commencing at the second starting data element and ceasing at the second ending data element.
3 Assignments
0 Petitions
Accused Products
Abstract
Reliable byte stream transfer protocols play an important role in modern networks. The present invention implements such a protocol using credits for flow control and negative acknowledgements for reliable delivery. The credit mechanism uses credit transfer in installments and is immune to the losses or corruptions of intermediate credit installments. Negative acknowledgements are used to solicit the retransmission of data stream component. The present invention provides full compatibility at the programming interface with reliable byte transfer protocols, such as TCP, and also allows full interoperability among hosts running the aforesaid standard protocol or the protocol of the present invention.
-
Citations
25 Claims
-
1. A method, comprising:
-
receiving, at a transmitter, a first set of credits specifying a first starting data element and a first ending data element within a data stream; sending, by the transmitter, sequential data elements specified by the first set of credits, commencing at the first starting data element and ceasing at the first ending data element; receiving, at the transmitter, a second set of credits specifying a second starting data element and a second ending data element within the data stream, the second set of credits specifying a non-overlapping range of the sequential data elements specified by the first set of credits, wherein the second set of credits implicitly acknowledges the sequential data elements specified by the first set of credits; and sending, by the transmitter, sequential data elements specified by the second set of credits, commencing at the second starting data element and ceasing at the second ending data element. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A method, comprising:
-
transmitting, from a receiver, a first set of credits specifying a first starting data element and a first ending data element within a data stream; receiving, at the receiver, sequential data elements specified by the first set of credits; transmitting, from the receiver, a second set of credits specifying a second starting data element and a second particular ending data element within the data stream, wherein the second set of credits implicitly acknowledges the sequential data elements specified by the first set of credits; and receiving, at the receiver, sequential data elements specified by the second set of credits, the second set of credits specifying a non-overlapping range of the sequential data elements specified by the first set of credits. - View Dependent Claims (13, 14, 15, 16, 17)
-
-
18. A non-transitory computer readable medium, having stored therein instructions, the instructions comprising:
-
receiving, at a transmitter, a first set of credits specifying a first starting data element and a first ending data element within a data stream; sending, by the transmitter, sequential data elements specified by the first set of credits, commencing at the first starting data element and ceasing at the first ending data element; receiving, at the transmitter, a second set of credits specifying a second starting data element and a second ending data element within the data stream, the second set of credits specifying a non-overlapping range of the sequential data elements specified by the first set of credits, wherein the second set of credits implicitly acknowledges the sequential data elements specified by the first set of credits; and sending, by the transmitter, sequential data elements specified by the second set of credits, commencing at the second starting data element and ceasing at the second ending data element. - View Dependent Claims (19, 20, 21)
-
-
22. An apparatus, comprising:
-
means for receiving a first set of credits specifying a first starting data element and a first ending data element within a data stream; means for sending sequential data elements specified by the first set of credits, commencing at the first starting data element and ceasing at the first ending data element; means for receiving a second set of credits specifying a second starting data element and a second ending data element within the data stream, the second set of credits specifying a non-overlapping range of the sequential data elements specified by the first set of credits, wherein the second set of credits implicitly acknowledges the sequential data elements specified by the first set of credits; and means for sending sequential data elements specified by the second set of credits, commencing at the second starting data element and ceasing at the second ending data element. - View Dependent Claims (23)
-
-
24. An apparatus, comprising:
-
means for transmitting a first set of credits specifying a first starting data element and a first ending data element within a data stream; means for receiving sequential data elements specified by the first set of credits; means for transmitting a second set of credits specifying a second starting data element and a second particular ending data element within the data stream, wherein the second set of credits implicitly acknowledges the sequential data elements specified by the first set of credits; and means for receiving sequential data elements specified by the second set of credits, the second set of credits specifying a non-overlapping range of the sequential data elements specified by the first set of credits.
-
-
25. A non-transitory computer readable medium having instructions stored thereon, the instructions comprising:
-
transmitting, at a receiver, a first set of credits specifying a first starting data element and a first ending data element within a data stream; receiving, at the receiver, sequential data elements specified by the first set of credits; transmitting, at the receiver, a second set of credits specifying a second starting data element and a second particular ending data element within the data stream, wherein the second set of credits implicitly acknowledges the sequential data elements specified by the first set of credits; and receiving, at the receiver, sequential data elements specified by the second set of credits, the second set of credits specifying a non-overlapping range of the sequential data elements specified by the first set of credits.
-
Specification