Abstract:
In InfiniBand, communication is made between a first queue-pair (QP) allocated to a first user-program executed within a first apparatus and a second QP allocated to a second user-program executed within a second apparatus. The first apparatus sets a specific code to a send work-request, after moving information previously set to the send work-request to a portion of the data, and transmits the data added with a first QP number identifying the first QP to the second apparatus. The second apparatus determines that the received data is added with the QP number, when the specific code is set to a receive work-request, identifies the first user-program based on the QP number, and sends the data to the second user-program via the receive work-request after deleting the QP number from the data and moving information stored in the portion of the data to the receive work-request.

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
       [0001]    This application is based upon and claims the benefit of priority from the prior Japanese Patent Application No. 2014-096871 filed on May 8, 2014, the entire contents of which are incorporated herein by reference. 
       FIELD 
       [0002]    The embodiments discussed herein are related to apparatus and method for performing InfiniBand communication between user programs in different apparatuses. 
       BACKGROUND 
       [0003]    InfiniBand has been used recently in, for example, a communication between HPC (High Performance Computing)-based servers. In InfiniBand, a HCA (Host Channel Adaptor) is installed in the information processing apparatus and the communication is made between the QP (Queue Pair) within the HCA of a sending side and the QP within the HCA of a receiving side. Numbers of 1 to 49,151 that are unique in a network and called the LID (Local Identifier) are respectively assigned to the ports of the HCA. A single HCA may theoretically include 2 24 -1 QPs and the QPs have QP numbers spanning from 0 to 2 24 -1 that are unique within the HCA. 
         [0004]    There is a communication scheme called the RC (Reliable Connection) provided by InfiniBand and a one-to-one communication is made between a pair of QPs in the RC. A pair of QPs notify and exchange LIDs and QP numbers of their own with each other to establish a connection between the QPs. A message of InfiniBand contains a LID that indicates a sender, and the message sent from a QP which belongs to an information processing apparatus having an LID different from that of the intended communication counterpart is discarded by the HCA of the receiving side. 
         [0005]      FIG. 16  is a diagram illustrating a situation where a message sent from a communication counterpart other than the intended communication counterpart in the RC communication is discarded. In  FIG. 16 , the communication is made between a first QP having the LID of “1” and the QP number of “3000” and a second QP having the LID of “2” and the QP number of “4000”. In this case, when a third QP having the LID of “3” and the QP number of “5000” unilaterally transmits a message to the second QP having the LID of “2” and the QP number of “4000”, the HCA of the receiving side checks the LID within the message and does not receive the message because the message is transmitted from a communication counterpart other than the intended communication counterpart. Therefore, the second QP does not erroneously receive the message transmitted from a communication counterpart other than the intended communication counterpart. 
         [0006]    However, a QP number that identifies the sender is not contained in the message of InfiniBand. Further, the other QP which belongs to the same information processing apparatus as that to which the intended communication counterpart belongs has the same LID as that of the intended communication counterpart. Accordingly, when the message is transmitted from the other QP which belongs to the information processing apparatus to which the intended communication counterpart belongs, the second QP of the receiving side is unable to discern the other QP from the intended communication counterpart and thus receives the message. 
         [0007]      FIG. 17  is a diagram illustrating a situation where a message transmitted from a communication counterpart other than the intended communication counterpart in the RC communication is received. In comparison with  FIG. 16 , a third QP having the QP number of “5000” belongs to the same information processing apparatus in  FIG. 17 . Accordingly, since the LID of the third QP having the QP number of “5000” is identical to the LID of the first QP having the QP number of “3000”, the second QP of the receiving side receives the message transmitted from an QP other than the intended communication counterpart. 
         [0008]    That is, in a case where a plurality of programs are included within the same information processing apparatus and respective programs perform the communication over InfiniBand, different QPs are respectively allocated to the programs. In the case, it is assumed that the RC communication of InfiniBand is made between two programs. However, the QP of the receiving side is not able to discern the program of the intended communication counterpart from the other program which is present in the same information processing apparatus as that in which the intended communication counterpart is present. Therefore, it is possible for a malicious program to counterfeit and send a message of InfiniBand. 
         [0009]    Further, in a case of design where a QP is reused after disconnection of the RC communication, even though the program does not intend to maliciously send the message, the QP is likely to send the message to the communication counterpart without recognizing that the communication counterpart&#39;s QP has already established the connection with other QP than the QP. In this case, the QP of the receiving side is in danger of receiving the message from a communication counterpart which is not the intended communication counterpart at that time. Such a state where the outdated connection to be invalidated remains is called a Stale Connection. 
         [0010]    Accordingly, in the RC communication, an QP of the sending side inserts an QP number thereof into a message and sends the message, and an QP of the receiving side checks the QP number. When the QP number does not correspond to the QP number of the intended communication counterpart, the receiving side may recognize that the message is incorrectly sent. 
         [0011]    In the meantime, there is a technology in which the connection in the RC communication is managed by a higher-level middleware. However, when it is intended to use the higher-level middleware, the source program of InfiniBand is required to be modified, and the technology may not be applied to the existing program. Further, since all the InfiniBand programs are required to be operated under the management of middleware, operating some of the InfiniBand programs without being managed under the middleware is not permitted. 
         [0012]    Further, there is a conventional technology in which an instance number is associated with a logical connection when the logical connection is established between a sending side and a receiving side, the sending side sends data by adding the instance number to the data, and the receiving side checks the instance number to determine whether the data belongs to the logical connection. 
         [0013]    Related techniques are disclosed in, for example, Japanese National Publication of International Patent Application No. 2005-524264. 
       SUMMARY 
       [0014]    According to an aspect of the invention, an apparatus performs communication with another apparatus using InfiniBand in which communication is made between a queue pair (QP) allocated to a user program executed within a sending side apparatus and a QP allocated to a user program executed within a receiving side apparatus. When the apparatus serves as the sending side apparatus and a first user program executed within the apparatus transmits first data to the another apparatus, the apparatus sets a specific code in a predetermined area of a send work request via which the first user program controls transmission of the first data, after moving information previously set in the predetermined area of the send work request to a predetermined portion of the first data, and transmits the first data added with a first QP number identifying a first QP allocated to the first user program to the another apparatus. When the apparatus serves as the receiving side apparatus and a second user program executed within the apparatus receives second data from the another apparatus, the apparatus determines that the second data is added with a second QP number identifying a second QP allocated to a third user program executed within the another apparatus when the specific code is set in a predetermined area of a receive work request via which the second user program controls reception of the second data, identifies the third user program executed within the another apparatus based on the second QP number, and sends the second data to the second user program via the receive work request after deleting the second QP number from the second data and moving information stored in a predetermined portion of the second data to the predetermined area of the receive work request. 
         [0015]    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 
         [0016]      FIG. 1  is a diagram illustrating an example of a model in a case where a program executes a message communication using an RC scheme of InfiniBand, according to an embodiment; 
           [0017]      FIG. 2  is a diagram illustrating a comparison between InfiniBand concept and Ethernet (registered trademark) and IP concepts; 
           [0018]      FIG. 3  is a diagram illustrating an example of a functional configuration of an information processing apparatus, according to an embodiment; 
           [0019]      FIG. 4  is a diagram illustrating an example of send data, according to an embodiment; 
           [0020]      FIG. 5  is a diagram illustrating an example of encapsulated send data, according to an embodiment; 
           [0021]      FIG. 6  is a diagram illustrating an example of non-capsulated receive data, according to an embodiment; 
           [0022]      FIG. 7  is a diagram illustrating an example of encapsulated receive data, according to an embodiment; 
           [0023]      FIG. 8  is a diagram illustrating an example of a data structure of a SendWR, according to an embodiment; 
           [0024]      FIG. 9  is a diagram illustrating an example of a data structure of a ReceiveWR, according to an embodiment; 
           [0025]      FIG. 10  is a diagram illustrating an example of a data structure of an entry of a scatter/gather list, according to an embodiment; 
           [0026]      FIG. 11  is a diagram illustrating an example of a data structure of a ReceiveWC, according to an embodiment; 
           [0027]      FIG. 12  is a diagram illustrating an example an operational flowchart for a sending process, according to an embodiment; 
           [0028]      FIG. 13  is a diagram illustrating an example of an operational flowchart for a reception-confirming process, according to an embodiment; 
           [0029]      FIG. 14  is a diagram illustrating an example of a hardware configuration of an information processing apparatus, according to an embodiment; 
           [0030]      FIG. 15  is a diagram illustrating an example of a configuration of an information processing system, according an embodiment; 
           [0031]      FIG. 16  is a diagram illustrating an example of a situation where a message sent from a communication counterpart other than an original communication counterpart in the RC communication is discarded; and 
           [0032]      FIG. 17  is a diagram illustrating an example of a situation where a message sent from a communication counterpart other than the original communication counterpart in the RC communication is received. 
       
    
    
     DESCRIPTION OF EMBODIMENTS 
       [0033]    Checking all the messages by incorporating the QP number therein as described above causes ineffectiveness. Specifically, it takes time to perform the processing of inserting the QP number into the message or eliminating the QP number from the message. Further, inclusion of the QP number increases the amount of communication. 
         [0034]    Hereinafter, descriptions will be made on embodiments of an information processing apparatus, an information processing system, and a relay program disclosed in the present disclosure in detail with reference to accompanying drawings. In the meantime, the preset disclosure is not limited to the embodiments. 
       Embodiment 
       [0035]    First of all, descriptions will be made on a model in a case where a program performs a message communication using an RC scheme of InfiniBand.  FIG. 1  is a diagram illustrating an example of a model in a case where a program executes a message communication using an RC scheme of InfiniBand, according to an embodiment. 
         [0036]    In  FIG. 1 , a user program  5  is a program which performs the communication using the RC scheme of InfiniBand. The “ibv_post_send”, “ibv_post_recv”, and “ibv_poll_cq” are functions of a user library of InfiniBand that are called in a case where the user program  5  performs the communication using the RC scheme of InfiniBand. 
         [0037]    A HCA  4  is an adapter installed in the information processing apparatus which performs the communication using InfiniBand. The HCA  4  includes a QP  41 , a CQ  42 , a CQ  43 , and a port  44 . The QP  41  communicates with a QP included in other HCA. The QP  41  includes a SQ (Send Queue)  45  and a RQ (Receive Queue)  46 . The SQ  45  is a queue storing information about a message to be sent and the RQ  46  is a queue storing information about a received message. 
         [0038]    The CQ  42  is a queue storing information about the message which has been sent and the CQ  43  is a queue storing information about the message of which reception is completed. The port  44  sends and receives the message to and from the port of other HCA. 
         [0039]    The user program  5  executes the “ibv_post_send” function on the QP  41  at the time when sending the message. Data given to the “ibv_post_send” function is called a SendWR (Send Work Request) and includes information on or a buffer address of a send-destination. 
         [0040]    The SendWR is converted into a WQE (Work Queue Element) by the “ibv_post_send” function and accumulated in the SQ  45 . A pointer to the data to be sent is contained in the WQE. When the WQE is successfully accumulated in the SQ  45 , the “ibv_post_send” function is immediately returned. 
         [0041]    When the WQE is accumulated in the SQ  45 , the HCA  4  sends the message according to the content of the WQE. When the message is successfully sent, the HCA  4  deletes the WQE from the SQ and accumulates a CQE (Completion Queue Entry) in the CQ  42 . 
         [0042]    When the “ibv_poll_cq” function is executed on the CQ  42 , the user program  5  may extract the CQEs sequentially. The CQE is converted into a SendWC (Work Completion) at the time of the extraction. The user program  5  may confirm content of the SendWC to confirm whether the message has been sent. 
         [0043]    The user program  5  executes the “ibv_post_recv” function on the QP  41  before the message arrives when intending to receive the message. Data given to the “ibv_post_recv” function is called a ReceiveWR (Receive Work Request) and includes, for example, a buffer address. The ReceiveWR is converted into the WQE by the “ibv_post_recv” function and accumulated in the RQ  46 . When the WQE is successfully accumulated in the RQ  46 , the “ibv_post_recv” function is immediately returned. 
         [0044]    When the message is arrived at the QP  41 , the HCA  4  extracts a single WQE of the RQ  46  and stores data of the message in the memory according to the content of the WQE. Thereafter, the HCA  4  accumulates a single CQE indicating that the reception of message has been completed in the CQ  43 . 
         [0045]    When the “ibv_poll_cq” function is executed on the CQ  43 , the user program  5  may extract the CQEs sequentially. The CQE is converted into a ReceiveWC at the time of extracting the CQE. The user program  5  may confirm the content of the ReceiveWC to confirm whether the reception of message is completed. 
         [0046]      FIG. 2  is a diagram illustrating a comparison between InfiniBand concept and Ethernet (registered trademark) and IP concepts. As illustrated in  FIG. 2 , the HCA corresponds to a NIC (network interface card), the LID corresponds to an IP address, the QP corresponds to a socket, the QP number corresponds to a port number, the RC corresponds to a TCP, the SQ corresponds to a transmission buffer of the socket, and the RQ corresponds to a reception buffer of the socket. Here, the concepts of the Ethernet and IP that correspond to the CQ of InfiniBand do not exist. 
         [0047]    Next, descriptions will be made on a functional configuration of the information processing apparatus according to an embodiment.  FIG. 3  is a diagram illustrating an example of a functional configuration of an information processing apparatus, according to an embodiment. 
         [0048]    As illustrated in  FIG. 3 , the information processing apparatus  1  includes a user land  2 , a kernel land  3 , and the HCA  4 . The user land  2  is a portion of a program which is executed in a user-mode of the CPU, and the program of the user land  2  has a limitation to CPU instructions allowed to execute and a memory space allowed to access. The kernel land  3  is a portion of a program which is executed in a privileged-mode of the CPU, and does not have a limitation to the CPU instructions allowed to execute and the memory space allowed to access. 
         [0049]    A HCA driver  8  is included in the kernel land  3 . The HCA driver  8  is a driver which sends and receives the message using the HCA  4 . 
         [0050]    The user program  5 , an IB (InfiniBand) user library  6 , and a relay proxy  7  are included in the user land  2 . The IB user library  6  is a library of programs called by the user program  5  when the user program  5  performs the communication using InfiniBand, and includes “ibv_post_send”, “ibv_post_recv”, and “ibv_poll_cq” functions. 
         [0051]    The relay proxy  7  is a program which intercepts a call for the function included in the IB user library  6  to perform an additional processing. The relay proxy  7  includes a sending unit  71 , a receiving unit  72 , and a confirming unit  73 . 
         [0052]    The sending unit  71  adds a QP number to the message at regular intervals. Here, the regular intervals corresponds to, for example, a predetermined number of messages. Specifically, when the user program  5  intends to register the SendWR using the “ibv_post_send” functions, the sending unit  71  intercepts the SendWR and determines whether the QP number is to be added to the message or not based on the sending intervals for message. 
         [0053]    When it is determined that the QP number is to be added to the message, the sending unit  71  adds a four-byte source QPN to a body of the message of the user program  5  to send the data as an encapsulated message. Here, the source QPN is the QP number and the encapsulation is to add the source QPN to the message. 
         [0054]      FIG. 4  is a diagram illustrating an example of send data, according to an embodiment, and  FIG. 5  is a diagram illustrating an example of encapsulated send data, according to an embodiment. As illustrated in  FIG. 4 , a “sg_list” and an IMM are included in the SendWR  31 . The “sg_list” is a pointer to a scatter/gather list (scatter/gather list)  32  and the scatter/gather list  32  is a list of addresses (addrs) of the pointers to the send buffer that distributively store the send data. The scatter/gather is a component which gathers the data divided into and stored in a plurality of buffers to send and receive. In the meantime, in  FIG. 4 , although only two addrs are illustrated, the scatter/gather list  32  may include three or more addrs. 
         [0055]    The IMM is a four-byte data attached to each message separately from the data transfer through the memory. The IMM is transferred along with the message, but is written in a reception-completed notification (ReceiveWC) separately from a receive buffer. That is, in the data transfer using the IMM, the four-byte data may be notified without the receive buffer. 
         [0056]    The sending unit  71  uses the IMM for identifying whether the message is encapsulated or not. Here, the user program  5  uses the IMM and needs to protect a value set in the IMM by the user. Therefore, the sending unit  71  uses a specific value which is less frequently used to be set in the IMM as an identifier which identifies the encapsulation. In this case, the sending unit  71  uses a value of “0xCAFEBABE” as the specific value, where the prefix “0x” indicates that the digits “CAFEBABE” are written in hexadecimal. 
         [0057]    As illustrated in  FIG. 5 , when the encapsulation in which the source QPN is added to the message is intended, the sending unit  71  inserts the digits “CAFEBABE” into the IMM field. Also, the sending unit  71  prepares a send buffer in which the source QPN and the original IMM value are stored and adds the pointer to the prepared send buffer in the scatter/gather list  32 . 
         [0058]    In the meantime, when it is determined that the QP number is not to be added to the message, the sending unit  71  instructs the HCA driver  8  to send the original send data as it is. However, when the IMM value of the original message is the “CAFEBABE”, the sending unit  71  encapsulates and sends the message. In this case, the encapsulation is an extra processing and corresponds to overhead, but the overhead may be reduced using the value having a smaller appearance frequency as the identifier. 
         [0059]    When the user program  5  intends to register the ReceiveWR using the “ibv_post_recv” function, the receiving unit  72  intercepts the call for the “ibv_post_recv” function. Also, the receiving unit  72  additionally prepares an extra receive buffer for receiving the source QPN and the original IMM value and registers the ReceiveWR in a state capable of receiving the encapsulated message. 
         [0060]      FIG. 6  is a diagram illustrating an example of non-capsulated receive data, according to an embodiment, and  FIG. 7  is a diagram illustrating an example of encapsulated receive data, according to an embodiment. As illustrated in  FIG. 6 , for a case of the non-capsulated receive data, a value designated by the user program  5  is set in the IMM of the ReceiveWR  33 . In the meantime, as illustrated in  FIG. 7 , for a case of the encapsulated receive data, the value of “0xCAFEBABE” is set in the IMM of the ReceiveWR  33  and a value designated by the user is stored in the additionally prepared receive buffer together with the source QPN. 
         [0061]    When the user program  5  intends to confirm the state of reception using the “ibv_poll_cq” function, the confirming unit  73  determines the IMM value of the ReceiveWC, and when it is determined that the IMM value is not the “0xCAFEBABE”, the confirming unit  73  returns the ReceiveWC to user program  5 . 
         [0062]    In the meantime, when it is determined that the IMM value is the “0xCAFEBABE”, the confirming unit  73  extracts the QP number from the message and determines whether the extracted QP number is the QP number of the intended communication counterpart. Also, when it is determined that the extracted QP number is the QP number of the intended communication counterpart, the confirming unit  73  decapsulates the encapsulation of message and returns the ReceiveWC to the user program  5 . Here, the decapsulation of the encapsulated message indicates that the value of the IMM extracted from the buffer is written back into the IMM within the message and decreases the value of BYTE_LEN by “8” to cut out the last 8 bytes of the message. In the meantime, when it is determined that the extracted QP number is not the QP number of the intended communication counterpart, the confirming unit  73  does not return the ReceiveWC to the user program  5 . 
         [0063]    Further, when the user program  5  intends to confirm the sending state using the “ibv_poll_cq” function, the confirming unit  73  returns the SendWC to the user program  5 . 
         [0064]    Next, descriptions will be made on the SendWR  31 , the ReceiveWR  33 , the scatter/gather list  34 , and a data structure of the ReceiveWC with reference to  FIG. 5  to  FIG. 11 .  FIG. 8  is a diagram illustrating an example of a data structure of a SendWR, according to an embodiment. As illustrated in FIG.  8 , the “sg_list”, the “num_sge”, and the IMM are included in the SendWR  31 . The “sg_list” is a pointer to an array of the scatter/gather list  34  and the “num_sge” indicates the number of arrays pointed by the “sg_list. The IMM is an immediate data to be sent to the receiving side. 
         [0065]      FIG. 9  is a diagram illustrating an example of a data structure of a ReceiveWR, according to an embodiment. As illustrated in  FIG. 9 , the ReceiveWR  33  includes a “wr_id”, the “sg_list”, the “num_sge”, and the IMM, where the “wr_id” is a 64-bit value capable of being set for each ReceiveWR  33  and the “sg_list” is the pointer to an array of the scatter/gather list  34 . The “num_sge” indicates the number of arrays pointed by the “sg_list, and the IMM is an immediate data value sent from the sending side. 
         [0066]      FIG. 10  is a diagram illustrating an example of a data structure of an entry of a scatter/gather list, according to an embodiment. As illustrated in  FIG. 10 , an addr and a length are included in an entry of the scatter/gather list  34 . The addr indicates a start address of a set of the scatter/gather list  34 , that is, a pointer to the buffer in which the data is stored, and the length indicates a size of a set of the scatter/gather list  34  in bytes, that is, a size of the data stored in the buffer. 
         [0067]      FIG. 11  is a diagram illustrating an example of a data structure of a ReceiveWC, according to an embodiment. As illustrated in  FIG. 11 , the “wr_id”, a “byte_len”, the IMM, and a “slid” are included in the ReceiveWC. The “wr_id” is a copy of the “wr_id” of the ReceiveWR  33  and the “byte_len” indicates a size of the receive data. The IMM is a copy of the IMM of the SendWR  31  and the “slid” indicates an LID of the sender. 
         [0068]    Next, descriptions will be made on an operational flowchart of the sending process.  FIG. 12  is a diagram illustrating an example an operational flowchart for a sending process, according to an embodiment. As illustrated in  FIG. 12 , the sending unit  71  determines whether the message is intended to be encapsulated (Step S 1 ), and when it is determined that the message is intended to be encapsulated, the sending unit  71  encapsulates and sends the message (Step S 3 ). 
         [0069]    In the meantime, when it is determined that the message is not intended to be encapsulated, the sending unit  71  determines whether the IMM value is the “0xCAFEBABE” (Step S 2 ). When it is determined that the IMM value is the “0xCAFEBABE”, the sending unit  71  encapsulates and sends the message (Step S 3 ). In the meantime, when it is determined that the IMM value is not the “0xCAFEBABE”, the sending unit  71  sends the message with being maintained in the original message of InfiniBand (Step S 4 ). 
         [0070]    As described above, the sending unit  71  may encapsulate and send a portion of the messages so as to efficiently transmit the messages. 
         [0071]    Next, descriptions will be made on an operational flowchart of the reception-confirming process.  FIG. 13  is a diagram illustrating an example of an operational flowchart for a reception-confirming process, according to an embodiment. The confirming unit  73  intercepts the reception-confirming process at the timing when the user program  5  calls the “ibv_poll_cq” function, and executes the reception-confirming process instead thereof. 
         [0072]    As illustrated in  FIG. 13 , the confirming unit  73  determines whether the ReceiveWC is present (Step S 11 ), and when it is determined that the ReceiveWC is not present, the confirming unit  73  reports to the user program  5  that the ReceiveWC is not present (Step S 19 ). 
         [0073]    In the meantime, when it is determined that the ReceiveWC is present, the confirming unit  73  reads the IMM of the ReceiveWC (Step S 12 ) and determines whether the IMM value is the “0xCAFEBABE” (Step S 13 ). As a result, when it is determined that the IMM value is not the “0xCAFEBABE”, the message is determined as the original message of InfiniBand and thus, the confirming unit  73  returns the ReceiveWC to the user program  5  as it is (Step S 14 ) 
         [0074]    In the meantime, when it is determined that the IMM value is the “0xCAFEBABE”, the message is determined as the encapsulated message and thus, the confirming unit  73  extracts the source QPN from the message (Step S 15 ). Specifically, the confirming unit  73  specifies the ReceiveWR  33  which has received the receive data from the wr_id of the ReceiveWC. Since the source QPN and the original IMM are added in the last eight bytes of the data stored in the buffer of the ReceiveWR  33 , the confirming unit  73  extracts the source QPN and the original IMM from the message. Then, the confirming unit  73  compares the source QPN of the message with the QP number of the communication counterpart of the QP (Step S 16 ). 
         [0075]    When it is determined that the source QPN of the message is identical with the QP number of the communication counterpart of the QP, the confirming unit  73  decapsulates the encapsulated message and returns the ReceiveWC to the user program  5  (Step S 17 ). 
         [0076]    In the meantime, when it is determined that the source QPN of the message is not identical with the QP number of the communication counterpart of the QP, the message is determined as a message sent from an unintended communication counterpart and thus, the confirming unit  73  discards the message and the ReceiveWC in its inside. Also, the confirming unit  73  reports to the user program  5  that the ReceiveWC is not present (Step S 18 ). 
         [0077]    As described above, since the confirming unit  73  discards the message and the ReceiveWC in its inside when the source QPN of the message is not identical with the QP number the communication counterpart of the QP, it is possible to prevent the message sent from an illicit sender from being received. 
         [0078]    As described above, in the embodiment, the sending unit  71  adds the QP number in the message and sends the message at regular intervals and makes it possible to identify whether the QP number is added in the message using the IMM. Also, the confirming unit  73  determines whether the QP number is added in the received message using the IMM, and checks the QP number only when the QP number is added in the received message. Accordingly, the relay proxy  7  is capable of efficiently checking the QP numbers. 
         [0079]    Further, in the embodiment, since the confirming unit  73  discards the message when the QP number added in the message is different from the QP number of the intended communication counterpart, it is possible to prevent data erroneously sent from the user program  5  from being incorrectly received. 
         [0080]    Further, in the embodiment, since the sending unit  71  is able to identify whether the message is encapsulated or not using the IMM, the confirming unit  73  is able to efficiently determine whether the message is encapsulated or not. 
         [0081]    In the meantime, although the functional configuration of the information processing apparatus  1  is described with reference to in  FIG. 3 , the relay proxy  7  is executed by the CPU included in the information processing apparatus  1 . Accordingly, descriptions will be made on a hardware configuration of the information processing apparatus  1  which executes the relay proxy  7 . 
         [0082]      FIG. 14  is a diagram illustrating an example of a hardware configuration of an information processing apparatus, according to an embodiment. As illustrated in  FIG. 14 , the information processing apparatus  1  includes a main memory  21 , a CPU  22 , a HCA  23 , and a HDD (Hard Disk Drive)  24 . Further, the information processing apparatus  1  includes a Super IO (Input Output)  25 , a DVI (Digital Visual Interface)  26 , and an ODD (Optical Disk Drive)  27 . 
         [0083]    The main memory  21  is a memory which stores, for example, a program or intermediate results of the running program. The CPU  22  is a central processing unit which reads the program from the main memory  21  and executes the program. The CPU  22  includes a chipset equipped with the memory controller. 
         [0084]    The HCA  23  performs the communication in compliance with InfiniBand. The HDD  24  is a disk device storing a program or data, and the Super IO  25  is an interface for connecting an input device, such as a mouse or a keyboard. The DVI  26  is an interface for connecting a liquid crystal display, and the ODD  27  is a device which performs write and read to and from the DVD. 
         [0085]    Also, the relay proxy  7  to be executed in the information processing apparatus  1  is stored in the DVD, read out from the DVD by the ODD  27 , and installed in the information processing apparatus  1 . Otherwise, the relay proxy  7  is stored in, for example, a database of other information processing apparatus connected through the HCA  23  and read out from the database to be installed in the information processing apparatus  1 . Also, the installed relay proxy  7  is stored in the HDD  24  and read into the main memory  21  to be executed by the CPU  22 . 
         [0086]      FIG. 15  is a diagram illustrating an example of a configuration of an information processing system, according an embodiment. As illustrated in  FIG. 15 , the information processing system  10  includes four information processing apparatuses  1  that are connected together via the switch  11 . In the meantime, although the information processing system  10  which includes four information processing apparatuses  1  and a single switch  11  is illustrated, the information processing system  10  may include an arbitrary number of information processing apparatuses  1  and a plurality of switches  11 . 
         [0087]    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 illustrating 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.