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-modifiedWhat is claimed and desired secured by United States Letters Patent is:
1 . In a parent computer system that is network connectable to one or more child computer systems, a method for inviting a child computer system to join an existing multi-cast conference session, the method comprising:
an act of accessing a designated multi-cast address for the multi-cast conference session; an act of sending a multi-cast invite message to a child computer system, the multi-cast invite message including at least the designated multi-cast address; an act of receiving a multi-cast status message indicating that the child computer system is capable of receiving multi-cast packets for the multi-cast conference session; and an act of sending a next multi-cast sequence number to the child computer system in response to receiving the multi-cast status message, the next multi-cast sequence number indicating the multi-cast sequence number that is to be associated with the next multi-cast packet for the multi-cast session.
2 . The method as recited in claim 1 , wherein the act of accessing a multi-cast address comprises an act of receiving the multi-cast address from a computer system that is above the parent computer system in a hierarchical tree of computer systems.
3 . The method as recited in claim 1 , wherein the act of accessing a designated multi-cast address comprises an act of the parent computer system allocating the designated multi-cast address.
4 . The method as recited in claim 1 , wherein the act of sending a multi-cast invite message to a child computer system comprises an act of sending a multi-cast invite message that includes the designated multi-cast address, a designated multi-cast port, and a network address of a multi-cast sender.
5 . The method as recited in claim 1 , wherein the act receiving an multi-cast status messages comprises an act of receiving a message acknowledging successful receipt of a multi-cast packet that was transmitted to computer systems participating in the multi-cast session.
6 . In a child computer system that is network connectable to at least a parent computer system, a method for joining an existing multi-cast conference session, the method comprising:
an act of receiving a multi-cast invite message from the parent computer system, the multi-cast invite message including at least a designated multi-cast address for the multi-cast conference session; an act of receiving a multi-cast packet at the designated multi-cast address, the multi-cast packet being transmitted from a multi-cast sender for reception by computer systems participating in the multi-cast conference session; an act of sending a multi-cast status message to the parent computer system in response to receiving the multi-cast packet, the multi-cast status message indicating to the parent computer system that the child computer system is capable of receiving multi-cast packets for the multi-cast conference session; and an act of receiving a next multi-cast sequence number from the parent computer system, the next multi-cast sequence number indicating the multi-cast sequence number that is to be associated with the next multi-cast packet for the multi-cast session.
7 . The method as recited in claim 6 , wherein the act of receiving a multi-cast invite message from the parent computer system comprises an act receiving a multi-cast invite message that includes the designated multi-cast address, a designated multi-cast port, and a network address of a multi-cast sender.
8 . The method as recited in claim 6 , wherein the act of receiving a multi-cast packet comprises an act of receiving a multi-cast packet that was transmitted by a computer system above the parent computer system in a hierarchical tree of computer systems.
9 . The method as recited in claim 6 , wherein the act of sending a multi-cast status message to the parent computer system comprises an act of sending a message acknowledging receipt of the multi-cast packet that was transmitted to computer systems participating in the multi-cast session.
10 . 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.
11 . The method as recited in claim 10 , 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.
12 . The method as recited in claim 10 , 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.
13 . The method as recited in claim 12 , 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.
14 . The method as recited in claim 13 , 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.
15 . The method as recited in claim 10 , 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.
16 . The method as recited in claim 15 , 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.
17 . The method as recited in claim 10 , 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.
18 . The method as recited in claim 17 , 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.
19 . The method as recited in claim 17 , 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.
20 . The method as recited in claim 19 , 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.
21 . The method as recited in claim 10 , 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.
22 . The method as recited in claim 10 , 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.
23 . The method as recited in claim 22 , 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.
24 . The method as recited in claim 22 , 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.
25 . The method as recited in claim 10 , 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.
26 . The method as recited in claim 25 , 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.
27 . The method as recited in claim 10 , 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.
28 . The method as recited in claim 27 , 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.
29 . 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.
30 . The method as recited in claim 29 , 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.
31 . The method as recited in claim 29 , 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.
32 . The method as recited in claim 29 , 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.
33 . The method as recited in claim 32 , 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.
34 . The method as recited in claim 29 , 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.
35 . The method as recited in claim 34 , wherein the act of receiving the repair conferencing data via a uni-cast mechanism comprises an act of receiving repair conferencing data via TCP.
36 . In a hierarchically arranged multi-cast conferencing session including at least a root computer system that is network connectable to one or more immediate child computer systems, the root computer system configured to transmit packets with sequence numbers that can be used to order the packets, the root computer system being further configured to adjust the sequence number after a packet is transmitted such that a subsequent packet can be distinguished from a prior packet, a method for the root computer system to control congestion on links used by the computer systems participating in the multi-cast conferencing session, the method comprising:
an act of identifying a current send rate, the current send rate being a send rate the root computer system will multi-cast conferencing data to other computer systems participating in the multi-cast conferencing session; an act of identifying a next packet sequence number that is to be associated with the next transmitted multi-cast packet; an act of selecting a rate change packet sequence number, the rate change packet sequence number being a specified threshold of sequence numbers greater than the next packet sequence number, the rate change packet sequence number indicating a sequence number when the root computer system can potentially adjust the current send rate; an act of transmitting at least a next multi-cast packet having the next current packet sequence number, the at least a next multi-cast packet being transmitted in accordance with the current send rate; and an act of adjusting the current send rate based at least on whether the one or more immediate child computer systems indicated reception of the next multi-cast cast packet.
37 . The method as recited in claim 36 , wherein the act of selecting a rate change packet sequence number comprises an act of selecting the specified threshold such that each of the one or more immediate child computer systems has an opportunity to send an acknowledgment message before the rate change packet sequence number is reached.
38 . The method as recited in claim 36 , wherein the act of transmitting at least a next multi-cast packet having the next packet sequence number comprises an act of transmitting a sequence of multi-cast packets, the sequence of multi-cast packets including the next multi-cast packet and a multi-cast packet having the rate change packet sequence number.
39 . The method as recited in claim 36 , wherein the act of adjusting the current send rate comprises an act of decreasing the current send rate in response to receiving a negative acknowledgement message from an immediate child computer system, the negative acknowledgment message indicating that the immediate child computer system did not receive one or more multi-cast packets having packet sequence numbers between the next packet sequence number and the rate change packet sequence number.
40 . The method as recited in claim 39 , wherein the act of decreasing the current send rate in response to receiving a negative acknowledgement message from an immediate child computer system comprises an act of determining the size of the decrease based on the number of multi-cast packets that were not received.
41 . The method as recited in claim 39 , wherein the act of decreasing the current send rate in response to receiving a negative acknowledgement message from an immediate child computer system comprises an act of determining the size of the decrease based on the adjustment that was applied to a previous send rate to generate the current send rate.
42 . The method as recited in claim 36 , wherein the act of adjusting the current send rate comprises an act of increasing the current send rate in response to receiving acknowledgment messages from each of the one or more immediate child computer systems, each acknowledgment message indicating that a corresponding immediate child computer system received all the multi-cast packets having packet sequence numbers between the next packet sequence number and the rate change packet sequence number.
43 . The method as recited in claim 42 , wherein the act of increasing the current send rate in response to receiving acknowledgment messages from each of the one or more immediate child computer systems comprises an act of determining the size of the increase based on the previously recorded highest send rate.
44 . The method as recited in claim 42 , wherein the act of increasing the current send rate in response to receiving acknowledgment messages from each of the one or more immediate child computer systems comprises an act of determining the size of the increase based on the on the adjustment that was applied to a previous send rate to generate the current send rate.
45 . A computer program product for use in a parent computer system that is network connectable to one or more child computer systems, the computer program product for implementing a method for inviting a child computer system to join an existing multi-cast conference 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 parent computer system to perform the following:
access a designated multi-cast address for the multi-cast conference session; send a multi-cast invite message to a child computer system, the multi-cast invite message including at least the designated multi-cast address; receive an multi-cast status message indicating that the child computer system is capable of receiving multi-cast packets for the multi-cast conference session; and send a next multi-cast sequence number to the child computer system in response to receiving the multi-cast status message, the next multi-cast sequence number indicating the multi-cast sequence number that is to be associated with the next multi-cast packet received for the multi-cast session.
46 . The method as recited in claim 45 , wherein the one or more computer-readable media comprise physical storage media.
47 . A computer program product for use in a child computer system that is network connectable to at least a parent computer system, the computer program product for implementing a method for joining a multi-cast conference 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 multi-cast invite message from the parent computer system, the multi-cast invite message including at least a designated multi-cast address for the multi-cast conference session; receive a multi-cast packet at the designated multi-cast address, the multi-cast packet being transmitted from a multi-cast sender for reception by computer systems participating in the multi-cast conferencing session; send a multi-cast status message to the parent computer system in response to receiving the multi-cast packet, the multi-cast status message indicating to the parent computer system that the child computer system is capable of receiving multi-cast packets for the multi-cast conference session; and receive a next multi-cast sequence number from the parent computer system, the next multi-cast sequence number indicating the multi-cast sequence number that is to be associated with the next multi-cast packet received by the child computer system.
48 . The method as recited in claim 47 , wherein the one or more computer-readable media comprise physical storage media.
49 . 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 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.
50 . The method as recited in claim 49 , wherein the one or more computer-readable media comprise system memory.
51 . 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.
52 . The method as recited in claim 51 , wherein the one or more computer-readable media comprise physical storage media.
53 . A computer program product for use in a hierarchically arranged multi-cast conferencing session including at least a root computer system that is network connectable to one or more immediate child computer systems, the root computer system configured to transmit packets with sequence numbers that can be used to order the packets, the root computer system being further configured to adjust the sequence number after a packet is transmitted such that a subsequent packet can be distinguished from a prior packet, the computer program product for implementing a method for the root computer system to control congestion on links used by the computer systems of 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 root computer system to perform the following:
identify a current send rate, the current send rate being a send rate the root computer system will multi-cast conferencing data to other computer systems participating in the multi-cast conferencing session; identify a next packet sequence number that is to be associated with the next transmitted multi-cast packet; selecting a rate change packet sequence number, the rate change packet sequence number being a specified threshold of sequence numbers greater than the next packet sequence number, the rate change packet sequence number indicating a sequence number when the root computer system can potentially adjust the current send rate; transmit at least a next multi-cast packet having the next packet sequence number, the at least a next multi-cast packet being transmitted in accordance with the current send rate; and adjust the current send rate based at least on whether the one or more immediate child computer systems indicated reception of the next multi-cast cast packet.
54 . The method as recited in claim 53 , wherein the one or more computer-readable media comprise physical storage media.
55 . 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.
56 . One or more computer-readable media having stored thereon a data structure for identifying a multi-cast conferencing session, the data structure comprising the following:
a multi-cast sender network address field representing a network address of a computer system that is to transmit multi-cast packets to other computer systems participating in the multi-cast session; a multi-cast network address field representing a network address that has been designated as an address for receiving multi-cast packets transmitted by the computer system represented in the multi-cast sender network address field; and a port field representing a port that has been designated as a port for receiving multi-cast packets transmitted by the computer system represented in the multi-cast sender network address field.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.