WO2015140942A1 - 情報処理システム、サーバ装置、情報処理方法およびプログラム - Google Patents

情報処理システム、サーバ装置、情報処理方法およびプログラム Download PDF

Info

Publication number
WO2015140942A1
WO2015140942A1 PCT/JP2014/057418 JP2014057418W WO2015140942A1 WO 2015140942 A1 WO2015140942 A1 WO 2015140942A1 JP 2014057418 W JP2014057418 W JP 2014057418W WO 2015140942 A1 WO2015140942 A1 WO 2015140942A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
state
selection result
condition
determined
Prior art date
Application number
PCT/JP2014/057418
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 JP2016508380A priority Critical patent/JP6158425B2/ja
Priority to PCT/JP2014/057418 priority patent/WO2015140942A1/ja
Publication of WO2015140942A1 publication Critical patent/WO2015140942A1/ja
Priority to US15/265,568 priority patent/US10303565B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1608Error detection by comparing the output signals of redundant hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1637Error detection by comparing the output of redundant processing systems using additional compare functionality in one or some but not all of the redundant processing components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/182Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits based on mutual exchange of the output between redundant processing components

Definitions

  • the present invention relates to an information processing system, a server device, an information processing method, and a program.
  • a multiplexing system that multiplexes and executes the same processing to a plurality of nodes is put to practical use as a method for improving availability and reliability.
  • availability is improved because other nodes can continue processing even if some of the nodes fail.
  • the reliability is improved by comparing the result of the process output by each node and excluding the wrong result.
  • a multiplexing system there is a system for multiplexing dedicated computers of the same type installed side by side.
  • the communication between the computers is stable, and the execution speeds of the computers are approximately equal to one another. Therefore, if one computer experiences a delay of more than a certain amount of time, it is appropriate to treat it as a stop failure.
  • Such environments are classified as synchronous network models.
  • Synchronous network models can detect outage failures using relatively short time-outs.
  • a duplex system using this is widely used generally.
  • So-called HA (high availability) systems and FT (fault tolerant) servers are relevant.
  • FT fault tolerant
  • a node In the asynchronous network model, a node is not considered to be a stop failure if it is only temporarily not operating. Therefore, the stop failure can not be determined with a relatively short time-out. In order to maintain multiplexing consistency without detecting outage failures, more operating nodes are required compared to the synchronous network model.
  • ZooKeeper A Distributed Coordination Service for Distributed Applications ⁇ URL: http: // zookeeper. apache. org / doc / current / zookeeperOver. html>
  • the information processing system of the present invention includes a first determination unit, a second determination unit, and a processing unit. If the first determination unit satisfies the first condition indicating that the selection result of the first recommendation state or the first determination state of t2 or more is selected for the same data, the first determination unit Determine the selection result.
  • the second determination unit determines the selection result of the first determination state for the data when the second condition indicating that the selection result of the second determination state of t1 or more is selected for the same data is satisfied.
  • the selection result of the first recommendation state is determined for the data.
  • the processing unit executes processing on the data determined to be in the first determined state, and outputs an output result.
  • FIG. 1 is a block diagram showing an example of the configuration of the information processing system according to the first embodiment.
  • FIG. 2 is a block diagram showing an example of the configuration of the client device and server device according to the first embodiment.
  • FIG. 3 is a view showing an example of the data structure of data stored in the vote storage unit.
  • FIG. 4 is a diagram for describing an operation example of aligned multicast.
  • FIG. 5 is a flow chart showing the overall flow of aligned multicast in the first embodiment.
  • FIG. 6 is a block diagram showing an example of the configuration of a server apparatus included in the information processing system according to the second embodiment.
  • FIG. 7 is a diagram illustrating an example of a hardware configuration of the device of the embodiment.
  • An independent computer that constitutes a distributed system is called a "node”.
  • Each node is independent, and nodes can communicate via a network.
  • stop failure The fact that a node does not operate at all is called “stop failure”. It is called “Byzantine failure” that a node is in a malfunctioning state. Stop failure and Byzantine failure are collectively called “node failure”.
  • Node A node that has not failed is called an "operating node”.
  • Nodes that are not Byzantine fault are called "normal nodes”. In particular, operating nodes are always normal nodes.
  • outage disorders do not include Byzantine disorders.
  • the content of the malfunction of Byzantine failure is optional, and includes cases of intrusion.
  • the operating rate of the system is an index.
  • the timeout is set as short as possible to increase the operation rate.
  • non-blocking multiplexing which can ensure real-time capability even when a failure occurs. Since nonblocking multiplexing does not require fault detection and there is no interruption of processing when a fault occurs, there is no decline in the operating rate due to timeout.
  • a multiplexed system that is resistant to Byzantine failure is more reliable. However, it is more resistant to Byzantine failure and requires more active nodes to maintain multiplexing consistency. For example, in a multiplexing technology based on a synchronous network model, assuming that the total number of nodes is n, the maximum allowable number of node failures is f, and the maximum allowable number of Byzantine failures is b, n> f + 2b is a condition Exists.
  • the information processing system according to the present embodiment is at least resistant to Byzantine failure, has consistency based on an asynchronous network model, and can suppress processing delay. To achieve. In the present embodiment, it is also possible to realize nonblocking multiplexing in which the real time property at the time of failure occurrence is secured.
  • each node constituting the multiplexing system starts from the same initial state.
  • Data input to each node is delivered to each node through aligned multicast.
  • a deterministic program is executed at each node based on the input data. As a result, data is output.
  • the initial state of each node is the same, the input sequence to each node is in the same order by aligned multicast, the state of each node is kept the same, and the output sequence is also the same due to the nature of deterministic program. It becomes. As a result, program execution is multiplexed.
  • valid output data obtained from the multiplexing system is valid if the number of computers with Byzantine failure is equal to or less than b (maximum number of Byzantine failures). is there. Furthermore, if the number of node failures is less than or equal to f (the maximum number of allowable node failures), the multiplexing system can continue processing.
  • f corresponding to the threshold of reliability and b corresponding to the threshold of availability can be set separately. If f is set to be larger than b, even if the number of Byzantine failures occurs up to b, additionally, f-b stop failures can be tolerated. This setting is suitable for systems where availability is relatively important. Conversely, if b is set larger than f, no malfunction occurs if the number of Byzantine failures exceeds b even if the number of node failures exceeds f. This setting is suitable for a system where it is better to stop if it malfunctions (so-called fail stop).
  • the multiplexing system can be configured without problems even when not only a so-called server computer but also a virtual server in a cloud system or a mobile terminal such as a mobile phone as a node. Since this method does not require fault detection and does not cause interruption of processing when a fault occurs, it can be applied to a system that requires real-time operation without a drop in availability due to timeout.
  • the information processing system realizes aligned multicast in which input data and order are determined by repeating a plurality of elections.
  • Election refers to the process of determining the input data of the next round from the input data of one round.
  • Elections include pre-elections and credibility elections performed using data voted in the pre-elections.
  • “Voting” means selecting data and status for the data in each election. Below, the data of the result of the vote may be called "vote”.
  • an order number is sequentially assigned from 1 to a string of input data whose order is determined by aligned multicast.
  • Each round is given a round number sequentially from one.
  • the round number is reset to 1. That is, each round is uniquely identified by a set of (order number, round number).
  • the information determined by voting is a set of (sequence number, round number, node number, selection result (selected state), input data).
  • the node number is a number identifying a node that has voted. If a node can be identified, information (node identification information) other than numerical values (numbers) may be used.
  • the selection result is one of four types: a recommendation state (first recommendation state), a winning state (first determination state), a supplementary state (second recommendation state), and a confirmation state (second determination state).
  • the votes for which the substitute status, the accurate status, the recommendation status, and the winning status have been selected may be referred to as a substitute voting, a true voting, a recommendation voting, and a winning voting, respectively.
  • the supplementary state indicates a state in which the preliminary selection has been selected as data to be recommended but not a candidate to be determined.
  • the confirmation state indicates a state selected as candidate data to be determined by the preliminary selection.
  • the recommendation state indicates a state selected by the confidence selection as data to be recommended but not finalized.
  • the winning state indicates a state selected as data to be determined by the trustee election.
  • the pre-election and confidence elections are alternately repeated.
  • the round number of data used for the preliminary selection is odd, and the round number of data used for the trust selection is even.
  • FIG. 1 is a block diagram showing an example of the configuration of an information processing system 100 according to the first embodiment.
  • the information processing system 100 includes server devices 10-1, ..., server devices 10-n (n is an integer of 4 or more), and client devices 20-1, ..., client devices. 20-m (m is an integer of 1 or more) and a network 30.
  • server devices 10-1, ..., server devices 10-n n is an integer of 4 or more
  • client devices 20-1, ..., client devices. 20-m m is an integer of 1 or more
  • the server device 10 corresponds to the above-mentioned node that constitutes a distributed system.
  • the server device 10 and the client device 20 are connected via the network 30 so as to be able to communicate with each other. Also, the server device 10 is connected via the network 30 so as to be able to communicate with other server devices 10.
  • the communication method between each device may be wired or wireless, or both may be combined.
  • the communication between the plurality of server devices 10 is more than the communication between the client device 20 and the server device 10, so these may be divided as higher-speed separate lines.
  • FIG. 2 is a block diagram showing an example of the configuration of the client device 20 and the server device 10 according to the first embodiment.
  • the client device 20 includes a transmission / reception unit 21 and a determination unit 22.
  • the transmission / reception unit 21 transmits input data to each server device 10, and receives an output packet including output data from each server device 10.
  • the determination unit 22 stores the output packet received by the transmitting and receiving unit 21 from each server device 10, and determines the validity of the output data.
  • the server device 10 includes an undetermined data storage unit 11, a confirmed data storage unit 12, a vote storage unit 13, a data reception unit 15, a data transmission unit 16, a vote transmission / reception unit 17, a processing unit 18, and control.
  • the data receiving unit 15 receives data transmitted from an external device such as the client device 20.
  • the data receiving unit 15 receives input data from the client device 20.
  • the undetermined data storage unit 11 stores the input data received by the data reception unit 15 from the client device 20.
  • the decided data storage unit 12 stores the input data whose order is decided by the control unit 19 in combination with an order number indicating the decided order.
  • the stored input data is deleted from the undetermined data storage unit 11.
  • the vote transmission / reception unit 17 transmits / receives the result (selection result) of the vote to / from another server device 10. For example, the vote transmission / reception unit 17 receives votes from other server devices 10.
  • the vote storage unit 13 stores the votes of the other server devices 10 collected via the vote transmission / reception unit 17 and the self vote determined by the control unit 19.
  • the self-voting is the voting determined by the control unit 19 in the own device.
  • the own vote stored in the vote storage unit 13 is sent to the other server device 10 at any time via the vote transmission / reception unit 17.
  • the processing unit 18 sequentially reads out the sequence number and the input data from the finalized data storage unit 12, receives the input data, executes predetermined processing, and outputs an output result (output data).
  • the number of input data used for the predetermined process is arbitrary. For example, one or more input data are used for predetermined processing according to the order number. Further, the number of output data to be output in a predetermined process is also arbitrary. Ordinarily, the output data is also assigned an order number (output order number) different from the order number of the input data.
  • the data transmission unit 16 transmits data to an external device such as the client device 20.
  • the data transmission unit 16 collects output data output from the processing unit 18 into an output packet and transmits the output packet to the transmission / reception unit 21 of the client device 20.
  • the output packet is, for example, in the form of a set of (output order number, node number, output data).
  • the determination unit 22 of the client device 20 holds the output sequence number (current output sequence number) of the output data to be determined next. For example, when receiving an output packet having the same output data and having the current output order number from, for example, b + 1 nodes or more, the determination unit 22 determines the output data as valid data, and the current output order number is 1 Advance.
  • the control unit 19 of the server device 10 controls an election using data of each round.
  • the control unit 19 holds the order number (the current order number) of the input data to be determined next and the round number (the current round number) of the round currently being elected.
  • the round corresponding to the current sequence number and the current round number is called the current round.
  • the control unit 19 reads input data from the undecided data storage unit 11, determines self voting as a recommendation vote of round 1, and stores it in the vote storage unit 13.
  • control unit 19 reads out the votes stored in the vote storage unit 13, performs a preliminary election or a trustee election for the current round, determines a self-vote of the next round, and stores it in the vote storage unit 13; Advance the number one.
  • control unit 19 stores the input data and the current order number in the fixed data storage unit 12, advances the current order number by 1, and sets the current round number to 1.
  • the control unit 19 includes a first determination unit 51 and a second determination unit 52.
  • the first determination unit 51 executes a preliminary selection (first determination process).
  • the second determination unit 52 executes a confidence selection (second determination process).
  • Confidence elections vote for the data in the current round, for example, when a vote of (f + 2 b + 1) or more is received for the same data (second condition), In this election, when a vote of (b + 1) or more is received for the same data (third condition), the recommendation status is voted for the data.
  • the preliminary selection and the confidence selection may be performed as follows. For example, in the preliminary selection, when the first condition is not satisfied, a supplementary status is given to data selected arbitrarily (for example, random) when a vote of (n ⁇ f) or more is received (fourth condition) You may vote. In addition, in the election for confidence, if the second condition is not satisfied and the third condition is met, the vote for the recommendation state may be voted on the data when the (n ⁇ f) or more votes are received. . In addition, in the case of confidence selection, when the second and third conditions are not met, data selected arbitrarily (for example, randomly) when (n-f) or more votes are received (fifth condition) It is good to vote the state of recommendation.
  • each node's vote for the odd round is either one of the recommendation vote or the election vote, and each node's vote for the even round is either an alternate vote or an accurate vote. .
  • FIG. 3 is a view showing an example of the data structure of data stored in the vote storage unit 13.
  • the vote storage unit 13 stores a state in which the input data is voted for each sequence number, round number, and node number.
  • a to G are input data.
  • the ballot from the node of the subsequent round in the sequence number is pseudo-received the correct or winning of the input data.
  • the winning vote of the input data B is received in the round 5 of the order number s. For this reason, round 6 of sequence number s is considered to have received the correct vote of input data B, and round 7 is considered to have received the winning vote of input data B.
  • the undecided data storage unit 11, the decided data storage unit 12, and the vote storage unit 13 are generally used, such as a hard disk drive (HDD), an optical disc, a memory card, and a random access memory (RAM). It can be configured by any storage medium.
  • HDD hard disk drive
  • optical disc optical disc
  • memory card a memory card
  • RAM random access memory
  • FIG. 4 is a diagram for describing an operation example of aligned multicast.
  • the six server devices 10 are also referred to as node 1 to node 6, respectively. It is assumed that node 4 is a Byzantine failure.
  • a to F represent input data.
  • the underlined letters A to F indicate that it is a recommendation vote or an alternate vote.
  • the underlined letters A to F indicate that it is a winning ballot or an accurate ballot.
  • the distinction between the recommendation vote and the alternate vote and the distinction between the elected vote and the incumbent vote can be made according to whether the round number is odd or even.
  • a set enclosed in parentheses is a set of votes used for election.
  • the symbol "-" indicates a vote not used for election. Also, since the votes are collected and elections are held when the required number is complete, not all votes are used for election.
  • Each node collects round 1 voting data.
  • Node 1 has collected votes from node 2 to node 5.
  • 5 votes are collected for any normal node and there are not 4 votes for the same input data. Therefore, each node randomly selects the input data and makes round 2 by-pass voting.
  • Each node collects round 2 voting data.
  • Node 1 has collected votes from node 2 to node 5.
  • collecting 5 votes for any normal node will not result in 2 false votes for the same input data. Therefore, each node randomly selects the input data and makes a round 3 recommendation vote.
  • node 4 is a Byzantine fault, it sends false false votes to each node.
  • Each node collects round 4 voting data.
  • Nodes 1, 2, 5 and 6 collected 5 votes.
  • the same input data B is determined as input data of the sequence number in all normal nodes.
  • the input data B is stored in the confirmed data storage unit 12 together with the order number. Also, the input data B stored in the undetermined data storage unit 11 of the node 2 is deleted. Up to here, aligned multicast has been performed.
  • the determined input data is output to the processing unit 18.
  • the processing unit 18 executes processing using the determined input data.
  • the output data output as the processing result of the processing unit 18 of each node is a combination of the output order number and the node number, and is determined as an output packet in the client device 20 via the data transmission unit 16 and the transmission / reception unit 21. Collected in section 22.
  • the determination unit 22 determines the output data as valid output data.
  • FIG. 5 is a flow chart showing the overall flow of aligned multicast in the first embodiment.
  • FIG. 5 shows a process performed by the control unit 19 (the first determination unit 51, the second determination unit 52) of each node.
  • the process of FIG. 5 is executed as needed, for example, when data is received from the client device 20 or another node, and the contents of the undetermined data storage unit 11 and the vote storage unit 13 change.
  • the first determination unit 51 determines whether the current round number is 1 and the self-vote of round 1 is undecided (step S1). If the current round number is 1 and the self-voted of round 1 is undecided (step S1: Yes), the first determination unit 51 determines whether or not input data is stored in the undecided data storage unit 11 (Step S2). If not stored (step S2: No), the process ends. When it is stored (step S2: Yes), the first determination unit 51 sets the recommendation vote of the input data as the self-vote of round 1 (step S3).
  • step S4 determines whether the current round number is an odd number. In the case of an odd number (step S4: Yes), the first determination unit 51 determines whether or not votes of the same input data from [(n + b) / 2] +1 nodes or more are included in the collected set of votes of the current round. (Step S5). When there is a vote for the same input data from [(n + b) / 2] +1 nodes or more (step S5: Yes), the first determination unit 51 sets the correct vote for the input data as the self-vote of the next round (step S6). ). The first determination unit 51 also adds 1 to the current round number.
  • step S5 When there is no vote for the same input data from [(n + b) / 2] +1 nodes or more (step S5: No), the first determination unit 51 sets (n ⁇ f) or more to the collected set of votes for the current round. It is determined whether there is a vote from a node (step S7). If there is no vote from (n ⁇ f) nodes or more (step S7: No), the process ends.
  • the first determination unit 51 When there is a vote from (n ⁇ f) nodes or more (step S7: Yes), the first determination unit 51 follows the alternate vote of the input data arbitrarily selected from the collected set of votes of the current round collected It is assumed that the round is self-voted (step S8). The first determination unit 51 also adds 1 to the current round number.
  • step S6 After step S6, after step S8, and when it is determined that the current round number is not an odd number (even number) in step S4 (step S4: No), the second determination unit 52 collects the current round It is determined whether or not there is an accurate vote of the same input data from (f + 2b + 1) or more nodes in the set of votes (step S9). If there is an accurate vote of the same input data from (f + 2b + 1) or more nodes (step S9: Yes), the second determination unit 52 sets the winning vote of the input data as the self-vote of the next round (step S10). Further, the second determination unit 52 stores the input data and the current order number in the determined data storage unit 12. Further, the second determination unit 52 increments the current sequence number by 1, and sets the current round number to 1. Thereafter, the process proceeds to step S1.
  • step S9 If there is no accurate vote for the same input data from (f + 2b + 1) or more nodes (step S9: No), the second determination unit 52 votes from the nodes for (n ⁇ f) or more to the collected set of votes for the current round. It is determined whether there is any (step S11). If there is no vote from (n ⁇ f) nodes or more (step S11: No), the process ends.
  • step S11: Yes When there is a vote from (n ⁇ f) or more nodes (step S11: Yes), the second determination unit 52 selects the same number of votes of the same input data from (b + 1) or more nodes in the collected set of votes of the current round. It is determined whether or not there is (step S12). (B + 1) When there is an accurate vote of the same input data from nodes above (step S12: Yes), the second determination unit 52 sets the recommendation vote of the input data as the self-vote of the next round (step S13). Also, the second determination unit 52 adds 1 to the current round number. Thereafter, the process proceeds to step S5.
  • step S12 If there is no accurate vote for the same input data from (b + 1) or more nodes (step S12: No), the second determining unit 52 selects the recommendation vote for the input data arbitrarily selected from the collected set of votes for the current round. As a self-vote of the next round (step S14). Also, the second determination unit 52 adds 1 to the current round number. Thereafter, the process transitions to step 5.
  • input data included in a vote is also referred to as a vote value.
  • # is a symbol representing the number of elements of the set.
  • is a symbol representing the common part of the set.
  • Lemma 1 When the number of Byzantine failures is less than or equal to b, the input data of the correct votes of normal nodes in the same round are all equal. [Proof] It suffices to prove that the values of the true votes x and y of two normal nodes in the round r + 1 are equal. Of the round r votes used in the preliminary selection that has decided the final vote x, let Ex be a set of votes having the same value as x. Let a set of nodes that have voted Ex be Mx. Similarly, Ey and My are defined for y.
  • Mx and My be a set of nodes that have voted Ex and Ey, respectively. From the definition of the algorithm # (Mx) f f + 2b + 1 # (My) n n-f It is. Therefore, # (Mx ⁇ My) # # (Mx) + # (My)-n 2 2b + 1 It is. That is, since the common part of Mx and My is at least 2b + 1 and the number of Byzantine faults is equal to or less than b, at least b + 1 among them is a normal node. Since the votes of normal nodes are not reversed, there will be at least b + 1 common votes in Ex and Ey. These common votes are correct votes of the same value as x because they are included in Ex. Therefore, there will be b + 1 or more valid votes with the same value as x in Ey. Then, according to the definition of the algorithm, y must be a recommendation vote having the same value as x. [End of proof]
  • Ey be the set of votes of round r + 1 used in the election of confidence that determined y.
  • # (Ey) n n-f and the number of Byzantine faults is equal to or less than b, at least n-f of them is the vote of the normal node.
  • these votes are all true votes of the same value.
  • Lemma 4 since f + 2b + 1 ⁇ n-f-b, it means that there is an accurate vote of the same value of f + 2b + 1 or more in Ey. This contradicts the definition of the algorithm because it meets the conditions for selecting a winning vote in the election of confidence. Thus, y can not be a recommendation vote.
  • data output from a node that is a Byzantine failure may be false data.
  • output packets are collected in the determination unit 22 and the same output data can be received from nodes of b + 1 or more, at least one of them is output from the normal node, and the output data is valid. is there.
  • the round proceeds if n-f votes can be collected. At this time, we do not know at all which node is what kind of failure. Therefore, if the node failure is less than or equal to f, at least n ⁇ f votes can always be collected regardless of the timing at which the failure occurs, so the round proceeds.
  • the round proceeds when n-f votes are collected. If the number of failed nodes is small, more votes than n-f may be collected, but we do not wait for the collection. By this, it is possible to secure real time property. That is, instead of waiting until collecting votes of all the nodes, it is possible to realize multiplexing independent of failure detection by proceeding with the round when n-f votes are collected. In addition, when real time property is not required, for example, it may be configured to wait until votes of all nodes are collected until time out.
  • the number of rounds until the winning vote is obtained is not constant. This is because there are places in the algorithm that rely on random selection. If you are lucky in random selection, the votes of each node will be the same in the early rounds, and you will get a winning vote. If you are unlucky, the votes of each node will never be the same. However, from the probabilistic point of view, the possibility that a winning vote can not be won forever is as close to zero as possible. This is a concept called probabilistic termination condition.
  • votes may be selected according to a predetermined rule as follows. (1) Define a preferred node in each round, and select the vote of the preferred node in the next election. The preferred node changes every round. For example, the priority node is changed in order of node number. (2) Priority is given to voting with a small value of the corresponding data. (3) Generate a biased pseudorandom number.
  • the first embodiment is configured to input / output between the client device 20 and the multiplexing system (server device 10).
  • input / output is performed between the multiplexing system ⁇ and the multiplexing system ⁇ . That is, the output data of the multiplexing system ⁇ is the input data of the multiplexing system ⁇ .
  • FIG. 6 is a block diagram showing an example of the configuration of the server device 10 ⁇ included in the information processing system according to the second embodiment.
  • the server device 10 ⁇ is a device included in the multiplexing system ⁇ which is one of the information processing systems. Although only one server device 10 ⁇ is described in FIG. 6, the number of server devices 10 ⁇ is arbitrary as long as it is four or more as in FIG.
  • the multiplexing system ⁇ is connected to a multiplexing system ⁇ having a similar configuration.
  • the server device 10 ⁇ is different from the server device 10 of FIG. 2 in that the server device 10 ⁇ further includes a determination unit 22.
  • the other configurations and functions are the same as those in FIG. 2 which is a block diagram showing the configuration of the server apparatus 10 according to the first embodiment, so the same reference numerals are given and the description thereof is omitted here.
  • the determination unit 22 is disposed in each server device 10 ⁇ of the multiplexing system ⁇ .
  • An output packet output from each node (server apparatus 10 ⁇ ) of the multiplexing system ⁇ is input to the determination unit 22 via the data receiving unit 15.
  • the determination unit 22 holds the output sequence number (current output sequence number) of the output data to be determined next.
  • determination unit 22 takes the output data as input data, and determines the undetermined data storage unit 11. And the current output sequence number is advanced by 1.
  • b ⁇ is a threshold value of the reliability of the multiplexing system ⁇ .
  • the other parts are the same as in the first embodiment.
  • each node should ensure security independently, and even if one node is taken over, it should not be easily transmitted to other nodes. is necessary. Specifically, do not share passwords and secret keys, do not set mutual trust, establish a firewall for each node, use different operating systems (OS) and middleware, and do not fix administrators or vendors Such measures have been taken.
  • OS operating systems
  • the configuration of the present embodiment is as follows.
  • A) Each node and the client device 20 have separate secret keys, which are secrets to each other.
  • B) Each public key is distributed to each node and the client device 20 in advance.
  • C) The client device 20 adds a signature to input data using its own secret key.
  • F When each node receives a vote from another node, it verifies its signature, and further verifies the signature of the client device 20 of the input data included in the vote, and discards the unjustified vote.
  • the input packet has, for example, the following format. (Input data, signature of the input data by the client device 20)
  • Voting for example, has the following format. (Sequence number, round number, node number, selection result, input data, signature of the input data by the client device 20, signature of the vote by the node)
  • the output packet has, for example, the following format. (Sequence number, node number, output data, node signature to this packet)
  • the spoofing of the above (1), (2), and (3) becomes very difficult, and the resistance to unauthorized intrusion is improved.
  • the reason is that the data received from the client device 20 or the normal node can be verified that it is not falsified by the digital signature, and the validity of the election performed in the algorithm of this embodiment is guaranteed.
  • Verification of the signature is performed by, for example, a component (vote transmitting / receiving unit 17, data receiving unit 15 or the like) that receives data. Verification of the signature may be performed by other components.
  • the attacker can transmit any illegal votes from the compromised node, and a normal node receiving this can not exclude false votes only by verifying the signature.
  • the algorithm of this embodiment guarantees the correctness of the output data.
  • Countermeasure (F) also verifies the signature of the input data during the voting if it is not done, if the incorrect input data included in the vote sent from the Byzantine fault node, alternate voting or random selection This is because it is adopted as a recommendation vote, and as a result, there is a possibility that the incorrect input data will be a winning vote in the subsequent rounds.
  • the countermeasure (F) is effective.
  • data may be transmitted and received using secure communication.
  • communication may be established with a communication partner (client device 20, another node) according to a protocol such as SSL (Secure Sockets Layer), and data may be transmitted and received via this communication. This can reduce the computational cost.
  • SSL Secure Sockets Layer
  • the difference from the first embodiment is how to put a signature on the output packet and the number of signatures given to the input data.
  • the multiplexing system ⁇ signs “a set of output sequence number of ⁇ and output data”.
  • input data of the multiplexing system ⁇ is “a set of output sequence number of ⁇ and output data”.
  • a plurality of signatures of each node of the multiplexing system ⁇ are attached to input data.
  • the threshold of the reliability of the multiplexing system ⁇ is b ⁇
  • the given signature must be b ⁇ + 1 or more. Note that all these signatures are different, as the signing entity has different secret keys.
  • the output packet of the multiplexing system ⁇ has, for example, the following format. (Signature by node to output sequence number of ⁇ , node number, output data, [output sequence number of ⁇ , output data])
  • the voting of the multiplexing system ⁇ has, for example, the following format. (Sequence number of ⁇ , round number, node number, selection result, input data, collection of signatures of each node of multiplexing system ⁇ to input data, signature by nodes to this vote)
  • the format of the input data is, for example, [output sequence number of ⁇ , output data].
  • the determination unit 22 takes the [output sequence number of ⁇ , output data] as input data, and determines their signatures Attach a set to its input data. Then, the multiplexing system ⁇ verifies all the signatures of the given b ⁇ + 1 or more multiplexing systems ⁇ as verification of the signature of the input data (measure (F)).
  • the spoofing of (1), (2) and (3) above with respect to normal nodes becomes very difficult, and the resistance to unauthorized intrusion is improved.
  • the countermeasure (F) of the multiplexing system ⁇ excludes invalid input data by verifying all the signatures of the given b ⁇ + 1 or more multiplexing systems ⁇ as verification of the signature of the input data. Secures resistance to falsification of input data.
  • the current round of each node is configured to proceed only by election, but the execution efficiency of the algorithm can be increased by adding an algorithm for copying the votes of other nodes.
  • Copy voting determines self-voting of the round from the set of votes of other nodes in the same round. On the other hand, it should be noted that the election decides the next round's self-voting from the set of votes of the same round.
  • the coincident copy can be configured to be executed by, for example, the first determination unit 51 and the second determination unit 52.
  • the supplemental copy can be configured to be executed by, for example, the second determination unit 52.
  • the recommendation copy can be configured to be executed by, for example, the first determination unit 51.
  • the matching copy means that, for the votes of the same round collected, votes are cast from (b + 1) or more nodes to the votes if “the input data and the selection result” are the same.
  • the substitute copy means that, when there is a substitute vote from nodes (b + 1) or more, a vote is made for the substitute of the input data arbitrarily selected from the collected votes.
  • the votes to be selected may be all votes collected from other nodes, or may be alternate votes collected from (b + 1) or more nodes.
  • the recommendation copy means to vote for the recommendation of input data arbitrarily selected from the collected votes when there is a recommendation vote from (2b + 1) or more nodes and a matching copy is not established.
  • the votes to be selected may be all votes collected from other nodes, or may be recommendation votes collected from (2b + 1) or more nodes.
  • copy voting The significance of copy voting is to decide the same round of voting with a smaller number of votes than the election requires, and consequently to increase the votes of the round concerned. If copy voting is performed by each node, the number of votes necessary for election will be obtained eventually. That is, copy voting itself does not advance the round, but as a result, it has the effect of establishing an election and advancing the round.
  • round r has a final vote. Then, from the definition of the algorithm, there is a vote of the same value of [(n + b) / 2] +1 of round r-1.
  • the maximum number of node failures is f, and according to Lemma 4, since f + 2b + 1 ⁇ [(n + b) / 2] +1, at least 2b + 1 of them are votes of the active node. Then, among these, there will be b + 1 or more of either a winning vote or a recommendation vote. Since these are all true ballots of the same value, they are sufficient to satisfy the condition of matching copy of round r-1.
  • n-f votes of round r-1 there are n-f votes of round r-1. Since the maximum number of node failures is f, at least n-2f votes are votes of active nodes. Since n> 2f + 3b, n-2f ⁇ 3b + 1, and there are b + 1 or more votes for election or 2b + 1 or more for recommendation votes. Since the operating node is a normal node, in the case of the former, according to Lemma 2, the winning votes are all the same value, and the condition of the coincident copy is satisfied. In the latter case, the first half of the conditions for the recommended copy is established. In summary, it is sufficient to establish either a recommendation copy or a match copy.
  • E be a set of votes collected when deciding a vote x.
  • the collected votes do not need to include the votes of the own node, and are also irrelevant to the node number.
  • the set of votes collected by another normal node may be exactly the same as E. Since the algorithm has elements of random selection, the vote determined from E is not necessarily the same as x, but may be the same because it is random selection.
  • the votes of another normal node may have the same content (the input data and the selection result) as x. That is, even if the content of the vote x of one normal node is copied to another normal node, the integrity of multiplexing is not broken. If it were to be broken, even if it was decided not by copying but by election, it would be inconsistent as it would break the integrity. Of course, it is not desirable to simply copy votes from any node. This is because the copy source may be a Byzantine failure node. However, if votes of the same contents are obtained from the b + 1 node, at least one of them is a normal node, so it does not matter which node is a normal node, you may copy the vote (match Copy legitimacy).
  • the recommendation votes may be determined in the case of random selection, or from b + 1 or more valid votes. If recommendation votes are obtained from the 2b + 1 nodes, at least b + 1 of them are votes of normal nodes. Among these, if there is at least one recommendation vote determined by random selection, it is acceptable to vote for any input data according to the same logic as in the case of the alternate vote (legacy of recommendation copy). On the other hand, if there is no recommendation vote by random selection, the input data of the correct votes of normal nodes are all equal according to Lemma 1, so all the input data of recommendation votes determined from that will also be the same. The conditions for copying will be met. Note that it is a condition that no recommendation copy is established.
  • Each of the three types of copy votes is independent, and all of the matching copy, the supplemental copy, and the recommendation copy may be applied, or some of them may be applied.
  • the degree of application of copy voting changes the degree of improvement in the efficiency of execution of the algorithm.
  • thresholds of the supplemental copy and the recommendation copy may be larger than the threshold. Adoption of a larger threshold lowers the improvement of the execution efficiency of the algorithm by copying, but also reduces the influence from the Byzantine failure node, so it can not be said to be bad.
  • the threshold f + 2b + 1 for winning determination, the threshold [(n + b) / 2] +1 for exact determination, the threshold b + 1 for output data determination, and the threshold 2b + 1 for recommendation copy are generalized respectively to t1, t2, t3, and t4.
  • the algorithm is still valid if t1, t2, t3, t4 satisfy the following conditions. f + 2b + 1 ⁇ t1 ⁇ nf ⁇ b [(N + b) / 2] + 1 ⁇ t2 ⁇ nfb b + 1 ⁇ t3 ⁇ nf ⁇ b 2b + 1 ⁇ t4 ⁇ nfb
  • the smaller the threshold the better the algorithm execution efficiency.
  • Increasing the threshold has the effect of increasing the redundancy of the algorithm.
  • Modification 2 In the above embodiment, although four types of states, ie, the supplementary state, the exact state, the recommendation state, and the winning state, are used, the states defined by other methods may be used. For example, these four types of states may be replaced as follows. Recommendation state ⁇ recommendation state of odd rounds Alternate state ⁇ recommendation state of even rounds Winning state ⁇ winning state of odd rounds Correct state ⁇ winning state of even rounds
  • FIG. 7 is a diagram illustrating an example of a hardware configuration of the device of the embodiment.
  • the apparatus of this embodiment includes a control device 31, a main storage device 32, an auxiliary storage device 33, a display device 34, an input device 35 and a communication device 36.
  • the control unit 31, the main storage unit 32, the auxiliary storage unit 33, the display unit 34, the input unit 35 and the communication unit 36 are connected to one another via a bus 37.
  • the control device 31 executes the program read from the auxiliary storage device 33 to the main storage device 32.
  • the main storage device 32 is a memory such as a ROM (Read Only Memory) or a RAM.
  • the auxiliary storage device 33 is, for example, an HDD or a memory card.
  • the display device 34 is a screen for displaying the state of the device.
  • the display device 34 is, for example, a liquid crystal display or the like.
  • the input device 35 is an interface for operating the device.
  • the input device 35 is, for example, a keyboard, a mouse or the like.
  • the communication device 36 is an interface for connecting to a network.
  • Computer readable recording medium such as CD-ROM, memory card, CD-R and DVD (Digital Versatile Disk) in the form of an installable or executable program for the program executed by the device of the present embodiment
  • the program executed by the device of the present embodiment may be stored on a computer connected to a network such as the Internet and provided by downloading via the network.
  • the program executed by the device of the present embodiment may be provided or distributed via a network such as the Internet without downloading the program.
  • the program of the apparatus of the present embodiment may be provided by being incorporated in advance in a ROM or the like.
  • the program executed by the server device 10 according to the present embodiment has a module configuration including functional blocks that can be realized as a program among the functional blocks of the server device 10 described above.
  • the program executed by the client device 20 has a module configuration including each functional block of the client device 20 described above.
  • each module is loaded onto the main storage device 32 as the control device 31 reads out a program from the storage medium and executes it as actual hardware. That is, the modules are generated on the main storage device 32.
  • the functional blocks of the apparatus may be realized by hardware such as an IC (Integrated Circuit) without being realized by a program.
  • the present embodiment is applicable not only to the server device 10 but also to a personal computer, a virtual machine, a process on the OS, and the like.
  • the client device 20 may be a personal computer, a virtual machine, a process on the OS, or the like.
  • the network 30 may be a wide area network (WAN) such as the Internet, a virtual network, an inter-process communication (IPC), or the like in addition to the LAN.
  • WAN wide area network
  • IPC inter-process communication

Abstract

 情報処理システムは、第1決定部と第2決定部と処理部とを備える。第1決定部は、同じデータに対してt2以上の第1推薦状態または第1確定状態の選択結果が選択されたことを示す第1条件を満たす場合、当該データに対して第2確定状態の選択結果を決定する。第2決定部は、同じデータに対してt1以上の第2確定状態の選択結果が選択されたことを示す第2条件を満たす場合、当該データに対して第1確定状態の選択結果を決定し、同じデータに対して(b+1)以上の第2確定状態の選択結果が選択されたことを示す第3条件を満たす場合、当該データに対して第1推薦状態の選択結果を決定する。処理部は、第1確定状態に決定されたデータに対して処理を実行して出力結果を出力する。

Description

情報処理システム、サーバ装置、情報処理方法およびプログラム
 本発明は、情報処理システム、サーバ装置、情報処理方法およびプログラムに関する。
 複数のノードに同じ処理を多重化して実行する多重化システムは、可用性や信頼性を向上させる手法として実用化されている。多重化システムでは、一部のノードが停止障害となっても、他のノードが処理を継続できるため可用性が向上する。また、各ノードが出力する処理の結果を比較して、間違った結果を除外することにより信頼性が向上する。
 多重化システムの一例として、並べて設置した同一機種の専用コンピュータを多重化するシステムが存在する。この場合、コンピュータ間の通信は安定しており、コンピュータの実行速度も互いにほぼ等しい。そのため、一方のコンピュータに一定時間以上の遅延が発生した場合は、それを停止障害として扱うことが妥当である。このような環境は、同期ネットワークモデルとして分類される。
 同期ネットワークモデルでは、比較的短い時間のタイムアウトを用いて停止障害を検出できる。これを利用した二重化システムは広く一般に利用されている。いわゆるHA(ハイアベイラビリティ)システムやFT(フォールトトレラント)サーバが該当する。また出力結果の多数決を用いた三重化システムも実用化されている。
 一方、インターネットの発達により、インターネットを介して複数のコンピュータが連動するシステムが実用化されている。また、仮想マシンを利用したサーバも普及している。いわゆるクラウドシステムがこの典型的な例として挙げられる。一般に、ネットワーク上に高度に分散して仮想化された環境では、一過性のネットワーク遅延やコンピュータの実行の渋滞はしばしば起こることであり、これを停止障害として扱うことは妥当ではない。このような環境は、非同期ネットワークモデルとして分類される。
 非同期ネットワークモデルでは、一時的にノードが動作していないだけであれば停止障害であるとはみなさない。従って、比較的短い時間のタイムアウトでは停止障害を判定できない。停止障害の検出を行わずに多重化の一貫性を維持するためには、同期ネットワークモデルに比べてより多くの稼働ノードを必要とする。
特許第3655263号公報 特許第2534430号公報
ZooKeeper: A Distributed Coordination Service for Distributed Applications <URL:http://zookeeper.apache.org/doc/current/zookeeperOver.html>
 非同期ネットワークモデルで出力結果の多数決を用いたシステムの場合、多数決に必要な出力結果が非同期に得られる。このため、特に稼働ノード数が多い場合などでは、必要な情報(出力結果)を得るまで処理が遅延する状況を回避することが望ましい。
 上述した課題を解決し、目的を達成するために、本発明の情報処理システムは、第1決定部と第2決定部と処理部とを備える。第1決定部は、同じデータに対してt2以上の第1推薦状態または第1確定状態の選択結果が選択されたことを示す第1条件を満たす場合、当該データに対して第2確定状態の選択結果を決定する。第2決定部は、同じデータに対してt1以上の第2確定状態の選択結果が選択されたことを示す第2条件を満たす場合、当該データに対して第1確定状態の選択結果を決定し、同じデータに対して(b+1)以上の第2確定状態の選択結果が選択されたことを示す第3条件を満たす場合、当該データに対して第1推薦状態の選択結果を決定する。処理部は、第1確定状態に決定されたデータに対して処理を実行して出力結果を出力する。
図1は、第1の実施形態にかかる情報処理システムの構成の一例を示すブロック図である。 図2は、第1の実施形態のクライアント装置およびサーバ装置の構成の一例を示すブロック図である。 図3は、投票記憶部に記憶されるデータのデータ構造の一例を示す図である。 図4は、整列マルチキャストの動作例を説明するための図である。 図5は、第1の実施形態における整列マルチキャストの全体の流れを示すフローチャートである。 図6は、第2の実施形態にかかる情報処理システムに含まれるサーバ装置の構成の一例を示すブロック図である。 図7は、実施形態の装置のハードウェアの構成の一例を示す図である。
 以下に、本発明にかかる情報処理システム、サーバ装置、情報処理方法およびプログラムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態によりこの発明が限定されるものではない。
 (用語の定義)
 最初に、下記実施形態で用いる用語の定義を記載する。
 分散システム(情報処理システム)を構成する独立したコンピュータを「ノード」と呼ぶ。各ノードは独立しており、ノード間はネットワークを介して通信を行うことができる。ノードが全く動作しない状態になることを、「停止障害」と呼ぶ。ノードが誤動作する状態になることを「ビザンティン障害」と呼ぶ。停止障害とビザンティン障害とを合わせて「ノード障害」と呼ぶ。ノード障害となっていないノードのこと「稼働ノード」と呼ぶ。ビザンティン障害となっていないノードのことを「正常ノード」と呼ぶ。特に、稼働ノードは必ず正常ノードである。定義上、停止障害にはビザンティン障害は含まないものとする。ビザンティン障害の誤動作の内容は任意であり、不正侵入を原因とする場合も含む。
 ところで、多重化システムを可用性の視点で見たとき、システムの稼働率が1つの指標となる。例えば典型的なHAシステムの場合、主系に停止障害が発生した後、従系がタイムアウトによって停止障害を検出してサービスを再開するまでの間、サービスは稼働しておらず稼働率がそのぶん低下する。一般に、タイムアウトを用いて停止障害を検出する方法では、稼働率を上げるためにはタイムアウトをできるだけ短い時間に設定する。しかし、タイムアウトの時間が短すぎると停止障害の誤検出が発生し、却って信頼性や可用性が低下する可能性があるというジレンマがある。この課題に対する根本的な解決策の1つとして、障害発生時にもリアルタイム性が確保できるノンブロッキング多重化が知られている。ノンブロッキング多重化は障害検出を必要とせず、障害の発生時に処理の中断が発生しない方式であるため、タイムアウトによる稼働率の低下がない。
 多重化システムを信頼性の視点で見たとき、ビザンティン障害に耐性を持つ多重化システムはより信頼性が高い。しかし、ビザンティン障害に耐性を持って多重化の一貫性を維持するためにはより多くの稼働ノードを必要とする。例えば、同期ネットワークモデルを前提とした多重化技術で、全ノード数をn、許容できる最大ノード障害数をf、許容できる最大ビザンティン障害数をbとするとき、n>f+2bが条件となる技術が存在する。
 (第1の実施形態)
 上記のように、特に稼働ノード数が多い場合などでは、必要な情報(出力結果)を得るまで処理が遅延する状況を回避することが望ましい。そこで、本実施形態の情報処理システムは、少なくともビザンティン障害に対して耐性を有し、かつ、非同期ネットワークモデルを前提とした一貫性を有し、処理の遅延を抑制することができる多重化制御処理を実現する。なお、本実施形態では、さらに障害発生時におけるリアルタイム性を確保したノンブロッキング多重化を実現することもできる。
 本実施形態の多重化システムでは、多重化システムを構成する各ノードはすべて同じ初期状態から始まる。各ノードに入力されるデータは、整列マルチキャストを通して各ノードに配送される。その入力データに基づいて各ノードで決定性のあるプログラムが実行される。そして、その結果としてデータが出力される。
 この方式では、各ノードの初期状態は同一であり、各ノードへの入力列は整列マルチキャストにより同一順序となり、決定性のあるプログラムの性質により、各ノードの状態は同一に保たれ、出力列も同一となる。結果として、プログラムの実行が多重化される。
 本実施形態の情報処理システムによれば、非同期ネットワークモデルを前提として、ビザンティン障害となったコンピュータ数がb(最大ビザンティン障害数)以下ならば、多重化システムから得られる有効な出力データは正当である。さらに、ノード障害の数がf(許容できる最大ノード障害数)以下ならば、多重化システムは処理を継続できる。
 また、本実施形態の情報処理システムでは、信頼性の閾値に相当するfと可用性の閾値に相当するbとを分けて設定できる。fをbより大きく設定した場合、ビザンティン障害の数がbまで発生したときでも、それに加えてさらにf-bの停止障害を許容できる。この設定は可用性が比較的重要であるシステムに向いている。逆に、bをfより大きく設定した場合、ノード障害の数がfを超えたとしても、ビザンティン障害の数がbを越えなければ、誤動作はしない。この設定は、誤動作するぐらいなら停止してしまったほうがよい(いわゆるフェールストップ)システムに向いている。
 非同期ネットワークモデルを前提としているので、いわゆるサーバコンピュータだけではなく、クラウドシステム内の仮想サーバや、携帯電話等のモバイル端末などをノードとしても、問題なく多重化システムが構成できる。障害検出を必要とせず、障害の発生時に処理の中断が発生しない方式のため、タイムアウトによる稼働率の低下がなく、リアルタイム性が必要なシステムにも適用可能である。
 本実施形態にかかる情報処理システムは、複数の選挙を繰り返すことにより入力データおよび順序を決定する整列マルチキャストを実現する。選挙とは、あるラウンドの入力データから次のラウンドの入力データを決定する処理を表す。選挙は、予備選と、予備選で投票されたデータを用いて実行される信任選とを含む。「投票する」とは、各選挙で、データ、および、当該データに対する状態を選択することを表す。以下では、投票された結果のデータを「投票」という場合がある。
 本実施形態では、整列マルチキャストによって順序が確定する入力データの列に対して、1から順に順序番号が付与される。各ラウンドには、1から順にラウンド番号が付与される。ここで、入力データが確定した時には、ラウンド番号は1にリセットされる。すなわち、各ラウンドは(順序番号、ラウンド番号)の組によって一意に特定される。
 投票により決定される情報は、(順序番号、ラウンド番号、ノード番号、選択結果(選択された状態)、入力データ)の組である。ノード番号は、投票を行ったノードを識別する番号である。ノードを識別できれば数値(番号)以外の情報(ノード識別情報)を用いてもよい。選択結果は、推薦状態(第1推薦状態)、当選状態(第1確定状態)、補欠状態(第2推薦状態)、および、当確状態(第2確定状態)の4種類のいずれかである。なお、以下では補欠状態、当確状態、推薦状態および当選状態が選択された投票を、それぞれ補欠投票、当確投票、推薦投票および当選投票という場合がある。
 補欠状態は、予備選により、確定する候補ではないが推薦するデータとして選択された状態を示す。当確状態は、予備選により、確定する候補のデータとして選択された状態を示す。推薦状態は、信任選により、確定ではないが推薦するデータとして選択された状態を示す。当選状態は、信任選により、確定するデータとして選択された状態を示す。
 予備選と信任選は交互に繰り返される。予備選に用いるデータのラウンド番号は奇数であり、信任選に用いるデータのラウンド番号は偶数である。
 図1は、第1の実施形態にかかる情報処理システム100の構成の一例を示すブロック図である。図1に示すように、情報処理システム100は、サーバ装置10-1、・・・、サーバ装置10-n(nは4以上の整数)と、クライアント装置20-1、・・・、クライアント装置20-m(mは1以上の整数)と、ネットワーク30とを備える。以下、サーバ装置10-1、・・・、およびサーバ装置10-nを区別する必要がない場合は単にサーバ装置10という。同様に、クライアント装置20-1、・・・、およびクライアント装置20-mを区別する必要がない場合は、単にクライアント装置20という。サーバ装置10が、分散システムを構成する上記ノードに相当する。
 サーバ装置10とクライアント装置20は、互いに通信できるようにネットワーク30を介して接続されている。また、サーバ装置10は、他のサーバ装置10と互いに通信できるようにネットワーク30を介して接続されている。なお、各装置間の通信方式は、有線であっても無線であってもよく、また、両方を組み合わせてもよい。複数のサーバ装置10間の通信は、クライアント装置20とサーバ装置10との間の通信よりも多くなるため、これらをより高速な別回線として分けてもよい。
 図2は、第1の実施形態のクライアント装置20およびサーバ装置10の構成の一例を示すブロック図である。クライアント装置20は、送受信部21と、判定部22と、を備える。
 送受信部21は、各サーバ装置10へ入力データを送信し、また、出力データを含む出力パケットを各サーバ装置10から受け取る。判定部22は、各サーバ装置10から送受信部21が受信した出力パケットを記憶し、出力データの有効性を判定する。
 サーバ装置10は、未確定データ記憶部11と、確定データ記憶部12と、投票記憶部13と、データ受信部15と、データ送信部16と、投票送受信部17と、処理部18と、制御部19と、を備える。
 データ受信部15は、クライアント装置20などの外部装置から送信されたデータを受信する。例えばデータ受信部15は、クライアント装置20から入力データを受信する。
 未確定データ記憶部11は、クライアント装置20からデータ受信部15が受信した入力データを記憶する。確定データ記憶部12は、制御部19により順序が確定された入力データを、決定された順序を示す順序番号と組みにして記憶する。順序が確定された入力データが未確定データ記憶部11に記憶されている場合には、記憶されている入力データは未確定データ記憶部11から削除される。
 投票送受信部17は、他のサーバ装置10との間で投票の結果(選択結果)を送受信する。例えば投票送受信部17は、他のサーバ装置10からの投票を受信する。
 投票記憶部13は、投票送受信部17を介して収集した他のサーバ装置10の投票、および、制御部19が決定した自投票を記憶する。自投票とは、自装置内の制御部19で決定した投票である。投票記憶部13に記憶された自投票は、投票送受信部17を介して他のサーバ装置10に随時送られる。
 処理部18は、確定データ記憶部12から順に順序番号と入力データを読み出し、その入力データを入力として、所定の処理を実行して出力結果(出力データ)を出力する。なお、所定の処理に用いる入力データの個数は任意である。例えば、順序番号に従い1または複数の入力データが所定の処理に用いられる。また、所定の処理で出力される出力データの個数も任意である。通常は、出力データに対しても、入力データの順序番号と異なる順序番号(出力順序番号)が付与される。
 データ送信部16は、クライアント装置20などの外部装置に対してデータを送信する。例えばデータ送信部16は、処理部18により出力された出力データを出力パケットにまとめ、クライアント装置20の送受信部21に送信する。ここで、出力パケットは、例えば(出力順序番号、ノード番号、出力データ)の組の形式である。
 クライアント装置20の判定部22は、次に確定すべき出力データの出力順序番号(現出力順序番号)を保持する。判定部22は、例えばb+1ノード以上から、現出力順序番号を有し、同一の出力データを有する出力パケットを受信した場合に、その出力データを有効なデータとして確定し、現出力順序番号を1進める。
 サーバ装置10の制御部19は、各ラウンドのデータを用いる選挙を制御する。制御部19は、次に確定すべき入力データの順序番号(現順序番号)と、現在選挙を行っているラウンドのラウンド番号(現ラウンド番号)を保持する。現順序番号と現ラウンド番号に対応するラウンドのことを現ラウンドと呼ぶ。制御部19は、現ラウンド番号が1の時、未確定データ記憶部11から入力データを読み出し、ラウンド1の推薦投票として自投票を決定し投票記憶部13に格納する。
 また、制御部19は、投票記憶部13に記憶された投票を読み出し、現ラウンドに関する予備選または信任選を行い、次のラウンドの自投票を決定して投票記憶部13に格納し、現ラウンド番号を1進める。また、制御部19は、信任選の結果が当選となった時、その入力データと現順序番号を確定データ記憶部12に格納し、現順序番号を1進め、現ラウンド番号を1にする。
 制御部19は、第1決定部51と、第2決定部52と、を備えている。第1決定部51は、予備選(第1決定処理)を実行する。第2決定部52は、信任選(第2決定処理)を実行する。
 予備選は、現ラウンドの投票に関して、同じデータに対して例えば(n+b)の過半数(=[(n+b)/2]+1)以上の推薦状態または当選状態の投票が受信された場合(第1条件)に、次のラウンドの投票として、当該データに対して当確状態を投票することを特徴とする選挙である。
 信任選は、現ラウンドの投票に関して、同じデータに対して例えば(f+2b+1)以上の当確状態の投票が受信された場合(第2条件)に、当該データに対して当選状態を投票し、それ以外で同じデータに対して(b+1)以上の当確状態の投票が受信された場合(第3条件)に、当該データに対して推薦状態を投票することを特徴とする選挙である。
 なお、ノンブロッキング多重化を実現する場合は、予備選および信任選を以下のようにしてもよい。例えば、予備選では、第1条件を満たさない場合に、(n-f)以上の投票が受信された時点(第4条件)で、任意(例えばランダム)に選択したデータに対して補欠状態を投票するものとしてもよい。また、信任選では、第2条件を満たさず、第3条件を満たす場合に、(n-f)以上の投票が受信された時点で、当該データに対して推薦状態を投票するものとしてもよい。また、信任選では、第2条件および第3条件を満たさない場合に、(n-f)以上の投票が受信された時点(第5条件)で、任意(例えばランダム)に選択したデータに対して推薦状態を投票するものとしてもよい。
 各ラウンドに対する自投票は、一度決定したら覆してはならない。すなわち、既に自投票が決定していたならば、新たな投票は行わない(二重投票の禁止)。整理すると、各ノードの奇数ラウンドへの投票は、推薦投票か当選投票のいずれかの一票であり、各ノードの偶数ラウンドへの投票は、補欠投票か当確投票のいずれかの一票である。
 図3は、投票記憶部13に記憶されるデータのデータ構造の一例を示す図である。なお図3は、ノード数n=6の場合の例である。投票記憶部13は、順序番号、ラウンド番号、ノード番号ごとに入力データと投票した状態を記憶する。
 図3の例では、A~Gが入力データである。当選投票がある場合、当該順序番号中の後続のラウンドのそのノードからの投票については、疑似的に当該入力データの当確または当選を受信したものとみなす。図3の例では、ノード2とノード3からは、順序番号sのラウンド5で入力データBの当選投票を受信している。このため、順序番号sのラウンド6は入力データBの当確投票を受信したとみなされ、ラウンド7は入力データBの当選投票を受信したとみなされる。
 なお、未確定データ記憶部11、確定データ記憶部12、および、投票記憶部13は、HDD(Hard Disk Drive)、光ディスク、メモリカード、RAM(Random Access Memory)などの一般的に利用されているあらゆる記憶媒体により構成することができる。
 ここで図4を参照して、整列マルチキャストの動作の具体例を説明する。図4は、整列マルチキャストの動作例を説明するための図である。この例では、n=6、f=1、b=1とする。この場合、[(n+b)/2]+1=4、f+2b+1=4、n-f=5である。以下では、6個のサーバ装置10をそれぞれノード1~ノード6ともいう。ノード4がビザンティン障害となっているものとする。
 図4中、A~Fは入力データを表す。下線なしのA~Fは推薦投票または補欠投票であることを表す。下線付きのA~Fは当選投票または当確投票であることを表す。なお、推薦投票であるか補欠投票であるかの区別、および、当選投票であるか当確投票であるかの区別は、ラウンド番号が奇数であるか偶数であるかに従って区別できる。図4中、かっこで括った集合は、選挙に用いる投票の集合である。記号「-」は、選挙に用いなかった投票を示す。なお投票を収集していき必要数が揃った段階で選挙が行われるため、すべての投票が選挙に用いられるわけではない。
 以下に整列マルチキャストの流れを説明する。
 当該順序番号の入力データを決定するとき、各ノードの未確定データ記憶部11には入力データA~Fが格納されているのとする。これらの入力データは、各ノードのラウンド1の投票の入力データとなる。ただし、ビザンティン障害となっているノード4は除く(以下同様)。
 各ノードは、ラウンド1の投票データを収集する。予備選に必要な最大の投票数はn-f=5である。ノード1はノード2~ノード5までの投票を収集した。ノード1は、自投票と合わせて、5票を収集したが、[(n+b)/2]+1=4個の同じ入力データの投票が存在しない。このため、ノード1は、ランダムに入力データDを選び、ラウンド2の補欠投票とした。同様に、いずれの正常ノードでも5票を収集して4個の同じ入力データの投票がない。このため各ノードは、ランダムに入力データを選び、ラウンド2の補欠投票とした。
 各ノードは、ラウンド2の投票データを収集する。信任選に必要な最大の投票数はn-f=5である。ノード1はノード2~ノード5までの投票を収集した。ノード1は、自投票と合わせて、5票を収集したが、b+1=2個以上の同じ入力データの当確投票が存在しない。このため、ノード1は、ランダムに入力データBを選び、ラウンド3の推薦投票とした。同様に、いずれの正常ノードでも5票を収集しても2個の同じ入力データの当確投票ない。このため各ノードは、ランダムに入力データを選び、ラウンド3の推薦投票とした。なおここで、ノード4はビザンティン障害となっているため、虚偽の当確投票を各ノードに送っている点に注意する。
 各ノードは、ラウンド3の投票データを収集する。ノード1,3,6は[(n+b)/2]+1=4個の同じ入力データBの投票を得たので、入力データBの当確投票をラウンド4の投票とした。ノード2(またはノード5)は5票を収集したが、4個の同じ入力データの投票がない。このためノード2(またはノード5)は、ランダムに入力データA(またはD)を選び、ラウンド4の補欠投票とした。
 各ノードは、ラウンド4の投票データを収集する。ノード1,2,5,6は5票を収集した。f+2b+1=4個の同じ入力データの当確投票がないが、b+1=2個以上の同じ入力データBの当確投票があるので、ノード1,2,5,6は、入力データBをラウンド5の推薦投票とした。ノード3は、4個の同じ入力データBの当確投票があるため、入力データBをラウンド5の当選投票とした。
 各ノードは、ラウンド5の投票データを収集する。ノード1,2,5,6は[(n+b)/2]+1=4個の同じ入力データBの投票を得たので、入力データBの当確投票をラウンド6の投票とした。ノード3は、既に当選投票を行っており、当該順序番号の入力データを確定しているので、投票の収集も選挙も行わない。
 各ノードは、ラウンド6の投票データを収集する。ノード1,2,5,6はf+2b+1=4個の同じ入力データBの当確投票があるため、入力データBをラウンド7の当選投票とした。ノード3は、既に当選投票を行っており、当該順序番号の入力データを確定しているので、投票の収集も選挙も行わない。
 この結果、すべての正常ノードで同一の入力データBが当該順序番号の入力データとして確定した。この入力データBは、当該順序番号とともに確定データ記憶部12に格納される。またノード2の未確定データ記憶部11に格納されている入力データBは、削除される。ここまでで、整列マルチキャストが実行されたことになる。
 確定した入力データは処理部18に出力される。処理部18は、確定した入力データを用いて処理を実行する。各ノードの処理部18の処理結果として出力される出力データは、出力順序番号とノード番号とを組みにして、出力パケットとしてデータ送信部16と送受信部21を介して、クライアント装置20内の判定部22に集められる。判定部22は、同一の出力順序番号と同一の出力データを持つ出力パケットがb+1以上のノードから収集されたときに、その出力データを有効な出力データとして確定する。
 整列マルチキャストの流れについてさらに説明する。図5は、第1の実施形態における整列マルチキャストの全体の流れを示すフローチャートである。図5は、各ノードの制御部19(第1決定部51、第2決定部52)で実行される処理を表す。
 図5の処理は、例えばクライアント装置20または他ノードからデータを受信して、未確定データ記憶部11や投票記憶部13の内容が変化した時に随時実行される。
 第1決定部51は、現ラウンド番号が1、かつ、ラウンド1の自投票が未決定か否かを判定する(ステップS1)。現ラウンド番号が1、かつ、ラウンド1の自投票が未決定の場合(ステップS1:Yes)、第1決定部51は、未確定データ記憶部11に入力データが記憶されているか否かを判定する(ステップS2)。記憶されていない場合(ステップS2:No)、処理が終了する。記憶されている場合(ステップS2:Yes)、第1決定部51は、その入力データの推薦投票をラウンド1の自投票とする(ステップS3)。
 現ラウンド番号が1でないか、または、ラウンド1の自投票が決定済みの場合(ステップS1:No)、制御部19は、現ラウンド番号が奇数であるか否かを判定する(ステップS4)。奇数の場合(ステップS4:Yes)、第1決定部51は、収集した現ラウンドの投票の集合に、[(n+b)/2]+1ノード以上から同じ入力データの投票があるか否かを判定する(ステップS5)。[(n+b)/2]+1ノード以上から同じ入力データの投票がある場合(ステップS5:Yes)、第1決定部51は、その入力データの当確投票を次ラウンドの自投票とする(ステップS6)。また第1決定部51は、現ラウンド番号に1を加える。
 [(n+b)/2]+1ノード以上から同じ入力データの投票がない場合(ステップS5:No)、第1決定部51は、収集した現ラウンドの投票の集合に、(n-f)以上のノードからの投票があるか否かを判定する(ステップS7)。(n-f)以上のノードからの投票がない場合(ステップS7:No)、処理が終了する。
 (n-f)以上のノードからの投票がある場合(ステップS7:Yes)、第1決定部51は、収集した現ラウンドの投票の集合の中から任意に選んだ入力データの補欠投票を次ラウンドの自投票とする(ステップS8)。また第1決定部51は、現ラウンド番号に1を加える。
 ステップS6の後、ステップS8の後、および、ステップS4で現ラウンド番号が奇数でない(偶数である)と判定された場合(ステップS4:No)、第2決定部52は、収集した現ラウンドの投票の集合に、(f+2b+1)以上のノードから同じ入力データの当確投票があるか否かを判定する(ステップS9)。(f+2b+1)以上のノードから同じ入力データの当確投票がある場合(ステップS9:Yes)、第2決定部52は、その入力データの当選投票を次ラウンドの自投票とする(ステップS10)。また、第2決定部52は、その入力データと現順序番号を確定データ記憶部12に格納する。また、第2決定部52は、現順序番号を1進め、現ラウンド番号を1にする。この後、ステップS1に遷移する。
 (f+2b+1)以上のノードから同じ入力データの当確投票がない場合(ステップS9:No)、第2決定部52は、収集した現ラウンドの投票の集合に、(n-f)以上のノードから投票があるか否かを判定する(ステップS11)。(n-f)以上のノードから投票がない場合(ステップS11:No)、処理が終了する。
 (n-f)以上のノードから投票がある場合(ステップS11:Yes)、第2決定部52は、収集した現ラウンドの投票の集合に、(b+1)以上のノードから同じ入力データの当確投票があるか否かを判定する(ステップS12)。(b+1)以上のノードから同じ入力データの当確投票がある場合(ステップS12:Yes)、第2決定部52は、その入力データの推薦投票を次ラウンドの自投票とする(ステップS13)。また、第2決定部52は、現ラウンド番号に1を加える。この後、ステップS5に遷移する。
 (b+1)以上のノードから同じ入力データの当確投票がない場合(ステップS12:No)、第2決定部52は、収集した現ラウンドの投票の集合の中から任意に選んだ入力データの推薦投票を次ラウンドの自投票とする(ステップS14)。また、第2決定部52は、現ラウンド番号に1を加える。この後、ステップ5に遷移する。
 次に、上記アルゴリズムの有効性について証明する。以下の証明では、投票に含まれる入力データを投票の値とも呼ぶ。また、「#」は集合の要素数を表す記号である。また、「∩」は集合の共通部分を表す記号である。
 (補題1)ビザンティン障害の数がb以下のとき、同一ラウンドの正常ノードの当確投票の入力データはすべて等しい。
[証明]
 ラウンドr+1の2つの正常ノードの当確投票x,yの値が等しいことを証明すればよい。当確投票xを決定した予備選で用いたラウンドrの投票のうち、xと同じ値の投票の集合をExとする。Exの投票を行ったノードの集合をMxとする。yに関しても同様に、EyとMyを定義する。するとアルゴリズムの定義より、
 #(Mx)≧[(n+b)/2]+1
 #(My)≧[(n+b)/2]+1
である。従って、
 #(Mx∩My)
≧#(Mx)+#(My)-n
≧2×([(n+b)/2]+1)-n
≧2×((n+b-1)/2+1)-n=b+1
である。すなわち、MxとMyの共通部分は少なくともb+1あり、ビザンティン障害の数はb以下であるから、そのうちの少なくとも1つは正常ノードである。ラウンドrのその正常ノードの投票をzとする。すると、正常ノードの投票は覆ることはないから、z∈Ex∩Eyである。Ex、Eyの定義から、xとzの値は等しく、同様にyとzの値も等しい。従って、結局xとyの値は等しい。
[証明終]
 (補題2)ビザンティン障害の数がb以下のとき、同一ラウンドの正常ノードの当選投票の入力データはすべて等しい。
[証明]
 ラウンドr+2の2つの正常ノードの当選投票x,yの値が等しいことを証明すればよい。当選投票xを決定した信任選で用いたラウンドr+1の投票のうち、xと同じ値の当確投票の集合をExとする。アルゴリズムの定義より、#(Ex)≧f+2b+1であり、ビザンティン障害の数はb以下であるから、そのうちの少なくとも1つは正常ノードからの投票であり、それは当確投票である。その当確投票をzとすると、xの値とzの値は等しい。一方、xの場合と同様に、∃w、wは正常ノードの当確投票でyの値とwの値は等しい。ところが補題1より、ラウンドr+1の正常ノードの当確投票の値はすべて等しいから、zとwの値は等しい。従って、「xの値」=「zの値」=「wの値」=「yの値」となり、xとyの値は等しい。
[証明終]
 (補題3)ビザンティン障害の数がb以下のとき、正常ノードの当選投票xがあるならば、同一ラウンドの正常ノードの推薦投票の入力データは、xの入力データと等しい。
[証明]
 当選投票xのラウンドをr+2とする。ラウンドr+2の推薦投票をyとする。このときxとyの値が等しいことを証明すればよい。xを決定した信任選で用いたラウンドr+1の投票のうち、xと同じ値の当確投票の集合をExとする。一方、yを決定した信任選で用いたラウンドr+1の投票の集合をEyとする。Ex,Eyの投票を行ったノードの集合をそれぞれMx,Myとする。アルゴリズムの定義より、
 #(Mx)≧f+2b+1
 #(My)≧n-f
である。従って、
 #(Mx∩My)≧#(Mx)+#(My)-n≧2b+1
である。
 すなわち、MxとMyの共通部分は少なくとも2b+1あり、ビザンティン障害の数はb以下であるから、そのうちの少なくともb+1は正常ノードである。正常ノードの投票は覆ることはないので、ExとEyの中に少なくともb+1の共通の投票があることになる。これらの共通の投票は、Exに含まれるのでxと同じ値の当確投票である。従って、Eyの中にxと同じ値の当確投票がb+1以上あることになる。すると、アルゴリズムの定義より、yはxと同じ値の推薦投票でなければならない。
[証明終]
 (補題4)当選、当確の閾値の間には、以下の式(1)の関係がある。
 f+2b+1≦[(n+b)/2]+1≦n-f-b・・・(1)
[証明]
 [(n+b)/2]は、(n+b)/2を超えない最大の整数で、[]はいわゆるガウスの記号である。なお[(n+b)/2]+1は、n+bの過半数である。まず、ガウス記号の定義から以下の関係式(2)および(3)が成り立つ。
 (n+b)/2<[(n+b)/2]+1・・・(2)
 [(n+b)/2]≦(n+b)/2・・・(3)
 初めに、式(1)の左の不等式を証明する。
 n>2f+3bであるから、以下の式(4)が成り立つ。
 (n+b)/2>((2f+3b)+b)/2=f+2b・・・(4)
 式(4)と式(2)から、f+2b<[(n+b)/2]+1が導かれる。この式の両辺は整数なので、結局式(1)の左の不等式が導かれる。
 次に、式(1)の右の不等式を証明する。
 n>2f+3bであるから、以下の式(5)が成り立つ。
 (n-f-b)-(n+b)/2=(n-2f-3b)/2>0
 従って、(n-f-b) >(n+b)/2・・・(5)
 式(3)と式(5)から、[(n+b)/2]<n-f-bが導かれるが、この式の両辺は整数なので、結局式(1)の右の不等式が導かれる。
[証明終]
 (補題5)ビザンティン障害の数がb以下のとき、正常ノードの当選投票xがあるならば、次のラウンドの正常ノードの投票は当確投票で、その入力データはxの入力データと等しい。
[証明]
 xのラウンドをrとする。ラウンドrの投票は当選投票か推薦投票のどちらかである。従って、補題2と補題3より、ラウンドrの正常ノードの投票の値はxの値と等しい。すなわち、ラウンドrの正常ノードの投票の値はすべて等しい。このとき、ラウンドr+1の投票yが補欠投票でないことを背理法で証明する。
(背理法)ラウンドr+1の投票yが補欠投票であると仮定する。yを決定した予備選で用いたラウンドrの投票の集合をEyとする。アルゴリズムの定義より、#(Ey)≧n-fであり、ビザンティン障害の数はb以下であるから、そのうちの少なくともn-f-bは正常ノードの投票である。上述したとおり、これらの投票はすべて同じ値である。ところが、補題4より[(n+b)/2]+1≦n-f-bであるから、[(n+b)/2]+1以上の同じ値の投票がEyにあることになる。これは、予備選で当確投票が選択される条件を満たしていることになるから、アルゴリズムの定義に矛盾する。よって、yは補欠投票ではありえない。yは補欠投票ではないから、当確投票である。するとyを決定した予備選のラウンドrの投票で[(n+b)/2]+1以上のyの値と同じ値の投票がある。b+1≦[(n+b)/2]+1であるから、これらのうち少なくとも1つは正常ノードの投票があり、上述したとおり、その値はxの値と等しい。従って、xとyの値は等しい。
[証明終]
 (補題6)ビザンティン障害の数がb以下のとき、正常ノードの当選投票xがあるならば、2つ後のラウンドの正常ノードの投票は当選投票で、その入力データはxの入力データと等しい。
[証明]
 xのラウンドをrとする。補題5より、ラウンドr+1の正常ノードの投票は当確投票であり、その値はxの値と等しい。すなわち、ラウンドr+1の正常ノードの投票の値はすべて等しい。このとき、ラウンドr+2の投票yが推薦投票でないことを背理法で証明する。
(背理法)ラウンドr+2の投票yが推薦投票であると仮定する。yを決定した信任選で用いたラウンドr+1の投票の集合をEyとする。アルゴリズムの定義より、#(Ey)≧n-fであり、ビザンティン障害の数はb以下であるから、そのうちの少なくともn-f-bは正常ノードの投票である。上述したとおり、これらの投票はすべて同じ値の当確投票である。ところが、補題4よりf+2b+1≦n-f-bであるから、f+2b+1以上の同じ値の当確投票がEyにあることになる。これは、信任選で当選投票が選択される条件を満たしていることになるから、アルゴリズムの定義に矛盾する。よって、yは推薦投票ではありえない。yは推薦投票ではないから、当選投票である。するとyを決定した信任選のラウンドr+1の投票でf+2b+1以上のyの値と同じ値の投票がある。b+1≦f+2b+1であるから、これらのうち少なくとも1つは正常ノードの投票があり、上述したとおり、その値はxの値と等しい。従って、xとyの値は等しい。
[証明終]
 補題2と補題6から、ビザンティン障害の数がb以下のとき、正常ノードの当選投票は、ラウンドが異なっているとしてもすべて同じ入力データであることがわかる。すなわち、正常ノードで最初に当選投票となったラウンドをrとすると、ラウンドr+2までにはすべての正常ノードの投票は当選投票となり、すべての正常ノードで確定する入力データは同一となる。
 一方、ビザンティン障害となっているノードから出力されるデータは虚偽のデータであるかもしれない。しかし、判定部22において出力パケットを収集し、b+1以上のノードから同一の出力データを受信できれば、それらのうちの少なくとも1つは正常ノードから出力されたものであるから、その出力データは正当である。
 これにより本実施形態のアルゴリズムは、ビザンティン障害の耐性を有し、多重化の一貫性が保証されていることが証明された。
 最後に、本実施形態のアルゴリズムが、障害の発生時にタイムアウトによる処理の中断が発生しない点(リアルタイム性)について説明する。
 本実施形態のアルゴリズムは、n-fの投票が収集できればラウンドが進んでいく。このとき、どのノードがどのような障害となっているかについて全く関知していない。従って、ノード障害がf以下であれば、どのようなタイミングで障害が発生したとしても、少なくともn-fの投票は必ず収集できるから、ラウンドが進んでいく。
 本実施形態のアルゴリズムは、n-fの投票が収集できた時点でラウンドが進む。障害ノード数が少ない場合には、n-fより多くの投票を集められる可能性があるが、その収集を待つことはしない。これによって、リアルタイム性を確保することができる。すなわち、すべてのノードの投票を集めるまで待つのではなく、n-fの投票が収集できた時点でラウンドを進めていくことにより、障害検出に依存しない多重化を実現している。なお、リアルタイム性が要求されない場合は、例えばタイムアウトになるまではすべてのノードの投票が収集されるまで待つように構成してもよい。
 本実施形態のアルゴリズムでは、当選投票を得るまでのラウンド数については、一定ではない。これはアルゴリズム中でランダム選択に依存している箇所があるためである。ランダム選択の運が良ければ、早い段階のラウンドで各ノードの投票が同一となり、当選投票を得る。運が悪ければ、いつまでたっても各ノードの投票が同一とならない。しかし、確率的な視点では、いつまでたっても当選投票が得られない可能性は、限りなく0に近い。これは確率的終了条件と呼ばれる考え方である。
 なお、補欠投票および推薦投票で、「ランダム」に選ぶ処理は、文字通りランダムに選んでもアルゴリズムの正当性には変わりはないが、選び方によって当選投票となるまでの平均ラウンド数が変わる。ラウンド番号が小さいときに、ヒューリスティックな方法で、各ノードが同一の入力データを選びやすいように疑似乱数を調整すると、アルゴリズムの効率が大幅に向上する。実用上は、このようなヒューリスティックな方法を用いることにより、平均的な最大ラウンド番号≒4とすることが可能である。ただし、この選択を完全に固定すると、アルゴリズムが完了しなくなる恐れがあるので、アルゴリズムとしてランダム選択がまったく不要なわけではない。
 例えば、ランダムに投票を選択する方式の代わりに、以下のように所定の規則に従い投票を選択してもよい。
(1)ラウンドごとに優先するノードを定め、優先するノードの投票を、次の選挙で選択する。優先するノードは、ラウンドごとに変更する。例えば、ノード番号順に優先するノードを変更する。
(2)対応するデータの値が小さい投票を優先して選択する。
(3)偏りのある疑似乱数を生成する。
 (第2の実施形態)
 第1の実施形態は、クライアント装置20と多重化システム(サーバ装置10)との間で入出力を行う構成であった。第2の実施形態では、多重化システムαと多重化システムβの間で入出力を行う。すなわち、多重化システムαの出力データが多重化システムβの入力データとなる。
 図6は、第2の実施形態にかかる情報処理システムに含まれるサーバ装置10βの構成の一例を示すブロック図である。サーバ装置10βは、情報処理システムの1つである多重化システムβに含まれる装置である。図6では1のサーバ装置10βのみを記載しているが、サーバ装置10βの個数は図1と同様に4以上であれば任意である。多重化システムβは、同様の構成を備える多重化システムαと接続される。
 サーバ装置10βは、判定部22をさらに備える点が、図2のサーバ装置10と異なっている。その他の構成および機能は、第1の実施形態にかかるサーバ装置10の構成を表すブロック図である図2と同様であるので、同一符号を付し、ここでの説明は省略する。
 図6に示すように、本実施形態では、判定部22が多重化システムβの各サーバ装置10βに配置される。多重化システムαの各ノード(サーバ装置10α)から出力される出力パケットは、データ受信部15を介して、判定部22に入力される。判定部22は、次に確定すべき出力データの出力順序番号(現出力順序番号)を保持する。判定部22は、現出力順序番号を持つ出力パケットのうち、同一の出力データを持つ出力パケットが、bα+1以上のノードから受信されたとき、その出力データを入力データとして、未確定データ記憶部11に格納し、現出力順序番号を1進める。ここで、bαは多重化システムαの信頼性の閾値である。その他の部分については、第1の実施形態と同じである。
 この構成によって、多重化システム間の入出力を行う場合でも、非同期ネットワークモデルを前提として、ビザンティン障害となったコンピュータ数がb以下ならば、多重化システムから得られる有効な出力データは正当であり、さらに、ノード障害の数がf以下ならば、多重化システムは処理を継続できる、多重化制御が実現される。
 (第3の実施形態)
 サイバー攻撃による不正侵入が懸念されている。分散システムへのサイバー攻撃に関する懸念の1つは、脆弱性のある、いずれか1つのノードに不正侵入され、その結果として他のノードも芋づる式に不正侵入されることである。一般的に言えば、多重化システムではノード数を多くすることにより可用性と信頼性が向上する。しかし、ノード数が多くなることにより、脆弱性のあるノードに不正侵入される可能性は高まる。仮に各ノードが互いに相互信頼していて、芋づる式に他のノードも不正侵入される構成であったとすると、セキュリティは却って下がっていることになる。
 従って、上記懸念に対して耐性を高めるためには、各ノードが独立してセキュリティを確保し、1つのノードが乗っ取られたとしても、他のノードにそれが容易に伝染しないようにすることが必要である。具体的には、パスワードや秘密鍵を共通にしない、相互信頼の設定をしない、ノードごとにファイアウォールを設ける、OS(オペレーティングシステム)やミドルウェアは異なるものを使う、および、管理者やベンダーを固定しない、といった対策が行われている。
 上記前提の上に立って、なりすまし攻撃をふせぐための仕組みを上記各実施形態に追加することで、最大でbのノードが乗っ取られたとしても、正しい出力データが得られる多重化システムが構成できる。これを以下に説明する。
 ここで懸念するなりすまし攻撃には、
(1)入力データを不正なデータに置き換える
(2)出力パケットを不正なデータに置き換える
(3)投票を不正なデータに置き換える
の3つが考えられる。
 そもそも、クライアント装置20が送信する入力データや、正常ノードの出力データを攻撃者が自由に改ざんできるとすると、当然、正しい結果は得られない。また、正常ノードの投票を攻撃者が自由に改ざんできるとすると、簡単にアルゴリズムの正当性が破たんして、やはり正しい結果が得られる保証はなくなる。
 本実施形態の構成は以下のとおりである。
(A)各ノードとクライアント装置20は個別の秘密鍵を持ち、これらは互いに秘密である。
(B)それぞれの公開鍵は、各ノードとクライアント装置20に事前に配布されている。
(C)クライアント装置20は入力データに自身の秘密鍵で署名を付与する。
(D)各ノードは入力データをクライアント装置20から受信するとき、その署名を検証し、正当でない入力データは破棄する。
(E)各ノードは投票に自身の秘密鍵で署名を付与する。
(F)各ノードは投票を他ノードから受信するとき、その署名を検証し、さらに、投票に含まれる入力データのクライアント装置20の署名も検証し、正当でない投票は破棄する。
(G)各ノードは出力パケットに自身の秘密鍵で署名を付与する。
(H)クライアント装置20は出力パケットを受信するとき、その署名を検証し、正当でない出力パケットは破棄する。
 入力パケットは、例えば以下のフォーマットとなる。
(入力データ、入力データへのクライアント装置20による署名)
 投票は、例えば以下のフォーマットとなる。
(順序番号、ラウンド番号、ノード番号、選択結果、入力データ、入力データへのクライアント装置20による署名、この投票へのノードによる署名)
 出力パケットは、例えば以下のフォーマットとなる。
(順序番号、ノード番号、出力データ、このパケットへのノードによる署名)
 これらの対策により、上記(1)、(2)、(3)のなりすましは非常に困難になり、不正侵入に対する耐性が向上する。なぜなら、クライアント装置20または正常ノードから受信したデータは、デジタル署名によって、改ざんされていないことを検証でき、本実施形態のアルゴリズム中で行われる選挙の有効性が保証されるためである。
 署名の検証は、例えばデータを受信する構成部(投票送受信部17、データ受信部15等)で実行する。これ以外の構成部で署名の検証を実行してもよい。
 なお、不正侵入されたノードからは、どのような不正な投票も攻撃者は送信可能であり、これを受信した正常ノードが署名の検証だけで偽の投票を除外できるわけではない。しかし、不正侵入されたノードがb以下であれば、本実施形態のアルゴリズムにより出力データの正当性が保証される。
 対策(F)で、投票中の入力データの署名も検証する理由は、仮にこれを行わないと、ビザンティン障害ノードから送られてきた投票に含まれる不正な入力データを、補欠投票またはランダム選択の推薦投票として採用してしまい、結果としてその後のラウンドでその不正な入力データが当選投票となる可能性があるからである。
 入力データへの署名は、クライアント装置20が行ったものであり、ビザンティン障害ノードはクライアント装置20の署名は偽造できないことから、対策(F)が有効である。
 なお、処理部18の入り口で、入力データの署名を検証して正当でない入力データを破棄するならば、(F)の処理で入力データの署名を検証しなくても、整合性は保たれる。しかし、この場合は、不正な入力データの破棄が遅れるため、攻撃によってアルゴリズムの効率が大きく低下するという問題がある。
 ところで、一般に、署名の付与および検証は計算コストが大きい。そこで、投票と出力データの署名および検証の代わりに、セキュリティが確保された通信を用いてデータを送受信するように構成してもよい。例えば、通信相手(クライアント装置20、他のノード)との間でSSL(Secure Sockets Layer)などのプロトコルに従った通信を確立し、この通信を介してデータを送受信してもよい。これにより計算コストを下げることができる。
 次に、第2の実施形態に対して適用する場合の例を説明する。第1の実施形態の場合との差異は、出力パケットへの署名のつけ方と、入力データに付与する署名の数である。多重化システムαは、出力パケットに署名をするのではなく、「αの出力順序番号と出力データの組」に署名をする。また、多重化システムβの入力データは「αの出力順序番号と出力データの組」とする。入力データには、多重化システムαの各ノードの署名が複数付与される。多重化システムαの信頼性の閾値をbαとしたとき、付与される署名はbα+1以上なければならない。ここで、署名する主体が異なる秘密鍵を持つので、これらの署名はすべて異なることに注意する。
 多重化システムαの出力パケットは、例えば以下のフォーマットとなる。
(αの出力順序番号、ノード番号、出力データ、[αの出力順序番号、出力データ]へのノードによる署名)
 多重化システムβの投票は、例えば以下のフォーマットとなる。
(βの順序番号、ラウンド番号、ノード番号、選択結果、入力データ、入力データへの多重化システムαの各ノードの署名の集合、この投票へのノードによる署名)
 入力データのフォーマットは、例えば[αの出力順序番号、出力データ]である。
 判定部22は、正当な署名のある同じ出力順序番号と出力データを持つαの出力パケットがbα+1個以上あるとき、その[αの出力順序番号、出力データ]を入力データとし、それらの署名の集合をその入力データに付与する。そして、多重化システムβは、入力データの署名の検証(対策(F))として、付与されているbα+1個以上の多重化システムαの各署名をすべて検証する。
 これらの対策により、第2の実施形態においても、正常ノードに関して上記(1)、(2)、(3)のなりすましは非常に困難になり、不正侵入に対する耐性が向上する。特に、多重化システムβの対策(F)で、入力データの署名の検証として、付与されているbα+1個以上の多重化システムαの各署名をすべて検証することにより、不正な入力データを除外して、入力データの改ざんへの耐性を担保している。
 (第4の実施形態)
 第1の実施形態では、各ノードの現ラウンドは選挙によってのみ進んでいく構成であったが、他ノードの投票をコピーするアルゴリズムを追加することによって、アルゴリズムの実行効率を上げることができる。
 コピー投票は、同一ラウンドの他ノードの投票の集合から、当該ラウンドの自投票を決定する。一方、選挙は同一ラウンドの投票の集合から、次のラウンドの自投票を決定することに注意する。
 コピー投票としては、一致コピー、補欠コピー、および、推薦コピーの少なくとも1つを適用できる。一致コピーは、例えば第1決定部51および第2決定部52が実行するように構成できる。また、補欠コピーは、例えば第2決定部52が実行するように構成できる。また、推薦コピーは、例えば第1決定部51が実行するように構成できる。
 一致コピーは、収集した同一ラウンドの投票について、(b+1)以上のノードから、「入力データと選択結果」が同じ投票が存在する場合に、その投票に、投票することを意味する。
 補欠コピーは、(b+1)以上のノードから補欠投票がある場合に、収集した投票の中から任意に選んだ入力データの補欠に投票することを意味する。なお、選択の対象とする投票は、他のノードから収集したすべての投票であってもよいし、(b+1)以上のノードから収集した補欠投票であってもよい。
 推薦コピーは、(2b+1)以上のノードから推薦投票があり、一致コピーが成立しない場合に、収集した投票の中から任意に選んだ入力データの推薦に投票することを意味する。なお、選択の対象とする投票は、他のノードから収集したすべての投票であってもよいし、(2b+1)以上のノードから収集した推薦投票であってもよい。
 なお、自投票が既に決まっている場合には、当該ラウンドのコピー投票は行わない。
 コピー投票の意義は、選挙が必要とするよりも少ない投票数で、同じラウンドの投票を決定し、結果として当該ラウンドの投票を増やしていく点にある。コピー投票を各ノードが実行していけば、やがては選挙に必要な投票数が得られる。すなわち、コピー投票自体はラウンドを進めるものではないが、結果として選挙を成立させてラウンドを進める効果がある。
 例として、ラウンドrに当選投票があったとする。するとアルゴリズムの定義から、ラウンドr-1のf+2b+1の同じ値の当確投票がある。ノード障害数の最大はfであるから、そのうち少なくとも2b+1の投票は稼働ノードの投票である。これらはすべて同じ値の当確投票であるから、ラウンドr-1の一致コピーの条件を成立させるのに十分である。
 別の例として、ラウンドrに当確投票があったとする。するとアルゴリズムの定義から、ラウンドr-1の[(n+b)/2]+1の同じ値の投票がある。ノード障害数の最大はfであり、補題4より、f+2b+1≦[(n+b)/2]+1であるから、そのうち少なくとも2b+1の投票は稼働ノードの投票である。するとこれらのうち、当選投票か推薦投票のどちらかがb+1以上あることになる。これらはすべて同じ値の当確投票であるから、ラウンドr-1の一致コピーの条件を成立させるのに十分である。
 別の例として、ラウンドrに補欠投票があったとする。するとアルゴリズムの定義から、ラウンドr-1のn-fの投票がある。ノード障害数の最大はfであるから、そのうち少なくともn-2fの投票は稼働ノードの投票である。n>2f+3bであるから、n-2f≧3b+1であり、当選投票がb+1以上あるか、推薦投票が2b+1以上あることになる。稼働ノードは正常ノードであるから、前者の場合は補題2より当選投票はすべて同じ値であり一致コピーの条件が成立する。後者の場合は、推薦コピーの条件の前半が成立している。まとめると、推薦コピーか一致コピーのどちらかを成立させるのに十分である。
 次に、コピー投票の有効性について説明する。すなわち、ビザンティン障害ノード数がb以下の時、コピー投票によって多重化の一貫性が破れないことを説明する。
 ある正常ノードの投票xがあったとする。投票xを決定する際に収集した投票の集合をEとする。選挙のアルゴリズムにおいて、収集する投票には自ノードの投票が含まれている必要はなく、ノード番号にも無関係である。従って、別の正常ノードが収集した投票の集合がEと全く同じであってもよい。アルゴリズムには、ランダム選択の要素があるので、Eから決定される投票は必ずxと同じになるとは限らないが、ランダム選択なので同じになる可能性はある。
 従って、ある正常ノードの投票xがあるとき、別の正常ノードの投票がxと同じ内容(入力データと選択結果)となる可能性がある。すなわち、ある正常ノードの投票xの内容を別の正常ノードにコピーしたとしても、多重化の整合性は破れない。仮に、破れるとしたら、コピーではなく選挙でそれが決定した場合にも、整合性が破れるということになり矛盾する。もちろん、任意のノードから単純に投票をコピーするのは望ましくない。コピー元がビザンティン障害ノードであるかもしれないからである。しかし、b+1ノードから同一内容の投票が得られれば、そのうちの少なくとも1つは正常ノードであるので、どのノードが正常ノードであるかわからなくても、投票のコピーをしてもかまわない(一致コピーの正当性)。
 一方、補欠投票は、必ずランダム選択で入力データが決定されるので、ある正常ノードの補欠投票xがあるとき、別の正常ノードの投票は、任意の入力データの補欠投票となる可能性がある。これは、ランダム選択でビザンティン障害ノードの投票を選ぶ可能性があるためである。すると、b+1ノードから補欠投票が得られれば、そのうちの少なくとも1つは正常ノードであるので、どのノードが正常ノードであるかわからなくても、補欠投票をしてもかまわない(補欠コピーの正当性)。
 推薦投票は、ランダム選択の場合と、b+1以上の当確投票から決定される場合がある。2b+1ノードから推薦投票が得られれば、そのうちの少なくともb+1は正常ノードの投票である。このうち、1つでもランダム選択で決定された推薦投票があるならば、補欠投票の場合と同じ論理で、任意の入力データの推薦投票をしてかまわない(推薦コピーの正当性)。一方、1つもランダム選択による推薦投票がないとすると、補題1より、正常ノードの当確投票の入力データはすべて等しいから、そこから決定される推薦投票の入力データもすべて同一となり、その場合は一致コピーの条件が成立することになる。なお推薦コピーは一致コピーが成立しないことが条件になっていることに注意する。
 以上で、コピー投票の正当性が示された。
 3種類のコピー投票はそれぞれ独立しており、一致コピー、補欠コピー、および、推薦コピーのすべてを適用してもよいし、そのうちのいくつかを適用してもよい。コピー投票の適用の度合いによって、アルゴリズムの実行効率の改善の程度が変わる。
 なお、補欠コピーと推薦コピーの閾値は、閾値よりも大きくてもよい。より大きい閾値の採用は、コピーによるアルゴリズムの実行効率改善を低下させるが、一方でビザンティン障害ノードからの影響も低下させるため、いちがいに悪いとは言えない。
 上述のように、コピー投票の変形は様々な形で可能であり、アルゴリズムの実行効率に係るが、これらの変形は設計事項であり、本発明の範囲に含まれる。
(変形例1)
 上記実施形態における、当選決定の閾値f+2b+1、当確決定の閾値[(n+b)/2]+1、出力データ決定の閾値b+1、および、推薦コピーの閾値2b+1をそれぞれ一般化して、t1、t2、t3、t4とする。t1、t2、t3、t4が以下の条件を満たしているならば、アルゴリズムは依然として有効である。
 f+2b+1≦t1≦n-f-b
 [(n+b)/2]+1≦t2≦n-f-b
 b+1≦t3≦n-f-b
 2b+1≦t4≦n-f-b
 ただし、閾値が小さいほうが、アルゴリズムの実行効率がよい。閾値を大きくするとアルゴリズムの冗長性が大きくなる効果がある。
(変形例2)
 上記実施形態では、補欠状態、当確状態、推薦状態、および、当選状態の4種類の状態を用いたが、他の方法で定義した状態を用いてもよい。例えば、これらの4種類の状態を以下のように置き換えてもよい。
 推薦状態→奇数ラウンドの推薦状態
 補欠状態→偶数ラウンドの推薦状態
 当選状態→奇数ラウンドの当選状態
 当確状態→偶数ラウンドの当選状態
 この定義方法では、見かけ上は推薦状態および当選状態の2状態となる。しかし、これらの2状態は、上記実施形態の4種類の状態と本質的に全く同じものであり、本発明の範囲に含まれる。
 次に、本実施形態の各装置(サーバ装置10およびクライアント装置20)のハードウェア構成の一例について説明する。図7は、実施形態の装置のハードウェアの構成の一例を示す図である。
 本実施形態の装置は、制御装置31、主記憶装置32、補助記憶装置33、表示装置34、入力装置35および通信装置36を備える。制御装置31、主記憶装置32、補助記憶装置33、表示装置34、入力装置35および通信装置36は、バス37を介して互いに接続されている。
 制御装置31は、補助記憶装置33から主記憶装置32に読み出されたプログラムを実行する。主記憶装置32は、ROM(Read Only Memory)やRAM等のメモリである。補助記憶装置33は、例えば、HDDやメモリカード等である。表示装置34は、装置の状態等を表示する画面である。表示装置34は、例えば、液晶ディスプレイ等である。入力装置35は、装置を操作するためのインタフェースである。入力装置35は、例えば、キーボードやマウス等である。通信装置36は、ネットワークに接続するためのインタフェースである。
 本実施形態の装置で実行されるプログラムを、インストール可能な形式又は実行可能な形式のファイルでCD-ROM、メモリカード、CD-RおよびDVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録し、コンピュータ・プログラム・プロダクトとして提供してもよい。また、本実施形態の装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供してもよい。また、本実施形態の装置で実行されるプログラムをダウンロードさせずに、インターネット等のネットワーク経由で提供、又は配布してもよい。また、本実施形態の装置のプログラムを、ROM等に予め組み込んで提供してもよい。
 本実施形態のサーバ装置10で実行されるプログラムは、上述したサーバ装置10の各機能ブロックのうち、プログラムとしても実現可能な機能ブロックを含むモジュール構成となっている。
 また、本実施形態のクライアント装置20で実行されるプログラムは、上述したクライアント装置20の各機能ブロックを含むモジュール構成となっている。
 当該モジュールは、実際のハードウェアとしては、制御装置31が上記記憶媒体からプログラムを読み出して実行することにより、上記各モジュールが主記憶装置32上にロードされる。すなわち、上記各モジュールは、主記憶装置32上に生成される。なお、装置の各機能ブロックの一部、又は全部を、プログラムにより実現せずに、IC(Integrated Circuit)等のハードウェアにより実現してもよい。
 なお、本実施形態では、複数のサーバ装置10の間で投票を送受信する例について説明した。しかしながら、本実施形態は、サーバ装置10に限らず、パーソナルコンピュータ、仮想マシン、OS上のプロセスなどにも適用可能である。同様に、クライアント装置20を、パーソナルコンピュータ、仮想マシン、OS上のプロセスなどにすることも可能である。また、ネットワーク30は、LANの他に、インターネットなどの広域ネットワーク(WAN)であってもよいし、仮想ネットワークやプロセス間通信(IPC)などでもよい。
 本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
 10、10α、10β サーバ装置
 11 未確定データ記憶部
 12 確定データ記憶部
 13 投票記憶部
 15 データ受信部
 16 データ送信部
 17 投票送受信部
 18 処理部
 19 制御部
 20 クライアント装置
 21 送受信部
 22 判定部
 30 ネットワーク
 51 第1決定部
 52 第2決定部
 100 情報処理システム

Claims (15)

  1.  n以上(nはn>2f+3bを満たす整数、fは0以上の整数、bは1以上の整数)のサーバ装置を備える情報処理システムであって、
     データに対して選択された、第1確定状態、第1推薦状態、および、第2確定状態のいずれかである選択結果を受信する受信部と、
     同じデータに対してt2(t2は(n+b)の過半数≦t2≦n-f-bを満たす整数)以上の前記第1推薦状態または前記第1確定状態の前記選択結果が選択されたことを示す第1条件を満たす場合、当該データに対して第2確定状態の選択結果を決定する第1決定処理、を実行する第1決定部と、
     同じデータに対してt1(t1は、f+2b+1≦t1≦n-f-bを満たす整数)以上の前記第2確定状態の前記選択結果が選択されたことを示す第2条件を満たす場合、当該データに対して第1確定状態の選択結果を決定し、前記第2条件を満たさず、かつ同じデータに対して(b+1)以上の第2確定状態の前記選択結果が選択されたことを示す第3条件を満たす場合、当該データに対して第1推薦状態の選択結果を決定する第2決定処理、を実行する第2決定部と、
     前記第1確定状態に決定されたデータに対して処理を実行して出力結果を出力する処理部と、
     t3(t3は、b+1≦t3≦n-f-bを満たす整数)以上の同じ出力結果を受信した場合に、受信した出力結果が有効であると判定する判定部と、
     を備える情報処理システム。
  2.  前記受信部は、さらに、データに対して選択された第2推薦状態である選択結果を受信し、
     前記第1決定処理は、さらに、前記第1条件を満たさず、かつ(n-f)以上から前記第1推薦状態または前記第1確定状態の選択結果が受信されたことを示す第4条件を満たす場合、前記選択結果が受信されたデータから選択された1のデータに対して第2推薦状態の選択結果を決定する処理を含み、
     前記第2決定処理は、さらに、前記第2条件および前記第3条件を満たさず、かつ(n-f)以上から前記第2推薦状態または前記第2確定状態の選択結果が受信されたことを示す第5条件を満たす場合、前記選択結果が受信されたデータから選択された1のデータに対して第1推薦状態の選択結果を決定する処理を含む、
     請求項1に記載の情報処理システム。
  3.  前記第1決定処理は、前記第1条件を満たさずかつ前記第4条件を満たす場合、ランダムに選択された1のデータ、または、所定の規則に従い選択された1のデータに対して第2推薦状態の選択結果を決定する処理を含む、
     請求項2に記載の情報処理システム。
  4.  前記第2決定処理は、前記第5条件を満たす場合に限り、第1推薦状態の選択結果を決定する処理を含む、
     請求項2に記載の情報処理システム。
  5.  前記第2決定処理は、前記第2条件および前記第3条件を満たさずかつ前記第5条件を満たす場合、ランダムに選択された1のデータ、または、所定の規則に従い選択された1のデータに対して第1推薦状態の選択結果を決定する処理を含む、
     請求項2に記載の情報処理システム。
  6.  前記第1決定処理、および、前記第1決定処理後に実行される前記第2決定処理が、前記第1確定状態の選択結果が決定されるまで繰り返される、
     請求項1に記載の情報処理システム。
  7.  前記受信部は、受信した選択結果が正当であるか否かを署名に基づいて検証し、
     前記第1決定部は、正当であると検証された選択結果を用いて前記第1決定処理を実行し、
     前記第2決定部は、正当であると検証された選択結果を用いて前記第2決定処理を実行する、
     請求項1に記載の情報処理システム。
  8.  前記受信部は、さらに、前記選択結果に対応するデータを受信し、受信したデータが正当であるか否かを署名に基づいて検証し、
     前記第1決定部は、さらに、正当であると検証されたデータに対応する選択結果を用いて前記第1決定処理を実行し、
     前記第2決定部は、さらに、正当であると検証されたデータに対応する選択結果を用いて前記第2決定処理を実行する、
     請求項7に記載の情報処理システム。
  9.  前記第2決定部は、さらに、同じデータに対してt3以上の同じ状態の前記第1推薦状態または前記第1確定状態の選択結果が他のサーバ装置から受信された場合、当該データに対して前記同じ状態の選択結果を決定する処理を実行する、
     請求項1に記載の情報処理システム。
  10.  前記受信部は、さらに、データに対して選択された第2推薦状態である選択結果を受信し、
     前記第1決定部は、さらに、同じデータに対してt3以上の同じ状態の前記第2推薦状態または前記第2確定状態の選択結果が他のサーバ装置から受信された場合、当該データに対して前記同じ状態の選択結果を決定する処理を実行する、
     請求項1に記載の情報処理システム。
  11.  前記受信部は、さらに、データに対して選択された第2推薦状態である選択結果を受信し、
     前記第1決定部は、さらに、t3以上の第2推薦状態の選択結果が他のサーバ装置から受信された場合、任意に選択したデータに対して第2推薦状態の選択結果を決定する処理を実行する、
     請求項1に記載の情報処理システム。
  12.  前記第2決定部は、さらに、t4(t4は、2b+1≦t4≦n-f-bを満たす整数)以上の第1推薦状態の選択結果が他のサーバ装置から受信され、かつ、同じデータに対してt3以上の第1推薦状態の選択結果が他のサーバ装置から受信されていない場合、任意に選択したデータに対して第1推薦状態の選択結果を決定する処理を実行する、
     請求項1に記載の情報処理システム。
  13.  n以上(nはn>2f+3bを満たす整数、fは0以上の整数、bは1以上の整数)のサーバ装置を備える情報処理システムの前記サーバ装置であって、
     データに対して選択された、第1確定状態、第1推薦状態、および、第2確定状態のいずれかである選択結果を受信する受信部と、
     同じデータに対してt2(t2は(n+b)の過半数≦t2≦n-f-bを満たす整数)以上の前記第1推薦状態または前記第1確定状態の前記選択結果が選択されたことを示す第1条件を満たす場合、当該データに対して第2確定状態の選択結果を決定する第1決定処理、を実行する第1決定部と、
     同じデータに対してt1(t1は、f+2b+1≦t1≦n-f-bを満たす整数)以上の前記第2確定状態の前記選択結果が選択されたことを示す第2条件を満たす場合、当該データに対して第1確定状態の選択結果を決定し、前記第2条件を満たさず、かつ同じデータに対して(b+1)以上の第2確定状態の前記選択結果が選択されたことを示す第3条件を満たす場合、当該データに対して第1推薦状態の選択結果を決定する第2決定処理、を実行する第2決定部と、
     前記第1確定状態に決定されたデータに対して処理を実行して出力結果を出力する処理部と、
     を備えるサーバ装置。
  14.  n以上(nはn>2f+3bを満たす整数、fは0以上の整数、bは1以上の整数)のサーバ装置を備える情報処理システムで実行される情報処理方法であって、
     データに対して選択された、第1確定状態、第1推薦状態、および、第2確定状態のいずれかである選択結果を受信する受信ステップと、
     同じデータに対してt2(t2は(n+b)の過半数≦t2≦n-f-bを満たす整数)以上の前記第1推薦状態または前記第1確定状態の前記選択結果が選択されたことを示す第1条件を満たす場合、当該データに対して第2確定状態の選択結果を決定する第1決定処理、を実行する第1決定ステップと、
     同じデータに対してt1(t1は、f+2b+1≦t1≦n-f-bを満たす整数)以上の前記第2確定状態の前記選択結果が選択されたことを示す第2条件を満たす場合、当該データに対して第1確定状態の選択結果を決定し、前記第2条件を満たさず、かつ同じデータに対して(b+1)以上の第2確定状態の前記選択結果が選択されたことを示す第3条件を満たす場合、当該データに対して第1推薦状態の選択結果を決定する第2決定処理、を実行する第2決定ステップと、
     前記第1確定状態に決定されたデータに対して処理を実行して出力結果を出力する処理ステップと、
     t3(t3は、b+1≦t3≦n-f-bを満たす整数)以上の同じ出力結果を受信した場合に、受信した出力結果が有効であると判定する判定ステップと、
     を含む情報処理方法。
  15.  n以上(nはn>2f+3bを満たす整数、fは0以上の整数、bは1以上の整数)のサーバ装置を備える情報処理システムの前記サーバ装置が備えるコンピュータを、
     データに対して選択された、第1確定状態、第1推薦状態、および、第2確定状態のいずれかである選択結果を受信する受信部と、
     同じデータに対してt2(t2は(n+b)の過半数≦t2≦n-f-bを満たす整数)以上の前記第1推薦状態または前記第1確定状態の前記選択結果が選択されたことを示す第1条件を満たす場合、当該データに対して第2確定状態の選択結果を決定する第1決定処理、を実行する第1決定部と、
     同じデータに対してt1(t1は、f+2b+1≦t1≦n-f-bを満たす整数)以上の前記第2確定状態の前記選択結果が選択されたことを示す第2条件を満たす場合、当該データに対して第1確定状態の選択結果を決定し、前記第2条件を満たさず、かつ同じデータに対して(b+1)以上の第2確定状態の前記選択結果が選択されたことを示す第3条件を満たす場合、当該データに対して第1推薦状態の選択結果を決定する第2決定処理、を実行する第2決定部と、
     前記第1確定状態に決定されたデータに対して処理を実行して出力結果を出力する処理部、
     として機能させるためのプログラム。
PCT/JP2014/057418 2014-03-18 2014-03-18 情報処理システム、サーバ装置、情報処理方法およびプログラム WO2015140942A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2016508380A JP6158425B2 (ja) 2014-03-18 2014-03-18 情報処理システム、サーバ装置、情報処理方法およびプログラム
PCT/JP2014/057418 WO2015140942A1 (ja) 2014-03-18 2014-03-18 情報処理システム、サーバ装置、情報処理方法およびプログラム
US15/265,568 US10303565B2 (en) 2014-03-18 2016-09-14 Multicasting system voting on server data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/057418 WO2015140942A1 (ja) 2014-03-18 2014-03-18 情報処理システム、サーバ装置、情報処理方法およびプログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US15/265,568 Continuation US10303565B2 (en) 2014-03-18 2016-09-14 Multicasting system voting on server data

Publications (1)

Publication Number Publication Date
WO2015140942A1 true WO2015140942A1 (ja) 2015-09-24

Family

ID=54143950

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/057418 WO2015140942A1 (ja) 2014-03-18 2014-03-18 情報処理システム、サーバ装置、情報処理方法およびプログラム

Country Status (3)

Country Link
US (1) US10303565B2 (ja)
JP (1) JP6158425B2 (ja)
WO (1) WO2015140942A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10165086B2 (en) 2013-09-04 2018-12-25 Kabushiki Kaisha Toshiba Information processing system, server apparatus, information processing method, and computer program product
JP2020115315A (ja) * 2019-01-18 2020-07-30 株式会社日立製作所 分散処理方法及び分散処理システム

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6203407B2 (ja) * 2014-08-05 2017-09-27 株式会社東芝 整列装置、データ処理装置、プログラム、整列方法および多重化システム
JP6556852B2 (ja) * 2015-09-08 2019-08-07 株式会社東芝 多重化処理システム、多重化処理方法及びプログラム

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0683661A (ja) * 1992-04-15 1994-03-25 Internatl Business Mach Corp <Ibm> コンピュータ・システムおよびプロトコル方法
JP2000330811A (ja) * 1999-05-07 2000-11-30 Daimlerchrysler Aerospace Ag ビザンチン式アルゴリズムに従う論理ユニット、この種の論理ユニットを有する計算機ユニット、これらの論理ユニットまたはこれらの計算機ユニットから成る複合系、及びこの種の複合系を動作させるための方法
JP2002517819A (ja) * 1998-06-02 2002-06-18 アライドシグナル・インコーポレイテッド 耐障害性演算用の冗長コンピュータ・ベース・システムを管理するための方法及び装置
JP2003067215A (ja) * 2001-06-15 2003-03-07 Toshiba Corp 分散システム、同システムの多重化制御方法および時刻管理方法
EP1640869A2 (de) * 2004-09-24 2006-03-29 Robert Bosch Gmbh Verfahren zur Durchführung eines Votings von redundanten Informationen

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4907232A (en) * 1988-04-28 1990-03-06 The Charles Stark Draper Laboratory, Inc. Fault-tolerant parallel processing system
US6957331B2 (en) * 2000-01-14 2005-10-18 International Business Machines Corporation Method of achieving multiple processor agreement in asynchronous networks
US7272632B2 (en) 2001-06-15 2007-09-18 Kabushiki Kaisha Toshiba Distributed system and multiplexing control method for the system
JP2005071247A (ja) * 2003-08-27 2005-03-17 Nippon Telegr & Teleph Corp <Ntt> 意味情報ネットワークを用いたビザンチン耐故障ファイル共有システム及びその端末装置
JP2007052727A (ja) 2005-08-19 2007-03-01 Toshiba Corp 情報処理装置およびアクセス方法
US7797457B2 (en) * 2006-03-10 2010-09-14 Microsoft Corporation Leaderless byzantine consensus
US8230253B2 (en) * 2008-07-21 2012-07-24 International Business Machines Corporation Byzantine fault tolerant dynamic quorum using a trusted platform module
JP4818379B2 (ja) * 2009-02-26 2011-11-16 株式会社東芝 フェイルオーバ機能を持つ分散システムおよび同システムにおけるフェイルオーバ方法
CN101576835B (zh) * 2009-05-31 2010-12-01 北京控制工程研究所 一种满足拜占庭协议的两轮通信方法
US8135987B2 (en) * 2010-06-03 2012-03-13 Microsoft Corporation Collection ordering for replicated state machines
US8984330B2 (en) * 2011-03-28 2015-03-17 Siemens Corporation Fault-tolerant replication architecture
WO2015033410A1 (ja) 2013-09-04 2015-03-12 株式会社東芝 情報処理システム、サーバ装置、情報処理方法及びプログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0683661A (ja) * 1992-04-15 1994-03-25 Internatl Business Mach Corp <Ibm> コンピュータ・システムおよびプロトコル方法
JP2002517819A (ja) * 1998-06-02 2002-06-18 アライドシグナル・インコーポレイテッド 耐障害性演算用の冗長コンピュータ・ベース・システムを管理するための方法及び装置
JP2000330811A (ja) * 1999-05-07 2000-11-30 Daimlerchrysler Aerospace Ag ビザンチン式アルゴリズムに従う論理ユニット、この種の論理ユニットを有する計算機ユニット、これらの論理ユニットまたはこれらの計算機ユニットから成る複合系、及びこの種の複合系を動作させるための方法
JP2003067215A (ja) * 2001-06-15 2003-03-07 Toshiba Corp 分散システム、同システムの多重化制御方法および時刻管理方法
EP1640869A2 (de) * 2004-09-24 2006-03-29 Robert Bosch Gmbh Verfahren zur Durchführung eines Votings von redundanten Informationen

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10165086B2 (en) 2013-09-04 2018-12-25 Kabushiki Kaisha Toshiba Information processing system, server apparatus, information processing method, and computer program product
JP2020115315A (ja) * 2019-01-18 2020-07-30 株式会社日立製作所 分散処理方法及び分散処理システム

Also Published As

Publication number Publication date
US10303565B2 (en) 2019-05-28
US20170004029A1 (en) 2017-01-05
JP6158425B2 (ja) 2017-07-05
JPWO2015140942A1 (ja) 2017-04-06

Similar Documents

Publication Publication Date Title
US11509679B2 (en) Trust topology selection for distributed transaction processing in computing environments
US11902120B2 (en) Synthetic data for determining health of a network security system
US20210026745A1 (en) Methods, systems, and computer readable media for providing byzantine fault tolerance
US20210099279A1 (en) Systems and methods for selecting and utilizing a committee of validator nodes in a distributed system
KR102019211B1 (ko) 비잔틴 장애를 극복 가능한 블록체인 생성 방법
US11374769B2 (en) Efficient and secure distributed ledger maintenance
CN111052091A (zh) 网络中的共识形成方法以及构成该网络的节点
US10303565B2 (en) Multicasting system voting on server data
US11362836B2 (en) Consensus protocol for permissioned ledgers
CN110417739B (zh) 一种基于区块链技术的安全的网络带内测量方法
US11652824B2 (en) Trustworthiness evaluation of network devices
EP0794640B1 (en) Virtual authentication network for secure processors
Correia et al. Worm-IT–a wormhole-based intrusion-tolerant group communication system
EP4333360A1 (en) Securing network communications using dynamically and locally generated secret keys
Lalouani et al. Mitigating voltage fingerprint spoofing attacks on the controller area network bus
Meling et al. When you don't trust clients: Byzantine proposer fast paxos
CN111869162B (zh) 网络中的远程证明
Wang et al. Phalanx: A Practical Byzantine Ordered Consensus Protocol
EP4266267A2 (en) Secure element arrays in internet-of-things systems
EP3361692B1 (en) Multi-ttp-based method and device for verifying validity of identity of entity
WO2020206398A1 (en) Systems and methods for remote certification of network devices
CN117874834A (zh) 用于去中心化联邦学习的全局模型完整性校验方法及系统
CN116245526A (zh) 区块链节点管理方法、装置、设备及存储介质
CN117411649A (zh) 基于区块链的数据检测方法、装置、设备、介质及程序

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: 14885950

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2016508380

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: 14885950

Country of ref document: EP

Kind code of ref document: A1