Claims
- 1. A process for transmitting data over a network, comprising the steps of:
receiving a connection request from a requesting client; evaluating a node distribution of a hierarchy structure having a content provider as a root thereof; connecting the requesting client to the content provider in response to the node distribution exceeding a range; directing the requesting client to a first tree having a first child of the content provider as a root node thereof in response to the node distribution within the range; transmitting data from the content provider to the requesting client in response to connecting the requesting client to the content provider; and relaying the data through the root node of the first tree to the requesting client in response to directing the requesting client to the first tree.
- 2. The process of claim 1, wherein:
the step of connecting the requesting client includes connecting the requesting client to the content provider further in response to the content provider having a capacity therefor the requesting client; and the step of directing the requesting client includes directing the requesting client to the first tree further in response to the first tree having a capacity for the requesting client.
- 3. The process of claim 1, wherein the step of directing the requesting client to a first tree includes the steps of:
evaluating a node distribution of the first tree; connecting the requesting client to the root node of the first tree in response to the node distribution exceeding a standard value; and recursively directing the requesting client to a descendent of the root node of the first tree in response to the node distribution not exceeding the standard value.
- 4. The process of claim 3, further comprising the step of directing the requesting client to a descendent of the root node of the first tree in response to the requesting client having an up-link quality not meeting a predetermined standard.
- 5. The process of claim 3, wherein the step of recursively directing the requesting client to a descendent of the root node of the first tree includes the steps of:
selecting a descendent of the node root of the first tree as a current node; evaluating a node distribution of a subtree having the current node as a root node thereof; connecting the requesting client to the current node in response to the node distribution exceeding the standard value; and recursively directing the requesting client to a descendent of the current node in response to the node distribution not exceeding the standard value.
- 6. The process of claim 5, further comprising the step of redirecting the requesting client to the content provider in response to neither the current node nor a descendent thereof having a capacity for the requesting client.
- 7. The process of claim 6, wherein the step of redirecting the requesting client further includes the steps of:
increasing a redirect count associated with the requesting client; connecting the requesting client to the content provider in response to the redirect count exceeding a first limit; and searching a spot for the requesting client in the hierarchy structure in response to the redirect count below the first limit.
- 8. The process of claim 7, wherein the step of searching a spot for the requesting client in the hierarchy structure further includes the steps of:
recursively visiting a node in the hierarchy structure searching the spot for the requesting client; and connecting the requesting client to the node in response to the redirect count exceeding a second limit and to the node having a capacity.
- 9. The process of claim 3, further comprising the step of directing the requesting client toward a node selected from a plurality of nodes in the hierarchy structure in accordance with a plurality of scores reflecting a plurality of qualities of the plurality of nodes.
- 10. The process of claim 9, further comprising, in response to the requesting client being external, the steps of:
assigning a first score to the node in response to the node behind a firewall; and assigning a second score higher than the first score to the node in response to the node being external.
- 11. The process of claim 9, further comprising, in response to the requesting client behind a firewall, the steps of:
assigning a first score to a node in the hierarchy structure in response to the node behind the firewall; assigning a second score lower than the first score to the node in response to the node being external; assigning a third score lower than the second score to the node in response to the node behind a second firewall different from the firewall and to the node being able to communicate with the requesting client through the firewall and the second firewall; and assigning a fourth score lower than the third score to the node in response to the node behind the second firewall and to the node being unable to communicate with the requesting client through the firewall and the second firewall.
- 12. The process of claim 9, further comprising the step of assigning a score to a node in the hierarchy structure in accordance with a time zone offset between the node and the requesting client.
- 13. The process of claim 9, further comprising the step of assigning a score to a node in the hierarchy structure in accordance with a match between an address of the node and an address of the requesting client.
- 14. The process of claim 9, further comprising the steps of:
assigning a first score to a node in the hierarchy structure based on a capacity of the node in response to the requesting client being external; assigning the first score to the node in response to the requesting client behind a firewall and the node behind the firewall; and assigning a second score equal to the first score multiplied by a factor less than one to the node in response to the requesting client behind a firewall and the node not behind the firewall
- 15. The process of claim 9, further comprising the steps of:
assigning a first score to a node in the hierarchy structure in response to the node having an Autonomous System Number equal to that of the requesting client; and assigning a second score lower than the first score to the node in response to the node having am Autonomous System Number different from that of the requesting client.
- 16. The process of claim 9, further comprising the step of assigning a score to a node in the hierarchy structure in accordance with a history of the node being visited.
- 17. The process of claim 1, further comprising the steps of:
monitoring a quality of data transmitted to a client; and relocating the client in response to the quality of data transmitted to the client below a standard.
- 18. The process of claim 17, wherein the step of relocating the client further includes the steps of:
identifying a parent of the client as a marked node; disconnecting the client from the parent; and searching a new spot for the client, the new spot not being a child of the marked node.
- 19. The process of claim 18, wherein the step of relocating the client further includes the steps of:
evaluating a capacity of a sibling of the client; connecting the client as a child of the sibling in response the sibling having the capacity for the client; and generating a reconnection request in response to the sibling not having the capacity for the client.
- 20. The process of claim 19, wherein the step of relocating the client further includes the steps of:
receiving the reconnection request from the client at a client connection manager; and recursively searching the new spot for the client.
- 21. A storage medium having a data streaming network management program stored thereon, said data streaming network management program, when executed by a digital signal processing unit, performing a network management process comprising the steps of:
receiving a connection request from a client; verifying whether there is a hierarchy structure with at least one tree having a root node thereof connected to a data stream source; in response to there be not a hierarchy structure, forming a tree with the client as a root node thereof and connecting the client to the data stream source; in response to there be a hierarchy structure, evaluating a node distribution of the hierarchy structure; and in response to the node distribution within a range, directing the client to a tree in the at least one tree in the hierarchy structure.
- 22. The storage medium of claim 21, said network management process further comprising the step of, in response the node distribution exceeding the range, connecting the client to the data stream source.
- 23. The storage medium of claim 21, said network management process further comprising the step of, in response the client having an up-link capability exceeding a standard, connecting the client to the data stream source.
- 24. The storage medium of claim 21, wherein the step of directing the client to a tree in the at least one tree in the hierarchy structure in said network management process further includes the step of recursively searching a spot for the client in the hierarchy structure.
- 25. The storage medium of claim 24, wherein the step of directing the client to a tree in the at least one tree in the hierarchy structure in said network management process further includes the step of, in response to the tree not having a capacity for the client, directing the client to the data stream source.
- 26. The storage medium of claim 24, wherein the step of recursively searching a spot for the client in the hierarchy structure in said network management process further includes the steps of:
selecting a node in the hierarchy structure as a current node; evaluating a structure parameter of the current node; in response to the structure parameter exceeding a value, connecting the client to the current node; and in response to the structure parameter below the value, selecting a child of the current node as a new current node.
- 27. The storage medium of claim 26, wherein the step of selecting a child of the current node as a new current node in said network management process further includes the steps of:
evaluating a structure parameter of the new current node; in response to the structure parameter exceeding the value, connecting the client to the new current node; and in response to the structure parameter below the value, directing the client to a subtree having a child of the new current node as a root node thereof.
- 28. The storage medium of claim 26, wherein the step of selecting a node in the hierarchy structure as a current node in said network management process further includes the step of selecting the node in accordance with a preference factor assigned to the node.
- 29. The storage medium of claim 28, said network management process further comprising the step of assigning the preference factor to the node calculated from a history of the node being visited by a requesting client seeking for connection to the node.
- 30. The storage medium of claim 28, said network management process further comprising the step of assigning the preference factor to the node calculated from a time zone offset between the node and the client.
- 31. The storage medium of claim 28, said network management process further comprising, in response to the client being external, the steps of:
in response to the node being external, assigning a first preference factor to the node; and in response to the node behind a firewall, assigning a second preference factor smaller than the first preference factor to the node.
- 32. The storage medium of claim 28, said network management process further comprising, in response to the client behind a firewall, the steps of:
in response to the node behind the firewall, assigning a first preference factor to the node; in response to the node being external, assigning a second preference factor smaller than the first preference factor to the node; in response to the node behind a second firewall different from the firewall and to the node being able to communicate with the requesting client through the firewall and the second firewall, assigning a third preference factor smaller than the second preference factor to the node; and in response to the node behind the second firewall and to the node being unable to communicate with the requesting client through the firewall and the second firewall, assigning a fourth preference factor smaller than the third preference factor to the node.
- 33. The storage medium of claim 28, said network management process further comprising the step of assigning the preference factor to the node calculated from a mismatch between an address of the node and an address of the requesting client.
- 34. The storage medium of claim 28, said network management process further comprising the steps of:
in response to the client being external, assigning a first preference factor to the node calculated from a capacity of the node; in response to the client behind a firewall and the node behind the firewall, assigning the first preference factor to the node; and in response to the client behind a firewall and the node not behind the firewall, assigning a second preference factor equal to the first preference factor multiplied by a factor less than one to the node.
- 35. The storage medium of claim 28, said network management process further comprising the step of assigning the preference factor to the node in response to the node calculated from a mismatch between an Autonomous System Number of the node and that of the client.
- 36. The storage medium of claim 21, said network management process further comprising, in response to a quality of data transmitted to the client below a standard, the step of relocating the client.
- 37. The storage medium of claim 36, wherein the step of relocating the client in said network management process further includes the steps of:
identifying a parent of the client as a marked node; and searching a new spot for the client, the new spot not being a child of the marked node.
- 38. The storage medium of claim 37, wherein the step of relocating the client in said network management process further includes the steps of:
in response a sibling of the client having a capacity for the client, connecting the client as a child of the sibling; and in response to the sibling not having the capacity for the client, directing the client to the data stream source.
- 39. The storage medium of claim 38, wherein the step of relocating the client in said network management process further includes the step of recursively searching the new spot for the client in the hierarchy structure.
- 40. The process of claim 36, said network management process further comprising the step monitoring a jitter of a data stream transmitted to the client.
- 41. A network data transmission system, comprising:
a content provider; a plurality of clients seeking data from said content provider; and a client connection manager, said client connection manager arranging said plurality of clients in a hierarchy tree structure having a first client of said plurality of clients coupled to said content provider as a node in a first tier of the hierarchy tree structure and at least a portion of remaining clients of said plurality of clients as a descendent of the first client.
- 42. The network data transmission system of claim 41, the first client receiving data from said content provider and relaying the data to the descendent thereof.
- 43. The network data transmission system of claim 42, said plurality of clients further including a second client, the second client being a child of the first client in the hierarchy tree structure and receiving the data from the first client.
- 44. The network data transmission system of claim 43, said plurality of clients further including a third client, the third client being a child of the second client in the hierarchy tree structure and receiving the data from the second client.
- 45. The network data transmission system of claim 43, said plurality of clients further including a third client, the third client being a child of the first client and a sibling of the second client in the hierarchy tree structure and receiving the data from the first client.
- 46. The network data transmission system of claim 41, said plurality of clients further including a second client coupled to said content provider as a node in a first tier of a second hierarchy tree structure, the second client receiving data from said content provider.
- 47. The network data transmission system of claim 46, said plurality of clients further including a third client, the third client being a child of the second client in the second hierarchy tree structure and receiving the data from the second client.
- 48. The network data transmission system of claim 47, said plurality of clients further including a fourth client, the fourth client being a child of the third client in the second hierarchy tree structure and receiving the data from the third client.
- 49. The network data transmission system of claim 47, said plurality of clients further including a fourth client, the fourth client being a child of the second client and a sibling of the third client in the second hierarchy tree structure and receiving the data from the second client.
- 50. The network data transmission system of claim 41:said client connection manager arranging said plurality of clients into the hierarchy tree structure in response to data transmission capacities of said content provider and said plurality of clients; and said client connection manager dynamically adjusting the hierarchy tree structure in response to a data transmission quality in the hierarchy tree structure.
- 51. A method for communicating between a first site behind a first firewall and a second site behind a second firewall, comprising:
informing the second site about a port on the first firewall; transmitting a first data packet addressed to the port on the first firewall from the second site through a port on the second firewall; relaying the first data packet to the first site in response to the first firewall being promiscuous; transmitting a second data packet addressed to the port on the second firewall from the first site through the port on the first firewall; and relaying the second data packet to the second site.
- 52. The method of claim 51, wherein informing the second site about a port on the first firewall further includes:
establishing a first link between the first site and an external site through the port on the first firewall; establishing a second link between the second site and the external site through the second firewall; and transmitting a message from the external source to the second site identifying the port on the first firewall.
- 53. The method of claim 52, wherein establishing a first link between the first site and an external site through the port on the first firewall and establishing a second link between the second site and the external site through the second firewall further include:
transmitting a first initializing data packet from the first site to the external site through the port on the first firewall; and transmitting a second initializing data packet from the second site to the external site through the second firewall.
- 54. The method of claim 51, further comprising identifying the first firewall as promiscuous.
- 55. The method of claim 54, wherein identifying the first firewall includes:
transmitting an outgoing data packet from the first site to the external site through the port on the first firewall; informing a second external site about the port on the first firewall, the second external site having a different network address from the first external site; transmitting an incoming data packet addressed to the port on the first firewall from the second external site; and identifying the first firewall as being promiscuous in response to the first site receiving the incoming data packet.
- 56. A method for communicating between a first site behind a first firewall and a second site behind a second firewall, comprising:
informing the first site about the second firewall; informing the second site about a port on the first firewall; transmitting a first data packet addressed to the second firewall through the port on the first firewall; transmitting a second data packet addressed to the port on the first firewall from the second site through a port on the second firewall; relaying the second data packet to the first site in response to the first firewall being non-strict; transmitting a third data packet addressed to the port on the second firewall from the first site through the port on the first firewall; and relaying the third data packet to the second site.
- 57. The method of claim 56, wherein informing the first site about the second firewall and informing the second site about a port on the first firewall further include:
establishing a first link between the first site and an external site through the port on the first firewall and a second link between the second site and the external site through the second firewall; transmitting a first message from the external source to the first site identifying the second firewall; and transmitting a second message from the external source to the second site identifying the port on the first firewall.
- 58. The method of claim 57, wherein establishing a first link between the first site and an external site through the port on the first firewall and a second link between the second site and the external site through the second firewall further includes:
transmitting a first initializing data packet from the first site to the external site through the port on the first firewall; and transmitting a second initializing data packet from the second site to the external site through the second firewall.
- 59. The method of claim 56, further comprising identifying the first firewall as non-strict.
- 60. The method of claim 59, wherein identifying the first firewall includes:
transmitting an outgoing data packet from the first site to a first port of the external site through the port on the first firewall; transmitting an incoming data packet addressed to the port on the first firewall from a second port on the external source, the second port being different from the first port; and identifying the first firewall as being non-strict in response to the first site receiving the incoming data packet.
REFERENCE TO PRIOR APPLICATION
[0001] Under 35 U.S.C. §119(e), this application for patent claims the benefit of the filing date of U.S. Provisional Application for Patent Serial No. 60/335,174, titled “Live Streamer Distributed Internet Broadcast System” and filed on Oct. 31, 2001.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60335174 |
Oct 2001 |
US |