Reliable Delivery of Multi-Cast Conferencing Data
Abstract
Conferencing data is reliably delivered to computer systems participating in a hierarchically arranged multi-cast conferencing session. When a child computer system does not receive a multi-cast packet (e.g., an IP multi-cast packet), the child computer system sends a negative acknowledgment to a parent computer system. In response, the parent computer system re-transmits conferencing data that was contained in the multi-cast packet to the child computer system. Conferencing data can be re-transmitted to the child computer system via uni-cast (e.g., TCP). Accordingly, conferencing data that is not received or that is damaged via multi-cast can be repaired via uni-cast. Computer systems can join an existing multi-cast conference session without having to communicate with the root computer system. The root computer system adjusts a multi-cast send rate to compensate for changed network conditions.
Claims
exact text as granted — not AI-modified1 . In a hierarchically arranged multi-cast conferencing session including at least a parent computer system and one or more child computer systems, the parent computer system having a receive buffer and being network connectable to the one or more child computer systems, the parent computer system being configured to flush conferencing data from the receive buffer after receiving an acknowledgment of reception of the conferencing data from each of the one or more child computer systems, a method for the parent computer system to repair conferencing data that was not sufficiently received by at least one child computer system, the method comprising:
an act of accessing a multi-cast packet containing conferencing data for the multi-cast conference session, the multi-cast packet originally being multi-cast by a root computer system for delivery to other computer systems participating in the multi-cast conferencing session; an act of storing the conferencing data in the receive buffer; an act of detecting that a child computer system did not sufficiently receive the multi-cast packet; an act of identifying a delivery mechanism for re-transmitting the stored conferencing data to the child computer system, based at least on the parent computer system's position in the multi-cast conferencing session; and an act of re-transmitting the stored conferencing data to the child computer system in accordance with the identified delivery mechanism.
2 . The method as recited in claim 1 , wherein the act of detecting that a child computer system did not sufficiently receive the multi-cast packet comprises an act detecting that the child computer system did not receive the multi-cast packet.
3 . The method as recited in claim 1 , wherein the act of detecting that a child computer system did not sufficiently receive the multi-cast packet comprises an act of receiving a bit map that indicates a packet containing the conferencing data was not received.
4 . The method as recited in claim 3 , wherein the act of receiving a bit map that indicates a packet containing the conferencing data was not received comprises an act of a sequence number corresponding to the packet indicating that the packet was not received.
5 . The method as recited in claim 4 , wherein the act of a sequence number corresponding to the packet indicating that the packet was not received comprises an act of one or more other sequence numbers indicating other packets there were received.
6 . The method as recited in claim 1 , wherein the act of detecting that a child computer system did not sufficiently receive the multi-cast packet comprises an act of receiving a negative acknowledgement message from the child computer system.
7 . The method as recited in claim 6 , wherein the act of receiving a negative acknowledgement message from the child computer system comprises an act of receiving a negative acknowledgement message that includes a last continuously received packet sequence number, a last received packet sequence number, and a bit map of the multi-cast packets received between the last continuous packet sequence number and the last packet sequence number.
8 . The method as recited in claim 1 , wherein the act of detecting that a child computer system did not sufficiently receive the multi-cast packet comprises an act of failing to receive a corresponding acknowledgment message from the child computer system within a round trip time of accessing the multi-cast packet, the round trip time being at least an estimate of the time for a packet to travel between the parent computer system and the child computer system.
9 . The method as recited in claim 8 , wherein the act of failing to receive a corresponding acknowledgment message from the child computer system within a round trip time of accessing the multi-cast packet comprises an act of failing to receive a corresponding acknowledgment message within a round trip time based at least on the difference in the reception time of a prior multi-cast packet acknowledgement message and the reception time of the prior multi-cast packet.
10 . The method as recited in claim 8 , wherein the act of failing to receive a corresponding acknowledgment message from the child computer system within a round trip time of accessing the multi-cast packet comprises an act of failing to receive a corresponding acknowledgment message collectively acknowledging the child computer system's receipt of a plurality of multi-cast packets such that the potential of causing an acknowledgement implosion is reduced.
11 . The method as recited in claim 10 , wherein the act of failing to receive a corresponding acknowledgment message collectively acknowledging the child computer system's receipt of a plurality of multi-cast packets comprises an act of calculating the plurality of multi-cast packets based at least on the number of child computer systems participating in the multi-cast conference session.
12 . The method as recited in claim 1 , wherein the act of detecting that a child computer system did not receive the multi-cast packet comprises an act of failing to receive a corresponding acknowledgment message from the child computer system in response to keep-alive message.
13 . The method as recited in claim 1 , wherein the act of identifying a delivery mechanism for re-transmitting the stored conferencing data to the child computer system comprises an act of identifying a uni-cast mechanism for re-transmitting the stored conferencing data.
14 . The method as recited in claim 13 , wherein the act of identifying a uni-cast mechanism for re-transmitting the stored conferencing data comprises an act of identifying TCP as a mechanism for re-transmitted stored conferencing data.
15 . The method as recited in claim 13 , wherein the act of identifying a uni-cast mechanism for re-transmitting the stored conferencing data comprises an act of detecting that the number of immediate child computer systems that did not receive the multi-cast packet is below a specified threshold.
16 . The method as recited in claim 1 , wherein the act of identifying a delivery mechanism for re-transmitting the stored conferencing data to the child computer system comprises an act of identifying a multi-cast mechanism for re-transmitting the stored conferencing data based on the number of child computer systems not receiving the multi-cast packet being above a specified threshold.
17 . The method as recited in claim 16 , wherein the act of identifying a multi-cast mechanism for re-transmitting the stored conferencing data comprises an act of identifying an IP multi-cast mechanism for re-transmitting the stored conferencing data.
18 . The method as recited in claim 1 , wherein the act of retransmitting the stored conferencing data to the child computer system in accordance with the identified delivery mechanism comprises an act of retransmitting the stored conference data to the child computer system according to a uni-cast mechanism so as to provide repaired conferencing data to the child computer system.
19 . The method as recited in claim 18 , wherein the act of retransmitting the stored conference data to the child computer system according to a uni-cast mechanism so as to provide repaired conferencing data to the child computer system comprises an act of retransmitting the stored conferencing data according to TCP so as to repair conferencing data that was not sufficiently received via IP multi-cast.
20 . In a hierarchically arranged multi-cast conferencing session including at least a child computer system and a parent computer system, the child computer system being network connectable to the parent computer system, a method for the child computer system to receive repair conferencing for repairing conferencing data that was not sufficiently received when the conferencing data was originally multi-cast to computer systems participating in the multi-cast conferencing session, the method comprising:
an act of receiving a last continuously received multi-cast packet having a last continuously received packet sequence number, the last continuously received multi-cast packet originally being multi-cast by a root computer system for delivery to other computer systems participating in the multi-cast conference session; an act of receiving a last received multi-cast packet having a last received sequence number, the last received multi-cast packet originally being multi-cast by the root computer system for delivery to other computer systems participating in the multi-cast conference session; an act of detecting that one or more multi-cast packets with sequence numbers between the last continuously received packet sequence number and the last received sequence number were not received; an act of sending a negative acknowledgement message to the parent computer system, the negative acknowledgement message indicating to the parent computer system that the child computer system did not receive the one or more multi-cast packets with sequence numbers between the last continuously received packet sequence number and the last received sequence number; and an act of receiving repair conferencing data from the parent computer system, the repair conferencing data for repairing conferencing data that was not sufficiently received by the child computer system.
21 . The method as recited in claim 20 , wherein the act of receiving a last received multi-cast packet with a last received sequence number comprises an act of receiving a keep-alive message from the root computer system.
22 . The method as recited in claim 20 , wherein the act of sending a negative acknowledgement message to the parent computer system comprises an act of sending a negative acknowledgment message including the last continuously received packet sequence number, the last received packet sequence number, and a bit map of the multi-cast packets received between the last continuous packet sequence number and the last packet sequence number.
23 . The method as recited in claim 20 , wherein the act of receiving repair conferencing data from the parent computer system comprises an act of receiving the repair conferencing data via a multi-cast mechanism.
24 . The method as recited in claim 23 , wherein the act of receiving the repair conferencing data via a multi-cast mechanism comprises an act of receiving repair conferencing data via IP multi-cast.
25 . The method as recited in claim 20 , wherein the act of receiving repair conferencing data from the parent computer system comprises an act of receiving the repair conferencing data via a uni-cast mechanism.
26 . The method as recited in claim 25 , wherein the act of receiving the repair conferencing data via a uni-cast mechanism comprises an act of receiving repair conferencing data via TCP.
27 . A computer program product for use in a hierarchically arranged multi-cast conferencing session including at least a parent computer system and one or more child computer systems, the parent computer system having a receive buffer and being network connectable to the one or more child computer systems, the parent computer system being configured to flush conferencing data from the receive buffer after receiving an acknowledgment of reception of the conferencing data from each of the one or more child computer systems, the computer program product for implementing a method for the parent computer system to repair conferencing data that was not sufficiently received by at least one child computer system, the computer program product comprising one or more computer-readable media having stored thereon computer executable instructions that, when executed by a processor, cause the parent computer system to perform the following:
access a multi-cast packet containing conferencing data for the multi-cast conference session, the multi-cast packet originally being multi-cast by a root computer system for delivery to other computer systems included in multi-cast conference session; store the conferencing data in the receive buffer; detect that a child computer system did not sufficiently receive the multi-cast packet; identify a delivery mechanism for re-transmitting the stored conferencing data to the child computer system, based at least on the parent computer system's position in the multi-cast conferencing session; and re-transmit the conferencing data to the child computer system in accordance with the identified delivery mechanism.
28 . The method as recited in claim 27 , wherein the one or more computer-readable media comprise system memory.
29 . A computer program product for use in a hierarchically arranged multi-cast conferencing session including at least a child computer system and a parent computer system, the child computer system being network connectable to the parent computer system, the computer program product for implementing a method for the child computer system to receive repair conferencing data that was not sufficiently received when the conferencing data was originally multi-cast to computer systems participating in the multi-cast conferencing session, the computer program product comprising one or more computer-readable media having stored thereon computer executable instructions that, when executed by a processor, cause the child computer system to perform the following:
receive a last continuously received multi-cast packet having a last continuously received packet sequence number, the last continuously received multi-cast packet originally being multi-cast by a root computer system for delivery to other computer systems participating in the multi-cast conference session; receive a last received multi-cast packet having a last received sequence number, the last received multi-cast packet originally being multi-cast by the root computer system for delivery to other computer systems participating in the multi-cast conference session; detect that one or more multi-cast packets with sequence numbers between the last continuously received packet sequence number and the last received sequence number were not received; send a negative acknowledgement message to the parent computer system, the negative acknowledgement message indicating to the parent computer system that the child computer system did not receive the one or more multi-cast packets with sequence numbers between the last continuously received packet sequence number and the last received sequence number; and receive repair conferencing data from the parent computer system, the repair conferencing data for repairing conferencing data that not sufficiently received by the child computer system.
30 . The method as recited in claim 29 , wherein the one or more computer-readable media comprise physical storage media.
31 . One or more computer-readable media having stored thereon a data structure for representing repair information, the data structure comprising the following:
a last continuously received field representing the sequence number of the last continuously received multi-cast packet received by a computer system participating in a multi-cast conferencing session; a last received field representing the sequence number of the last received multi-cast packet received by the computer system participating in the multi-cast conferencing session; and a bit map field representing a bit map of one or more multi-cast packets with sequence numbers between the sequence number represented in the last continuously received field and the sequence number represented in the last received field.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.