Abstract:
A node device ( 1 A) receives a second ACK list in communication with an adjacent node ( 1 B) and updates a first ACK list and a first summary vector on the basis of the second ACK list. The first summary vector, which indicates messages stored in a message buffer of the node device ( 1 A), is transmitted to the adjacent node ( 1 B) prior to transmission of the messages in the communication with the adjacent node ( 1 B). The first ACK list indicates ACK messages recognized by the node device ( 1 A). The second ACK list indicates ACK messages recognized by the adjacent node ( 1 B). Each ACK message represents a message of arrival at an ultimate destination node via a DTN ( 100 ). In this way, for example, a copy having the same content as a message having arrived at an ultimate destination node can be prevented from being scattered in the Disruption Tolerant Network (DTN).

Description:
TECHNICAL FIELD 
       [0001]    The present invention relates to a communication node used in a Disruption/Delay/Disconnect Tolerant Network and its communication method. 
       BACKGROUND ART 
       [0002]    A Disruption Tolerant Network is a wireless multi-hop network including a plurality of communication nodes. The Disruption Tolerant Network can be regarded as a Delay Tolerant Network and as a Disconnect Tolerant Network. Disruption/Delay/Disconnect Tolerant Networks are herein referred to collectively as “DTN”. In a DTN, a number of communication nodes (hereinafter referred to as “DTN nodes”) autonomously relay a message (data bundle or data packet), thereby achieving the delivery of the message from a source node to a destination node. One or both of the source node and the destination node may belong to the DTN (i.e., DTN nodes) or belong to an external network (e.g., the Internet, a public cellular network, or a wireless Local Area Network (LAN)). If one or both of the source node and the destination node belong to an external network, any one of the DTN nodes serves as a router or a gateway that relays messages between the DTN and the external network. 
         [0003]    The DTN is based on the premise that a temporary or intermittent communication disconnection could occur due to movement of DTN nodes, blocking of wireless signals caused by an obstacle, or the like. In other words, the DTN is based on the premise that at least at some point in time, there is no stable communication path between the source node and the destination node. To cope with the temporary or intermittent communication disconnection, each DTN node performs a store-and-forward operation. Accordingly, the DTN can also be regarded as a store-and-forward type wireless multi-hop network. Further, some or all of the plurality of DTN nodes constituting the DTN may be mobile terminals having mobility. In this regard, the DTN can also be regarded as a store-and-forward type wireless ad-hoc network. For example, it has been assumed that the DTN is used for emergency communications at the time of a disaster, and inter-vehicle communications and road-to-vehicle communications in Intelligent Transport Systems (ITS). 
         [0004]    As described above, a DTN node performs a store-and-forward operation. That is, a DTN node temporarily stores messages, received from a certain DTN node and are destined for a destination node, in a memory (hereinafter called “message buffer”). Then, when communication with other DTN nodes becomes possible, the DTN node determines a forwarding destination and a message(s) to be forwarded thereto in accordance with a routing protocol and forwards the message(s) stored in the message buffer to the determined forwarding destination. 
         [0005]    Various proposals for a routing protocol suitable for the DTN have been made. Epidemic routing, Spray and Wait, and PROPHET have been known as typical routing protocols for the DTN. The PROPHET is an abbreviation for “Probabilistic Routing Protocol using History of Encounters and Transitivity”. The Epidemic routing and the Spray and Wait do not use any information about a network state. In contrast to this, in the PROPHET, each DTN node stores a history of contacts in the past and uses this history to determine the forwarding destination of a message. 
         [0006]    The Epidemic routing is an improved version of the primitive flooding mechanism. Specifically, each DTN node that supports the Epidemic routing manages information called a “summary vector”. The summary vector indicates identifiers of messages that have been stored in the message buffer of each DTN node. During a contact with an adjacent DTN node, each DTN node exchanges respective summary vectors with the adjacent DTN node, identifies a message(s) that is not possessed by that DTN node itself, and receives the identified message(s) from the adjacent DTN node. 
         [0007]    The Spray and Wait is an improved version of the Epidemic routing. Similarly to the DTN node in the Epidemic routing, during contact with an adjacent DTN node, each DTN node exchanges respective summary vectors with the adjacent DTN node and receives a message(s) that is not possessed by that DTN node itself from the adjacent DTN node. In the Spray and Wait, when a message is generated in the source node, the maximum number of replications of that message allowed to the DTN is specified. In the Spray stage, the DTN node that possesses the message generates copies of the message until the number of replications reaches the specified maximum number, and gives copies of the message to other DTN nodes which the DTN node has encountered. When the number of replications reaches the specified maximum number (Wait stage), the DTN node holds the message without sending copies of that message to other DTN nodes, and only when the DTN node possessing the message has encountered the final destination node, the DTN node sends the message to the final destination node. 
         [0008]    In the PROPHET, each DTN node exchanges metrics called “Delivery Predictability” in addition to the summary vectors with an adjacent DTN node. A Delivery Predictability P(A, B) indicates a probability that a DTN node A can deliver a message to a DTN node B. For example, in the case where a node A contacts with a node B, only when the node B has a Delivery Predictability for a destination node D higher than that of the node A (i.e., only when P(B, D) is higher than P(A, D)), the node A sends a message addressed to the destination node D to the node B. 
         [0009]    Patent Literature 1 discloses an improvement in a message delivery between DTN nodes. Patent Literature 2 discloses an improvement in routing in a DTN. 
       CITATION LIST 
     Patent literature 
       [0000]    
       
         [Patent Literature 1] International Application Publication No. WO 2011/071045 
         [Patent Literature 2] International Application Publication No. WO 2013/076912 
       
     
       SUMMARY OF INVENTION 
     Technical Problem 
       [0012]    Similarly to the above-described Epidemic routing, the Spray and Wait, and the PROPHET, most of routing protocols for the DTN generate a number of copies of a message and spread a number of these copies of the message within the DTN. Therefore, even after one of the copies of the message arrives at the final destination node, a number of remaining copies of the message, each of which contains the same content as that of the arrived message, are further spread within the DTN. As a result, a copy of the message, which has already arrived at the final destination node, remains in each DTN node. In order to increase a message delivery success rate in a DTN, it is desirable to delete copies of a message that has already arrived at the destination node and prevent them from being spread within the DTN. Patent Literature 1 and 2 fail to disclose any technique for coping with the above problem. 
         [0013]    Accordingly, an object of the present invention is to provide a node device, a communication method, and a program capable of preventing copies of a message that has already arrived at its final destination node from being spread within a DTN. 
       Solution to Problem 
       [0014]    In a first exemplary aspect, a node device used in a Disruption/Delay/Disconnect Tolerant Network (DTN) includes a communication unit and a first message buffer. The communication unit is configured to communicate with an adjacent node in the DTN. The message buffer is configured to store a plurality of messages transferred through the DTN. Further, the communication unit is configured to manage a first summary vector and an Acknowledgement (ACK) list, and also configured to receive a second ACK list managed by the adjacent node during contact with the adjacent node and update the first ACK list and the first summary vector based on the second ACK list. The first summary vector indicates one or more stored messages that have been stored in the first message buffer. During the contact with the adjacent node, the first summary vector is sent to the adjacent node prior to transmission of the one or more stored messages. The first ACK list indicates one or more ACK messages that have been recognized by the node device. The second ACK list indicates one or more ACK messages that have been recognized by the adjacent node. Each of the one or more ACK messages indicates an already-delivered message that has already been delivered to a final destination node through the DTN. 
         [0015]    In a second exemplary aspect, a communication method, performed by a node device used in a Disruption/Delay/Disconnect Tolerant Network (DTN), includes: (a) receiving a second ACK list managed by an adjacent node during contact with the adjacent node; and (b) updating a first ACK list and a first summary vector based on the second ACK list, the first ACK list and the first summary vector being managed by the node device. The first summary vector indicates one or more stored messages that have been stored in the first message buffer. During the contact with the adjacent node, the first summary vector is sent to the adjacent node prior to transmission of the one or more stored messages. The first ACK list indicates one or more ACK messages that have been recognized by the node device. The second ACK list indicates one or more ACK messages that have been recognized by the adjacent node. Each of the one or more ACK messages indicates an already-delivered message that has already been delivered to a final destination node through the DTN. 
         [0016]    In a third exemplary aspect, a program includes instructions for causing a computer to perform the above-described communication method according to the second exemplary aspect. 
       Advantageous Effects of Invention 
       [0017]    According to aspects stated above, it is possible to provide a node device, a communication method, and a program capable of preventing copies of a message that has already arrived at its final destination node from being spread within a DTN. 
     
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
         [0018]      FIG. 1  shows a configuration example of a DTN according to a first exemplary embodiment; 
           [0019]      FIG. 2  is a block diagram showing a configuration example of a DTN node according to the first exemplary embodiment; 
           [0020]      FIG. 3  shows an example of a summary vector; 
           [0021]      FIG. 4  shows an example of an ACK list; 
           [0022]      FIG. 5  is a sequence diagram showing an example of a communication procedure of a DTN node according to the first exemplary embodiment; 
           [0023]      FIG. 6  is a sequence diagram showing an example of a communication procedure of a DTN node according to a second exemplary embodiment; 
           [0024]      FIG. 7  is a sequence diagram showing an example of a communication procedure of a DTN node according to a third exemplary embodiment; 
           [0025]      FIG. 8  shows an example of a summary vector including an ACK according to a fourth exemplary embodiment; and 
           [0026]      FIG. 9  shows an example of a summary vector including an ACK according to the fourth exemplary embodiment. 
       
    
    
     DESCRIPTION OF EMBODIMENTS 
       [0027]    Specific exemplary embodiments are explained hereinafter in detail with reference to the drawings. The same symbols are assigned to the same or corresponding elements throughout the drawings, and duplicated explanations are omitted as necessary. 
       First Exemplary Embodiment 
       [0028]      FIG. 1  shows a configuration example of a Disruption/Delay/Disconnect Tolerant Network (DTN)  100  according to this exemplary embodiment. The DTN  100  includes DTN nodes  1 . The DTN nodes  1  autonomously relay a message (data bundle or data packet), thereby achieving the delivery of the message from a source node to a destination node. 
         [0029]    Each DTN node  1  may be a mobile terminal having mobility (e.g., a cellular phone, a smartphone, a tablet computer, a personal computer (PC)). Each DTN node  1  may be a communication terminal installed in a transport device such as an automobile, an airplane, a railroad vehicle, and a ship. Some of the DTN nodes  1 , however, may be fixed wireless terminals such as wireless LAN access points. 
         [0030]    Each DTN node  1  performs a store-and-forward operation. That is, each DTN node  1  includes a message buffer for storing messages that are transferred through the DTN  100 . Each DTN node  1  temporarily stores, in the message buffer, messages that have been received from other DTN nodes. Then, when communication with other DTN nodes becomes possible, the DTN node  1  determines a forwarding destination and a message(s) to be forwarded thereto in accordance with a routing protocol and sends the message(s) stored in the message buffer to the determined forwarding destination. 
         [0031]    The routing protocol used in this exemplary embodiment is any protocol in which a summary vector is used. The routing protocol may be Epidemic routing, Spray and Wait, PROPHET, or a protocol improved thereof. Rach DTN node  1  manages a summary vector, which indicates identifiers of messages that have been stored in the message buffer of the DTN node  1 . During contact with an adjacent DTN node, the summary vector is sent prior to the transmission of the messages, which have stored in the message buffer. That is, during contact with an adjacent DTN node, each DTN node  1  exchanges summary vectors with an adjacent DTN node, identifies a message(s) that is not possessed by that DTN node itself, and acquires the identified message(s) from the adjacent DTN node. 
         [0032]      FIG. 2  shows an example of a structure of a summary vector. A summary vector  20  shown in  FIG. 2  includes a node ID  200  and N number of message IDs  201 . The node ID  200  indicates an identifier, e.g., an internet protocol (IP) address, of the DTN node  1  that manages the summary vector  20 . Each of the N message IDs  201  indicates an identifier of a message that has been stored in the message buffer of the DTN node  1  managing the summary vector  20 . For example, each message ID  201  may be specified by the combination of the address of the source node, the address of the destination node, and the sequence number of the message. Alternatively, each message ID  201  may be a hash value calculated from the address of the source node, the address of the destination node, and the sequence number of the message so that its data size is reduced. 
         [0033]    Further, in this exemplary embodiment, each DTN node  1  manages an Acknowledgement (ACK) list in addition to the summary vector. The ACK list indicates one or more ACK messages that have been recognized by each DTN node  1 . The ACK message indicates an already-delivered message that has already been delivered to the final destination node through the DTN  100 . 
         [0034]    In principle, the ACK message is generated by the final destination node. When each DTN node  1  receives, through the DTN  100 , a message in which the DTN node  1  itself is designated as the final destination, the DTN node  1  may generate an ACK message corresponding to that message and add the generated ACK message to its own ACK list. 
         [0035]    The destination of a message transferred in the DTN  100  could, however, be a node that belongs to an external network (e.g., the Internet, a public cellular network, or a wireless Local Area Network (LAN)). Further, a DTN server that relays a message between DTNs that are physically apart from each other could be used. In these cases, at least one of the DTN nodes  1  serves as a router or a gateway that relays a message between the DTN  100  and the external network, or between the DTN  100  and the DTN server. Accordingly, in these cases, when a message to be sent to the other network or the DTN server has arrived at the DTN node  1  that serves as the router or the gateway, that DTN node  1  may generate an ACK message for the arrived message. In other words, the DTN node  1  that serves as the router or the gateway can be regarded as being the final destination node. 
         [0036]      FIG. 3  shows an example of a structure of an ACK list. An ACK list  30  shown in  FIG. 3  includes a node ID  300  and M number of message IDs  301 . The node ID  300  indicates an identifier, e.g., an internet protocol (IP) address, of the DTN node  1  that manages the ACK list  30 . Each of the M message IDs  301  corresponds to an identifier of an ACK message that has been recognized by the DTN node  1  managing the ACK list  30 . Each message ID  301  may be defined in a manner similar to that by which the message IDs  201  included in the summary vector  20  are defined. 
         [0037]    Further, the ACK list  30  may include information for specifying the expiration time of each ACK message, e.g., a Time-To-Live (TTL) value or a Times-To-Send (TTS) value. The Time-To-Live (TTL) value specifies the upper limit value for the number of forwarding operations (so-called “hop number”) when an ACK message is forwarded among DTN nodes  1 . The TTS value specifies the upper limit value for the number of forwarding operations for forwarding an ACK message to another DTN node  1  performed by one DTN node (that is, for the number of replications of an ACK message performed in one DTN node  1 ). Alternatively, the information for specifying the expiration time of each ACK message may be a combination of information indicating the generation time of the ACK message (i.e., time stamp) and information indicating an available period (i.e., lifespan) expressed in seconds or in minutes. When all the ACK messages have a common available period (lifespan), the ACK list  30  may include only the information indicating the generation time of the ACK message (time stamp) for specifying the expiration time of the ACK message. The information for specifying the expiration time of an ACK message are defined independently of the expiration time of a message stored in the message buffer of the DTN node  1  (e.g., a TTL value, a TTS value, a generation time, or a combination of a generation time and a lifespan, these information elements are held in the summary vector  20 ). 
         [0038]    During contact with an adjacent DTN node, each DTN node  1  exchanges the ACK lists as well as the summary vectors with the adjacent DTN node. Further, each DTN node  1  updates the ACK list held by that DTN node itself based on the ACK list received from the adjacent DTN node. Specifically, each DTN node  1  may merge the ACK list held by itself with the ACK list received from the adjacent DTN node. When expressed in other words in accordance with the set theory, each DTN node  1  may obtain the union of the ACK list held by itself with the ACK list received from the adjacent DTN node. 
         [0039]    Further, each DTN node  1  updates the summary vector held by that DTN node itself based on the ACK list received from the adjacent DTN node. Specifically, each DTN node  1  may eliminate, from its own summary vector, an entry corresponding to a message(s) having the same identifier as that of an already-delivered message(s) listed in the ACK list received from the adjacent DTN node. As a result, each DTN node  1  does not forward the message which has already arrived at the final destination node to an adjacent node any longer. This is because, since the entry corresponding to the message which has already arrived at the final destination node is eliminated from the summary vector, the message which has already arrived at the final destination node is not presented to an adjacent DTN node any longer. Therefore, it is possible to prevent copies of the message which has already arrived at the final destination node from being spread within the DTN  100 . 
         [0040]    Further, each DTN node  1  may update its own message buffer based on the ACK list received from the adjacent DTN node. Specifically, each DTN node  1  may delete, from its own message buffer, a message having the same identifier as that of an already-delivered message listed in the ACK list received from the adjacent DTN node. Note that the deletion of a message may be performed by overwriting (updating) the message data stored in the message buffer of the DTN node  1  with null data having a data size of zero. In this way, each DTN node  1  can increase the use efficiency of the message buffer, thus contributing to an improvement in the message delivery success rate of the DTN  100 . This is because, by deleting the unnecessary message, which does not need to be forwarded any longer, from the message buffer, that area of the message buffer can be used for other messages that should be forwarded. 
         [0041]    Next, a configuration example of the DTN node  1  and its operation are explained hereinafter in a more detailed manner.  FIG. 4  shows a configuration example of the DTN node  1 . A wireless communication unit  11  wirelessly communicates with other DTN nodes  1  in the DTN  100 . That is, the wireless communication unit  11  includes a transceiver having the physical layers of the wireless communication technology used in the DTN  100 , and supports the protocol suite of the data link layer, the network layer, and the transport layer of the wireless communication technology used in the DTN  100 . Further, the wireless communication unit  11  also supports a bundle layer protocol. The bundle layer protocol is positioned between the application layer and the transport layer, and provides store-and-forward communication necessary for the DTN. The Protocol Data Unit (PDU) of the bundle layer may be referred to as a message bundle or a data bundle. 
         [0042]    The radio communication unit  11  manages the above-described summary vector and the ACK list according to the bundle layer protocol. Further, during contact with an adjacent DTN node, the radio communication unit  11  exchanges the summary vectors and the ACK lists with the adjacent DTN node, and sends and/or receives messages according to the bundle layer protocol. 
         [0043]    A data buffer  12  is configured to store a plurality of messages transferred through the DTN  100 . The data buffer  12  may be a volatile memory such as a Dynamic Random Access Memory (DRAM) and a Static Random Access Memory (SRAM), a nonvolatile memory such as a hard disk drive and a flash memory, or a combination thereof. 
         [0044]    A sequence diagram shown in  FIG. 5  shows an example of a communication procedure of the DTN node  1  according to this exemplary embodiment. The example shown in  FIG. 5  shows a case where two DTN nodes  1  ( 1 A and  1 B) move closer to each other and hence start contact therebetween. In steps S 101  and S 102 , the DTN nodes  1 A and  1 B exchange their ACK lists. That is, the DTN node  1 A sends its ACK list A to the DTN node  1 B (step S 101 ). The DTN node  1 B sends its ACK list B to the DTN node  1 A (step S 102 ). In a step S 103 , the DTN node  1 A updates its ACK list A and summary vector A based on the ACK list B received from the DTN node  1 B. In a step S 104 , the DTN node  1 B updates its ACK list B and summary vector B based on the ACK list A. The updating procedure of the ACK list and the summary vector is performed as described above. Each of the DTN nodes  1 A and  1 B may further update its message buffer. 
         [0045]    In steps S 105  and S 106 , the DTN nodes  1 A and  1 B exchange their summary vectors, which have been updated based on the ACK lists of the counterpart DTN nodes. That is, the DTN node  1 A sends its summary vector A, which has been updated based on the ACK list B of the counterpart DTN node, to the DTN node  1 B (step S 105 ). The DTN node  1 B sends its summary vector B, which has been updated based on the ACK list A of the counterpart DTN node, to the DTN node  1 A (step S 106 ). 
         [0046]    In a step S 107 , the DTN node  1 A compares its summary vector A with the summary vector B of the counterpart DTN node, and requests the DTN node  1 B to send a message(s) that is not included in the summary vector A. In a step S 108 , the DTN node  1 B compares its summary vector B with the summary vector A of the counterpart DTN node, and requests the DTN node  1 A to send a message(s) that is not included in the summary vector B. In a step S 109 , each of the DTN nodes  1 A and  1 B sends the messages requested by the counterpart DTN node to it. Each of the DTN nodes  1 A and  1 B stores the message received from the counterpart DTN node into its own message buffer. 
         [0047]    In steps S 110  and S 111 , the DTN nodes  1 A and  1 B update their respective summary vectors A and B based on the result of the step S 109 . 
         [0048]    According to the procedure shown in  FIG. 5 , the summary vectors, which have been updated based on the ACK lists of the adjacent DTN nodes, are exchanged in the steps S 105  and S 106 . Therefore, it provides an advantage that the sizes of the summary vector can be reduced and information about messages that is unnecessary for the adjacent DTN node is not presented to the adjacent DTN node. This is because information about messages corresponding to respective ACK messages recognized by the adjacent DTN node has already been eliminated from the summary vector to be exchanged. 
         [0049]    Other examples of the communication procedure of the DTN node  1  are explained hereinafter in the below-described second and third exemplary embodiments. 
       Second Exemplary Embodiment 
       [0050]    In this exemplary embodiment, a specific example of the communication procedure of the DTN node  1  is explained. The configuration example of the DTN  100  in this exemplary embodiment is similar to that shown in  FIG. 1 , and the configuration example of the DTN node  1  is similar to that shown in  FIG. 4 . 
         [0051]    A sequence diagram shown in  FIG. 6  shows an example of a communication procedure of the DTN node  1  according to this exemplary embodiment. When the procedure shown in  FIG. 6  is compared with that shown in  FIG. 5 , it is seen that the procedure shown in  FIG. 6  is different from that shown in  FIG. 5  in that the summary vector that has not yet been updated based on the ACK lists of the adjacent DTN node is sent to the adjacent DTN node, and then messages are exchanged in the procedure shown in  FIG. 6 . 
         [0052]    In steps S 201  and S 202 , the DTN nodes  1 A and  1 B exchange their ACK lists and summary vectors. That is, the DTN node  1 A sends its ACK list A and summary vector A to the DTN node  1 B (step S 201 ). The DTN node  1 B sends its ACK list B and summary vector B to the DTN node  1 A (step S 202 ). 
         [0053]    In a step S 203 , the DTN node  1 A requests the DTN node  1 B to send a message(s) that is listed in the summary vector B of the DTN node  1 B but is listed in neither its own summary vector A nor its own ACK list A. Similarly, in a step S 204 , the DTN node  1 B requests the DTN node  1 A to send a message(s) that is listed in the summary vector A of the DTN node  1 A but is listed in neither its own summary vector B nor its own ACK list B. 
         [0054]    In a step S 205 , each of the DTN nodes  1 A and  1 B sends the messages requested by the counterpart DTN node to it. Each of the DTN nodes  1 A and  1 B stores the message received from the counterpart DTN node into its own message buffer. 
         [0055]    In a step S 206 , the DTN node  1 A updates the ACK list A according to the ACK list B received in the step S 201 . The DTN node  1 A may obtain the union of the ACK lists A and B. Further, the DTN node  1 A updates the summary vector A according to the ACK list B received in the step S 201  and on the result of the message exchange performed in the step S 205 . The DTN node  1 A may delete the identifier of a message listed in the ACK list B from the summary vector A and add the identifier of a message received in the step S 205  to the summary vector A. 
         [0056]    In a step S 207 , similarly to the step S 206 , the DTN node  1 B updates the ACK list B according to the ACK list A received in the step S 202 . Further, the DTN node  1 B updates the summary vector B according to the ACK list A received in the step S 202  and the result of the message exchange performed in the step S 205 . 
         [0057]    Note that in the steps S 206  and S 207 , each of the DTN nodes  1 A and  1 B may further update its message buffer. 
         [0058]    The time during which adjacent DTN nodes  1  can communicate with each other may be limited. Therefore, it is desirable that the time required for completing a message exchange be reducible. This is because, by doing so, failed message exchanges can be reduced. According to the procedure shown in  FIG. 6 , the messages can be exchanged without waiting for the completion of the summary vector updating process performed based on the ACK list received from the adjacent DTN node (steps S 203  to S 205 ). Therefore, it is expected that the procedure shown in  FIG. 6  will be able to reduce the time necessary for completing a message exchange compared to the time necessary in the procedure shown in  FIG. 5 . 
       Third Exemplary Embodiment 
       [0059]    The communication procedures of the DTN node  1  explained above in the first and second exemplary embodiments are merely examples, and can be modified in a various fashions. For example, the exchange of the ACK lists between adjacent DTN nodes  1  may be performed through a separate procedure from the exchange of the summary vectors and the transmission/reception of the messages. Further, the communication procedure regarding the ACK list may include only one-way transmission, rather than performing the exchange of the ACK lists (i.e., rather than performing two-way transmission). 
         [0060]      FIG. 7  shows a simple sequence showing one-way reception of the ACK list B from the DTN node  1 B and updating of the own summary vector A and ACK list A based on this one-way reception. In a step S 301 , the DTN node  1 A receives the ACK list B from the DTN node  1 B. In a step S 302 , the DTN node  1 A updates its own ACK list A and summary vector A based on the ACK list B received from the DTN node  1 B. 
         [0061]    Specifically, the DTN node  1 A may eliminate, from its own summary vector A, a message having the same identifier as that of an already-delivered message listed in the ACK list B of the adjacent DTN node  1 B. As a result, the DTN node  1 A does not forward the message which has already arrived at the final destination node to adjacent nodes any longer. This is because, since the message which has already arrived at the final destination node is eliminated from the summary vector A, the DTN node  1 A does not present the message, which has already arrived at the final destination node, to adjacent DTN nodes any longer. Therefore, it is possible to prevent copies of the message which has already arrived at the final destination node from being spread within the DTN  100 . 
       Fourth Exemplary Embodiment 
       [0062]    In this exemplary embodiment, a modified example of the data structure of the summary vector and the ACK list is explained. Specifically, an example in which the ACK list is combined with the summary vector is shown in this exemplary embodiment. That is, in this exemplary embodiment, the ACK list is piggybacked on the summary vector. In other words, in this exemplary embodiment, the summary vector and the ACK list are managed as a common list in a DTN node. Specifically, in this exemplary embodiment, each entry in the summary vector includes information for indicating whether that entry is for a message stored in the message buffer or for an ACK message. This information may be, for example, an ACK flag indicating whether it is an ACK message or not. Alternatively, this information may indicate whether the entry in the summary vector is associated with valid data or not. In this case, when an entry in the summary vector is associated with invalid data (e.g., null data having a data size of zero), that entry may be regarded as an entry for an ACK message. 
         [0063]      FIG. 8  shows an example of a summary vector containing an ACK according to this exemplary embodiment. A summary vector  40  shown in  FIG. 8  includes a node ID field  200 , L number of message ID fields  401 , and L number of ACK flag fields  402 . The L ACK flag fields  402  correspond to the L message ID fields  401 . Each ACK flag field  402  indicates whether the value of the corresponding message ID field  401  is for a message stored in the message buffer or for an ACK message. For example, when the value of an ACK flag field  402  is “0”, the value of its corresponding message ID field  401  is considered to be the ID of a message stored in the message buffer. On the other hand, when the value of an ACK flag field  402  is “1”, the value of its corresponding message ID field  401  is considered to be the ID of an ACK message, i.e., the ID of a message which has already arrived at the final destination node. 
         [0064]      FIG. 9  shows another example of a summary vector containing an ACK according to this exemplary embodiment. A summary vector  41  shown in  FIG. 9  includes a node ID field  200 , L number of message ID fields  401 , and L number of data size fields  403 . The L data size fields  403  correspond to the L message ID fields  401 . Each data size field  403  indicates whether the value of the corresponding message ID field  401  is for a message stored in the message buffer or for an ACK message. Specifically, when a data size field  403  has a valid value (a valid data size larger than zero), it indicates that the entry is for a message stored in the message buffer. On the other hand, when a data size field  403  has a value “zero” or an invalid value, it indicates that the entry is for an ACK message. 
         [0065]    By combining the ACK list with the summary vector, that is, by using an ACK message(s) added in (piggybacked on) the summary vector, the process for exchanging ACK lists becomes unnecessary in the communication procedure between adjacent DTN nodes. Therefore, only the exchange of summary vectors need to be performed. In other words, the DTN node  1  can spread ACK messages (i.e., notice indicating messages that have arrived at their final destination) by using the mechanism for spreading messages in accordance with the Epidemic routing or the like, which uses a summary vector. Therefore, the DTN node  1  does not require any additional mechanism for spreading ACK messages (i.e., a procedure for exchanging ACK lists). Accordingly, the communication procedure between adjacent DTN nodes  1  can be simplified. 
         [0066]    Specifically, the DTN node  1  may operate as described below. When a summary vector received from an adjacent DTN node includes an entry having the same message ID as that of an entry included in its own summary vector, and while the data size indicated in the its own summary vector has a valid value, the data size indicated in the summary vector of the adjacent DTN node has zero or an invalid value, the DTN node  1  deletes the message data stored in the data buffer  12 . Further, the DTN node  1  overwrites (updates) the data size field  403  of that data in its own summary vector with zero or an invalid value. By the above-described message updating operation, it is possible to spread an ACK message and delete an already-delivered message from the data buffer  12 . 
         [0067]    Further, the use of the mechanism for updating a message (updating a message with null data) also provides an advantage that the DTN node  1  can update or reset the expiration time (e.g., a lifespan based on a time stamp, a Time-To-Live (TTL) value, or a Times-To-Send (TTS) value) of the message. Therefore, it is possible to prevent a situation in which an entry in the summary vector indicating that the data size is zero or an invalid value (i.e., an entry corresponding to an ACK message) is deleted before the entry is sufficiently spread within the DTN  100  due to the expiration of the expiration time. As a result, it is possible to facilitate a situation in which an ACK message is sufficiently spread within the DTN  100  and an already-delivered message which has already been delivered to its final destination node is deleted from the DTN  100 . 
         [0068]    As shown in  FIG. 9 , the use of the data size information in the summary vector for indicating whether the entry is for an ACK or not is particularly effective when the data size information is included in the summary vector. The data size information included in the summary vector can be used as a part of the identifier of the message or for indicating whether the message is updated or not. Further, in the example shown in  FIG. 9 , since the data size information is used to indicate whether the entry is for an ACK or not, it has an advantage that there is no need to introduce a new summary vector structure such as a structure including an ACK flag field shown in  FIG. 8 . 
       Other Exemplary Embodiments 
       [0069]    The communication procedure performed by the DTN node  1  explained in the above-described plurality of exemplary embodiments may be implemented by causing a computer system to execute a program. Specifically, one or more programs including instructions for causing a computer system to perform the algorism explained in the specification of the present application with reference to the sequence diagrams or the like may be created, and the created program may be supplied to the computer system. 
         [0070]    This program can be stored in various types of non-transitory computer readable media and thereby supplied to computers. The non-transitory computer readable media includes various types of tangible storage media. Examples of the non-transitory computer readable media include a magnetic recording medium (e.g. a flexible disk, a magnetic tape, and a hard disk drive), a magneto-optic recording medium (e.g. a magneto-optic disk), a Compact Disc Read Only Memory (CD-ROM), a CD-R, and a CD-R/W, and a semiconductor memory (e.g. a mask ROM, a Programmable ROM (PROM), an Erasable PROM (EPROM), a flash ROM, and a Random Access Memory (RAM)). Further, the program can be supplied to computers by using various types of transitory computer readable media. Examples of the transitory computer readable media include an electrical signal, an optical signal, and an electromagnetic wave. The transitory computer readable media can be used to supply programs to computer through a wire communication path such as an electrical wire and an optical fiber, or wireless communication path. 
         [0071]    Further, the above-described exemplary embodiments are mere examples for the application of the technical idea achieved by the inventors of the present application. That is, needless to say, that technical idea is not limited to the above-described exemplary embodiments and various modifications can be made thereto. 
         [0072]    This application is based upon and claims the benefit of priority from Japanese Patent Application No. 2014-041474, filed on Mar. 4, 2014, and the disclosure of which is incorporated herein in its entirety by reference. 
       REFERENCE SIGNS LIST 
       [0000]    
       
           1  DISRUPTION/DELAY/DISCONNECT TOLERANT NETWORK (DTN) NODE 
           11  WIRELESS COMMUNICATION UNIT 
           12  DATA BUFFER 
           20  SUMMARY VECTOR 
           30  ACK LIST 
           40  SUMMARY VECTOR CONTAINING ACK 
           100  DISRUPTION/DELAY/DISCONNECT TOLERANT NETWORK (DTN)