System and method for reliable virtual bi-directional data stream communications with single socket point-to-multipoint capability
First Claim
Patent Images
1. A method for streaming data using a virtual bi-directional data stream between a first communication device and a second communication device comprising:
- creating, by the first device, a streaming data packet D1;
inserting, by the first device, a data segment and D1 into a payload section of a connection-less transport layer packet, wherein at least one of D1 and the connection-less transport layer packet includes a send field identifying a starting location in the data stream of the data segment to be sent with D1, an acknowledgement (ACK) field identifying a location in the data stream up to which all data has been received by the first device, a unique identifier (UID) identifying a connection used by the first device for the data stream, a window field identifying an amount of space available in a receive buffer of the first device, a packet type field, a pad field identifying an amount of padding used to ensure D1 has a predefined length, a network address of the first device, a network address of the second device, and a length of the connection-less transport layer packet;
sending, by the first device, the connection-less transport layer packet to the second device;
obtaining, by the first device, a current round trip time (RTT) that is based on first and second RTTs of packets previously sent from the first device to the second device and a configurable RTT variation factor, wherein the obtaining includes calculating, by the first device, the current RTT as the RTT for a streaming data packet D2 previously sent from the first device to the second device as RTT=RTT+((CurrRTT−
OldRTT)*1/M), wherein CurrRTT represents the first RTT of a streaming data packet D3 that was sent prior to D2 from the first device to the second device, OldRTT represents the second RTT of a streaming data packet D4 that was sent prior to D3 from the first device to the second device, and M represents the configurable RTT variation factor;
obtaining, by the first device, a current RTT variance that is based on a previous RTT variance, the first and second RTTs, and a configurable RTT variance variation factor, wherein the obtaining includes calculating, by the first device, the current RTT variance (RTTvar) as the RTTvar that was calculated for D2 as RTTvar=RTTvar+((CurrRTTVar−
Abs(CurrRTT−
OldRTT))*1/N), wherein CurrRTTVar represents an RTTvar of D3 and is the previous RTT variance, and N represents the configurable RTT variance variation factor;
calculating, by the first device, a timeout for D1 based on the current RTT and the current RTT variance; and
resending, by the first device, D1 if the timeout does not exceed a predefined timeout limit and if an ACK for D1 has not been received from the second device.
1 Assignment
0 Petitions
Accused Products
Abstract
An improved system and method are disclosed for reliable virtual bi-directional data stream (RVBDDS) connections. In one example, two communication devices create and exchange streaming data packets that are encapsulated in connection-less transport layer packets. The streaming data packets contain information used in managing the RVBDDS connection between the two devices.
-
Citations
23 Claims
-
1. A method for streaming data using a virtual bi-directional data stream between a first communication device and a second communication device comprising:
-
creating, by the first device, a streaming data packet D1; inserting, by the first device, a data segment and D1 into a payload section of a connection-less transport layer packet, wherein at least one of D1 and the connection-less transport layer packet includes a send field identifying a starting location in the data stream of the data segment to be sent with D1, an acknowledgement (ACK) field identifying a location in the data stream up to which all data has been received by the first device, a unique identifier (UID) identifying a connection used by the first device for the data stream, a window field identifying an amount of space available in a receive buffer of the first device, a packet type field, a pad field identifying an amount of padding used to ensure D1 has a predefined length, a network address of the first device, a network address of the second device, and a length of the connection-less transport layer packet; sending, by the first device, the connection-less transport layer packet to the second device; obtaining, by the first device, a current round trip time (RTT) that is based on first and second RTTs of packets previously sent from the first device to the second device and a configurable RTT variation factor, wherein the obtaining includes calculating, by the first device, the current RTT as the RTT for a streaming data packet D2 previously sent from the first device to the second device as RTT=RTT+((CurrRTT−
OldRTT)*1/M), wherein CurrRTT represents the first RTT of a streaming data packet D3 that was sent prior to D2 from the first device to the second device, OldRTT represents the second RTT of a streaming data packet D4 that was sent prior to D3 from the first device to the second device, and M represents the configurable RTT variation factor;obtaining, by the first device, a current RTT variance that is based on a previous RTT variance, the first and second RTTs, and a configurable RTT variance variation factor, wherein the obtaining includes calculating, by the first device, the current RTT variance (RTTvar) as the RTTvar that was calculated for D2 as RTTvar=RTTvar+((CurrRTTVar−
Abs(CurrRTT−
OldRTT))*1/N), wherein CurrRTTVar represents an RTTvar of D3 and is the previous RTT variance, and N represents the configurable RTT variance variation factor;calculating, by the first device, a timeout for D1 based on the current RTT and the current RTT variance; and resending, by the first device, D1 if the timeout does not exceed a predefined timeout limit and if an ACK for D1 has not been received from the second device. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A method for streaming data using a virtual bi-directional data stream between a first communication device and a second communication device comprising:
-
creating, by the first device, a streaming data packet D1; inserting, by the first device, a data segment and D1 into a payload section of a connection-less transport layer packet, wherein at least one of D1 and the connection-less transport layer packet includes a send field identifying a starting location in the data stream of the data segment to be sent with D1, an acknowledgement (ACK) field identifying a location in the data stream up to which all data has been received by the first device, a unique identifier (UID) identifying a connection used by the first device for the data stream, a window field identifying an amount of space available in a receive buffer of the first device, a packet type field, a pad field identifying an amount of padding used to ensure D1 has a predefined length, a network address of the first device, a network address of the second device, and a length of the connection-less transport layer packet sending, by the first device, the connection-less transport layer packet to the second device; obtaining, by the first device, a current round trip time (RTT) that is based on first and second RTTs of packets previously sent from the first device to the second device and a configurable RTT variation factor; obtaining, by the first device, a current RTT variance that is based on a previous RTT variance, the first and second RTTs, and a configurable RTT variance variation factor; calculating, by the first device, a timeout for D1 based on the current RTT and the current RTT variance; resending, by the first device, D1 if the timeout does not exceed a predefined timeout limit and if an ACK for D1 has not been received from the second device; receiving, by the first device, an ACK from the second device acknowledging receipt of D1 by the second device prior to resending the connection-less transport layer packet by the first device, wherein receipt of the ACK stops the first device from resending the connection-less transport layer packet; determining, by the first device, whether the segment has been retransmitted if the ACK has been received from the second device; and calculating a new RTT and a new RTTVar based on D1 if the segment has not been retransmitted, wherein calculating the new RTT and new RTTVar based on D1 includes; calculating the new RTT as RTT=RTT+((CurrRTT−
OldRTT)*1/M), wherein CurrRTT represents the RTT of D2 and OldRTT represents the RTT of D3; andcalculating the new RTTvar as RTTvar=RTTvar+((CurrRTTVar−
Abs(CurrRTT−
OldRTT))*1/N), wherein CurrRTTVar represents the RTTvar of D2.
-
-
13. A method for streaming data using a virtual bi-directional data stream between a first device and a second device comprising:
-
establishing, by the first device, a virtual bi-directional data stream connection with the second device; receiving, by the first device, a streaming data packet D1 from the second device; creating, by the first device, a streaming data packet D2 for a segment to be sent from the first device to the second device via the connection, wherein D2 has a send field identifying a location of the data segment in the data stream, an acknowledgement (ACK) field for D1, a unique identifier identifying the connection used by the first device for the data stream, a packet type field, and a window value identifying an amount of space available in a receive buffer of the first device; creating, by the first device, a connection-less transport layer packet containing an IP address of the first device, an IP address of the second device, a length of the connection-less transport layer packet, the segment, and D2; sending, by the first device, the connection-less transport layer packet to the second device; calculating, by the first device, a timeout for D2 based on a round trip time (RTT) and an RTT variance (RTTvar), wherein the RTT and the RTTvar are based on streaming data packets D3 and D4 previously sent from the first device to the second device, wherein RTT is calculated as RTT=RTT+((CurrRTT−
OldRTT)*1/M), wherein CurrRTT represents the RTT of D3, OldRTT represents the RTT of D4, and M represents a configurable RTT variation factor, and wherein RTTvar is calculated as RTTvar=RTTvar+((CurrRTTVar−
Abs(CurrRTT−
OldRTT))*1/N), wherein CurrRTTVar represents the RTT variance of D3, and N represents a configurable RTT variance variation factor; andresending, by the first device, D2 if the timeout does not exceed a predefined timeout limit and if an ACK for D2 has not been received from the second device. - View Dependent Claims (14, 15, 16, 17, 18, 19)
-
-
20. A communication device comprising:
-
a network interface configured to send and receive communications via at least one of a wireless and a wireline network; a controller coupled to the network interface; and a memory coupled to the controller, the memory having a plurality of instructions stored thereon for execution by the controller, the instructions including instructions for; establishing, by the first device, a virtual bi-directional connection with a second communication device; receiving, by the first device, a streaming data packet D1 from the second device; creating, by the first device, a streaming data packet D2 for a segment to be sent from the first device to the second device via the connection, wherein D2 has a send field identifying a starting location of the data segment in the data stream, an acknowledgement (ACK) field for D1, a unique identifier identifying the connection used by the first device for the data stream, a packet type, and a window value identifying an amount of space available in a receive buffer of the first device; creating, by the first device, a connection-less transport layer packet containing an IP address of the first device, an IP address of the second device, a length of the connection-less transport layer packet, the segment, and D1; sending, by the first device, the connection-less transport layer packet to the second device; calculating, by the first device, a timeout for D2 based on a round trip time (RTT) and an RTT variance (RTTvar), wherein the RTT and the RTTvar are based on streaming data packets D3 and D4 previously sent from the first device to the second device, wherein RTT is calculated as RTT=RTT+((CurrRTT−
OldRTT)*1/M), wherein CurrRTT represents the RTT of D3, OldRTT represents the RTT of D4, and M represents a configurable RTT variation factor, and wherein RTTvar is calculated as RTTvar=RTTvar+((CurrRTTVar−
Abs(CurrRTT−
OldRTT))*1/N), wherein CurrRTTVar represents the RTT variance of D3, and N represents a configurable RTT variance variation factor; andresending, by the first device, D1 if the timeout does not exceed a predefined timeout limit and if an ACK for D1 has not been received from the second device. - View Dependent Claims (21, 22, 23)
-
Specification