Patent Publication Number: US-10776392-B2

Title: Apparatus and method to establish a connection between apparatuses while synchronization of connection information thereof is suspended

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
     This application is based upon and claims the benefit of priority of the prior Japanese Patent Application No. 2016-142090, filed on Jul. 20, 2016, the entire contents of which are incorporated herein by reference. 
     FIELD 
     The embodiments discussed herein are related to apparatus and method to establish a connection between first and second apparatuses while synchronization of connection information thereof is suspended. 
     BACKGROUND 
     A technique is known which makes a database redundant among a plurality of information processing devices. For example, a certain document discloses a technique in which a master server includes a session table where information for a session is registered and a replica server duplicates the session table of the master server. 
     However, in a case where information for connection of information processing devices is registered in a database and communication which is performed to synchronize the database stops due to communication obstacles, the connection between the information processing devices might not be regularly established. 
     Japanese Laid-open Patent Publication No. 2014-48969 is an example of the related art. 
     SUMMARY 
     According to an aspect of the invention, a first apparatus includes a memory configured to store first connection information in association with each of connections established between the first apparatus and a second apparatus. The first apparatus synchronizes the first connection information stored in the memory with second connection information that is managed by the second apparatus. When a connection is to be established between the first apparatus and the second apparatus while synchronization of the first connection information performed by the processor is suspended, the first apparatus generates first unique information that is unique at least between the first apparatus and the second apparatus, and transmits the generated first unique information to the second apparatus, and establishes, based on the first unique information, a connection between the first apparatus and the second apparatus. 
     The object and advantages of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the claims. 
     It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are not restrictive of the invention, as claimed. 
    
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
         FIG. 1  is a diagram illustrating an example of a configuration of a network, according to an embodiment; 
         FIG. 2  is a diagram illustrating an example of a system of an information processing system, according to an embodiment; 
         FIG. 3  is a diagram illustrating an example of a hardware configuration of an information processing device, according to an embodiment; 
         FIG. 4  is a diagram illustrating an example of a functional configuration of an information processing device, according to an embodiment; 
         FIG. 5  is a diagram illustrating an example of a system table, according to an embodiment; 
         FIG. 6  is a diagram illustrating an example of a first correspondence table, according to an embodiment; 
         FIG. 7  is a diagram illustrating an example of connection, according to an embodiment; 
         FIG. 8  is a diagram illustrating an example of an operational flowchart for a process performed by a synchronization unit, according to an embodiment; 
         FIG. 9  is a diagram illustrating an example of a table synchronization process and a table division process, according to an embodiment; 
         FIG. 10  is a diagram illustrating an example of a table synchronization process and a table division process, according to an embodiment; 
         FIG. 11  is a diagram illustrating an example of a table synchronization process and a table division process, according to an embodiment; 
         FIG. 12  is a diagram illustrating an example of a table synchronization process and a table division process, according to an embodiment; 
         FIG. 13  is a diagram illustrating an example of a table synchronization process and a table division process, according to an embodiment; 
         FIG. 14  is a diagram illustrating an example of a table synchronization process and a table division process, according to an embodiment; 
         FIG. 15  is a diagram illustrating an example of an operational flowchart for a table division process, according to an embodiment; 
         FIG. 16  is a diagram illustrating an example of an operational flowchart for a table synchronization process in a usable range, according to an embodiment; 
         FIG. 17  is a diagram illustrating an example of an operational flowchart for a table synchronization process in a usable range, according to an embodiment; 
         FIG. 18  is a diagram illustrating an example of a synchronization table, according to an embodiment; 
         FIG. 19  is a diagram illustrating an example of a combination of a value of a synchronization success flag in a usable range and a value of a synchronization success flag out of the usable range, according to an embodiment; 
         FIG. 20  is a diagram illustrating an example of an operational flowchart for a table synchronization process out of a usable range, according to an embodiment; 
         FIG. 21  is a diagram illustrating an example of an operational flowchart for a table synchronization process out of a usable range, according to an embodiment; 
         FIG. 22  is a diagram illustrating an example of an operational flowchart for a process performed by a user terminal in a case where a network connector is generated, according to an embodiment; 
         FIG. 23  is a diagram illustrating an example of information included in an execution result of an API for generating a network connector, according to an embodiment; 
         FIG. 24  is a diagram illustrating an example of an operational flowchart for a network connector generation process, according to an embodiment; 
         FIG. 25  is a diagram illustrating an example of an operational flowchart for a first updating process, according to an embodiment; 
         FIG. 26  is a diagram illustrating an example of an operational flowchart for a process performed by a user terminal in a case where an endpoint is generated, according to an embodiment; 
         FIG. 27  is a diagram illustrating an example of an operational flowchart for an endpoint generation process, according to an embodiment; 
         FIG. 28  is a diagram illustrating an example of an operational flowchart for a second updating process, according to an embodiment; 
         FIG. 29  is a diagram illustrating an example of an endpoint table, according to an embodiment; 
         FIG. 30  is a diagram illustrating an example of a second correspondence table, according to an embodiment; 
         FIG. 31  is a diagram illustrating an example of an operational flowchart for an endpoint generation process, according to an embodiment; 
         FIG. 32  is a diagram illustrating an example of reuse of a network connector; 
         FIG. 33  is a diagram illustrating an example of reuse of a network connector; and 
         FIG. 34  is a diagram illustrating an example of reuse of a network connector. 
     
    
    
     DESCRIPTION OF EMBODIMENTS 
     An aspect of the disclosure provides a technique which establishes connection between devices even in a case where it is difficult to synchronize a database which stores information for the connection between the devices. 
       FIG. 1  illustrates a configuration of a network according to an embodiment. For example, an information processing system  1 I and an information processing system  2 I and a user terminal  1 T are coupled to a network  1 N which is the internet. An operator of the user terminal  1 T is a user of resources of the information processing system  1 I and the information processing system  2 I, and uses, for example, a virtual machine which is executed on the information processing system  1 I and the information processing system  2 I. The information processing system  1 I and the information processing system  2 I are realized by, for example, OpenStack. In the user terminal  1 T, an application for the user is executed, and a process is executed in the information processing system  1 I and the information processing system  2 I according to an application programming interface (API) issued from the application. 
     Although the number of information processing systems is 2 and the number of user terminals is 1 in  FIG. 1 , the numbers are not limited thereto. 
       FIG. 2  illustrates a system outline of the information processing system  1 I. The information processing system  1 I includes information processing devices  1 S to  3 S. The information processing devices  1 S to  3 S are coupled through, for example, a network  3 N which is a local area network (LAN). 
     Although the number of information processing devices is 3 in  FIG. 2 , the number is not limited thereto. In addition, a device, such as a physical switch, may be provided in the information processing system  1 I. 
     Since a system outline of the information processing system  2 I is the same as the system outline of the information processing system  1 I, the description thereof will not be repeated. 
       FIG. 3  is a diagram illustrating a hardware configuration of the information processing device  1 S. For example, the information processing device  1 S, which is a physical server, includes one or more central processing units (CPUs)  10 , one or more memories (for example, dual inline memory modules (DIMMs))  11 , one or more network interface cards (NICs)  13 , one or more hard disk drives (HDDs)  14 , and a bus  15 . 
     Since hardware configurations of the information processing device  2 S and the information processing device  3 S are the same as the hardware configuration of the information processing device  1 S, the description thereof will not be repeated. 
     A program which executes a process according to the embodiment is stored in, for example, the HDD  14 , is loaded to the memory  11 , and is executed by the CPU  10 . Therefore, various functions as illustrated in  FIG. 4  are realized.  FIG. 4  illustrates a functional block diagram of the information processing device  1 S. The information processing device  1 S includes a connection management unit  101 , a database (DB) processing unit  103 , a DB  105 , and a synchronization unit  107 . The DB  105  is realized by the memory  11  or the HDD  14 . 
     The connection management unit  101  executes a process of managing connection which is established between an information processing device in the information processing system  1 I and an information processing device in the information processing system  2 I. The DB processing unit  103  executes write in the DB  105 , read from the DB  105 , or the like. The synchronization unit  107  executes a process of fully synchronizing data stored in the DB  105  with data stored in a DB  105  of another information processing system. 
     Although  FIG. 4  illustrates an example in which the connection management unit  101 , the DB processing unit  103 , the DB  105 , and the synchronization unit  107  are realized in the information processing device  1 S, the units may be realized in an information processing device other than the information processing device  1 S. In addition, processing units corresponding to the connection management unit  101 , the DB processing unit  103 , the DB  105 , and the synchronization unit  107  are realized in any one of information processing devices in the information processing system  2 I. 
     In the information processing devices  1 S to  3 S and the information processing devices in the information processing system  2 I, for example, the virtual machine of the user or a process of the user is executed, and connection is established between the information processing system  1 I and the information processing system  2 I for communication of the virtual machine or the process. 
       FIG. 5  illustrates an example of a system table stored in the DB  105 . In the example of  FIG. 5 , a system number and a system name are stored. In the system table, an entry is provided for each information processing system. The DB  105  of each information processing system stores the same system table. 
       FIG. 6  illustrates an example of a first correspondence table stored in the DB  105 . In the example of  FIG. 6 , an identifier (ID) of a network connector (hereinafter, referred to as a connector ID) which will be described later and an ID of a virtual router (virtual router will be described later) which is executed in the information processing system are stored. Since the virtual router ID is arbitrarily set in the information processing system, content of data stored in the DB  105  of each information processing systems is different. 
     Connection according to the embodiment will be described with reference to  FIG. 7 . The virtual machine or the process of the user uses an endpoint as a communication channel (for example, a virtual port), as illustrated in  FIG. 7 . In  FIG. 7 , an endpoint  1010  is generated in the connection management unit  101  of the information processing system  1 I, and an endpoint  2010  is generated in a connection management unit  201  of the information processing system  2 I. The endpoints  1010  and  2010  correspond to ends of connection, and are generated according to an API from the user terminal  1 T. In addition, in a case where an operation starts, a virtual router  1020  is generated in the information processing system  1 I, and the generated endpoint  1010  is virtually coupled to the virtual router  1020 . In a case where the operation starts, a virtual router  2020  is generated in the information processing system  2 I, and the generated endpoint  2010  is virtually coupled to the virtual router  2020 . Therefore, one connection is generated between the endpoint  1010  and the endpoint  2010 . In the embodiment, a unit of the connection is referred to as a network connector, and one virtual router and one endpoint in each information processing system correspond to one network connector. 
     Although the number of network connectors is 1 in  FIG. 7 , the number is not limited thereto. 
     Meanwhile, both the communication for synchronization of DBs and the communication between the endpoints are performed through the network  1 N. However, in the embodiment, it is assumed that a case is generated where, due to a reason specific to communication for synchronization of DBs (for example, a problem of a load of the synchronization unit  107 ), only the communication stops. 
     Subsequently, a process which is executed in the information processing system  1 I will be described with reference to  FIGS. 8 to 34 . 
     First, a process which is executed by the synchronization unit  107  will be described with reference to  FIGS. 8 to 21 . Here, a process which is executed by the synchronization unit  107  of the information processing system  1 I will be described as an example. 
     The synchronization unit  107  of the information processing system  1 I transmits a monitor packet to a synchronization unit of another information processing system (here, the information processing system  2 I), and waits for a response ( FIG. 8 : step S 1 ). In the embodiment, communication that is performed between the synchronization units in order to synchronize the DBs of the respective information processing systems is referred to as synchronized communication. 
     The synchronization unit  107  determines whether or not the response is received from another information processing system (step S 3 ). That is, the synchronization unit  107  determines whether or not the synchronized communication is possible. 
     In a case where the response is received from another information processing system (step S 3 : Yes), the synchronization unit  107  determines whether or not the synchronized communication is possible until just before the response is received (step S 9 ). That is, the synchronization unit  107  determines whether or not a state is converted from a state in which the synchronized communication is not possible into a state in which the synchronized communication is possible. 
     In a case where the synchronized communication is possible just before the response is received (step S 9 : Yes), the synchronization has been performed without problems, and the process returns to step S 1 . In contrast, in a case where the synchronized communication is not possible until just before the response is received (step S 9 : No), the synchronization has not been performed, and thus the synchronization unit  107  executes a table synchronization process (step S 11 ). The table synchronization process will be described later. Furthermore, the process proceeds to step S 13 . 
     In contrast, in a case where the response is not received from another information processing system (step S 3 : No), the synchronization unit  107  determines whether or not the synchronized communication is possible until just before (step S 5 ). 
     In a case where the synchronized communication is not possible even just before (step S 5 : No), the process proceeds to step S 13 . In contrast, in a case where the synchronized communication is possible until just before (step S 5 : Yes), the synchronization unit  107  executes a table division process (step S 7 ). The table division process will be described later. Furthermore, the process proceeds to step S 13 . 
     The synchronization unit  107  determines whether or not an end instruction is received from a manager of the information processing system  1 I (step S 13 ). In a case where the end instruction is not received (step S 13 : No), the process returns to step S 1 . In contrast, in a case where the end instruction is received (step S 13 : Yes), the process ends. 
     When the above-described process is executed, synchronization or division is performed on a connector table at a timing in which a state of communication is changed. 
     Outlines of the table synchronization process and the table division process will be described with reference to  FIGS. 9 to 14 . The connector table is stored in the DB  105  as illustrated in  FIG. 9 , and data stored in the connector table is a target of the synchronization. The connector table stores records each including the fields: a connector ID which is an ID of a network connector, a dispensing flag which indicates whether or not the connector ID is dispensed, an identifier which is given to the network connector, a system number of an information processing system which dispenses the connector ID, and a system number of the information processing system which is allowed to use the connector ID are stored. The identifier, which is given to the network connector identifier, is uniquely generated between the information processing system  1 I and the information processing system  2 I. In the embodiment, an identifier, which includes the system name of the information processing system and the dispensed connector ID, is generated. 
     If the network connector is repeatedly generated and deleted in a certain information processing system, there is a possibility that communication is performed between endpoints of different users by reuse of the connection. However, in a case where the above-described identifier is used, the reuse of the connection is avoided, and thus security is improved. This will be described in detail later. 
     In a case where a state is converted from the state in which the synchronized communication is possible into the state in which the synchronized communication is not possible, division is performed on records each including a non-dispensed connector ID, in the records of the connector table ( FIG. 9 ) according to a ratio of the number of connector IDs dispensed by an information system to the number of all the dispensed connector IDs, and the records acquired through the division are assigned to the respective information processing systems so as to allow each of the information processing systems to generate network connectors independently by using the assigned records while the synchronized communication is not possible. For example, as illustrated in  FIG. 10 , in a case where four connector IDs are dispensed by an information processing system “AZ 1 ” and two connector IDs are dispensed by an information processing system “AZ 2 ”, 4/(4+2)=2/(2+1) records of the non-dispensed records are assigned to the information processing system “AZ 1 ” as a usable range for the information processing system “AZ 1 ”, and 2/(4+2)=1/(2+1) records of the non-dispensed records are assigned to the information processing system “AZ 2 ” as a usable range for the information processing system “AZ 2 ”. As described above, a process of dividing a range of the non-dispensed connector IDs by a plurality of usable ranges corresponds to the table division process. 
     Furthermore, in the table synchronization process after the synchronized communication is recovered, synchronization for the usable range of the information processing system (here, the information processing system  1 I) and synchronization for the usable range of another information processing system (that is, the information processing system  2 I) other than the information processing system  1 I are executed in parallel. For example, as illustrated in  FIG. 11 , in a case where a connector ID “X 1 ” is dispensed by the information processing system “AZ 1 ” and a connector ID “X 2 ” is dispensed by the information processing system “AZ 2 ”, records corresponding to connector IDs “Y 1 ” to “Y 10 ” are the usable range for the information processing system “AZ 1 ”, and records corresponding to connector IDs “Z 1 ” to “Z 10 ” are the usable range for the information processing system “AZ 2 ”. In  FIG. 11 , hatched parts indicate the ranges of the connector IDs which are not allowed to be dispensed by the corresponding information processing system. Here, it is assumed that the network connector is generated for the connector IDs “Y 1 ” to “Y 10 ” in advance by the information processing system “AZ 1 ” and the network connector is generated for the connector IDs “Z 1 ” to “Z 10 ” in advance by the information processing system “AZ 2 ”. In a case where the network connectors are generated in advance, although the connector IDs are dispensed in the records of the connector table ( FIG. 9 ), connections between the endpoints are not necessarily established. 
     As illustrated in  FIG. 12 , the information processing system “AZ 1 ” notifies the connector IDs “Y 1 ” to “Y 10 ” for which the network connectors have been generated by the information processing system “AZ 1 ”, to the information processing system “AZ 2 ”. The information processing system “AZ 2 ” notifies the connector IDs “Z 1 ” to “Z 10 ” for which the network connectors have been generated by the information processing system “AZ 2 ”, to the information processing system “AZ 1 ”. At this time, the information processing system “AZ 1 ” has already generated endpoints for the connector IDs “Z 1 ” to “Z 5 ”. The information processing system “AZ 2 ” has already generated endpoints for the connector IDs “Y 1 ” to “Y 4 ” in advance. In a case where the endpoints have been already generated, communication is possible between the endpoints in which connection is established. 
     As illustrated in  FIG. 13 , the information processing system “AZ 1 ” notifies the connector IDs “Z 6 ” to “Z 10 ” for which endpoints have not been generated yet among the connector IDs notified by the information processing system “AZ 2 ”, to the information processing system “AZ 2 ”. In addition, the information processing system “AZ 2 ” notifies the connector IDs “Y 5 ” to “Y 10 ” for which endpoints have not been generated yet among the connector IDs notified by the information processing system “AZ 1 ”, to the information processing system “AZ 1 ”. The connector IDs, which are notified in  FIG. 13 , correspond to connector IDs included in records for which synchronization is not completed. Therefore, the respective information processing systems are capable of grasping the records for which synchronization is not completed. 
     As illustrated in  FIG. 14 , the information processing system “AZ 1 ” transmits the records that include the connector IDs notified by the information processing system “AZ 2 ”, to the information processing system “AZ 2 ”. In addition, the information processing system “AZ 2 ” transmits the records that include the connector IDs notified by the information processing system “AZ 1 ”, to the information processing system “AZ 1 ”. As a result, the synchronization on the connector table ( FIG. 9 ) is completed. 
     The table division process will be described in more detail with reference to  FIG. 15 . First, the synchronization unit  107  reads the system number of the information processing system that has dispensed the connector ID, from the connector table ( FIG. 9 ) ( FIG. 15 : step S 21 ). 
     The synchronization unit  107  calculates a ratio of the number of connector IDs dispensed by the information processing system to the number of all the connector IDs which are stored in the connector table ( FIG. 9 ), for each of the information processing systems (step S 23 ). The process executed in step S 23  is the same as being described with reference to  FIG. 10 . The number of all the connector IDs which are stored in the connector table ( FIG. 9 ) may be set in advance by the manager of the information processing system  1 I. 
     The synchronization unit  107  calculates the range of the connector IDs (that is, the usable range) which are allowed to be used by the respective information processing systems, based on the ratios calculated in step S 23  (step S 25 ). The process executed in step S 25  is the same as being described with reference to  FIG. 10 . 
     The synchronization unit  107  reads the system number of the information processing system  1 I from the system table ( FIG. 5 ) (step S 27 ). 
     The synchronization unit  107  calculates a sum x of the numbers of connector IDs which may be used by information processing systems whose system number is smaller than the system number read in step S 27  (step S 29 ). For example, in a case where the system number read in step S 27  is 3, the sum x of the number of connector IDs which may be used by the information processing system having the system number “1”, and the number of connector IDs which may be used by an information processing system having a system number “2”, is calculated. 
     The synchronization unit  107  writes the system number of the information processing system  1 I in y (y is the number of connector IDs which may be used by the information processing system  1 I) records sequentially from an (x+1)-th record in the connector table ( FIG. 9 ) (step S 31 ). Thereafter, the process returns to a calling process. 
     The table synchronization process will be described in more detail with reference to  FIGS. 16 to 21 . As described above, in each of the information processing systems, the synchronization process for connector IDs in the usable range is executed in parallel with the synchronization process for connector IDs out of the usable range. First, the synchronization process for the connector IDs in the usable range (table synchronization process  1 ) will be described. 
     The synchronization unit  107  transmits synchronization data in the connector table, which includes connector IDs (in this case, connector IDs for which the dispensing flag is set at “1”) dispensed from the usable range of the information processing system  1 I ( FIG. 9 ), to another information processing system (in this case, the information processing system  2 I) ( FIG. 16 : step S 41 ). 
     The synchronization unit  107  sets a reception timer for a response to the synchronization data transmitted in step S 41  (step S 43 ). 
     The synchronization unit  107  determines whether or not the response is received from the information processing system  2 I (step S 45 ). 
     When the response is not received from the information processing system  2 I (step S 45 : No), the synchronization unit  107  determines whether or not it is time out of the reception timer which is set in step S 43  (step S 47 ). When it is not the time out of the reception timer (step S 47 : No), the process returns to step S 45 . When it is the time out of the reception timer (step S 47 : Yes), the process proceeds to step S 57 . 
     In contrast, when the response is received from the information processing system  2 I (step S 45 : Yes), the synchronization unit  107  extracts records including a connector ID that coincides with connector IDs included in the response, from the connector table ( FIG. 9 ). Furthermore, the synchronization unit  107  transmits the extracted records to the information processing system  2 I (step S 49 ). 
     The synchronization unit  107  sets a reception timer for a response to the record which is transmitted in step S 49  (step S 51 ). 
     The synchronization unit  107  determines whether or not the response is received from the information processing system  2 I (step S 53 ). 
     When the response is received from the information processing system  2 I (step S 53 : Yes), the process proceeds to step S 61  of  FIG. 17  through a terminal A. A process subsequent to the terminal A will be described later. 
     In contrast, when the response is not received from the information processing system  2 I (step S 53 : No), the synchronization unit  107  determines whether or not it is the time out of the reception timer which is set in step S 51  (step S 55 ). 
     When it is not the time out of the reception timer (step S 55 : No), the process returns to step S 53 . When it is the time out of the reception timer (step S 55 : Yes), the synchronization unit  107  sets a synchronization process flag in the usable range at “ON” in the synchronization table stored in the DB  105  (step S 57 ). Thereafter, the process returns to a calling process. 
       FIG. 18  illustrates an example of the synchronization table stored in the DB  105 . In the example of  FIG. 18 , the synchronization process flag for connector IDs in the usable range, a synchronization success flag for connector IDs in the usable range, a synchronization process flag for connector IDs out of the usable range, and a synchronization success flag for connector IDs out of the usable range are stored. The synchronization process flag indicates whether or not the synchronization process is completed. When the synchronization process is completed, the synchronization process flag is set at “ON”. The synchronization success flag indicates whether or not the synchronization is successful. When the synchronization is successful, the synchronization success flag is set at “ON”. Hereinafter, “a flag for connector IDs in the usable range” and “a flag for connector IDs out of the usable range” are abbreviated as “a flag in the usable range” and “a flag out of the usable range”, respectively. 
       FIG. 19  illustrates a combination of a value of the synchronization success flag in the usable range and a value of the synchronization success flag out of the usable range. (1) When the synchronization success flag in the usable range is “ON” and the synchronization success flag out of the usable range is “ON”, the synchronization is completely successful, and thus information which is stored in a field “system capable of using ID” in the connector table is deleted. (2) When the synchronization success flag in the usable range is “OFF” and the synchronization success flag out of the usable range is “ON”, the synchronization fails as a whole, and thus records for connector IDs out of the usable range is rolled back to a state before the synchronization process starts. (3) When the synchronization success flag in the usable range is “ON” and the synchronization success flag out of the usable range is “OFF”, the synchronization fails as a whole, and thus the synchronization process ends without executing an updating process on the records in the connector table. (4) When the synchronization success flag in the usable range is “OFF” and the synchronization success flag out of the usable range is “OFF”, the synchronization fails, and thus the synchronization process ends without executing the updating process on the records in the connector table. 
     Proceeding to description of  FIG. 17 , the synchronization unit  107  sets the synchronization process flag and the synchronization success flag in the usable range at “ON” ( FIG. 17 : step S 61 ). 
     The synchronization unit  107  determines whether or not the synchronization process flag out of the usable range is “ON” (step S 63 ). When the synchronization process flag out of the usable range is not “ON” (step S 63 : No), the synchronization process for connectors out of the usable range is not completed, and thus the process returns to step S 63 . 
     When the synchronization process flag for connectors out of the usable range is “ON” (step S 63 : Yes), the synchronization unit  107  determines whether or not the synchronization success flag out of the usable range is “ON” (step S 65 ). When the synchronization success flag out of the usable range is not “ON” (step S 65 : No), the process proceeds to  FIG. 16  through a terminal B, and the process returns to a calling process. 
     When the synchronization success flag out of the usable range is “ON” (step S 65 : Yes), the synchronization unit  107  deletes information set in the field “system capable of using ID” for the records included in the usable range (step S 67 ). Thereafter, the process returns to  FIG. 16  through the terminal B, and the process returns to a calling process. 
     A synchronization process (table synchronization process  2 ) for connector IDs out of the usable range will be described with reference to  FIGS. 20 and 21 . 
     The synchronization unit  107  sets a reception timer for the synchronization data ( FIG. 20 : step S 71 ). 
     The synchronization unit  107  determines whether or not the synchronization data is received from another information processing system (here, the information processing system  2 I) (step S 73 ). 
     When the synchronization data is not received from the information processing system  2 I (step S 73 : No), the synchronization unit  107  determines whether or not it is the time out of the reception timer which is set in step S 71  (step S 75 ). When it is not the time out of the reception timer (step S 75 : No), the process returns to step S 73 . When it is the time out of the reception timer (step S 75 : Yes), the process proceeds to step S 87 . 
     In contrast, when the synchronization data is received from the information processing system  2 I (step S 73 : Yes), the synchronization unit  107  specifies a connector ID out of the usable range, for which an endpoint has been generated, from the connector table ( FIG. 9 ) (step S 77 ). An identifier of the connector ID, for which the endpoint has been generated, is registered in the connector table ( FIG. 9 ). 
     The synchronization unit  107  transmits connector IDs, which correspond to a difference between the connector IDs specified in step S 77  and connector IDs in the received synchronization data, to the information processing system  2 I (step S 79 ). 
     The synchronization unit  107  sets a reception timer for the synchronization data for the connector IDs transmitted in step S 79  (step S 81 ). 
     The synchronization unit  107  determines whether or not the synchronization data is received from the information processing system  2 I (step S 83 ). 
     When the synchronization data is received from the information processing system  2 I (step S 83 : Yes), the process proceeds to step S 89  of  FIG. 21  through a terminal C. A process subsequent to the terminal C will be described later. 
     In contrast, when the synchronization data is not received from the information processing system  2 I (step S 83 : No), the synchronization unit  107  determines whether or not it is time out of the reception timer which is set in step S 81  (step S 85 ). 
     When it is not the time out of the reception timer (step S 85 : No), the process returns to step S 83 . When it is time out of the reception timer (step S 85 : Yes), the synchronization unit  107  sets the synchronization process flag out of the usable range at “ON” in the synchronization table ( FIG. 18 ) stored in the DB  105  (step S 87 ). Thereafter, the process returns to a calling process. 
     Proceeding to description of  FIG. 21 , the synchronization unit  107  updates records in the connector table, whose connector IDs coincide with records included in the received synchronization data ( FIG. 21 : step S 89 ). 
     The synchronization unit  107  transmits a response to the received synchronization data to the information processing system  2 I (step S 91 ). 
     The synchronization unit  107  sets both the synchronization process flag out of the usable range and the synchronization success flag at “ON” (step S 93 ). 
     The synchronization unit  107  determines whether or not the synchronization process flag in the usable range is “ON” (step S 95 ). When the synchronization process flag in the usable range is not “ON” (step S 95 : No), the synchronization process in the usable range is not completed, and thus the process returns to step S 95 . 
     When the synchronization process flag in the usable range is “ON” (step S 95 : Yes), the synchronization unit  107  determines whether or not the synchronization success flag in the usable range is “ON” (step S 97 ). When the synchronization success flag in the usable range is not “ON” (step S 97 : No), the roll back process, which is a process returning to the process before the synchronization process starts, is executed on the records out of the usable range (step S 101 ). 
     When the synchronization success flag in the usable range is “ON” (step S 97 : Yes), the synchronization unit  107  deletes information set in the field “system capable of using ID” for the records out of the usable range (step S 99 ). Thereafter, the process returns to  FIG. 20  through a terminal D, and the process returns to a calling process. 
     As described above, division is performed on the range of the connector IDs and the synchronization unit of each of the information processing systems grasps the usable range of each of the information processing systems. Therefore, it is possible to execute synchronization of records in the usable range in parallel with synchronization of records out of the usable range without contradiction. 
     Subsequently, the process executed when the network connector is generated and the process executed when the endpoint is generated will be described with reference to  FIGS. 22 to 31 . 
     First, the process, which is executed by the user terminal  1 T when the network connector is generated, will be described with reference to  FIG. 22 . The user terminal  1 T issues an API for generating a network connector to any one of information processing systems according to an instruction from the user, and causes the connection management unit  101  of the information processing system to execute a network connector generation process ( FIG. 22 : step S 111 ). Here, it is assumed that the API is issued to the information processing system  1 I. The network connector generation process will be described later. 
     The user terminal  1 T receives an execution result of the API for generating the network connector from the information processing system  2 I (step S 113 ). The user terminal  1 T stores the received execution result in a storage device such as a memory. Thereafter, the process ends. 
       FIG. 23  illustrates an example of information included in the execution result. The example of  FIG. 23  includes a connector ID, an identifier which is given to a network connector, and a system name of a system which dispenses the connector ID. The execution result is used later in an endpoint generation process. 
     The network connector generation process will be described with reference to  FIGS. 24 and 25 . First, the connection management unit  101  receives the API for generating the network connector from the user terminal  1 T ( FIG. 24 : step S 121 ). 
     The connection management unit  101  generates a unique identifier in the whole information processing system by combining the system name of the information processing system  1 I and a serial number for the connector ID (step S 123 ). For example, an identifier is generated by connecting the system name of the information processing system  1 I to the serial number for the connector ID. Here, the serial number is a number incremented whenever the connector ID is generated in the information processing system  1 I. 
     The connection management unit  101  transmits a request to generate a network connector, which includes the identifier generated in step S 123  as an argument, to the DB processing unit  103  in the information processing system  1 I, and causes the DB processing unit  103  to execute a first updating process (step S 125 ). 
     Here, the first updating process will be described. First, the DB processing unit  103  receives the request to generate the network connector from the connection management unit  101  ( FIG. 25 : step S 131 ). 
     The DB processing unit  103  determines whether or not communication failure is occurring between the DBs (step S 133 ). In a case where communication failure is occurring between the DBs (step S 133 : Yes), the DB processing unit  103  causes the synchronization unit  107  to execute a process below. For example, the synchronization unit  107  specifies one record, which includes a connector ID that is not dispensed in the usable range, from the connector table ( FIG. 9 ), and updates the specified record (step S 135 ). Thereafter, the process proceeds to step S 145 . 
     In step S 135 , a dispensing flag of the specified record is set at “1”, the identifier which is included in the request to generate the network connector is registered, and the system number of the information processing system  1 I as the system which dispenses the connector ID is registered. 
     In contrast, in a case where the communication failure is not occurring between the DBs (step S 133 : No), the DB processing unit  103  causes the synchronization unit  107  to execute a process below. For example, the synchronization unit  107  executes a process of acquiring an exclusive lock of the connector tables ( FIG. 9 ) of the respective information processing systems (step S 137 ). In step S 137 , communication is performed between the synchronization units of the respective information processing systems. 
     The synchronization unit  107  specifies one record, which includes a connector ID that is not dispensed, from the connector table ( FIG. 9 ), and updates the specified record (step S 139 ). In step S 139 , the dispensing flag of specified record is set at “1”, the identifier, which is included in the request to generate the network connector, is registered, and the system number of the information processing system  1 I as the system which dispenses the connector ID is registered. The field “system capable of using ID” is set at NULL. 
     The synchronization unit  107  transmits the record updated in step S 139  to another information processing system (here, the information processing system  2 I), so that the updated record is registered in the connector table of the information processing system  2 I (step S 141 ). 
     The synchronization unit  107  executes a process of releasing the exclusive lock of the connector tables ( FIG. 9 ) of the respective information processing systems (step S 143 ). In step S 143 , communication is performed between the synchronization units of the respective information processing systems. 
     The synchronization unit  107  provides a notification that updating is completed to the DB processing unit  103 . In response, the DB processing unit  103  transmits a response which includes the updated record to the connection management unit  101  (step S 145 ). Thereafter, the process ends. 
     Returning to description with reference to  FIG. 24 , the connection management unit  101  receives the response to the request to generate the network connector from the DB processing unit  103  (step S 127 ). 
     The connection management unit  101  transmits an execution result including information (in the embodiment, the connector ID, the identifier, and the system number), which indicates that the network connector is normally generated, to the user terminal  1 T (step S 129 ). Thereafter, the process ends. 
     When the process as described above is executed, the generation of the network connector, which is a process corresponding to a step before the endpoint is generated and communication actually starts, is appropriately completed. In addition, for example, even if the network connector is generated while communication failure is occurring, a unique identifier is given to the network connector between the information processing system  1 I and the information processing system  2 I, and an occurrence of reuse of the network connector may be avoided. 
     Subsequently, a process executed by the user terminal  1 T in a case where the endpoint is generated will be described. The user terminal  1 T acquires the connector ID and the identifier from the execution result of the API for generating the network connector ( FIG. 26 : step S 115 ). 
     The user terminal  1 T issues the API for generating the endpoint, which includes the connector ID and the identifier included in the execution result as arguments, to the respective information processing systems (here, the information processing systems  1 I and  2 I) which perform connection by the generated network connectors, and causes the connection management unit  101  to execute the endpoint generation process (step S 117 ). 
     The endpoint generation process will be described with reference to  FIG. 27 . First, the connection management unit  101  receives the API for generating the endpoint from the user terminal  1 T ( FIG. 27 : step S 151 ). 
     The connection management unit  101  transmits a request to generate the endpoint, which includes the connector ID and the identifier included in the API as the arguments, to the DB processing unit  103  in the information processing system  1 I, and causes the DB processing unit  103  to execute a second updating process (step S 153 ). 
     The second updating process will be described with reference to  FIG. 28 . The DB processing unit  103  receives the request to generate the endpoint from the connection management unit  101  ( FIG. 28 : step S 191 ). 
     The DB processing unit  103  determines whether or not the connector ID included in the generation request has been already dispensed, based on the connector table (step S 193 ). The connector ID, which has been already dispensed, has a dispensing flag which is set at “1” in the connector table. 
     In a case where the connector ID included in the generation request has been already dispensed (step S 193 : Yes), the DB processing unit  103  generates a record, which includes the connector ID and the identifier included in the generation request, in an endpoint table. Furthermore, the DB processing unit  103  sets the synchronization flag at “ON” (step S 195 ), and transmits a response to the request to generate the endpoint, to the connection management unit  101 . Thereafter, the process ends. 
       FIG. 29  illustrates an example of the endpoint table. In the example of  FIG. 29 , an endpoint ID, a connector ID, an identifier, and a synchronization flag are stored. The synchronization flag indicates a state of communication between the DBs when an endpoint is generated, and the synchronization flag is set at “OFF” when a failure occurs in communication between the DBs. The record of the endpoint table is different from that of the connector table ( FIG. 9 ), and is deleted or added while an operation is being performed. 
     On the other hand, when the connector ID included in the generation request has not been dispensed yet (step S 193 : No), the DB processing unit  103  specifies a record which includes the connector ID included in the generation request, and updates the specified record (step S 197 ). In step S 197 , the dispensing flag of the specified record is set at “1”, the identifier included in the request to generate the endpoint is registered, and the system number of the information processing system  1 I is registered as the system which dispenses the connector ID. In a case where a failure is occurring in communication between the DBs, the record of the connector table is not updated, and thus the record is updated by the process in step S 197 . 
     The DB processing unit  103  generates the record which includes the connector ID and the identifier included in the generation request in the endpoint table ( FIG. 29 ). Furthermore, the DB processing unit  103  sets the synchronization flag at “OFF” (step S 199 ), and transmits the response to the request to generate the endpoint, to the connection management unit  101 . Thereafter, the process ends. 
     Returning to description of  FIG. 27 , the connection management unit  101  receives the response to the request to generate the endpoint, from the DB processing unit  103  (step S 155 ). 
     The connection management unit  101  specifies a virtual router corresponding to the connector ID included in the API for generating the endpoint from the first correspondence table ( FIG. 6 ) (step S 157 ). 
     The connection management unit  101  associates an ID of the virtual router specified in step S 157  with an ID of the generated endpoint, and stores the virtual router ID and the endpoint ID in a second correspondence table (step S 159 ). 
       FIG. 30  illustrates an example of data stored in the second correspondence table. In  FIG. 30 , the endpoint ID and the virtual router ID corresponding to the endpoint are stored. 
     The connection management unit  101  determines whether or not a synchronization flag of the endpoint table ( FIG. 29 ) is set at “ON” for the generated endpoint (step S 161 ). 
     When the synchronization flag of the endpoint table ( FIG. 29 ) is not set at “ON” for the generated endpoint (step S 161 : No), the process proceeds to step S 167  of  FIG. 31  through a terminal E. 
     Proceeding to description with reference to  FIG. 31 , the connection management unit  101  outputs a connection establishment instruction to the generated endpoint. The endpoint, which receives the establishment instruction, executes a process of establishing connection between the endpoint and an endpoint, which is generated using the same connector ID in the information processing system  2 I, using the virtual router specified in step S 157  (step S 167  of  FIG. 31 ). As illustrated in  FIG. 7 , when one connection is established between endpoints through the virtual routers, communication is possible between the endpoints. 
     The connection management unit  101  determines whether or not the connection establishment is successful (step S 169 ). 
     When the connection establishment is successful (step S 169 : Yes), the connection management unit  101  extracts identifiers from a packet which is transmitted and received when the connection is established, and compares the identifiers which are set to the endpoints of both ends of the connection (step S 177 ). In this way, verification of the network connector is checked. 
     When the identifiers, which are set to the endpoints of both ends of the connection, do not coincide with each other (step S 179 : No), the process proceeds to step S 171 . When the identifiers, which are set to the endpoints of both ends of the connection, coincide with each other (step S 179 : Yes), the connection management unit  101  sets the execution result of the API for generating the endpoint at “normal” (step S 181 ). The process returns to step S 165  of  FIG. 27  through a terminal F. 
     In contrast, when the connection establishment fails (step S 169 : No), the connection management unit  101  transmits a roll back request for the endpoints and the network connector, to the DB processing unit  103  of the information processing system  1 I, and causes the DB processing unit  103  to execute the roll back process on the endpoints and the network connector (step S 171 ). An endpoint roll back indicates, for example, deletion of the records for the endpoints, and a network connector roll back indicates, for example, deletion of the record for the network connector. 
     The connection management unit  101  acquires an execution result of the roll back process from the DB processing unit  103  (step S 173 ). 
     The connection management unit  101  sets the execution result of the API for generating the endpoint at “abnormal” (step S 175 ). The process returns to step S 165  of  FIG. 27  through a terminal F. 
     Returning to description with reference to  FIG. 27 , when the synchronization flag of the endpoint table ( FIG. 29 ) is set at “ON” for the generated endpoint (step S 161 : Yes), the connection management unit  101  sets the execution result of the API for generating the endpoint at “normal” (step S 163 ). 
     The connection management unit  101  transmits the execution result of the API for generating the endpoint to the user terminal  1 T (step S 165 ). Thereafter, the process ends. 
     Returning to description of  FIG. 26 , the user terminal  1 T receives the execution result of the API for generating the endpoint from each of the information processing systems (step S 119 ). Thereafter, the process ends. 
     In a case where the above-described process is executed, it is possible to start communication between the endpoints while the reuse of the network connector is not generated even when communication between the DBs stops. 
     The reuse of the network connectors will be described with reference to  FIGS. 32 to 34 . In  FIG. 32 , connection is established between the endpoint  1010  for a user A and the endpoint  2010  for the user A. It is assumed that, in this state, all the connector IDs which are registered in the connector table are dispensed. Although another connection may be also established, another connection is omitted in  FIG. 32  in order to simplify the description. 
     Furthermore, it is assumed that the endpoint  1010  is deleted from the terminal of the user A by the API while the synchronized communication stops, as illustrated in  FIG. 33 . In this case, in the connector table of the information processing system  1 I, a record for the connection between the endpoint  1010  and the endpoint  2010  is deleted. Although a communication path is vanished because the endpoint  1010  is deleted, the virtual router  1020  remains without being deleted. 
     Furthermore, as illustrated in  FIG. 34 , it is assumed that the connector ID included in the deleted record is dispensed again from a terminal of a user B who is different from the user A by the API, and an endpoint  3010  for the user B is generated. In this case, the endpoint  3010  may perform communication with the endpoint  2010  through the virtual router  1020  and the virtual router  2020 . As described above, there is a possibility that communication is performed with an unintended partner according to the reuse of the network connector. 
     In contrast, according to the embodiment, the unique identifiers are generated for the respective network connectors between the information processing system  1 I and the information processing system  2 I, and communication is not performed if the identifiers do not coincide with each other. Therefore, communication is not performed with an unintended partner according to the reuse of the network connector. 
     In addition, according to the embodiment, the network connector is generated and is registered in the connector table ( FIG. 9 ) when the endpoint is generated, and thus, even though the synchronized communication stops, it is possible to reduce the amount of data which is transmitted when the synchronized communication restarts after restoration. Therefore, even in a case of a network whose bandwidth is not wide, it is possible to perform synchronization without giving large influence on another communication. In addition, the synchronized communication after restoration is performed only in a case where an endpoint is generated in an information processing system which does not dispense a connector ID to the network connector, and thus it is possible to avoid performance of a process for the API being deteriorated. 
     In addition, division is performed on the range of the usable connector ID and synchronization is performed on the respective ranges, and thus it is possible to easily perform synchronization without acquiring exclusive lock. 
     In addition, even in a case where the synchronized communication stops, connection is established between the endpoints, and thus it is possible to perform communication for the user. 
     In addition, even in a case where the information processing system on one side stops, it is possible to generate a network connector and an endpoint in an information processing system on the remaining side. 
     Hereinabove, although the embodiment of the disclosure is described, the disclosure is not limited thereto. For example, there is a case where a functional block configuration of the above-described information processing device  1 S does not coincide with an actual configuration of a program module. 
     In addition, the configuration of each of the tables which are described above is only an example, and the configuration may be different from the above-described configuration. Furthermore, with regard to the processing flow, it is possible to change the orders of the processes if processing results are not changed. Furthermore, the processes may be executed in parallel. 
     An identifier generation method is not limited to the above-described method. Methods other than the above-described method may be used as long as the generated identifier is unique in the plurality of information processing systems. 
     The embodiments of the disclosure which are described above are summarized as below. 
     A first information processing device according to a first aspect of the embodiment includes: (A) a data storage unit (for example, the connector table) configured to store information (for example, the record) for a connection for each connection established between the first information processing device and a second information processing device, (B) a synchronization unit (for example, the synchronization unit  107 ) configured to synchronize the information stored in the data storage unit with information managed by the second information processing device, (C) a generation unit (for example, the connection management unit  101 ) configured to generate, in a case where the connection is established between the first information processing device and the second information processing device while synchronization that is performed by the synchronization unit is stopped, unique information between at least the first information processing device and the second information processing device, and transmit the generated unique information to the second information processing device, and (D) a communication unit (for example, the endpoint  1010 ) configured to establish the connection between the first information processing device and the second information processing device, based on the unique information. 
     In a case where the connection is established while the synchronization is stopped by the synchronization unit, there is a possibility that communication is performed with an unintended partner due to reuse of the connection, and thus it is not preferable to establish the connection. Here, according to the above-described configuration, the reuse of the connection is not performed, and thus is possible to establish the connection while the synchronization is stopped. 
     In addition, the generation unit (c1) may generate the unique information, based on identification information of a system including the first information processing device, and a serial number generated in a case where the connection is established between the first information processing device and the second information processing device. However, the unique information may be generated using another method. 
     In addition, the communication unit (d1) may determine whether or not the unique information generated by the generation unit coincides with unique information received from the second information processing device, and, in a case where it is determined that the unique information generated by the generation unit coincides with the unique information received from the second information processing device, may establish the connection between the first information processing device and the second information processing device. Therefore, communication with an unintended partner is avoided. 
     In addition, (a1) the information stored in the data storage unit may include identification information of the connection. The generation unit (c2) may calculate a ratio of the number of connections whose identification information are given by the first information processing device, to the number of connections to which the identification information is given among the connections established between the first information processing device and the second information processing device, (c3) may specify a range of the connections, to which the identification information is to be given by the first information processing device, based on the calculated ratio, from among connections to which the identification information is not given in the connections established between the first information processing device and the second information processing device, and (c4), in a case where a connection generation request is received may register, for one connection selected from the specified range, the identification information and the unique information, which are given to the one connection, in the data storage unit. In a case of the above-described configuration, the identification information which may be used by each information processing device is appropriately determined, and thus it is possible to suppress the exhaustion of identification information which is allowed to be used by the information processing device. 
     In addition, in a case where the synchronization restarts, the synchronization unit (b1) may execute synchronization of information for a connection included in the specified range in parallel with synchronization of information for a connection that is not included in the specified range. Since pieces of information which are not synchronized include information for a connection included in the range and information for a connection which is not included in the range, the synchronization may be effectively performed without acquiring exclusive lock when a process is performed as described above. 
     In addition, the synchronization unit (b2) may transmit the identification information given by the first information processing device to the connections included in the range, to the second information processing device, (b3) may receive the identification information of a connection, which is not used by the second information processing device for communication in the connections included in the range, from the second information processing device, and (b4) may read information for the connection, to which the received identification information is given, from the data storage unit and may transmit the read information to the second information processing device. The synchronization may be appropriately performed on the information for the connections included in the range. 
     In addition, the synchronization unit (b5) may receive the identification information given by the second information processing device to the connections, which are not included in the range, from the second information processing device, and (b6) may specify the identification information of the connection, which is not used by the first information processing device for communication, in the received identification information from the data storage unit and may transmit the specified identification information to the second information processing device. The synchronization may be appropriately performed on the information for the connections which are not included in the range. 
     An information processing method according to a second aspect of the embodiment includes a process of: (E) generating unique information between at least a first computer and a second computer in a case where a connection is established between the first computer and the second computer while synchronization, which is performed between information stored in a data storage unit configured to store information for the connection for each connection established between the first computer and the second computer, and information managed by the second computer, is stopped, (F) transmitting the generated unique information to the second computer, and (G) establishing the connection between the first computer and the second computer, based on the unique information. 
     It is possible to prepare a program which causes a processor to execute a process according to the method, and the program is stored in, for example, a computer-readable storage medium or a storage device, such as a flexible disk, a CD-ROM, a magneto-optic disk, a semiconductor memory, or a hard disk. Also, an intermediate processing result is temporally stored in a storage device such as a main memory. 
     All examples and conditional language recited herein are intended for pedagogical purposes to aid the reader in understanding the invention and the concepts contributed by the inventor to furthering the art, and are to be construed as being without limitation to such specifically recited examples and conditions, nor does the organization of such examples in the specification relate to a showing of the superiority and inferiority of the invention. Although the embodiments of the present invention have been described in detail, it should be understood that the various changes, substitutions, and alterations could be made hereto without departing from the spirit and scope of the invention.