JP4409604B2 - Overlay network construction and maintenance method and program - Google Patents

Overlay network construction and maintenance method and program Download PDF

Info

Publication number
JP4409604B2
JP4409604B2 JP2008006223A JP2008006223A JP4409604B2 JP 4409604 B2 JP4409604 B2 JP 4409604B2 JP 2008006223 A JP2008006223 A JP 2008006223A JP 2008006223 A JP2008006223 A JP 2008006223A JP 4409604 B2 JP4409604 B2 JP 4409604B2
Authority
JP
Japan
Prior art keywords
node
skip
address
successor
overlay network
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
JP2008006223A
Other languages
Japanese (ja)
Other versions
JP2009171156A (en
Inventor
誠 小原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Toshiba Digital Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Solutions Corp
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 Toshiba Corp, Toshiba Solutions Corp filed Critical Toshiba Corp
Priority to JP2008006223A priority Critical patent/JP4409604B2/en
Publication of JP2009171156A publication Critical patent/JP2009171156A/en
Application granted granted Critical
Publication of JP4409604B2 publication Critical patent/JP4409604B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、スキップテーブルを用いてオーバーレイネットワークを構築・維持するのに好適なオーバーレイネットワーク構築・維持方法及びプログラムに関する。   The present invention relates to an overlay network construction / maintenance method and program suitable for constructing / maintaining an overlay network using a skip table.

近年、ピアツーピアシステム(P2Pシステム)のオーバーレイネットワークを構築及び維持する手法またはこれを利用したシステムの研究開発が盛んになりつつある。このP2Pシステムのオーバーレイネットワークを構築及び維持する手法には様々なものがあるが、その中でも特に、カルフォルニア大学バークレー校(UCB)を中心としたTapestry(タペストリ)(非特許文献1及び2参照)、マイクロソフト社を中心としたPastry(ペストリ)(非特許文献3及び4参照)、マサチューセッツ工科大学(MIT)を中心としたChord(コード)(非特許文献5及び6参照)などが注目されている。   In recent years, research and development of a technique for constructing and maintaining an overlay network of a peer-to-peer system (P2P system) or a system using the technique has been increasing. There are various methods for constructing and maintaining an overlay network of this P2P system, and among them, Tapestry centered on University of California, Berkeley (UCB) (see Non-Patent Documents 1 and 2), Attention has been focused on Pastry (see Non-Patent Documents 3 and 4) centered on Microsoft Corporation and Chord (Code) (see Non-Patent Documents 5 and 6) centered on Massachusetts Institute of Technology (MIT).

これらの手法に共通するのは、ID(識別子)の近さをリングで管理するConsistentHashing(コンシステントハッシング)を用いて、オーバーレイネットワークを構築するということである。   What is common to these methods is that an overlay network is constructed by using consistent hashing (consistent hashing) in which the proximity of IDs (identifiers) is managed by a ring.

ConsistentHashingとは、
1)全てのノード(ネットワークに接続したコンピュータ)とオブジェクト(コンピュータに格納されるべき、ファイルのようなひとかたまりのデータ)について、それらが持つネットワーク上でのユニークな識別子(例えばノードならホスト名やIP(Internet Protocol)アドレス、オブジェクトならその名前やデータ自体)をハッシュ関数に投入し、
2)そこから得られたノードの識別子のハッシュ値をノードID、オブジェクトの識別子のハッシュ値をオブジェクトIDとして、
3)オブジェクトを、オブジェクトIDに最も「近い」ノードIDを持つノードに格納する(近さの定義については後述する)
という技術である。各ノードはハッシュ空間の一部を担い、オーバーレイネットワークを構成するノード全体で1つのハッシュ空間を構成することから、この技術を一般的に、「分散ハッシュテーブル(DHT)」と呼ぶ。
What is Consistent Hashing?
1) All nodes (computers connected to the network) and objects (a group of data such as files to be stored in the computer) have unique identifiers on the network that they have (for example, a host name or IP address for nodes) (Internet Protocol) address, if it is an object, its name and data itself)
2) The hash value of the node identifier obtained from the node ID is the node ID, and the hash value of the object identifier is the object ID.
3) The object is stored in the node having the node ID closest to the object ID (the definition of proximity will be described later).
It is a technology. Each node bears a part of the hash space, and one hash space is formed by all the nodes constituting the overlay network, so this technique is generally called “distributed hash table (DHT)”.

オブジェクトの格納のため、或いは格納されたオブジェクトを取り出すためには、オブジェクトIDに最も「近い」ノードIDを持つノードを探索する必要がある。以下、この、(ノードまたはオブジェクトの)IDに最も近いノードIDを持つノードの、ノードID及び識別子を得る動作を、「参照」と呼ぶことにする。   In order to store an object or to retrieve a stored object, it is necessary to search for a node having a node ID closest to the object ID. Hereinafter, the operation of obtaining the node ID and identifier of the node having the node ID closest to the ID (of the node or object) will be referred to as “reference”.

以下、非特許文献5、6により示されるアルゴリズム“Chord”での、主としてオーバーレイネットワークの構築方法について説明する。
Chordでは、ノードのIPアドレスのハッシュ値をノードID、オブジェクトのデータ自体のハッシュ値をオブジェクトIDとして、取り得る全てのID(0からN=2m−1まで2m個のID、mはハッシュ関数の出力ビット数(文献では160ビットのSHA1を使用))を収容できるリング(mビットのリング)の上に、それぞれのIDが当てはめられる。このリング上で、2つのIDが時計回りでどれだけ離れているかによって、当該2つのIDの近さが測られる。2m個のIDを収容できるリングは、mビットのリングと呼ばれる。
Hereinafter, an overlay network construction method using the algorithm “Cord” shown in Non-Patent Documents 5 and 6 will be mainly described.
In Chord, IP address hash value the node ID of the node, as an object ID to the hash value of the data itself of the object, 2 all can take the ID (0 to N = 2 m -1 m pieces of ID, m is hashed Each ID is fitted on a ring (m-bit ring) that can accommodate the number of output bits of the function (160 bits SHA1 is used in the literature). On the ring, the proximity of the two IDs is measured by how far the two IDs are clockwise. A ring that can accommodate 2 m IDs is called an m-bit ring.

図15はmが3の場合のリング(いわゆるChordリング)、つまり3ビットのリングを示す。図15において、リング上に配置された8つの丸印はIDを示し、当該丸印の近傍に記述された2進数000〜111は、対応するIDそれ自体を示す。図15におけるID 000〜ID 111の配置は、3ビットのリング上で取り得るIDの位置関係を示す。   FIG. 15 shows a ring when m is 3 (so-called Chord ring), that is, a 3-bit ring. In FIG. 15, eight circles arranged on the ring indicate IDs, and binary numbers 000 to 111 described in the vicinity of the circles indicate corresponding IDs themselves. The arrangement of ID 000 to ID 111 in FIG. 15 indicates the positional relationship of IDs that can be taken on a 3-bit ring.

図15において、例えばID 000に最も近いIDはID 000自身で、次に近いIDはID 001である(ID 111ではないことに注意)。同様に、ID 111に最も近いIDはID 111自身で、次に近いIDはID 000である(ID 110ではないことに注意)。   In FIG. 15, for example, the ID closest to ID 000 is ID 000 itself, and the next closest ID is ID 001 (note that it is not ID 111). Similarly, the ID closest to ID 111 is ID 111 itself, and the next closest ID is ID 000 (note that it is not ID 110).

図15に示す3ビットのリング(に対応するオーバーレイネットワーク)に、以下のノードID
ノードID 000/IPアドレス 10.0.1.1
ノードID 001/IPアドレス 192.168.3.1
ノードID 011/IPアドレス 10.0.0.1
ノードID 100/IPアドレス 192.168.1.5
ノードID 110/IPアドレス 192.168.100.3
ノードID 111/IPアドレス 192.168.0.1
を持つノードが参加したとする。この場合、リング(に対応するオーバーレイネットワーク)は、図16に示されるようになる。図16において、ID(ノードID)の近傍には、当該IDを持つノードのIPアドレスが表記されている。
In the 3-bit ring (corresponding to the overlay network) shown in FIG.
Node ID 000 / IP address 10.0.1.1
Node ID 001 / IP address 192.168.3.1
Node ID 011 / IP address 10.0.0.1
Node ID 100 / IP address 192.168.1.5
Node ID 110 / IP address 192.168.100.3
Node ID 111 / IP address 192.168.0.1
Suppose a node with In this case, the ring (corresponding to the overlay network) is as shown in FIG. In FIG. 16, the IP address of the node having the ID is written in the vicinity of the ID (node ID).

ここで、任意のIDについて、リング上において時計回りで最初に遭遇する(つまり自身を除いて最も近いノードIDを持つ)ノードをsuccessor(後続隣接ノード)、反時計回りに最初に遭遇する(つまり自身を除いて最も遠いノードIDを持つ)ノードをpredecessor(先行隣接ノード)と呼ぶ。   Here, for any ID, the node that first encounters on the ring in the clockwise direction (that is, the node that has the closest node ID except for itself) is the successor (succeeding adjacent node), and first encounters counterclockwise (that is, A node having the farthest node ID excluding itself is called a predecessor (preceding adjacent node).

例えば、ノードID 000のノードのsuccessorはノードID 001のノードであり、predecessorはノードID 111のノードである。また、ノードID 100のノードのsuccessorはノードID 110のノードであり、predecessorはノードID 011のノードである。   For example, the successor of the node with the node ID 000 is the node with the node ID 001, and the predecessor is the node with the node ID 111. Further, the successor of the node with the node ID 100 is the node with the node ID 110, and the predecessor is the node with the node ID 011.

Chordでは、オーバーレイネットワークに参加したノードは自身のsuccessor及びpredecessorとリンクを形成することで、図16のようなリングを形成する。各ノードは、自身のsuccessor及びpredecessorのノードID及びアドレス(IPアドレス)を保持・管理する。これらのsuccessor及びpredecessorのノードID及びアドレスは、隣接テーブルと呼ばれるテーブルを用いて保持・管理される。各ノードが自身のsuccessor及びpredecessorのID及びアドレスを知り、それらとリンクを形成することで、図16のようなリングを形成し、維持する方法については、非特許文献5または6を参照されたい。   In Chord, a node participating in the overlay network forms a ring as shown in FIG. 16 by forming a link with its successor and predecessor. Each node holds and manages the node ID and address (IP address) of its successor and predecessor. The node IDs and addresses of these successors and predecessors are held and managed using a table called an adjacent table. For a method of forming and maintaining a ring as shown in FIG. 16 by each node knowing its own successor and predecessor ID and address and forming a link with them, see Non-Patent Document 5 or 6. .

Chordでは、オブジェクトは、そのオブジェクトのオブジェクトIDに最も近いノードIDを持つノードに格納される。   In Chord, an object is stored in a node having a node ID closest to the object ID of the object.

図17は、図16の例において、それぞれのノードが格納するオブジェクトのオブジェクトIDの範囲を示す。図17において、オブジェクトIDは、矩形の枠内に記述されている。例えば、オブジェクトID 000のオブジェクトは、ノードID 000のノードに格納され、オブジェクトID 010のオブジェクトは、ノードID 011のノードに格納される。   FIG. 17 shows a range of object IDs of objects stored in the respective nodes in the example of FIG. In FIG. 17, the object ID is described in a rectangular frame. For example, the object with object ID 000 is stored in the node with node ID 000, and the object with object ID 010 is stored in the node with node ID 011.

ここで、参照について説明する。
参照とは、以下の入力及び出力
入力:(オブジェクトまたはノードの)ID
出力:入力されたIDに最も近いノードIDを持つノードのノードID及びアドレス
を行うための一連の動作を指す。
Here, the reference will be described.
References are the following inputs and outputs Input: ID (of object or node)
Output: Refers to a series of operations for performing the node ID and address of the node having the node ID closest to the input ID.

図16に示したオーバーレイネットワーク(リング)において参照を実現する方法として、以下の2つ
<第1の方法>
オーバーレイネットワークに参加しているノードの各々が、当該ネットワークに参加している他の全てのノードのアドレスを知っておく方法(ブロードキャスト)
<第2の方法>
隣接テーブルを辿って探索要求を中継してゆく方法(フルフラッディング:full−flooding)
が知られている。
As a method for realizing the reference in the overlay network (ring) shown in FIG. 16, the following two <First method>
How each node participating in the overlay network knows the addresses of all other nodes participating in the network (broadcast)
<Second method>
A method of relaying a search request by tracing an adjacent table (full-flooding)
It has been known.

これらの2つの方法は、それぞれ次のような利点と欠点とを有する。
<第1の方法の利点と欠点>
利点:目標に到達するまで時間がかからず、経路上での障害で全ての探索が中断することがない。
欠点:オーバーレイネットワークに参加している全ノードの参加状況(参加/離脱/異常停止)を監視する必要がある。
Each of these two methods has the following advantages and disadvantages.
<Advantages and disadvantages of the first method>
Advantage: It takes no time to reach the target, and all searches are not interrupted by a failure on the route.
Disadvantages: It is necessary to monitor the participation status (join / leave / abnormal stop) of all nodes participating in the overlay network.

<第2の方法の利点と欠点>
利点:各ノードはオーバーレイネットワークに参加している全ノードの参加状況(参加/離脱/異常停止)を監視する必要がない。
欠点:目標に到達するまで時間がかかり、経路上での障害でフルフラッディングが機能しなくなるので信頼性が低い。
いずれの方法も、オーバーレイネットワークの規模が大きくなると機能しなくなる可能性がある。
<Advantages and disadvantages of the second method>
Advantage: Each node does not need to monitor the participation status (join / leave / abnormal stop) of all nodes participating in the overlay network.
Disadvantages: It takes time to reach the target and is not reliable because full flooding fails due to a failure on the route.
Either method may not work as the overlay network grows in size.

そこでChordでは、各ノードがm個のショートカットパスを準備しておくことで、高々mホップの探索要求転送で、参照が完了するアルゴリズムが適用される。このm個のショートカットパスの情報は、スキップテーブル(フィンガーテーブル)と呼ばれるテーブルを用いて保持・管理される。   Therefore, in Chord, an algorithm is used in which each node prepares m shortcut paths, so that the reference is completed with a search request transfer of at most m hops. Information on the m shortcut paths is held and managed using a table called a skip table (finger table).

スキップテーブルには、mを上記のようにリングのビット数とすると、m個のショートカットパス(の情報)が記述(保持)される。m個のショートカットパスの各々は、各ノードのID(ノードID)を“id”、アドレス(IPアドレス)を“addr”で表すと、以下の生成規則に基づいて生成される。   In the skip table, m shortcut paths (information thereof) are described (held) where m is the number of bits of the ring as described above. Each of the m shortcut paths is generated based on the following generation rule, where each node ID (node ID) is represented by “id” and each address (IP address) is represented by “addr”.

即ち、m個のショートカットパスの各々は、i={0...m−1}に関して、
skip[i].intervalstart
=(id+2i)mod 2m
skip[i].intervalend
=skip[(i+1)mod m].intervalstart
skip[i].successor.id
=ID skip[i].intervalstartに最も近いノードIDを持つノードのID
但し、skip[0].successor.idは、自身のsuccessorとなるノードのノードIDであることに注意
skip[i].successor.addr
=ID skip[i].intervalstartに最も近いノードIDを持つノードのアドレス(IPアドレス)
但し、skip[0].successor.addrは、自身のsuccessorとなるノードのアドレスであることに注意
に基づいて生成される。
That is, each of the m shortcut paths is related to i = {0 ... m−1}.
skip [i]. interval start
= (Id + 2 i ) mod 2 m
skip [i]. interval end
= Skip [(i + 1) mod m]. interval start
skip [i]. successor. id
= ID skip [i]. ID of the node with the node ID closest to interval start
However, skip [0]. successor. Note that id is the node ID of the node that will be its successor skip [i]. successor. addr
= ID skip [i]. The address (IP address) of the node with the node ID closest to the interval start
However, skip [0]. successor. The addr is generated based on attention that it is the address of the node that is the successor of itself.

Chordでは、上記スキップテーブルを用いた参照が次のよう実現される。
処理1)
参照を開始するノードは、自身のスキップテーブルに保持されているショートカットパスの情報から、入力されたIDに対して最も遠いIDを持つノード(つまりpredecessorとなるノード)へのショートカットパスの情報を選択し、当該選択された情報の示すノードへ次の問い合わせ先を問い合わせる。
In Chord, the reference using the skip table is realized as follows.
Process 1)
The node that starts the reference selects the shortcut path information to the node having the ID farthest from the input ID (that is, the node that becomes the predecessor) from the shortcut path information held in its own skip table. Then, a next inquiry destination is inquired to the node indicated by the selected information.

処理2)
問い合わせを受けたノードは、自身のスキップテーブルに保持されているショートカットパスの情報から、入力されたIDに対して最も遠いIDを持つノードへのショートカットパスの情報を選択し、当該選択された情報の示すノードのアドレスを、参照を開始するノードに回答する。但し、入力されたIDに対して最も遠いIDを持つノードのノードIDよりも、自身のノードIDの方が遠い場合には、参照を開始するノードに、到達完了の旨と共に自身のアドレスを回答する。
Process 2)
The node that received the inquiry selects the shortcut path information to the node having the ID farthest from the input ID from the shortcut path information held in its own skip table, and the selected information Is returned to the node that starts the reference. However, if the node ID of the node that is farthest from the input ID is farther than the node ID of the node that is farthest from the input ID, the node that starts the reference returns its own address along with the completion of arrival. To do.

処理3)
回答を受けたノード、つまり参照を開始するノードは、当該回答で示されるノード、つまり次の問い合わせ先に、問い合わせを行う。これにより処理2が再び実行される。但し、到達完了の旨が回答された場合には、次の処理4)が実行される。
Process 3)
The node that receives the answer, that is, the node that starts the reference makes an inquiry to the node indicated by the answer, that is, the next inquiry destination. Thereby, the process 2 is executed again. However, when the completion of arrival is answered, the following process 4) is executed.

処理4)
参照を開始したノードは、到達先のノードから、その到達先ノードのsuccessorのノードID及びアドレスを取得する。取得されたノードID及びアドレスが参照の出力(結果)となる。
Process 4)
The node that has started the reference acquires the node ID and address of the successor of the destination node from the destination node. The acquired node ID and address become a reference output (result).

上記スキップテーブルは、参照の高速化のため(つまり隣接テーブルを利用した探索要求転送と比較してより少ないホップ数での参照を可能にするため)に用いられる。しかし、スキップテーブルで管理されるべきリンク数は隣接テーブルに比べて多く、且つ当該スキップテーブルで管理されるべきノードの参加/離脱は非同期に起きる。このため、スキップテーブルで管理されるべきノードを正確に指し示している状態に、当該スキップテーブルを維持することは難しい。Chordではこの点について考慮されており、スキップテーブルが完全でない場合(つまり、最短距離でのルーティングとならない場合)でも、参照は成立する。この詳細は、非特許文献5、6に記載されている。   The skip table is used for speeding up the reference (that is, enabling a reference with a smaller number of hops compared to the search request forwarding using the adjacent table). However, the number of links to be managed in the skip table is larger than that in the adjacent table, and joining / leaving of nodes to be managed in the skip table occurs asynchronously. For this reason, it is difficult to maintain the skip table in a state where the node to be managed by the skip table is accurately pointed. Chord considers this point, and even if the skip table is not perfect (that is, when routing is not performed at the shortest distance), the reference is valid. The details are described in Non-Patent Documents 5 and 6.

また、上記のスキップテーブルを構築・維持するため、Chordでは以下のような2種類の方法が提示されている。   In order to construct and maintain the above skip table, Chord offers the following two methods.

<厳密モデルによる方法>
ノードは、オーバーレイネットワークに参加する際に、自身のスキップテーブルを構築すると共に、自身が参加することでスキップテーブルの修正が必要となるノードに対して、更新を通知する。
<Method by exact model>
When a node participates in an overlay network, it constructs its own skip table and notifies the node that it is necessary to modify the skip table as a result of its participation.

<非厳密モデルによる方法>
ノードは、オーバーレイネットワークに参加した後、定期的に、自身のスキップテーブルに記述されているm個のショートカットパスのうちの1つを選択して、その選択されたショートカットパスに関してスキップテーブルを更新する。
<Method by non-strict model>
After joining the overlay network, the node periodically selects one of the m shortcut paths described in its skip table and updates the skip table with respect to the selected shortcut path. .

以上、非特許文献5、6に記載されたChordを例に、スキップテーブルを用いた参照と、スキップテーブルの構成・維持とに関する従来技術について説明した。
特開2004−266796号公報 http://p2p.cs.ucsb.edu/chimera/ Ben Y.Zhao,Ling Huang,Jeremy Stribling,Sean C.Rhea,Anthony D.Joseph,and John D.Kubiatowicz.,”Tapestry:A Resilient Global−Scale Overlay for Service Deployment”,IEEE Journal on Selected Areas in Communications,Vol 22,No.1,(2004) http://research.microsoft.com/〜antr/PAST/default.htm A.Rowstron and P.Druschel,”Storage management and caching in PAST,a large−scale,persistent peer−to−peer storage utility”,18th ACM SOSP’01,Lake Louise,Alberta,Canada,(2001) http://pdos.csail.mit.edu/chord/ Ion Stoica,Robert Morris,David Karger,M.Frans Kaashoek,and Hari Balakrishnan,“Chord:A Scalable Peer−to−peer Lookup Service for Internet Applications”,ACM SIGCOMM 2001,(2001).
The prior art relating to the reference using the skip table and the configuration / maintenance of the skip table has been described above using the Chord described in Non-Patent Documents 5 and 6 as an example.
Japanese Patent Application Laid-Open No. 2004-266796 http: // p2p. cs. ucsb. edu / chimera / Ben Y. Zhao, Ling Huang, Jeremy Striving, Sean C. Rhea, Anthony D. Joseph, and John D. Kubiatoicz. “Tapestry: A Resilient Global-Scale Over for Service Deployment”, IEEE Journal on Selected Areas in Communications, Vol. 1, (2004) http: // research. Microsoft. com / ~ antr / PAST / default. htm A. Rowstron and P.M. Druschel, “Storage management and caching in PAST, a large-scale, persistent peer-to-peer storage utility”, 18th ACM SOSP'01, Lake Louise, Alberta, Alberta, Alberta, Alberta, Alberta, Alberta, Alberta, Alberta, Alberta, Alberta, Alberta, Alberta, Alberta http: // pdos. csail. mit. edu / chord / Ion Stoica, Robert Morris, David Karger, M .; Trans Kaashhoek, and Hari Balakrishnan, “Cord: A Scalable Peer-to-peer Lookup Service for Internet Applications”, ACM SIGCOMM 2001, (2001).

上述のChordのように、隣接テーブルとスキップテーブルを利用することでオーバーレイネットワークを構築する方法では、ノードの参加/離脱によりオーバーレイネットワークの構成が変化した際に、隣接テーブル及びスキップテーブルを再構築する必要がある。つまり、オーバーレイネットワークそれ自体を維持するためには隣接テーブルを正しく維持する必要がある。また、参照をより高速に行うためにはスキップテーブルを正しく維持することが望ましい。   In the method of constructing an overlay network by using the adjacency table and the skip table as in the above-described Chord, when the configuration of the overlay network changes due to joining / leaving a node, the adjacency table and the skip table are reconstructed. There is a need. That is, to maintain the overlay network itself, it is necessary to maintain the adjacency table correctly. Also, it is desirable to maintain the skip table correctly in order to perform the reference faster.

このような観点から、Chordのような厳密モデル及び非厳密モデルによるスキップテーブルの構築・維持方法には、それぞれ以下のような課題がある。   From this point of view, the skip table construction / maintenance method using the strict model and the non-strict model such as Chord has the following problems.

<厳密モデルによる方法>
ノードが参加する際にスキップテーブルを完成しなければならず、またノードの参加/離脱に伴ってスキップテーブルの更新が必要となるノードに更新を通知し、全ての更新処理の完了を待たなければならない。このため、オーバーレイネットワークへ/からのノードの参加/離脱に時間がかかる。
<Method by exact model>
When a node joins, the skip table must be completed, and the node that needs to update the skip table as a node joins / leaves is notified of the update and must wait for the completion of all update processes. Don't be. For this reason, it takes time to join / leave the node to / from the overlay network.

<非厳密モデルによる方法>
各ノードが管理するスキップテーブルの更新が定期的に行われる。したがって、スキップテーブルの更新時より後にオーバーレイネットワークへ/からのノードの参加/離脱があった場合にも、次回更新時までスキップテーブルは更新されない。そのため、スキップテーブルの更新時期が到来するまでの間は、更新前のスキップテーブルを使用し続けなければならない。また、スキップテーブルの更新が必要ないときでも、更新が必要かを定期的に確認しなければならない。つまり、スキップテーブルを利用しないときにも無駄に更新処理が行われる。なお、Chordでは、スキップテーブル中の更新されるべきショートカットパスがランダムに選択されるため、ショートカットパス毎の更新間隔は一定でない)。
<Method by non-strict model>
The skip table managed by each node is periodically updated. Accordingly, even when a node joins / leaves the overlay network after the skip table is updated, the skip table is not updated until the next update. Therefore, it is necessary to continue using the skip table before update until the update time of the skip table comes. Even when the skip table is not required to be updated, it is necessary to periodically check whether the update is necessary. That is, the update process is wastefully performed even when the skip table is not used. In Chord, since the shortcut path to be updated in the skip table is selected at random, the update interval for each shortcut path is not constant.

本発明は上記事情を考慮してなされたものでその目的は、オーバーレイネットワークを管理するのに用いられるスキップテーブルの更新処理に要するコストを軽減することができるオーバーレイネットワーク構築・維持方法及びプログラムを提供することにある。   The present invention has been made in view of the above circumstances, and an object thereof is to provide an overlay network construction / maintenance method and program capable of reducing the cost required for update processing of a skip table used for managing an overlay network. There is to do.

本発明の1つの観点によれば、複数のノードから構成されるオーバーレイネットワークであって、前記複数のノードの各々が、前記オーバーレイネットワーク上での識別子であるmビットのノードIDとアンダーレイネットワーク上での識別子であるアドレスとを持つと共に、前記複数のノードのノードIDを当該ノードIDの大きさの順序でリング状に整列した際に自身に後続して隣接するノードのノードID及びアドレス並びに自身に先行して隣接するノードのノードID及びアドレスを保持する隣接テーブルと、目的のノードIDまたはオブジェクトIDを入力として、当該入力されたノードIDまたはオブジェクトIDに最も近いノードIDを持つノードのアドレスを逐次問い合わせにより取得するためのショートカットパスの情報として、前記複数のノードのうち、予め定められた規則に従って選択された自身以外のm個のノードのノードID及びアドレスを保持するスキップテーブルとを備えたオーバーレイネットワークを構築・維持するためのオーバーレイネットワーク構築・維持方法が提供される。このオーバーレイネットワーク構築・維持方法は、前記オーバーレイネットワークに第1のノードが参加する場合に、前記第1のノードが、前記複数のノードのうちの任意のノードである第2のノードに対して、前記リング上で前記第1のノードに第1の方向で隣接するノードである第3のノードのノードID及びアドレスを取得するための第1の問い合わせを行うステップと、前記第1の問い合わせに応じて前記第1のノードが前記第3のノードのノードID及びアドレスを取得した場合、前記第1のノードが前記第3のノードに対して、前記リング上で当該第3のノードに前記第1の方向とは逆の第2の方向で隣接するノードである第4のノードのノードID及びアドレスを取得するための第2の問い合わせを行うステップと、前記第2の問い合わせに応じて前記第1のノードが前記第4のノードのノードID及びアドレスを取得した場合、前記第1のノードが、前記第3のノードのノードID及びアドレスと前記第4のノードのノードID及びアドレスとに基づいて、前記第1のノードの隣接テーブルを構築するステップと、前記第1のノードが前記オーバーレイネットワークに参加する場合に、前記第1のノードが、前記第1のノードのスキップテーブルを初期化するステップと、目的のノードIDまたはオブジェクトIDを入力として、当該入力されたノードIDまたはオブジェクトIDに最も近いノードIDを持つノードのアドレスを前記第1のノードが逐次問い合わせにより取得するための参照処理であって、前記第1のノードが前記問い合わせを前記第1のノードの前記スキップテーブルの示すショートカットパスに従って前記複数のノードのうちの自身以外のノードである第5のノードに転送する過程で、当該ショートカットパスを更新するステップを含む参照処理を実行するステップとを具備する。   According to one aspect of the present invention, there is an overlay network composed of a plurality of nodes, each of the plurality of nodes including an m-bit node ID that is an identifier on the overlay network and an underlay network. And the node IDs and addresses of the adjacent nodes following itself when the node IDs of the plurality of nodes are arranged in a ring shape in the order of the node IDs. The adjacent table holding the node ID and address of the adjacent node preceding the node and the target node ID or object ID as inputs, and the address of the node having the node ID closest to the input node ID or object ID Shortcut path information to obtain by sequential inquiry An overlay for constructing and maintaining an overlay network including a node ID and addresses of m nodes other than itself selected according to a predetermined rule among the plurality of nodes. A network construction and maintenance method is provided. In this overlay network construction / maintenance method, when a first node participates in the overlay network, the first node is a second node that is an arbitrary node of the plurality of nodes. Performing a first inquiry for obtaining a node ID and address of a third node that is a node adjacent to the first node in the first direction on the ring; and responding to the first inquiry When the first node obtains the node ID and address of the third node, the first node sends the first node to the third node on the ring with respect to the third node. Performing a second inquiry to obtain a node ID and address of a fourth node that is an adjacent node in a second direction opposite to the direction of When the first node acquires the node ID and address of the fourth node in response to the inquiry, the first node receives the node ID and address of the third node and the node of the fourth node. Building an adjacency table of the first node based on the ID and address; and when the first node joins the overlay network, the first node Initializing the skip table and the target node ID or object ID as input, the first node obtains the address of the node having the node ID closest to the input node ID or object ID by sequential inquiry A reference process for the first node to send the inquiry to the first node. Performing a reference process including a step of updating the shortcut path in a process of transferring to a fifth node which is a node other than the node among the plurality of nodes according to the shortcut path indicated by the skip table. .

本発明によれば、スキップテーブルは参照(逐次問い合わせ)の過程で利用されことから、参照を行わないのであればスキップテーブルを更新する必要はないことに着目し、オーバーレイネットワークにノードが参加する際にはスキップテーブルを更新せず、スキップテーブルを利用する(参照を行う)過程でスキップテーブルも更新することにより、従来技術と比較してオーバーレイネットワークへのノードの参加に時間がかからず、スキップテーブルの更新処理に要するコストを軽減することができる。また本発明によれば、スキップテーブルを利用するときに当該スキップテーブルを更新することにより、無駄な更新処理が発生するのを防止でき、しかも当該スキップテーブルの更新が必要なときに直ちに当該スキップテーブルの更新が行われる。   According to the present invention, since the skip table is used in the process of reference (sequential inquiry), it is not necessary to update the skip table if the reference is not performed. By skipping the update of the skip table and updating the skip table in the process of using (referring to) the skip table, it takes less time to join the node to the overlay network than in the prior art. Costs required for table update processing can be reduced. Further, according to the present invention, by updating the skip table when using the skip table, it is possible to prevent unnecessary update processing from occurring, and immediately when the skip table needs to be updated, the skip table is immediately updated. Is updated.

以下、本発明の実施の形態につき図面を参照して説明する。
図1は本発明の一実施形態に係るオーバーレイネットワークシステムのシステム構成を示す。図1のオーバーレイネットワークシステムは、オーバーレイネットワーク10を含む。オーバーレイネットワーク10は、3ビットのリング(Chordリング)に対応し、最大8つのノードを収容できるものとする。このオーバーレイネットワーク10に収容されるノードを、オーバーレイネットワーク10に参加するノードと表現することもある。オーバーレイネットワーク10に収容(参加)可能な8つのノードのID(ノードID)は、2進数表記で000,001,010,011,100,101,110,111(10進数表記で0,1,2,3,4,5,6,7)であるものとする。このIDの組をID={000,001,010,011,100,101,110,111}のように表す。このIDをid(またはID id)のように表記することもある。
Embodiments of the present invention will be described below with reference to the drawings.
FIG. 1 shows a system configuration of an overlay network system according to an embodiment of the present invention. The overlay network system of FIG. 1 includes an overlay network 10. The overlay network 10 corresponds to a 3-bit ring (Cord ring) and can accommodate a maximum of eight nodes. A node accommodated in the overlay network 10 may be expressed as a node participating in the overlay network 10. The IDs (node IDs) of eight nodes that can be accommodated (participated) in the overlay network 10 are 000,001,010,011,100,101,110,111 in binary notation (0,1,2 in decimal notation). , 3, 4, 5, 6, 7). This set of IDs is expressed as ID = {000,001,010,011,100,101,110,111}. This ID may be expressed as id (or ID id).

図1のオーバーレイネットワークシステムの例では、オーバーレイネットワーク10に、ID={000,001,011,100,110,111}の6つのノード20-0,20-1,20-3,20-4,20-6,20-7が参加している。これらのノード20-0,20-1,20-3,20-4,20-6,20-7は実線の丸印で示されている。また、これらの丸印の近傍には、対応するノードのIDと共にアドレス(IPアドレス)が表記されている。   In the example of the overlay network system of FIG. 1, the overlay network 10 includes six nodes 20-0, 20-1, 20-3, 20-4, ID = {000,001,011,100,110,111}. 20-6, 20-7 are participating. These nodes 20-0, 20-1, 20-3, 20-4, 20-6 and 20-7 are indicated by solid circles. Also, in the vicinity of these circles, an address (IP address) is written together with the ID of the corresponding node.

図1において、破線の丸印で示される、ID={010,101}の2つのノード20-2,20-5は、現在オーバーレイネットワーク10に参加していないが、当該オーバーレイネットワーク10に参加可能なノードである。   In FIG. 1, the two nodes 20-2 and 20-5 with ID = {010, 101} indicated by a broken-line circle are not currently participating in the overlay network 10 but can participate in the overlay network 10. Node.

<ノードのハードウェア構成>
図2は、ノード20-tのハードウェア構成を示す。ノード20-tは図1に示されるオーバーレイネットワーク10に参加しているノード20-0,20-1,20-3,20-4,20-6,20-7だけでなく、オーバーレイネットワーク10に参加可能な他のノード(ノード20-2及び20-5)をも指すものとする。
<Hardware configuration of node>
FIG. 2 shows a hardware configuration of the node 20-t. The node 20-t includes not only the nodes 20-0, 20-1, 20-3, 20-4, 20-6, 20-7 participating in the overlay network 10 shown in FIG. It also refers to other nodes that can participate (nodes 20-2 and 20-5).

本実施形態において、ノード20-tはコンピュータである。ノード20-tは、処理ユニット21と、主記憶装置22と、補助記憶装置23と、通信機構24と、入出力機構25とを含む。補助記憶装置23は例えばハードディスクドライブを用いて構成される。補助記憶装置23には、各ノード20-tが連携してオーバーレイネットワーク10を構築・維持するためのプログラム230が格納されている。通信機構24は、後述する制御部26によるオーバーレイネットワーク10の構築・維持のために当該制御部26によって指定されたノードとIPアドレス(アンダーレイネットワークのアドレス)を用いて通信する。   In the present embodiment, the node 20-t is a computer. The node 20-t includes a processing unit 21, a main storage device 22, an auxiliary storage device 23, a communication mechanism 24, and an input / output mechanism 25. The auxiliary storage device 23 is configured using, for example, a hard disk drive. The auxiliary storage device 23 stores a program 230 for constructing and maintaining the overlay network 10 in cooperation with each node 20-t. The communication mechanism 24 communicates with a node designated by the control unit 26 in order to construct and maintain the overlay network 10 by the control unit 26 to be described later using an IP address (an underlay network address).

<ノードの機能構成>
図3は、ノード20-tの主として機能構成を示す。本実施形態において、ノード20-tは他のノード(ノード20-t)と連携して例えば図1のオーバーレイネットワーク10を構成すると共に、クライアント(クライアント端末)40からの例えばオブジェクトの格納/取り出しを指示する命令を処理する。オブジェクトとは、コンピュータに記憶させるデータのひとかたまりを指す。
<Functional configuration of node>
FIG. 3 mainly shows a functional configuration of the node 20-t. In the present embodiment, the node 20-t cooperates with other nodes (node 20-t) to configure the overlay network 10 of FIG. 1, for example, and stores / retrieves, for example, objects from the client (client terminal) 40 Process the instruction to direct. An object refers to a group of data stored in a computer.

クライアント40は、ノード20-tと例えば通信回線によって接続されている。クライアント40からの命令は、例えばオブジェクトの格納/取り出しを指示する命令を含む。即ちクライアント40は、オブジェクトの格納/取り出しをノード20-tに指示する。クライアント40は、オブジェクトの格納の場合、後述するオブジェクトID及びデータを含むオブジェクトをノード20-tの後述する命令受け付け部31に渡し、当該命令受け付け部31からオブジェクトの格納成功/失敗の結果を得る。クライアント40はまた、オブジェクトの取り出しの場合、オブジェクトIDをノード20-tの命令受け付け部31に渡し、当該ノード20-tがオブジェクトの取り出しに成功した場合には当該ノード20-tの命令受け付け部31からオブジェクトを得る。クライアント40はまた、ノード20-tがオブジェクトの取り出しに失敗した場合には、当該ノード20-tの命令受け付け部31から失敗した旨の通知を得る。   The client 40 is connected to the node 20-t by a communication line, for example. The command from the client 40 includes, for example, a command that instructs to store / retrieve an object. That is, the client 40 instructs the node 20-t to store / retrieve the object. In the case of storing an object, the client 40 passes an object including an object ID and data to be described later to a command receiving unit 31 to be described later of the node 20-t, and obtains the result of the object storage success / failure from the command receiving unit 31. . The client 40 also passes the object ID to the command accepting unit 31 of the node 20-t in the case of retrieving an object, and if the node 20-t succeeds in retrieving the object, the command accepting unit of the node 20-t. An object is obtained from 31. In addition, when the node 20-t fails to extract the object, the client 40 receives a notification that the node 20-t has failed from the instruction receiving unit 31 of the node 20-t.

ノード20-tは、通信機構24と、制御部26と、命令受け付け部31と、オブジェクト格納部32とを含む。制御部26は、命令受け付け部31から渡される命令、通信機構24で受け取られる他のノードからの命令等を処理する。制御部26は、これらの命令を処理するのに必要な、構成情報記憶部27、テーブル管理部28、探索部29及びオブジェクトアクセス部30を含む。   The node 20-t includes a communication mechanism 24, a control unit 26, a command receiving unit 31, and an object storage unit 32. The control unit 26 processes a command passed from the command receiving unit 31, a command from another node received by the communication mechanism 24, and the like. The control unit 26 includes a configuration information storage unit 27, a table management unit 28, a search unit 29, and an object access unit 30, which are necessary for processing these instructions.

命令受け付け部31は、クライアント40からの命令を受け付ける。命令受け付け部31は、受け付けた命令を制御部26に渡す。命令受け付け部31はまた、制御部26に渡した命令(要求)に対する応答を当該制御部26から受け取ってクライアント40に返す。   The command receiving unit 31 receives a command from the client 40. The command receiving unit 31 passes the received command to the control unit 26. The command receiving unit 31 also receives a response to the command (request) passed to the control unit 26 from the control unit 26 and returns it to the client 40.

構成情報記憶部27は図3に示す主記憶装置22の所定記憶領域を用いて構成され、後述する構成情報50-tを記憶するのに用いられる。   The configuration information storage unit 27 is configured using a predetermined storage area of the main storage device 22 shown in FIG. 3, and is used to store configuration information 50-t described later.

テーブル管理部28は、構成情報記憶部27に格納される構成情報50-t(に含まれる後述する隣接テーブル52-t及びスキップテーブル53-t)を管理する。テーブル管理部28は、当該テーブル管理部28を含むノード20-tが図1のオーバーレイネットワーク10に参加する場合に、自身が管理する構成情報50-t内の隣接テーブル52-tを構築する。テーブル管理部28はまた、当該テーブル管理部28を含むノード20-tが図1のオーバーレイネットワーク10に参加する場合に、当該オーバーレイネットワーク10のリング(Chordリング)上で隣接するノードが管理するスキップテーブルを利用して自身が管理する構成情報50-t内のスキップテーブル53-tを初期化する。   The table management unit 28 manages configuration information 50-t (an adjacent table 52-t and a skip table 53-t described later included in the configuration information 50-t) stored in the configuration information storage unit 27. When the node 20-t including the table management unit 28 participates in the overlay network 10 in FIG. 1, the table management unit 28 constructs the adjacent table 52-t in the configuration information 50-t managed by itself. The table management unit 28 also skips, when a node 20-t including the table management unit 28 participates in the overlay network 10 in FIG. 1, the adjacent nodes on the ring (Cord ring) of the overlay network 10 manage. Using the table, the skip table 53-t in the configuration information 50-t managed by itself is initialized.

テーブル管理部28は更に、当該テーブル管理部28を含むノード20-t(内の探索部29)が後述する参照処理を行う過程(更に具体的に述べるならば、参照処理のために任意のノードに問い合わせを転送する過程)において、自身が管理する構成情報50-t内のスキップテーブル53-tを逐次更新する。   The table management unit 28 further includes a process in which the node 20-t including the table management unit 28 (the search unit 29 therein) performs a reference process (to be described later). In the process of transferring the inquiry to (1), the skip table 53-t in the configuration information 50-t managed by itself is sequentially updated.

探索部29は、あるオブジェクトまたはノードのIDを入力として、当該入力されたIDに最も近いノードIDを持つノードのノードID及びアドレス(IPアドレス)を取得する参照処理を、構成情報記憶部27に格納されている構成情報50-tを利用して行う。例えば、オブジェクトの格納/取り出しを指示する命令を渡された場合、探索部29は、オブジェクトが格納されるべき/格納されているノードのノードID及びアドレス(IPアドレス)を取得(探索)する。即ち探索部29は、オブジェクトが格納されるべき/格納されているノードを、図3において矢印A1で示されるように、他のノード20-tを経由して探索する。制御部26(探索部29)は、探索されたノードにオブジェクトの格納/取り出しを要求し、図3において矢印A2で示されるように、探索されたノードから応答を受ける。   The search unit 29 receives, as an input, the ID of a certain object or node, and performs a reference process for acquiring the node ID and address (IP address) of the node having the node ID closest to the input ID in the configuration information storage unit 27. This is done using the stored configuration information 50-t. For example, when an instruction to store / retrieve an object is passed, the search unit 29 acquires (searches) a node ID and an address (IP address) of a node where the object is to be stored / stored. That is, the search unit 29 searches for a node where an object is to be stored / stored via another node 20-t as indicated by an arrow A1 in FIG. The control unit 26 (search unit 29) requests the searched node to store / retrieve the object, and receives a response from the searched node as indicated by an arrow A2 in FIG.

オブジェクト格納部32は、オブジェクトを格納する記憶部である。オブジェクト格納部32は、図3に示すノード20-t内の補助記憶装置23に相当する補助記憶装置の記憶領域を用いて実現される。制御部26のオブジェクトアクセス部30は、このオブジェクト格納部32にオブジェクトを格納する処理及びオブジェクト格納部32からオブジェクトを取り出す処理を行う。   The object storage unit 32 is a storage unit that stores objects. The object storage unit 32 is realized using a storage area of an auxiliary storage device corresponding to the auxiliary storage device 23 in the node 20-t shown in FIG. The object access unit 30 of the control unit 26 performs processing for storing an object in the object storage unit 32 and processing for extracting an object from the object storage unit 32.

本実施形態において制御部26は、図2に示されるノード20-t内の処理ユニット21が、補助記憶装置23に格納されているプログラム230を当該ノード20-t内の主記憶装置22に読み込んで実行することにより実現されるものとする。   In this embodiment, the control unit 26 reads the program 230 stored in the auxiliary storage device 23 into the main storage device 22 in the node 20-t by the processing unit 21 in the node 20-t shown in FIG. It is realized by executing the above.

<ノードが保持する構成情報>
図4は、図3に示されるノード20-tの構成情報記憶部27に格納される構成情報50-tのデータ構造例を、ノード20-tがノード20-7(t=7)の場合について示す。構成情報50-tは、ノード情報51-t、隣接テーブル52-t及びスキップテーブル53-tから構成される。
<Configuration information held by the node>
4 shows an example of the data structure of the configuration information 50-t stored in the configuration information storage unit 27 of the node 20-t shown in FIG. 3, where the node 20-t is a node 20-7 (t = 7). Show about. The configuration information 50-t includes node information 51-t, an adjacent table 52-t, and a skip table 53-t.

ノード情報51-tは、ID idビット数m、ID id及びアドレス(IPアドレス)addrから構成される。
ID idビット数mは、ノード20-tのノードID(ID id)のビット数を示す、つまりID idビット数mは、オーバーレイネットワーク10の空間(オーバーレイネットワーク空間、オーバーレイネットワークのハッシュ空間)を表すビット数である。mの値は全ノードで共通である。本実施形態ではm=3である。
The node information 51-t includes an ID id bit number m, an ID id, and an address (IP address) addr.
The ID id bit number m indicates the bit number of the node ID (ID id) of the node 20-t. In other words, the ID id bit number m indicates the space of the overlay network 10 (overlay network space, overlay network hash space). The number of bits. The value of m is common to all nodes. In this embodiment, m = 3.

ID id(id)は、ノード20-tのノードIDを示す。ID idのビット数は、ID idビット数mで示される。ID idは、ノード20-tが参加しているオーバーレイネットワーク10の中で固有のIDである。ID idには、ノード20-tのIPアドレスのハッシュ値が用いられる。
アドレスaddrは、ノード20-tのIPアドレスである。
ID id (id) indicates the node ID of the node 20-t. The number of bits of ID id is indicated by the number of ID id bits m. ID id is a unique ID in the overlay network 10 in which the node 20-t participates. As the ID id, a hash value of the IP address of the node 20-t is used.
The address addr is the IP address of the node 20-t.

隣接テーブル52-tは、ノード20-tの後続隣接ノードの情報(後続隣接ノード情報)を保持するエントリ(後続隣接ノード情報エントリ)successorと、ノード20-tの先行隣接ノードの情報(先行隣接ノード情報)を保持するエントリ(先行隣接ノード情報エントリ)predecessorとを有する。ノード20-tの後続隣接ノード(successor node)及び先行隣接ノード(predecessor node)とは、オーバーレイネットワーク10に参加している(包含される)全てのノードのid(ID id)を昇順に整列してリング状に並べたときの、それぞれ、ノード20-t自身のidから時計回りで隣接しているidを持つノード及び反時計回りで隣接しているidを持つノードを指す。つまりノード20-tの後続隣接ノードは、リング上においてノード20-tから時計回りで最初に遭遇する(ノード20-t自身を除いて最も近いノードIDを持つ)ノードを指す。また先行隣接ノードは、上記リング上においてノード20-tから反時計回りに最初に遭遇する(ノード20-t自身を除いて最も遠いノードIDを持つ)ノードを指す。   The adjacency table 52-t includes an entry (successive adjacent node information entry) successor that holds information of the subsequent adjacent node of the node 20-t (subsequent adjacent node information) and information of the previous adjacent node of the node 20-t (advanced adjacent). Node (node information) (preceding adjacent node information entry) predecessor. The subsequent adjacent node (successor node) and the preceding adjacent node (predecessor node) of the node 20-t are arranged in ascending order of ids (ID ids) of all the nodes participating in (including) the overlay network 10. When the nodes are arranged in a ring shape, they indicate a node having an id adjacent in the clockwise direction and a node having an id adjacent in the counterclockwise direction from the id of the node 20-t itself. In other words, the subsequent adjacent node of the node 20-t indicates the node that first encounters clockwise from the node 20-t on the ring (having the closest node ID except for the node 20-t itself). The preceding adjacent node refers to a node that first encounters counterclockwise from the node 20-t on the ring (having a node ID farthest from the node 20-t itself).

隣接テーブル52-tのエントリsuccessorに保持される後続隣接ノード情報は、後続隣接ノード(successor node)のID id及びIPアドレスaddrを含む。一方、隣接テーブル52-tのエントリpredecessorに保持される先行隣接ノード情報は、先行隣接ノード(predecessor node)のID id及びIPアドレスaddrを含む。   The subsequent adjacent node information held in the entry successor of the adjacent table 52-t includes the ID id and IP address addr of the subsequent adjacent node (successor node). On the other hand, the preceding adjacent node information held in the entry predecessor of the adjacent table 52-t includes the ID id and the IP address addr of the preceding adjacent node (precessor node).

なお、以下の説明では、後続隣接ノードをsuccessorまたはsuccessorノードと呼び、先行隣接ノードをpredecessorまたはpredecessorノードと呼ぶこともある。また、エントリsuccessorに保持されるid及びaddrを、それぞれ、successor.id及びsuccessor.addrと表記し、エントリpredecessorに保持されるid及びaddrを、それぞれ、predecessor.id及びpredecessor.addrと表記することもある。また、エントリsuccessorに保持される情報(後続隣接ノード情報)全体をsuccessor、エントリpredecessorに保持される情報(先行隣接ノード情報)全体をpredecessorと表記することもある。   In the following description, the subsequent adjacent node may be called a successor or successor node, and the preceding adjacent node may be called a predecessor or predecessor node. Also, id and addr held in the entry successor are respectively set to successor. id and successor. It is written as addr, and id and addr held in the entry predecessor are respectively predecessor. id and predecessor. Sometimes referred to as addr. Further, the entire information (following adjacent node information) held in the entry successor may be expressed as successor, and the entire information (previous adjacent node information) held in the entry predecessor may be expressed as predecessor.

スキップテーブル53-tは、ルーティングをより少ないホップ数の問い合わせ転送で可能にするためのショートカットパスを記述したテーブルである。スキップテーブル53-tは、非特許文献5,6に記載されているフィンガーテーブル(fingertable)に相当する。   The skip table 53-t is a table describing a shortcut path for enabling routing by inquiry transfer with a smaller number of hops. The skip table 53-t corresponds to a finger table described in Non-Patent Documents 5 and 6.

スキップテーブル53-tは、iを変数とすると、i=0からi=m−1までの各i(i={0,...m−1})に関して、ショートカットパスの情報を保持する。ショートカットパスの情報は、skip[i].intervalstart、skip[i].intervalend、skip[i].successor.id及びskip[i].successor.addrから構成される。 The skip table 53-t holds shortcut path information for each i (i = {0,... M−1}) from i = 0 to i = m−1, where i is a variable. The shortcut path information is skip [i]. interval start , skip [i]. interval end , skip [i]. successor. id and skip [i]. successor. It is composed of addr.

skip[i].intervalstart、skip[i].intervalend、skip[i].successor.id及びskip[i].successor.addrの各情報は、以下の生成規則に基づいて生成される。 skip [i]. interval start , skip [i]. interval end , skip [i]. successor. id and skip [i]. successor. Each information of addr is generated based on the following generation rules.

skip[i].intervalstart
=(id+2i)mod 2m
skip[i].intervalend
=skip[(i+1)mod m].intervalstart
skip[i].successor.id
=オーバーレイネットワーク10に参加している全てのノードのidを昇順に整列してリング状に並べたときの、ID skip[i].intervalstartから時計回りで当該ID skip[i].intervalstartに最も近いIDを持つノードのid(ノードID)(後述する図5参照)
但し、skip[0].successor.idは、ノード20-t自身のsuccessor(後続隣接ノード)となるノードのノードID(successor.id)であることに注意。したがって、隣接テーブル52-tを正しく維持していれば、スキップテーブル53-tの少なくともこのショートカットパス(skip[0].successor.id)は正しく維持されることになる。
skip [i]. interval start
= (Id + 2 i ) mod 2 m
skip [i]. interval end
= Skip [(i + 1) mod m]. interval start
skip [i]. successor. id
= ID skip [i] .id when the ids of all the nodes participating in the overlay network 10 are arranged in an ascending order and arranged in a ring shape. interval start the ID clockwise from skip [i]. id of the node having the ID closest to the interval start (node ID) (see FIG. 5 described later)
However, skip [0]. successor. Note that id is the node ID (successor.id) of the node that is the successor (subsequent adjacent node) of the node 20-t itself. Therefore, if the adjacent table 52-t is correctly maintained, at least the shortcut path (skip [0] .successor.id) of the skip table 53-t is correctly maintained.

skip[i].successor.addr
=id(ノードID)がskip[i].successor.idのノードのアドレス(IPアドレス)
但し、skip[0].successor.addrは、ノード20-t自身のsuccessorとなるノードのアドレスであることに注意。したがって、隣接テーブル52-tを正しく維持していれば、スキップテーブル53-tの少なくともこのショートカットパス(skip[0].successor.addr)は正しく維持されることになる。
skip [i]. successor. addr
= Id (node ID) is skip [i]. successor. id node address (IP address)
However, skip [0]. successor. Note that addr is the address of the node that is the successor of the node 20-t itself. Therefore, if the adjacent table 52-t is correctly maintained, at least the shortcut path (skip [0]. Successor.addr) of the skip table 53-t is correctly maintained.

図5は、skip[i].intervalstartとskip[i].successor.idとの関係を示す。skip[i].intervalstartは、skip[i].successor.idを決定する際のリング上の基準位置を示す基準位置情報である。 FIG. 5 shows skip [i]. interval start and skip [i]. successor. Indicates the relationship with id. skip [i]. The interval start is skip [i]. successor. This is reference position information indicating a reference position on the ring when id is determined.

再び図1を参照すると、当該図1には、オーバーレイネットワーク10に参加しているノードID 111のノード20-7(t=7)が保持する構成情報50-7(t=7)の例が示されている。   Referring to FIG. 1 again, FIG. 1 shows an example of configuration information 50-7 (t = 7) held by the node 20-7 (t = 7) of the node ID 111 participating in the overlay network 10. It is shown.

図1において、ノード20-7の構成情報50-7に含まれているノード情報51-7(t=7)は、
addr:ノード20-7のアドレス(IPv4アドレス192.168.0.1)
id:ノード20-7のノードID(111)
m:オーバーレイネットワーク10のハッシュ空間を表すビット数(3)
から構成される。
In FIG. 1, node information 51-7 (t = 7) included in the configuration information 50-7 of the node 20-7 is
addr: address of the node 20-7 (IPv4 address 192.168.0.1)
id: Node ID of the node 20-7 (111)
m: Number of bits representing the hash space of the overlay network 10 (3)
Consists of

図1において、ノード20-7の構成情報50-7に含まれている隣接テーブル52-7(t=7)は、
successor.{id,addr}:ノード20-7の後続隣接ノード(successor)のノードID及びアドレス(000及び10.0.1.1)
predecessor.{id,addr}:ノード20-7の先行隣接ノード(predecessor)のノードID及びアドレス(110及び192.168.100.3)
を保持する。
In FIG. 1, the adjacent table 52-7 (t = 7) included in the configuration information 50-7 of the node 20-7 is
successor. {Id, addr}: Node ID and address (000 and 10.0.1.1) of the subsequent adjacent node (successor) of the node 20-7
precessor. {Id, addr}: Node ID and address (110 and 192.168.100.3) of the preceding adjacent node (predecessor) of the node 20-7
Hold.

図1において、ノード20-7の構成情報50-7に含まれているスキップテーブル53--7(t=7)は、i={0...m−1}={0...2}に関して、
skip[i].intervalstart:(id+2i)mod 2m
skip[i].intervalend:skip[(i+1) mod m].intervalstart
skip[i].successor.{id,addr}:skip[i].intervalstartに最も近いノードIDを持つノードのノードID及びアドレス
を保持する。
In FIG. 1, the skip table 53--7 (t = 7) included in the configuration information 50-7 of the node 20-7 is i = {0 ... m-1} = {0 ... 2 }
skip [i]. interval start : (id + 2 i ) mod 2 m
skip [i]. interval end : skip [(i + 1) mod m]. interval start
skip [i]. successor. {Id, addr}: skip [i]. The node ID and address of the node having the node ID closest to the interval start are held.

また、図1には、構成情報50-7に含まれるスキップテーブル53-7に保持されているショートカットパスの情報によって示される、ノード20-7からノードIDがそれぞれskip[0].successor.id=000,skip[1].successor.id=001及びskip[2].successor.id=011のノード(つまりノード20-0,20-1及び20-3)へのショートカットパス101,102及び103も示されている。   Further, in FIG. 1, the node IDs from the node 20-7 to the skip [0].., Indicated by the shortcut path information held in the skip table 53-7 included in the configuration information 50-7, respectively. successor. id = 000, skip [1]. successor. id = 001 and skip [2]. successor. Also shown are shortcut paths 101, 102 and 103 to nodes with id = 011 (ie nodes 20-0, 20-1 and 20-3).

<オーバーレイネットワークの構築・維持>
次に、オーバーレイネットワーク10を構築・維持する方法について説明する。
まず、あるノードJoinerがオーバーレイネットワーク10に参加する際に、当該ノードJoinerが実行する処理(主として隣接テーブルの構築とスキップテーブルの初期化)の概要について説明する。ここでは、ノードJoinerは、ノードIDが010または101のノード(つまりノード20-2または20-5)であるものとする。
<Construction and maintenance of overlay network>
Next, a method for constructing and maintaining the overlay network 10 will be described.
First, an outline of processing (mainly construction of an adjacent table and initialization of a skip table) executed by a node Joiner when a node Joiner joins the overlay network 10 will be described. Here, it is assumed that the node Joiner is a node having a node ID of 010 or 101 (that is, the node 20-2 or 20-5).

1.隣接テーブルの構築
処理1a)
ノードJoiner(の探索部29)は、既にオーバーレイネットワーク10に参加している任意のノードIntroducerに対し、当該ノードIntroducerのアドレス(Introducer.addr)を用いて、リング(Chordリング)上で当該Joinerのsuccessor(後続隣接ノード)となるノードSuccessorのノードID(Successor.id)及びアドレス(Successor.addr)を問い合わせる。ここでは、ノードIntroducerは、ノード20-0,20-1,20-3,20-4,20-6または20-7であるものとする。
1. Adjacency table construction process 1a)
The node Joiner (the search unit 29), for any node Introducer already participating in the overlay network 10, uses the address of the node Introducer (Introducer.addr) and uses the Joiner on the Ring (Cord ring). It inquires about the node ID (Successor.id) and address (Successor.addr) of the node Successor that is the successor (subsequent adjacent node). Here, the node Introducer is assumed to be the node 20-0, 20-1, 20-3, 20-4, 20-6 or 20-7.

なお、以下の説明では、ノードをAとすると、ノードAのノードIDをA.id、アドレスをA.addrと表記し、ノードAのノードID(A.id)及びアドレス(A.addr)を、A.{id,addr}と表記することもある。したがって、例えばノードSuccessorのノードID及びアドレスは、Successor.{id,addr}のように表すことができる。   In the following description, if the node is A, the node ID of node A is A.D. id, address A. The node ID (A.id) and address (A.addr) of node A are represented as A.addr. {Id, addr} may also be written. Therefore, for example, the node ID and address of the node Successor are the successor. It can be expressed as {id, addr}.

ノードIntroducerは、ノードJoinerのノードID(Joiner.id)を入力として、自身のスキップテーブル53-t(以下、スキップテーブル53-t(J)と表現する)の更新処理を伴う逐次問い合わせ(再帰的ルーティング:RecursiveRouting)でのsuccessor(後続隣接ノード)参照処理を行う。このsuccessor参照処理については後述する。そしてノードIntroducerは、リング上でJoiner.idに最も近いノードIDを持ったノード(以下、ノードSuccessorと称する)のノードID(Successor.id)及びアドレス(Successor.addr)を、ノードJoinerに出力(通知)する。このsuccessor参照処理を行うノードIntroducerは、後述するノードNodeに相当する。また、Joiner.id及びSuccessor.{id,addr}は、それぞれ後述するTarget.id及びTargetSuccessor.{id,addr}に相当する。   The node introducer receives the node ID (Joiner.id) of the node Joiner as an input, and sequentially inquires (recursively) with the update process of its own skip table 53-t (hereinafter referred to as the skip table 53-t (J)). A successor (subsequent adjacent node) reference process in routing: Recursive Routing is performed. The successor reference process will be described later. Node Introducer then joiner. The node ID (Successor.id) and the address (Successor.addr) of the node having the node ID closest to the id (hereinafter referred to as node successor) are output (notified) to the node Joiner. The node Introducer that performs the successor reference process corresponds to a node Node described later. Also, Joiner. id and Successor. {Id, addr} is a Target. id and Target Successor. It corresponds to {id, addr}.

なお、ノードIntroducerのアドレス(Introducer.addr)は、ノードJoinerに対して事前に与えられるものとする。ここでは、ノードIntroducerのアドレスは、ユーザがノードJoinerの入出力機構25を操作することにより、当該ノードJoinerに与えられる。   It is assumed that the address of the node Introducer (Introducer.addr) is given in advance to the node Joiner. Here, the address of the node introducer is given to the node joiner when the user operates the input / output mechanism 25 of the node joiner.

処理1b)
ノードJoiner(の探索部29)は、ノードSuccessorに対し、当該ノードSuccessorのアドレス(Successor.addr)を用いて、自身が参加する前の状態において当該ノードSuccessorのpredecessor(先行隣接ノード)となるノードPredecessorのノードID(Predecessor.id)及びアドレス(Predecessor.addr)を問い合わせる。
Process 1b)
The node Joiner (the search unit 29) uses the address of the node successor (Successor.addr) for the node Successor and becomes a predecessor (preceding adjacent node) of the node Successor in a state before the node joins itself. Queries the node ID (Predecessor.id) and address (Predecessor.addr) of the Precessor.

処理1c)
ノードJoiner(のテーブル管理部28)は、ノードSuccessorに対して当該ノードJoinerとの接続(リング上での接続)を要求する。
ノードSuccessor(のテーブル管理部28)は、自身のpredecessorとして、ノードPredecessorからノードJoinerへの切り替えを自身の隣接テーブル52-t(隣接テーブル52-t(S))上で行う。またノードSuccessorは、自身のスキップテーブル53-t(以下、スキップテーブル53-t(S))のうち、ノードJoinerの追加により影響を受けるエントリの内容(ノードID及びアドレス)をJoiner(ノードJoinerのノードID及びアドレス)に書き換える。
Process 1c)
The node Joiner (the table management unit 28) requests the node Successor to connect to the node Joiner (connection on the ring).
The node successor (the table management unit 28) performs switching from the node Predecessor to the node Joiner on its own adjacent table 52-t (adjacent table 52-t (S)) as its own predecessor. In addition, the node Successor displays the contents (node ID and address) of the entry affected by the addition of the node Joiner in its own skip table 53-t (hereinafter, skip table 53-t (S)). Node ID and address).

処理1d)
ノードJoiner(のテーブル管理部28)は、ノードPredecessorに対して当該ノードJoinerとの接続(リング上での接続)を要求する。
Process 1d)
The node Joiner (its table management unit 28) requests the node Predecessor to connect to the node Joiner (connection on the ring).

ノードPredecessor(のテーブル管理部28)は、自身のsuccessorとして、ノードSuccessorからノードJoinerへの切り替えを自身の隣接テーブル52-t(隣接テーブル52-t(P))上で行う。またノードPredecessorは、自身のスキップテーブル53-t(スキップテーブル53-t(P))のうち、ノードJoinerの追加により影響を受けるエントリの内容(ノードID及びアドレス)をJoiner(ノードJoinerのノードID及びアドレス)に書き換える。   The node Predecessor (the table management unit 28) performs switching from the node Successor to the node Joiner on its own adjacent table 52-t (adjacent table 52-t (P)) as its own successor. Also, the node Predecessor indicates the contents (node ID and address) of the entry affected by the addition of the node Joiner in its own skip table 53-t (skip table 53-t (P)) as Joiner (node ID of the node Joiner). And address).

処理1e)
ノードJoiner(のテーブル管理部28)は、ノードSuccessorに対して当該ノードSuccessorのスキップテーブル53-t(S)の通知を要求する。
Process 1e)
The node Joiner (the table management unit 28) requests the node Successor to notify the skip table 53-t (S) of the node Successor.

処理1f)
ノードJoiner(のテーブル管理部28)は、ノードPredecessorに対して当該ノードPredecessorのスキップテーブル53-t(P)の通知を要求する。
Process 1f)
The node Joiner (the table management unit 28) requests the node Predecessor to notify the skip table 53-t (P) of the node Predecessor.

2.スキップテーブルの初期化
ノードJoiner(のテーブル管理部28)は、自身のスキップテーブル53-t(J)を構築(初期化)する。この時点においてノードJoinerは、スキップテーブル53-t(J)を使用する訳ではない。このため、この時点においてスキップテーブル53-t(J)は完全である必要はないことに注意する。ここで、スキップテーブル53-t(J)が完全とは、当該テーブル53-t(J)のm個のエントリの示すskip[i…m−1].successorが、オーバーレイネットワーク10に参加している全ノードのうちでskip[i…m−1].intervalstartに最も近いノードであることをいう。
2. Initialization of Skip Table The node Joiner (its table management unit 28) constructs (initializes) its own skip table 53-t (J). At this time, the node Joiner does not use the skip table 53-t (J). For this reason, note that the skip table 53-t (J) need not be complete at this point. Here, the skip table 53-t (J) is complete means that skip [i... M−1] .m indicated by m entries of the table 53-t (J). The successor skip [i... m−1]... of all nodes participating in the overlay network 10. It means the node closest to the interval start .

本実施形態においてノードJoiner(のテーブル管理部28)は、スキップテーブル53-t(J)のm個のエントリの保持するskip[i…m−1].successorのノードID及びアドレスとして、ノードSuccessor及びPredecessorよりそれぞれ通知を受けたスキップテーブル53-t(S)及び53-t(P)に保持されているノードのノードID及びアドレスの中から、skip[i…m−1].intervalstartに最も近いノードのノードID及びアドレスを選択する。 In the present embodiment, the node Joiner (the table management unit 28) determines skip [i... M−1] .m that holds m entries of the skip table 53-t (J). As the node ID and address of the successor, skip [] is selected from the node IDs and addresses of the nodes held in the skip tables 53-t (S) and 53-t (P) respectively received from the node Successor and Predecessor. i ... m-1]. Select the node ID and address of the node closest to interval start .

ノードJoinerがオーバーレイネットワーク10に参加した後は、当該ノードJoinerは自身のsuccessor(後続隣接ノード)及びpredecessor(先行隣接ノード)とのリング上でのリンク(接続)を維持する。   After the node Joiner joins the overlay network 10, the node Joiner maintains a link (connection) on the ring with its successor (following adjacent node) and predecessor (preceding adjacent node).

もし、ノードJoinerのsuccessorが、オーバーレイネットワーク10から何らかの要因で離脱した場合、ノードJoinerは、その離脱によって新たにsuccessorとなるノードとのリンクを直ちに形成するものとする。同様に、もし、ノードJoinerのpredecessorが、オーバーレイネットワーク10から何らかの要因で離脱した場合には、ノードJoinerは、その離脱によって新たにpredecessorとなるノードとのリンクを直ちに形成するものとする。これを実現する方法については、非特許文献5及び6に示されているため、説明を省略する。   If the node Joiner's successor leaves the overlay network 10 for some reason, the node Joiner immediately forms a link with the node that will be the new successor due to the departure. Similarly, if the node Joiner's predecessor leaves the overlay network 10 for some reason, the node Joiner immediately forms a link with the node that will become the new predecessor due to the departure. Since the method for realizing this is shown in Non-Patent Documents 5 and 6, description thereof will be omitted.

3.ノードJoinerでの処理の詳細
次に、ノードJoiner(つまり新たにオーバーレイネットワーク10に参加するノード)でのテーブル初期化処理(隣接テーブルの構築及びスキップテーブルの初期化のための処理)について、図6A及び6Bのフローチャートを参照して説明する。
3. Details of Processing in Node Joiner Next, table initialization processing (processing for building an adjacent table and initializing a skip table) in the node Joiner (that is, a node newly participating in the overlay network 10) will be described with reference to FIG. 6A. And 6B will be described.

まずノードJoiner(の探索部29)は、以下の問い合わせ(ステップS2)のための入力となるノードIDとして、当該ノードJoiner自身のノードID(Joiner.id)を設定する(ステップS1)。   First, the node Joiner (the search unit 29) sets the node ID (Joiner.id) of the node Joiner itself as a node ID to be input for the following inquiry (Step S2) (Step S1).

次にノードJoiner(の探索部29)は、Joiner.idを入力として、既にオーバーレイネットワーク10に参加している任意のノードIntroducerに対し、リング(Chordリング)上で当該Joinerのsuccessor(後続隣接ノード)となるノードSuccessorのノードID及びアドレス(Successor.{id,addr})を問い合わせる(ステップS2)。このステップS2は上記処理1aに相当する。   Next, the node Joiner (the search unit 29) determines that Joiner. With respect to an arbitrary node Introducer already participating in the overlay network 10 with the id as an input, the node ID and address (Successor. { id, addr}) (step S2). This step S2 corresponds to the process 1a.

ノードIntroducer(の探索部29)は、ノードJoinerからの問い合わせを受けて、ノードSuccessorのノードID及びアドレス(Successor.{id,addr})を、当該問い合わせに対する応答としてノードJoinerに出力する(ステップS3)。このノードIntroducerでは、ノードJoinerからの問い合わせに対する応答のために、再帰的ルーティングでのsuccessor参照処理が行われる。このsuccessor参照処理については図10A及び10Bのフローチャートを参照して後述する。   In response to the inquiry from the node Joiner, the node Introducer (the search unit 29) outputs the node ID and address (Successor. {Id, addr}) of the node Successor to the node Joiner as a response to the inquiry (Step S3). ). In this node introducer, a successor reference process in recursive routing is performed in order to respond to an inquiry from the node joiner. The successor reference process will be described later with reference to the flowcharts of FIGS. 10A and 10B.

次にノードJoiner(の探索部29)は、ノードIntroducerからの応答によって示されるノードSuccessorに対し、自身が参加する前の状態において当該ノードSuccessorのpredecessorとなるノードPredecessorのノードID及びアドレス(Predecessor.{id,addr})を問い合わせる(ステップS4)。このステップS4は上記処理1bに相当する。   Next, the node Joiner (the search unit 29), with respect to the node Successor indicated by the response from the node Introducer, the node Predecessor node ID and the address (Predecessor. {Id, addr}) is inquired (step S4). This step S4 corresponds to the process 1b.

ノードSuccessor(の探索部29)は、ノードJoinerからの問い合わせを受けて、当該ノードSuccessorのpredecessorとなるノードPredecessorのノードID及びアドレス(Predecessor.{id,addr})を、当該問い合わせに対する応答としてノードJoinerに出力する(ステップS5)。   In response to the inquiry from the node Joiner, the node Successor (the search unit 29) receives the node ID and address (Predecessor. {Id, addr}) of the node Precessor that is the predecessor of the node Successor as a response to the inquiry. It outputs to Joiner (step S5).

次にノードJoiner(のテーブル管理部28)は、以下の要求(ステップS7)のための入力として、当該ノードJoiner自身のノードID及びアドレス(Joiner.{id,addr})を設定する(ステップS6)。   Next, the node Joiner (the table management unit 28) sets the node ID and address (Joiner. {Id, addr}) of the node Joiner itself as an input for the following request (Step S7) (Step S6). ).

そしてノードJoiner(のテーブル管理部28)は、Joiner.{id,addr}を入力として、ノードSuccessorに対して当該ノードJoinerとの接続を要求する(ステップS7)。このステップS7は上記処理1c)に相当する。ノードSuccessorは、このノードJoinerからの要求を受けて、後述する接続処理(図7参照)を実行する。   The node Joiner (the table management unit 28 thereof) then joins Joiner. Using {id, addr} as an input, the node Successor is requested to connect to the node Joiner (step S7). This step S7 corresponds to the above process 1c). In response to the request from the node Joiner, the node Successor executes connection processing (see FIG. 7) described later.

次にノードJoiner(のテーブル管理部28)は、以下の要求(ステップS9)のための入力として、当該ノードJoiner自身のノードID及びアドレス(Joiner.{id,addr})を設定する(ステップS8)。   Next, the node Joiner (the table management unit 28) sets the node ID and address (Joiner. {Id, addr}) of the node Joiner as an input for the following request (Step S9) (Step S8). ).

そしてノードJoiner(のテーブル管理部28)は、Joiner.{id,addr}を入力として、ノードPredecessorに対して当該ノードJoinerとの接続を要求する(ステップS9)。このステップS9は上記処理1d)に相当する。ノードPredecessorは、このノードJoinerからの要求を受けて、後述する接続処理(図8参照)を実行する。   The node Joiner (the table management unit 28 thereof) then joins Joiner. Using {id, addr} as an input, the node Predecessor is requested to connect to the node Joiner (step S9). This step S9 corresponds to the above process 1d). In response to the request from the node Joiner, the node Predecessor executes connection processing (see FIG. 8) described later.

次にノードJoiner(のテーブル管理部28)は、自身の隣接テーブル52-t(J)上で、自身のsuccessor(Joiner.successor)のノードID及びアドレス(Joiner.successor.{id,addr})として、ノードSuccessorのノードID及びアドレス(Successor.{id,addr})を設定する(ステップS10)。このステップS10において、ノードJoinerは、隣接テーブル52-t(J)上で、自身のpredecessor(Joiner.predecessor)のノードID及びアドレス(Joiner.predecessor.{id,addr})として、ノードPredecessorのノードID及びアドレス(Predecessor.{id,addr})を設定する。なお、以下の説明では、Joiner.successor.{id,addr}をJoiner.successorと表現することもある。   Next, the node Joiner (the table management unit 28), on its own adjacent table 52-t (J), the node ID and address (Joiner. Successor. {Id, addr}) of its successor (Joiner. Successor) The node ID and address (Successor. {Id, addr}) of the node Successor are set (step S10). In step S10, the node Joiner uses the node ID and address (Joiner. Predecessor. {Id, addr}) of its predecessor (Joiner. Predecessor) on the adjacency table 52-t (J). ID and address (Predecessor. {Id, addr}) are set. In the following description, Joiner. successor. {Id, addr} to Joiner. Sometimes expressed as successor.

次にノードJoiner(のテーブル管理部28)は、ノードSuccessorに対して、当該ノードSuccessorのスキップテーブル53-t(S)の通知を要求する(ステップS11)。つまりノードJoinerはステップS11において、ノードSuccessorに対して、当該ノードSuccessorのスキップテーブル53-t(S)を問い合わせる。このステップS11は上記処理1e)に相当する。以下の説明では、ノードSuccessorのスキップテーブル53-t(S)を、Successor.skipと表現することもある。   Next, the node Joiner (the table management unit 28) requests the node Successor to notify the skip table 53-t (S) of the node Successor (step S11). That is, in step S11, the node Joiner inquires of the node Successor about the skip table 53-t (S) of the node Successor. This step S11 corresponds to the above process 1e). In the following description, the skip table 53-t (S) of the node Successor will be referred to as Successor. Sometimes expressed as skip.

ノードSuccessor(のテーブル管理部28)は、ノードJoinerからの問い合わせに応じて、当該ノードSuccessorのSuccessor.skipを、当該問い合わせに対する応答としてノードJoinerに出力する(ステップS12)。これによりノードJoinerは、ノードSuccessorのSuccessor.skipを取得することができる。   In response to an inquiry from the node Joiner, the node Successor (the table management unit 28 thereof) determines the successor of the node Successor. The skip is output to the node Joiner as a response to the inquiry (step S12). As a result, the node Joiner becomes the successor. Of the node Successor. A skip can be acquired.

次にノードJoiner(のテーブル管理部28)は、ノードPredecessorに対して、当該ノードPredecessorのスキップテーブル53-t(P)を問い合わせる(ステップS13)。このステップS13は上記処理1f)に相当する。以下の説明では、ノードPredecessorのスキップテーブル53-t(P)を、Predecessor.skipと表現することもある。   Next, the node Joiner (the table management unit 28) inquires of the node Predecessor about the skip table 53-t (P) of the node Predecessor (Step S13). This step S13 corresponds to the process 1f). In the following description, the skip table 53-t (P) of the node Predecessor is referred to as Predecessor. Sometimes expressed as skip.

ノードPredecessor(のテーブル管理部28)は、ノードJoinerからの問い合わせに応じて、当該ノードPredecessorのPredecessor.skipを、当該問い合わせに対する応答としてノードJoinerに出力する(ステップS14)。これによりノードJoinerは、ノードPredecessorのPredecessor.skipを取得することができる。   In response to the inquiry from the node Joiner, the node Predecessor (the table management unit 28 thereof) determines the Predecessor. The skip is output to the node Joiner as a response to the inquiry (step S14). As a result, the node Joiner makes a predecessor. Of the node Predecessor. A skip can be acquired.

次にノードJoiner(のテーブル管理部28)は、以下のスキップテーブル初期化処理(ステップS16)のための入力として、当該ノードJoiner自身のノードID及びアドレス(Joiner.{id,addr})と、隣接テーブル52-t(J)における自身のsuccessorのエントリの情報(Joiner.successor)とを設定する(ステップS15)。つまりノードJoinerは、スキップテーブル初期化処理のための入力として、Joiner.{id,addr,successor}を設定する。またノードJoinerは、ステップS15において、スキップテーブル初期化処理のための入力として、ステップS11及び13で取得した、ノードSuccessorのスキップテーブル53-t(S)及びノードPredecessorのスキップテーブル53-t(P)(つまりSuccessor.skip及びPredecessor.skip)を設定する。   Next, the node Joiner (the table management unit 28) receives the node ID and address (Joiner. {Id, addr}) of the node Joiner as an input for the following skip table initialization process (step S16), Information on the entry of its own successor (Joiner. Successor) in the adjacency table 52-t (J) is set (step S15). In other words, the node Joiner receives the Joiner. {Id, addr, successor} is set. In step S15, the node Joiner receives the skip table 53-t (S) of the node successor and the skip table 53-t (P) of the node Predecessor acquired in steps S11 and S13 as inputs for the skip table initialization process. ) (That is, Successor.skip and Predecessor.skip).

そしてノードJoiner(のテーブル管理部28)は、上記入力Joiner.{id,addr,successor},Successor.skip及びPredecessor.skipに基づき、自身のスキップテーブル53-t(J)(つまりJoiner.skip)を初期化するための処理(スキップテーブル初期化処理)を実行する(ステップS16)。このステップS16は上記処理2に相当する。ステップS16(スキップテーブル初期化処理)の詳細については図9のフローチャートを参照して後述する。   Then, the node Joiner (the table management unit 28) receives the input Joiner. {Id, addr, successor}, Successor. skip and Predecessor. Based on the skip, a process (skip table initialization process) for initializing its own skip table 53-t (J) (that is, Joiner.skip) is executed (step S16). This step S16 corresponds to the above process 2. Details of step S16 (skip table initialization processing) will be described later with reference to the flowchart of FIG.

<ノードSuccessorでの接続処理>
次に新たにオーバーレイネットワーク10に参加するノードJoinerからの接続要求に応じてノードSuccessor(後続隣接ノード)で行われる接続処理の手順について、図7のフローチャートを参照して説明する。
<Connection process in node successor>
Next, a procedure of connection processing performed in the node successor (subsequent adjacent node) in response to a connection request from a node Joiner newly participating in the overlay network 10 will be described with reference to the flowchart of FIG.

ノードJoinerからの接続要求は、当該ノードJoinerのノードID及びアドレス(Joiner.{id,addr})を含む。ノードSuccessor(のテーブル管理部28)は、このJoiner.{id,addr}を入力として、以下の手順で接続処理を実行する。   The connection request from the node Joiner includes the node ID and address (Joiner. {Id, addr}) of the node Joiner. The node Successor (the table management unit 28 of the node Successor) has the Joiner. With {id, addr} as an input, connection processing is executed according to the following procedure.

まずノードSuccessorは、自身の隣接テーブル52-t(S)のpredecessor.id(つまりSuccessor.predecessor.id)及びpredecessor.addr(つまりSuccessor.predecessor.addr)を、それぞれJoiner.id及びJoiner.addrに書き換える(ステップS21)。   First, the node Successor has a predecessor. Of its own adjacency table 52-t (S). id (ie Successor.predecessor.id) and predecessor. addr (that is, Successor.precessor.addr) is assigned to Joiner. id and Joiner. Rewrite to addr (step S21).

次にノードSuccessorは、変数i(i={0...m−1})に関して、Joiner.idが、リング上で範囲[Successor.skip[i].intervalstart,Successor.skip[i].successor.id)に収まるかを判定する(ステップS22)。ここで、x=Joiner.id、y=Successor.skip[i].intervalstart、z=Successor.skip[i].successor.idと置くと、範囲[y,z)における“[”は、当該範囲[y,z)にyを含むことを表し、“)”は、当該範囲[y,z)にzを含まないことを表す。例えば、y=2(2進数表記で010),z=5(2進数表記で101)とすると、[y,z)の範囲(つまり[2,5)の範囲)に収まるxの値は、{2,3,4}(2進数表記で{010,011,100})である。 Next, the node Successor makes Joiner.com with respect to the variable i (i = {0... M−1}). id is in the range [Successor. skip [i]. interval start , Successor. skip [i]. successor. id) is determined (step S22). Here, x = Joiner. id, y = Successor. skip [i]. interval start , z = Successor. skip [i]. successor. When it is set as id, “[” in the range [y, z) represents that y is included in the range [y, z), and “)” does not include z in the range [y, z). Represents. For example, if y = 2 (010 in binary notation) and z = 5 (101 in binary notation), the value of x that falls within the range of [y, z) (that is, the range of [2, 5)] is {2, 3, 4} ({010, 011, 100} in binary notation).

もし、ステップS22の判定がYesであるならば、ノードSuccessorは、現在のSuccessor.skip[i].successor.idよりも、Joiner.idの方がリング上でSuccessor.skip[i].intervalstartに近いと判断する。つまり、ノードSuccessorは、ノードJoinerがオーバーレイネットワーク10に参加したことにより、スキップテーブル53-t(S)のエントリSuccessor.skip.[i]が影響を受けるものと判断する。そこでノードSuccessorは、エントリSuccessor.skip.[i]内のSuccessor.skip.[i].successor.id及びSuccessor.skip.[i].successor.addrを、それぞれJoiner.id及びJoiner.addrに書き換える(ステップS23)。 If the determination in step S22 is Yes, the node Successor is the current Successor. skip [i]. successor. Joiner. id is the successor. skip [i]. Judged to be close to interval start . That is, the node Successor has the entry Successor. Of the skip table 53-t (S) when the node Joiner participates in the overlay network 10. skip. Judge that [i] is affected. Therefore, the node Successor has the entry Successor. skip. Successor. In [i]. skip. [I]. successor. id and Successor. skip. [I]. successor. addr, Joiner. id and Joiner. Rewrite to addr (step S23).

一方、ステップS22の判定がNoであるならば、ノードSuccessorは、現在のSuccessor.skip[i].successor.idの方が、Joiner.idよりもリング上でSuccessor.skip[i].intervalstartに近いと判断する。つまり、ノードSuccessorは、ノードJoinerがオーバーレイネットワーク10に参加しても、スキップテーブル53-t(S)のエントリSuccessor.skip.[i]は影響を受けないものと判断する。この場合、ノードSuccessorはステップS23(つまりスキップテーブル53-t(S)の書き換え処理)をスキップする。 On the other hand, if the determination in step S22 is No, the node Successor is the current Successor. skip [i]. successor. id is Joiner. Successor. on the ring than id. skip [i]. Judged to be close to interval start . That is, even if the node Joiner participates in the overlay network 10, the node Successor has the entry Successor.com in the skip table 53-t (S). skip. [I] is determined not to be affected. In this case, the node Successor skips step S23 (that is, rewrite processing of the skip table 53-t (S)).

ノードSuccessorは、上記ステップS22を、i=0からi=m−1までの全てのiについて繰り返す。   The node Successor repeats step S22 for all i from i = 0 to i = m−1.

<ノードPredecessorでの接続処理>
次に新たにオーバーレイネットワーク10に参加するノードJoinerからの接続要求に応じてノードPredecessor(先行隣接ノード)で行われる接続処理について、図8のフローチャートを参照して説明する。
<Connection process at node Predecessor>
Next, connection processing performed in the node Predecessor (preceding adjacent node) in response to a connection request from a node Joiner newly participating in the overlay network 10 will be described with reference to the flowchart of FIG.

ノードJoinerからの接続要求は、当該ノードJoinerのノードID及びアドレス(Joiner.{id,addr})を含む。ノードPredecessor(のテーブル管理部28)は、このJoiner.{id,addr}を入力として、以下の手順で接続処理を実行する。   The connection request from the node Joiner includes the node ID and address (Joiner. {Id, addr}) of the node Joiner. The node Predecessor (the table management unit 28 thereof) is the Joiner. With {id, addr} as an input, connection processing is executed according to the following procedure.

まずノードPredecessorは、自身の隣接テーブル52-t(P)のsuccessor.id(つまりPredecessor.successor.id)及びpredecessor.addr(つまりPredecessor.successor.addr)を、それぞれJoiner.id及びJoiner.addrに書き換える(ステップS31)。   First, the node Predecessor has a successor. Of its own adjacency table 52-t (P). id (ie Predecessor.successor.id) and predecessor. addr (that is, Predecessor.successor.addr) is assigned to Joiner. id and Joiner. Rewrite to addr (step S31).

次にノードPredecessorは、変数i(i={0...m−1})に関して、Joiner.idが、リング上で範囲[Predecessor.skip[i].intervalstart,Predecessor.skip[i].successor.id)に収まるかを判定する(ステップS32)。 Next, the node Predecessor sets Joiner. For the variable i (i = {0... M−1}). id is in the range [Predecessor. skip [i]. interval start , Predecessor. skip [i]. successor. id) is determined (step S32).

もし、ステップS32の判定がYesであるならば、ノードPredecessorは、現在のPredecessor.skip[i].successor.idよりも、Joiner.idの方がリング上でPredecessor.skip[i].intervalstartに近いと判断する。つまり、ノードPredecessorは、ノードJoinerがオーバーレイネットワーク10に参加したことにより、スキップテーブル53-t(P)のエントリPredecessor.skip.[i]が影響を受けるものと判断する。そこでノードPredecessorは、エントリPredecessor.skip.[i]内のPredecessor.skip.[i].successor.id及びPredecessor.skip.[i].successor.addrを、それぞれJoiner.id及びJoiner.addrに書き換える(ステップS33)。 If the determination in step S32 is Yes, the node Predecessor is the current Precessor. skip [i]. successor. Joiner. id is predecessor. skip [i]. Judged to be close to interval start In other words, the node Predecessor has the entry Precessor. skip. Judge that [i] is affected. Thus, the node Predecessor has an entry Predecessor. skip. Predecessor. In [i]. skip. [I]. successor. id and Predecessor. skip. [I]. successor. addr, Joiner. id and Joiner. Rewrite to addr (step S33).

一方、ステップS32の判定がNoであるならば、ノードPredecessorは、現在のPredecessor.skip[i].successor.idの方が、Joiner.idよりもリング上でPredecessor.skip[i].intervalstartに近いに近いと判断する。この場合、ノードPredecessorはステップS33(つまりスキップテーブル53-t(P)の書き換え処理)をスキップする。 On the other hand, if the determination in step S32 is No, the node Predecessor is current Precessor. skip [i]. successor. id is Joiner. Predecessor. on the ring rather than id. skip [i]. Judged to be close to the interval start . In this case, the node Predecessor skips Step S33 (that is, the rewriting process of the skip table 53-t (P)).

ノードPredecessorは、上記ステップS32を、i=0からi=m−1までの全てのiについて繰り返す。   The node Predecessor repeats the above step S32 for all i from i = 0 to i = m−1.

<ノードJoinerでのスキップテーブル初期化処理>
次にノードJoinerでのスキップテーブル初期化処理の手順(つまりステップS16の詳細)について、図9のフローチャートを参照して説明する。
<Skip table initialization process in Node Joiner>
Next, the procedure of the skip table initialization process (that is, the details of step S16) in the node Joiner will be described with reference to the flowchart of FIG.

ノードJoiner(のテーブル管理部28)は、前述のJoiner.{id,addr,successor}、Successor.skip及びPredecessor.skipを入力として、以下の手順でスキップテーブル初期化処理を実行する。   Node Joiner (the table management unit 28 thereof) is the Joiner. {Id, addr, successor}, Successor. skip and Predecessor. With skip as an input, skip table initialization processing is executed in the following procedure.

まずノードJoinerは、変数i(i={0...m−1})に関して、自身のスキップテーブル53-t(J)のエントリskip[i](つまり、エントリJoiner.skip[i])内のsuccessor.{id,addr}(つまりJoiner.skip[i].successor.{id,addr)を、Joiner.successor(つまりJoiner.successor.{id,addr})に設定する(ステップS41)。このステップS41において、ノードJoinerは、スキップテーブル53-t(J)のエントリJoiner.skip[i])内のintervalstart(つまりJoiner.skip[i].intervalstart)を、(Joiner.id+2i)mod 2mに設定する。 First, the node Joiner relates to the variable i (i = {0... M−1}) in the entry skip [i] (that is, the entry Joiner.skip [i]) of its own skip table 53-t (J). Of successor. {Id, addr} (that is, Joiner.skip [i]. Successor. {Id, addr) is changed to Joiner. It is set to successor (that is, Joiner.successor. {id, addr}) (step S41). In step S41, the node Joiner enters the entry Joiner. Of the skip table 53-t (J). Interval start (ie, Joiner.skip [i] .interval start ) in skip [i]) is set to (Joiner.id + 2 i ) mod 2 m .

ノードJoinerは、上記ステップS41を、i=0からi=m−1までの全てのi(i={0...m−1})について繰り返す。   The node Joiner repeats the above step S41 for all i (i = {0... M−1}) from i = 0 to i = m−1.

次にノードJoinerは、i={0...m−1}に関して、スキップテーブル53-t(J)のエントリJoiner.skip[i])内のintervalend(つまりJoiner.skip[i].intervalend)を、Joiner.skip.[(i+1)mod m].intervalstartに設定する(ステップS42)。 Next, the node Joiner makes an entry Joiner. Of the skip table 53-t (J) for i = {0 ... m−1}. Interval end in skip [i]) (i.e., Joiner.skip [i] .interval end ) is changed to Joiner. skip. [(I + 1) mod m]. The interval start is set (step S42).

ノードJoinerは、上記ステップS42を、i=0からi=m−1までの全てのiについて繰り返す。   The node Joiner repeats the above step S42 for all i from i = 0 to i = m−1.

次にノードJoinerは、変数i(i={0...m−1})及びj(j={0...m−1})に関し、Successor.skip[j].successor.idが、リング上で範囲[Joiner.skip[i].intervalstart,Joiner.skip[i].successor.id)に収まるかを判定する(ステップS43)。 Next, the node Joiner makes a successor.successor for variables i (i = {0 ... m-1}) and j (j = {0 ... m-1}). skip [j]. successor. id is a range on the ring [Joiner. skip [i]. interval start , Joiner. skip [i]. successor. id) is determined (step S43).

もし、ステップS43の判定がYesであるならば、ノードJoinerは、現在のJoiner.skip[i].successor.idよりも、Successor.skip[j].successor.idの方がリング上でJoiner.skip[i].intervalstartに近いと判断する。そこでノードJoinerは、エントリJoiner.skip.[i]内のJoiner.skip.[i].successor.{id,addr}を、Successor.skip[j].successor.{id,addr}に書き換える(ステップS44)。 If the determination in step S43 is Yes, the node Joiner is the current Joiner. skip [i]. successor. More than id, Successor. skip [j]. successor. id is Joiner. skip [i]. Judged to be close to interval start . Therefore, the node Joiner has an entry Joiner. skip. Joiner. In [i]. skip. [I]. successor. {Id, addr} is assigned to Successor. skip [j]. successor. It is rewritten to {id, addr} (step S44).

一方、ステップS43の判定がNoであるならば、ノードJoinerは、現在のJoiner.skip[i].successor.idの方が、Successor.skip[j].successor.idよりもリング上でJoiner.skip[i].intervalstartに近いと判断する。この場合、ノードJoinerはステップS44(つまりスキップテーブル53-tの書き換え処理)をスキップする。 On the other hand, if the determination in step S43 is No, the node Joiner is the current Joiner. skip [i]. successor. id is the successor. skip [j]. successor. Joiner. on the ring rather than id. skip [i]. Judged to be close to interval start . In this case, the node Joiner skips step S44 (that is, rewrite processing of the skip table 53-t).

ノードJoinerは、上記ステップS43を、i=0からi=m−1までの全てのiと、j=0からj=m−1までの全てのjの組み合わせについて繰り返す。本実施形態では、上記ステップS43が、あるiについて、j=0からj=m−1まで繰り返す動作が、i=0からi=m−1までの全てについて繰り返される。   The node Joiner repeats the above step S43 for all i combinations from i = 0 to i = m−1 and all j combinations from j = 0 to j = m−1. In the present embodiment, the operation of repeating step S43 from j = 0 to j = m−1 for a certain i is repeated for all of i = 0 to i = m−1.

<ノードNodeでの参照処理>
次に本実施形態において、オーバーレイネットワーク10に参加しているノード20-tで実行される参照処理、つまり、あるオブジェクトまたはノードのIDを入力として、当該入力されたIDに最も近いノードIDを持つノードのノードID及びアドレスを取得する参照処理について、図10A及び10Bのフローチャートを参照して説明する。この参照処理は、ノード20-tが入力されたIDに最も近いノードIDを持つノードのノードID及びアドレスを取得する必要がある場合に実行される。このため、前記ステップS2でノードJoinerからノードIntroducerにノードSuccessorのノードID及びアドレスが問い合わせられた場合には、当該ノードIntroducerで参照処理が実行される。以下の説明では、参照処理を実行するノード20-tをノードNodeと表記し、ノード20-tが有するスキップテーブル53-tをスキップテーブル53-t(N)と表記することもある。
<Reference process at node Node>
Next, in the present embodiment, the reference process executed by the node 20-t participating in the overlay network 10, that is, the ID of a certain object or node is input, and the node ID closest to the input ID is obtained. The reference process for acquiring the node ID and address of the node will be described with reference to the flowcharts of FIGS. 10A and 10B. This reference process is executed when it is necessary to obtain the node ID and address of the node having the node ID closest to the input ID of the node 20-t. Therefore, when the node Joiner is inquired of the node ID and address of the node successor from the node joiner in the step S2, the reference processing is executed in the node introducer. In the following description, the node 20-t that executes the reference process may be referred to as a node Node, and the skip table 53-t included in the node 20-t may be referred to as a skip table 53-t (N).

本実施形態において、参照処理の入力(ID)をTargetidで表し、参照処理の出力(参照結果、入力されたIDに最も近いノードIDを持つノードのノードID及びアドレス)をStatus、Target.Successor.id及びTarget.Successor.addrで表す。   In this embodiment, the input (ID) of the reference process is represented by Targetid, and the output of the reference process (the reference result, the node ID and address of the node having the node ID closest to the input ID) is indicated by Status, Target. Successor. id and Target. Successor. It is represented by addr.

Targetidには、任意のID(オブジェクトまたはノードのID)が設定される。Statusには、参照結果、即ち参照が成功したか或いは失敗したかを示すステータス情報が設定される。ここでは、Status=“LOOKUP_REACHED”の場合に成功を示し、Status=“LOOKUP_NOPATH”の場合に失敗(つまり経路無し)を示す。   In Targetid, an arbitrary ID (object or node ID) is set. In Status, status information indicating a reference result, that is, whether the reference has succeeded or failed is set. Here, success is indicated when Status = “LOOKUP_REACHED”, and failure (that is, no route) is indicated when Status = “LOOKUP_NOPATH”.

Target.Successor.idには、Targetidに最も近いノードIDを持つノードのノードIDが設定される。但し、失敗の場合、Target.Successor.idはNULLに設定される。Target.Successor.addrには、Targetidに最も近いノードIDを持つノードのアドレス(IPアドレス)が設定される。但し、失敗の場合、Target.Successor.addrは、NULLに設定される。   Target. Successor. In id, the node ID of the node having the node ID closest to Targetid is set. However, in the case of failure, Target. Successor. id is set to NULL. Target. Successor. In addr, the address (IP address) of the node having the node ID closest to Targetid is set. However, in the case of failure, Target. Successor. addr is set to NULL.

前述のノードIntroducerでの参照処理の場合、ノードNode、Targetid、Target.Successor.id及びTarget.Successor.addrは、それぞれノードIntroducer、Joiner.id、Successor.id及びSuccessor.addrに相当する。   In the case of the reference process in the above-described node introducer, the node Node, Targetid, Target. Successor. id and Target. Successor. addr is a node introduced by nodes Introducer, Joiner. id, Successor. id and Successor. It corresponds to addr.

さて、Node(の探索部29)は、入力されたTargetidに対して当該ノードNode自身が最も近いノードIDを持つかを判定する(ステップS51)。即ちノードNodeは、Targetidに対して自身のノードID(つまりNode.id)が最も近いかを判定する。   The Node (the search unit 29) determines whether or not the node Node itself has the closest node ID with respect to the input Targetid (Step S51). That is, the node Node determines whether its own node ID (that is, Node.id) is closest to the Targetid.

ステップS51の判定がYesの場合、ノードNode(の探索部29)は、参照処理の結果を示す出力Target.Successor.{id,addr}として、自身のノードID及びアドレス、即ちNode.{id,addr}を設定すると共に、出力Statusとして成功を示す“LOOKUP_REACHED”を設定する(ステップS52)。この場合、ノードNode(の探索部29)は、目的ノードに到達したものとして参照処理を完了する。   When the determination in step S51 is Yes, the node Node (the search unit 29) outputs an output Target. Successor. {Id, addr} as its node ID and address, that is, Node. In addition to setting {id, addr}, “LOOKUP_REACHED” indicating success is set as the output status (step S52). In this case, the node Node (the search unit 29) completes the reference process on the assumption that the node has been reached.

一方、ステップS51の判定がNoの場合、ノードNode(の探索部29)は、入力されたTargetidに対してpredecessorとなるノード(つまりTargetidに対して最も遠いノードIDを持つノード)TargetPredecessorを探索する(ステップS53)。   On the other hand, when the determination in step S51 is No, the node Node (the search unit 29) searches for a node that becomes a predecessor with respect to the input Targetid (that is, a node having a node ID farthest from the Targetid) TargetPredecessor. (Step S53).

ステップS53での探索は、ノードNode(の探索部29)が、当該ノードNodeのスキップテーブル53-t(N)のショートカットパスの中から、Targetidを超えない範囲でリング上で最も遠いsuccessor.idを示すショートカットパスを選択し、このショートカットパスのリンク先のノードに問い合わせ(つまりTargetidに対してpredecessorとなるノードTargetPredecessorの問い合わせ)を転送することで行われる(ステップS530)。この探索の手法は、前記非特許文献5、6に記載されている。ここで選択されたショートカットパスの示すsuccessor.idが、スキップテーブル53-t(N)の第xエントリskip[x]のsuccessor.id(つまり、skip[x].successor.id)であるものとする。   In the search in step S53, the node Node (the search unit 29) searches the shortest successor. On the ring within a range not exceeding Targetid from the shortcut paths of the skip table 53-t (N) of the node Node. This is done by selecting a shortcut path indicating id and transferring an inquiry to the link destination node of this shortcut path (that is, an inquiry about a node TargetPredecessor that is a predecessor for Targetid) (step S530). This search method is described in Non-Patent Documents 5 and 6. The successor. Indicating the shortcut path selected here. id is successor.x of the xth entry skip [x] of the skip table 53-t (N). It is assumed that it is id (that is, skip [x]. successor.id).

本実施形態において非特許文献5、6に記載の探索手法と異なる点は、TargetPredecessorを探索する過程において、ノードNode(の探索部29)が問い合わせ先のノードに対して、Targetidだけでなく、使用されたショートカットパスの情報をも転送することにある。ここでは、使用されたショートカットパスの情報として、スキップテーブル53-t(N)の第xエントリskip[x]のintervalstart(つまり、skip[x].intervalstart)が用いられる。この使用されたショートカットパスの情報skip[x].intervalstartをノードNodeから問い合わせ先のノードに転送することは、ノードNodeが、なぜ当該問い合わせ先のノードに問い合わせを行ったかの根拠を示すことに注意すべきである。 This embodiment differs from the search methods described in Non-Patent Documents 5 and 6 in that, in the process of searching for a TargetPredecessor, the node Node (the search unit 29) uses not only Targetid but also the target node. It is also to transfer the information of the shortcut path made. Here, the interval start of the xth entry skip [x] of the skip table 53-t (N) (that is, skip [x] .interval start ) is used as the information of the shortcut path used. Information on the shortcut path used skip [x]. It should be noted that the transfer of the interval start from the node Node to the inquired node indicates the reason why the node Node has inquired the inquired node.

ここで、TargetPredecessorの探索のためにノードNodeから問い合わせが転送されたノード(問い合わせ先のノード)での処理の手順について、図11のフローチャートを参照して説明する。   Here, a processing procedure in the node (inquiry destination node) to which the inquiry is transferred from the node Node for the search of the Target Predecessor will be described with reference to the flowchart in FIG.

問い合わせ先のノード(の探索部29)は、ノードNode(問い合わせ元)から転送されたショートカットパスの情報skip[x].intervalstartに対する自身のノードIDの近さ(リング上での近さ)と、当該skip[x].intervalstartに対する自身が管理する他のノードのIDの近さとを比較する(ステップS530a)。ここで、問い合わせ先のノードが管理する他のノードのIDとは、問い合わせ先のノードが管理する隣接テーブル52-tの示す先行隣接ノード(predecessorノード)のノードID(predecessor.id)、及びスキップテーブル53-tの各エントリskip[i](i={0...m−1})の示すノード(skip[i].successor)のノードID(skip[i].successor.id)である。問い合わせ先のノードは、ステップS530aの比較の結果から、skip[x].intervalstartに対して自身のノードIDの方が自身が管理する他の全てのノードのノードIDよりも近いかにより、ノードNodeから転送されたショートカットパスの情報skip[x].intervalstartが正しいかを判定する(ステップS530b)。 The inquiry destination node (the search unit 29) receives the shortcut path information skip [x] .x transferred from the node Node (inquiry source). The proximity of its own node ID with respect to the interval start (proximity on the ring) and the skip [x]. A comparison is made with the proximity of the IDs of other nodes managed by itself for the interval start (step S530a). Here, the IDs of the other nodes managed by the inquiry destination node are the node ID (predecessor.id) of the preceding adjacent node (predecessor node) indicated by the adjacent table 52-t managed by the inquiry destination node, and skip. This is the node ID (skip [i] .successor.id) of the node (skip [i] .successor) indicated by each entry skip [i] (i = {0 ... m-1}) of the table 53-t. . From the result of the comparison in step S530a, the inquiry destination node determines skip [x]. interval by either closer than the node ID of all other nodes towards their node ID to manage itself against start, information skip shortcut path that is transferred from the node Node [x]. It is determined whether the interval start is correct (step S530b).

問い合わせ先のノード(の探索部29)は、skip[x].intervalstartに対して自身のノードIDの方が近い場合、ノードNodeから転送されたショートカットパスの情報は正しい、つまりノードNodeのスキップテーブル53-t(N)は正しいと判定する(ステップS530c)。この場合、問い合わせ先のノード(の探索部29)は、ノードNodeが自身に問い合わせたのは正しいと判断する。そこで問い合わせ先のノード(の探索部29)は、Targetidに対してpredecessorとなるノードTargetPredecessorを探索し、その結果を問い合わせ元のノード(ノードNode)に通知(応答)する(ステップS530d)。 The inquired node (the search unit 29) determines skip [x]. If the node ID is closer to the interval start , it is determined that the shortcut path information transferred from the node Node is correct, that is, the skip table 53-t (N) of the node Node is correct (step S530c). In this case, the inquiry destination node (the search unit 29) determines that it is correct that the node Node inquires of itself. Therefore, the inquiry destination node (the search unit 29) searches for the node TargetPredecessor that becomes the predecessor for the Targetid, and notifies (responses) the result to the inquiry source node (node Node) (step S530d).

これに対し、skip[x].intervalstartに対して自身以外のノードのノードIDの方がリング上で近い場合には、問い合わせ先のノード(の探索部29)は、ノードNodeから転送されたショートカットパスの情報は正しくない、つまりノードNodeのスキップテーブル53-t(N)は正しくないと判定する(ステップS530e)。この場合、問い合わせ先のノード(の探索部29)は、ノードNodeが自身に問い合わせたのは誤っており、スキップテーブル53-t(N)の更新が必要である旨をノードNodeに通知(応答)する(ステップS530f)。 In contrast, skip [x]. If the node ID of a node other than itself is closer to the interval start on the ring, the inquiry destination node (the search unit 29) has incorrect information on the shortcut path transferred from the node Node. It is determined that the skip table 53-t (N) of the node Node is not correct (step S530e). In this case, the inquiry destination node (the search unit 29) notifies the node Node that the node Node has inquired of itself, and that the skip table 53-t (N) needs to be updated (response). (Step S530f).

ノードNode(の探索部29)は、ステップS530の問い合わせを行うと、当該問い合わせに対する応答を待つ。ノードNodeは、問い合わせ先から問い合わせに対する応答が返されると、当該応答を受信する(ステップS531)。するとノードNode(の探索部29)は、受信された応答が、スキップテーブル53-t(N)の更新が必要である旨を通知しているかを判定する(ステップS532)。ステップS532の判定がYesの場合、ノードNode(の探索部29)はノードTargetPredecessorの探索を一旦中断して、前記選択(転送)されたショートカットパスの正しいリンク先をスキップテーブル53-t(N)の更新を伴わない方法で探索する(ステップS533)。このノードNodeでの探索は、当該ノードNodeが問い合わせ先に転送したショートカットパスの情報skip[x].intervalstartをTargetidとして行われる。 When the node Node (the search unit 29) makes the inquiry in step S530, the node Node waits for a response to the inquiry. When a response to the inquiry is returned from the inquiry destination, the node Node receives the response (step S531). Then, the node Node (the search unit 29) determines whether the received response notifies that the skip table 53-t (N) needs to be updated (step S532). When the determination in step S532 is Yes, the node Node (the search unit 29) suspends the search for the node TargetPredecessor and skips the correct link destination of the selected (transferred) shortcut path to the skip table 53-t (N). The search is performed by a method that does not involve updating (step S533). The search at this node Node is performed by using the shortcut path information skip [x]. Interval start is performed as Targetid.

スキップテーブル53-t(N)の更新を伴わない方法での探索は、前記非特許文献5、6に記載されている。ここでは、更新がされていないスキップテーブル53-t(N)を用いて参照が行われる。このため、非特許文献5、6に記載されているように、mホップ(mはオーバーレイネットワーク10の空間のビット数)以上での探索要求転送が必要になる場合があるが、参照は成功することに注意されたい。なお、mホップ以上での探索要求転送が必要になるのは、非特許文献5、6に記載のChordでの非厳密モデルによる更新でも同様である。   Non-Patent Documents 5 and 6 describe a search using a method that does not involve updating the skip table 53-t (N). Here, the reference is performed using the skip table 53-t (N) that has not been updated. For this reason, as described in Non-Patent Documents 5 and 6, search request transfer may be required at m hops (m is the number of bits in the space of the overlay network 10) or more, but the reference is successful. Please note that. Note that the search request transfer at m hops or more is also necessary in the update by the non-strict model in Chord described in Non-Patent Documents 5 and 6.

ノードNode(の探索部29)は、ステップS531での探索で、転送されたショートカットパスの正しいリンク先ノードのノードID及びアドレス、即ちノードIDがTargetid(つまりskip[x].intervalstart)に最も近いノードのノードID及びアドレスを取得する。するとノードNode(のテーブル管理部28)は、取得されたノードID及びアドレスでショートカットパス(ここでは、エントリskip[x]のうちのskip[x].successor.{id,sddr})を更新する(ステップS534)。 The node Node (the search unit 29) determines that the node ID and address of the correct link destination node of the transferred shortcut path, that is, the node ID is the highest in Targetid (that is, skip [x] .interval start ) in the search in step S531. Get the node ID and address of a nearby node. Then, the node Node (the table management unit 28) updates the shortcut path (here, skip [x] .successor. {Id, sddr} of the entry skip [x]) with the acquired node ID and address. (Step S534).

次にノードNode(の探索部29)は、更新後のスキップテーブル53-t(N)を用いて、先ほど中断した参照(つまりノードTargetPredecessorの探索)を再開する(ステップS535)。即ちノードNode(の探索部29)は、更新後のスキップテーブル53-t(N)のショートカットパスの中から、Targetidを超えない範囲でリング上で最も遠いsuccessor.idを示すショートカットパスを選択し、このショートカットパスのリンク先のノードに問い合わせを転送することで、ノードTargetPredecessorの探索を再開する。このようにして、ノードTargetPredecessorの探索(ステップS53)が再帰的に行われる。   Next, the node Node (the search unit 29) uses the updated skip table 53-t (N) to restart the reference that was interrupted earlier (that is, the search for the node TargetPredecessor) (step S535). That is, the node Node (the search unit 29) searches for the most successful successor. On the ring within the range not exceeding the Targetid from the shortcut path of the updated skip table 53-t (N). The search for the node TargetPredecessor is resumed by selecting the shortcut path indicating the id and transferring the inquiry to the link destination node of the shortcut path. In this way, the search for the node TargetPredecessor (step S53) is performed recursively.

次にノードNode(の探索部29)は、ノードTargetPredecessorの探索(ステップS53)を実行した結果、当該ノードTargetPredecessorに到達できたかを判定する(ステップS54)。   Next, the node Node (the search unit 29) determines whether or not the node TargetPredecessor has been reached as a result of executing the search for the node TargetPredecessor (step S53) (step S54).

ステップS54の判定がNoの場合、ノードNode(の探索部29)は、参照処理の結果を示す出力Target.Successor.{id,addr}として、NULLを設定すると共に、出力Statusとして失敗を示す“LOOKUP_NOPATH”を設定する(ステップS55)。この場合、ノードNode(の探索部29)は、目的ノードに到達できなかったもの(経路無し)として参照処理を完了する。   When the determination in step S54 is No, the node Node (the search unit 29) outputs an output Target. Successor. NULL is set as {id, addr}, and “LOOKUP_NOPATH” indicating failure is set as output Status (step S55). In this case, the node Node (the search unit 29) completes the reference process assuming that the destination node cannot be reached (no route).

一方、ステップS54の判定がYesの場合、ノードNode(の探索部29)は、探索されたノードTargetPredecessorに対して、当該ノードTargetPredecessorのsuccessorノードであるノードTargetSuccessorを問い合わせる(ステップS56)。   On the other hand, when the determination in step S54 is Yes, the node Node (the search unit 29) inquires of the searched node TargetPredecessor about the node TargetSuccessor that is the successor node of the node TargetPredecessor (step S56).

ノードNode(の探索部29)は、ステップS56の問い合わせの結果、ノードTargetSuccessorのノードID及びアドレス(TargetSuccessor.{id,addr})を取得する。するとノードNode(のテーブル管理部28)は、ノードTargetPredecessor及びノードTargetSuccessor各々のノードID及びアドレスを用いて、自身のスキップテーブル53-t(N)のショートカットパスを更新する(ステップS57)。即ち、ノードNode(のテーブル管理部28)は、スキップテーブル53-t(N)の各エントリNode.skip[i](i={0...m−1})のintervalstart(つまりNode.Node.skip[i].intervalstart)に対して、ノードNode.skip[i].successorのノードID(Node.skip[i].successor.id)よりもノードTargetPredecessorまたはノードTargetSuccessorのノードID(TargetPredecessor.idまたはTargetSuccessor.id)の方がリング上で近い場合に、そのNode.skip[i].successor.{id,addr}を、TargetPredecessor.idまたはTargetSuccessor.{id,addr}に更新する。ここでは、Node.skip[i].successor.id及びNode.skip[i].successor.addrが、TargetPredecessor.id及びTargetSuccessor.idのうちNode.Node.skip[i].intervalstartに最も近いid(ノードID)及び当該idを持つノードのアドレスに更新される。 As a result of the inquiry in step S56, the node Node (the search unit 29) obtains the node ID and address (TargetSuccessor. {Id, addr}) of the node TargetSuccessor. Then, the node Node (its table management unit 28) updates the shortcut path of its own skip table 53-t (N) using the node ID and address of each of the node TargetPredecessor and the node TargetSuccessor (step S57). That is, the node Node (its table management unit 28) makes each entry Node. Of the skip table 53-t (N). For the interval start (i.e. Node.Node.skip [i] .interval start ) of skip [i] (i = {0 ... m-1}), the node Node. skip [i]. If the node ID of the target TargetPrecessor or the target Successor (TargetPredecessor.id or TargetSuccessor.id) is closer to that on the ring than the node ID of the successor (Node.skip [i] .successor.id). skip [i]. successor. {Id, addr} is changed to Target Predecessor. id or Target Successor. Update to {id, addr}. Here, Node. skip [i]. successor. id and Node. skip [i]. successor. addr is a TargetPredecessor. id and Target Successor. id. Node. skip [i]. Updated to the id (node ID) closest to the interval start and the address of the node having the id.

次にノードNode(の探索部29)は、出力Target.Successor.{id,addr}として、ノードTargetSuccessorのノードID及びアドレス(TargetSuccessor.{id,addr})を設定すると共に、出力Statusとして、成功を示す“LOOKUP_REACHED”を設定する(ステップS58)。この場合、ノードNodeは、目的ノードに到達したものとして参照処理を完了する。   Next, the node Node (the search unit 29) outputs the Target. Successor. The node ID and address (TargetSuccessor. {Id, addr}) of the node TargetSuccessor are set as {id, addr}, and “LOOKUP_REACHED” indicating success is set as the output Status (step S58). In this case, the node Node completes the reference process assuming that it has reached the target node.

このように、本実施形態においてノードNodeは、TargetPredecessorを探索する過程において、問い合わせ先のノードに対して使用されたショートカットパスの情報skip[x].intervalstartを転送(通知)することで、当該ショートカットパスの情報が正しくないか、つまりノードNodeのスキップテーブル53-t(N)の更新が必要であるかを問い合わせ先のノードで判定させるようにしている。もし、スキップテーブル53-t(N)の更新が必要であると問い合わせ先のノードで判定されたならば、その旨が問い合わせ先からノードNodeに通知されるため、当該ノードNodeは、ショートカットパスの正しいリンク先をスキップテーブル53-t(N)の更新を伴わない方法で探索することにより、当該スキップテーブル53-t(N)(ショートカットパスの正しいリンク先)を更新することができる。 As described above, in this embodiment, the node Node, in the process of searching for the TargetPredecessor, uses the shortcut path information skip [x]. By transferring (notifying) the interval start , the inquiry destination node determines whether the information of the shortcut path is incorrect, that is, whether the skip table 53-t (N) of the node Node needs to be updated. ing. If the inquiry destination node determines that the skip table 53-t (N) needs to be updated, the inquiry destination is notified of the fact to the node Node. By searching for the correct link destination by a method that does not involve updating the skip table 53-t (N), the skip table 53-t (N) (correct link destination of the shortcut path) can be updated.

つまり本実施形態においては、ノードのオーバーレイネットワーク10への参加時にスキップテーブル53-tを初期化(更新)せずに、当該ノードでの参照処理時にスキップテーブル53-tを更新するようにしている。同様に本実施形態では、ノードのオーバーレイネットワーク10からの離脱時にもスキップテーブル53-tを初期化(更新)しないようにしている。   That is, in the present embodiment, the skip table 53-t is not initialized (updated) when the node joins the overlay network 10, but the skip table 53-t is updated during the reference process at the node. . Similarly, in this embodiment, the skip table 53-t is not initialized (updated) even when the node leaves the overlay network 10.

これにより本実施形態においては、次のような効果
1)ノードのオーバーレイネットワーク10へ/からの参加/離脱時に、スキップテーブル53-tを更新しないため、ノードの参加/離脱に時間がかからない
2)Targetidに最も近いノードIDを持つノードのノードID及びアドレス(Target.Successor.{id,addr})を取得するための参照処理の過程でスキップテーブル53-tが更新されるため、無駄な更新処理は発生せず、しかも更新が必要なときに直ちに更新が行われる
を得ることができる。
As a result, in the present embodiment, the following effects are obtained: 1) When the node joins / leaves the overlay network 10, the skip table 53-t is not updated, so that it takes no time for the node to join / leave 2) Since the skip table 53-t is updated in the course of the reference process for acquiring the node ID and address (Target. Successor. {Id, addr}) of the node having the node ID closest to the Targetid, useless update processing Does not occur and can be updated immediately when it is needed.

本実施形態におけるオーバーレイネットワークシステムは、例えば、信頼性と性能の弱点となる集中制御点(メタデータサーバ)のない大規模広域分散ストレージシステムに応用することが可能である。   The overlay network system in this embodiment can be applied to, for example, a large-scale wide-area distributed storage system without a central control point (metadata server) that is a weak point of reliability and performance.

[第1の変形例]
次に上記実施形態の第1の変形例について説明する。
第1の変形例の特徴は、各ノード20-t(の探索部29)が、自身の管理するスキップテーブル53-tを、任意のノードへのルーティングの過程で行われる更新とは独立に、定期的に更新する点にある。そのため、各ノード20-tは一定時間をカウントするタイマを有している。ノード20-t(の探索部29)は、タイマが予め定められた一定時間をカウントする毎に、スキップテーブル53-tを更新する。
[First Modification]
Next, a first modification of the above embodiment will be described.
The feature of the first modification is that each node 20-t (the search unit 29) updates the skip table 53-t managed by itself, independently of the update performed in the process of routing to an arbitrary node, The point is to update regularly. Therefore, each node 20-t has a timer that counts a certain time. The node 20-t (the search unit 29) updates the skip table 53-t each time the timer counts a predetermined time.

以下、ノード20-t(の探索部29)によるスキップテーブル定期更新処理について、図12のフローチャートを参照して説明する。
ノード20-tは、タイマを起動する(ステップS61)。そしてノード20-tは、タイマが一定時間をカウントするのを(つまりタイマのタイムアウトを)監視する(ステップS62)。
Hereinafter, the skip table regular update process by the node 20-t (the search unit 29 thereof) will be described with reference to the flowchart of FIG.
The node 20-t starts a timer (step S61). Then, the node 20-t monitors that the timer counts a predetermined time (that is, the timer timeout) (step S62).

もし、タイマが一定時間をカウントしたならば、ノード20-tは、スキップテーブル53-tを定期的に更新するための更新時期(定期更新時期)が到来したと判断する。するとノード20-tは、i=0からi=m−1までの各i(i={0...m−1})で示される、スキップテーブル53-t内のskip[i].intervalstartについて、参照を実行することにより、参照結果を用いてskip[i].successor.{id,addr}を更新する(ステップS63)。 If the timer counts a certain time, the node 20-t determines that the update time (periodic update time) for periodically updating the skip table 53-t has come. Then, the node 20-t makes skip [i]... In the skip table 53-t indicated by each i (i = {0... M−1}) from i = 0 to i = m−1. By executing reference for interval start , skip [i]. successor. {Id, addr} is updated (step S63).

ノード20-tは、全てのiについてステップS63を実行したならば、再びタイマを起動して(ステップS61)、タイマが一定時間をカウントするのを監視する(ステップS62)。   When the node 20-t has executed step S63 for all i, the node 20-t starts the timer again (step S61), and monitors that the timer counts a certain time (step S62).

なお、タイマを用いる代わりに、最新の定期更新時刻を示す定期更新時刻情報が保持されるフィールドをスキップテーブル53-tに追加してもよい。ここではノード20-tは、上記定期更新時刻情報の示す定期更新時刻から一定時間が経過するのを監視することにより、次の定期更新時期の到来を判定することができる。ノード20-tは、定期更新時期の到来によりスキップテーブル53-tを更新すると、当該テーブル53-tに保持されている定期更新時刻情報を現在の時刻(つまり最新の定期更新時刻)を示すように更新する。   Instead of using a timer, a field holding periodic update time information indicating the latest periodic update time may be added to the skip table 53-t. Here, the node 20-t can determine the arrival of the next regular update time by monitoring the passage of a fixed time from the regular update time indicated by the regular update time information. When the node 20-t updates the skip table 53-t due to the arrival of the regular update time, the regular update time information held in the table 53-t indicates the current time (that is, the latest regular update time). Update to

第1の変形例によれば、各ノード20-tの管理するスキップテーブル53-tのエントリ(ショートカットパスエントリ)が定期的に更新される。このため、TargetPredecessorの問い合わせ(ルーティング要求)を含む参照処理、つまり更新処理を伴う参照処理が実行される回数の少ないノード20-tにおいて、スキップテーブル53-tのエントリが古くなってしまうことを防ぐことができる。   According to the first modification, the entry (shortcut path entry) in the skip table 53-t managed by each node 20-t is periodically updated. For this reason, the entry of the skip table 53-t is prevented from becoming stale in the node 20-t in which the reference process including the Target Predecessor inquiry (routing request), that is, the reference process involving the update process is performed less frequently. be able to.

[第2の変形例]
次に上記実施形態の第2の変形例について説明する。
第2の変形例の特徴は、各ノード20-t(の探索部29)が、自身の管理するスキップテーブル53-tのエントリskip[i](i={0...m−1})を、当該エントリskip[i]の最新の更新時刻から一定時間経過後に更新する点にある。そのため、第2の変形例では、上記実施形態で用いられたスキップテーブル53-tに代えて、図13に示すデータ構造のスキップテーブル530-tが用いられる。スキップテーブル530-tの各エントリskip[i]は、更新時刻フィールド531を含む。この更新時刻フィールド531は、最新の更新時刻を示す更新時刻情報を保持するのに用いられる。
[Second Modification]
Next, a second modification of the above embodiment will be described.
The feature of the second modification is that each node 20-t (the search unit 29) has an entry skip [i] (i = {0 ... m-1}) of the skip table 53-t managed by itself. Is updated after a predetermined time has elapsed from the latest update time of the entry skip [i]. Therefore, in the second modification, a skip table 530-t having the data structure shown in FIG. 13 is used instead of the skip table 53-t used in the above embodiment. Each entry skip [i] of the skip table 530-t includes an update time field 531. The update time field 531 is used to hold update time information indicating the latest update time.

以下、ノード20-t(の探索部29)によるスキップテーブル更新処理について、図14のフローチャートを参照して説明する。
ノード20-tは、i=0からi=m−1までの全てのi(i={0...m−1})について、以下の処理を繰り返す。
Hereinafter, the skip table update processing by the node 20-t (the search unit 29) will be described with reference to the flowchart of FIG.
The node 20-t repeats the following processing for all i (i = {0... M−1}) from i = 0 to i = m−1.

まずノード20-tは、スキップテーブル53-t内のエントリskip[i]に含まれている更新時刻フィールド531を参照する(ステップS71)。次にノード20-tは、参照された更新時刻フィールド531の示す最新の更新時刻(つまり前回の更新時刻)を現在時刻と比較することにより、当該更新時刻から一定時間を経過しているかを判定する(ステップS72)。   First, the node 20-t refers to the update time field 531 included in the entry skip [i] in the skip table 53-t (step S71). Next, the node 20-t compares the latest update time indicated by the referenced update time field 531 (that is, the previous update time) with the current time to determine whether a certain time has elapsed from the update time. (Step S72).

もし、前回の更新時刻から一定時間を経過しているならば、ノード20-tは、スキップテーブル53-t内のエントリskip[i]を更新するための更新時期が到来したと判断する。するとノード20-tは、エントリskip[i]内のskip[i].intervalstartについて参照を実行することにより、参照結果を用いてskip[i].successor.{id,addr}を更新する(ステップS73)。このときノード20-tは、エントリskip[i]内の更新時刻フィールド531に設定されている更新時刻情報を、現在時刻を示すように更新する(ステップS74)。 If a predetermined time has elapsed since the previous update time, the node 20-t determines that the update time for updating the entry skip [i] in the skip table 53-t has come. Then, the node 20-t transmits skip [i]. By executing a reference for the interval start , skip [i]. successor. {Id, addr} is updated (step S73). At this time, the node 20-t updates the update time information set in the update time field 531 in the entry skip [i] so as to indicate the current time (step S74).

ノード20-tはステップS74を実行するとステップS75に進む。また、前回の更新時刻から一定時間を経過していないならば、ノード20-tはステップS74をスキップしてステップS75に進む。ステップS75においてノード20-tは、一定時間待機する。   When node 20-t executes step S74, it proceeds to step S75. If a certain time has not elapsed since the last update time, the node 20-t skips step S74 and proceeds to step S75. In step S75, the node 20-t waits for a predetermined time.

ノード20-tは、以上の処理をi=0からi=m−1までの全てのi(i={0...m−1})について繰り返す。
第2の変形例では、図10A及び10Bのフローチャートに従う参照処理でNode.skip[i].successor.{id,addr}の更新が実行される際にも、その更新が行われるエントリ(Node.skip[i])の更新時刻フィールド531が更新される。
The node 20-t repeats the above processing for all i (i = {0... M−1}) from i = 0 to i = m−1.
In the second modification, Node. Is used in the reference process according to the flowcharts of FIGS. skip [i]. successor. When the update of {id, addr} is executed, the update time field 531 of the entry (Node.skip [i]) in which the update is performed is updated.

第2の変形例によれば、各ノード20-tの管理するスキップテーブル53-tのエントリ(ショートカットパスエントリ)が前回の更新時より一定時間後に更新される。更新処理を伴う参照処理が実行される回数の少ないノード20-tにおいて、スキップテーブル53-tのエントリが古くなってしまうことを防ぐことができる。   According to the second modification, the entry (shortcut path entry) in the skip table 53-t managed by each node 20-t is updated after a certain time from the previous update. It is possible to prevent the entry of the skip table 53-t from becoming old in the node 20-t where the number of times the reference process involving the update process is executed is small.

なお、本発明は、上記実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。   In addition, this invention is not limited to the said embodiment or its modification example as it is, A component can be deform | transformed and embodied in the range which does not deviate from the summary in an implementation stage. In addition, various inventions can be formed by appropriately combining a plurality of constituent elements disclosed in the embodiment or its modification. For example, you may delete a some component from all the components shown by embodiment or its modification.

本発明の一実施形態に係るオーバーレイネットワークシステムのシステム構成を示す図。1 is a diagram showing a system configuration of an overlay network system according to an embodiment of the present invention. 図1に示されるノードのハードウェア構成を示すブロック図。The block diagram which shows the hardware constitutions of the node shown by FIG. 図1に示されるノードの主として機能構成を示すブロック図。The block diagram which mainly shows the function structure of the node shown by FIG. 図3に示されるノードの構成情報記憶部に格納される構成情報のデータ構造例を示す図。The figure which shows the data structure example of the structure information stored in the structure information storage part of the node shown by FIG. skip[i].intervalstartとskip[i].successor.idとの関係を示す図。skip [i]. interval start and skip [i]. successor. The figure which shows the relationship with id. 同実施形態において新たにオーバーレイネットワークに参加するノードで実行されるテーブル初期化処理の手順を示すフローチャート。6 is an exemplary flowchart illustrating a procedure of table initialization processing which is executed in a node newly participating in the overlay network in the embodiment. 同実施形態において新たにオーバーレイネットワークに参加するノードで実行されるテーブル初期化処理の手順を示すフローチャート。6 is an exemplary flowchart illustrating a procedure of table initialization processing which is executed in a node newly participating in the overlay network in the embodiment. 同実施形態において新たにオーバーレイネットワークに参加するノードからの接続要求に応じて後続隣接ノードで実行される接続処理の手順を示すフローチャート。6 is a flowchart showing a procedure of connection processing executed in a subsequent adjacent node in response to a connection request from a node newly participating in the overlay network in the embodiment. 同実施形態において新たにオーバーレイネットワークに参加するノードからの接続要求に応じて先行隣接ノードで実行される接続処理の手順を示すフローチャート。6 is a flowchart showing a procedure of connection processing executed in the preceding adjacent node in response to a connection request from a node newly participating in the overlay network in the embodiment. 図6Bにおけるスキップテーブル初期化処理の手順を示すフローチャート。The flowchart which shows the procedure of the skip table initialization process in FIG. 6B. 同実施形態における参照処理の手順を示すフローチャート。6 is a flowchart showing a procedure of reference processing in the embodiment. 同実施形態における参照処理の手順を示すフローチャート。6 is a flowchart showing a procedure of reference processing in the embodiment. 同実施形態におけるノード探索のための問い合わせ先での処理の手順を示すフローチャート。The flowchart which shows the procedure of the process in the inquiry destination for the node search in the embodiment. 同実施形態の第1の変形例におけるスキップテーブル定期更新処理の手順を示すフローチャート。The flowchart which shows the procedure of the skip table regular update process in the 1st modification of the embodiment. 同実施形態の第2の変形例で適用されるスキップテーブルのデータ構造例を示す図。The figure which shows the data structure example of the skip table applied in the 2nd modification of the embodiment. 同実施形態の第2の変形例におけるスキップテーブル更新処理の手順を示すフローチャート。14 is a flowchart showing a procedure of skip table update processing in a second modification of the embodiment. リングを説明するための図。The figure for demonstrating a ring. リングの一例を示す図。The figure which shows an example of a ring. 図16の例において、それぞれのノードが格納するオブジェクトのオブジェクトIDの範囲を示す図。The figure which shows the range of object ID of the object which each node stores in the example of FIG.

符号の説明Explanation of symbols

10…オーバーレイネットワーク、20-t,20-0〜20-7…ノード、26…制御部、27…構成情報記憶部、28…テーブル管理部、29…探索部、30…オブジェクトアクセス部、32…オブジェクト格納部、40…クライアント、50-t,50-7…構成情報、51-t,51-7…ノード情報、52-t,52-7…隣接テーブル、53-t,53-7,530-t…スキップテーブル。   DESCRIPTION OF SYMBOLS 10 ... Overlay network, 20-t, 20-0-20-7 ... Node, 26 ... Control part, 27 ... Configuration information storage part, 28 ... Table management part, 29 ... Search part, 30 ... Object access part, 32 ... Object storage unit, 40 ... client, 50-t, 50-7 ... configuration information, 51-t, 51-7 ... node information, 52-t, 52-7 ... adjacent table, 53-t, 53-7, 530 -t ... Skip table.

Claims (7)

複数のノードから構成されるオーバーレイネットワークであって、前記複数のノードの各々が、前記オーバーレイネットワーク上での識別子であるmビットのノードIDとアンダーレイネットワーク上での識別子であるアドレスとを持つと共に、前記複数のノードのノードIDを当該ノードIDの大きさの順序でリング状に整列した際に自身に後続して隣接するノードのノードID及びアドレス並びに自身に先行して隣接するノードのノードID及びアドレスを保持する隣接テーブルと、目的のノードIDまたはオブジェクトIDを入力として、当該入力されたノードIDまたはオブジェクトIDに最も近いノードIDを持つノードのアドレスを逐次問い合わせにより取得するためのショートカットパスの情報として、前記複数のノードのうち、予め定められた規則に従って選択された自身以外のm個のノードのノードID及びアドレスを保持するスキップテーブルとを備えたオーバーレイネットワークを構築・維持するためのオーバーレイネットワーク構築・維持方法において、
前記オーバーレイネットワークに第1のノードが参加する場合に、前記第1のノードが、前記複数のノードのうちの任意のノードである第2のノードに対して、前記リング上で前記第1のノードに第1の方向で隣接するノードである第3のノードのノードID及びアドレスを取得するための第1の問い合わせを行うステップと、
前記第1の問い合わせに応じて前記第1のノードが前記第3のノードのノードID及びアドレスを取得した場合、前記第1のノードが前記第3のノードに対して、前記リング上で当該第3のノードに前記第1の方向とは逆の第2の方向で隣接するノードである第4のノードのノードID及びアドレスを取得するための第2の問い合わせを行うステップと、
前記第2の問い合わせに応じて前記第1のノードが前記第4のノードのノードID及びアドレスを取得した場合、前記第1のノードが、前記第3のノードのノードID及びアドレスと前記第4のノードのノードID及びアドレスとに基づいて、前記第1のノードの隣接テーブルを構築するステップと、
前記第1のノードが前記オーバーレイネットワークに参加する場合に、前記第1のノードが、前記第1のノードのスキップテーブルを初期化するステップと、
目的のノードIDまたはオブジェクトIDを入力として、当該入力されたノードIDまたはオブジェクトIDに最も近いノードIDを持つノードのアドレスを前記第1のノードが逐次問い合わせにより取得するための参照処理であって、前記第1のノードが前記問い合わせを前記第1のノードの前記スキップテーブルの示すショートカットパスに従って前記複数のノードのうちの自身以外のノードである第5のノードに転送する過程で、当該ショートカットパスを更新するステップを含む参照処理を実行するステップと
を具備することを特徴とするオーバーレイネットワーク構築・維持方法。
An overlay network composed of a plurality of nodes, each of the plurality of nodes having an m-bit node ID that is an identifier on the overlay network and an address that is an identifier on the underlay network , When the node IDs of the plurality of nodes are arranged in a ring in the order of the node IDs, the node ID and address of the node adjacent to the node ID and the address of the node adjacent to the node ID and the node ID of the node adjacent to the node ID And an adjacent table holding addresses and a shortcut path for obtaining the address of a node having a node ID closest to the input node ID or object ID by sequential inquiry with the target node ID or object ID as input. As information, the plurality of nodes In an overlay network construction and maintenance method for constructing and maintaining the overlay network with a skip table for holding a node ID and address of the m nodes other than the selected itself according to a predetermined rule,
When the first node participates in the overlay network, the first node is connected to the second node, which is an arbitrary node of the plurality of nodes, on the ring. Performing a first inquiry to obtain a node ID and address of a third node that is a node adjacent to the first node in the first direction;
When the first node obtains the node ID and address of the third node in response to the first inquiry, the first node makes a connection to the third node on the ring. Performing a second inquiry to obtain a node ID and an address of a fourth node that is a node adjacent to the third node in a second direction opposite to the first direction;
When the first node acquires the node ID and address of the fourth node in response to the second inquiry, the first node receives the node ID and address of the third node and the fourth node. Building an adjacency table of the first node based on the node ID and address of the node;
When the first node joins the overlay network, the first node initializes a skip table of the first node;
A reference process in which the first node obtains the address of a node having a node ID closest to the inputted node ID or object ID by sequential inquiry by using a target node ID or object ID as an input, In the process in which the first node forwards the inquiry to a fifth node that is a node other than itself among the plurality of nodes according to a shortcut path indicated by the skip table of the first node, An overlay network construction / maintenance method comprising: performing a reference process including a step of updating.
前記第1のノードから前記第5のノードに転送される前記問い合わせには、当該問い合わせの転送に用いられた前記ショートカットパスの情報が付加され、
前記第1のノードから前記第5のノードに前記問い合わせが転送された場合、前記第5のノードが、前記問い合わせに付加されている前記ショートカットパスの情報と自身の前記隣接テーブル及び前記スキップテーブルの情報とを比較することにより、当該ショートカットパスの情報が正しいかを判定するステップを更に具備し、
前記参照処理を実行するステップは、前記第5のノードで前記ショートカットパスの情報が正しくないと判定された場合、前記第1のノードが自身の前記スキップテーブルの当該ショートカットパスの情報を更新するステップを含む
ことを特徴とする請求項1記載のオーバーレイネットワーク構築・維持方法。
To the inquiry transferred from the first node to the fifth node, the information of the shortcut path used for transferring the inquiry is added,
When the inquiry is transferred from the first node to the fifth node, the fifth node transmits information on the shortcut path added to the inquiry and its neighbor table and skip table. Further comprising the step of determining whether the information of the shortcut path is correct by comparing the information,
The step of executing the reference process is a step of updating the information of the shortcut path in the skip table of the first node when the information of the shortcut path is determined to be incorrect at the fifth node. The overlay network construction / maintenance method according to claim 1, further comprising:
前記ショートカットパスの情報は、当該ショートカットパスを設定する際の基準となる前記リング上の位置を示す基準位置情報を含み、
前記判定するステップでは、前記ショートカットパスの情報に含まれている前記基準位置情報の示す位置に対して、前記第5のノードのノードIDの方が当該第5のノードの前記隣接テーブル及び前記スキップテーブルの示す全てのノードIDよりも前記リング上で近いかにより、前記ショートカットパスの情報が正しいかが判定される
ことを特徴とする請求項2記載のオーバーレイネットワーク構築・維持方法。
The information of the shortcut path includes reference position information indicating a position on the ring which is a reference when setting the shortcut path,
In the determining step, with respect to the position indicated by the reference position information included in the shortcut path information, the node ID of the fifth node is the adjacent table and the skip of the fifth node. The overlay network construction / maintenance method according to claim 2, wherein whether or not the shortcut path information is correct is determined based on whether it is closer on the ring than all node IDs indicated in the table.
前記第1のノードが自身のスキップテーブルを定期的に更新するための更新処理を実行するステップを更に具備することを特徴とする請求項1乃至3のいずれかに記載のオーバーレイネットワーク構築・維持方法。   The overlay network construction / maintenance method according to claim 1, further comprising a step of executing an update process for the first node to periodically update its own skip table. . 前記第1のノードの前記スキップテーブルの示すショートカットパスの情報を前回更新してから一定時間が経過した場合に、前記第1のノードが当該ショートカットパスの情報を更新するステップを更に具備することを特徴とする請求項1乃至3のいずれかに記載のオーバーレイネットワーク構築・維持方法。   The first node further comprises a step of updating the shortcut path information when a predetermined time has elapsed since the last update of the shortcut path information indicated by the skip table of the first node. 4. The overlay network construction / maintenance method according to claim 1, wherein the overlay network is constructed and maintained. 前記スキップテーブルは、前記ショートカットパスの情報に対応付けて、当該ショートカットパスの情報が最も最近に更新された際の時刻を表す更新時刻情報を保持し、
前記第1のノードは、前記更新時刻情報の示す時刻から前記一定時間が経過した場合に、当該更新時刻情報に対応する前記ショートカットパスの情報を更新する
ことを特徴とする請求項5記載のオーバーレイネットワーク構築・維持方法。
The skip table is associated with the shortcut path information, and holds update time information indicating the time when the shortcut path information was most recently updated,
The overlay according to claim 5, wherein the first node updates the information of the shortcut path corresponding to the update time information when the predetermined time has elapsed from the time indicated by the update time information. Network construction and maintenance method.
複数のノードから構成されるオーバーレイネットワークであって、前記複数のノードの各々が、前記オーバーレイネットワーク上での識別子であるmビットのノードIDとアンダーレイネットワーク上での識別子であるアドレスとを持つと共に、前記複数のノードのノードIDを当該ノードIDの大きさの順序でリング状に整列した際に自身に後続して隣接するノードのノードID及びアドレス並びに自身に先行して隣接するノードのノードID及びアドレスを保持する隣接テーブルと、目的のノードIDまたはオブジェクトIDを入力として、当該入力されたノードIDまたはオブジェクトIDに最も近いノードIDを持つノードのアドレスを逐次問い合わせにより取得するためのショートカットパスの情報として、前記複数のノードのうち、予め定められた規則に従って選択された自身以外のm個のノードのノードID及びアドレスを保持するスキップテーブルとを備えたオーバーレイネットワークに参加する第1のノードに、
前記第1のノードが前記オーバーレイネットワークに参加する場合に、前記第1のノードから前記複数のノードのうちの任意のノードである第2のノードに対して、前記リング上で前記第1のノードに第1の方向で隣接するノードである第3のノードのノードID及びアドレスを取得するための第1の問い合わせを行うステップと、
前記第1の問い合わせに応じて前記第1のノードが前記第3のノードのノードID及びアドレスを取得した場合、前記第1のノードから前記第3のノードに対して、前記リング上で当該第3のノードに前記第1の方向とは逆の第2の方向で隣接するノードである第4のノードのノードID及びアドレスを取得するための第2の問い合わせを行うステップと、
前記第2の問い合わせに応じて前記第1のノードが前記第4のノードのノードID及びアドレスを取得した場合、前記第3のノードのノードID及びアドレスと前記第4のノードのノードID及びアドレスとに基づいて、前記第1のノードの隣接テーブルを構築するステップと、
前記第1のノードが前記オーバーレイネットワークに参加する場合に、前記第1のノードのスキップテーブルを初期化するステップと、
目的のノードIDまたはオブジェクトIDを入力として、当該入力されたノードIDまたはオブジェクトIDに最も近いノードIDを持つノードのアドレスを前記第1のノードが逐次問い合わせにより取得するための参照処理であって、前記問い合わせを前記第1のノードの前記スキップテーブルの示すショートカットパスに従って前記複数のノードのうちの自身以外のノードである第5のノードに転送する過程で、当該ショートカットパスを更新するステップを含む参照処理を実行するステップと
を実行させるためのプログラム。
An overlay network composed of a plurality of nodes, each of the plurality of nodes having an m-bit node ID that is an identifier on the overlay network and an address that is an identifier on the underlay network , When the node IDs of the plurality of nodes are arranged in a ring in the order of the node IDs, the node ID and address of the node adjacent to the node ID and the address of the node adjacent to the node ID and the node ID of the node adjacent to the node ID And an adjacent table holding addresses and a shortcut path for obtaining the address of a node having a node ID closest to the input node ID or object ID by sequential inquiry with the target node ID or object ID as input. As information, the plurality of nodes , The first node participating in the overlay network with a skip table for holding a node ID and address of the m nodes other than the selected itself according to a predetermined rule,
When the first node joins the overlay network, the first node on the ring from the first node to a second node that is an arbitrary node of the plurality of nodes Performing a first inquiry to obtain a node ID and address of a third node that is a node adjacent to the first node in the first direction;
When the first node obtains the node ID and address of the third node in response to the first inquiry, the first node sends the third node to the third node on the ring. Performing a second inquiry to obtain a node ID and an address of a fourth node that is a node adjacent to the third node in a second direction opposite to the first direction;
When the first node acquires the node ID and address of the fourth node in response to the second inquiry, the node ID and address of the third node and the node ID and address of the fourth node And constructing an adjacency table of the first node based on:
Initializing a skip table of the first node when the first node joins the overlay network;
A reference process in which the first node obtains the address of a node having a node ID closest to the inputted node ID or object ID by sequential inquiry by using a target node ID or object ID as an input, Including a step of updating the shortcut path in a process of transferring the inquiry to a fifth node which is a node other than itself among the plurality of nodes according to a shortcut path indicated by the skip table of the first node. A program for executing the steps to execute the process.
JP2008006223A 2008-01-15 2008-01-15 Overlay network construction and maintenance method and program Expired - Fee Related JP4409604B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008006223A JP4409604B2 (en) 2008-01-15 2008-01-15 Overlay network construction and maintenance method and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008006223A JP4409604B2 (en) 2008-01-15 2008-01-15 Overlay network construction and maintenance method and program

Publications (2)

Publication Number Publication Date
JP2009171156A JP2009171156A (en) 2009-07-30
JP4409604B2 true JP4409604B2 (en) 2010-02-03

Family

ID=40971861

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008006223A Expired - Fee Related JP4409604B2 (en) 2008-01-15 2008-01-15 Overlay network construction and maintenance method and program

Country Status (1)

Country Link
JP (1) JP4409604B2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101612475B1 (en) 2010-04-19 2016-04-27 삼성전자주식회사 Apparatus and Method for establishing partnership of P2P service based on gossip
WO2012042658A1 (en) * 2010-10-01 2012-04-05 株式会社日立製作所 Distributed processing system and method of node distribution in distributed processing system

Also Published As

Publication number Publication date
JP2009171156A (en) 2009-07-30

Similar Documents

Publication Publication Date Title
JP5227955B2 (en) A distributed hash mechanism for self-regulating networks
US7707457B2 (en) Completing an interrupted data replication operation
JP4417997B2 (en) Overlay network system, overlay network construction and maintenance method in the same system, and program
JP5684110B2 (en) Method for maintaining a routing table and node for use in an overlay network
JP2005094773A (en) Computerized system including participation locality-aware overlay module, and method implemented by computer
JP2009020757A (en) Data registration apparatus, data registration method and program
US10754843B2 (en) Method and apparatus for information management
JP4409604B2 (en) Overlay network construction and maintenance method and program
JP2007174672A (en) Method and apparatus for mobility churn handling to peer-to-peer lookup system
US10649870B1 (en) Reliable map-reduce communications in a decentralized, self-organizing communication orbit of a distributed network
Gouvas et al. Integrating overlay protocols for providing autonomic services in mobile ad-hoc networks
JP5228369B2 (en) COMMUNICATION SYSTEM, COMMUNICATION METHOD, AND COMMUNICATION PROGRAM
US10749957B2 (en) Method and apparatus for information management
Harrell et al. Survey of locating & routing in peer-to-peer systems
Rabat et al. A random walk topology management solution for grid
JP2009289089A (en) Cluster type storage system, node device therefor, data control method, and program therefor
Guo et al. Theory and network applications of balanced Kautz tree structures
JP4322611B2 (en) Monitoring system
Popescu et al. On the implementation of a content-addressable network
WO2013027784A1 (en) Data processing device, data distribution processing system, data processing method, and program storage medium
Monteiro Scaling DHTs towards millions
Gueye et al. Resolving the noxious effect of churn on Internet coordinate systems
JP2007249913A (en) Data management system, data management program, and recording medium
Onut Fault Tolerant P2P RIA Crawling
Liu et al. Consistency-preserving neighbor table optimization for p2p networks

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20091020

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091111

R150 Certificate of patent or registration of utility model

Ref document number: 4409604

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121120

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131120

Year of fee payment: 4

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees