Broadcast messaging in a peer to peer overlay network
Abstract
This record has no abstract on file.
Term
0.1 yearsleft in the term
Expires 17 November 2026.
- Priority
- Filed
- Granted
- Today
- Expires
22 claims: 4 independent, 18 dependent
- 1オーバレイ・ネットワークにおいて同報通信メッセージを処理する方法であって、前記方法は、 送信ノードから終了IDを含む同報通信メッセージを受信するステップを含み、前記終了IDは、前記同報通信メッセージのコピーを受信すべきフィンガーノードのためのキー値の範囲を特定し、前記方法はさらに、 フィンガーテーブルのエントリを選択するステップを含み、前記フィンガーテーブルの各エントリは、あるフィンガーノードおよびそのフィンガーノードに関連付けられたキー値への参照を含み、前記方法はさらに、 前記フィンガーテーブルの次のエントリがあるかどうかを判断するステップを含み、前記次のエントリは、ノードの順序に従って前記選択されたフィンガーテーブルエントリの前記キー値に隣接するキー値を含み、前記方法はさらに、 前記フィンガーテーブルの次のエントリがあるという前記判断に応じて、前記次のエントリに関連付けられた前記キー値に新規の終了IDをセットするステップと、 前記フィンガーテーブルの次のエントリがないという前記判断に応じて、前記受信された同報通信メッセージの前記終了IDに新規の終了IDをセットするステップと、 前記選択されたフィンガーテーブルエントリの前記キー値を前記新規の終了IDと比較するステップと、 前記選択されたフィンガーテーブルエントリの前記キー値が、前記新規の終了IDによって特定されたキー値の範囲内にあるという判断に応じて、前記新規の終了IDを有する前記同報通信メッセージのコピーを前記選択されたエントリの前記フィンガーノードに転送するステップとを含む、方法。
- 2前記フィンガーテーブルは、それぞれのキー値に従って配置された2つ以上のエントリを含む、請求項1に記載の方法。
- 3前記ノードの順序は、キー値に従って昇順である、請求項1に記載の方法。
- 4前記ノードの順序は、キー値に従って降順である、請求項1に記載の方法。
- 5前記同報通信メッセージを通信する送信ノードへの参照を格納するステップと、 同報通信メッセージの前記転送されたコピーに応じて、少なくとも1つのフィンガーノードから応答メッセージを受信するステップと、 前記受信された応答メッセージを組み合わされた応答メッセージに集約するステップと、 前記組み合わされた応答メッセージを前記送信ノードに転送するステップとをさらに含む、請求項1に記載の方法。
- 6前記同報通信メッセージへの応答を受信するステップと、 前記応答を前記組み合わされた応答メッセージに含めるステップとをさらに含む、請求項5に記載の方法。
- 7前記受信された応答メッセージを集約するステップは、前記受信された応答メッセージのコンパクト表現を作成するために周波数領域変換を使用するステップをさらに含む、請求項5に記載の方法。
- 8オーバレイ・ネットワークにおいて同報通信メッセージを処理する方法であって、前記方法は、 現在のキー値を有する現在のノードによって同報通信メッセージを受信するステップを含み、前記同報通信メッセージは送信ノードからの開始IDおよび終了IDを含み、前記開始IDおよび終了IDは、前記同報通信メッセージのコピーを受信すべきフィンガーノードのためのキー値の範囲を特定し、前記方法はさらに、 フィンガーテーブルのエントリを選択するステップを含み、前記フィンガーテーブルの各エントリは、あるフィンガーノードおよびそのフィンガーノードに関連付けられたキー値への参照を含み、前記方法はさらに、 前記フィンガーテーブルの次のエントリがあるかどうかを判断するステップを含み、前記次のエントリは、ノードの順序に従って前記選択されたフィンガーテーブルエントリの前記キー値に隣接するキー値を含み、前記方法はさらに、 前記フィンガーテーブルの次のエントリがあるという前記判断に応じて、前記次のエントリに関連付けられた前記キー値に新規の終了IDをセットするステップと、 前記フィンガーテーブルの次のエントリがないという前記判断に応じて、前記受信された同報通信メッセージの前記終了IDに新規の終了IDをセットするステップと、 前記選択されたフィンガーテーブルエントリの前記キー値を前記新規の終了IDと比較し、前記開始IDを前記新規の終了IDと比較するステップと、 前記選択されたフィンガーテーブルエントリの前記キー値が、前記新規の終了IDによって特定されたキー値の範囲内にあり、かつ、前記開始IDが、前記新規の終了IDによって特定されたキー値の範囲内にあるという判断に応じて、 前記フィンガーテーブルの前記選択されたエントリの前記キー値かまたは前記開始IDのうち、前記現在のキー値から遠いほうに、新規の開始IDをセットするステップと、 前記新規の終了IDおよび前記新規の開始IDを有する前記同報通信メッセージのコピーを前記選択されたエントリの前記フィンガーノードに転送するステップとを含む、方法。
- 9前記フィンガーテーブルは、それぞれのキー値に従って配置された2つ以上のエントリを含む、請求項8に記載の方法。
- 10前記ノードの順序は、キー値に従って昇順である、請求項8に記載の方法。
- 11前記ノードの順序は、キー値に従って降順である、請求項8に記載の方法。
- 12前記同報通信メッセージを通信する送信ノードへの参照を格納するステップと、 同報通信メッセージの前記転送されたコピーに応じて、少なくとも1つのフィンガーノードから応答メッセージを受信するステップと、 前記受信された応答メッセージを組み合わされた応答メッセージに集約するステップと、 前記組み合わされた応答メッセージを前記送信ノードに転送するステップとをさらに含む、請求項8に記載の方法。
- 13前記同報通信メッセージへの応答を受信するステップと、 前記応答を前記組み合わされた応答メッセージに含めるステップとをさらに含む、請求項12に記載の方法。
- 14前記受信された応答メッセージを集約するステップは、前記受信された応答メッセージのコンパクト表現を作成するために周波数領域変換を使用するステップをさらに含む、請求項12に記載の方法。
- 15情報処理装置に動作を実行するよう指示するために適合された命令を含む情報記憶媒体であって、前記動作は、 送信ノードから終了IDを含む同報通信メッセージを受信することを含み、前記終了IDは、前記同報通信メッセージのコピーを受信すべきフィンガーノードのためのキー値の範囲を特定し、前記動作はさらに、 フィンガーテーブルのエントリを選択することを含み、前記フィンガーテーブルの各エントリは、あるフィンガーノードおよびそのフィンガーノードに関連付けられたキー値への参照を含み、前記動作はさらに、 前記フィンガーテーブルの次のエントリがあるかどうかを判断することを含み、前記次のエントリは、ノードの順序に従って前記選択されたフィンガーテーブルエントリの前記キー値に隣接するキー値を含み、前記動作はさらに、 前記フィンガーテーブルの次のエントリがあるという前記判断に応じて、前記次のエントリに関連付けられた前記キー値に新規の終了ID値をセットすることと、 前記フィンガーテーブルの次のエントリがないという前記判断に応じて、前記受信された同報通信メッセージの前記終了IDに新規の終了ID値をセットすることと、 前記選択されたフィンガーテーブルエントリの前記キー値を前記新規の終了ID値と比較することと、 前記選択されたフィンガーテーブルエントリの前記キー値が、前記新規の終了ID値によって特定されたキー値の範囲内にあるという判断に応じて、前記新規の終了ID値を有する前記同報通信メッセージのコピーを前記選択されたエントリの前記フィンガーノードに転送することとを含む、情報記憶媒体。
- 16前記フィンガーテーブルは、それぞれのキー値に従って配置された2つ以上のエントリを含む、請求項15に記載の情報記憶媒体。
- 17前記ノードの順序は、キー値に従って昇順である、請求項15に記載の情報記憶媒体。
- 18前記ノードの順序は、キー値に従って降順である、請求項15に記載の情報記憶媒体。
- 19前記同報通信メッセージを通信する送信ノードへの参照を格納することと、 同報通信メッセージの前記転送されたコピーに応じて、少なくとも1つのフィンガーノードから応答メッセージを受信することと、 前記受信された応答メッセージを組み合わされた応答メッセージに集約することと、 前記組み合わされた応答メッセージを前記送信ノードに転送することとをさらに含む、請求項15に記載の情報記憶媒体。
- 20前記同報通信メッセージへの応答を受信することと、 前記応答を前記組み合わされた応答メッセージに含めることとをさらに含む、請求項19に記載の情報記憶媒体。
- 21前記受信された応答メッセージを集約することは、前記受信された応答メッセージのコンパクト表現を作成するために周波数領域変換を使用することをさらに含む、請求項19に記載の情報記憶媒体。
- 22情報処理装置に動作を実行するよう指示するために適合された命令を含む情報記憶媒体であって、前記動作は、 現在のキー値を有する現在のノードによって同報通信メッセージを受信することを含み、前記同報通信メッセージは送信ノードからの開始IDおよび終了IDを含み、前記開始IDおよび終了IDは、前記同報通信メッセージのコピーを受信すべきフィンガーノードのためのキー値の範囲を特定し、前記動作はさらに、 フィンガーテーブルのエントリを選択することを含み、前記フィンガーテーブルの各エントリは、あるフィンガーノードおよびそのフィンガーノードに関連付けられたキー値への参照を含み、前記動作はさらに、 前記フィンガーテーブルの次のエントリがあるかどうかを判断することを含み、前記次のエントリは、ノードの順序に従って前記選択されたフィンガーテーブルエントリの前記キー値に隣接するキー値を含み、前記動作はさらに、 前記フィンガーテーブルの次のエントリがあるという前記判断に応じて、前記次のエントリに関連付けられた前記キー値に新規の終了IDをセットすることと、 前記フィンガーテーブルの次のエントリがないという前記判断に応じて、前記受信された同報通信メッセージの前記終了IDに新規の終了IDをセットすることと、 前記選択されたフィンガーテーブルエントリの前記キー値を前記新規の終了IDと比較し、前記開始IDを前記新規の終了IDと比較することと、 前記選択されたフィンガーテーブルエントリの前記キー値が、前記新規の終了IDによって特定されたキー値の範囲内にあり、かつ、前記開始IDが、前記新規の終了IDによって特定されたキー値の範囲内にあるという判断に応じて、 前記フィンガーテーブルの前記選択されたエントリの前記キー値かまたは前記開始IDのうち、前記現在のキー値から遠いほうに、新規の開始IDをセットすることと、 前記新規の終了IDおよび前記新規の開始IDを有する前記同報通信メッセージのコピーを前記選択されたエントリの前記フィンガーノードに転送することとを含む、情報記憶媒体。
Independent claims22
64 paragraphs, as filed
Background of the invention The present invention relates to the field of data networks, especially peer-to-peer overlay networks. A peer-to-peer network is a distributed data network that has no centralized hierarchy or organization. Peer-to-peer data networks provide a robust and flexible means of communicating information between a large number of computers or other information devices, commonly referred to as nodes.
An overlay network is a logical or virtual network organization imposed on nodes connected by one or more types of subordinate physical network connections. In an overlay network, nodes are connected by virtual or logical links, each of which can match one or more paths in the underlying physical network. Overlay networks are typically implemented by hardware and / or software running in the application layer or other upper layers of the OSI network stack or other types of networking protocols.
A class of peer-to-peer overlay networks is called a distributed hash table network. The distributed hash table overlay network uses a hash function to generate one or more key values and assign them to unique nodes. All possible key-value pairs are called hash spaces. Nodes are organized in hash space according to their assigned key values. The hash function is chosen so that the nodes are distributed almost evenly across the hash space. Distributed hash table overlay networks are typically very scalable, often supporting millions of nodes, and robust, allowing nodes to join or leave frequently, and are efficient. Therefore, the message is quickly routed to a single destination node.
There are many different types of distributed hash table overlay networks. One type of peer-to-peer overlay network is the Chord network. Code overlay network protocols include Chord: A Scalable Peer-to-peer Lookup Protocol for Internet Applications, and Ion Stoica. ), Robert Morris, David Liben-Nowell, David R. Karger, M. Franker Shuek (M. Frans Kaashoek, Frank Dabek, Hari Balakrishnan, IEEE / ACM Transactions on Networking, Vol. 11, No. 1, pp. 17-32. It was described in detail in February 2003.
Distributed hash table overlay network protocols, such as code protocols, provide efficient delivery of messages to a single destination node, but they have many single messages, called message broadcasts. It does not allow efficient delivery to the destination node.
In a typical implementation example, a node that wants to broadcast a message to all other nodes must send the message to each node separately. Each node was directly limited Since only a few nodes are known, the node that initiates the broadcast message, called the start node, must send the message to the dark clouds at all possible key values. For a distributed hash table network, this inevitably involves sending a separate message for each possible key value. This is not feasible for a distributed hash table network with a hash space of 2 ^ 160 (resulting from the use of a 160-bit hash function such as SHA-1).
Another typical implementation uses a flooding approach to deliver broadcast messages. The starting node sends a message to all nodes directly connected to the starting node in the overlay network. Upon receiving a message, each receiving node then forwards the message to any additional node directly connected to each receiving node in the overlay network. This implementation is inefficient because some nodes receive duplicate messages. Furthermore, this implementation example consumes a large amount of network bandwidth and requires a large amount of operating time.
To reduce the bandwidth required by flooding broadcast messages, the modified flooding technique assigns a time-to-live (TTL) value to each broadcast message. Each time a copy of the broadcast message is transferred to an additional node, its TTL value is decremented. When the TTL value reaches 1, broadcast messages are no longer forwarded. Although this modified flooding technique reduces the amount of network bandwidth wasted and the number of duplicate messages, it cannot ensure that broadcast messages are routed to all nodes.
<p> Therefore, it is desirable for systems and methods to ensure that each node in a peer-to-peer overlay network receives broadcast messages. In addition, systems and methods ensure that each node in a peer-to-peer overlay network receives only one copy of the broadcast message, thereby ensuring efficient use of network bandwidth. Is desirable. In addition, it is desirable that the system and method require minimal time and bandwidth resources from the node initiating the broadcast message. It is also desirable to allow systems and methods to selectively direct broadcast messages to parts of the overlay network that have no additional network bandwidth overhead. For systems and methods, it is desirable to deliver broadcast messages to all or selected parts of the peer-to-peer overlay network within a minimum time interval. For systems and methods, it is desirable to allow efficient aggregation of query results from nodes in peer-to-peer overlay networks.</p>
<p> Outline of the invention One embodiment of the present invention efficiently directs broadcast messages to nodes in an overlay network without wasting network bandwidth on duplicate messages or inadvertently overtaking nodes. The broadcast message contains the end ID parameter. The end ID parameter specifies a range of key values for the node to receive a copy of the broadcast message. Each node holds a list of finger nodes and their respective key values. Upon receiving the broadcast message, the node assigns a new end ID value to each finger node based on the end ID value of the received broadcast message or the key value of the adjacent finger node. The node compares the new end ID value of each finger node with the key value of that finger node and broadcasts to that finger node. Decide whether to transfer the page. The broadcast message forwarded to a finger node contains an end ID parameter equal to the new end ID value determined for that finger node. The node can respond to the broadcast message and aggregate the response messages from its finger node.</p><p> In one embodiment, the method of processing a broadcast message in an overlay network comprises receiving a broadcast message including an end ID from a transmitting node. The termination ID specifies a range of key values for the finger node to receive a copy of the broadcast message. This method selects an entry in the finger table. Each entry in the finger table contains a reference to a finger node and the key value associated with that finger node.</p><p> One embodiment of this method determines if there is a next entry in the finger table. The next entry contains key values that are adjacent to the key values of the finger table entries selected according to the order of the nodes. This method sets a new end ID value to the key value associated with the next entry, depending on the determination that there is a next entry in the finger table. This method sets a new end ID value to the end ID of the received broadcast message, depending on the determination that there is no next entry in the finger table. This method compares the key value of the selected finger table entry with the new end ID value, and the key value of the selected finger table entry is within the range of key values specified by the new end ID value. In response to the determination, a copy of the broadcast message with the new end ID value is forwarded to the finger node of the selected entry.</p><p> In yet another embodiment, the finger table contains two or more entries arranged according to their respective key values. In one embodiment, the order of the nodes is ascending according to the key value. In another embodiment, the order of the nodes is descending according to the key value.</p><p> In one additional embodiment, this method stores a reference to a transmitting node communicating the broadcast message. This method receives response messages from at least one finger node, depending on the forwarded copy of the broadcast message, and aggregates the received response messages into a combined response message. The combined response message is forwarded to the sending node.</p><p> In yet another embodiment, the method can receive a response to a broadcast message and include that response in the combined response message. In yet another embodiment, the combined response message comprises a response message from one or more nodes in a compact representation created using frequency domain transformation.</p>
The present invention will be described with reference to the drawings. In the drawings, the use of the same reference number indicates the same or similar elements.
Detailed description of the invention 1A and 1B show exemplary code overlay networks suitable for use in one embodiment of the invention. FIG. 1A shows an exemplary code overlay network 100 containing a large number of 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 have key values 0, 45, 60, 115, 120, 128, 144, 187, 210, and 240, respectively. Allocated.
Overlay network nodes are placed by their assigned key values in hash space 125, or by all possible key value pairs. In Figure 1A, the hash space 125 is 0 ~ 2.<sup>N</sup>Shown as a ring configuration of all possible key values in, where N is the number of bits assigned to a key value. In some implementations, N is equal to 160 bits, which is the size of the output of a typical hash function such as SHA-1, which is large enough to avoid hash collisions. In this implementation example, the code overlay network 100 has a maximum of 2<sup>160</sup>Supporting nodes, a typical code overlay network can contain millions of active nodes. Other implementation examples may use more or less hash bits.
In some implementation examples, key values are randomly assigned to each node. In some implementations, each node is assigned a key value based on the result of a hash function of one or more of the node's attributes. The hash function is chosen so that the nodes are distributed almost evenly over the hash space 125. In an additional implementation, the assignment of key values to nodes is at least partially based on the topology of the underlying physical network. In these implementation examples, the nodes are distributed almost uniformly over the entire hash space 125, but in the overlay network 100, the nodes located very close to each other in the physical network are located in the overlay network hash space 125. Attempts to ensure that they are located very close to each other.
Based on the placement of the nodes in hash space 125, each node contains a reference to one or more adjacent nodes. In some implementations of the Code Overlay Network 100, each node contains references to adjacent nodes in front of and behind it. For example, node 106 with key value 60 may include references to node 104 with key value 45 and node 108 with key value 115. When a new node with a key value between the key values of nodes 106 and 108, for example 100, is added, the appropriate reference for node 106 is adjusted accordingly.
In yet another realization example, each node contains a finger table containing references to one or more neighboring nodes. Each finger table entry refers to the node closest to the key value identified by the offset from the current node's key value. In some of these implementations, the offset of each finger table entry matches the binary digit value. For example, the first finger table entry is 1 (2)<sup>0</sup>), And the second finger table entry is 2 (2)<sup>1</sup>), And the third finger table entry is 4 (2)<sup>2</sup>), And the fourth finger table entry is 8 (2)<sup>3</sup>) Has an offset value, and so on. In other implementations, different offset values can be associated with each finger table entry.
FIG. 1B shows an example of the node relationship identified by the finger table entry in the overlay network 130 according to this implementation example. Node 132 with key value 4 contains a first finger table entry that identifies a reference 134 to node 136 with key value 5 that matches offset value 1. The second finger table entry for node 132 identifies a reference 138 to node 140 that has a key value of 6 that matches offset value 2 from node 132. Similarly, the third finger table entry for node 132 identifies a reference 142 to node 144 that has a key value of 8 that matches offset value 4 from node 132. The fourth finger table entry for node 132 identifies a reference 146 to node 148 with a key value 12 that matches offset value 8 from node 132. Each of the other nodes in the overlay network 130 has a similar finger table that identifies references to the other nodes.
The finger table can have any number of entries. Larger finger tables can reduce routing time for messages at the cost of more complex maintenance overhead for adding or removing nodes. For example, if a key value consists of N bits, each node can have a finger table with N entries. In other implementations, other finger table sizes may be optimal, depending on the application.
In this implementation of an overlay network, each node only knows the location of the node identified by the reference in its finger table. However, a node can send a message to any other node in the overlay network via one or more intermediate nodes. Figure 1C shows an exemplary routing of messages in overlay network 150 according to this implementation example.
In the example of FIG. 1C, node 152 with key value 0 directs a message to node 164 with key value 6. The finger table of node 152 has references to nodes 154, 156, 158 and 160 with key values 1, 2, 4 and 8, respectively. To deliver the message to node 164 with key value 6, node 152 forwards the message to the node in its finger table that has the largest key value less than or equal to the key value of the destination node. In this example, node 152 forwards the message to node 158, which has a key value of 4. In the finger table of node 152, node 158 has a key value of 6 or less, which is the key value of the destination node, and has a maximum key value of 4.
Upon receiving a message directed to node 158 with a key value of 6, node 158 uses its own finger table to identify the node with the highest key value below and below the key value of the destination node. In this example, node 158 with key value 4 has a finger table with references to nodes 162, 164, 160 and 170 with key values 5, 6, 8 and 12, respectively. Based on that finger table, node 158 forwards the message to node 164, which has a key value of 6, which is the key value of the desired destination.
The overlay network described above can efficiently route messages to individual nodes, but there is no mechanism for efficiently forwarding broadcast messages to all or most of the overlay network. Each node directly knows only the nodes in its finger table. Therefore, in order to send a message to all nodes in the overlay network, the node that initiates the broadcast message, called the start node, must send a separate message for each possible key value. 2<sup>160</sup>For the hash space of, there is an astronomical number of key values, which makes this approach infeasible.
As mentioned above, the flooding approach for directing broadcast messages wastes network bandwidth and may not guarantee that broadcast messages will be routed to all nodes. In the flooding approach, each node forwards the received broadcast message to all other nodes to which it is connected. Therefore, in overlay network 150, node 152 will forward broadcast messages to nodes 154, 156, 158 and 160. Each node will then forward the received broadcast message to the node in its finger table. For example, node 158 will forward broadcast messages to nodes 162, 164, 160 and 170. As can be seen from Figure 1C, node 160 receives the broadcast message from node 152 and node 158 at least twice.
FIG. 2 shows a method 200 for routing broadcast messages in an overlay network according to an embodiment of the present invention. Method 200 efficiently directs broadcast messages to all nodes in the overlay network without wasting network bandwidth on duplicate messages or skipping any node.
Method 200 is initiated when the node receives the broadcast message. In one embodiment, each broadcast message includes an end ID parameter. The end ID parameter represents the range of key values for the node to which the broadcast message can be forwarded. For example, if a node receives a broadcast message with an end ID value of 17, it will copy the broadcast message to a node with a key value less than 17 in its finger table. You may transfer it. In addition, each forward copy of the broadcast message is assigned an end ID value according to Method 200 to prevent duplicate messages from being sent to the node.
The received broadcast message is processed by the node as follows. At step 205, the node sets the index value i in the first entry in the node's finger table. In decision block 210, the node determines if the finger table entry identified by the index value i, called the selected finger table entry, is the last entry in the node's finger table. If so, method 200 proceeds from decision block 210 to step 220. Step 220 assigns a new end ID parameter to be equal to the end ID of the received broadcast message.
Conversely, if the node determines that the selected finger table entry is not the last entry in the node's finger table, method 200 proceeds from decision block 210 to step 215. Step 215 hashes the new end ID parameter from the key value of the next finger table entry (ie, the finger table entry identified by index i + 1) or the end ID of the received broadcast message. Allocate to be equal to the one closer to the current node in space. In one embodiment, the distance between the current node and a key value such as the next finger table entry or the current end ID can be determined by subtracting the key value of the current node from the other key values.
In this example of step 215, it is assumed that the finger table entries are arranged in the order of the key values of their respective nodes, and that the broadcast message is communicated to the nodes in descending order of the key values. .. However, in an alternative embodiment, the finger tables can be arranged in different orders. In these embodiments, step 215 assigns the new end ID parameter to be greater than and equal to the key value of the finger table entry selected and closest to it. In this embodiment, the broadcast communication message is communicated to the nodes in descending order of the key value. In yet another embodiment, if the broadcast message is communicated to the nodes in ascending order of key value, step 215 sets the new end ID parameter to less than the key value of the selected finger table entry. Allocate to be equal to the key value of the closest finger table entry.
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 new end ID parameter. If smaller, method 200 proceeds to step 230. Otherwise, method 200 goes 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 contains the end ID value set in the value of the new end ID parameter.
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 in the node's finger table. If so, method 200 ends and the node finishes forwarding the broadcast message.
If determination block 235 determines that the selected finger table entry is not the last entry in the node's finger table, method 200 proceeds to step 240. Step 240 increments the index i, thereby selecting the next finger table entry in the node's finger table. Following step 240, method 200 returns to decision block 210. Steps 210, 215, 220, 225, 230, 235, and 240 may be repeated as many times as necessary to evaluate all the entries in the node's finger table.
3A-3C show exemplary routing of broadcast communications in an overlay network according to an embodiment of the invention. In this example, the starting node 305 wants to send a broadcast message to all nodes in the overlay network 300. FIG. 3A shows the first stage 300 of delivering the broadcast message to the nodes of the overlay network 300. According to method 200, the start node sends the broadcast message 307 with an end ID value of 9 to node 309, the broadcast message 311 with an end ID of 12 to node 313, and the broadcast message 315 with an end ID of 15. A broadcast message 319 with an end ID of 7 is sent to node 317 to node 321.
Figure 3B shows the second stage 330 of the broadcast message delivery to the nodes of the overlay network. In FIGS. 3B and 3C, the shaded node has already received the broadcast message. In the second stage 330, the node that receives the broadcast message from the start node 305 in stage 300 transfers a copy of the broadcast message according to method 200. Therefore, in stage 330, node 317 forwards the broadcast message 336 with an end ID of 14 to node 338 and the broadcast message 340 with an end ID of 15 to node 342. Similarly, node 321 has a broadcast message 344 with an end ID of 1 to node 346, a broadcast message 348 with an end ID of 4 to node 350, and a broadcast message 352 with an end ID of 7 to node 354. Transfer to.
Node 309 does not forward the broadcast message it receives to any node. In the first stage 300, node 309 received a broadcast message with an end ID of 9. Since there is no finger node between the node 309 with the key value 8 and the termination ID value 9 it received, node 309 has no node to forward the broadcast message it received.
In the example of Figures 3A-3C, the key values 3, 5, 10, and 11 assigned to locations 314, 331, 332, and 333, respectively, are not assigned to any node. Therefore, the first entry in the finger table of node 313 refers to node 317 with the key value 12. However, node 313 received a broadcast message with an end ID value of 12 at stage 300. Since node 313 does not have a node in its finger table that is closer than the end ID value of 12, node 313 does not have a node that forwards the broadcast message it receives.
Figure 3C shows the third stage 360 of delivering a broadcast message to a node in the overlay network. In FIGS. 3B and 3C, the shaded node has already received the broadcast message. In the third stage 360, the node that receives the broadcast communication message from the node in the second stage 330 transfers a copy of the broadcast communication message according to the method 200. Therefore, in stage 360, node 350 forwards the broadcast message 362 with end ID 4 to node 364. In addition, node 354 forwards the broadcast message 366 with termination ID 7 to node 368.
Nodes 338, 342, and 346 do not forward the broadcast message at stage 360 due to the end ID value of the broadcast message they received at stage 330. Similarly, broadcast messages received by nodes 364 and 366 in stage 360 are not forwarded to any other node in the overlay network due to their respective termination ID values.
As can be seen from the examples in Figures 3A-3C, every node in the overlay network receives a copy of the broadcast message. In addition, no node in the overlay network receives duplicate broadcast messages. In addition, the starting node needs only 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. In the example of FIGS. 3A ~ Figure 3C, this Re is only four broadcast messages. 2<sup>160</sup>In an overlay network with nodes with 160 entry finger tables corresponding to the hash space of, the starting node sends 160 copies of the broadcast message to reach potentially millions of nodes. Just need it.
In addition, Method 200 sends a broadcast message to all nodes of the overlay network.<sub>2</sub>It has been found that it can be directed in N) times, where N is the number of nodes in the overlay network. In the example of FIGS. 3A to 3C, this corresponds to log10 = 3.32 times of the broadcast message, or about 3 steps of forwarding and receiving. In an exemplary overlay network with a 160-bit hash space with 1,000,000 nodes, Method 200 transfers the broadcast message to all nodes approximately 20 times, or in 20 steps, of the broadcast message. It can be directed by reception.
In yet another embodiment, the broadcast message can only be directed to some of the nodes in the overlay network. In one embodiment, each broadcast message includes a start ID parameter in addition to the end ID parameter. The start ID parameter marks the beginning of a range of key values for a node intended to receive and process broadcast messages. As described in detail below, additional nodes outside this range of key values receive a broadcast message to ensure that all nodes within this range of key values receive the broadcast message. And transfer it. In this embodiment, both the start and end IDs specify that nodes in adjacent parts of the hash space should receive broadcast messages. The start node broadcasts to a non-adjacent pair of nodes in the overlay network by sending a number of broadcast messages, each with a start ID value and an end ID value that identify different adjacent parts of the hash space. You can direct the message.
FIG. 4 shows a method 400 for routing a broadcast message to a part of an overlay network according to an embodiment of the present invention. Method 400 begins with the receipt of a broadcast message containing a start ID parameter and an end ID parameter. At step 405, The mode sets the index value i to the first entry in the node's finger table. In decision block 410, the node determines if the finger table entry identified by the index value i, called the selected finger table entry, is the last entry in the node's finger table. If so, method 400 proceeds from decision block 410 to step 420. Step 420 assigns a new end ID parameter to be equal to the end ID of the received broadcast message.
Conversely, if the node determines that the selected finger table entry is not the last entry in the node's finger table, method 400 proceeds from decision block 410 to step 415. Step 415 hashes the new end ID parameter from the key value of the next finger table entry (ie, the finger table entry identified by index i + 1) or the end ID of the received broadcast message. Allocate to be equal to the one closer to the current node in space. In one embodiment, the distance between the current node and a key value such as the next finger table entry or the current end ID can be determined by subtracting the key value of the current node from the other key values.
In this example of step 415, it is assumed that the finger table entries are arranged in the order of the key values of their respective nodes, and that the broadcast message is communicated to the nodes in descending order of the key values. .. However, in an alternative embodiment, the finger tables can be arranged in a different order, and the broadcast message can be communicated in descending order of key value or in descending order.
Following step 415 or 420, method 400 proceeds to decision block 425. In decision block 425, the node determines whether the key value of the selected finger table entry is less than the value of the new end ID parameter, and whether the start ID parameter of the received broadcast message is the new end ID parameter. Determine if it is closer than. If both of these conditions are true, method 400 proceeds to step 430. Step 430 ensures that the new start ID parameter is equal to the key value of the selected finger table entry or the start ID parameter of the received broadcast message, whichever is closer to the current node in hash space. Allocate.
Following step 430, step 435 forwards the broadcast message to the node that matches the selected finger table entry. The forwarded broadcast message contains a start ID equal to the new start ID parameter and an end ID parameter equal to the new end ID parameter.
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 in the node's finger table. If so, method 400 ends and the node finishes forwarding the broadcast message.
If determination block 440 determines that the selected finger table entry is not the last entry in the node's finger table, method 400 proceeds to step 445. Step 445 increments the index i, thereby selecting the next finger table entry in the node's finger table. Following step 445, method 400 returns 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 the entries in the node's finger table.
Broadcast messages provide any type of information to the nodes of the overlay network. Can be told to all or part. In addition, one or more nodes can respond to the broadcast message by making direct contact with the node initiating the broadcast message. The starting node and its network connectivity can be overwhelmed if a large number of nodes can potentially respond to the broadcast message.
Yet another embodiment of the present invention alleviates this problem by aggregating response messages along the same route used to deliver broadcast messages. In this embodiment, if each node receives a broadcast message that potentially requires a response from itself or another node, the receiving node sends a broadcast message, called the sending node. The sending node may be the node initiating the broadcast message or the intermediate node transferring the broadcast message. If the receiving node determines that a response to the broadcast message is required, the receiving node forwards the response back to its respective sending node. In one embodiment, each node stores a transmitting node associated with each broadcast message it receives, since a node can potentially receive a broadcast message from any node.
FIG. 5 shows a system for aggregating query results from nodes in an overlay network according to an embodiment of the present invention. An exemplary overlay network 500 contains a set of nodes. This pair of nodes is connected to the exemplary starting node 535 via a pair of routes similar to those described in FIGS. 3A-3C. In one embodiment, the node responding to the broadcast message from the starting node forwards the response to its respective transmitting node. For example, node 510 received a broadcast message initiated by node 535 via sending node 515. Therefore, node 510 sends the 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 starting node 535. Therefore, the response message from node 510 returns to the starting node 535 via nodes 515 and 525.
When a node receives a response message from one or more nodes, that node aggregates the response message into one new response message, which is then forwarded back to the sending node. In one embodiment, the node may choose not to respond to the broadcast message. For example, if the broadcast message is a search query, the node can choose to respond only if the node satisfies the search query.
Nodes can aggregate response messages using any algorithm for compressing or aggregating data known in the art. For example, if both nodes 505 and 510 respond to the broadcast message, node 525 receives both responses. Node 525 can aggregate these responses together with Node 530's response and / or its own response, if any, into a combined response message. Node 525 then forwards the combined response message back to Node 535.
In one embodiment, the node aggregates these responses by determining a compact representation of the set of responses. For example, frequency domain transforms such as the discrete cosine transform, the fast Fourier transform, or the wavelet transform can be applied to determine the compact representation of the set of responses to the broadcast message. In this example, a node receives one or more frequency domain representations of a set of message responses, reverses these representations, combines the responses of the node itself, if any, with these representations, and combines the message responses. A new set of frequency domain representations can be created and the combined frequency domain representations can be transferred back to its transmitting node.
FIG. 6 shows a set of information processing devices suitable for realizing an overlay network 600 according to an embodiment of the present invention. The nodes of the overlay network 600 are laptop or portable computer 605, server computer 610, desktop computer and workstation 615, mobile phones, personal digital assistants, portable digital media players, and portable or handheld game consoles. Includes portable computing devices such as 620 and home entertainment devices such as video game machines, digital media players, set-top boxes, media center computers, and storage devices. The overlay network 600 may include any number of devices of each type independent of the number of other types of devices. Each device implements the functionality of one or more nodes in the overlay network 600. For each device, the functionality of one or more nodes can be realized as hardware, software, firmware, or any combination thereof. Node functionality in software can be part of an application, library, application programming interface, and / or operating system. In addition, each node of the overlay network 600 can be connected to other nodes via any type of wired or wireless network connection that incorporates any type of electrical, optical, wireless or other means of communication. The overlay network 600 may include both a local area network and a wide area network such as the Internet.
In yet another embodiment, some devices in the overlay network 600 may have limited capabilities. For example, only a limited portion of the overlay network 600 nodes may be allowed to initiate broadcast messages. The remaining nodes are only allowed to forward and / or process broadcast messages. In yet another embodiment, all or part of the overlay network 600 nodes can authenticate the broadcast message. This embodiment prevents the spread of unauthorized broadcast messages. Upon receiving a broadcast message, the node first determines if the broadcast message is genuine, for example by checking the cryptographic signature. If the broadcast message is genuine, it is processed as described above and potentially forwarded to other nodes. In all other cases, the broadcast message is ignored.
FIG. 7 shows a set of information processing devices suitable for realizing an overlay network 700 according to an embodiment of the present invention. The overlay network 700 allows processors connected through the 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 transporting data within and / or between integrated circuits.
Overlay network 700 includes processors 705, 710, 715, and 720. In yet another embodiment, the overlay network 700 may include thousands or millions of processors. Each processor can be a microprocessor, a microcontroller, a system-on-chip processor, a digital signal processor, an ASIC, a programmable logic device, and / or any other type of information processing device. Each processor may further include one or more processing units capable of independently executing a sequence of information processing instructions or processing information according to a fixed algorithm. Each processor may include access to local data storage and common or shared data storage.
FIG. 8 shows the components of an information processing device suitable for realizing a node of an overlay network according to an embodiment of the present invention. FIG. 8 shows a personal computer, video game console, personal digital assistant, or other digital device suitable for practicing an embodiment of the present invention. It is a block diagram of a computer system 1000 such as a device. Computer system 1000 includes a central processing unit (CPU) 1005 for running software applications and optionally an operating system. CPU1005 may consist of one or more processing cores. Memory 1010 stores applications and data for use by CPU 1005. Storage 1015 provides non-volatile storage for applications and data, fixed disk drives, removable disk drives, flash memory devices, and CD-ROMs, DVD-ROMs, Blu-rays, HD-DVDs, UMDs, or other optics. It may include a storage device. The user input device 1020 communicates user input from one or more users to the computer system 1000, examples of which include a keyboard, mouse, joystick, touchpad, touch screen, still or video camera, and / or microphone. You may be. The network interface 1025 allows the computer system 1000 to communicate with other computer systems via an electronic communication network and may include wired or wireless communication over a wide area network such as a local area network and the Internet. The audio processor 1055 is designed to generate analog or digital audio output from the 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 device 1020, network interface 1025, and voice processor 1055, are connected via one or more data buses 1060.
The graphics subsystem 1030 is further connected to the components of the data bus 1060 and computer system 1000. The graphics subsystem 1030 includes a graphics processing unit (GPU) 1035 and a graphics memory 1040. The graphics memory 1040 includes a display memory (eg, a frame buffer) used to store pixel data for each pixel of the output image. The graphics memory 1040 can be integrated into the same device as the GPU 1035, can be connected as a separate device from the GPU 1035, and / or can be realized in memory 1010. Pixel data can be provided directly from CPU 1005 to graphics memory 1040. Alternatively, the CPU 1005 provides the GPU 1035 with data and / or instructions that specify the desired output image, from which the GPU 1035 produces pixel data for one or more output images. The data and / or instructions that define the desired output image may be stored in memory 1010 and / or graphics memory 1040. In one embodiment, the GPU 1035 is three-dimensional for generating pixel data for an output image from instructions and data that specify geometry, lighting, shading, texture, motion, and / or camera parameters for a scene. Including the conversion function. The GPU 1035 may 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 the graphics memory 1040 so as to be displayed on the display device 1050. The 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. The computer system 1000 can provide an analog or digital signal to the display device 1050.
Yet another embodiment will come to the minds of those skilled in the art from the specification and drawings. In other embodiments, combinations or partial combinations of the inventions disclosed above may be favored. The architectural block diagrams and flowcharts are grouped for ease of understanding. However, it should be understood that in alternative embodiments of the present invention, block combinations, new block additions, block reconstructions, etc. are possible. I'm sorry.
Therefore, specifications and drawings should be considered in an exemplary sense rather than in a limited sense. However, it is clear that various modifications and changes may be made to it without departing from the broader spirit and scope of the invention as stated in the claims.
<figref num="1A">It is a figure which shows the exemplary code overlay network suitable for use in one Example of this invention.</figref><figref num="1B">It is a figure which shows the exemplary code overlay network suitable for use in one Example of this invention.</figref><figref num="1C">It is a figure which shows the exemplary code overlay network suitable for use in one Example of this invention.</figref><figref num="2">It is a figure which shows the method of routing the broadcast communication message in an overlay network according to one Embodiment of this invention.</figref><figref num="3A">FIG. 5 illustrates exemplary routing of broadcast messages in an overlay network according to an embodiment of the present invention.</figref><figref num="3B">FIG. 5 illustrates exemplary routing of broadcast messages in an overlay network according to an embodiment of the present invention.</figref><figref num="3C">FIG. 5 illustrates exemplary routing of broadcast messages in an overlay network according to an embodiment of the present invention.</figref><figref num="4">It is a figure which shows the method of routing the broadcast communication message to a part of an overlay network according to one Embodiment of this invention.</figref><figref num="5">It is a figure which shows the system for aggregating the query result from the node of an overlay network according to one Embodiment of this invention.</figref><figref num="6">It is a figure which shows one set of information processing apparatus suitable for realizing an overlay network according to one Example of this invention.</figref><figref num="7">It is a figure which shows one set of information processing apparatus suitable for realizing an overlay network according to one Example of this invention.</figref><figref num="8">It is a figure which shows the component of the information processing apparatus suitable for realizing the node of an overlay network according to one Embodiment of this invention.</figref>
Every citation, both ways
| Document | Relation | Office |
|---|---|---|
| JP7336372A | Cites | Japan |
| WO03105421A1 | Cites | World Intellectual Property Organization (WIPO) |
19 members in 6 offices
Priority claims9
| Document | Office | Kind | Date |
|---|---|---|---|
| 11291121 | United States of America | – | |
| 29112105 | United States of America | A | |
| 29112105 | United States of America | A | |
| 2006044661 | United States of America | W | |
| 2006044661 | United States of America | W | |
| 2005291121 | – | – | – |
| 2006044661 | – | – | – |
| US20050291121 | – | – | – |
| WO2006US44661 | – | – | – |
Members19
| Document | Office | Kind | |
|---|---|---|---|
| US2007121570A1 | United States of America | A1 | |
| WO2007120213A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2007120213A3 | World Intellectual Property Organization (WIPO) | A3 | |
| EP1955477A2 | European Patent Office (EPO) | A2 | |
| US7468952B2 | United States of America | B2 | |
| US2009086739A1 | United States of America | A1 | |
| JP2009517921A | Japan | A | |
| EP1955477B1 | European Patent Office (EPO) | B1 | |
| AT464716T | Austria | T | |
| ATE464716T1 | Austria | T1 | |
| DE602006013694D1 | Germany | D1 | |
| US7729280B2 | United States of America | B2 | |
| US2010195652A1 | United States of America | A1 | |
| EP2226969A1 | European Patent Office (EPO) | A1 | |
| JP4671306B2This record | Japan | B2 | |
| US7969906B2 | United States of America | B2 | |
| US2011317697A1 | United States of America | A1 | |
| EP2226969B1 | European Patent Office (EPO) | B1 | |
| US8837477B2 | United States of America | B2 |
23 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Renewal fee payment (event date is renewal date of database)FPAY | FPAY | |
| Certificate of patent or registration of utility modelJAPANESE INTERMEDIATE CODE: R150R150 | R150 | |
| Certificate of patent or registration of utility modelJAPANESE INTERMEDIATE CODE: R150R150 | R150 | |
| First payment of annual fees (during grant procedure)JAPANESE INTERMEDIATE CODE: A61A61 | A61 | |
| Notification of acceptance of power of attorneyJAPANESE INTERMEDIATE CODE: A7422RD02 | RD02 | |
| Written decision to grant a patent or to grant a registration (utility model)JAPANESE INTERMEDIATE CODE: A01A01 | A01 | |
| Written decision to grant a patent or to grant a registration (utility model)JAPANESE INTERMEDIATE CODE: A01A01 | A01 | |
| Decision of grant or rejection writtenTRDD | TRDD | |
| Notification of change in applicantJAPANESE INTERMEDIATE CODE: A712A711 | A711 | |
| Notification of resignation of power of attorneyJAPANESE INTERMEDIATE CODE: A7424RD04 | RD04 | |
| Notification of reasons for refusalJAPANESE INTERMEDIATE CODE: A131A131 | A131 | |
| Notification of resignation of power of attorneyJAPANESE INTERMEDIATE CODE: A7424RD04 | RD04 |
Numbers
- Publication
- 4671306
- Publication, DOCDB
- 4671306
- Publication, EPODOC
- JP4671306B
- Application
- 2008542365
- Application, DOCDB
- 2008542365
- Application, EPODOC
- JP20080542365
Titles2
- Japanese
- ピアツーピア・オーバレイ・ネットワークにおける同報通信メッセージング
- English
- Broadcast messaging in peer-to-peer overlay networks
Classification
- CPC, 1
- H04L12/1854
- IPC, 1
- H04L12 56