WO2012133211A1 - データ転送装置及びデータ転送方法 - Google Patents

データ転送装置及びデータ転送方法 Download PDF

Info

Publication number
WO2012133211A1
WO2012133211A1 PCT/JP2012/057564 JP2012057564W WO2012133211A1 WO 2012133211 A1 WO2012133211 A1 WO 2012133211A1 JP 2012057564 W JP2012057564 W JP 2012057564W WO 2012133211 A1 WO2012133211 A1 WO 2012133211A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
data transfer
transfer device
address
identifier
Prior art date
Application number
PCT/JP2012/057564
Other languages
English (en)
French (fr)
Inventor
佐藤 正
Original Assignee
日本電気株式会社
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 日本電気株式会社 filed Critical 日本電気株式会社
Priority to US13/824,868 priority Critical patent/US20130227066A1/en
Priority to JP2013507527A priority patent/JPWO2012133211A1/ja
Publication of WO2012133211A1 publication Critical patent/WO2012133211A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery

Definitions

  • the present invention relates to a data transfer device and a data transfer method.
  • a structured P2P (Peer-to-Peer) network has attracted attention as a network for transferring data between nodes at high speed.
  • a data distribution system using such a structured P2P network high-speed distribution of a large amount of data is realized by cooperation of a plurality of data transfer apparatuses.
  • Data to be distributed is input from the data transmission device to any data transfer device constituting the data distribution system, and distributed from the data transfer device or another data transfer device to the data reception device.
  • each data transfer device can communicate with other data transfer devices via a network connected by a transmission medium such as a LAN (Local Area Network) cable.
  • the plurality of data transmission devices can transmit data to any data transfer device via the network.
  • data transfer apparatuses cooperate to distribute data received from a data transmission apparatus to a data reception apparatus that should process the data.
  • the data transfer device stores the addresses of some other data transfer devices, and stores them according to a predetermined procedure so that the data finally reaches the data reception device that should process the data.
  • the address of the transfer destination of the data is determined from the address group.
  • the ID of each node is an m-bit value (key).
  • the data transfer device transfers the data received from the data transmission device or another data transfer device to the successor of the hash value (key) of the data.
  • the successor of the key k is a data transfer device that uses the key having the smallest distance from the key k among the data transfer devices that constitute the data distribution system as an ID.
  • Non-Patent Document 1 a key (m bits) is represented by a remainder ring modulo 2 m , and a key whose distance from an arbitrary key k is d is (k + d) mod 2 m .
  • the successor is the data transfer device with ID 1.
  • the successor is a data transfer device with an ID of 3.
  • FIG. 27 shows an example of the internal configuration of the three data transfer apparatuses in FIG. 26 and the data flow.
  • the data transfer devices 0, 1, and 3 are data transfer devices having IDs of 0, 1, and 3, respectively.
  • the data transfer device includes a reception queue that temporarily holds data received from another device, a transfer unit that extracts data from the reception queue and determines a transfer destination device, and temporarily transmits data to be transmitted to another device. And a transmission queue to be maintained.
  • arrows indicate the flow of data.
  • the flow of data from the data transfer device 0 to the data transfer device 1 is represented by an arrow from the transmission queue s0-3 of the data transfer device 0 to the reception queue r1-1 of the data transfer device 1 in FIG. Yes.
  • the transmission queue or reception queue of the data transfer device becomes full, back pressure such as temporarily stopping processing in the preceding stage is applied to prevent data from overflowing from the queue. Is done.
  • the front stage of the transmission queue is a transfer unit
  • the front stage of the reception queue is a data transmission apparatus or a transmission queue of another data transfer apparatus.
  • the transfer unit that has been subjected to back pressure from the transmission queue cannot determine the data transfer destination, it cannot insert the data into the transmission queue. It will not be taken out.
  • deadlock An example of deadlock will be described. It is assumed that a large amount of data is input from the data transmission device to the data transfer device 0. For example, the transfer unit of the data transfer device 0 determines to transfer the data received from the data transmission device to the data transfer device 1, and inserts the data into the transmission queue s0-3.
  • the process in which the data transfer device 0 retrieves data from the transmission queue s0-3 in order to transmit data to the data transfer device 1 is more than the process in which the data transfer device 0 inserts data into the transmission queue s0-3.
  • the transmission queue s0-3 is full of data. Then, back pressure is applied from the transmission queue to the transfer unit, and the transfer unit does not take out data from the reception queue. Then, the reception queue r0-3 that holds the data received from the data transfer apparatus 1 becomes full, and back pressure is applied from the data transfer apparatus 0 to the data transfer apparatus 1.
  • the transfer unit of the data transfer device 1 determines to transfer the data received from the data transmission device to the data transfer device 0, and inserts the data into the transmission queue s1-1.
  • the reception queue r1-1 is filled with data, and back pressure is applied from the data transfer device 1 to the data transfer device 0.
  • the data transfer device 0 and the data transfer device 1 apply back pressure to each other, and the two data transfer devices are fixed in a state where data cannot be transmitted. That is, a deadlock state occurs.
  • Patent Document 1 An example of a technique for avoiding such a deadlock is disclosed in Patent Document 1.
  • a message communication buffer having a sufficient size is secured so that a node corresponding to a data transfer device can always process an input message, thereby avoiding a deadlock. Yes.
  • This corresponds to increasing the size of the transmission queue and reception queue in FIG.
  • by making the size of the transmission queue and reception queue sufficiently large so that the data does not become full it is not necessary to apply back pressure to the processing device or processing unit in the previous stage, and deadlock Can be avoided.
  • the size of the message communication buffer is proportional to the number of messages that may be held unprocessed. For this reason, when the number of messages that can be held unprocessed is very large, it is necessary to increase the size of the message communication buffer, which is not efficient from the viewpoint of memory resource utilization efficiency. In addition, when the number of messages that can be held unprocessed cannot be specified, it is necessary to prepare an infinite area for the message communication buffer, which is not practical.
  • the present invention has been made in view of such circumstances, and prevents deadlock in a structured P2P network without depending on the size of the message communication buffer, that is, without securing a large message communication buffer.
  • the purpose is to do.
  • a data transfer device is a routing that stores a routing table including an identifier, a first address, and a second address of at least one other data transfer device connected via a network.
  • the table storage unit receives data addressed to the first address of its own device, based on the relationship between the key calculated from the data and the identifier of at least one other data transfer device included in the routing table, The other data transfer device to which the data is to be transferred is determined, and when the magnitude relationship between the identifier of the own device and the identifier of the other data transfer device is one of the relationships, the data is transferred to the other data
  • the data is transmitted to the first address of the transfer device and the magnitude relationship is the other relationship, the data is transmitted to the second address of the other data transfer device.
  • a second transfer unit that determines another data transfer device to which the data is to be transferred, and transmits the data to a second address of the other data transfer device.
  • each data transfer device in a data distribution system including a plurality of data transfer devices connected via a network includes an identifier of at least one other data transfer device,
  • a routing table including a first address and a second address is stored and data addressed to the first address of the device itself is received, a key calculated from the data and at least one included in the routing table are stored.
  • the data reception device or another data transfer device is determined as the data transfer destination, and when the data reception device is determined as the transfer destination, the data reception device When the data is transmitted and another data transfer device is determined as the transfer destination, the identifier of the own device and the other data transfer device are determined.
  • the data is transmitted to the first address of the other data transfer device. If the magnitude relation is the other relation, the data is sent to the other address.
  • the key calculated from the data and at least one other data transfer device included in the routing table
  • the data receiving device or other data transfer device is determined as the data transfer destination based on the relationship with the identifier of the data, and when the data receiving device is determined as the transfer destination, the data is transmitted to the data receiving device.
  • the other data transfer device is determined as the transfer destination, the data is transmitted to the second address of the other data transfer device.
  • the “unit” does not simply mean a physical means, but includes a case where the function of the “unit” is realized by software. Also, even if the functions of one “unit” or device are realized by two or more physical means or devices, the functions of two or more “units” or devices are realized by one physical means or device. May be.
  • deadlock in the structured P2P network, deadlock can be prevented without depending on the size of the message communication buffer, that is, without securing a large size message communication buffer.
  • FIG. 1 is a diagram showing an overall configuration of a data distribution system according to an embodiment of the present invention.
  • the data distribution system 10 includes a plurality of data transfer devices 20.
  • Each data transfer device 20 is connected to be communicable with each other via a network 22 such as a LAN (Local Area Network) or the Internet.
  • a plurality of data transfer devices 20 cooperate to distribute data received from the data transmission device 24 to a data reception device 26 that should process the data.
  • FIG. 2 is a diagram illustrating an example of the configuration of the data transfer apparatus 20.
  • the data transfer apparatus 20 includes first and second reception queues 40 and 42, first and second transmission queues 44 and 46, first and second transfer units 50 and 52, a routing table management unit 60, and a routing table storage unit 62.
  • the predecessor storage unit 64 and the own device information storage unit 66 are included.
  • the data transfer device 20 can be realized by using one or a plurality of information processing devices.
  • the first and second reception queues 40 and 42, the first and second transmission queues 44 and 46, the first and second transfer units 50 and 52, the routing table management unit 60, the routing table storage unit 62, and the predecessor storage unit 64 and the own device information storage unit 66 can be realized by using a storage area such as a memory or a storage device, or by executing a program stored in the storage area by a processor.
  • the first and second reception queues 40 and 42 have a memory area for temporarily storing data received from the data transmission device or other data transfer devices.
  • the data transfer device 20 has a first address and a second address, and data transmitted to the first address is stored in the first reception queue 40 and transmitted to the second address.
  • the processed data is stored in the second reception queue 42.
  • the first and second transmission queues 44 and 46 have memory areas for temporarily storing data to be transmitted to other data transfer apparatuses and data reception apparatuses.
  • the data stored in the first and second transmission queues 44 and 46 are sequentially transmitted to the transfer destination determined by the first transfer unit 50 or the second transfer unit 52.
  • the first transfer unit 50 retrieves data from the first reception queue 40 and determines another data transfer device or data reception device to which the data is to be transferred based on the routing table stored in the routing table storage unit 62. Then, the data is transferred to a transmission queue for transmitting the data to the determined transfer destination. Similarly, the second transfer unit 52 extracts the data from the second reception queue 42, determines the transfer destination of the data based on the routing table, and transmits the data to the determined transfer destination. The data is transferred to. In the present embodiment, the first and second transfer units 50 and 52 can determine the transfer destination by searching the routing table using the hash value of the data as a key.
  • the routing table management unit 60 generates a routing table when the data transfer device 20 is added to the data distribution system 10, and stores it in the routing table storage unit 62. In addition, when there is a change in the configuration of the data distribution system 10, such as when another data transfer device is added to the data distribution system 10, the routing table management unit 60 updates the routing table according to the change contents. .
  • FIG. 3 shows an example of the structure of the routing table. As shown in FIG. 3, the routing table is composed of a plurality of records, and each record includes a base point key that is a base point for specifying the data transfer device, a successor ID of the base point key, and the successor's ID. First and second addresses. The address here is information for specifying a device connected to the network.
  • the successor of key k is a data transfer that uses the key having the smallest distance in the remainder ring modulo 2 m from key k (m bits) among the data transfer devices constituting data distribution system 10 as an ID. It is a device. When there is a data transfer apparatus having the same ID as the key k, the distance from the key k is “0” and the data transfer apparatus becomes a successor of the key k.
  • the routing table management unit 60 stores the predecessor ID of the data transfer device 20 and the first and second addresses of the predecessor in the predecessor storage unit 64.
  • the predecessor is another data transfer device in the data distribution system 10 that uses the key having the longest distance from the ID of the data transfer device 20 as the ID.
  • FIG. 4 shows an example of the structure of the predecessor storage unit 64.
  • the own device information storage unit 66 stores the ID of the data transfer device 20 (own device) and the first and second addresses.
  • FIG. 5 is a diagram showing an example of the internal configuration and data flow of the three data transfer apparatuses.
  • the data transfer devices 20 with IDs 0, 1, and 3 are represented as data transfer devices 0, 1, and 3, respectively.
  • each data transfer device 20 has first and second addresses, inserts data received at the first address into the first reception queue 40, and receives data received at the second address. Is inserted into the second reception queue 42.
  • the data receiving apparatus 20 that has received the data in the first reception queue 40 determines the transfer destination of the received data in the first transfer unit 50 and stores the data in the transmission queue corresponding to the transfer destination in the first transmission queue 44. Insert. For example, when the transfer destination determined by the first transfer unit of the data transfer device 0 is the data transfer device 1, it is inserted into the transmission queue s0-3 corresponding to the data transfer device 1 in the first transmission queue 44.
  • Each data transfer device 20 holds its own ID in its own device information storage unit 66, and when transferring data received by the first reception queue 40, for example, the ID of the data transfer device of the transfer destination is: If the ID is larger than the own device ID (the size relationship is one of the relationships), the data is transmitted to the first address of the transfer destination. On the other hand, each data transfer device 20 is addressed to the second address of the transfer destination when, for example, the ID of the transfer destination data transfer device is smaller than the ID of the own device (the magnitude relationship is the other relationship). Send data to. Each data transfer device 20 transmits data to the second address of the transfer destination when transferring the data received by the second reception queue 42 to another data transfer device.
  • the first transfer unit 50 or the second transfer unit 52 inserts data into a transmission queue corresponding to the data reception device in the second transmission queue 46, and the data reception device The data is transmitted to.
  • the data transfer device having the largest ID data transfer device 3 in the example of FIG. 5
  • even the data transferred to the data receiving device is inserted into the first transmission queue 44.
  • the data distribution system 10 of the present embodiment described above uses the following two features in the structured P2P network.
  • the first feature is that the data transfer devices are ordered in a circular pattern, and data is transferred in that order. Depending on the routing protocol, some of the ordered data transfer apparatuses are skipped and the data is transferred.
  • the second feature is that data is not transferred more than once.
  • the data transfer devices are circularly ordered in the order of the data transfer device 0, the data transfer device 1, the data transfer device 3, the data transfer device 0,.
  • the data transfer device 0 transfers the data transfer device 1 to the next data transfer device, or skips the data transfer device 1 and transfers it to the data transfer device 3.
  • the data transfer device 1 may transfer the received data to the data transfer device 3.
  • the data is not transferred to the data transfer device 0. This is because in the process of data transfer in the order of the data transfer device 0, the data transfer device 1, and the data transfer device 3, it always reaches the data transfer device in charge of the data.
  • the ring in FIG. 26 is regarded as a line corresponding to two rings as shown in FIG.
  • the line for two rings shown in FIG. 6 can be shown as in FIG.
  • Each data transfer device in FIG. 7 is virtual, and the data transfer device 0 ′ and the data transfer device 0 ′′ are actual data transfer devices 0, and the data transfer device 1 ′ and the data transfer device 1 ′′ are actual.
  • the substance of the data transfer device 1 and the data transfer device 3 ′ is the data transfer device 3.
  • the arrow represents the data flow. With the configuration in FIG. 7, any route from when data is transmitted from the data transmission device to the data transfer device until reaching the data reception device can be supported. For example, in FIG.
  • the data transfer device 3 when data having a key of 1 is transmitted from the data transmission device to the data transfer device 3, the data is transferred in the order of the data transfer device 0 and the data transfer device 1.
  • the data reception device is notified.
  • the data flow is the flow of the data transfer device 3 ′, the data transfer device 0 ′′, and the data transfer device 1 ′′.
  • the data transfer devices 0 ′, 1 ′, 3 ′ and the data transfer devices 0 ′′, 1 ′′ are regarded as a data transfer device having a first address and a data transfer device having a second address, respectively. Can do.
  • FIG. 8 is a flowchart showing an example of data transfer processing in the first transfer unit 50.
  • the first transfer unit 50 extracts the key k and data from the first reception queue 40 (S0801), and determines whether the data transfer apparatus is a successor of the key k (S0802). Specifically, the key k is not the ID of the predecessor stored in the predecessor storage unit 64, and the distance from the ID to the key k is smaller than the distance from the ID to the ID of the data transfer apparatus. In addition, this data transfer apparatus becomes a successor of k. If the key k is not stored in the first reception queue 40, the first transfer unit 50 can obtain the key k by substituting the data extracted from the first reception queue 40 into, for example, a hash function. .
  • the first transfer unit 50 stores the data to be transferred to the data reception device, and stores the key k and data in the queue in the second transmission queue 46. It is inserted (S0803).
  • the first transfer unit 50 searches the routing table for a transfer destination data transfer device that is a data transfer device to which the received key k and data are transferred.
  • a search process for executing the search is executed (S0804).
  • a record including the ID of the transfer destination data transfer device is specified.
  • the identified ID, first address, and second address of the record are also referred to as the ID, first address, and second address of the transfer destination data transfer device, respectively.
  • the first transfer unit 50 determines whether the ID of the transfer destination data transfer device is larger than the ID of the present data transfer device (S0805). When the ID of the transfer destination data transfer device is larger than the ID of this data transfer device (the size relationship is one of the relationships) (S0805: Yes), the first transfer unit 50 sets the first address of the transfer destination data transfer device. The key k and the data are inserted into the queue in the first transmission queue 44 that holds the addressed data (S0806). On the other hand, when the ID of the transfer destination data transfer device is smaller than the ID of this data transfer device (the magnitude relationship is the other relationship) (S0805: No), the first transfer unit 50 sets the second transfer destination data transfer device second. The key k and the data are inserted into the queue in the first transmission queue 44 that holds the data addressed to the address (S0807).
  • FIG. 9 is a flowchart showing an example of search processing of the transfer destination data transfer device.
  • the first transfer unit 50 searches for a data transfer apparatus having an ID having the smallest distance to the key k among other data transfer apparatuses registered in the routing table (S0901). When a data transfer device that matches this condition is not registered in the routing table (S0902: No), the first transfer unit 50 determines the successor of this data transfer device as the transfer destination data transfer device (S0903). On the other hand, when a data transfer device that matches this condition is registered in the routing table (S0902: Yes), the first transfer unit 50 determines that the data transfer device is a transfer destination data transfer device (S0904).
  • FIG. 10 is a flowchart showing an example of data transfer processing in the second transfer unit 52.
  • the second transfer unit 52 extracts the key k and data from the second reception queue 42 (S1001), and determines whether or not the data transfer apparatus is a successor of the key k (S1002).
  • the second transfer unit 52 stores the key k and the data in the queue in the second transmission queue 46 that holds the data to be transferred to the data reception device. Insert (S1003).
  • the second transfer unit 52 searches the routing table for a transfer destination data transfer device that is a data transfer device to which the received key k and data are transferred.
  • a search process for executing the search is executed (S1004). This search process is the same as the search process (S0804) in the first transfer unit 50.
  • the second transfer unit 52 inserts the key k and the data into the queue in the second transmission queue 46 that holds the data addressed to the second address of the transfer destination data transfer device. (S1005).
  • FIG. 11 is a flowchart illustrating an example of processing for generating and managing a routing table.
  • the routing table management unit 60 determines whether or not the data transfer device is the first data transfer device in the data distribution system 10. If the data transfer device is not the first data transfer device, any data constituting the data distribution system is determined.
  • the first address a e of the transfer device is acquired (S1101).
  • this data transfer device is the first data transfer device in the data distribution system 10 is determined by, for example, storing information related to the data transfer device constituting the data distribution system 10 in a predetermined storage in the data distribution system 10. This can be realized by storing in the section. Further, for example, it is possible to make a determination by transmitting a predetermined message for confirming the presence or absence of another data transfer device in the data distribution system 10.
  • the routing table management unit 60 executes the initialization process of the routing table (S1106), and other data transfer apparatuses Routing table update processing is executed (S1107).
  • FIG. 12 is a flowchart showing an example of the routing table initialization process.
  • the routing table management unit 60 executes a successor / predecessor initialization process (S1201).
  • the routing table management unit 60 sets the key whose distance from k is 2 i-1 as the base point key s i (S1203), and requests the data transfer device identified by a e for the ID and address of the successor of s i. (S1204). In the request message, an address a indicating the response destination is described in addition to the base point key s i .
  • the other data transfer device receiving the request message transfers the request message to the successor of s i. Then, the s i successor that has received the request message transmits the successor ID, the first address, and the second address to address a.
  • the routing table management unit 60 the start point key , ID, first address, and second address are registered in the routing table as s i , k, a, a ′, respectively.
  • FIG. 13 is a flowchart illustrating an example of the initialization process of the successor / predecessor.
  • the routing table management unit 60 requests the ID and address of the k successor from the data transfer apparatus identified by a e (S1301). In the request message, an address a indicating a response destination is described in addition to k.
  • the other data transfer apparatus that has received the request message transfers the request message to the k successors by the processing shown in FIGS.
  • the successor of k that has received the request message transmits the successor ID, the first address, and the second address to address a.
  • the address a ′ p is acquired (S1304) and stored in the predecessor storage unit 64 of the data transfer apparatus (S1305).
  • the routing table management unit 60 sets the ID, the first address, and the second address stored in the predecessor storage unit 64 of the successor identified by the address a 1 to k, a, and a ′, respectively. Update (S1306).
  • FIG. 14 is a flowchart showing an example of a routing table update process of another data transfer apparatus.
  • the routing table management unit 60 calculates the key k -i whose distance to k is 2 i-1 (S1402), and requests the predecessor address of k -i from another data transfer apparatus (S1403). In the request message, an address a indicating a response destination is described in addition to k.
  • the other data transfer apparatus that has received the request message transfers the request message to the k- i predecessor by the same processing as the processing shown in FIGS. Then, the k- i predecessor that has received the request message transmits the predecessor ID, the first address, and the second address to address a.
  • the key successor is searched, but here the key predecessor is searched. Therefore, step S0802 in the process shown in FIG. 8 is not necessary.
  • the ID, first address, and second address of the data transfer apparatus executing step S0903 are the response destination addresses included in the received request message. Sent to.
  • the routing table management unit 60 receives the first address a ⁇ 1 of the k ⁇ i predecessor from the k ⁇ i .BR> V ready processor as a response to the request (S1404). Then, the routing table management unit 60 transmits k, a, a ′, i to the address a ⁇ 1 and executes routing table update (S1405).
  • FIG. 15 is a flowchart illustrating an example of a routing table update process executed in another data transfer apparatus.
  • the routing table management unit 60 receives the key k, the first address a, the second address a ′, and the index i (S1501).
  • the routing table update process ends.
  • the routing table management unit 60 uses the key whose distance from the ID of the data transfer apparatus is 2 i-1 from the routing table as the base key s. A record with i is acquired (S1503).
  • the routing table management unit 60 determines whether the distance from s i to k is smaller than the distance from s i to the ID of the record (S1504). When the distance from s i to k is larger than the distance from s i to the ID of the record (S1504: No), the routing table update process ends. When the distance from s i to k is smaller than the distance from s i to the ID of the record (S1504: Yes), the routing table management unit 60 determines the ID of the record, the first address, the second Are updated to k, a, and a ′, respectively (S1505). Then, the routing table management unit 60 transmits k, a, a ′, i to the first address stored in the predecessor storage unit 64, and updates the routing table (S1506).
  • the data transfer device 0 with ID 0 is activated.
  • the routing table storage unit 62 and the predecessor storage unit 64 of the data transfer apparatus 0 are as shown in FIGS. 17 and 18, respectively.
  • step S1106 first, successor / predecessor initialization S1201 is executed.
  • the ID, the first address, and the second address of the data transfer device 0 are acquired as the successor of the key 3 in steps S1301 and S1302.
  • step S1303 the routing table of the data transfer device 3 is updated as shown in FIG.
  • step S1304 the data transfer device 3 acquires, from the data transfer device 0, the ID, first address, and second address of the data transfer device 0 stored in the predecessor storage unit 64 as the predecessor. .
  • step S1305 the predecessor storage unit 64 of the data transfer apparatus 3 becomes as shown in FIG.
  • step S1306 the predecessor storage unit 64 of the data transfer apparatus 0 is updated as shown in FIGS.
  • the successor / predecessor initialization process shown in FIG. 13 is completed.
  • routing table of the data transfer device 3 is updated from FIG. 19 to FIG. 22 by the processing after step S1202 in the processing of FIG.
  • the routing table initialization process is completed.
  • routing table update processing S1107 of another data transfer apparatus is executed (FIG. 14).
  • the data transfer device 0 updates the routing table (FIG. 15).
  • step S1504 since the distance from the base point key 1 to the received key 3 is smaller than the distance from the base point key 1 to the key 0 of the acquired record, the process advances to step S1505.
  • step S1505 the routing table of the data transfer device 0 is changed as shown in FIGS.
  • step S1502 the data transfer device 3 that has received information from the data transfer device 0 determines that the received key 3 is the ID of the data transfer device 3, and ends the routing table update process.
  • the data transfer device 1 with ID 1 is activated.
  • the routing table storage unit 62 and the predecessor storage unit 64 of each data transfer device are as shown in FIG. Updated as shown in
  • the data transfer device 3 receives data from the data transmission device 24.
  • the data transfer device 3 inserts the received data into the first reception queue 40.
  • the first transfer unit 50 extracts the data from the first reception queue 40, and calculates the hash value of the data as a key.
  • the key calculation is performed only when the data transfer apparatus receives data from the data transmission apparatus 24.
  • the calculated key is 1.
  • the data transfer device 3 retrieves the key and the data from the queue and transmits them to the second address of the data transfer device 0.
  • step S1005 the key k and the data are inserted into the queue (s0-4 in FIG. 5) that holds the data addressed to the second address of the data transfer apparatus 1 in the second transmission queue 46.
  • the data transfer device 0 retrieves the key and the data from the queue and transmits them to the second address of the data transfer device 1.
  • step S1003 the data is inserted into a queue (s1-2 in FIG. 5) that holds data to be transferred to the data receiving device 26 in the second transmission queue 46.
  • the data transfer apparatus 1 extracts the key and the data from the queue and transmits them to the data receiving apparatus 26. With the above processing, data distribution from the data transmission device 24 to the data reception device 26 via the data distribution system 10 is completed.
  • deadlock can be prevented since the data flow is configured not to be circular. In the present embodiment, deadlock can be prevented without depending on the size of the message communication buffer, that is, without securing a large size message communication buffer.
  • this embodiment is for making an understanding of this invention easy, and is not for limiting and interpreting this invention.
  • the present invention can be changed / improved without departing from the spirit thereof, and the present invention includes equivalents thereof.
  • the ID of the transfer destination data transfer apparatus when the ID of the transfer destination data transfer apparatus is larger than the ID of the own apparatus, it is determined that the magnitude relationship is one of the relations, and the ID of the transfer destination data transfer apparatus is When it is smaller than the ID of the device, it is determined that the magnitude relationship is the other relationship, but it is also possible to reverse one relationship and the other relationship with the present embodiment.
  • the ring is configured in ascending order of the IDs of the data transfer apparatuses.
  • the ring may be configured in descending order of the IDs of the data transfer apparatuses.
  • a routing table storage unit that stores a routing table including an identifier, a first address, and a second address of at least one other data transfer device connected via a network; When data addressed to the first address is received, the data becomes a transfer destination based on the relationship between the key calculated from the data and the identifier of at least one other data transfer device included in the routing table. When another data transfer device is determined and the magnitude relationship between the identifier of the own device and the identifier of the other data transfer device is one of the relationships, the data is transferred to the first address of the other data transfer device.
  • a first transfer unit that transmits the data to a second address of the other data transfer device; and If the data addressed to the second address is received, the other data transfer destination is determined based on the relationship between the key of the data and the identifier of at least one other data transfer device included in the routing table.
  • a data transfer device comprising: a second transfer unit that determines the data transfer device of the second data transfer device and transmits the data to the second address of the other data transfer device.
  • the data transfer device determines the data transfer device having the identifier having the smallest distance from the identifier of the data transfer device as the transfer destination.
  • the data transfer device according to any one of supplementary notes 1 to 4, wherein the identifier of the own device, the first address, and the second address are assigned to the other data transfer device, Transmitting to update the routing table of another data transfer device, and when receiving the identifier, first address, and second address of the other data transfer device from the other data transfer device, other data transfer
  • the identifier of the other data transfer device, the first address, and the second address are received from the device, the record specified by the identifier of the other data transfer device in the routing table is changed to the first address,
  • a data transfer device further comprising a routing table management unit that updates the received first address and the second address to the second address.
  • storage part which memorize
  • the routing table management unit updates the predecessor storage unit of another data transfer device having an identifier having the smallest distance from the identifier of the own device, the identifier of the own device, the first address, and the second Is transmitted to the other data transfer device, and the identifier, the first address, and the second address stored in the predecessor storage unit of the other data transfer device are obtained from the other data transfer device. Then, the data transfer device stores the data in the predecessor storage unit of the device itself.
  • Each data transfer device in a data distribution system including a plurality of data transfer devices connected via a network has an identifier, a first address, and a second address of at least one other data transfer device When a data addressed to the first address of the device is received, a key calculated from the data and an identifier of at least one other data transfer device included in the routing table are stored.
  • the data receiving device or other data transfer device is determined as the transfer destination of the data, and when the data receiving device is determined as the transfer destination, the data is transmitted to the data receiving device.
  • the transfer device is determined as the transfer destination
  • the magnitude relationship between the identifier of the own device and the identifier of the other data transfer device is one of the relationships.
  • the data is transmitted to the first address of the other data transfer device, and when the magnitude relationship is the other relationship, the data is sent to the second address of the other data transfer device.
  • the key calculated from the data and the identifier of at least one other data transfer device included in the routing table are used.
  • the data receiving device or other data transfer device is determined as the data transfer destination, and when the data reception device is determined as the transfer destination, the data is transmitted to the data reception device, and the other data transfer device transfers A data transfer method for transmitting the data to a second address of the other data transfer device when determined as a destination.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

 メッセージ通信バッファのサイズに依存することなくデッドロックを防止する。データ転送装置は、第1のアドレス宛のデータを受信すると、ルーティングテーブルに基づいて、該データの転送先となる他のデータ転送装置を決定し、自装置の識別子と、該他のデータ転送装置の識別子との大小関係が一方の関係である場合は、該データを該他のデータ転送装置の第1のアドレス宛に送信し、大小関係が他方の関係である場合は、該データを該他のデータ転送装置の第2のアドレス宛に送信し、自装置の第2のアドレス宛のデータを受信すると、ルーティングテーブルに基づいて、該データの転送先となる他のデータ転送装置を決定し、該データを該他のデータ転送装置の第2のアドレス宛に送信する。

Description

データ転送装置及びデータ転送方法
 本発明は、データ転送装置及びデータ転送方法に関する。
 近年、ノード間で高速にデータを転送するためのネットワークとして、構造化P2P(Peer to Peer)ネットワークが注目されている。このような構造化P2Pネットワークを利用したデータ配信システムでは、複数のデータ転送装置が相互に連携することにより、大量のデータの高速配信が実現されている。配信対象のデータは、データ送信装置からデータ配信システムを構成するいずれかのデータ転送装置に入力され、該データ転送装置、あるいは、別のデータ転送装置からデータ受信装置に配信される。
 このようなデータ配信システムでは、各データ転送装置は、LAN(Local Area Network)ケーブルなどの伝送媒体によって接続されるネットワークを介して、他のデータ転送装置と通信することができる。また、複数のデータ送信装置は、ネットワークを介して、任意のデータ転送装置にデータを送信可能である。データ配信システムでは、データ転送装置同士が連携して、データ送信装置から受信したデータを、そのデータを処理すべきデータ受信装置へ配信する。そのために、データ転送装置は、他のいくつかのデータ転送装置のアドレスを記憶しておき、最終的にデータを処理すべきデータ受信装置に該データが到達するように、所定の手順に従って、記憶しているアドレス群の中から該データの転送先のアドレスを決定する。
 非特許文献1に開示されているシステムでは、各ノード(データ転送装置)のIDはmビット長の値(キー)となっている。データ転送装置は、データ送信装置、あるいは他のデータ転送装置から受信したデータを、そのデータのハッシュ値(キー)のサクセッサへ転送する。ここで、キーkのサクセッサとは、データ配信システムを構成するデータ転送装置のうち、キーkからの距離が最も小さいキーをIDとするデータ転送装置のことである。
 非特許文献1では、図26に示すように、キー(mビット)は2を法とする剰余環で表され、任意のキーkからの距離がdであるキーは、(k+d) mod 2mとなる。図26の例では、m=3であり、キー7から距離が2であるキーは、(7+2) mod 23=1となる。
 非特許文献1に開示されているシステムでは、データ転送装置は、データを他のデータ転送装置に転送するために、他のいくつかのデータ転送装置のアドレスを保持している。それらのアドレスは、該データ転送装置のIDからの距離が2i-1(i=1,2,…,m)であるキーs(基点キー)のサクセッサのアドレスである。図26に示す例では、IDが0のデータ転送装置について、i=1の場合の基点キーは0+21-1=1(mod 23)となり、そのサクセッサはIDが1のデータ転送装置となる。また、i=2の場合の基点キーは0+22-1=2(mod 23)となり、そのサクセッサはIDが3のデータ転送装置となる。
 図27は、図26の3つのデータ転送装置の内部構成の一例とデータの流れを示したものである。データ転送装置0,1,3は、それぞれ、IDが0,1,3であるデータ転送装置である。データ転送装置は、他の装置から受信したデータを一時的に保持する受信キューと、受信キューからデータを取り出して、転送先の装置を決定する転送部と、他の装置へ送信するデータを一時的に保持する送信キューとを含んでいる。図27において、矢印はデータの流れを表している。例えば、データ転送装置0からデータ転送装置1へのデータの流れは、図27において、データ転送装置0の送信キューs0-3からデータ転送装置1の受信キューr1-1への矢印で表されている。
 図27の構成において、データ転送装置の送信キューや受信キューがいっぱいになった場合、その前段にある処理を一時的に停止させるなどのバックプレッシャーがかかることにより、キューからデータがあふれることが防止される。送信キューの前段は転送部であり、受信キューの前段はデータ送信装置、あるいは、他のデータ転送装置の送信キューである。また、送信キューからバックプレッシャーをかけられた転送部は、データの転送先を判定しても、そのデータをその送信キューに挿入できないため、その送信キューに空きができるまで、受信キューからデータを取りださないこととなる。
Ion Stoica、他3名、「Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications」、ACM SIGCOMM Computer Communication Review 31(4)、米国、ACM Press、2001年、p. 149-160
特開2007-328813号公報
 ところで、図27に示す構成では、データの流れが環状になっている部分でデッドロックとなる可能性がある。例えば、データ転送装置0の転送部から送信キューs0-3へのデータフロー、送信キューs0-3から受信キューr1-1へのデータフロー、受信キューr1-1からデータ転送装置1の転送部へのデータフロー、データ転送装置1の転送部から送信キューs1-1へのデータフロー、送信キューs1-1から受信キューr0-3へのデータフロー、受信キューr0-3からデータ転送装置0の転送部へのデータフローの6つで環が構成されている。
 デッドロックとなる例を説明する。データ送信装置からデータ転送装置0へ大量のデータが入力されているものとする。例えば、データ転送装置0の転送部は、データ送信装置から受信したデータをデータ転送装置1へ転送すると判定し、そのデータを送信キューs0-3へ挿入する。ここで、データ転送装置0がデータ転送装置1へデータを送信するために送信キューs0-3からデータを取り出す処理が、データ転送装置0の転送部から送信キューs0-3へ挿入する処理よりも遅く、送信キューs0-3がデータでいっぱいになったとする。そうすると、送信キューから転送部にバックプレッシャーがかかり、転送部は受信キューからデータを取り出さなくなる。すると、データ転送装置1から受信したデータを保持する受信キューr0-3がいっぱいになり、データ転送装置0からデータ転送装置1にバックプレッシャーがかかることとなる。
 一方、データ送信装置からデータ転送装置1へ大量のデータが入力されているものとする。例えば、データ転送装置1の転送部は、データ送信装置から受信したデータをデータ転送装置0へ転送すると判定し、そのデータを送信キューs1-1へ挿入する。その場合、データ転送装置0の場合と同様に、受信キューr1-1がデータでいっぱいになり、データ転送装置1からデータ転送装置0にバックプレッシャーがかかることとなる。このような状況では、データ転送装置0とデータ転送装置1とが互いにバックプレッシャーを掛け合い、両データ転送装置がデータを送信できない状態に固定されてしまう。すなわち、デッドロック状態が発生することとなる。
 このようなデッドロックを回避する手法の一例が、特許文献1に開示されている。特許文献1に開示されている手法では、データ転送装置に相当するノードが常に入力メッセージを処理可能とするために十分な大きさのメッセージ通信バッファが確保され、これにより、デッドロックを回避可能としている。これは、図27における送信キューや受信キューのサイズを大きくすることに相当する。つまり、データがいっぱいになることがないように、送信キューや受信キューのサイズを十分に大きくすることで、その前段の処理装置、あるいは処理部に対してバックプレッシャーをかける必要がなくなり、デッドロックを回避することができる。
 しかしながら、特許文献1に開示されている手法では、メッセージ通信バッファのサイズは、未処理のまま保持する可能性のあるメッセージの個数に比例する。そのため、未処理のまま保持する可能性のあるメッセージの個数が非常に大きい場合には、メッセージ通信バッファのサイズを非常に大きくする必要があり、メモリリソース利用効率の観点から効率的でない。また、未処理のまま保持する可能性のあるメッセージの個数を特定できない場合には、メッセージ通信バッファのための領域を無限に用意する必要があり、現実的でない。
 本発明はこのような事情に鑑みてなされたものであり、構造化P2Pネットワークにおいて、メッセージ通信バッファのサイズに依存することなく、つまり、大きなサイズのメッセージ通信バッファを確保することなくデッドロックを防止することを目的とする。
 本発明の一側面に係るデータ転送装置は、ネットワークを介して接続された少なくとも1つの他のデータ転送装置の、識別子、第1のアドレス、及び第2のアドレスを含む、ルーティングテーブルを記憶するルーティングテーブル記憶部と、自装置の第1のアドレス宛のデータを受信すると、該データから算出されるキーと、ルーティングテーブルに含まれる少なくとも1つの他のデータ転送装置の識別子との関係に基づいて、該データの転送先となる他のデータ転送装置を決定し、自装置の識別子と、該他のデータ転送装置の識別子との大小関係が一方の関係である場合は、該データを該他のデータ転送装置の第1のアドレス宛に送信し、大小関係が他方の関係である場合は、該データを該他のデータ転送装置の第2のアドレス宛に送信する、第1転送部と、自装置の第2のアドレス宛のデータを受信すると、該データのキーと、ルーティングテーブルに含まれる少なくとも1つの他のデータ転送装置の識別子との関係に基づいて、該データの転送先となる他のデータ転送装置を決定し、該データを該他のデータ転送装置の第2のアドレス宛に送信する、第2転送部と、を備える。
 また、本発明の一側面に係るデータ転送方法では、ネットワークを介して接続される複数のデータ転送装置を含むデータ配信システムにおける各データ転送装置が、少なくとも1つの他のデータ転送装置の、識別子、第1のアドレス、及び第2のアドレスを含む、ルーティングテーブルを記憶し、自装置の第1のアドレス宛のデータを受信すると、該データから算出されるキーと、ルーティングテーブルに含まれる少なくとも1つの他のデータ転送装置の識別子との関係に基づいて、データ受信装置または他のデータ転送装置を該データの転送先として決定し、データ受信装置が転送先として決定されると、該データ受信装置に該データを送信し、他のデータ転送装置が転送先として決定されると、自装置の識別子と、該他のデータ転送装置の識別子との大小関係が一方の関係である場合は、該データを該他のデータ転送装置の第1のアドレス宛に送信し、大小関係が他方の関係である場合は、該データを該他のデータ転送装置の第2のアドレス宛に送信し、自装置の第2のアドレス宛のデータを受信すると、該データから算出されるキーと、ルーティングテーブルに含まれる少なくとも1つの他のデータ転送装置の識別子との関係に基づいて、データ受信装置または他のデータ転送装置を該データの転送先として決定し、データ受信装置が転送先として決定されると、該データ受信装置に該データを送信し、他のデータ転送装置が転送先として決定されると、該データを該他のデータ転送装置の第2のアドレス宛に送信する。
 なお、本発明において、「部」とは、単に物理的手段を意味するものではなく、その「部」が有する機能をソフトウェアによって実現する場合も含む。また、1つの「部」や装置が有する機能が2つ以上の物理的手段や装置により実現されても、2つ以上の「部」や装置の機能が1つの物理的手段や装置により実現されても良い。
 本発明によれば、構造化P2Pネットワークにおいて、メッセージ通信バッファのサイズに依存することなく、つまり、大きなサイズのメッセージ通信バッファを確保することなくデッドロックを防止することができる。
本発明の一実施形態であるデータ配信システムの全体構成を示す図である。 データ転送装置の構成の一例を示す図である。 ルーティングテーブルの構造の一例を示す図である。 プレディセッサ記憶部の構造の一例を示す図である。 データ転送装置の内部構成とデータの流れの一例を示す図である。 データ配信システムにおける環の構成の一例を示す図である。 データ配信システムの仮想的な構成の一例を示す図である。 第1転送部におけるデータ転送処理の一例を示すフローチャートである。 転送先データ転送装置の検索処理の一例を示すフローチャートである。 第2転送部におけるデータ転送処理の一例を示すフローチャートである。 ルーティングテーブルを生成・管理する処理の一例を示すフローチャートである。 ルーティングテーブルの初期化処理の一例を示すフローチャートである。 サクセッサ・プレディセッサの初期化処理の一例を示すフローチャートである。 他のデータ転送装置のルーティングテーブルの更新処理の一例を示すフローチャートである。 他のデータ転送装置において実行されるルーティングテーブル更新処理の一例を示すフローチャートである。 データ配信システムに追加されるデータ転送装置の順序の一例を示す図である。 ルーティングテーブルの状態の一例を示す図である。 プレディセッサ記憶部の状態の一例を示す図である。 ルーティングテーブルの状態の一例を示す図である。 プレディセッサ記憶部の状態の一例を示す図である。 プレディセッサ記憶部の状態の一例を示す図である。 ルーティングテーブルの状態の一例を示す図である。 ルーティングテーブルの状態の一例を示す図である。 ルーティングテーブルの状態の一例を示す図である。 ルーティングテーブル及びプレディセッサ記憶部の状態の一例を示す図である。 データ配信システムにおける環の構成の一例を示す図である。 データ転送装置の内部構成とデータの流れの一例を示す図である。
 以下、図面を参照して本発明の一実施形態について説明する。
 ==構成==
 図1は、本発明の一実施形態であるデータ配信システムの全体構成を示す図である。データ配信システム10は、複数のデータ転送装置20を含んで構成されている。各データ転送装置20は、LAN(Local Area Network)やインターネット等のネットワーク22を介して相互に通信可能に接続されている。データ配信システム10では、複数のデータ転送装置20が連携して、データ送信装置24から受信したデータを、そのデータを処理すべきデータ受信装置26へ配信する。
 図2は、データ転送装置20の構成の一例を示す図である。データ転送装置20は、第1及び第2受信キュー40,42、第1及び第2送信キュー44,46、第1及び第2転送部50,52、ルーティングテーブル管理部60、ルーティングテーブル記憶部62、プレディセッサ記憶部64、及び自装置情報記憶部66を含んで構成されている。なお、データ転送装置20は、1台または複数台の情報処理装置を用いて実現することができる。そして、第1及び第2受信キュー40,42、第1及び第2送信キュー44,46、第1及び第2転送部50,52、ルーティングテーブル管理部60、ルーティングテーブル記憶部62、プレディセッサ記憶部64、及び自装置情報記憶部66は、メモリや記憶装置等の記憶領域を用いたり、該記憶領域に記憶されているプログラムをプロセッサが実行したりすることにより実現することができる。
 第1及び第2受信キュー40,42は、データ送信装置や他のデータ転送装置から受信するデータを一時的に保持しておくためのメモリ領域を有する。なお、データ転送装置20は、第1のアドレス及び第2のアドレスを有しており、第1のアドレス宛に送信されたデータが第1受信キュー40に格納され、第2のアドレス宛に送信されたデータが第2受信キュー42に格納される。
 第1及び第2送信キュー44,46は、他のデータ転送装置やデータ受信装置へ送信するデータを一時的に保持しておくためのメモリ領域を有する。なお、第1及び第2送信キュー44,46に格納されたデータは、第1転送部50または第2転送部52により決定された転送先へと順次送信される。
 第1転送部50は、第1受信キュー40からデータを取り出し、ルーティングテーブル記憶部62に格納されているルーティングテーブルに基づいて該データの転送先となる他のデータ転送装置またはデータ受信装置を決定し、決定された転送先に該データを送信するための送信キューに該データを転送する。同様に、第2転送部52は、第2受信キュー42からデータを取り出して、該データの転送先をルーティングテーブルに基づいて決定し、決定された転送先に該データを送信するための送信キューに該データを転送する。なお、本実施形態では、第1及び第2転送部50,52は、データのハッシュ値をキーとしてルーティングテーブルを検索することにより、転送先を決定することができる。
 ルーティングテーブル管理部60は、データ転送装置20がデータ配信システム10に追加される際にルーティングテーブルを生成し、ルーティングテーブル記憶部62に格納する。また、ルーティングテーブル管理部60は、他のデータ転送装置がデータ配信システム10に追加されるなど、データ配信システム10の構成に変更があった場合に、その変更内容に応じてルーティングテーブルを更新する。図3には、ルーティングテーブルの構造の一例が示されている。図3に示すように、ルーティングテーブルは複数のレコードから構成され、各レコードは、データ転送装置を特定するための基点となるキーである基点キーと、基点キーのサクセッサのIDと、該サクセッサの第1及び第2のアドレスとを含んでいる。ここでのアドレスとは、ネットワークに接続される装置を特定する情報であり、例えば、TCP/IPであれば、IPアドレス及びポートのペアをアドレスとして用いることができる。また、キーkのサクセッサとは、データ配信システム10を構成するデータ転送装置のうち、キーk(mビット)からの2を法とする剰余環における距離が最も小さいキーをIDとするデータ転送装置のことである。なお、キーkと同じIDを有するデータ転送装置が存在する場合、このデータ転送装置はキーkからの距離が「0」となり、キーkのサクセッサとなる。
 また、ルーティングテーブル管理部60は、データ転送装置20のプレディセッサのIDと、該プレディセッサの第1及び第2のアドレスとを、プレディセッサ記憶部64に格納する。ここで、プレディセッサとは、データ配信システム10において、データ転送装置20のIDからの距離が最も大きいキーをIDとする他のデータ転送装置である。図4には、プレディセッサ記憶部64の構造の一例が示されている。
 図2に戻り、自装置情報記憶部66には、データ転送装置20(自装置)のIDと、第1及び第2のアドレスとが記憶される。
 図5は、3つのデータ転送装置の内部構成とデータの流れの一例を示す図である。本実施形態では、IDが0,1,3のデータ転送装置20を、データ転送装置0,1,3と表すこととする。本実施形態では、各データ転送装置20は、第1及び第2のアドレスを持っており、第1のアドレスで受信したデータを第1受信キュー40に挿入し、第2のアドレスで受信したデータを第2受信キュー42に挿入する。
 第1受信キュー40でデータを受信したデータ受信装置20は、第1転送部50において、受信したデータの転送先を決定し、第1送信キュー44内の該転送先に対応する送信キューにデータを挿入する。例えば、データ転送装置0の第1転送部によって決定された転送先がデータ転送装置1の場合、第1送信キュー44内のデータ転送装置1に対応する送信キューs0-3に挿入される。
 各データ転送装置20は、自装置のIDを自装置情報記憶部66に保持しており、第1受信キュー40で受信したデータを転送するとき、例えば、転送先のデータ転送装置のIDが、自装置のIDよりも大きい(大小関係が一方の関係である)場合には、転送先の第1のアドレス宛にデータを送信する。一方、各データ転送装置20は、例えば、転送先のデータ転送装置のIDが、自装置のIDよりも小さい(大小関係が他方の関係である)場合には、転送先の第2のアドレス宛にデータを送信する。また、各データ転送装置20は、第2受信キュー42で受信したデータを他のデータ転送装置に転送するときには、転送先の第2のアドレス宛にデータを送信する。
 第1転送部50または第2転送部52は、決定した転送先がデータ受信装置であれば、第2送信キュー46内の、データ受信装置に対応する送信キューにデータを挿入し、データ受信装置に該データを送信する。ただし、IDが最も大きいデータ転送装置(図5の例ではデータ転送装置3)では、データ受信装置に転送するデータであっても第1送信キュー44に挿入される。
 上述した本実施形態のデータ配信システム10は、構造化P2Pネットワークにおける、次の2つの特徴を利用したものである。1つ目の特徴は、データ転送装置が環状に順序付けられており、その順にデータが転送されることである。なお、ルーティングプロトコルによっては、順序付けられているデータ転送装置のいくつかをスキップして、データが転送される。2つ目の特徴は、データは一周以上、転送されることはないことである。
 1つ目の特徴について、図26の例では、データ転送装置0、データ転送装置1、データ転送装置3、データ転送装置0、・・・の順にデータ転送装置は環状に順序付けられている。データ転送装置0は、次のデータ転送装置であるデータ転送装置1に転送したり、データ転送装置1をスキップしてデータ転送装置3に転送したりする。2つ目の特徴について、データ送信装置からデータを受信したデータ転送装置0がデータ転送装置1にデータを送信した場合、データ転送装置1は受信したデータをデータ転送装置3に転送するかもしれないが、データ転送装置0に転送することはない。これは、データ転送装置0、データ転送装置1、データ転送装置3の順にデータが転送される過程で、必ずそのデータを担当するデータ転送装置に到達するためである。
 本実施形態では、上記2つの特徴を考慮し、図26の環を図6に示すように環2周分の線と見なすことにより、デッドロックを防止可能としている。ここで、図6に示す環2周分の線は、図7のように示すことができる。図7の各データ転送装置は仮想的なものであり、データ転送装置0’とデータ転送装置0’’の実体はデータ転送装置0、データ転送装置1’とデータ転送装置1’’の実体はデータ転送装置1、データ転送装置3’の実体はデータ転送装置3である。また、図7において、矢印はデータフローを表している。図7の構成により、データがデータ送信装置からデータ転送装置に送信されてから、データ受信装置に到達するまでのどのような経路もサポートすることができる。例えば、図6において、キーが1であるデータがデータ送信装置からデータ転送装置3に送信されると、該データは、データ転送装置0、データ転送装置1の順に転送され、データ転送装置1からデータ受信装置へ通知されることとなる。そのデータフローは、図7において、データ転送装置3’、データ転送装置0’’、データ転送装置1’’のフローとなる。図7では、データ転送装置0’,1’,3’とデータ転送装置0’’,1’’をそれぞれ第1のアドレスを持つデータ転送装置、第2のアドレスを持つデータ転送装置と見なすことができる。
 ==処理==
 次に、データ配信システム10における処理の一例について説明する。まず、第1及び第2転送部50,52におけるデータ転送処理について説明する。
 図8は、第1転送部50におけるデータ転送処理の一例を示すフローチャートである。まず、第1転送部50は、第1受信キュー40からキーkとデータを取り出し(S0801)、本データ転送装置がキーkのサクセッサであるかどうか判定する(S0802)。具体的には、キーkがプレディセッサ記憶部64に記憶されるプレディセッサのIDではなく、かつ、該IDからキーkまでの距離が、該IDから本データ転送装置のIDまでの距離よりも小さい場合に、本データ転送装置がkのサクセッサとなる。なお、第1受信キュー40にキーkが格納されていない場合、第1転送部50は、第1受信キュー40から取り出したデータを例えばハッシュ関数に代入することにより、キーkを得ることができる。
 本データ転送装置がキーkのサクセッサである場合(S0802:Yes)、第1転送部50は、データ受信装置に転送するデータを保持する、第2送信キュー46内のキューにキーkとデータを挿入する(S0803)。
 本データ転送装置がキーkのサクセッサではない場合(S0802:No)、第1転送部50は、受信したキーkとデータの転送先のデータ転送装置である転送先データ転送装置をルーティングテーブルから検索するための検索処理を実行する(S0804)。この検索処理により、転送先データ転送装置のIDを含むレコードが特定される。以降、特定された該レコードのID、第1のアドレス、及び第2のアドレスを、それぞれ、転送先データ転送装置のID、第1のアドレス、及び第2のアドレスとも呼ぶ。
 転送先データ転送装置が検索されると、第1転送部50は、転送先データ転送装置のIDが本データ転送装置のIDより大きいかどうか判定する(S0805)。転送先データ転送装置のIDが本データ転送装置のIDより大きい(大小関係が一方の関係である)場合(S0805:Yes)、第1転送部50は、転送先データ転送装置の第1のアドレス宛のデータを保持する、第1送信キュー44内のキューにキーkとデータを挿入する(S0806)。一方、転送先データ転送装置のIDが本データ転送装置のIDより小さい(大小関係が他方の関係である)場合(S0805:No)、第1転送部50は、転送先データ転送装置の第2のアドレス宛のデータを保持する、第1送信キュー44内のキューにキーkとデータを挿入する(S0807)。
 図9は、転送先データ転送装置の検索処理の一例を示すフローチャートである。第1転送部50は、ルーティングテーブルに登録されている他のデータ転送装置のうち、キーkまでの距離が最も小さいIDを有するデータ転送装置を検索する(S0901)。この条件に合致するデータ転送装置がルーティングテーブルに登録されていない場合(S0902:No)、第1転送部50は、本データ転送装置のサクセッサを転送先データ転送装置と決定する(S0903)。一方、この条件に合致するデータ転送装置がルーティングテーブルに登録されている場合(S0902:Yes)、第1転送部50は、該データ転送装置を転送先データ転送装置と決定する(S0904)。
 図10は、第2転送部52におけるデータ転送処理の一例を示すフローチャートである。まず、第2転送部52は、第2受信キュー42からキーkとデータを取り出し(S1001)、本データ転送装置がキーkのサクセッサであるかどうか判定する(S1002)。
 本データ転送装置がキーkのサクセッサである場合(S1002:Yes)、第2転送部52は、データ受信装置に転送するデータを保持する、第2送信キュー46内のキューにキーkとデータを挿入する(S1003)。
 本データ転送装置がキーkのサクセッサではない場合(S1002:No)、第2転送部52は、受信したキーkとデータの転送先のデータ転送装置である転送先データ転送装置をルーティングテーブルから検索するための検索処理を実行する(S1004)。この検索処理は、第1転送部50における検索処理(S0804)と同様である。
 転送先データ転送装置が検索されると、第2転送部52は、転送先データ転送装置の第2のアドレス宛のデータを保持する、第2送信キュー46内のキューにキーkとデータを挿入する(S1005)。
 次に、ルーティングテーブルの生成・管理処理について説明する。図11は、ルーティングテーブルを生成・管理する処理の一例を示すフローチャートである。まず、ルーティングテーブル管理部60は、本データ転送装置のID=k、第1のアドレスa、第2のアドレスa’を自装置情報記憶部66から取得する(S1101)。また、ルーティングテーブル管理部60は、本データ転送装置がデータ配信システム10における最初のデータ転送装置であるかどうか判定し、最初のデータ転送装置でない場合は、データ配信システムを構成するいずれかのデータ転送装置の第1のアドレスaeを取得する(S1101)。
 なお、本データ転送装置がデータ配信システム10における最初のデータ転送装置であるかどうかの判定は、例えば、データ配信システム10を構成するデータ転送装置に関する情報を、データ配信システム10内の所定の記憶部に格納しておくことにより実現することができる。また、例えば、データ配信システム10内において、他のデータ転送装置の有無を確認するための所定のメッセージを送信することによって判定することも可能である。
 本データ転送装置がデータ配信システム10における最初のデータ転送装置である場合(S1102:Yes)、ルーティングテーブル管理部60は、プレディセッサ記憶部64にk、a、a’を記憶する(S1103)。そして、ルーティングテーブル管理部60は、i=1からmまで、基点キー、ID、第1のアドレス、第2のアドレスを、それぞれ、kからの距離が2i-1であるキー、k、a、a’とするレコードをルーティングテーブルに登録する(S1104,S1105)。なお、mはキーのビット数である。
 本データ転送装置がデータ配信システム10における最初のデータ転送装置ではない場合(S1102:No)、ルーティングテーブル管理部60は、ルーティングテーブルの初期化処理を実行し(S1106)、他のデータ転送装置のルーティングテーブルの更新処理を実行する(S1107)。
 図12は、ルーティングテーブルの初期化処理の一例を示すフローチャートである。まず、ルーティングテーブル管理部60は、サクセッサ・プレディセッサの初期化処理を実行する(S1201)。そして、ルーティングテーブル管理部60は、i=2からmまで、以下の処理(S1203~S1206)を実行する(S1202)。
 ルーティングテーブル管理部60は、kからの距離が2i-1であるキーを基点キーsiとし(S1203)、aeで識別されるデータ転送装置にsiのサクセッサのIDとアドレスを要求する(S1204)。なお、要求メッセージには、基点キーsiに加えて、応答先を示すアドレスaが記述される。
 この要求メッセージを受信した他のデータ転送装置は、図8~図10に示した処理によって、該要求メッセージをsiのサクセッサに転送する。そして、該要求メッセージを受信したsiのサクセッサは、アドレスa宛に該サクセッサのID、第1のアドレス、第2のアドレスを送信する。
 ルーティングテーブル管理部60は、基点キーsiのサクセッサから上記要求に対する応答として、該サクセッサのID=ki、第1のアドレスai、第2のアドレスa’iを受信する(S1205)。そして、ルーティングテーブル管理部60は、基点キー、ID、第1のアドレス、第2のアドレスを、それぞれ、si、ki、ai、a’iとするレコードをルーティングテーブルに登録する(S1206)。ただし、基点キーsiから本データ転送装置のID=kまでの距離の方が、基点キーsiからID=kiまでの距離よりも小さい場合には、ルーティングテーブル管理部60は、基点キー、ID、第1のアドレス、第2のアドレスを、それぞれ、si、k、a、a’とするレコードをルーティングテーブルに登録する。
 図13は、サクセッサ・プレディセッサの初期化処理の一例を示すフローチャートである。ルーティングテーブル管理部60は、aeで識別されるデータ転送装置に、kのサクセッサのIDとアドレスを要求する(S1301)。なお、要求メッセージには、kに加えて、応答先を示すアドレスaが記述される。
 この要求メッセージを受信した他のデータ転送装置は、図8~図10に示した処理によって、該要求メッセージをkのサクセッサに転送する。そして、該要求メッセージを受信したkのサクセッサは、アドレスa宛に該サクセッサのID、第1のアドレス、第2のアドレスを送信する。
 ルーティングテーブル管理部60は、kのサクセッサから上記要求に対する応答として、該サクセッサのID=k1、第1のアドレスa1、第2のアドレスa’1を受信する(S1302)。そして、ルーティングテーブル管理部60は、基点キー、ID、第1のアドレス、第2のアドレスを、それぞれ、kからの距離が1であるキーk1、a1、a’1とするレコードをルーティングテーブルに登録する(S1303)。
 また、ルーティングテーブル管理部60は、アドレスa1で識別されるサクセッサから、該サクセッサのプレディセッサ記憶部64に記憶されているデータ転送装置のID=kp、第1のアドレスap、第2のアドレスa’pを取得し(S1304)、本データ転送装置のプレディセッサ記憶部64に記憶する(S1305)。
 さらに、ルーティングテーブル管理部60は、アドレスa1で識別されるサクセッサのプレディセッサ記憶部64に記憶されている、ID、第1のアドレス、第2のアドレスを、それぞれ、k、a、a’に更新する(S1306)。
 図14は、他のデータ転送装置のルーティングテーブルの更新処理の一例を示すフローチャートである。ルーティングテーブル管理部60は、i=1からmまで、以下の処理(S1402~S1405)を実行する(S1401)。
 ルーティングテーブル管理部60は、kまでの距離が2i-1であるキーk-iを算出し(S1402)、他のデータ転送装置に、k-iのプレディセッサのアドレスを要求する(S1403)。なお、要求メッセージには、kに加えて、応答先を示すアドレスaが記述される。
 この要求メッセージを受信した他のデータ転送装置は、図8~図10に示した処理と同様の処理により、該要求メッセージをk-iのプレディセッサに転送する。そして、該要求メッセージを受信したk-iのプレディセッサは、アドレスa宛に該プレディセッサのID、第1のアドレス、第2のアドレスを送信する。なお、図8~図10に示した処理では、キーのサクセッサが検索されたが、ここでは、キーのプレディセッサが検索される。そのため、図8に示した処理におけるステップS0802は不要となる。また、図9に示した処理におけるステップS0903の代わりに、該ステップS0903を実行しているデータ転送装置のID、第1のアドレス、第2のアドレスが、受信した要求メッセージに含まれる応答先アドレス宛に送信される。
 ルーティングテーブル管理部60は、k-iの・BR>Vレディセッサから、上記要求に対する応答として、k-iのプレディセッサの第1のアドレスa-1を受信する(S1404)。そして、ルーティングテーブル管理部60は、アドレスa-1宛に、k、a、a’、iを送信し、ルーティングテーブル更新を実行する(S1405)。
 図15は、他のデータ転送装置において実行されるルーティングテーブル更新処理の一例を示すフローチャートである。ルーティングテーブル管理部60は、キーk、第1のアドレスa、第2のアドレスa’、インデックスiを受信する(S1501)。
 キーkが本データ転送装置のIDである場合(S1502:Yes)、ルーティングテーブル更新処理は終了する。キーkが本データ転送装置のIDではない場合(S1502:No)、ルーティングテーブル管理部60は、ルーティングテーブルから、本データ転送装置のIDからの距離が2i-1であるキーを基点キーsiとするレコードを取得する(S1503)。
 ルーティングテーブル管理部60は、siからkまでの距離の方が、siから該レコードのIDまでの距離よりも小さいかどうか判定する(S1504)。siからkまでの距離の方が、siから該レコードのIDまでの距離よりも大きい場合(S1504:No)、ルーティングテーブル更新処理は終了する。siからkまでの距離の方が、siから該レコードのIDまでの距離よりも小さい場合(S1504:Yes)、ルーティングテーブル管理部60は、該レコードのID、第1のアドレス、第2のアドレスを、それぞれ、k、a、a’に更新する(S1505)。そして、ルーティングテーブル管理部60は、プレディセッサ記憶部64に記憶されている第1のアドレス宛に、k、a、a’、iを送信し、ルーティングテーブル更新を実行する(S1506)。
 ==具体例==
 次に、具体例を用いて、データ配信システム10の動作を説明する。ここでは、図16に示すように、IDが0,3,1のデータ転送装置20が順にデータ配信システム10に追加されていくこととする。
 まず、IDが0のデータ転送装置0が起動される。データ転送装置0が起動すると、ルーティングテーブル管理部60において、図11に示す初期化処理が実行される。データ転送装置0がデータ配信システム10における最初のデータ転送装置であるため、ステップS1102でYesのフローへ進む。ステップS1103からS1105までの処理により、データ転送装置0のルーティングテーブル記憶部62とプレディセッサ記憶部64は、それぞれ図17と図18に示すようになる。
 次に、IDが3のデータ転送装置3が起動される。データ転送装置3や、それ以降に起動されるデータ転送装置では、ステップS1102でNoのフローへ進む。ステップS1106のルーティングテーブル初期化では、まず、サクセッサ・プレディセッサ初期化S1201が実行される。サクセッサ・プレディセッサ初期化では、ステップS1301,S1302により、キー3のサクセッサとして、データ転送装置0のID、第1のアドレス、第2のアドレスが取得される。そして、ステップS1303により、データ転送装置3のルーティングテーブルは図19に示すように更新される。
 また、ステップS1304により、データ転送装置3は、データ転送装置0から、そのプレディセッサとして、プレディセッサ記憶部64に記憶されているデータ転送装置0のID、第1のアドレス、第2のアドレスを取得する。そして、ステップS1305により、データ転送装置3のプレディセッサ記憶部64は、図20に示すようになる。また、ステップS1306により、データ転送装置0のプレディセッサ記憶部64は、図18から図21に示すように更新される。以上により図13に示すサクセッサ・プレディセッサ初期化処理が完了する。
 その後、図12の処理におけるステップS1202以降の処理により、データ転送装置3のルーティングテーブルは、図19から図22に更新される。以上によりルーティングテーブル初期化処理が完了する。
 次に、他のデータ転送装置のルーティングテーブルの更新処理S1107が実行される(図14)。i=1の場合、ステップS1402では、k-1=3-21-1=2となる。ステップS1403,S1404により、キー2のプレディセッサとしてデータ転送装置0のID、第1のアドレス、第2のアドレスが取得される。よって、ステップS1405において、データ転送装置3のID、第1のアドレス、第2のアドレス、インデックスi=1が、データ転送装置0へ送信される。
 データ転送装置0は、ルーティングテーブル更新を行う(図15)。ステップS1502では、受信したキー=3は、データ転送装置0のID=0でないと判定され、ステップS1503へ進む。ステップS1503では、基点キーが0+2i-1=1である、データ転送装置0のIDが記録されるレコードがルーティングテーブルから取得される。ステップS1504では、基点キー1から、受信したキー3までの距離の方が、基点キー1から、取得したレコードのキー0までの距離よりも小さいので、ステップS1505に進む。ステップS1505により、データ転送装置0のルーティングテーブルは図17から図23のように変更される。ステップS1506で、データ転送装置0は、プレディセッサ記憶部64に記憶されるデータ転送装置3に、データ転送装置3のID、第1のアドレス、第2のアドレス、インデックスi=1を送信する。
 データ転送装置0からの情報を受信したデータ転送装置3は、ステップS1502で、受信したキー3がデータ転送装置3のIDであると判断し、ルーティングテーブル更新処理を終了する。
 データ転送装置3における、他のデータ転送装置のルーティングテーブルの更新処理(図14)で、i=2の場合、i=1の場合と同様に処理が実行され、データ転送装置0のルーティングテーブルは図23から図24のように変更される。i=3の場合、ステップS1402からS1405までの処理により、データ転送装置0にデータ転送装置3のID、第1のアドレス、第2のアドレス、インデックスi=3が送信される。データ転送装置0は、データ転送装置3からの情報を受信すると、ルーティングテーブルの更新処理(図15)を実行する。図15の処理のステップS1504では、基点キー4から、受信したキー3までの距離の方が、基点キー4から、取得したレコードのID=0までの距離よりも大きいため、ルーティングテーブルの更新処理は終了する。
 最後に、IDが1のデータ転送装置1が起動される。データ転送装置1で、ルーティングテーブルの初期化処理S1106と、他のデータ転送装置のルーティングテーブルの更新処理S1107とが完了すると、各データ転送装置のルーティングテーブル記憶部62とプレディセッサ記憶部64は図25に示すように更新される。
 次に、データ送信装置24からデータ転送装置20へ送信されたデータがデータ受信装置26に到達するまでのデータ配信システム10の動作例を説明する。
 まず、データ転送装置3が、データ送信装置24からデータを受信したとする。データ転送装置3は、受信したデータを第1受信キュー40に挿入する。第1転送部50は、該データを第1受信キュー40から取り出し、該データのハッシュ値をキーとして算出する。なお、キーの算出は、データ転送装置がデータ送信装置24からデータを受信した場合にのみ実施される。ここでは、算出されたキーが1であったとする。
 図8に示した処理のステップS0802において、データ転送装置3はキー=1のサクセッサではないため、ステップS0804に進む。ステップS0804では、データ転送装置0が転送先データ転送装置として検索される。これは、データ転送装置3のルーティングテーブルに、キー=1までの距離が最も小さいIDを有するデータ転送装置0が記憶されているからである。ステップS0805では、データ転送装置3のID=3の方が、データ転送装置0のID=0よりも大きいため、ステップS0807へ進む。ステップS0807で、第1送信キュー44内のデータ転送装置0の第2のアドレス宛のデータを保持するキュー(図5のs3-1)に、キー=1と受信したデータが挿入される。データ転送装置3は、該キューから該キーと該データを取り出し、データ転送装置0の第2のアドレス宛に送信する。
 データ転送装置0は、第2のアドレスで受信したキー=1とデータを第2受信キュー42(図5のr0-2)に挿入する。データ転送装置0の第2転送部52は、受信したキー=1とデータの転送先を決定する(図10)。図10の処理におけるステップS1002では、データ転送装置0は受信したキー=1のサクセッサでないと判定され、ステップS1004へ進む。ステップS1004では、データ転送装置1が転送先データ転送装置として検索される。これは、データ転送装置0のルーティングテーブル内に、キー=1までの距離が最も小さいIDを持つ他のデータ転送装置が存在せず、ステップS0903が実行されるためである。ステップS1005では、第2送信キュー46内の、データ転送装置1の第2のアドレス宛のデータを保持するキュー(図 5のs0-4)にキーkとデータが挿入される。データ転送装置0は、該キューから該キーと該データを取り出し、データ転送装置1の第2のアドレス宛に送信する。
 データ転送装置1は、第2のアドレスで受信したキー=1とデータを第2受信キュー42(図5のr1-3)に挿入する。データ転送装置1の第2転送部52は、受信したキー=1とデータの転送先を決定する(図10)。図10のステップS1002では、本データ転送装置がキー=1のサクセッサであると判定され、ステップS1003に進む。ステップS1003では、第2送信キュー46内の、データ受信装置26に転送するデータを保持するキュー(図5のs1-2)に該データが挿入される。データ転送装置1は、該キューから該キーと該データを取り出し、データ受信装置26宛に送信する。以上の処理により、データ送信装置24からデータ受信装置26への、データ配信システム10を介したデータの配信が完了する。
 以上、本実施形態について説明した。本実施形態によれば、データフローが環状とならないように構成されているため、デッドロックを防止することができる。また、本実施形態では、メッセージ通信バッファのサイズに依存することなく、つまり、大きなサイズのメッセージ通信バッファを確保することなくデッドロックを防止することができる。
 なお、本実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更/改良され得るととともに、本発明にはその等価物も含まれる。
 例えば、本実施形態では、転送先のデータ転送装置のIDが、自装置のIDよりも大きい場合に、大小関係が一方の関係であると判定し、転送先のデータ転送装置のIDが、自装置のIDよりも小さい場合に、大小関係が他方の関係であると判定したが、一方の関係と他方の関係とを本実施形態と逆にすることも可能である。
 また、本実施形態では、データ転送装置のIDの昇順に環を構成することとしたが、データ転送装置のIDの降順に環を構成することとしてもよい。
 この出願は、2011年3月25日に出願された日本出願特願2011-068486を基礎とする優先権を主張し、その開示の全てをここに取り込む。
 以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
 本実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)ネットワークを介して接続された少なくとも1つの他のデータ転送装置の、識別子、第1のアドレス、及び第2のアドレスを含む、ルーティングテーブルを記憶するルーティングテーブル記憶部と、自装置の第1のアドレス宛のデータを受信すると、該データから算出されるキーと、前記ルーティングテーブルに含まれる少なくとも1つの他のデータ転送装置の識別子との関係に基づいて、該データの転送先となる他のデータ転送装置を決定し、自装置の識別子と、該他のデータ転送装置の識別子との大小関係が一方の関係である場合は、該データを該他のデータ転送装置の第1のアドレス宛に送信し、前記大小関係が他方の関係である場合は、該データを該他のデータ転送装置の第2のアドレス宛に送信する、第1転送部と、自装置の第2のアドレス宛のデータを受信すると、該データのキーと、前記ルーティングテーブルに含まれる少なくとも1つの他のデータ転送装置の識別子との関係に基づいて、該データの転送先となる他のデータ転送装置を決定し、該データを該他のデータ転送装置の第2のアドレス宛に送信する、第2転送部と、を備えるデータ転送装置。
(付記2)付記1に記載のデータ転送装置であって、前記第1及び第2転送部は、前記データのキーと自装置の識別子とが所定の関係にある場合は、該データの転送先をデータ受信装置と決定する、データ転送装置。
(付記3)付記2に記載のデータ転送装置であって、前記第1及び第2転送部は、自装置が前記データのキー(mビット)からの2を法とする剰余環における距離が最も小さい識別子を有する場合、前記データ受信装置を転送先として決定する、データ転送装置。
(付記4)付記1~3の何れか一項に記載のデータ転送装置であって、前記第1及び第2転送部は、前記ルーティングテーブルに含まれる少なくとも1つの他のデータ転送装置の中に、該データ転送装置の識別子から前記データのキーまでの距離が自装置の識別子からの距離よりも小さいデータ転送装置が存在する場合は、該距離が最小であるデータ転送装置を転送先として決定し、自装置の識別子から前記データのキーまでの距離が最も小さい場合は、該データ転送装置の識別子からの距離が最も小さい識別子を有するデータ転送装置を転送先として決定する、データ転送装置。
(付記5)付記1~4の何れか一項に記載のデータ転送装置であって、他のデータ転送装置に対して、自装置の識別子、第1のアドレス、及び第2のアドレスを、該他のデータ転送装置のルーティングテーブルを更新するために送信し、他のデータ転送装置から、該他のデータ転送装置の識別子、第1のアドレス、及び第2のアドレスを受信すると、他のデータ転送装置から、該他のデータ転送装置の識別子、第1のアドレス、及び第2のアドレスを受信すると、ルーティングテーブル内の該他のデータ転送装置の識別子で特定されるレコードを、第1のアドレス、及び第2のアドレスを受信した第1のアドレス、及び第2のアドレスに更新する、ルーティングテーブル管理部をさらに備えるデータ転送装置。
(付記6)付記5に記載のデータ転送装置であって、自装置の識別子からの距離が最も大きいデータ転送装置の識別子、第1のアドレス、及び第2のアドレスを記憶するプレディセッサ記憶部をさらに備え、前記ルーティングテーブル管理部は、自装置の識別子からの距離が最も小さい識別子を有する他のデータ転送装置のプレディセッサ記憶部を更新するために、自装置の識別子、第1のアドレス、及び第2のアドレスを該他のデータ転送装置に送信し、該他のデータ転送装置から、該他のデータ転送装置のプレディセッサ記憶部に記憶されている識別子、第1のアドレス、及び第2のアドレスを取得して、自装置のプレディセッサ記憶部に記憶する、データ転送装置。
(付記7)付記5または6に記載のデータ転送装置であって、前記ルーティングテーブル管理部は、自装置の初期化時に、自装置の識別子からの2を法とする剰余環における距離が2i-1(i=1,2,・・・,m)であるキー(mビット)を算出し、該キーからの距離が最も小さい識別子を有するデータ転送装置の識別子、第1のアドレス、及び第2のアドレスを、該キーと対応づけて、前記ルーティングテーブルに記憶する、データ転送装置。
(付記8)付記7に記載のデータ転送装置であって、他のデータ転送装置の識別子からの距離が2i-1であるキーについて、該キーからの距離が最小であるデータ転送装置が自装置である場合に、該他のデータ転送装置に対して、該他のデータ転送装置のルーティングテーブルを更新するために、自装置の識別子、第1のアドレス、及び第2のアドレスを送信する、データ転送装置。
(付記9)付記1~8の何れか一項に記載のデータ転送装置であって、自装置の第1のアドレス宛で受信されたデータが一時的に格納される第1の受信キューと、自装置の第2のアドレス宛で受信されたデータが一時的に格納される第2の受信キューと、他のデータ転送装置の第1のアドレスごとのキューを有する第1の送信キューと、他のデータ転送装置の第2のアドレスごとのキューを有する第2の送信キューと、をさらに備え、前記第1転送部は、前記第1の受信キューに格納されているデータを前記他のデータ転送装置の第1のアドレス宛に送信する際は、前記第1の送信キューの中の、該第1のアドレスに対応するキューに該データを挿入し、前記第1の受信キューに格納されているデータを前記他のデータ転送装置の第2のアドレス宛に送信する際は、前記第2の送信キューの中の、該第2のアドレスに対応するキューに該データを挿入し、前記第2転送部は、前記第2の受信キューに格納されているデータを前記他のデータ転送装置の第2のアドレス宛に送信する際は、前記第2の送信キューの中の、該第2のアドレスに対応するキューに該データを挿入する、データ転送装置。
(付記10)ネットワークを介して接続される複数のデータ転送装置を含むデータ配信システムにおける各データ転送装置が、少なくとも1つの他のデータ転送装置の、識別子、第1のアドレス、及び第2のアドレスを含む、ルーティングテーブルを記憶し、自装置の第1のアドレス宛のデータを受信すると、該データから算出されるキーと、前記ルーティングテーブルに含まれる少なくとも1つの他のデータ転送装置の識別子との関係に基づいて、データ受信装置または他のデータ転送装置を該データの転送先として決定し、データ受信装置が転送先として決定されると、該データ受信装置に該データを送信し、他のデータ転送装置が転送先として決定されると、自装置の識別子と、該他のデータ転送装置の識別子との大小関係が一方の関係である場合は、該データを該他のデータ転送装置の第1のアドレス宛に送信し、前記大小関係が他方の関係である場合は、該データを該他のデータ転送装置の第2のアドレス宛に送信し、自装置の第2のアドレス宛のデータを受信すると、該データから算出されるキーと、前記ルーティングテーブルに含まれる少なくとも1つの他のデータ転送装置の識別子との関係に基づいて、データ受信装置または他のデータ転送装置を該データの転送先として決定し、データ受信装置が転送先として決定されると、該データ受信装置に該データを送信し、他のデータ転送装置が転送先として決定されると、該データを該他のデータ転送装置の第2のアドレス宛に送信する、データ転送方法。
 10 データ配信システム
 20 データ転送装置
 22 ネットワーク
 24 データ送信装置
 26 データ受信装置
 40 第1受信キュー
 42 第2受信キュー
 44 第1送信キュー
 46 第2送信キュー
 50 第1転送部
 52 第2転送部
 60 ルーティングテーブル管理部
 62 ルーティングテーブル記憶部
 64 プレディセッサ記憶部
 66 自装置情報記憶部

Claims (10)

  1.  ネットワークを介して接続された少なくとも1つの他のデータ転送装置の、識別子、第1のアドレス、及び第2のアドレスを含む、ルーティングテーブルを記憶するルーティングテーブル記憶部と、
      自装置の第1のアドレス宛のデータを受信すると、該データから算出されるキーと、前記ルーティングテーブルに含まれる少なくとも1つの他のデータ転送装置の識別子との関係に基づいて、該データの転送先となる他のデータ転送装置を決定し、
      自装置の識別子と、該他のデータ転送装置の識別子との大小関係が一方の関係である場合は、該データを該他のデータ転送装置の第1のアドレス宛に送信し、前記大小関係が他方の関係である場合は、該データを該他のデータ転送装置の第2のアドレス宛に送信する、
     第1転送部と、
      自装置の第2のアドレス宛のデータを受信すると、該データのキーと、前記ルーティングテーブルに含まれる少なくとも1つの他のデータ転送装置の識別子との関係に基づいて、該データの転送先となる他のデータ転送装置を決定し、
      該データを該他のデータ転送装置の第2のアドレス宛に送信する、
     第2転送部と、
     を備えるデータ転送装置。
  2.  請求項1に記載のデータ転送装置であって、
     前記第1及び第2転送部は、
     前記データのキーと自装置の識別子とが所定の関係にある場合は、該データの転送先をデータ受信装置と決定する、
     データ転送装置。
  3.  請求項2に記載のデータ転送装置であって、
     前記第1及び第2転送部は、
     自装置が前記データのキー(mビット)からの2を法とする剰余環における距離が最も小さい識別子を有する場合、前記データ受信装置を転送先として決定する、
     データ転送装置。
  4.  請求項1~3の何れか一項に記載のデータ転送装置であって、
     前記第1及び第2転送部は、
     前記ルーティングテーブルに含まれる少なくとも1つの他のデータ転送装置の中に、該データ転送装置の識別子から前記データのキーまでの距離が自装置の識別子からの距離よりも小さいデータ転送装置が存在する場合は、該距離が最小であるデータ転送装置を転送先として決定し、
     自装置の識別子から前記データのキーまでの距離が最も小さい場合は、該データ転送装置の識別子からの距離が最も小さい識別子を有するデータ転送装置を転送先として決定する、
     データ転送装置。
  5.  請求項1~4の何れか一項に記載のデータ転送装置であって、
     他のデータ転送装置に対して、自装置の識別子、第1のアドレス、及び第2のアドレスを、該他のデータ転送装置のルーティングテーブルを更新するために送信し、
     他のデータ転送装置から、該他のデータ転送装置の識別子、第1のアドレス、及び第2のアドレスを受信すると、ルーティングテーブル内の該他のデータ転送装置の識別子で特定されるレコードを、第1のアドレス、及び第2のアドレスを受信した第1のアドレス、及び第2のアドレスに更新する、
     ルーティングテーブル管理部を
     さらに備えるデータ転送装置。
  6.  請求項5に記載のデータ転送装置であって、
     自装置の識別子からの距離が最も大きいデータ転送装置の識別子、第1のアドレス、及び第2のアドレスを記憶するプレディセッサ記憶部をさらに備え、
     前記ルーティングテーブル管理部は、
     自装置の識別子からの距離が最も小さい識別子を有する他のデータ転送装置のプレディセッサ記憶部を更新するために、自装置の識別子、第1のアドレス、及び第2のアドレスを該他のデータ転送装置に送信し、
     該他のデータ転送装置から、該他のデータ転送装置のプレディセッサ記憶部に記憶されている識別子、第1のアドレス、及び第2のアドレスを取得して、自装置のプレディセッサ記憶部に記憶する、
     データ転送装置。
  7.  請求項5または6に記載のデータ転送装置であって、
     前記ルーティングテーブル管理部は、自装置の識別子からの2を法とする剰余環における距離が2i-1(i=1,2,・・・,m)であるキー(mビット)を算出し、該キーからの距離が最も小さい識別子を有するデータ転送装置の識別子、第1のアドレス、及び第2のアドレスを、該キーと対応づけて、前記ルーティングテーブルに記憶する、
     データ転送装置。
  8.  請求項7に記載のデータ転送装置であって、
     前記ルーティングテーブル管理部は、他のデータ転送装置の識別子からの距離が2i-1であるキーについて、該キーからの距離が最小であるデータ転送装置が自装置である場合に、該他のデータ転送装置に対して、該他のデータ転送装置のルーティングテーブルを更新するために、自装置の識別子、第1のアドレス、及び第2のアドレスを送信する、
     データ転送装置。
  9.  請求項1~8の何れか一項に記載のデータ転送装置であって、
     自装置の第1のアドレス宛で受信されたデータが一時的に格納される第1の受信キューと、
     自装置の第2のアドレス宛で受信されたデータが一時的に格納される第2の受信キューと、
     他のデータ転送装置の第1のアドレスごとのキューを有する第1の送信キューと、
     他のデータ転送装置の第2のアドレスごとのキューを有する第2の送信キューと、
     をさらに備え、
     前記第1転送部は、
     前記第1の受信キューに格納されているデータを前記他のデータ転送装置の第1のアドレス宛に送信する際は、前記第1の送信キューの中の、該第1のアドレスに対応するキューに該データを挿入し、
     前記第1の受信キューに格納されているデータを前記他のデータ転送装置の第2のアドレス宛に送信する際は、前記第2の送信キューの中の、該第2のアドレスに対応するキューに該データを挿入し、
     前記第2転送部は、
     前記第2の受信キューに格納されているデータを前記他のデータ転送装置の第2のアドレス宛に送信する際は、前記第2の送信キューの中の、該第2のアドレスに対応するキューに該データを挿入する、
     データ転送装置。
  10.  ネットワークを介して接続される複数のデータ転送装置を含むデータ配信システムにおける各データ転送装置が、
     少なくとも1つの他のデータ転送装置の、識別子、第1のアドレス、及び第2のアドレスを含む、ルーティングテーブルを記憶し、
     自装置の第1のアドレス宛のデータを受信すると、
      該データから算出されるキーと、前記ルーティングテーブルに含まれる少なくとも1つの他のデータ転送装置の識別子との関係に基づいて、データ受信装置または他のデータ転送装置を該データの転送先として決定し、
      データ受信装置が転送先として決定されると、該データ受信装置に該データを送信し、
      他のデータ転送装置が転送先として決定されると、自装置の識別子と、該他のデータ転送装置の識別子との大小関係が一方の関係である場合は、該データを該他のデータ転送装置の第1のアドレス宛に送信し、前記大小関係が他方の関係である場合は、該データを該他のデータ転送装置の第2のアドレス宛に送信し、
     自装置の第2のアドレス宛のデータを受信すると、
      該データから算出されるキーと、前記ルーティングテーブルに含まれる少なくとも1つの他のデータ転送装置の識別子との関係に基づいて、データ受信装置または他のデータ転送装置を該データの転送先として決定し、
      データ受信装置が転送先として決定されると、該データ受信装置に該データを送信し、
      他のデータ転送装置が転送先として決定されると、該データを該他のデータ転送装置の第2のアドレス宛に送信する、
     データ転送方法。
PCT/JP2012/057564 2011-03-25 2012-03-23 データ転送装置及びデータ転送方法 WO2012133211A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US13/824,868 US20130227066A1 (en) 2011-03-25 2012-03-23 Data transfer apparatus and data transfer method
JP2013507527A JPWO2012133211A1 (ja) 2011-03-25 2012-03-23 データ転送装置及びデータ転送方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2011-068486 2011-03-25
JP2011068486 2011-03-25

Publications (1)

Publication Number Publication Date
WO2012133211A1 true WO2012133211A1 (ja) 2012-10-04

Family

ID=46930934

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2012/057564 WO2012133211A1 (ja) 2011-03-25 2012-03-23 データ転送装置及びデータ転送方法

Country Status (3)

Country Link
US (1) US20130227066A1 (ja)
JP (1) JPWO2012133211A1 (ja)
WO (1) WO2012133211A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10291607B1 (en) * 2016-02-02 2019-05-14 Wickr Inc. Providing real-time events to applications
TWI703840B (zh) * 2019-01-16 2020-09-01 瑞昱半導體股份有限公司 設置在交換器內的電路以及管理交換器中記憶體的方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008541519A (ja) * 2005-05-02 2008-11-20 アルカテル−ルーセント 通信ネットワークにおいてグループ通信を処理する方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5021949A (en) * 1988-02-29 1991-06-04 International Business Machines Corporation Method and apparatus for linking an SNA host to a remote SNA host over a packet switched communications network
US4893307A (en) * 1988-02-29 1990-01-09 International Business Machines Corporation Method and apparatus for linking SNA terminals to an SNA host over a packet switched communications network
GB9828144D0 (en) * 1998-12-22 1999-02-17 Power X Limited Data switching apparatus
US7016971B1 (en) * 1999-05-24 2006-03-21 Hewlett-Packard Company Congestion management in a distributed computer system multiplying current variable injection rate with a constant to set new variable injection rate at source node
US7010607B1 (en) * 1999-09-15 2006-03-07 Hewlett-Packard Development Company, L.P. Method for training a communication link between ports to correct for errors
US6859435B1 (en) * 1999-10-13 2005-02-22 Lucent Technologies Inc. Prevention of deadlocks and livelocks in lossless, backpressured packet networks
US7729259B1 (en) * 2004-01-20 2010-06-01 Cisco Technology, Inc. Reducing latency jitter in a store-and-forward buffer for mixed-priority traffic
US7165131B2 (en) * 2004-04-27 2007-01-16 Intel Corporation Separating transactions into different virtual channels
FR2899415B1 (fr) * 2006-04-03 2008-09-26 Alcatel Sa Procede de routage multichemin avec controle mutuel, et routeur pour un reseau de telecommunication
US20080232341A1 (en) * 2007-03-19 2008-09-25 Lucent Technologies Inc. Scheduling for multi-carrier wireless data systems
US7948883B1 (en) * 2007-07-12 2011-05-24 Cisco Technology, Inc. Applying router quality of service on a cable modem interface on a per-service-flow basis
US8730983B1 (en) * 2010-10-31 2014-05-20 Integrated Device Technology, Inc. Method and apparatus for a configurable packet routing, buffering and scheduling scheme to optimize throughput with deadlock prevention in SRIO-to-PCIe bridges

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008541519A (ja) * 2005-05-02 2008-11-20 アルカテル−ルーセント 通信ネットワークにおいてグループ通信を処理する方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications", SIGCOMM'01, 27 August 2001 (2001-08-27), pages 149 - 160 *

Also Published As

Publication number Publication date
JPWO2012133211A1 (ja) 2014-07-28
US20130227066A1 (en) 2013-08-29

Similar Documents

Publication Publication Date Title
JP5847185B2 (ja) コンテンツ中心のネットワーク環境でグループ変更に関する情報を用いるコンテンツ共有方法及び装置
CN105721311A (zh) 用于使用信息中心网络中的链路状态信息进行有效的基于名称的内容路由的系统和方法
CN101355490B (zh) 消息路由方法、系统和节点设备
JP5741150B2 (ja) 中継装置、中継プログラム、及び中継方法
JP6438719B2 (ja) 通信システム、および、通信プログラム
TW200803303A (en) Inter-proximity communication within a rendezvous federation
CN108337170B (zh) 分布式资源查找方法和系统
JP6195014B2 (ja) 通信システム、通信方法、中継装置、および、通信プログラム
JP2016059039A (ja) Ccnにおける中間ルータにおけるインタレストキープアライブ
CN105376292A (zh) 基于名称的转发中的显式策略反馈
WO2012133211A1 (ja) データ転送装置及びデータ転送方法
US8978048B2 (en) Information processing system, control method, and non-transitory computer readable medium storing program
JPWO2010109767A1 (ja) データ同期システム、データ同期方法、及び同期管理サーバ
CN109617989A (zh) 用于负载分配的方法、装置、系统和计算机可读介质
JP5440574B2 (ja) ノード装置、情報通信方法及びプログラム
JP6495777B2 (ja) コンテンツ配信ネットワークの転送装置、サーバ装置及びプログラム
JP4554564B2 (ja) 分散データの管理方法および管理システム
JP4122328B2 (ja) 伝送装置
JP2006221457A (ja) Pure型P2P通信におけるレプリケーション制御を行うサーバントとそのレプリケーション制御方法およびプログラム
JP5434268B2 (ja) 分散保存システム、データファイル分散保存方法及びプログラム
JP2011035686A (ja) 経路情報管理システム、経路情報管理方法、およびプログラム
JP2005234878A (ja) リソース検索システム、および方法
WO2013027784A1 (ja) データ処理装置、データ分散処理システム、データ処理方法およびプログラム記憶媒体
JP5494361B2 (ja) 分散保存システム、代表ノード装置、通知方法及びプログラム
JP4624314B2 (ja) データ管理装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 12765762

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 13824868

Country of ref document: US

ENP Entry into the national phase

Ref document number: 2013507527

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12765762

Country of ref document: EP

Kind code of ref document: A1