Communication system and techniques for transmission from source to destination
A system and method for transmitting and presenting streaming digital information signals that optimizes performance in the context of goodput, throughput, delay, receiver buffer requirements and tolerance to loss and jitter. The method provides ordering packets of information based on a priority associated with each of the packets; managing the flow of the packets into and out of a buffer; adjusting the rate at which the packets are provided to a communication medium; and transmitting and retransmitting the packets as needed.
1 . A method for sharing over-provisioned bandwidth, the method comprising
establishing a plurality of network paths between a single source and a plurality of destinations, the plurality of network paths including at least one shared network link;
determining an individual over-provisioned bandwidth needed for each of said plurality of network paths; and
determining a shared over-provisioned bandwidth for the at least one shared network link.
2 . The method of claim 1 , wherein determining the individual over-provisioned bandwidth comprises:
setting the individual over-provisioned bandwidth to the maximum number of retransmission requests received from a destination in any period of time T.
3 . The method of claim 1 , wherein determining the shared over-provisioned bandwidth comprises:
setting the shared over-provisioned bandwidth equal to the maximum of the individual over-provisioned bandwidths.
4 . The method of claim 1 , further comprising:
monitoring retransmission requests from each of said plurality of destinations;
updating the individual over-provisioned bandwidths based on said monitoring; and
updating the shared over-provisioned bandwidth, said updating occurring periodically during a transmission stream.
5 . The method of claim 1 , wherein the individual over-provisioned bandwidths are based on traffic trace history.
6 . A method of fast caching packets transmitted from a source to a destination, comprising:
requesting the current status of a destination buffer;
calculating a future status of the destination buffer;
determining if any reversed bandwidth is unused; and
increasing the rate at which packets are transmitted to the destination if there is unused bandwidth and the future status indicates that the destination buffer is not full.
7 . The method of claim 6 , wherein that rate at which packets are transmitted to the destination is increased such that the number of additional packets transmitted is the lessor of the unused bandwidth and the available buffer space.
8 . The method of claim 6 , wherein calculating the future status of the destination buffer comprises:
receiving the current status of the destination buffer t c seconds after the beginning of an op window; and
setting the future buffer status equal to current buffer status—((T−t c +RTT)*(sending rate—encoding rate)).
9 . The method of claim 7 , further comprising:
setting a retransmission credit equal to the number of additional packets transmitted.
10 . A method of transmitting data between a source and at least one destination, comprising:
transmitting the data as a series of packets to the at least one destination over a communications medium;
determining if one or more of the transmitted packets needs to be retransmitted;
requesting retransmission of a packet if it is determined that retransmission is required;
determining if there is available bandwidth to retransmit the request packet;
transmitting the request packet if there is available bandwidth;
determining if there is a retransmission credit available if it is determined that there is not any available bandwidth;
transmitting the request packet if there is a retransmission credit available; and
otherwise denying retransmission of the requested packet.
11 . The method of claim 10 , where the retransmission credit is generated by fast caching packets.
12 . The method of claim 10 , wherein determining if one or more of the transmitted packets needs to be retransmitted comprises:
receiving information regarding the packets to be received;
waiting a specific time period for receipt of an expected packet; and
sending a retransmission request if the expected packet is not received within the specified time period.