WO2007120213A2 - Broadcast messaging in peer to peer overlay network - Google Patents

Broadcast messaging in peer to peer overlay network Download PDF

Info

Publication number
WO2007120213A2
WO2007120213A2 PCT/US2006/044661 US2006044661W WO2007120213A2 WO 2007120213 A2 WO2007120213 A2 WO 2007120213A2 US 2006044661 W US2006044661 W US 2006044661W WO 2007120213 A2 WO2007120213 A2 WO 2007120213A2
Authority
WO
WIPO (PCT)
Prior art keywords
node
finger
broadcast message
entry
response
Prior art date
Application number
PCT/US2006/044661
Other languages
French (fr)
Other versions
WO2007120213A3 (en
Inventor
Yutaka Takeda
Howard Berkey
Payton R. White
Attila Vass
Original Assignee
Sony Computer Entertainment Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Computer Entertainment Inc. filed Critical Sony Computer Entertainment Inc.
Priority to DE602006013694T priority Critical patent/DE602006013694D1/en
Priority to JP2008542365A priority patent/JP4671306B2/en
Priority to EP06850556A priority patent/EP1955477B1/en
Priority to AT06850556T priority patent/ATE464716T1/en
Publication of WO2007120213A2 publication Critical patent/WO2007120213A2/en
Publication of WO2007120213A3 publication Critical patent/WO2007120213A3/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1854Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with non-centralised forwarding system, e.g. chaincast

Definitions

  • the invention relates to the field of data networks, and in particular to peer to peer overlay networks.
  • Peer to peer networks are distributed data networks without any centralized hierarchy or organization.
  • Peer to peer data networks provide a robust and flexible means of communicating information between large numbers of computers or other information devices, referred to in general as nodes.
  • An overlay network is a logical or virtual network organization that is imposed on nodes connected by one or more types of underlying physical network connections.
  • nodes are connected by virtual or logical links, each of which can correspond with one or more paths in an underlying physical network.
  • Overlay network are typically implemented in hardware and/or software operating in the application layer or other top-level layer of an OSI network stack or other type of networking protocol.
  • Distributed hash table overlay networks use a hash function to generate and assign one or more key values to a unique node.
  • the set of all possible key values is referred to as a hash space.
  • Nodes are organized in the hash space according to their assigned key values.
  • the hash function is selected so that nodes are approximately evenly distributed throughout the hash space.
  • Distributed hash table overlay networks are typically highly scalable, often supporting millions of nodes; robust, allowing nodes to join or leave frequently; and efficient, routing a message to a single destination node quickly.
  • chord overlay network There are numerous different types of distributed hash table overlay networks.
  • One type of peer to peer overlay network is a chord network.
  • the chord overlay network protocol is described in detail in "Chord: A Scalable Peer-to-peer Lookup Protocol for Internet Applications", Ion Stoica, Robert Morris, David Liben-Nowell, David R. Karger, M. Frans Kaashoek, Frank Dabek, Hari Balakrishnan, IEEE/ACM Transactions on Networking, Vol. 11, No. 1, pp. 17-32, February 2003.
  • a node desiring to broadcast a message to all of the other nodes must send a message to each node separately.
  • a node initiating a broadcast message referred to as an initiating node, must blindly send messages to all possible key values.
  • this entails sending a separate message to each possible key value.
  • SHA-I 160-bit hash function
  • a flooding approach is used to distribute a broadcast message.
  • An initiating node sends a message to all of the nodes directly connected with the initiating node in the overlay network.
  • each receiving node Upon receiving the message, each receiving node in turn forwards the message to any additional nodes directly connected with each receiving node in the overlay network.
  • This implementation is inefficient, as some nodes receive redundant messages. Moreover, this implementation consumes a large amount of network bandwidth and takes a large amount of time to operated.
  • a modified flooding scheme assigns a time-to-live (TTL) value to each broadcast message. Each time a copy of a broadcast message is forwarded to additional node, its TTL value is decremented. When the TTL value reaches 1, the broadcast message is no longer forwarded.
  • TTL time-to-live
  • each node in a peer to peer overlay network receives a broadcast message. It is further desirable that the system and method guarantees that each node in a peer to peer overlay network receives only one copy of a broadcast message, thereby ensuring that network bandwidth is efficiently utilized. It is further desirable that the system and method require minimal time and bandwidth resources from a node initiating a broadcast message. It is also desirable that the system and method enable broadcast messages to be selectively directed to portions of the overlay network with no additional network bandwidth overhead. It is desirable for the system and method to deliver broadcast messages to all or a selected portion of the peer to peer overlay network within a minimal time period. It is desirable for the system and method to enable efficient aggregation of query results from nodes in a peer to peer overlay network.
  • An embodiment of the invention efficiently directs broadcast messages to nodes of an overlay network without wasting network bandwidth on duplicate messages or unintentionally omitting any nodes.
  • Broadcast messages include an End ID parameter.
  • the End ED parameter specifies the range of key values for nodes that should receive copies of the broadcast message.
  • Each node maintains a list of finger nodes and their respective key values.
  • a node Upon receiving a broadcast message, a node assigns each finger node a new End ID value based upon the End ID value of the received broadcast message or the key value of an adjacent finger node. The node compares each finger node's new End ID value with the finger node's key value to determine whether to forward the broadcast message to that finger node.
  • a broadcast message forwarded to a finger node includes an End ID parameter equal to the new End ID value determined for the finger node. Nodes can respond to broadcast messages and aggregate response message from its finger nodes.
  • a method of processing a broadcast message in an overlay network includes receiving a broadcast message including an End ID from a sending node.
  • the End ID specifies a range of key values for fmger nodes that should receive copies of the broadcast message.
  • the method selects an entry of a finger table. Each entry of the finger table includes a reference to a finger node and a key value associated with the finger node.
  • An embodiment of the method determines if there is a following entry of the finger table.
  • the following entry includes a key value adjacent to the key value of the selected finger table entry according to a node order.
  • the method sets a new End ID value to the key value associated with the following entry in response to the determination that there is a following entry of the finger table.
  • the method sets a new End ID value to the End ID of the received broadcast message in response to the determination that there is not a following entry of the finger table.
  • the method comparing the key value of the selected finger table entry with the new End ID value and forwards a copy of the broadcast message with the new
  • End ID value to the finger node of the selected entry in response to a determination that the key value of the selected finger table entry is within the range of key values specified by the new End ID value.
  • the finger table includes two or more entries arranged according to their respective key values.
  • the node order is ascending according to key values. In another embodiment, the node order is descending according to key values.
  • the method stores a reference to a sending node communicating the broadcast message.
  • the method receives a response message from at least one finger node in response to the forwarded copy of broadcast message and aggregating the received response messages into a combined response message.
  • the combined response message is forwarded to the sending node.
  • the method can receive a response to the broadcast message and include the response in the combined response message.
  • the combined response message includes response messages from one or more nodes in a compact representation created using a frequency domain transformation.
  • Figures IA-I C illustrate an example chord overlay network suitable for use with an embodiment of the invention
  • Figure 2 illustrates a method of routing a broadcast message in an overlay network according to an embodiment of the invention
  • Figures 3A-C illustrate an example routing of a broadcast message in an overlay network according to an embodiment of the invention
  • Figure 4 illustrates a method of routing a broadcast message to a portion of an overlay network according to an embodiment of the invention
  • Figure 5 illustrates a system for aggregating query results from the nodes of an overlay network according to an embodiment of the invention
  • Figure 6 illustrates a set of information processing devices suitable for implementing an overlay network according to an embodiment of the invention
  • Figure 7 illustrates a set of information processing devices suitable for implementing an overlay network according to an embodiment of the invention.
  • Figure 8 illustrates the components of an information processing device suitable for implementing a node of an overlay network according to an embodiment of the invention.
  • Figures IA and IB illustrate an example chord overlay network suitable for use with an embodiment of the invention.
  • Figure IA illustrates an example chord overlay network 100 including numerous nodes, such as nodes 102, 104, 106, 108, 110, 112, 114, 116, 118, and 120. Each node is assigned one or more key values. For example, nodes 102, 104, 106, 108, 110, 112, 114, 116, 118, and 120 are assigned key values 0, 45, 60, 115, 120, 128, 144, 187, 210, and 240, respectively.
  • the nodes of the overlay network are arranged by their assigned key values in the hash space 125, or set of all possible key values, hi Figure IA, the hash space 125 is shown as a ring configuration of all possible key values from 0 to 2 N , with N being the number of bits allocated for a key value, hi some implementations, N equals 160 bits, which is the size of the output of typical hash functions such as SHA-I and is sufficiently large to avoid hash collisions, hi this implementation, the chord overlay network 100 supports up to 2 160 nodes and a typical chord overlay network can include millions of active nodes. Other implementations can use more or less hash bits.
  • each node is assigned a key value randomly, hi some implementations, each node is assigned a key value based upon the results of a hash function of one or more attributes of the node.
  • the hash function is selected so that nodes are approximately evenly distributed throughout the hash space 125.
  • the assignment of key values to nodes is based at least in part on the topology of the underlying physical network, hi these implementations, nodes are distributed approximately evenly throughout the hash space 125; however, the overlay network 100 attempts to ensure that nodes located in close proximity in the physical network are also located in close proximity in the hash space 125 of the overlay network as well.
  • each node includes a reference to one or more adjacent nodes.
  • each node includes a reference to the preceding and succeeding adjacent nodes.
  • node 106 with a key value of 60, can include references to nodes 104 and 108, having key values of 45 and 115, respectively. If a new node is added with a key value between that of nodes 106 and 108, such as a key value of 100, the appropriate reference of node 106 will be adjusted accordingly.
  • each node includes a finger table including references to one or more nearby nodes.
  • Each finger table entry references the node nearest to a key value specified by an offset from the key value of the present node.
  • each finger table entry's offset corresponds with a binary place value. For example, a first finger table entry has an offset value of one (2°), a second finger table entry has an offset value of two (2 1 ), a third finger table entry has an offset value of four (2 2 ), a fourth finger table entry has an offset value of eight (2 3 ), and so forth.
  • different offset values can be associated with each finger table entry.
  • Figure IB illustrates an example of the node relationships specified by finger table entries in an overlay network 130 according to this implementation.
  • Node 132 having a key value of four, includes a first finger table entry specifying a reference 134 to node 136, which has a key value of five, corresponding with an offset value of one.
  • a second finger table entry of node 132 specifies a reference 138 to node 140, which has a key value of six, corresponding with an offset value of two from the node 132.
  • a third finger table entry of node 132 specifies a reference 142 to node 144, which has a key value of eight, corresponding with an offset value of four from node 132.
  • a fourth finger table entry of node 132 specifies a reference 146 to node 148, which has a key value of twelve, corresponding with an offset value of eight from node 132.
  • Each of the other nodes of overlay network 130 has a similar finger table specifying references to other nodes.
  • Finger tables can have any arbitrary number of entries. Larger finger tables can decrease routing time for messages, at the expense of more complicated maintenance overhead for adding or removing nodes. For example, if a key value is comprised of N bits, each node may have a finger table with N entries. In other implementations, other finger table sizes may be optimal depending upon the application. [0024] In this implementation of an overlay network, each node only knows the location of the nodes specified by references in its finger table. However, nodes are capable of sending messages to any other node in the overlay network via one or more intermediate nodes.
  • Figure 1C illustrates an example routing of a message in an overlay network 150 according to this implementation.
  • node 152 having a key value of 0, directs a message to node 164, having a key value of 6.
  • the finger table of node 152 has references to nodes 154, 156, 158, and 160, having key values of 1, 2, 4, and 8, respectively.
  • node 152 forwards the message to the node in its finger table having the largest key value less than or equal to the key value of the destination node, hi this example, node 152 forwards the message to node 158, having a key value of 4.
  • node 158 has the largest key value, 4, that is less than or equal to the destination node key value of 6.
  • node 158 Upon receiving a message directed to node 158, with a key value of 6, node 158 uses its own finger table to identify a node having the largest key value less than or equal to the destination node key value, hi this example, node 158, with a key value of 4, has a finger table with references to nodes 162, 164, 160, and 170, having key values of 5, 6, 8, and 12, respectively. Based on its finger table, node 158 forwards the message to node 164, having a key value of 6, which is the desired destination key value.
  • the overlay networks described above can route messages to single nodes efficiently, there is no mechanism for efficiently forwarding broadcast messages to all or a substantial portion of the overlay network.
  • Each node has direct knowledge of only the nodes in its finger table.
  • a node initiating a broadcast message referred to as an initiating node, must send separate messages to each possible key value.
  • For a hash space of 2 160 there is an astronomical number of key values, which makes this approach impractical.
  • each node forwards a received broadcast message to all of the other nodes that it is connected with.
  • node 152 would forward a broadcast message to nodes 154, 156, 158, and 160.
  • Each node in turn would forward the received broadcast message to the nodes in its finger table.
  • node 158 would forward the broadcast message to nodes 162, 164, 160, and 170.
  • node 160 receives the broadcast message at least twice, from node 152 and then from node 158.
  • Figure 2 illustrates a method 200 of routing a broadcast message in an overlay network according to an embodiment of the invention.
  • Method 200 efficiently directs broadcast messages to all of the nodes in the overlay network without wasting network bandwidth on duplicate messages or omitting any nodes.
  • each broadcast message includes an End ID parameter.
  • the End ID parameter represents the range of key values of nodes that the broadcast message may be forwarded to. For example, if a node receives a broadcast message with an End ED value of 17, then the node may forward a copy of the broadcast message to any node in its finger table with a key value less than 17. Furthermore, each forwarded copy of the broadcast message is assigned an End ID value according to method 200 to prevent duplicate messages from being sent to nodes.
  • a received broadcast message is processed by a node as follows, hi step 205, the node sets an index value i to the first entry of the node's finger table. Ln decision block 210, the node determines whether the finger table entry specified by the index value i, referred to as the selected finger table entry, is the last entry of the node's finger table. If so, then method 200 proceeds from decision block 210 to step 220. Step 220 assigns the parameter newEndID to be equal to the End ID of the received broadcast message.
  • Step 215 assigns the parameter newEndLD to be equal to the key value of the next finger table entry (i.e. the finger table entry specified by index i+1) or the End ID of the received broadcast message, whichever is closer to the current node in the hash space.
  • the distance between the current node and a key value, such as the next finger table entry or the current End LD, can determined in an embodiment by subtracting the current node's key value from the other key value.
  • step 215 it is assumed that the entries of the finger table are arranged in order of the key values of their respective nodes and that broadcast messages are to be communicated to nodes in order of increasing key values.
  • the finger table can be arranged in a different order.
  • step 215 assigns the parameter newEndID to be equal to the finger table entry key value greater than and closest to the key value of the selected finger table entry.
  • This embodiment communicates broadcast messages to nodes in order of increasing key values.
  • step 215 assigns the parameter newEndID to be equal to the finger table entry key value less than and closest to the key value of the selected finger table entry.
  • step 215 or step 220 method 200 proceeds to decision block 225.
  • decision block 225 the node determines if the key value of the selected finger table entry is less than the value of the newEndID parameter. If so, method 200 proceeds to step 230. Otherwise, method 200 proceeds directly to decision block 235.
  • Step 230 forwards a copy of the broadcast message to the node associated with the selected finger table entry.
  • the forwarded copy of the broadcast message includes an End ID value set to the value of the newEndID parameter.
  • method 200 proceeds to decision block 235.
  • Decision block 235 determines if the selected finger table entry is the last entry of the node's finger table. If so, then method 200 ends and the node is finished forwarding the broadcast message.
  • step 240 increments the index i, thereby selecting the next finger table entry of the node's finger table.
  • Step 240 proceeds back to decision block 210. Steps 210, 215, 220, 225, 230, 235, and 240 may be repeated as many times as necessary to evaluate all of the entries of the node's finger table.
  • Figures 3A-C illustrate an example routing of a broadcast message in an overlay network according to an embodiment of the invention.
  • an initiating node 305 desires to send a broadcast message to all of the nodes of the overlay network 300.
  • Figure 3 A illustrates a first phase 300 of the delivery of the broadcast message to the nodes of the overlay network 300.
  • initiating node sends a broadcast message 307 with an End ED value of 9 to node 309, a broadcast message 311 with an End ED of 12 to node 313, a broadcast message 315 with an End ID of 15 to node 317, and a broadcast message 319 with an End ED of 7 to node 321.
  • Figure 3B illustrates a second phase 330 of the delivery of the broadcast message to the nodes of the overlay network.
  • shaded nodes have already received the broadcast message.
  • nodes that received a broadcast message from the initiating node 305 in phase 300 will forward copies of the broadcast message in accordance with method 200.
  • node 317 forwards a broadcast message
  • node 336 with an End ID of 14 to node 338 and a broadcast message 340 with an End ID of 15 to node 342.
  • node 321 forwards a broadcast message 344 with an End ID of 1 to node 346, a broadcast message 348 with an End ED of 4 to node 350, and a broadcast message 352 with an End ID of 7 to node 354.
  • Node 309 does not forward its received broadcast message to any nodes.
  • node 309 received a broadcast message with an End ID of 9.
  • node 309 has no nodes to forward its received broadcast message to.
  • key values 3, 5, 10, and 11, assigned to locations 314, 331, 332, and 333, respectively, are not assigned to any nodes.
  • the first entry of the finger table of node 313 references node 317, which as a key value of 12.
  • node 313 received a broadcast message in phase 300 with an End ID value of 12.
  • node 313 does not have any nodes in its finger table closer than the End ID value of 12, node 313 does not have any nodes to forward its received broadcast message to.
  • FIG. 3C illustrates a third phase 360 of the delivery of the broadcast message to the nodes of the overlay network.
  • shaded nodes have already received the broadcast message.
  • nodes that received a broadcast message from nodes in the second phase 330 will forward copies of the broadcast message in accordance with method 200.
  • node 350 forwards a broadcast message 362 with an End ID of 4 to node 364.
  • node 354 forwards a broadcast message 366 with an End ID of 7 to node 368.
  • nodes 338, 342, and 346 will not forward any broadcast messages in phase 360.
  • the broadcast messages received by nodes 364 and 366 in phase 360 will not be forwarded to any other nodes in the overlay network due to their respective End ED values.
  • every node in the overlay network receives a copy of the broadcast message. Additionally, no node in the overlay network receives a duplicate of the broadcast message. Furthermore, the initiating node only requires enough network bandwidth to send a copy of the broadcast message to each node in its finger table, regardless of the total number of nodes in the overlay network. For the example of Figures 3A-3C, this is only four broadcast messages. In an overlay network having nodes with 160 entry finger tables, corresponding to a hash space of 2 160 , the initiating node only needs to send 160 copies of the broadcast message to reach potentially millions of nodes.
  • the method 200 is capable of directing a broadcast message to all of the nodes of an overlay network in O(log 2 N) time, where N is the number of the nodes in the overlay network.
  • N is the number of the nodes in the overlay network.
  • loglO 3.32 time, or approximately three phases of forwarding and receiving broadcast messages.
  • method 200 can direct a broadcast message to all of the nodes in approximately 20 time, or 20 phases of forwarding and receiving broadcast messages.
  • broadcast messages can be directed to only a portion of the nodes in an overlay network.
  • each broadcast message includes a Start ID parameter in addition to an End ID parameter.
  • the Start ID parameter represents the beginning of a range of key values of nodes that are intended to receive and process the broadcast message.
  • additional nodes outside of this range of key values may receive and forward broadcast messages to ensure that all of the nodes within this range of key values receive the broadcast message, hi this embodiment, the Start ID and End ID together specify that the nodes of a contiguous portion of the hash space should receive a broadcast message.
  • An initiating node can direct a broadcast message to discontiguous sets of nodes in the overlay network by sending multiple broadcast messages, each with Start ED and End ID values specifying different contiguous portions of the hash space.
  • Figure 4 illustrates a method 400 of routing a broadcast message to a portion of an overlay network according to an embodiment of the invention.
  • Method 400 begins with the receipt of a broadcast message including a Start ID parameter and an End ID parameter.
  • the node sets an index value i to the first entry of the node's finger table.
  • the node determines whether the finger table entry specified by the index value i, referred to as the selected finger table entry, is the last entry of the node's finger table. If so, then method 400 proceeds from decision block 410 to step 420.
  • Step 420 assigns the parameter newEndED to be equal to the End ID of the received broadcast message.
  • Step 415 assigns the parameter newEndID to be equal to the key value of the next finger table entry (i.e. the finger table entry specified by index i+1) or the End ID of the received broadcast message, whichever is closer to the current node in the hash space.
  • End ID can determined in an embodiment by subtracting the current node's key value from the other key value.
  • step 415 it is assumed that the entries of the finger table are arranged in order of the key values of their respective nodes and that broadcast messages are to be communicated to nodes in order of increasing key values.
  • the finger table can be arranged in a different order and broadcast messages can be communicated in increasing or decreasing order of key values.
  • step 415 or step 420 method 400 proceeds to decision block 425.
  • decision block 425 the node determines if the key value of the selected finger table entry is less than the value of the newEndID parameter and if the Start ID parameter of the received broadcast message is closer than the newEndID parameter. If both of these conditions are true, then method 400 proceeds to step 430.
  • Step 430 sets a newStartED parameter to be equal to the key value of the selected finger table entry or the StartID parameter of the received broadcast message, whichever is further from the current node in the hash space.
  • step 435 forwards a broadcast message to the node corresponding with the selected finger table entry.
  • the forwarded broadcast message includes a start ID equal to the newStartID parameter and an end ID parameter equal to the newEndID parameter.
  • method 400 proceeds to decision block 440.
  • Decision block 440 determines if the selected finger table entry is the last entry of the node's finger table. If so, then method 400 ends and the node is finished forwarding the broadcast message. [0053] If decision block 440 determines that the selected finger table entry is not the last entry of the node's finger table, method 400 proceeds to step 445. Step 445 increments the index i, thereby selecting the next finger table entry of the node's finger table. Following step 445, method 400 proceeds back to decision block 410. Steps 410, 415, 420, 425, 430, 435, 440, and 445 may be repeated as many times as necessary to evaluate all of the entries of the node's finger table.
  • Broadcast messages can carry any type of information to all or a portion of the nodes of the overlay network. Additionally, one or more nodes can respond to broadcast messages by directly contacting the node initiating the broadcast message. If large numbers of nodes can potentially respond to a broadcast message, the initiating node and its network connection may be overwhelmed.
  • a further embodiment of the invention alleviates this problem by aggregating response messages along the same routes used to distribute a broadcast message.
  • the receiving node when each node receives a broadcast message that potentially requires a response from itself or another node, the receiving node remembers the location of the node sending the broadcast message, referred to as the sending node, which may be the node initiating the broadcast message or an intermediate node forwarding the broadcast message. If the receiving node determines that a response to the broadcast message is necessary, the receiving node forwards its response back to its respective sending node.
  • the sending node may be the node initiating the broadcast message or an intermediate node forwarding the broadcast message. If the receiving node determines that a response to the broadcast message is necessary, the receiving node forwards its response back to its respective sending node.
  • each node remembers the sending node associated with each broadcast message it receives.
  • FIG. 5 illustrates a system for aggregating query results from the nodes of an overlay network according to an embodiment of the invention.
  • An example overlay network 500 includes a set of nodes. The set of nodes are connected with an example initiating node 535 via a set of paths similar to that described in Figures 3A-3C.
  • a node responding to a broadcast message from the initiating node forwards its response to its respective sending node. For example, node 510 received a broadcast message initiated by node 535 via sending node 515. Thus, node 510 will provide its response message, if any, back to node 515. Similarly, node 515 received the broadcast message initiated by node 535 via node 525.
  • Node 525 received the broadcast message directly from the initiating node 535. Thus, a response message from node 510 will travel via nodes 515 and 525 back to initiating node 535.
  • the node aggregates the response messages into a new response message, which is then forwarded back to its sending node.
  • nodes can choose not to respond to a broadcast message. For example, if the broadcast message is a search query, a node can choose to response only if the node satisfies the search query.
  • a node can aggregate response messages using any algorithm for compressing or aggregating data known in the art. For example, if nodes 505 and 510 both respond to a broadcast message, then node 525 will receive both responses. Node 525 can aggregate these responses, along with the response of node 530 and/or its own response, if any, into a combined response message. Node 525 then forwards the combined response message back to node 535.
  • a node aggregates these responses by determining a compact representation of the set of responses.
  • a frequency domain transformation such as a discrete cosine transformation, fast Fourier transform, or wavelet transformation
  • a node can receive one or more frequency domain representations of sets of message responses; inverse transform these representations; combine these representations along with the nodes own response, if any; create a new frequency domain representation of the combined sets of message responses; and forwards the combined frequency domain representation back to its sending node.
  • FIG. 6 illustrates a set of information processing devices suitable for implementing an overlay network 600 according to an embodiment of the invention.
  • the nodes of overlay network 600 include laptop or portable computers 605; server computers 610; desktop computers and workstations 615; mobile computing devices 620 such as mobile phones, personal digital assistants, portable digital media players, and portable or handheld game consoles; and home entertainment devices 625 such as video game consoles, digital media players, set-top boxes, media center computers and storage devices.
  • Overlay network 600 can include any number of each type of device independent of the number of devices of other types.
  • Each device implement the functionality of one or more nodes of the overlay network 600.
  • the functionality of one or more nodes can be implemented as hardware, software, firmware, or any combination thereof.
  • Node functionality in software can be a part of an application, a library, an application programming interface, and/or an operating system.
  • each node of the overlay network 600 can be connected with other nodes via any type of wired or wireless network connection, incorporating any type of electrical, optical, radio, or other communications means.
  • the overlay network 600 can encompass both local-area networks and wide-area networks, such as the Internet.
  • some devices of overlay network 600 may have restricted capabilities. For example, only a limited subset of nodes of overlay network 600 may be allowed to initiate broadcast messages. The remaining nodes are only permitted to forward and/or process broadcast message, hi still a further embodiment, all or a subset of the nodes of overlay network 600 are capable of authenticating broadcast messages. This embodiment prevents the spread of unauthorized broadcast messages.
  • a node Upon receiving a broadcast message, a node first determines whether the broadcast message is authentic, for example by checking a cryptographic signature. If a broadcast message is authentic, it is processed and potentially forwarded to other nodes as described above. Otherwise, the broadcast message is ignored.
  • FIG. 7 illustrates a set of information processing devices suitable for implementing an overlay network 700 according to an embodiment of the invention.
  • Overlay network 700 enables processors connected over a data bus to send and receive broadcast messages in an efficient manner.
  • the data bus can use any electrical, optical, or other type of data communication means capable of carrying data within and/or between integrated circuits.
  • Overlay network 700 includes processors 705, 710, 715, and 720. hi further embodiments, overlay network 700 can include thousands or millions of processors. Each processor can be a microprocessor, microcontroller, system on a chip processor, digital signal processor, ASIC, programmable logic device and/or any other type of information processing device. Each processor can further include one or more processing units capable of independently executing sequences of information processing instructions or processing information according to a fixed algorithm. Each processor can include local data storage as well as access to common or shared data storage.
  • Figure 8 illustrates the components of an information processing device suitable for implementing a node of an overlay network according to an embodiment of the invention.
  • FIG 8 is a block diagram of a computer system 1000, such as a personal computer, video game console, personal digital assistant, or other digital device, suitable for practicing an embodiment of the invention.
  • Computer system 1000 includes a central processing unit (CPU) 1005 for running software applications and optionally an operating system.
  • CPU 1005 may be comprised of one or more processing cores.
  • Memory 1010 stores applications and data for use by the CPU 1005.
  • Storage 1015 provides non- volatile storage for applications and data and may include fixed disk drives, removable disk drives, flash memory devices, and CD-ROM, DVD-ROM, Blu-ray, HD-DVD, UMD, or other optical storage devices.
  • User input devices 1020 communicate user inputs from one or more users to the computer system 1000, examples of which may include keyboards, mice, joysticks, touch pads, touch screens, still or video cameras, and/or microphones.
  • Network interface 1025 allows computer system 1000 to communicate with other computer systems via an electronic communications network, and may include wired or wireless communication over local area networks and wide area networks such as the Internet.
  • An audio processor 1055 is adapted to generate analog or digital audio output from instructions and/or data provided by the CPU 1005, memory 1010, and/or storage 1015.
  • the components of computer system 1000, including CPU 1005, memory 1010, data storage 1015, user input devices 1020, network interface 1025, and audio processor 1055 are connected via one or more data buses 1060.
  • a graphics subsystem 1030 is further connected with data bus 1060 and the components of the computer system 1000.
  • the graphics subsystem 1030 includes a graphics processing unit (GPU) 1035 and graphics memory 1040.
  • Graphics memory 1040 includes a display memory (e.g., a frame buffer) used for storing pixel data for each pixel of an output image.
  • Graphics memory 1040 can be integrated in the same device as GPU 1035, connected as a separate device with GPU 1035, and/or implemented within memory 1010. Pixel data can be provided to graphics memory 1040 directly from the CPU 1005.
  • CPU 1005 provides the GPU 1035 with data and/or instructions defining the desired output images, from which the GPU 1035 generates the pixel data of one or more output images.
  • the data and/or instructions defining the desired output images can be stored in memory 1010 and/or graphics memory 1040.
  • the GPU 1035 includes 3D rendering capabilities for generating pixel data for output images from instructions and data defining the geometry, lighting, shading, texturing, motion, and/or camera parameters for a scene.
  • the GPU 1035 can further include one or more programmable execution units capable of executing shader programs.
  • the graphics subsystem 1030 periodically outputs pixel data for an image from graphics memory 1040 to be displayed on display device 1050.
  • Display device 1050 is any device capable of displaying visual information in response to a signal from the computer system 1000, including CRT, LCD, plasma, and OLED displays.
  • Computer system 1000 can provide the display device 1050 with an analog or digital signal.

Abstract

Broadcast messages are efficiently directed to nodes of an overlay network. Broadcast messages include an End ID parameter specifying the range of key values for nodes that should receive the broadcast message. Each node of an overlay network maintains a list of finger nodes and their respective key values. Upon receiving a broadcast message, a node assigns a finger node a new End ID value based upon the End ID value of the broadcast message or the key value of an adjacent finger node. The node compares a finger node's new End ID value with the finger node's key value to determine whether to forward the broadcast message to that finger node. A broadcast message forwarded to a finger node includes an End ID parameter equal to the new End ID value determined for the finger node. Nodes can aggregate response messages from its finger nodes.

Description

BROADCAST MESSAGING IN PEER TO PEER OVERLAY NETWORK
BACKGROUND OF THE INVENTION
[0001] The invention relates to the field of data networks, and in particular to peer to peer overlay networks. Peer to peer networks are distributed data networks without any centralized hierarchy or organization. Peer to peer data networks provide a robust and flexible means of communicating information between large numbers of computers or other information devices, referred to in general as nodes.
[0002] An overlay network is a logical or virtual network organization that is imposed on nodes connected by one or more types of underlying physical network connections. In an overlay network, nodes are connected by virtual or logical links, each of which can correspond with one or more paths in an underlying physical network. Overlay network are typically implemented in hardware and/or software operating in the application layer or other top-level layer of an OSI network stack or other type of networking protocol.
[0003] One class of peer to peer overlay networks are referred to as distributed hash table networks. Distributed hash table overlay networks use a hash function to generate and assign one or more key values to a unique node. The set of all possible key values is referred to as a hash space. Nodes are organized in the hash space according to their assigned key values. The hash function is selected so that nodes are approximately evenly distributed throughout the hash space. Distributed hash table overlay networks are typically highly scalable, often supporting millions of nodes; robust, allowing nodes to join or leave frequently; and efficient, routing a message to a single destination node quickly.
[0004] There are numerous different types of distributed hash table overlay networks. One type of peer to peer overlay network is a chord network. The chord overlay network protocol is described in detail in "Chord: A Scalable Peer-to-peer Lookup Protocol for Internet Applications", Ion Stoica, Robert Morris, David Liben-Nowell, David R. Karger, M. Frans Kaashoek, Frank Dabek, Hari Balakrishnan, IEEE/ACM Transactions on Networking, Vol. 11, No. 1, pp. 17-32, February 2003.
[0005] Although distributed hash table overlay network protocols, such as the chord protocol, provide efficient distribution of a message to a single destination node, they do not allow for a single message to be efficiently distributed to multiple destination nodes, referred to as broadcasting a message.
[0006] In one typical implementation, a node desiring to broadcast a message to all of the other nodes must send a message to each node separately. As each node only has direct knowledge of a limited number of nodes, a node initiating a broadcast message, referred to as an initiating node, must blindly send messages to all possible key values. For distributed hash table networks, this entails sending a separate message to each possible key value. For a distributed hash table network with a hash space of 2Λ160 (arising from the use of a 160-bit hash function such as SHA-I), this is unfeasible.
[0007] In another typical implementation, a flooding approach is used to distribute a broadcast message. An initiating node sends a message to all of the nodes directly connected with the initiating node in the overlay network. Upon receiving the message, each receiving node in turn forwards the message to any additional nodes directly connected with each receiving node in the overlay network. This implementation is inefficient, as some nodes receive redundant messages. Moreover, this implementation consumes a large amount of network bandwidth and takes a large amount of time to operated.
[0008] To reduce the bandwidth required by flooding broadcast messages, a modified flooding scheme assigns a time-to-live (TTL) value to each broadcast message. Each time a copy of a broadcast message is forwarded to additional node, its TTL value is decremented. When the TTL value reaches 1, the broadcast message is no longer forwarded. Although this modified flooding scheme reduces the amount of wasted network bandwidth and the number of duplicate messages, it cannot ensure that the broadcast message will be routed to all nodes.
[0009] It is therefore desirable for a system and method to guarantee each node in a peer to peer overlay network receives a broadcast message. It is further desirable that the system and method guarantees that each node in a peer to peer overlay network receives only one copy of a broadcast message, thereby ensuring that network bandwidth is efficiently utilized. It is further desirable that the system and method require minimal time and bandwidth resources from a node initiating a broadcast message. It is also desirable that the system and method enable broadcast messages to be selectively directed to portions of the overlay network with no additional network bandwidth overhead. It is desirable for the system and method to deliver broadcast messages to all or a selected portion of the peer to peer overlay network within a minimal time period. It is desirable for the system and method to enable efficient aggregation of query results from nodes in a peer to peer overlay network.
BRIEF SUMMARY OF THE INVENTION
[0010] An embodiment of the invention efficiently directs broadcast messages to nodes of an overlay network without wasting network bandwidth on duplicate messages or unintentionally omitting any nodes. Broadcast messages include an End ID parameter. The End ED parameter specifies the range of key values for nodes that should receive copies of the broadcast message. Each node maintains a list of finger nodes and their respective key values. Upon receiving a broadcast message, a node assigns each finger node a new End ID value based upon the End ID value of the received broadcast message or the key value of an adjacent finger node. The node compares each finger node's new End ID value with the finger node's key value to determine whether to forward the broadcast message to that finger node. A broadcast message forwarded to a finger node includes an End ID parameter equal to the new End ID value determined for the finger node. Nodes can respond to broadcast messages and aggregate response message from its finger nodes.
[0011] In an embodiment, a method of processing a broadcast message in an overlay network includes receiving a broadcast message including an End ID from a sending node.
The End ID specifies a range of key values for fmger nodes that should receive copies of the broadcast message. The method selects an entry of a finger table. Each entry of the finger table includes a reference to a finger node and a key value associated with the finger node.
[0012] An embodiment of the method determines if there is a following entry of the finger table. The following entry includes a key value adjacent to the key value of the selected finger table entry according to a node order. The method sets a new End ID value to the key value associated with the following entry in response to the determination that there is a following entry of the finger table. The method sets a new End ID value to the End ID of the received broadcast message in response to the determination that there is not a following entry of the finger table. The method comparing the key value of the selected finger table entry with the new End ID value and forwards a copy of the broadcast message with the new
End ID value to the finger node of the selected entry in response to a determination that the key value of the selected finger table entry is within the range of key values specified by the new End ID value.
[0013] In a further embodiment, the finger table includes two or more entries arranged according to their respective key values. In an embodiment, the node order is ascending according to key values. In another embodiment, the node order is descending according to key values.
[0014] In an additional embodiment, the method stores a reference to a sending node communicating the broadcast message. The method receives a response message from at least one finger node in response to the forwarded copy of broadcast message and aggregating the received response messages into a combined response message. The combined response message is forwarded to the sending node.
[0015] In still another embodiment, the method can receive a response to the broadcast message and include the response in the combined response message. In yet another embodiment, the combined response message includes response messages from one or more nodes in a compact representation created using a frequency domain transformation.
BRIEF DESCRIPTION OF THE DRAWINGS [0016] The invention will be described with reference to the drawings, in which:
Figures IA-I C illustrate an example chord overlay network suitable for use with an embodiment of the invention;
Figure 2 illustrates a method of routing a broadcast message in an overlay network according to an embodiment of the invention;
Figures 3A-C illustrate an example routing of a broadcast message in an overlay network according to an embodiment of the invention;
Figure 4 illustrates a method of routing a broadcast message to a portion of an overlay network according to an embodiment of the invention;
Figure 5 illustrates a system for aggregating query results from the nodes of an overlay network according to an embodiment of the invention;
Figure 6 illustrates a set of information processing devices suitable for implementing an overlay network according to an embodiment of the invention; Figure 7 illustrates a set of information processing devices suitable for implementing an overlay network according to an embodiment of the invention; and
Figure 8 illustrates the components of an information processing device suitable for implementing a node of an overlay network according to an embodiment of the invention.
In the drawings, the use of identical reference numbers indicates identical or similar elements.
DETAILED DESCRIPTION OF THE INVENTION
[0017] Figures IA and IB illustrate an example chord overlay network suitable for use with an embodiment of the invention. Figure IA illustrates an example chord overlay network 100 including numerous nodes, such as nodes 102, 104, 106, 108, 110, 112, 114, 116, 118, and 120. Each node is assigned one or more key values. For example, nodes 102, 104, 106, 108, 110, 112, 114, 116, 118, and 120 are assigned key values 0, 45, 60, 115, 120, 128, 144, 187, 210, and 240, respectively.
[0018] The nodes of the overlay network are arranged by their assigned key values in the hash space 125, or set of all possible key values, hi Figure IA, the hash space 125 is shown as a ring configuration of all possible key values from 0 to 2N, with N being the number of bits allocated for a key value, hi some implementations, N equals 160 bits, which is the size of the output of typical hash functions such as SHA-I and is sufficiently large to avoid hash collisions, hi this implementation, the chord overlay network 100 supports up to 2160 nodes and a typical chord overlay network can include millions of active nodes. Other implementations can use more or less hash bits.
[0019] hi some implementations, each node is assigned a key value randomly, hi some implementations, each node is assigned a key value based upon the results of a hash function of one or more attributes of the node. The hash function is selected so that nodes are approximately evenly distributed throughout the hash space 125. hi additional implementations, the assignment of key values to nodes is based at least in part on the topology of the underlying physical network, hi these implementations, nodes are distributed approximately evenly throughout the hash space 125; however, the overlay network 100 attempts to ensure that nodes located in close proximity in the physical network are also located in close proximity in the hash space 125 of the overlay network as well. [0020] Based upon the arrangement of nodes in the hash space 125, each node includes a reference to one or more adjacent nodes. In some implementations of a chord overlay network 100, each node includes a reference to the preceding and succeeding adjacent nodes. For example, node 106, with a key value of 60, can include references to nodes 104 and 108, having key values of 45 and 115, respectively. If a new node is added with a key value between that of nodes 106 and 108, such as a key value of 100, the appropriate reference of node 106 will be adjusted accordingly.
[0021] In a further implementation, each node includes a finger table including references to one or more nearby nodes. Each finger table entry references the node nearest to a key value specified by an offset from the key value of the present node. In some of these implementations, each finger table entry's offset corresponds with a binary place value. For example, a first finger table entry has an offset value of one (2°), a second finger table entry has an offset value of two (21), a third finger table entry has an offset value of four (22), a fourth finger table entry has an offset value of eight (23), and so forth. In other implementations, different offset values can be associated with each finger table entry.
[0022] Figure IB illustrates an example of the node relationships specified by finger table entries in an overlay network 130 according to this implementation. Node 132, having a key value of four, includes a first finger table entry specifying a reference 134 to node 136, which has a key value of five, corresponding with an offset value of one. A second finger table entry of node 132 specifies a reference 138 to node 140, which has a key value of six, corresponding with an offset value of two from the node 132. Similarly, a third finger table entry of node 132 specifies a reference 142 to node 144, which has a key value of eight, corresponding with an offset value of four from node 132. A fourth finger table entry of node 132 specifies a reference 146 to node 148, which has a key value of twelve, corresponding with an offset value of eight from node 132. Each of the other nodes of overlay network 130 has a similar finger table specifying references to other nodes.
[0023] Finger tables can have any arbitrary number of entries. Larger finger tables can decrease routing time for messages, at the expense of more complicated maintenance overhead for adding or removing nodes. For example, if a key value is comprised of N bits, each node may have a finger table with N entries. In other implementations, other finger table sizes may be optimal depending upon the application. [0024] In this implementation of an overlay network, each node only knows the location of the nodes specified by references in its finger table. However, nodes are capable of sending messages to any other node in the overlay network via one or more intermediate nodes. Figure 1C illustrates an example routing of a message in an overlay network 150 according to this implementation.
[0025] In the example of Figure 1C, node 152, having a key value of 0, directs a message to node 164, having a key value of 6. The finger table of node 152 has references to nodes 154, 156, 158, and 160, having key values of 1, 2, 4, and 8, respectively. To deliver a message to node 164 with a key value of 6, node 152 forwards the message to the node in its finger table having the largest key value less than or equal to the key value of the destination node, hi this example, node 152 forwards the message to node 158, having a key value of 4. In the finger table of node 152, node 158 has the largest key value, 4, that is less than or equal to the destination node key value of 6.
[0026] Upon receiving a message directed to node 158, with a key value of 6, node 158 uses its own finger table to identify a node having the largest key value less than or equal to the destination node key value, hi this example, node 158, with a key value of 4, has a finger table with references to nodes 162, 164, 160, and 170, having key values of 5, 6, 8, and 12, respectively. Based on its finger table, node 158 forwards the message to node 164, having a key value of 6, which is the desired destination key value.
[0027] Although the overlay networks described above can route messages to single nodes efficiently, there is no mechanism for efficiently forwarding broadcast messages to all or a substantial portion of the overlay network. Each node has direct knowledge of only the nodes in its finger table. Thus, to send a message to all of the nodes in the overlay network, a node initiating a broadcast message, referred to as an initiating node, must send separate messages to each possible key value. For a hash space of 2160, there is an astronomical number of key values, which makes this approach impractical.
[0028] As described above, a flooding approach to directing broadcast messages wastes network bandwidth and may not guarantee that the broadcast message will be routed to all nodes. In a flooding approach, each node forwards a received broadcast message to all of the other nodes that it is connected with. Thus, in the overlay network 150, node 152 would forward a broadcast message to nodes 154, 156, 158, and 160. Each node in turn would forward the received broadcast message to the nodes in its finger table. For example, node 158 would forward the broadcast message to nodes 162, 164, 160, and 170. As can be seen in Figure 1C, node 160 receives the broadcast message at least twice, from node 152 and then from node 158.
[0029] Figure 2 illustrates a method 200 of routing a broadcast message in an overlay network according to an embodiment of the invention. Method 200 efficiently directs broadcast messages to all of the nodes in the overlay network without wasting network bandwidth on duplicate messages or omitting any nodes.
[0030] Method 200 is initiated upon a node receiving a broadcast message, hi an embodiment, each broadcast message includes an End ID parameter. The End ID parameter represents the range of key values of nodes that the broadcast message may be forwarded to. For example, if a node receives a broadcast message with an End ED value of 17, then the node may forward a copy of the broadcast message to any node in its finger table with a key value less than 17. Furthermore, each forwarded copy of the broadcast message is assigned an End ID value according to method 200 to prevent duplicate messages from being sent to nodes.
[0031] A received broadcast message is processed by a node as follows, hi step 205, the node sets an index value i to the first entry of the node's finger table. Ln decision block 210, the node determines whether the finger table entry specified by the index value i, referred to as the selected finger table entry, is the last entry of the node's finger table. If so, then method 200 proceeds from decision block 210 to step 220. Step 220 assigns the parameter newEndID to be equal to the End ID of the received broadcast message.
[0032] Conversely, if the node determines that the selected finger table entry is not the last entry of the node's finger table, method 200 proceeds from decision block 210 to step 215. Step 215 assigns the parameter newEndLD to be equal to the key value of the next finger table entry (i.e. the finger table entry specified by index i+1) or the End ID of the received broadcast message, whichever is closer to the current node in the hash space. The distance between the current node and a key value, such as the next finger table entry or the current End LD, can determined in an embodiment by subtracting the current node's key value from the other key value.
[0033] In this embodiment of step 215, it is assumed that the entries of the finger table are arranged in order of the key values of their respective nodes and that broadcast messages are to be communicated to nodes in order of increasing key values. However, in alternate embodiments, the finger table can be arranged in a different order. In these embodiments, step 215 assigns the parameter newEndID to be equal to the finger table entry key value greater than and closest to the key value of the selected finger table entry. This embodiment communicates broadcast messages to nodes in order of increasing key values. In a further embodiment, if broadcast messages are to be communicated to nodes in order of decreasing key values, then step 215 assigns the parameter newEndID to be equal to the finger table entry key value less than and closest to the key value of the selected finger table entry.
[0034] Following step 215 or step 220, method 200 proceeds to decision block 225. In decision block 225, the node determines if the key value of the selected finger table entry is less than the value of the newEndID parameter. If so, method 200 proceeds to step 230. Otherwise, method 200 proceeds directly to decision block 235.
[0035] Step 230 forwards a copy of the broadcast message to the node associated with the selected finger table entry. The forwarded copy of the broadcast message includes an End ID value set to the value of the newEndID parameter.
[0036] Following decision block 225 or step 230, method 200 proceeds to decision block 235. Decision block 235 determines if the selected finger table entry is the last entry of the node's finger table. If so, then method 200 ends and the node is finished forwarding the broadcast message.
[0037] If decision block 235 determines that the selected finger table entry is not the last entry of the node's finger table, method 200 proceeds to step 240. Step 240 increments the index i, thereby selecting the next finger table entry of the node's finger table. Following step 240, method 200 proceeds back to decision block 210. Steps 210, 215, 220, 225, 230, 235, and 240 may be repeated as many times as necessary to evaluate all of the entries of the node's finger table.
[0038] Figures 3A-C illustrate an example routing of a broadcast message in an overlay network according to an embodiment of the invention. In this example, an initiating node 305 desires to send a broadcast message to all of the nodes of the overlay network 300. Figure 3 A illustrates a first phase 300 of the delivery of the broadcast message to the nodes of the overlay network 300. hi accordance with method 200, initiating node sends a broadcast message 307 with an End ED value of 9 to node 309, a broadcast message 311 with an End ED of 12 to node 313, a broadcast message 315 with an End ID of 15 to node 317, and a broadcast message 319 with an End ED of 7 to node 321. [0039] Figure 3B illustrates a second phase 330 of the delivery of the broadcast message to the nodes of the overlay network. In Figures 3B and 3C, shaded nodes have already received the broadcast message. In the second phase 330, nodes that received a broadcast message from the initiating node 305 in phase 300 will forward copies of the broadcast message in accordance with method 200. Thus, in phase 330, node 317 forwards a broadcast message
336 with an End ID of 14 to node 338 and a broadcast message 340 with an End ID of 15 to node 342. Similarly, node 321 forwards a broadcast message 344 with an End ID of 1 to node 346, a broadcast message 348 with an End ED of 4 to node 350, and a broadcast message 352 with an End ID of 7 to node 354.
[0040] Node 309 does not forward its received broadcast message to any nodes. In the first phase 300, node 309 received a broadcast message with an End ID of 9. As there are no finger nodes between node 309, with a key value of 8, and its received End ID value of 9, node 309 has no nodes to forward its received broadcast message to.
[0041] In the example of Figures 3A-3C, key values 3, 5, 10, and 11, assigned to locations 314, 331, 332, and 333, respectively, are not assigned to any nodes. Thus, the first entry of the finger table of node 313 references node 317, which as a key value of 12. However, node 313 received a broadcast message in phase 300 with an End ID value of 12. As node 313 does not have any nodes in its finger table closer than the End ID value of 12, node 313 does not have any nodes to forward its received broadcast message to.
[0042] Figure 3C illustrates a third phase 360 of the delivery of the broadcast message to the nodes of the overlay network. In Figures 3B and 3C, shaded nodes have already received the broadcast message. In the third phase 360, nodes that received a broadcast message from nodes in the second phase 330 will forward copies of the broadcast message in accordance with method 200. Thus, in phase 360, node 350 forwards a broadcast message 362 with an End ID of 4 to node 364. Additionally, node 354 forwards a broadcast message 366 with an End ID of 7 to node 368.
[0043] Because of the End ED values of their received broadcast messages in phase 330, nodes 338, 342, and 346 will not forward any broadcast messages in phase 360. Similarly, the broadcast messages received by nodes 364 and 366 in phase 360 will not be forwarded to any other nodes in the overlay network due to their respective End ED values.
[0044] As can be seen from the example of Figures 3A-3C, every node in the overlay network receives a copy of the broadcast message. Additionally, no node in the overlay network receives a duplicate of the broadcast message. Furthermore, the initiating node only requires enough network bandwidth to send a copy of the broadcast message to each node in its finger table, regardless of the total number of nodes in the overlay network. For the example of Figures 3A-3C, this is only four broadcast messages. In an overlay network having nodes with 160 entry finger tables, corresponding to a hash space of 2160, the initiating node only needs to send 160 copies of the broadcast message to reach potentially millions of nodes.
[0045] Moreover, it can be proven that the method 200 is capable of directing a broadcast message to all of the nodes of an overlay network in O(log2 N) time, where N is the number of the nodes in the overlay network. For the example of Figures 3A-3C, this corresponds to loglO = 3.32 time, or approximately three phases of forwarding and receiving broadcast messages. For an example overlay network with a 160 bit hash space with 1,000,000 nodes, method 200 can direct a broadcast message to all of the nodes in approximately 20 time, or 20 phases of forwarding and receiving broadcast messages.
[0046] In a further embodiment, broadcast messages can be directed to only a portion of the nodes in an overlay network. In an embodiment, each broadcast message includes a Start ID parameter in addition to an End ID parameter. The Start ID parameter represents the beginning of a range of key values of nodes that are intended to receive and process the broadcast message. As explained in detail below, additional nodes outside of this range of key values may receive and forward broadcast messages to ensure that all of the nodes within this range of key values receive the broadcast message, hi this embodiment, the Start ID and End ID together specify that the nodes of a contiguous portion of the hash space should receive a broadcast message. An initiating node can direct a broadcast message to discontiguous sets of nodes in the overlay network by sending multiple broadcast messages, each with Start ED and End ID values specifying different contiguous portions of the hash space.
[0047] Figure 4 illustrates a method 400 of routing a broadcast message to a portion of an overlay network according to an embodiment of the invention. Method 400 begins with the receipt of a broadcast message including a Start ID parameter and an End ID parameter. In step 405, the node sets an index value i to the first entry of the node's finger table. In decision block 410, the node determines whether the finger table entry specified by the index value i, referred to as the selected finger table entry, is the last entry of the node's finger table. If so, then method 400 proceeds from decision block 410 to step 420. Step 420 assigns the parameter newEndED to be equal to the End ID of the received broadcast message.
[0048] Conversely, if the node determines that the selected finger table entry is not the last entry of the node's finger table, method 400 proceeds from decision block 410 to step 415. Step 415 assigns the parameter newEndID to be equal to the key value of the next finger table entry (i.e. the finger table entry specified by index i+1) or the End ID of the received broadcast message, whichever is closer to the current node in the hash space. The distance between the current node and a key value, such as the next finger table entry or the current
End ID, can determined in an embodiment by subtracting the current node's key value from the other key value.
[0049] In this embodiment of step 415, it is assumed that the entries of the finger table are arranged in order of the key values of their respective nodes and that broadcast messages are to be communicated to nodes in order of increasing key values. However, in alternate embodiments, the finger table can be arranged in a different order and broadcast messages can be communicated in increasing or decreasing order of key values.
[0050] Following step 415 or step 420, method 400 proceeds to decision block 425. In decision block 425, the node determines if the key value of the selected finger table entry is less than the value of the newEndID parameter and if the Start ID parameter of the received broadcast message is closer than the newEndID parameter. If both of these conditions are true, then method 400 proceeds to step 430. Step 430 sets a newStartED parameter to be equal to the key value of the selected finger table entry or the StartID parameter of the received broadcast message, whichever is further from the current node in the hash space.
[0051] Following step 430, step 435 forwards a broadcast message to the node corresponding with the selected finger table entry. The forwarded broadcast message includes a start ID equal to the newStartID parameter and an end ID parameter equal to the newEndID parameter.
[0052] Following decision block 425 or step 435, method 400 proceeds to decision block 440. Decision block 440 determines if the selected finger table entry is the last entry of the node's finger table. If so, then method 400 ends and the node is finished forwarding the broadcast message. [0053] If decision block 440 determines that the selected finger table entry is not the last entry of the node's finger table, method 400 proceeds to step 445. Step 445 increments the index i, thereby selecting the next finger table entry of the node's finger table. Following step 445, method 400 proceeds back to decision block 410. Steps 410, 415, 420, 425, 430, 435, 440, and 445 may be repeated as many times as necessary to evaluate all of the entries of the node's finger table.
[0054] Broadcast messages can carry any type of information to all or a portion of the nodes of the overlay network. Additionally, one or more nodes can respond to broadcast messages by directly contacting the node initiating the broadcast message. If large numbers of nodes can potentially respond to a broadcast message, the initiating node and its network connection may be overwhelmed.
[0055] A further embodiment of the invention alleviates this problem by aggregating response messages along the same routes used to distribute a broadcast message. In this embodiment, when each node receives a broadcast message that potentially requires a response from itself or another node, the receiving node remembers the location of the node sending the broadcast message, referred to as the sending node, which may be the node initiating the broadcast message or an intermediate node forwarding the broadcast message. If the receiving node determines that a response to the broadcast message is necessary, the receiving node forwards its response back to its respective sending node. As a node can receive a broadcast message from potentially any node, in an embodiment, each node remembers the sending node associated with each broadcast message it receives.
[0056] Figure 5 illustrates a system for aggregating query results from the nodes of an overlay network according to an embodiment of the invention. An example overlay network 500 includes a set of nodes. The set of nodes are connected with an example initiating node 535 via a set of paths similar to that described in Figures 3A-3C. hi an embodiment, a node responding to a broadcast message from the initiating node forwards its response to its respective sending node. For example, node 510 received a broadcast message initiated by node 535 via sending node 515. Thus, node 510 will provide its response message, if any, back to node 515. Similarly, node 515 received the broadcast message initiated by node 535 via node 525. Node 525 received the broadcast message directly from the initiating node 535. Thus, a response message from node 510 will travel via nodes 515 and 525 back to initiating node 535. [0057] When a node receives a response message from one or more nodes, the node aggregates the response messages into a new response message, which is then forwarded back to its sending node. In an embodiment, nodes can choose not to respond to a broadcast message. For example, if the broadcast message is a search query, a node can choose to response only if the node satisfies the search query.
[0058] A node can aggregate response messages using any algorithm for compressing or aggregating data known in the art. For example, if nodes 505 and 510 both respond to a broadcast message, then node 525 will receive both responses. Node 525 can aggregate these responses, along with the response of node 530 and/or its own response, if any, into a combined response message. Node 525 then forwards the combined response message back to node 535.
[0059] hi an embodiment, a node aggregates these responses by determining a compact representation of the set of responses. For example, a frequency domain transformation, such as a discrete cosine transformation, fast Fourier transform, or wavelet transformation, can be applied to determine a compact representation of the set of responses to a broadcast message. In this example, a node can receive one or more frequency domain representations of sets of message responses; inverse transform these representations; combine these representations along with the nodes own response, if any; create a new frequency domain representation of the combined sets of message responses; and forwards the combined frequency domain representation back to its sending node.
[0060] Figure 6 illustrates a set of information processing devices suitable for implementing an overlay network 600 according to an embodiment of the invention. The nodes of overlay network 600 include laptop or portable computers 605; server computers 610; desktop computers and workstations 615; mobile computing devices 620 such as mobile phones, personal digital assistants, portable digital media players, and portable or handheld game consoles; and home entertainment devices 625 such as video game consoles, digital media players, set-top boxes, media center computers and storage devices. Overlay network 600 can include any number of each type of device independent of the number of devices of other types. Each device implement the functionality of one or more nodes of the overlay network 600. For each device, the functionality of one or more nodes can be implemented as hardware, software, firmware, or any combination thereof. Node functionality in software can be a part of an application, a library, an application programming interface, and/or an operating system. Furthermore, each node of the overlay network 600 can be connected with other nodes via any type of wired or wireless network connection, incorporating any type of electrical, optical, radio, or other communications means. The overlay network 600 can encompass both local-area networks and wide-area networks, such as the Internet.
[0061] hi a further embodiment, some devices of overlay network 600 may have restricted capabilities. For example, only a limited subset of nodes of overlay network 600 may be allowed to initiate broadcast messages. The remaining nodes are only permitted to forward and/or process broadcast message, hi still a further embodiment, all or a subset of the nodes of overlay network 600 are capable of authenticating broadcast messages. This embodiment prevents the spread of unauthorized broadcast messages. Upon receiving a broadcast message, a node first determines whether the broadcast message is authentic, for example by checking a cryptographic signature. If a broadcast message is authentic, it is processed and potentially forwarded to other nodes as described above. Otherwise, the broadcast message is ignored.
[0062] Figure 7 illustrates a set of information processing devices suitable for implementing an overlay network 700 according to an embodiment of the invention. Overlay network 700 enables processors connected over a data bus to send and receive broadcast messages in an efficient manner. The data bus can use any electrical, optical, or other type of data communication means capable of carrying data within and/or between integrated circuits.
[0063] Overlay network 700 includes processors 705, 710, 715, and 720. hi further embodiments, overlay network 700 can include thousands or millions of processors. Each processor can be a microprocessor, microcontroller, system on a chip processor, digital signal processor, ASIC, programmable logic device and/or any other type of information processing device. Each processor can further include one or more processing units capable of independently executing sequences of information processing instructions or processing information according to a fixed algorithm. Each processor can include local data storage as well as access to common or shared data storage.
[0064] Figure 8 illustrates the components of an information processing device suitable for implementing a node of an overlay network according to an embodiment of the invention.
Figure 8 is a block diagram of a computer system 1000, such as a personal computer, video game console, personal digital assistant, or other digital device, suitable for practicing an embodiment of the invention. Computer system 1000 includes a central processing unit (CPU) 1005 for running software applications and optionally an operating system. CPU 1005 may be comprised of one or more processing cores. Memory 1010 stores applications and data for use by the CPU 1005. Storage 1015 provides non- volatile storage for applications and data and may include fixed disk drives, removable disk drives, flash memory devices, and CD-ROM, DVD-ROM, Blu-ray, HD-DVD, UMD, or other optical storage devices. User input devices 1020 communicate user inputs from one or more users to the computer system 1000, examples of which may include keyboards, mice, joysticks, touch pads, touch screens, still or video cameras, and/or microphones. Network interface 1025 allows computer system 1000 to communicate with other computer systems via an electronic communications network, and may include wired or wireless communication over local area networks and wide area networks such as the Internet. An audio processor 1055 is adapted to generate analog or digital audio output from instructions and/or data provided by the CPU 1005, memory 1010, and/or storage 1015. The components of computer system 1000, including CPU 1005, memory 1010, data storage 1015, user input devices 1020, network interface 1025, and audio processor 1055 are connected via one or more data buses 1060.
[0065] A graphics subsystem 1030 is further connected with data bus 1060 and the components of the computer system 1000. The graphics subsystem 1030 includes a graphics processing unit (GPU) 1035 and graphics memory 1040. Graphics memory 1040 includes a display memory (e.g., a frame buffer) used for storing pixel data for each pixel of an output image. Graphics memory 1040 can be integrated in the same device as GPU 1035, connected as a separate device with GPU 1035, and/or implemented within memory 1010. Pixel data can be provided to graphics memory 1040 directly from the CPU 1005. Alternatively, CPU 1005 provides the GPU 1035 with data and/or instructions defining the desired output images, from which the GPU 1035 generates the pixel data of one or more output images. The data and/or instructions defining the desired output images can be stored in memory 1010 and/or graphics memory 1040. In an embodiment, the GPU 1035 includes 3D rendering capabilities for generating pixel data for output images from instructions and data defining the geometry, lighting, shading, texturing, motion, and/or camera parameters for a scene. The GPU 1035 can further include one or more programmable execution units capable of executing shader programs.
[0066] The graphics subsystem 1030 periodically outputs pixel data for an image from graphics memory 1040 to be displayed on display device 1050. Display device 1050 is any device capable of displaying visual information in response to a signal from the computer system 1000, including CRT, LCD, plasma, and OLED displays. Computer system 1000 can provide the display device 1050 with an analog or digital signal.
[0067] Further embodiments can be envisioned to one of ordinary skill in the art from the specification and figures. In other embodiments, combinations or sub-combinations of the above disclosed invention can be advantageously made. The block diagrams of the architecture and flow charts are grouped for ease of understanding. However it should be understood that combinations of blocks, additions of new blocks, re-arrangement of blocks, and the like are contemplated in alternative embodiments of the present invention.
[0068] The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. It will, however, be evident that various modifications and changes may be made thereunto without departing from the broader spirit and scope of the invention as set forth in the claims.

Claims

WHAT IS CLAIMED IS:
L A method of processing a broadcast message in an overlay network, the method comprising: receiving a broadcast message including an End ID from a sending node, wherein the End ID specifies a range of key values for finger nodes that should receive copies of the broadcast message; selecting an entry of a finger table, wherein the each entry of the finger table includes a reference to a finger node and a key value associated with the finger node; determining if there is a following entry of the finger table, wherein the following entry includes a key value adjacent to the key value of the selected finger table entry according to a node order; setting a new End ID to the key value associated with the following entry in response to the determination that there is a following entry of the finger table; setting a new End ID to the End ID of the received broadcast message in response to the determination that there is not a following entry of the finger table; comparing the key value of the selected finger table entry with the new End ID; and forwarding a copy of the broadcast message with the new End ID to the finger node of the selected entry in response to a determination that the key value of the selected finger table entry is within the range of key values specified by the new End ID.
2. The method of claim 1, wherein the finger table includes two or more entries arranged according to their respective key values.
3. The method of claim 1, wherein the node order is ascending according to key values.
4. The method of claim 1, wherein the node order is descending according to key values.
5. The method of claim 1, further comprising: storing a reference to a sending node communicating the broadcast message; receiving a response message from at least one finger node in response to the forwarded copy of broadcast message; aggregating the received response messages into a combined response message; and forwarding the combined response message to the sending node.
6. The method of claim 5, further comprising: receiving a response to the broadcast message; and including the response in the combined response message.
7. The method of claim 5, wherein aggregating the received response messages further comprises using a frequency domain transformation to create a compact representation of the received response messages.
8. A method of processing a broadcast message in an overlay network, the method comprising: receiving a broadcast message by a current node with a current key value, wherein the broadcast message includes a Start ID and an End ID from a sending node, wherein the Start ID and End ID specify a range of key values for finger nodes that should receive copies of the broadcast message; selecting an entry of a finger table, wherein the each entry of the finger table includes a reference to a finger node and a key value associated with the finger node; determining if there is a following entry of the finger table, wherein the following entry includes a key value adjacent to the key value of the selected finger table entry according to a node order; setting a new End ID to the key value associated with the following entry in response to the determination that there is a following entry of the finger table; setting a new End ED to the End ID of the received broadcast message in response to the determination that there is not a following entry of the finger table; comparing the key value of the selected finger table entry with the new End ID and the Start ID with the new End ID; and in response to a determination that the key value of the selected finger table entry is within a range of key values specified by the new End ID and that the StartID is within a range of key values specified by the new End ED: setting a new Start ED to the key value of the selected entry of the finger table or the Start ID, whichever is furthest from the current key value; and forwarding a copy of the broadcast message with the new End ID and the new Start ID to the finger node of the selected entry.
9. The method of claim 8, wherein the finger table includes two or more entries arranged according to their respective key values.
10. The method of claim 8, wherein the node order is ascending according to key values.
11. The method of claim 8, wherein the node order is descending according to key values.
12. The method of claim 8, further comprising: storing a reference to a sending node communicating the broadcast message; receiving a response message from at least one finger node in response to the forwarded copy of broadcast message; aggregating the received response messages into a combined response message; and forwarding the combined response message to the sending node.
13. The method of claim 12, further comprising: receiving a response to the broadcast message; and including the response in the combined response message.
14. The method of claim 12, wherein aggregating the received response messages further comprises using a frequency domain transformation to create a compact representation of the received response messages.
15. An information storage medium including instructions adapted to direct an information processing device to perform an operation, the operation comprising: receiving a broadcast message including an End ID from a sending node, wherein the End ID specifies a range of key values for finger nodes that should receive copies of the broadcast message; selecting an entry of a finger table, wherein the each entry of the finger table includes a reference to a finger node and a key value associated with the finger node; determining if there is a following entry of the finger table, wherein the following entry includes a key value adjacent to the key value of the selected finger table entry according to a node order; setting a new End DD value to the key value associated with the following entry in response to the determination that there is a following entry of the finger table; setting a new End ID value to the End ID of the received broadcast message in response to the determination that there is not a following entry of the finger table; comparing the key value of the selected finger table entry with the new End ID value; and forwarding a copy of the broadcast message with the new End ID value to the finger node of the selected entry in response to a determination that the key value of the selected finger table entry is within the range of key values specified by the new End ID value.
16. The information storage medium βf claim 15, wherein the finger table includes two or more entries arranged according to their respective key values.
17. The information storage medium of claim 15, wherein the node order is ascending according to key values.
18. The information storage medium of claim 15 , wherein the node order is descending according to key values.
19. The information storage medium of claim 15, further comprising: storing a reference to a sending node communicating the broadcast message; receiving a response message from at least one finger node in response to the forwarded copy of broadcast message; aggregating the received response messages into a combined response message; and forwarding the combined response message to the sending node.
20. The information storage medium of claim 19, further comprising: receiving a response to the broadcast message; and including the response in the combined response message.
21. The information storage medium of claim 19, wherein aggregating the received response messages further comprises using a frequency domain transformation to create a compact representation of the received response messages.
22. An information storage medium including instructions adapted to direct an information processing device to perform an operation, the operation comprising: receiving a broadcast message by a current node with a current key value, wherein the broadcast message includes a Start ID and an End ID from a sending node, wherein the Start ID and End ID specify a range of key values for finger nodes that should receive copies of the broadcast message; selecting an entry of a finger table, wherein the each entry of the finger table includes a reference to a finger node and a key value associated with the finger node; determining if there is a following entry of the finger table, wherein the following entry includes a key value adjacent to the key value of the selected finger table entry according to a node order; setting a new End ID to the key value associated with the following entry in response to the determination that there is a following entry of the finger table; setting a new End ID to the End ID of the received broadcast message in response to the determination that there is not a following entry of the finger table; comparing the key value of the selected finger table entry with the new End ID and the Start ID with the new End ID; and in response to a determination that the key value of the selected finger table entry is within a range of key values specified by the new End ID and that the StartID is within a range of key values specified by the new End ID: setting a new Start ID to the key value of the selected entry of the finger table or the Start ID, whichever is furthest from the current key value; and forwarding a copy of the broadcast message with the new End ID and the new Start ID to the finger node of the selected entry.
PCT/US2006/044661 2005-11-29 2006-11-17 Broadcast messaging in peer to peer overlay network WO2007120213A2 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
DE602006013694T DE602006013694D1 (en) 2005-11-29 2006-11-17 BROADCASTING IN A PEER TO PEER OVERLAY NETWORK
JP2008542365A JP4671306B2 (en) 2005-11-29 2006-11-17 Broadcast messaging in peer-to-peer overlay networks
EP06850556A EP1955477B1 (en) 2005-11-29 2006-11-17 Broadcast messaging in peer to peer overlay network
AT06850556T ATE464716T1 (en) 2005-11-29 2006-11-17 BROADCAST TRANSMISSION IN A PEER-TO-PEER OVERLAY NETWORK

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/291,121 US7468952B2 (en) 2005-11-29 2005-11-29 Broadcast messaging in peer to peer overlay network
US11/291,121 2005-11-29

Publications (2)

Publication Number Publication Date
WO2007120213A2 true WO2007120213A2 (en) 2007-10-25
WO2007120213A3 WO2007120213A3 (en) 2007-12-27

Family

ID=38087376

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2006/044661 WO2007120213A2 (en) 2005-11-29 2006-11-17 Broadcast messaging in peer to peer overlay network

Country Status (6)

Country Link
US (4) US7468952B2 (en)
EP (2) EP2226969B1 (en)
JP (1) JP4671306B2 (en)
AT (1) ATE464716T1 (en)
DE (1) DE602006013694D1 (en)
WO (1) WO2007120213A2 (en)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8041942B2 (en) * 2006-09-05 2011-10-18 Panasonic Corporation Robust peer-to-peer networks and methods of use thereof
CN103546372A (en) * 2006-11-27 2014-01-29 艾利森电话股份有限公司 Method and system for providing a routing architecture for overlay networks
US8693392B2 (en) * 2007-02-21 2014-04-08 Avaya Canada Corp. Peer-to-peer communication system and method
EP2122905A2 (en) * 2007-03-09 2009-11-25 Telefonaktiebolaget LM Ericsson (PUBL) Dissemination of network management tasks in a distributed communication network
US20080288654A1 (en) * 2007-05-17 2008-11-20 Nokia Corporation Node and method to provide and keep real-time up-to-date data in a distributed hash table
US8238237B2 (en) * 2007-06-18 2012-08-07 Sony Computer Entertainment Inc. Load balancing distribution of data to multiple recipients on a peer-to-peer network
US20090094651A1 (en) * 2007-10-09 2009-04-09 Alcatel Lucent Ethernet-Level Measurement of Multicast Group Delay Performance
JP5029373B2 (en) * 2008-01-11 2012-09-19 日本電気株式会社 Node, route control method, and route control program
EP2255518A1 (en) 2008-02-13 2010-12-01 Telefonaktiebolaget LM Ericsson (publ) Overlay network node and overlay networks
US8176200B2 (en) * 2008-10-24 2012-05-08 Microsoft Corporation Distributed aggregation on an overlay network
US8767587B1 (en) 2009-01-21 2014-07-01 Cisco Technology, Inc. Exploratory linktrace operations in a computer network
US9135094B2 (en) * 2009-06-22 2015-09-15 Microsoft Technology Licensing, Llc Adding configurable messaging functionality to an infrastructure
US10248932B2 (en) 2009-12-01 2019-04-02 International Business Machines Corporation Informing users of a virtual universe of real world events
US8855102B2 (en) * 2010-01-29 2014-10-07 Elster Solutions, Llc Wireless communications providing interoperability between devices capable of communicating at different data rates
AU2011210731A1 (en) * 2010-01-29 2012-07-19 Elster Solutions, Llc High priority data reads for acquisition of real-time data in wireless mesh network
US8549126B2 (en) * 2010-04-09 2013-10-01 Sony Computer Entertainment Inc. Application level broadcast in peer overlay network
US8804731B2 (en) * 2010-10-27 2014-08-12 Intel Corporation Generating platform identification for certification version signaling
US20130110931A1 (en) * 2011-11-02 2013-05-02 The Board Of Trustees Of The University Of Illinois Scalable Peer To Peer Streaming For Real-Time Data
CN106202303B (en) * 2016-06-30 2019-09-10 南京邮电大学 A kind of Chord routing table compression method and optimization file search method
CN108337170B (en) * 2018-01-30 2021-08-17 浙江省公众信息产业有限公司 Distributed resource searching method and system
CN109391907A (en) * 2018-12-13 2019-02-26 武汉盛硕电子有限公司 A kind of encryption and decryption method and its application

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1345359A1 (en) 2002-03-15 2003-09-17 Broadcom Corporation High speed protocol for interconnecting modular network devices

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5671222A (en) 1994-06-06 1997-09-23 Lucent Technologies Inc. Multicast routing in self-routing multistage networks
US7145869B1 (en) 1999-03-17 2006-12-05 Broadcom Corporation Method for avoiding out-of-ordering of frames in a network switch
US7099317B2 (en) 2000-06-09 2006-08-29 Broadcom Corporation Gigabit switch with multicast handling
US20020097732A1 (en) * 2001-01-19 2002-07-25 Tom Worster Virtual private network protocol
TWI265697B (en) * 2002-06-06 2006-11-01 Ibm Digital contents distribution system, digital contents distribution method, computer readable recording medium storing the program therein, and server and client therefor
US7343424B2 (en) * 2002-06-21 2008-03-11 Nexthop Technologies, Inc. Fibonacci heap for use with internet routing protocols
US7613796B2 (en) * 2002-09-11 2009-11-03 Microsoft Corporation System and method for creating improved overlay network with an efficient distributed data structure
US7379428B2 (en) * 2002-10-31 2008-05-27 Hewlett-Packard Development Company, L.P. Autonomous system topology based auxiliary network for peer-to-peer overlay network
US7805448B2 (en) * 2003-04-18 2010-09-28 Hewlett-Packard Development Company, L.P. Storing attribute values of computing resources in a peer-to-peer network
KR100803272B1 (en) * 2004-01-29 2008-02-13 삼성전자주식회사 Apparatus and method of prosessing certification in IPv6 network
US7730207B2 (en) * 2004-03-31 2010-06-01 Microsoft Corporation Routing in peer-to-peer networks
US7603715B2 (en) * 2004-07-21 2009-10-13 Microsoft Corporation Containment of worms
US7715396B2 (en) * 2004-08-19 2010-05-11 Microsoft Corporation Network routing
US7466656B2 (en) * 2004-10-26 2008-12-16 International Business Machines Corporation Method, apparatus and program storage device for efficient construction of network overlays through interconnection topology embedding
US7529255B2 (en) * 2005-04-21 2009-05-05 Microsoft Corporation Peer-to-peer multicasting using multiple transport protocols
US7808971B2 (en) * 2005-07-01 2010-10-05 Miller John L Routing cache for distributed hash tables
US20070079004A1 (en) * 2005-09-30 2007-04-05 Junichi Tatemura Method and apparatus for distributed indexing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1345359A1 (en) 2002-03-15 2003-09-17 Broadcom Corporation High speed protocol for interconnecting modular network devices

Also Published As

Publication number Publication date
EP1955477B1 (en) 2010-04-14
ATE464716T1 (en) 2010-04-15
EP1955477A2 (en) 2008-08-13
US8837477B2 (en) 2014-09-16
US20090086739A1 (en) 2009-04-02
US20100195652A1 (en) 2010-08-05
US7729280B2 (en) 2010-06-01
EP2226969B1 (en) 2013-01-02
US20070121570A1 (en) 2007-05-31
US20110317697A1 (en) 2011-12-29
US7969906B2 (en) 2011-06-28
DE602006013694D1 (en) 2010-05-27
JP4671306B2 (en) 2011-04-13
JP2009517921A (en) 2009-04-30
WO2007120213A3 (en) 2007-12-27
EP2226969A1 (en) 2010-09-08
US7468952B2 (en) 2008-12-23

Similar Documents

Publication Publication Date Title
US7468952B2 (en) Broadcast messaging in peer to peer overlay network
JP5145419B2 (en) Load distribution of data distribution to multiple recipients on a peer-to-peer network
US11151163B2 (en) Scalable spine nodes with partial replication of routing information in a network environment
JP4806203B2 (en) Routing in peer-to-peer networks
US9913251B2 (en) Application level broadcast in peer overlay network
US7725597B2 (en) Network address translation type for flexible neighbor selection in overlay networks
US20090122724A1 (en) Peer-to-Peer Network including Routing Protocol Enhancement
US8352604B2 (en) Distributed propagation of data in a wireless communication network
US11218918B2 (en) Fast roaming and uniform policy for wireless clients with distributed hashing
Lu et al. A scalable P2P overlay based on arrangement graph with minimized overhead
US11956214B2 (en) Media access control address learning limit on a virtual extensible local area multi-homed network Ethernet virtual private network access port
Takahashi et al. Hybrid hierarchical overlay routing (hyho): Towards minimal overlay dilation

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 2006850556

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2008542365

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE