A multi-endpoint communication system comprising communication nodes linked in a tree structure by unicast connections includes a server to receive a request from a new communication node to join the tree structure. The system further includes a node selector to identify one of the plurality of communication nodes that is likely to be in a same local area network as the new communication node. In addition, the system includes a node linker to connect the new communication node to the identified communication node within the tree structure.
Legal claims defining the scope of protection, as filed with the USPTO.
1. A method for simulating multicast connections receiving at a receiving communication node in a tree structure a request from a new communication node to join the tree structure, the tree structure comprising a plurality of communication nodes linked using unicast connections; and evaluating at the receiving communication node whether the receiving communication node has a greatest permitted number of child nodes connected thereto and whether the new communication node belongs to a same subnet as the receiving communication node and whether one of the child nodes connected to the receiving communication node does not belong to the same subnet as the receiving communication node, and, if so, connecting the new communication node to the receiving communication node and disconnecting the child node of the receiving communication node that does not belong to the same subnet as the receiving communication node, and, if not, transmitting a request to join the tree structure identifying the new communication node to the child node of the receiving communication node closest to the new communication node.
2. The method of claim 1 , further comprising determining which of the child nodes of the receiving communication node is closest to the new communication node by identifying the child node of the current node that shares a portion of a network address with the new communication node.
3. The method of claim 2 , wherein the network address comprises an Internet Protocol (IP) address.
4. The method of claim 1 , further comprising determining which of the child nodes of the receiving communication node node is closest to the new communication node by identifying the child node of the receiving communication node that shares a subnet address with the new communication node.
5. The method of claim 1 , further comprising maintaining at a communication node a network address for a parent node and any child nodes in the tree structure.
6. The method of claim 1 , further comprising maintaining at a communication node at least a portion of a network address for any descendant nodes in the tree structure.
7. The method of claim 1 , further comprising maintaining at a communication node a socket connection with a server node, a parent node, and any child nodes in the tree structure.
8. The method of claim 1 , further comprising determining the maximum number of child nodes for a communication node based on an amount of bandwidth available to the communication node.
9. The method of claim 8 , wherein connecting comprises rearranging at least a portion of the tree structure to accommodate the new communication node.
10. The system of claim 1 , wherein at least a portion of the communication nodes of the tree structure are to repeat data received from a parent node to one or more child nodes in the tree structure, each communication node being configured to play the data back to its audience and transmit the data to the child nodes.
11. A method for simulating multicast connections in a multi-endpoint communication system, the method comprising: receiving at a receiving communication node a request to join a tree structure, the request identifying an unassigned communication node, the tree structure including a plurality of communication nodes in a tree structure using unicast connections, wherein at least a portion of the communication nodes are to repeat data received from a parent node to one or more child nodes in the tree structure, at least a portion of the communication nodes being configured to play the data back to its audience and transmit the data to the child nodes; evaluating at the receiving communication node whether the unassigned communication node belongs to a same subnet as the receiving communication node and one of the child nodes connected to the receiving communication node does not belong to the same subnet as the receiving communication node and, if so, adding an identifier of the unassigned communication node to a list stored by the receiving communication node of communication nodes connected thereto, and transmitting an instruction to the child node that does not belong to the same subnet as the receiving communication node to reconnect to the tree structure.
12. The method of claim 11 , further comprising, transmitting from the receiving communication node to the child node of the receiving communication node closest to the unassigned communication node a request to join the tree structure identifying the unassigned communication node if either the unassigned communication node does not belong to the same subnet as the receiving communication node or one of the child nodes connected to the receiving communication node does belong to the same subnet as the receiving communication node.
13. The method of claim 11 , wherein each communication node maintains a socket connection with a server node and a parent node in the tree structure.
14. A system comprising: a plurality of communication nodes linked in a tree structure using unicast connections having a communication node configured as a server at the top of the tree structure, a plurality of communication nodes each coupled to a parent node and one or more child nodes by means of first socket connections, the communication nodes also coupled directly to the server by means of second socket connections; wherein the communication nodes are configured to broadcast through the tree structure by means of the first socket connections, wherein at least a portion of the communication nodes are to repeat data received from a parent node to one or more child nodes in the tree structure over the first socket connections; and wherein the communication nodes are configured to disconnect and reconnect to the tree structure by sending messages to the server over the second socket connections, wherein the communication nodes are further configured to receive a request from an unassigned node to join the tree structure; and evaluate whether the unassigned node belongs to a same subnet as the current node and whether one of the child nodes connected to the communication node does not belong to the same subnet as the communication node, and, if so, connect the unassigned node to the communication node and disconnect the child node that does not belong to the same subnet as the current node, and, if not, transmitting a request to join the tree structure identifying the unassigned node to the child node of the communication node closest to the unassigned node.
15. The system of claim 14 , wherein the plurality of communication nodes are further configured to maintain a list of child nodes connected thereto and a list of descendents of the child nodes connected thereto; and wherein the communication node functioning as the server is farther configured to receive an indication that a disconnecting node of the communication nodes has at least one of disconnected from the tree structure or has requested to disconnect from the tree structure, to transmit down through the tree structure an instruction to remove reference to the disconnecting node from the list of child nodes and list of descendents maintained by each communication node, and to transmit an instruction from the communication node functioning as the server to descendent communication nodes of the disconnecting node to attempt to reconnect to the tree structure.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
June 18, 2003
September 29, 2009
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.