WO2013171868A1 - ノード装置および通信方法 - Google Patents

ノード装置および通信方法 Download PDF

Info

Publication number
WO2013171868A1
WO2013171868A1 PCT/JP2012/062563 JP2012062563W WO2013171868A1 WO 2013171868 A1 WO2013171868 A1 WO 2013171868A1 JP 2012062563 W JP2012062563 W JP 2012062563W WO 2013171868 A1 WO2013171868 A1 WO 2013171868A1
Authority
WO
WIPO (PCT)
Prior art keywords
cluster
node
node device
information
hello packet
Prior art date
Application number
PCT/JP2012/062563
Other languages
English (en)
French (fr)
Inventor
曽根田達也
山本哲
西本教人
岩尾忠重
Original Assignee
富士通株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to PCT/JP2012/062563 priority Critical patent/WO2013171868A1/ja
Priority to JP2014515418A priority patent/JP5928583B2/ja
Publication of WO2013171868A1 publication Critical patent/WO2013171868A1/ja
Priority to US14/507,065 priority patent/US9450830B2/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W40/00Communication routing or communication path finding
    • H04W40/24Connectivity information management, e.g. connectivity discovery or connectivity update
    • H04W40/32Connectivity information management, e.g. connectivity discovery or connectivity update for defining a routing cluster membership
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/20Hop count for routing purposes, e.g. TTL
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W24/00Supervisory, monitoring or testing arrangements
    • H04W24/02Arrangements for optimising operational condition
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W40/00Communication routing or communication path finding
    • H04W40/24Connectivity information management, e.g. connectivity discovery or connectivity update
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W84/00Network topologies
    • H04W84/18Self-organising networks, e.g. ad-hoc networks or sensor networks

Definitions

  • the present invention relates to a network device and a communication method used in a network including a plurality of nodes.
  • ad hoc network communication terminals (also referred to as node devices or simply nodes) are autonomously connected to each other to enable mutual communication.
  • the term “autonomously” means that a user does not need a dedicated communication terminal or infrastructure for setting a communication path at any time by a user or managing communication of a server or a router.
  • AODV Adhoc On Demand Distance Vector Algorithm
  • OLSR Optimized Link State Routing
  • a broadcast is used for route search, and another communication node device repeatedly broadcasts to find a route to a target node device.
  • the communication node device transmits a packet “Route Request (RREQ)” to the surroundings in order to find a target route.
  • RREQ Radio Request
  • the detection target communication node ID is specified.
  • the surrounding communication node device If the surrounding communication node device is not searching for itself, it newly creates an RREQ packet and repeats broadcasting to the surroundings. At this time, each communication node device records from which adjacent communication node device the message of the destination is received. When the RREQ message reaches the target communication node, the target communication node apparatus creates a “Route Reply (PREP)” packet, and follows the route through which the RREQ packet has been sent to the source node. Thus, PREP is transmitted. By doing so, a bidirectional communication path is created.
  • PREP Recorde Reply
  • OLSR communication node devices regularly exchange packets to grasp the entire network and detect the route to the target communication node.
  • the communication node devices periodically send out Hello packets and notify each other of their existence.
  • a flooding path called a multi point relay (MPR) is generated to efficiently deliver a packet to the entire network next.
  • MPR multi point relay
  • packets can be efficiently broadcast from each communication node device to the entire network.
  • the node devices distribute Technology Control (TC) packets that are route generation messages to each other, so that all node devices can know the network topology.
  • TC Technology Control
  • the network topology known by the communication node device that is the transmission source is referred to, and the packet is passed to the adjacent communication node device to be sent.
  • the adjacent node performs the same process, and finally distributes the packet to the target node device.
  • Node devices belonging to a wireless ad hoc network use Hello packets to propagate routing information.
  • the ad hoc network includes a node device A and a node device B.
  • the node device A generates a Hello packet including routing information held by itself and periodically broadcasts it.
  • the node device B that has received the Hello packet compares the routing information held by the node device B with the information contained in the Hello packet, and acquires the routing information that the node device B did not hold from the Hello packet. to.
  • the node device B also acquires route quality information from the Hello packet, and performs communication using a route with as good a quality as possible.
  • the node device belonging to the ad hoc network uses the Hello packet to learn route information to other node devices included in the network, and estimates an optimum route.
  • Each node device included in the ad hoc network holds a route to all other node devices in the ad hoc network in the routing table.
  • the node device A holds the route information to each of the node devices other than the node device A in the ad hoc network in the routing table. For this reason, the node device A can transmit a data packet to the node device C via the node device B, for example.
  • Such a node device may be provided with a weighting table for storing weight information about a node to be a relay destination for each final destination of a packet. In this case, when transferring a packet, the node device refers to a weighting table corresponding to the destination node of the packet and identifies a node as a destination for relaying the packet.
  • each node device holds the route to all other node devices in the ad hoc network in the routing table
  • the size of the routing table increases as the number of node devices in the network increases. Therefore, a method is known in which node devices in a network are divided into clusters, and each node device stores path information to node devices in the same cluster in a routing table.
  • control packet when generating a cluster from node devices in the network. For example, the cluster to which each node device belongs is determined based on the path information, and control packets are transmitted and received when joining and leaving the cluster. Generally, when forming a cluster, another cluster is generated when the number of nodes in the cluster exceeds a predetermined value.
  • each node operates autonomously and distributed, and autonomous regeneration and restoration of the cluster
  • a node device capable of performing the above.
  • a node device in a network including a plurality of node devices is a node device in a network including a plurality of node devices, and the node device includes information in the network among the plurality of node devices in the network.
  • a node device included in a cluster that is a group of node devices that store route information related to a route for transmission, a cluster information storage unit that stores information about a starting node that is a starting point of the cluster, and included in the cluster;
  • a TTL storage unit that stores a TTL value having a predetermined default value defined as an integer value for a first node device that is different from the node device itself, is defined for the first node device, and Every time the first node device transmits a hello packet used for the notification of the route information, it counts up.
  • a TTL subtraction unit that performs a process of reducing the TTL value stored in the TTL storage unit, and a TTL value for the first node device is a predetermined value
  • the identifier of the first node device is deleted from the cluster information storage unit.
  • each node operates autonomously and performs autonomous regeneration and restoration of the cluster. be able to.
  • each node device when a node device in the cluster to which the node belongs is monitored and a node failure in the cluster is detected, each node device operates autonomously and distributedly.
  • the ad hoc network node device 100 capable of performing autonomous repair will be described.
  • the node device 100 has the following configuration. That is, the node device 100 manages its own sequence number and adds it when it transmits a Hello packet. Further, the node device 100 manages, as cluster information, the sequence numbers of node devices other than itself in the cluster to which the node device 100 belongs, which is received in a predetermined cycle. Then, the sequence number is checked for each period of the Hello packet. If there is no change, the value managed as “TTL (Time To Live)” is subtracted. If there is a change, the value of “TTL” is initialized. to reset the value. When the value of TTL becomes 0, it is determined that a failure has occurred in that node. The node device whose TTL is 0 is disconnected from the cluster, and then the crust autonomous regeneration process or the autonomous repair process is performed, thereby avoiding a situation where the cluster cannot be integrated.
  • TTL Time To Live
  • FIG. 1 is a diagram illustrating an example of an ad hoc network in which clusters are formed.
  • FIG. 1 includes 50 node devices N1 to N50 designated by ID numbers 1 to 50 in the drawing.
  • a node device may be simply referred to as a “node”.
  • the number assigned to each node is also called a node ID.
  • adjacent node devices are connected by a solid line.
  • the node device When the node ID is designated by a number x, the node device may be simply called the node device Nx or the node Nx.
  • the node ID is designated by a symbol y other than a number, the node device may be simply referred to as a node device y or a node y.
  • the node ID may be abbreviated as NID.
  • adjacent means that a plurality of node devices are located at a distance where packets can be transmitted and received with each other.
  • the two node devices are said to be connected by a “link”.
  • a node device located in a range in which a packet transmitted from a certain node device can be received may be referred to as “adjacent node device” or “adjacent node” of the node device.
  • each node device is a sensor.
  • the ad hoc network is also called a sensor network.
  • the node connection by the link may be wired or wireless.
  • Each node device has its own identification information (Identification, ID).
  • the node ID may be a MAC address, or may be a symbol including alphabets and numbers assigned independently of the MAC address.
  • Each node device does not necessarily grasp information regarding which node devices are adjacent to each other in the network, information such as a communication state between node devices, and information regarding the entire network. Therefore, in order to know how each node is connected to other nodes, each node communicates with adjacent nodes such as route information such as Hello messages and communication quality information of links between nodes. Such messages including node information are periodically transmitted and received.
  • the Hello message is transmitted from each node at intervals of several seconds, for example. From such exchange of messages, the search for the route to the final destination and the communication quality of each route are calculated.
  • the Hello message includes node information such as route information between the node that transmits the message and the adjacent node, and communication quality information of the link between nodes.
  • node information such as route information between the node that transmits the message and the adjacent node, and communication quality information of the link between nodes.
  • a Hello packet transmitted from a certain node device is received by an adjacent node device of the transmission source node device. The Hello packet is used to notify network route information.
  • the example shown in FIG. 1 is formed by using a method for generating a new cluster when the number of nodes in the cluster exceeds 10.
  • it is formed of eight clusters C1 to C8.
  • Clusters C1 to C8 include cluster heads N1, N13, N25, N30, N35, N38, N44, and N46, respectively.
  • the cluster C1 includes node devices N1 to N10.
  • the cluster C2 includes node devices N11 to N20.
  • the cluster C3 includes node devices N21 to N25, and the cluster C4 includes node devices N26 to N30.
  • the cluster C5 includes node devices N31 to N35, and the cluster C6 includes node devices N36 to N39.
  • the cluster C7 includes node devices N41 to N45, and the cluster C8 includes node devices N46 to N50.
  • the “cluster head” is a node device that starts generation of a cluster, and is a node device that is a starting point of generation of a cluster including the cluster head itself.
  • the cluster head may be referred to as “origin node” or “gateway (GW)”.
  • node device N1 with ID number 1 starts cluster generation.
  • the node devices N2 to N50 do not belong to any cluster.
  • a node device that does not belong to any cluster may be referred to as a “free node”.
  • the origin node is the identifier of the generated cluster (in FIG. 1, C1, C2,..., C8, etc.) and the identifier of the node device participating in the cluster (in the case of cluster C1 in FIG. 1, the node device) Broadcast a Hello packet including ID numbers 1 to 10 indicating The free node recognizes the identifier of the cluster being generated by the Hello packet transmitted from the origin node.
  • a free node joins a cluster, it generates a Hello packet including information in which the identifier of the participating cluster is associated with its own identifier, and broadcasts the generated Hello packet. For example, consider a case where the node device N1 serves as a starting node to generate a cluster.
  • the node device N2 to the node device N50 are still free nodes.
  • the node device 2, the node device N 3, the node device N 4, the node device N 6, and the node device N 7 adjacent to the node device 1 receive the Hello packet transmitted from the node device N 1 that is the origin node, Recognize that cluster C1 is being generated. Since the node devices N2, N3, N4, N6, and N7 are free nodes that do not belong to the cluster, when the identifier of the cluster C1 being generated is recognized, the node devices N2, N3, N4, N6, and N7 are determined to participate in the cluster C1.
  • a Hello packet including information in which the identifier C1 of the participating cluster is associated with its own identifier N2 is generated, and the generated Hello packet is broadcast.
  • the origin node N1 recognizes that it has received a request to join the cluster C1 when notified of the identifier of the node device in association with the identifier of the cluster C1 being generated. Therefore, the node device N1, which is the origin node, recognizes the node device that participates in the cluster C1 being generated from the received Hello packet, and adds the recognized node device to the cluster. The node device added to the cluster confirms that the node device has been added to the cluster by the Hello packet from the origin node. Node devices participating in the cluster may be referred to as “participating nodes”. The participating node broadcasts a Hello packet including the identifier of the participating cluster. When the free node recognizes the identifier of the cluster being generated from the Hello packet generated by the participating node, it joins the cluster according to the above-described procedure. These processes are repeated until the number of node devices included in the cluster reaches a threshold value.
  • clusters C1 to C8 are generated by a method in which information used for generating a cluster is transmitted and received by a Hello packet, and another cluster is generated when the number of node devices included in the cluster is a threshold.
  • the cluster C1 in FIG. 1 is a cluster generated when the node device N1 is a starting node, the node device N2 to the node device N50 are in a free node state, and the threshold value of the number of node devices included in the cluster is 10. .
  • the origin node broadcasts a Hello packet including information (generation information) requesting generation of a new cluster.
  • the participating node that has received the generation request generates a Hello packet including the received generation request and broadcasts it.
  • the free node that has received the Hello packet including the generation request operates as a new starting node and starts generating a cluster.
  • the node devices N13, N30, N35, and N38 start generating clusters C2, C4, C5, and C6, respectively.
  • the procedure after the start of the cluster generation is the same as the procedure for generating the cluster C1.
  • each node device stores a route to another node device in the same cluster in the routing table.
  • each node device does not need to store a route to all the node devices included in the ad hoc network. Therefore, the size of the routing table of each node device is smaller than when the ad hoc network is not divided into clusters. For this reason, in each node apparatus, the magnitude
  • information used for forming a cluster is transmitted and received by a Hello packet, the amount of bandwidth consumed by transmission and reception of information performed to generate a cluster is smaller than when other packets, for example, control packets are used. .
  • the cluster functions include, for example, a cluster generation function and a cluster integration function.
  • the cluster generation function refers to a function of growing a cluster until the starting node takes in another node device and the first stage is completed.
  • the cluster integration function refers to a function for generating a single cluster by integrating a plurality of clusters.
  • FIG. 2 is a diagram for explaining a situation in which a failure has occurred in the starting node during cluster generation, and a node that cannot participate in the cluster has occurred.
  • Cluster A includes node devices A, B, and C. Around the cluster A, there are a node device D and a node device E. These are free nodes and want to join cluster A. However, the node device C in the cluster A that has received the Hello packet requesting to join the cluster A from the node device D attempts to transmit that fact to the node device A that is the starting node, but the node device A that is the starting node. Shows a state in which the node apparatus D cannot join the cluster A. Similarly, the node device B in the cluster A that has received the Hello packet requesting to join the cluster A from the node device E is the node device that is the starting node even if it tries to transmit the fact to the node device A that is the starting node. A failure occurs in A, and the node apparatus E cannot participate in cluster A.
  • each node device in the cluster when each node device in the cluster mutually monitors the node device in the cluster and detects a node failure in the cluster, each node device is autonomously distributed.
  • autonomous regeneration autonomous regeneration
  • autonomous repair autonomous repair
  • the node monitoring in the cluster the autonomous regeneration of the cluster, and the autonomous repair of the cluster are normally performed only by exchanging the Hello packet that is regularly transmitted, it can be performed without applying a network load by the method using the control packet.
  • it can be realized without reducing the network load and memory saving due to the original clustering, and it can stabilize the network throughput by continuing the cluster function and always maintaining and configuring the proper cluster state. It becomes possible.
  • the node device of the embodiment includes the following functions.
  • F1 When the node device is a starting node, the node device monitors all participating nodes in the cluster, and holds and manages TTL (Time To Live) of all participating node devices.
  • F2 When the node device is a participating node, the node device monitors the starting node in the cluster, and holds and manages the TTL of the starting node.
  • F3 Each node device manages a sequence number (Sequence Number: SN) of its own node device (hereinafter also referred to as its own node), and counts up (current value of SN) every time a Hello packet is transmitted. 1).
  • SN Sequence Number
  • (F4) TTL sets a variable value that is linked to weighting including the distance based on the number of hops, the quality based on the arrival interval of Hello packets, and the like for each node device.
  • Each node device holds the sequence number (SN) of each node device in the cluster information (CI) and updates it when a Hello packet is received.
  • Each node device propagates the cluster information (CI) held by its own node in a Hello packet.
  • the own node is a starting node, when the SN of the participating node to be monitored is updated, the TTL of the corresponding participating node is reset.
  • the number of nodes in the cluster is equal to or greater than a certain number (for example, nodes that can be included in the cluster) If the number (the maximum number of cluster nodes) is 50% or more, an identifier (CID) for identifying a cluster is selected as one of the node devices in the cluster and rewritten with the identifier (NID) of the node device.
  • the node device may be the one having the smallest number of node device identifiers when the node device identifiers are represented by numbers, and as a result, the cluster is regenerated with the new cluster ID.
  • the cluster information (CI) is cleared to autonomously release the cluster and become a free node, and join or create a cluster as a free node.
  • each node device manages its own sequence number (SN) and adds it when it transmits a Hello packet.
  • Each node device manages the sequence number (SN) of each node device received at a predetermined cycle as cluster information (CI). For example, the sequence number (SN) is checked every period of the Hello packet. If there is no change, the value managed as TTL (Time To Live) is subtracted, and if there is a change, that is, TTL The value of is reset to the initial value. When the value of TTL becomes 0, it is determined that a failure has occurred in that node.
  • TTL Time To Live
  • each node When a failure occurs at the origin node (gateway, cluster head) or participating node during cluster generation, each node operates autonomously in a distributed manner, and performs crust autonomous regeneration and repair. Generation can continue.
  • the cluster to which the failed node device belongs is large (there are many node devices included in the cluster), if the cluster is dissolved and reconstructed, the cluster can be generated on the participating node before the dissolution It is high. However, since the number of node devices is large, it takes time to generate a cluster. For this reason, when the size of the cluster is large, it is more efficient to change the starting node to another cluster without dissolving the cluster.
  • the number of clusters can be reduced by eliminating the cluster including the node device in which the failure has occurred and making the participating node device a free node.
  • the node device of the ad hoc network has a cluster in two stages of a first-stage cluster generation process and a second-stage cluster integration process when a plurality of node apparatuses are gathered.
  • the first stage of the cluster formation process for forming a cluster in two stages is called “cluster generation process”
  • the second stage of the cluster formation process is called “cluster integration process”.
  • Cluster generation processing” or “cluster integration processing” after a failure has occurred at the starting node of a cluster in the network is called “cluster autonomous regeneration processing”.
  • cluster generation processing” or “cluster integration processing” after a failure has occurred in a node participating in a cluster in the network that is, a node device that is not the starting node is referred to as “cluster autonomous regeneration processing”.
  • the cluster to which the failed node device belongs is integrated into the cluster. Perform the process. On the other hand, if the number of node devices in the cluster to which the failed node device belongs is smaller than a predetermined ratio of the maximum number of cluster nodes, the cluster is eliminated and cluster generation processing is performed.
  • the node device of the ad hoc network forms a cluster in two stages even if no failure occurs in the node device forming the network.
  • FIG. 3 is a diagram for explaining the outline of the stepwise cluster formation process.
  • FIG. 3A is a diagram for explaining an example of the result of the cluster generation process, which is the first stage of the cluster formation process for forming clusters in stages
  • FIG. 3C is a diagram for explaining the outline of the cluster integration processing that is a stage
  • FIG. 3C is a diagram for explaining an example of the result of the cluster integration processing that is the second stage of the cluster formation processing.
  • cluster generation process the process of creating a cluster from a plurality of node devices including the second stage is referred to as “cluster formation”, and the origin node captures another node apparatus in the cluster integration process until the first stage is completed.
  • cluster generation the process of growing a cluster is sometimes called “cluster generation”.
  • the first stage for example, 50% or less of the maximum number of cluster nodes, for example, so that the upper limit of the number of cluster nodes is equal to or less than a predetermined threshold of the maximum number of cluster nodes.
  • Cluster generation processing is performed to generate and grow clusters so that The number of cluster nodes at the end of the first stage may be referred to as the provisional maximum number of cluster nodes. That is, even if the number of nodes in the cluster does not reach the maximum number of cluster nodes and there is room for cluster growth, the cluster is not grown.
  • the routing table is not filled with information about the node device having the maximum number of cluster nodes.
  • the process proceeds to the second stage in which the cluster integration process for integrating the clusters generated in the first stage is performed.
  • the first-stage cluster growth processing is performed only by exchanging Hello packets, as will be described later.
  • the network node device recognizes adjacent node devices by transmitting and receiving Hello packets, and then takes in free nodes around the cluster head (starting node) to increase the number of nodes in the cluster.
  • starting node the number of nodes in the cluster
  • the growth of the cluster is stopped.
  • the free nodes around the cluster serve as starting nodes to generate a cluster, and the remaining free nodes are taken into the cluster.
  • the ratio of the number of cluster nodes at the end of the first stage to the maximum number of cluster nodes is set to a higher value when priority is given to the cluster generation speed, for example, 75%, 80%, etc. to.
  • provisional maximum number of cluster nodes is set to a higher value when priority is given to the cluster generation speed, for example, 75%, 80%, etc. to.
  • the ratio is set low, for example, 40%, 35%, and the like.
  • the ratio of the provisional maximum number of cluster nodes to the maximum number of cluster nodes is not limited to the above numerical value.
  • the integration process in the second stage is started after a predetermined time has elapsed since the request for joining the free node to the node device has ceased. That is, each node device takes an interval of a certain time, and if there is no change in the number of node devices belonging to the cluster within the interval, it is determined that the cluster formation is stable, and the process proceeds to cluster integration processing.
  • Clusters migrated to cluster integration processing will be integrated if they can be integrated into adjacent clusters.
  • the predetermined time depends on the number of nodes in the cluster, and can be set shorter as the size of the cluster is smaller, that is, as the number of nodes included in the cluster is smaller. Therefore, since the cluster integration process is shifted from the small size cluster, the smaller the size of the cluster, the higher the possibility that it will be taken into another cluster.
  • the cluster 4 is integrated into the cluster 1, the cluster 6 and the cluster 7 are integrated into the cluster 3, the cluster 8 is integrated into the cluster 5, and the cluster 10 is integrated into the cluster 9.
  • the cluster integration process in the second stage is started from a cluster having a small size.
  • the cluster is generated so that the upper limit of the number of nodes in the cluster (provisional maximum number of cluster nodes) is a predetermined threshold of the maximum number of cluster nodes, for example, 50%. Integrated into larger size clusters.
  • provisional maximum number of cluster nodes is a predetermined threshold of the maximum number of cluster nodes, for example, 50%.
  • FIG. 3B the number of clusters changes from 10 before integration to 5.
  • the second-stage cluster integration processing is also performed only by exchanging Hello packets, as will be described later.
  • Each node can skip the cluster generation stage and start from the cluster integration stage.
  • the cluster granularity is minimum, that is, the number of nodes in the cluster is 1, and each node device forms a cluster.
  • all node devices start cluster integration processing at the same time as activation.
  • each node functions as a starting node of a cluster formed from one node.
  • FIG. 3C shows five clusters generated as a result of the second-stage cluster integration process from a state in which there are 10 clusters generated as a result of the first-stage cluster generation process. ing.
  • cluster x a cluster whose origin node identifier NID is x is referred to as cluster x.
  • FIG. 4 shows a case where a failure has occurred in the origin node during the cluster integration process.
  • a failure occurs in the node device E that is the starting node of the cluster E. Show.
  • the cluster information that can be integrated with the cluster E for example, information included in a cluster integration destination candidate notification described later
  • Cluster A and cluster E cannot be integrated.
  • FIG. 5 shows a case where a failure occurs in a participating node during the cluster integration process.
  • the maximum number of cluster nodes is 10. That is, it is assumed that the number of nodes that can be finally included in the cluster is ten.
  • the cluster A shown in FIG. 5 includes eight node devices A to G, and the cluster J includes four node devices H to K. Then, it is assumed that a failure occurs in the node device I and the node device K. Then, looking at only the number of operating node devices, it is possible to integrate cluster A and cluster J. However, if node device I and node device K in which a failure occurs are included, the maximum number of cluster nodes is exceeded. Unable to integrate.
  • FIG. 6 shows a case where a failure occurs in a participating node during the cluster integration process.
  • the cluster A includes three node devices A to C, and the cluster E includes three node devices D to F.
  • a failure has occurred in the node device F of the cluster E.
  • the cluster integration request from the cluster A to the cluster E does not reach the node device F, and the node device F cannot be registered as a node device included in the cluster E.
  • the cluster A side when checking the list of node devices in the cluster E, the number of node devices that should be included in the cluster E and the cluster E actually obtained by exchanging Hello packets in the cluster E. The number of node devices inside does not match, making cluster integration impossible.
  • the node device described below has functions (F1) to (F12), which can solve the problems shown in FIGS.
  • the node device 100 monitors a node device in a cluster (hereinafter also referred to as the own cluster) to which the node device 100 (hereinafter also referred to as the own node) belongs, and detects a failure of the node device in the own cluster. When it is detected, it has means for performing autonomous regeneration and autonomous repair of its own cluster only by transmitting and receiving Hello packets.
  • the node monitoring in the cluster, the autonomous regeneration of the cluster, and the autonomous repair of the cluster are performed only by transmitting and receiving the Hello packet that is normally transmitted regularly, and therefore can be performed without applying a network load by the method using the control packet.
  • it can be realized without reducing the network load and memory saving due to the original clustering, and it can stabilize the network throughput by maintaining the cluster function and always maintaining and configuring the proper cluster state. possible to become.
  • FIG. 7 is a functional block diagram illustrating an example of the configuration of the node device 100.
  • the node device 100 includes a reception unit 102, a node type determination unit 104, a participation processing unit 106, a cluster information update unit 108, a cluster generation unit 110, a free node list generation unit 112, a cluster integration destination candidate notification unit 114, a cluster integration request reception Unit 116, cluster integration request update unit 118, cluster integration list generation unit 120, cluster integration processing unit 122, cluster integration list notification unit 124, setting unit 136, hello packet generation unit 138, transmission unit 140, TTL (Time To Live: Life) subtracting unit 142 is included.
  • TTL Time To Live: Life
  • the node device 10 stores node type information 126, cluster information 128, a free node list 130, a merge cluster list 132, a merge node list 134, and a TLL 144.
  • the storage unit 130, merge cluster list storage unit 132, merge node list storage unit 134, and TLL storage unit 144 are referred to by the same reference numerals.
  • the merge cluster list storage unit 132 and the merge node list storage unit 134 are referred to by the same reference numerals.
  • the receiving unit 102 receives a packet transmitted from the adjacent node device 100 and outputs a Hello packet to the node type determining unit 104.
  • the transmission unit 140 transmits the packet to the adjacent node device 100.
  • the transmission unit 140 transmits the Hello packet generated by the hello packet generation unit 138 to the adjacent node device.
  • the packet is also broadcast.
  • FIG. 8 is a diagram illustrating an example of the format of a Hello packet. As shown in FIG. 8, the Hello packet 200 includes a header and a payload.
  • the header includes a Type field, a global destination (GD) field, a global destination (Global Source: GS) field, a local source (Local Source: LS), and a local destination (Local Destination: LD).
  • the payload includes a cluster information (Clear Information: CI) field, a free node list (Free Node List: FNL) field, a merge node list (Merge Node List: MNL) field, and a merge cluster list (Merge Cluster List: MCL) field.
  • the payload further includes information indicating the number of Hello headers, the Hello header.
  • the Hello header includes route information.
  • the route information includes an identifier of a GD whose route is stored in the routing table of the node device that generates the Hello packet.
  • global destination refers to the node device 100 that is the final destination of the packet.
  • local destination refers to the node device 100 that is a transfer destination when a packet is transferred by one hop.
  • Global transmission source refers to the source node device 100 that first created the packet.
  • Local transmission source refers to the transmission source node device 100 when the packet is transferred by one hop. points.
  • the Hello packet is broadcasted to a node device adjacent to the source node device 100.
  • the Type field information indicating the type of data included in the payload is stored.
  • a value specifying the Hello packet is stored in the Type field.
  • the receiving unit 102 identifies the Hello packet using the value stored in the Type field of the received packet, and outputs the Hello packet to the node type determining unit 104.
  • an identifier of the cluster to which the node device 100 belongs (Cluster Identifier: CID) and an identifier of the node device included in the cluster identified by the cluster identifier (CID) (Node)
  • CID cluster Identifier
  • NID set of identifier
  • SN sequence number
  • the number of node device identifiers (NIDs) included in the cluster is arbitrary.
  • NIDs node device identifiers
  • SN sequence numbers
  • the end flag included in the cluster information (CI) field is information indicating whether a new node device 100 can participate in the cluster identified by the cluster identifier (CID). In other words, this is information indicating whether the cluster identified by the cluster identifier (CID) includes the maximum number of cluster nodes.
  • the end flag takes, for example, “true” and “false”. “True” and “false” may be symbols including numbers and letters indicating “true” and “false”.
  • the Hello packet having cluster information whose end flag is “true” is used as a generation request that is information for requesting generation of a new cluster.
  • the end flag is “false”, since the number of nodes included in the cluster has not reached the maximum number of cluster nodes, a new node device can participate in the cluster including the node device 10.
  • the free node list (FNL) field includes a cluster identifier (CID) for identifying a cluster to which the node is to participate, and an identifier of the node device (Node Identifier: NID) for which the cluster is identified by the cluster identifier (CID).
  • a list of Information stored in the free node list (FNL) field may be referred to as “free node information”.
  • the number of identifiers (NIDs) of node devices desired to participate in the cluster is arbitrary.
  • a set of identifiers (NIDs) of a plurality of node devices may be indicated as “ ⁇ NID ⁇ ”.
  • the merge node list (Merge Node List: MNL) field and the merge cluster list (MCL) list (MCL) field are used in the cluster integration process in the second stage of cluster formation.
  • the merge cluster list (MCL) field is information on the slave side cluster.
  • the merge cluster list (MCL) field includes an identifier of an adjacent node device (S-Identifier: SID) belonging to the master side cluster and the own node when the own node device belongs to the slave side cluster. It includes an identifier (NID) of a node device belonging to the cluster on the slave side to which the device belongs.
  • the node device belonging to the master side cluster is a cluster integration destination candidate, and the Hello packet in which the SID is stored in the merge cluster list (MCL) field is used as a cluster integration request notification.
  • a set of node device identifiers (NIDs) may be indicated as “ ⁇ NID ⁇ ”.
  • the node device B belonging to the slave side cluster receives the Hello packet from the node device A belonging to the master side cluster. Then, the node device B stores an identifier for identifying the node device A as an identifier (SID) of the node device belonging to the master side cluster, and a set of identifiers (NID) for identifying the node devices belonging to the slave side cluster. Is an empty set ⁇ and a Hello packet is generated. The Hello packet generated in this way is broadcasted.
  • SID an identifier
  • NID set of identifiers
  • the merge cluster list (MCL) field is a node device belonging to the slave side cluster including the node device B when the Hello packet is transmitted / received as a cluster integration request notification in the slave side cluster. Is a set of identifiers (NIDs) for identifying.
  • the merge node list (Merge Node List: MNL) field when a node device belonging to the master side cluster receives a Hello packet as a cluster integration request notification from an adjacent node device belonging to the slave side cluster, the cluster information of the Hello packet
  • the identifiers of the node devices belonging to the slave side cluster included in the (CI) field and the identifiers of the node devices belonging to the slave side cluster included in the merge cluster list (MCL) field are compared and matched, A set of identifiers (NID) for identifying node devices in the merge cluster list (MCL) field is moved and stored.
  • the merge node list (MNL) field stores a list of all node devices belonging to the slave cluster that can be integrated with the master cluster.
  • the identifier of the node device belonging to the slave-side cluster included in the cluster information (CI) field and the identifier of the node device belonging to the slave-side cluster included in the merge cluster list (MCL) field are compared only for the number of elements. it may be.
  • the merge node list (MNL) identifies the node device belonging to the slave side cluster. It is a set of identifiers (NIDs) to be performed.
  • the setting unit 136 sets the node device 10 to any one of a free node, a starting node, and a participating node, and stores information for specifying the type of the node device 10 in the node type information 126.
  • the node type information 126 is information in an arbitrary format that identifies the type of the node device 100. If the node itself is set as the starting node, the cluster information 128 is updated.
  • the node type determining unit 104 acquires the type of the node device 10, that is, a free node, a starting node, or a participating node, from the node type information 126.
  • the node type is associated with the output destination of the cluster information (CI), free node information (FNL, etc.), merge cluster list (MCL), and merge node list (MNL) in the Hello packet. ing.
  • the node type determination unit 104 refers to the node type information 126 and sends the cluster information (CI) to the participation processing unit 106 when the node device 100 is a free node. .
  • the node type determination unit 104 refers to the node type information 126 and sends the cluster information (CI) to the cluster information update unit 108 when the node device 100 is a starting node or a participating node.
  • the node type determination unit 104 refers to the node type information 126 to provide free node information (such as FNL) to the cluster generation unit 110 when the node device 100 is a starting node and to the free node when the node device 100 is a participating node.
  • the data is sent to the list generator 112.
  • the merge cluster list (MCL) is sent to the cluster integration request receiving unit 116 when the node device 10 is a starting node, and to the cluster integration request updating unit 118 when it is a participating node.
  • the merge node list (MNL) is sent to the cluster integration processing unit 122 when the node device 10 is a starting node, and to the cluster integration list notification unit 124 when it is a participating node.
  • the participation processing unit 106 requests participation in the cluster and confirms participation.
  • the participation processing unit 106 receives cluster information (CI) included in the Hello packet when receiving the Hello packet.
  • the participation processing unit 106 checks the contents of the cluster identifier ( ⁇ NID ⁇ ) and end flag included in the cluster information (CI). Further, the participation processing unit 106 confirms whether an entry including the device identifier of the node device 10 itself is stored in the free node list 130.
  • the free node list 130 includes an entry including the identifier of the node device 100 itself.
  • the participation processing unit 106 requests the participation of a cluster in which participation is possible, that is, a cluster whose end flag is not “true”, and the cluster identifier (CID) included in the cluster information (CI) and the node device 100 itself.
  • the free node list 130 includes an entry including the identifier of the node device 100 itself, the node device 100 has already requested to join the cluster.
  • the participation processing unit 106 confirms whether or not the identifier of the node device 10 itself is included in the cluster information (CI) in order to confirm whether or not the cluster has joined the cluster.
  • the participation processing unit 106 determines that the node device 100 itself can participate in the cluster, and the node included in the cluster information (CI).
  • a set of device identifier and sequence number sets ( ⁇ NID, SN> ⁇ ) is updated.
  • the identifier of the node device 10 itself is deleted from the free node list 130 and becomes a participating node of the cluster.
  • the end flag is checked in order to check whether it can participate in the cluster identifier (CID) cluster included in the cluster information (CI).
  • the participation processing unit 106 determines that the cluster to which the node device 10 itself belongs already includes the maximum number of node devices. Delete 130 entries.
  • the free node list 130 does not include an entry including the identifier of the node device 10 itself and receives a Hello packet including cluster information (CI) whose end flag is “true”, the node device 100 itself becomes the origin node.
  • the node type information 126 is changed, and the cluster information 128 is updated.
  • the cluster information 128 stores information on the maximum number of cluster nodes in addition to the cluster information (CI).
  • the cluster information update unit 108 is included in the cluster information (CI) in order to confirm whether the cluster information (CI) notified by the Hello packet is information related to the cluster to which the node device 100 itself belongs. It is confirmed whether the cluster identifier (CID) matches the identifier of the cluster to which the node device 100 itself belongs. If the two match, the information of the cluster to which the node device 100 itself belongs is notified, so the cluster information updating unit 108 determines the cluster information 128 based on the cluster information (CI) notified by the Hello packet. to update Te. Further, the cluster information update unit 108 deletes the entry related to the node device included in the cluster information (CI) from the free node list 130.
  • CID cluster identifier
  • the cluster information update unit 108 compares the merge node list (MNL) or the merge cluster list (MCL) when the node device 100 itself is set in the cluster information (CI), and merge clusters as necessary.
  • the list 132 and the merge node list 134 are updated.
  • the cluster information update unit 108 sends the cluster information (CI) received from the node type determination unit 104 to the cluster integration destination candidate notification unit 114.
  • the cluster information update unit 108 functions as a sequence number determination unit that determines whether the sequence numbers for the node devices included in the first and second Hello packets received by the reception unit 102 at different timings match each other. .
  • the cluster generation unit 110 processes the node free information such as the node free list (FNL) received from the node type determination unit, and refers to and updates the cluster information (CI) managed by the own node as necessary.
  • FNL node free list
  • CI cluster information
  • the free node list generation unit 112 processes the free node list (FNL) received from the node type determination unit 104, and updates the free node list 130 managed by the node device 100 itself as necessary.
  • the cluster integration destination candidate notification unit 114 refers to the cluster information (CI) received from the cluster information update unit 108 and the cluster information 128 managed by the own node, and merges managed by the own node if the conditions for cluster integration are satisfied.
  • the cluster list 132 is updated. When the merge cluster list 132 is updated, if the local node is the starting node, the merge cluster list (MCL) is passed to the cluster integration request reception unit 116.
  • the cluster integration request reception unit 116 processes the merge cluster list (MCL) received from the node type determination unit 104 or the cluster integration destination candidate notification unit 114, and if the cluster integration condition is satisfied, the merge cluster managed by the own node The list 132 is updated.
  • MCL merge cluster list
  • the cluster integration request update unit 118 processes the merge cluster list (MCL) received from the node type determination unit 104, and updates the merge cluster list 132 managed by its own node if the conditions for cluster integration are satisfied (slave side participation) Node registration).
  • MCL merge cluster list
  • CI cluster information
  • the cluster integration list generation unit 120 processes the merge cluster list (MCL) and cluster information (CI) received from the cluster integration request update unit 118, and manages the merge node list managed by the own node if the conditions for cluster integration are satisfied. 134 is updated.
  • the cluster integration processing unit 122 processes the merge node list (MNL) received from the node type determination unit 104, and updates the cluster information 128 managed by the own node if the conditions for cluster integration are satisfied.
  • MNL merge node list
  • the cluster integration list generation unit 120 processes the merge cluster list (MCL) and cluster information (CI) received from the cluster integration request update unit, and if the conditions for cluster integration are satisfied, the merge node list 134 managed by the own node. Update.
  • the cluster integrated list notification unit 124 processes the merge node list (MNL) received from the node type determination unit, and refers to and updates the merge node list 134 managed by the own node as necessary.
  • MNL merge node list
  • the hello packet generation unit 138 generates a Hello packet and sends it to the transmission unit 140.
  • An example of the format of the Hello packet is shown in FIG.
  • the Hello packet includes a cluster information (CI) field, a free node list (FNL) field, a merge node list (Merge Node List: MNL) field, and a merge cluster list (Merge Cluster List: MCL) field. Information stored in these fields is acquired from the cluster information 128, the free node list 130, the merge node list 134, and the merge cluster list 132, respectively.
  • CI cluster information
  • FNL free node list
  • MNL merge node list
  • MCL merge cluster list
  • the monitoring process mainly relates to the functions (F1) to (F9) of the node device 10.
  • the cluster autonomous reproduction process that is executed when a failure occurs in the starting node in the cluster will be described.
  • the cluster autonomous reproduction process is mainly related to the function (F10) of the node device 100.
  • the cluster autonomous repair process executed when a failure occurs in a participating node in the cluster will be described.
  • the cluster autonomous reproduction processing is mainly related to the functions (F11) to (F12) of the node device 100.
  • the cluster shown in FIG. 9 has an identifier CID 10 for identifying the cluster, and is hereinafter referred to as cluster 10.
  • Each node device holds its own sequence number (Sequence Number: SN).
  • the sequence number (SN) is updated (counted up) every time a Hello packet is received. Further, the sequence number (SN) is stored in the cluster information 128, and the information related to the sequence number (SN) of the node device N10 is broadcast by a Hello packet to the node devices belonging to the same cluster.
  • the origin node N10 when the origin node N10 receives a Hello packet from any of the participating nodes N11 to N14 of the cluster 10, it compares the SN for the currently managed node device with the sequence number (SN) contained in the Hello packet. To do.
  • the sequence number (SN) for the currently managed node device is a value that was set last time when the Hello packet was received from the node device. Therefore, if no failure has occurred in the node device, the value of the sequence number (SN) is updated, so that the TTL for the node device is reset and set to a default value.
  • the Hello packet 202 shown in FIG. 10 is an example of a Hello packet transmitted from a node device belonging to the cluster 10.
  • a cluster identifier CID 10
  • a set of identifiers and sequence numbers (SN) of each node device included in the cluster 10 and an end flag are stored in the cluster information (CI) field.
  • FIG. 11 is a diagram showing an example of the TTL of the starting node N10 and the node devices N11 to N14 that are participating nodes.
  • the TTL value shown in FIG. 11 is an example of a default value.
  • the origin node N10 holds the TTL of each node of the cluster 10 to which it belongs in the TTL 144.
  • Each participating node holds the TTL of the starting node N10 of the cluster 10 to which it belongs in the TTL 144 of each node device N10.
  • the TTL of all the node devices belonging to the cluster 10 is 22.
  • the information regarding the identifier of the node device is deleted from the cluster information 128, and the node device is disconnected from the cluster 10.
  • the origin node N10 receives the Hello packet from the participating node, the set of sets ( ⁇ IDs of the node device and the sequence number (SN) of the node device) held in the cluster information 128 ( ⁇ ⁇ NID, SN> ⁇ ) with reference to the sequence number (SN) of the node device stored in the cluster information (CI) field of the Hello packet and the value stored in the cluster information 128 of its own node device And compare. If the two are different, the TTL of the node device is reset, and the TTL of the node device remains the default value. However, if a failure occurs in the node device and the sequence number (SN) is not updated, the TTL of the node device is subtracted by the TTL subtraction unit 142 and is decreased by one.
  • FIG. 12 shows the cluster 11 obtained as a result of performing the cluster autonomous reproduction process after a failure has occurred in the starting node N10 of the cluster 10 shown in FIG.
  • the Hello packet is not transmitted from the origin node N10 to the participating nodes (node devices N11 to N14), and the origin node device 10 stored in the cluster information 128 of the participating nodes N11 to N14.
  • the sequence number (SN) is not updated.
  • the sequence number (SN) of the own node stored in the cluster information 128 of each of the participating nodes N11 to N14 is updated (counted up) every time the node device transmits a Hello packet. Further, the sequence numbers (SN) of the participating nodes other than the own node stored in the cluster information 128 of each of the participating nodes N11 to N14 are updated when the Hello packet is received.
  • FIG. 13 is an example of information stored in the cluster information 128 of the participating nodes N11 to N14.
  • Each participating node holds the TTL of the starting node in the cluster in the respective TTL 144.
  • the sequence number (SN) of the origin node 10 since the sequence number (SN) of the origin node 10 has not been updated, the TTL of the origin node N10 is subtracted every fixed time (for example, the transmission period of the Hello packet).
  • FIG. 14 is a diagram showing a situation in which the TTL of the starting node 10 held by each participating node (node devices N11 to N14) has become zero.
  • the TTLs 304, 306, 308, 310 of the origin node N10 stored in the TTL 144 of each node device decrease from the default value “22” to “0”.
  • Each participating node deletes the information of the starting node N10 from the cluster information 128 when the TTL of the starting node N10 becomes zero.
  • the cluster including the node devices N11 to N14 has no starting node. Therefore, if the number of node devices in the cluster is equal to or greater than a predetermined threshold, the cluster is regenerated by selecting a new starting node from the existing node devices N11 to N14. Then, the identifier for identifying the cluster (CID) is rewritten to the identifier (NID) of the newly selected starting node device to reproduce the cluster.
  • the identifier of the node device is a number as in this example, among the remaining node devices in the cluster, the one with the smallest number indicating the identifier (NID) may be selected.
  • NID the number indicating the identifier
  • a predetermined threshold of the maximum number of cluster nodes for example, 50% can be exemplified. A number other than 50%, for example, 40% or 60% may be used.
  • FIG. 15 shows an example of cluster information (CI) stored in the cluster information 128 of the participating nodes N11 to N14 when a cluster is newly played back using the node device N11 as a starting node.
  • the node device 11 becomes the starting node, and the cluster including the node devices N11 to N14 is reproduced as a cluster having the identifier 11 for identifying the cluster.
  • the cluster information (CI) stored in the cluster information 128 of the participating nodes N11 to N14 is cleared and the cluster is extinguished. That is, the node devices N11 to N14 are free nodes.
  • FIG. 16 shows a cluster 10 obtained as a result of performing cluster autonomous repair processing after a failure has occurred in a participating node N13 of the cluster 10 shown in FIG. 9, and a node device N14 (hereinafter simply referred to as a free node). May be referred to as a free node N14).
  • a failure occurs in the participating node 13
  • the Hello packet transmitted from the node device N13 and the node device N14 does not reach the origin node N10. That is, among the information stored in the cluster information 128 of the starting node N10, the sequence numbers (SN) of the node device N13 and the node device N14 are not updated.
  • FIG. 17 is a diagram illustrating an example of a situation in which the sequence numbers (SN) of the node device N13 and the node device N14 are not updated among the information stored in the cluster information 128 of the origin node N10.
  • To CI: ⁇ CID, ⁇ NID, SN> ⁇ , end> ⁇ 10, ⁇ 10, 23>, ⁇ 11, 23>, ⁇ 12, 23>, ⁇ 13, 1>, ⁇ 14, 1> ⁇ , False>
  • the sequence information (SN) related to the node devices N10 to N12 is updated, but the sequence numbers (SN) of the node devices N13 and N14 are not updated.
  • the origin node N10 subtracts the TTLs of the node device N13 and the node device N14 whose sequence information (SN) is not updated at regular intervals, the TTLs of the participating nodes N11 to N13 stored in the TTL 144 of the origin node N10 are default values. However, the TTL of the node device N13 and the node device N14 will eventually be “0”.
  • FIG. 18 is a diagram when the TTLs of the node device N13 and the node device N14 stored in the TTL 144 of the origin node N10 are “0”. The TTL of the node device N13 and the node device N14 remains the default value “22”.
  • the origin node N10 deletes the information regarding the node device N13 and the node device N14 in which the TTL 31 is “0” from its own cluster information 128, and broadcasts that fact in a Hello packet.
  • FIG. 19 is an example of a Hello packet transmitted from the origin node N10.
  • the cluster information (CI) of the Hello packet 210 shown in FIG. CI: ⁇ CID, ⁇ NID, SN> ⁇ , end> ⁇ 10, ⁇ 10, 24>, ⁇ 11, 24>, ⁇ 12, 24> ⁇ , false> It has become.
  • the cluster information (CI) of the Hello packet 210 indicates that the cluster 10 is composed of node devices N10 to N12.
  • the node device N14 does not receive the Hello packet from the origin node 10, and the sequence number (SN) related to the node device N10 in the cluster information 128 managed by the own node is not updated.
  • the node device N14 subtracts the TTL of the origin node N10 whose sequence number (SN) is not updated at a constant period.
  • FIG. 20 is a diagram illustrating a state in which the sequence number (SN) related to the node device N10 stored in the TTL 314 of the node device N14 has become “0”. Then, the node device N14 deletes the information regarding the origin node N10 from the cluster information 128 when the TTL of the origin node N10 becomes “0”.
  • SN sequence number
  • the cluster to which the node device N14 belongs has no origin node. Therefore, if the number of node devices in the cluster including the node device N14 is equal to or greater than a predetermined threshold value, the starting node is selected from the node devices belonging to the cluster. Then, the cluster is reproduced by replacing the identifier (CID) for identifying the cluster with the identifier for identifying the newly selected starting node.
  • the identifier of the node device is a number as in this example, among the remaining node devices in the cluster, the one with the smallest number indicating the identifier (NID) may be selected.
  • the predetermined threshold a predetermined threshold of the maximum number of cluster nodes, for example, 50% can be exemplified. A number other than 50%, for example, 40% or 60% may be used.
  • the cluster information (CI) stored in the cluster information 128 of the participating node is cleared and the cluster is extinguished. At this time, the node device N14 becomes a free node or a start node.
  • the transition from the cluster generation process, which is the first stage of the cluster formation process, to the cluster integration process, which is the second stage, is performed for each node device.
  • Each node device 100 monitors a change in the number of node devices in the cluster to which the node device 100 belongs, and starts a cluster integration process when there is no change in the number of node devices in the cluster over a predetermined time. For example, after joining the cluster in the cluster generation process, the system waits for a certain period of time after the number of nodes in the cluster to which it belongs no longer changes.
  • cluster integration processing is preferentially started from a cluster having a small number of nodes in the adjacent cluster.
  • FIG. 21 is a diagram for explaining the outline of the cluster integration priority determination process for determining from which cluster the cluster integration process is started when there are a plurality of clusters.
  • the cluster 6 has the smallest number of node devices included in the cluster. Therefore, the cluster 6 moves to the cluster integration stage before the clusters 1 and 9.
  • the cluster integration process which is the second stage
  • the value of the maximum number of cluster nodes set in the first stage is changed, and the cluster information 128 of the node device 10 is further changed. This is done by changing the end flag stored in “true” to “false”.
  • Figure 22 is a diagram for explaining the outline of the cluster integration-destination candidate notification process.
  • the received node device receives cluster information (CI) managed by the own node and cluster information (CI) included in the Hello packet. ) To add the number of node devices of both clusters, and determine whether the maximum number of cluster nodes has been reached. If the total number of nodes is less than or equal to the maximum number of cluster nodes, it is determined that the two clusters can be integrated.
  • cluster information CI
  • CI cluster information
  • the cluster integration destination candidate notification unit 114 of the node device 10 itself determines which of the cluster to which the node device 10 belongs and the adjacent cluster is the master and which is the slave.
  • the value of the identifier (CID) of the adjacent cluster and the adjacent cluster is compared, and the cluster with the smaller cluster identifier (CID) value is the master and the larger cluster is the slave. That is, cluster 1 is a master and cluster 6 is a slave.
  • the transmission unit 140 broadcasts.
  • x6, x7, and x8 are integers.
  • ⁇ SID, ⁇ NID ⁇ > ⁇ 3, ⁇ 6 ⁇ > Is stored.
  • the identifier of the own node device is added to the identifier set ⁇ NID ⁇ of the node device in the merge cluster list 132, and the Hello packet including the merge cluster list (MCL) field to which the identifier of the own node device is added is transmitted. To do.
  • CI cluster information
  • MNL merge node list
  • MNL merge cluster list
  • CI cluster information
  • MNL merge node list
  • MCL merge cluster list
  • CI cluster information
  • MNL merge node list
  • MCL merge cluster list
  • FIG. 26 is a diagram illustrating an example of the hardware configuration of the node device 10.
  • the node device 100 is realized by a computer.
  • Node device 100 MPU (Micro Processing Unit) 400, PHY (Physical Layer) chip 402, timer IC 404, DRAM (Dynamic Random Access Memory) 406, flash memory 408, and wireless module 410 are included.
  • the MPU 400, the PHY chip 402, the timer IC 404, the DRAM 406, the flash memory 408, and the wireless module 410 are connected to each other via a bus 412 (412a to 412c), and can exchange various data with each other under the management of the MPU 400.
  • the MPU 400 is an arithmetic processing unit that controls the operation of the entire computer, and functions as a control processing unit of the computer.
  • the MPU 400 includes a node type determination unit 104, a participation processing unit 106, a cluster information update unit 108, a cluster generation unit 110, a free node list generation unit 112, a cluster integration destination candidate notification unit 114, a cluster integration request reception unit 116, and a cluster integration request.
  • the update unit 118, the cluster integration list generation unit 120, the cluster integration processing unit 122, the cluster integration list notification unit 124, the setting unit 136, the hello packet generation unit 138, and the TTL subtraction unit 142 operate.
  • the flash memory 408 is a non-volatile memory in which a predetermined basic control program such as firmware is recorded in advance.
  • the MPU 400 reads out and executes this basic control program when the node device as a computer is activated, thereby enabling operation control of each component of the node device as the computer.
  • the DRAM 406 is a semiconductor memory that can be written and read at any time and used as a working storage area as necessary when the MPU 400 executes various control programs.
  • the DRAM 406 can store node type information 126, cluster information 128, a free node list 130, a merge cluster list 132, a merge node list 134, a TTL 144, and a routing table.
  • the node type information 126 may be stored in the flash memory 408. In this case, the node type information 126 stored in the flash memory 408 is read into the DRAM 406 after activation.
  • the PHY chip 402 and the wireless module 410 operate as the reception unit 102 and the transmission unit 140.
  • the PHY chip 402 is an option, and by using the PHY chip 402, communication using a line can be performed.
  • the timer IC 404 measures the time when the Hello packet is transmitted, the time when the number of node devices included in the cluster to which the device 10 belongs does not change, and the like.
  • a program such as firmware may be recorded on a computer-readable recording medium and provided to the node device 10.
  • the MPU 400 can also read and execute a predetermined control program recorded on a computer-readable recording medium.
  • a computer-readable recording medium for example, a flash memory equipped with a USB (Universal Serial Bus) standard connector, a CD-ROM (Compact Disc Only Memory), a DVD-ROM (Digital Versatile Disc Read Only Only). )and so on.
  • the program may be installed in the node device 10 by being downloaded from the network via the PHY chip 402 or the wireless module 410.
  • Figure 27 is a flowchart for explaining the operation of the node type determining unit 104.
  • step S102 when the Hello packet is input from the receiving unit 102, the node type determining unit 104 refers to the node type information 126 and determines whether the node device 10 itself is a free node. If the result of this determination is Yes, that is, if the node device 10 itself is a free node, the process proceeds to step S104. If the result of this determination is No, that is, if the node device 10 itself is not a free node, the process proceeds to step S106.
  • step S104 the participation processing unit 106 is notified of cluster information (CI) including information that the node device 10 itself is a free node.
  • CI cluster information
  • step S106 the cluster information update unit 108 is notified of cluster information (CI) including information that the node device 10 itself is not a free node.
  • CI cluster information
  • step S108 subsequent to step S106, the node type information 126 is referred to and it is determined whether the node device 10 itself is a starting node. If the result of this determination is Yes, that is, if the node device 10 itself is the starting node, the process proceeds to step S110. If the result of this determination is No, that is, if the node device 10 itself is not the origin node, the process proceeds to step S116.
  • step S110 the free node list (FNL) is notified to the cluster generation unit 110.
  • step S112 the merge cluster list (MCL) is notified to the cluster integration request reception unit 116.
  • step S114 the merge node list (NML) is notified to the cluster integration processing unit 122.
  • the order of the processing of step S110, step S112, and step S114 is arbitrary.
  • the process of the node type determination unit 104 ends.
  • step S116 the free node list (FNL) is notified to the free node list generating unit 112.
  • step S118 the merge cluster list (MCL) is notified to the cluster integration request update unit 118.
  • step S120 the merge node list (NML) is notified to the cluster integration list notification unit 124.
  • the order of the processing of step S116, step S118, and step S120 is arbitrary.
  • the process of the node type determination unit 104 ends.
  • FIG. 28 is a flowchart illustrating an example of the operation of the participation processing unit 106.
  • the participation processing unit 106 determines whether or not its own entry exists in the free node list 130. If the free node list 130 has its own entry, the process proceeds to step S140. If there is no entry in the free node list 130, the process proceeds to step S132.
  • step S132 it is determined whether or not the end flag included in the cluster information (CI) field of the Hello packet is “true”. If the end flag is “true”, the process proceeds to step S136. If the end flag is not “true”, the process proceeds to step S134.
  • step S134 since the number of nodes in the cluster has not reached the maximum number of cluster nodes, the participation processing unit 106 uses the identifier (NID) of its node device as the cluster identifier (CI) included in the cluster information (CI). CID) and store it in the free node list 130.
  • NID identifier
  • CID cluster identifier
  • step S136 the participation processing unit 106 generates cluster information 128 so that its own node device can operate as a starting node.
  • the cluster information 128 stores the identifier of its own node device as a cluster identifier (CID), and the newly generated cluster includes its own node. Then, the process proceeds to step S138.
  • CID cluster identifier
  • step S138 the participation processing unit 106 changes the setting of its own node device to the starting node, and when the processing of step S138 is completed, the processing of the participation processing unit ends.
  • the participation processing unit 106 confirms whether or not the identifier of its own node device is included in the cluster information 128 in step S140.
  • the process proceeds to step S142. If the cluster information 128 does not include the identifier of its own node device, the process proceeds to step S146.
  • step S142 the participation processing unit 106 deletes its own node device entry from the free node list 130, and stores the node information included in the cluster information (CI) field in the cluster information 128. Then, the process proceeds to step S144.
  • CI cluster information
  • step S144 the participation processing unit 106 changes the setting of its own node device to the participating node, and when the processing of step S138 ends, the processing of the participation processing unit ends.
  • step S140 If it is determined in step S140 that the cluster information 128 does not include the identifier of its own node device, the process of step S146 is performed.
  • step S146 it is determined whether the end flag is “true”. If the result of this determination is Yes, the process proceeds to step S148. If this determination is No, the process of the participation processing unit ends.
  • step S148 since the number of node devices in the cluster to which the node device 10 belongs has reached the upper limit, the entry in the free node list 130 is deleted, and the processing of the participation processing unit ends.
  • FIGS. 29A and 29B are flowcharts showing an example of the operation of the cluster information update unit 108.
  • FIG. 29A and 29B are flowcharts showing an example of the operation of the cluster information update unit 108.
  • Each node performs the following processing when the cluster identifier (CID) of the cluster information (CI) of the received Hello packet is the same as the cluster identifier (CID) stored in the cluster information 128 of its own node device. Do. That is, the sequence number (SN) received for each identifier (NID) of the node device is compared with the sequence number (SN) included in the cluster information 128 managed by the own node, and the sequence number (SN) of the monitoring target node is updated. If so, the TTL of the monitoring target node is reset.
  • the monitoring target node is a cluster participating node when its own node device is a starting node, and is a starting node when its own node device is a participating cluster other than the starting node.
  • a timer is set for taking a fixed time from the time when the number of node devices in the cluster changes.
  • the cluster information (CI) of the received Hello packet is merged with the cluster information 128 of its own node device, thereby recognizing all the nodes of the cluster to which its own node device belongs.
  • Each node performs the following processing when the cluster identifier (CID) of the cluster information (CI) of the received Hello packet is different from the cluster identifier (CID) stored in the cluster information 128 of its own node device. That is, the node device identifier (NID) included in the merge cluster list 132 of the own node device and the cluster information (CI) of the received Hello packet is confirmed, and the identifier of the own node device is included. For example, the cluster information (CI) of the received Hello packet is replaced with the cluster information 128 of its own node device and stored in the merge cluster list 132 of its own node device. Delete entry. If cluster integration is not in progress, the cluster information (CI) included in the received Hello packet received from the node type determination unit 104 is passed to the cluster integration destination candidate notification unit 114.
  • the cluster integration destination candidate notification unit 114 If cluster integration is not in progress, the cluster information (CI) included in the received Hello packet received from the node type determination unit 104 is passed to the cluster integration destination candidate notification
  • step S150 the cluster information update unit 108 checks whether the cluster identifier (CID) in the cluster information (CI) field of the received Hello packet matches the cluster identifier (CID) stored in its own cluster information 128. judge. If they match, the process proceeds to step S152. If they do not match, the process proceeds to step S188.
  • CID cluster identifier
  • step S152 the cluster information updating unit 108 determines whether or not the own node is a starting node. If the result of this determination is Yes, that is, if the own node is the starting node, the process proceeds to step S160. If the result of this determination is No, that is, if the own node is not the starting node, the process proceeds to step S154.
  • step S154 the cluster information update unit 108 acquires the sequence number (SN) of the starting node stored in the cluster information 128 of the own node.
  • step S156 the cluster information update unit 108 determines whether the sequence number (SN) of the starting node stored in the cluster information 128 of the own node has been updated or added. If the result of the determination in step S156 is Yes, that is, if the sequence number (SN) of the starting node stored in the cluster information 128 of the own node has been updated or added, the process proceeds to step S158. If the result of determination in step S156 is No, that is, if the sequence number (SN) of the starting node stored in the cluster information 128 of the own node has not been updated or added, the process proceeds to step S172.
  • step S158 the cluster information updating unit 108 resets the TTL value of the starting node stored in the TTL 144 of the own node, and returns to the default value.
  • the value of the sequence number (SN) stored in the cluster information 128 of the own node is updated to the value of the sequence number (SN) included in the cluster information (CI) field of the received Hello packet. Then, the process proceeds to S172.
  • step S152 determines whether the own node is the starting node. If the determination in step S152 is Yes, that is, if the own node is the starting node, first, in step S160, all the participating nodes of the cluster to which it belongs are acquired, and unprocessed participating nodes are acquired.
  • step S162 the cluster information update unit 108 determines whether there is an unprocessed participating node. If the result of this determination is No, that is, if there is no unprocessed participating node, the process proceeds to step S172. If the result of this determination is Yes, that is, there is an unprocessed participating node, the process proceeds to step S164.
  • step S164 the cluster information update unit 108 acquires the sequence number (SN) of the participating node stored in the cluster information 128 of the own node.
  • step S166 the cluster information update unit 108 determines whether the sequence number (SN) of the participating node (node device other than the starting node) of the cluster that is the starting node is updated or added. . If the result of this determination is No, that is, if the sequence number (SN) of the participating node (node device other than the starting node) of the cluster that is the starting node is not updated or added, the process proceeds to step S170.
  • step S168 If the result of this determination is Yes, that is, if the sequence number (SN) of the participating node (node device other than the starting node) of the cluster in which the node is the starting node has been updated or added, the process proceeds to step S168.
  • step S168 the cluster information update unit 108 resets the TTL value of the participating node stored in the TTL 144 of the own node, and returns to the default value.
  • the value of the sequence number (SN) stored in the cluster information 128 of the own node is updated to the value of the sequence number (SN) included in the cluster information (CI) field of the received Hello packet. Then, the process proceeds to step S170.
  • step S170 the participating node is set as processed. Then, the process proceeds to step S172.
  • step S172 the cluster information update unit 108 determines the number of nodes of the cluster identified by the cluster identifier (CID) included in the Hello packet and the cluster identified by the cluster identifier (CID) stored in its own cluster information 128. Whether there is a difference in the number of nodes. If the result of this determination is Yes, the process proceeds to step S174. If the result of this determination is No, the process proceeds to step S176.
  • step S174 the cluster information update unit 108 sets a timer for measuring a timeout for a predetermined time from when the number of nodes in the cluster identified by the cluster identifier (CID) changes. Then, the process proceeds to step S176.
  • the cluster information updating unit 108 adds itself to the list of identifiers (NIDs) of node devices to be joined to the cluster identified by the cluster identifier (CID) included in the free node list 130 of its own node device. It is determined whether the identifier (NID) of the node device included in the cluster identified by the cluster identifier (CID) stored in the cluster information 128 is included.
  • step S178 If the result of the determination in step S178 is Yes, the process proceeds to step S180, and if it is No, the process proceeds to step S182 without processing step S180.
  • step S180 the cluster information updating unit 108 matches its node identifier ( ⁇ NID ⁇ ) included in the cluster recognized by the cluster identifier (CID) stored in its own cluster information 128.
  • the identifier (NID) of the node device included in the free node list 130 is deleted. Then, the process proceeds to step S182.
  • step S182 the cluster information update unit 108 determines whether the merge node list 134 of its own node device is set. If set, the process proceeds to step S184. If not set, the processing of the cluster information update unit 108 is terminated.
  • step S184 the cluster information update unit 108 uses the node identifier ( ⁇ NID ⁇ ) included in the merge node list 132 of its own node device as the node identifier (CI) field included in the cluster information (CI) field of the received Hello packet. ⁇ NID ⁇ ) is determined. If the result of this determination is Yes, the process proceeds to step S186. If the result of this determination is No, the processing of the cluster information update unit 108 is terminated.
  • step S186 the node included in the cluster recognized by the identifier ( ⁇ NID ⁇ ) of the node included in the merge node list 132 of the own node device and the identifier (CID) of the cluster stored in the own cluster information 128. Are compared, the identifier of the matching node device is deleted from the merge node list 132 of its own node device, and the processing of the cluster information updating unit 108 is terminated.
  • the cluster information update unit 108 determines in step S188 that It is determined whether the identifier (NID) of its own node device is set in the merge cluster list 132 of the current node device. If the result of this determination is Yes, the process proceeds to step S190. If the result of this determination is No, the process proceeds to step S198.
  • step S190 the cluster information update unit 108 determines whether or not the identifier (NID) of its own node device is set in the node identifier ( ⁇ NID ⁇ ) included in the cluster information (CI) field of the received Hello packet. To do. If the result of this determination is Yes, the process proceeds to step S192. If the result of this determination is No, the process proceeds to step S198.
  • NID identifier
  • CI cluster information
  • step S192 it is determined whether the transmission source LS of the received Hello packet is included in the SID of the merge cluster list or the identifier (NID) of the node device included in its own cluster information 128. If the result of this determination is Yes, the process proceeds to step S194. If the result of this determination is No, the process proceeds to step S198.
  • step S194 the information included in the own cluster information 128 is deleted, and the information included in the cluster information (CI) field of the received Hello packet is overwritten on the own cluster information 128.
  • step S196 subsequent to step S194, information included in the merge cluster list 132 of its own node device is deleted, and the processing of the cluster information update unit 108 is terminated.
  • step S198 the cluster integration destination candidate notification unit is processed.
  • the process of step S198 ends, the process of the cluster information update unit 108 ends.
  • FIG. 30 is a flowchart illustrating an example of the operation of the cluster generation unit 110.
  • the cluster generation unit 110 determines whether the value of the end flag of the cluster information 128 is true. If the value of the end flag is true, a new node device cannot be added to the cluster. If the result of this determination is No, that is, if the value of the end flag is false, a new node device can be added to the cluster. If the result of this determination is Yes, that is, if the value of the end flag is true, the processing of the cluster generation unit 110 ends. If the value of the end flag is false, the process proceeds to step S202.
  • the cluster generation unit 110 uses the node information that the free node information included in the free node list (FNL) field of the received Hello packet intends to participate in the cluster created by its own node device. Confirm that it is an identifier. Therefore, in S202, the cluster generation unit 110 determines whether or not the cluster identifier (CID) included in the free node list (FNL) field of the received Hello packet is different from the cluster identifier (CID) included in the cluster information 128. Determine. When the result of this determination is No, that is, when the cluster identifier (CID) included in the free node information and the cluster information 128 matches, the cluster generation unit 110 performs the following operation on the cluster generated by its own node device. Recognize that participation was requested. Then, the process proceeds to step S204. If the result of this determination is Yes, the processing of the cluster generation unit 110 ends.
  • CID cluster identifier
  • step S204 the cluster generation unit 110 adds the identifier (NID) of the node device included in the free node information to the cluster information 128, and participates in the cluster.
  • NID identifier
  • FIG. 31 is a flowchart showing an example of the operation of the free node list generator 112. Steps S210 and S212 are the same processes as steps 200 and S202, respectively.
  • step S210 the free node list generation unit 112 determines whether the value of the end flag of the cluster information 128 is true. If the result of this determination is Yes, that is, if the value of the end flag is true, the processing of the free node list generation unit 112 ends. If the value of the end flag is false, the process proceeds to step S212.
  • step S212 the free node list generating unit 112 determines whether or not the cluster identifier (CID) included in the free node list (FNL) field of the received Hello packet is different from the cluster identifier (CID) included in the cluster information 128. Determine. When the result of this determination is No, the free node list generation unit 112 recognizes that participation has been requested for the cluster generated by its own node device. Then, the process proceeds to step S212. If the result of this determination is Yes, the processing of the free node list 110 ends.
  • CID cluster identifier
  • step S214 the free node list generation unit 112 determines whether the cluster information 128 includes an identifier (NID) of the node device included in the free node list (FNL) field of the received Hello packet.
  • NID identifier
  • the process proceeds to step S216. If the result of this determination is Yes, the processing of the free node list 112 ends.
  • step S216 the free node list generation unit 112 adds the identifier (NID) of the node device included in the free node list (FNL) field to the free node list 130.
  • NID identifier
  • FNL free node list
  • FIG. 32 is a flowchart illustrating an example of the operation of the cluster integration destination candidate notification unit 114.
  • each node receives a Hello packet containing cluster information (CI) that is different from the cluster identifier (CID) of the cluster to which it belongs, it proceeds to the cluster integration stage. Is determined based on whether the timer has timed out from when the number of node devices in the cluster is no longer changed. If it has shifted to the cluster integration stage, the number of nodes of both clusters is summed from the cluster information 128 of its own node device and the cluster information (CI) of the received Hello packet. Judge that it is possible.
  • the cluster integration destination candidate (node device belonging to the master side cluster) is set as the SID of the merge cluster list (MCL).
  • the set merge cluster list is passed to the cluster integration reception unit.
  • step S220 the cluster integration destination candidate notification unit 114 determines whether the cluster identifier (CID) in the cluster information (CI) field of the received Hello packet is different from the cluster identifier (CID) stored in its own cluster information 128. Determine.
  • the Hello packet at this time has a meaning as a cluster integration destination candidate notification. If the result of this determination is Yes, that is, if the cluster identifier (CID) in the cluster information (CI) field of the received Hello packet is different from the cluster identifier (CID) stored in its own cluster information 128, step S222 Proceed to
  • step S222 the cluster integration destination candidate notification unit 114 determines whether or not a time-out has occurred for a certain time from when the number of node devices is no longer changed. When the result of this determination is Yes, the cluster integration destination candidate notification unit 114 recognizes that it has shifted to the cluster integration stage. Then, the process proceeds to step S224.
  • step S224 the cluster integration destination candidate notification unit 114 determines the node device identifier (NID) included in the cluster information (CI) field of the received Hello packet and the node device identifier stored in its own cluster information 128 ( NID) is determined whether the total number of entries is equal to or less than the maximum number of cluster nodes, which is the upper limit of the number of node devices per cluster.
  • NID node device identifier
  • the cluster to which the node device that is the source of the Hello packet belongs and the cluster to which it belongs can be integrated. Then, the process proceeds to step S226.
  • step S226 the cluster integration destination candidate notification unit 114 determines whether the cluster to which the cluster integration destination candidate belongs is on the slave side. If the result of this determination is Yes, the process proceeds to step S226.
  • step S2208 the cluster integration destination candidate notification unit 114 determines whether the merge cluster list (MCL) of the received Hello packet is empty. If the result of this determination is Yes, the process proceeds to step S230.
  • MCL merge cluster list
  • step S230 the cluster integration destination candidate notifying unit 114 sets a node device that belongs to the cluster integration destination candidate, that is, the master-side cluster and is adjacent to the cluster integration destination SID in the merge cluster list (MCL).
  • step S232 the cluster integration destination candidate notification unit 114 determines whether it is a starting node. If the result of this determination is Yes, the process proceeds to step S234.
  • step S234 the cluster integration destination candidate notification unit 114 passes the set merge cluster list to the cluster integration request reception unit 116. Then, the processing of the cluster integration destination candidate notification unit 114 ends.
  • FIG. 33 is a flowchart illustrating an example of the operation of the cluster integration request receiving unit 116.
  • the starting node compares and determines whether or not the cluster integration destination candidate notifications from other clusters are in conflict based on information included in the merge cluster list 132 of its own node device.
  • the cluster integration destination candidate notification is received.
  • the origin node Upon receipt of the cluster integration destination candidate notification, the origin node adds an identifier (NID) of its own node device to the merge cluster list 132.
  • NID identifier
  • step S240 the cluster integration request accepting unit 116 determines whether the identifier (SID) of the node device of the master side cluster included in the merge cluster list (MCL) field of the received Hello packet is not included in the own cluster information 128. Determine. If the result of this determination is Yes, the process proceeds to step S242. If the result of this determination is No, the processing of the cluster integration request acceptance unit 116 is terminated.
  • SID identifier
  • MCL merge cluster list
  • step S242 the cluster integration request reception unit 116 determines whether the identifier (NID) of the node device in the merge cluster list (MCL) field of the received Hello packet is not set. If the result of this determination is Yes, the process proceeds to step S248. If the result of this determination is No, the process proceeds to step S244.
  • NID identifier
  • MCL merge cluster list
  • step S244 the cluster integration request accepting unit 116 determines that the identifier (SID) of the node device of the master side cluster included in the merge cluster list (MCL) field of the received Hello packet is the master side included in its own merge cluster list 132. It is determined whether it is the same as the identifier (SID) of the cluster node device. If the result of this determination is Yes, the process proceeds to step S246. If the result of this determination is No, the processing of the cluster integration request acceptance unit 116 is terminated.
  • SID identifier
  • step S246 the cluster integration request reception unit 116 uses the identifier (NID) of the node device included in the merge cluster list (MCL) field of the received Hello packet as the identifier (NID) of the node device included in its own merge cluster list 132. ) To merge.
  • NID identifier
  • MCL merge cluster list
  • step S242 If the result of the determination in step S242 is Yes, that is, if it is determined that the node device identifier (NID) in the merge cluster list (MCL) field of the received Hello packet is not set, the process of step S248 is performed. .
  • NID node device identifier
  • MCL merge cluster list
  • step S248 the cluster integration request reception unit 116 sets the identifier (NID) of its own node device to the identifier (NID) of the node device included in its own merge cluster list 132. Then, the processing of the cluster integration request reception unit 116 ends.
  • FIG. 34 is a flowchart illustrating an example of the operation of the cluster integration request update unit 118.
  • the participating node determines that it has received the cluster integration request notification because the origin node of the cluster to which its node device belongs is set in the merge cluster list (MCL). Is added to its own merge cluster list 132.
  • MCL merge cluster list
  • step S250 the cluster integration request update unit 118 determines whether the identifier (SID) of the node device of the master side cluster included in the merge cluster list (MCL) field of the received Hello packet is not included in its own cluster information 128. Determine. When the result of this determination is Yes, the process proceeds to step S260 to perform the process of the cluster integration list generation unit 120, and the process of the cluster integration request update unit 118 ends. If the result of this determination is No, the process proceeds to step S252.
  • SID identifier
  • MCL merge cluster list
  • step S252 the cluster integration request update unit 118 determines whether the identifier (NID) of the node device in the merge cluster list (MCL) field of the received Hello packet is not set. If the result of this determination is No, the process proceeds to step S254. If the result of this determination is Yes, the process proceeds to step S258.
  • NID identifier
  • MCL merge cluster list
  • step S258 the cluster integration request update unit 118 sets the identifier (SID) of the node device of the master side cluster included in the merge cluster list (MCL) field of the received Hello packet in its own merge cluster list 132. Then, the processing of the cluster integration request update unit 118 ends.
  • SID identifier
  • MCL merge cluster list
  • step S254 the cluster integration request update unit 118 determines whether or not the node device identifier (NID) in the merge cluster list (MCL) field of the received Hello packet is included in its own cluster information 126. If the result of this determination is No, the processing of the cluster integration request update unit 118 ends. If the result of this determination is Yes, the process proceeds to step S256.
  • NID node device identifier
  • MCL merge cluster list
  • step S256 the cluster integration request update unit 118 adds the identifier of its own node device to the identifier (NID) of the node device stored in the merge cluster list 132 of its own node device. Then, the processing of the cluster integration request update unit 118 ends.
  • NID identifier
  • Figure 35 is a flowchart showing an example of the operation of the cluster integrating list generator 120.
  • the opposite node on the master side has the identifier (NID) of the node device stored in the cluster information 128 of its own node device, and the identifier of the node device included in the merge cluster list (MCL) field of the received cluster integration request notification ( NID) completely matches. If they match, the identifier (NID) of the node device included in the merge cluster list (MCL) field of the received Hello packet (cluster integration request notification) is stored in the cluster information 128 of its own node device (NID). ).
  • step S270 the cluster integrated list generation unit 120 determines whether the merge cluster list 132 of its own node device is empty. If the result of this determination is Yes, the process proceeds to step S262.
  • step S272 the cluster integrated list generation unit 120 determines whether the identifier (SID) of the node device of the master side cluster included in the merge cluster list (MCL) field of the received Hello packet is the identifier of its own node device. judge. If the result of this determination is Yes, the process proceeds to step S274.
  • SID identifier
  • MCL merge cluster list
  • step S274 the cluster integrated list generating unit 120 determines the node device identifier (NID) included in the cluster information (CI) field of the received Hello packet and the node device identifier (NID) stored in its own cluster information 128. ) Match. If the result of this determination is Yes, the process proceeds to step S276.
  • NID node device identifier
  • step S276 the cluster integrated list generation unit 120 sets the identifier (NID) of the node device included in the cluster information (CI) field of the received Hello packet in its own merge node list 134. Then, the process of the cluster integrated list generation unit 120 is terminated.
  • NID identifier
  • steps S270, S272, and S274 are No, the processing of the cluster integrated list generation unit 120 is terminated.
  • FIG. 36 is a flowchart showing an example of the operation of the cluster integration processing unit 122.
  • the origin node confirms the conflict of the cluster integration request, and the number of node device identifiers (NID) included in the merge node list (MNL) of the received Hello packet and the node stored in the cluster information 128 of its own node device If the total number of devices is equal to or less than the maximum number of cluster nodes that is the upper limit of the number of node devices per cluster, the node devices included in the merge node list (MNL) of the Hello packet received in the cluster information 128 of the node devices Cluster integration is performed by adding an identifier (NID).
  • NID node device identifiers
  • step S280 the cluster integration processing unit 122 determines whether the merge cluster list 132 of its own node device is not set. If the result of this determination is Yes, the process proceeds to step S282.
  • step S282 the cluster integration processing unit 122 determines the number of node device identifiers (NID) included in the merge cluster list (MCL) field of the received Hello packet and the node device identifier stored in its own cluster information 128. It is determined whether the total number of (NID) is less than or equal to the maximum number of cluster nodes that is the upper limit of the number of node devices per cluster. If the result of this determination is Yes, the process proceeds to step S284.
  • NID node device identifiers
  • step S284 the cluster integration processing unit 122 adds the identifier (NID) of the node device included in the merge cluster list (MCL) field of the received Hello packet to its cluster information 128, and integrates the clusters. Then, the processing of the cluster integration processing unit 122 ends.
  • NID identifier
  • MCL merge cluster list
  • 37 and 38 are flowcharts showing an example of the operation of the cluster integrated list notification unit 124.
  • the participating node confirms the conflict of the cluster integration request, and the identifier (NID) of the node device included in the merge node list (MNL) field of the received Hello packet is the identifier (NID) of the node device included in the merge node list 134.
  • NID identifier of the node device included in the merge node list
  • FIG. 37 is a flowchart showing an example of the operation of the cluster integrated list notification unit 124 when integrating with one cluster of a plurality of clusters when an integration request notification is sent from a plurality of clusters.
  • step S290 the cluster integrated list notification unit 124 determines whether the merge cluster list 132 of its own node device is empty. If the result of this determination is Yes, the process proceeds to step S292.
  • step S292 the cluster integrated list notification unit 124 determines whether its own merge node list 134 is not set. If the result of this determination is Yes, the process proceeds to step S294.
  • step S294 the cluster integrated list notification unit 124 sets the identifier (NID) of the node device included in the merge node list (MNL) field of the received Hello packet as the identifier (NID) of the node device included in the merge node list 134. To do. Then, the process of the cluster integrated list notification unit 124 is terminated.
  • steps S290 and S292 the processing of the cluster integrated list notification unit 124 is terminated.
  • FIG. 38 is a flowchart showing an example of the operation of the cluster integration list notification unit 124 that integrates simultaneously with a plurality of clusters when integration request notifications are sent from the plurality of clusters.
  • step S300 the cluster integrated list notification unit 124 performs the same process as in step S290. That is, it is determined whether the merge cluster list 132 of its own node device is empty. If the result of this determination is Yes, the process proceeds to step S302. If the result of this determination is No, the processing of the cluster integrated list notification unit 124 is terminated.
  • step S302 the cluster integrated list notification unit 124 performs the same processing as in step S294.
  • step S302 the cluster integrated list notification unit 124 sets the identifier (NID) of the node device included in the merge node list (MNL) field of the received Hello packet as the identifier (NID) of the node device included in the merge node list 134. To do. Then, the process of the cluster integrated list notification unit 124 is terminated.
  • NID identifier
  • FIG. 39 is a flowchart illustrating an example of the operation of the TTL subtraction unit 142.
  • the TTL subtracting unit 142 is activated at a constant period and subtracts the TTL of the monitoring target node device stored in the TTL 144.
  • the monitored node device is a participating node of the cluster to which the node belongs (node other than the starting node) if the own node is the starting node, and is a starting node of the cluster to which the own node belongs if the own node is a participating node. is there.
  • the starting node deletes information on the target node from the cluster information 128.
  • the participating node clears the information related to the target node stored in the cluster information 128, and if the number of node devices in the cluster is equal to or greater than the threshold, the autonomous regeneration of the cluster If it is less than the threshold, the cluster is repaired autonomously.
  • step S310 the TTL subtraction unit 142 determines whether or not the own node is a starting node. If the result of this determination is Yes, that is, if the own node is the starting node, the process proceeds to step S324. If the result of this determination is No, that is, if the own node is not the starting node, the process proceeds to step S312.
  • step S312 the TTL subtraction unit 142 determines whether TTL-1 is 0 or less for the TTL of the starting node of the cluster to which the node (participating node) belongs. If this determination is Yes, the process proceeds to step S314. If this determination is No, the process proceeds to step 322.
  • step S322 the TTL subtracting unit 142 subtracts the TTL value of the starting node of the cluster to which the node (participating node) belongs (decreases by 1), and ends the processing of the TTL subtracting unit 142.
  • step S314 the TTL subtracting unit 142 deletes the information of the starting node of the cluster to which the own (participating node) belongs from the own cluster information 128. Then, the process proceeds to step S316.
  • step S316 the TTL subtraction unit 142 determines whether or not the number of node devices in the cluster to which the TTL subtraction unit belongs is greater than or equal to a threshold value. If this determination is Yes, the process proceeds to step S318. If this determination is No, the process proceeds to step 320.
  • step S318 the identifier (NID) of an arbitrary node device of the cluster to which the node belongs is set as the cluster identifier (CID) stored in the cluster information 128. Then, the process proceeds to step S323.
  • step S320 the information stored in its own cluster information 128 is cleared. Then, the process proceeds to step S323.
  • step S323 the TTL subtraction unit 142 sets a timer for measuring a timeout for a certain time from the time when the number of nodes of the cluster identified by the cluster identifier (CID) is changed. Then, the processing of the TTL subtracting unit 142 ends.
  • step S324 is processed after step S310.
  • step S324 the TTL subtraction unit 142 acquires all participating nodes of the cluster to which the TTL subtracting unit 142 belongs, and acquires unprocessed participating nodes.
  • step S326 the TTL subtraction unit 142 determines whether there is an unprocessed participating node. If the result of this determination is No, that is, if there is no unprocessed participating node, the processing of the TTL subtraction unit 142 is terminated. If the result of this determination is Yes, that is, there is an unprocessed participating node, the process proceeds to step S328.
  • step S328 the TTL subtracting unit 142 acquires the TTL of the participating node (node device other than the starting node) of the cluster that is the starting node.
  • step S330 the TTL subtraction unit 142 determines whether TTL-1 is 0 or less for the TTL of the participating node of the cluster to which the node (origin node) belongs. If this determination is Yes, the process proceeds to step S332. If this determination is No, the process proceeds to step S336.
  • step S332 the TTL subtraction unit 142 deletes the information of the participating nodes from its own cluster information 128. Then, the process proceeds to step S334.
  • step S334 the TTL subtraction unit 142 sets a timer that measures a timeout for a predetermined time from when the number of nodes in the cluster identified by the cluster identifier (CID) is changed. Then, the process proceeds to step S338.
  • step S336 the TTL value of the participating node is subtracted (decrease by 1).
  • FIG. 40 is a diagram showing a state of cluster A before a failure occurs at the origin node.
  • Node device A node device with identifier NID A
  • FIG. 41 is a diagram showing the topology after a failure occurs at the origin node A and the cluster autonomous regeneration process is performed in a cluster of an ad hoc network using the above-described node device 10 as each node device.
  • the node device A in which the failure has occurred is disconnected from the cluster, and a cluster B having the node device B as a starting node is formed.
  • the cluster after the node device A is disconnected has a large number of node devices included in the cluster (greater than or equal to the threshold value), and autonomously plays back using a node device in the cluster as a starting node. Is done.
  • FIG. 42 shows a processing sequence for transition from the state shown in FIG. 40 to the state shown in FIG.
  • the node device E increments (counts up) the sequence number (SN) of the node device E (own node) in its own cluster information 128, and a Hello packet (a) is transmitted based on this information.
  • CI cluster information
  • CI: ⁇ CID, ⁇ NID ⁇ , end> ⁇ A, ⁇ A, 1>, ⁇ B, 1>, ⁇ C, 1>, ⁇ D, 1>, ⁇ E, 2> ⁇ , false> Is stored.
  • the node device D Upon receiving the Hello packet (a), the node device D performs an update process (1) for updating the node device E stored in its own cluster information 128.
  • the node device D increases (counts up) the sequence number (SN) of the node device D (own node) of its own cluster information 128 and transmits a Hello packet (b) based on this information.
  • CI cluster information
  • CI: ⁇ CID, ⁇ NID ⁇ , end> ⁇ A, ⁇ A, 1>, ⁇ B, 1>, ⁇ C, 1>, ⁇ D, 2>, ⁇ E, 2> ⁇ , false>
  • the sequence numbers (SN) of the node equipment D and the node equipment E are counted up (updated by +1).
  • the node device C Upon receiving the Hello packet (b), the node device C performs an update process (2) for updating the sequence numbers (SN) of the node device D and the node device E stored in its own cluster information 128.
  • the node device C increments (counts up) the sequence number (SN) of the node device C (own node) of its own cluster information 128, and transmits a Hello packet (c) based on this information.
  • the node device C Upon receipt of the Hello packet (c), the node device C performs update processing (3) for updating the sequence numbers (SN) of the node devices C to E stored in its own cluster information 128.
  • the node device B increments (counts up) the sequence number (SN) of the node device B (own node) in its cluster information 128 by one, and transmits a Hello packet (d) based on this information.
  • the origin node A that has received the Hello packet (d) resets the TTL of the node devices B to E stored in its own TTL 144, and the node devices B to E stored in its own cluster information 128.
  • the update process (4) for updating the sequence number (SN) is performed.
  • the originating node A increments (counts up) the sequence number (SN) of the node device A (own node) of its own cluster information 128, and transmits a Hello packet (e) based on this information.
  • the node device B that has received the Hello packet (e) from the origin node A resets the TTL of the origin node device A stored in its own TTL 144 and the node device stored in its own cluster information 128 updating process for updating the a sequence number (SN) performing (6).
  • Node device B increments (counts up) the sequence number (SN) of node device B (own node) in its cluster information 128 by one, and transmits a Hello packet (f) based on this information.
  • the node device C that has received the Hello packet (f) from the node device B resets the TTL of the originating node device A stored in its own TTL 144, and the node device stored in its own cluster information 128 Update processing (7) for updating the sequence numbers (SN) of A to B is performed. Then, the node device C increments (counts up) the sequence number (SN) of the node device C (own node) of its own cluster information 128, and transmits a Hello packet (g) based on this information.
  • the node device D that has received the Hello packet (g) from the node device C is also stored in its own cluster information 128 and reset processing for resetting the TTL of the originating node device A stored in its own TTL 144.
  • Update processing (8) for updating the sequence numbers (SN) of the node devices A to C is performed. Then, the node device C increments (counts up) the sequence number (SN) of the node device D (own node) of its own cluster information 128, and transmits a Hello packet (h) based on this information.
  • the node device E that has received the Hello packet (h) from the node device D is also stored in its own cluster information 128 and reset processing for resetting the TTL of the originating node device A stored in its own TTL 144.
  • Update processing (9) for updating the sequence numbers (SN) of the node devices A to D is performed.
  • the node device E increments (counts up) the sequence number (SN) of the node device E (own node) of its own cluster information 128, and transmits the Hello packet (i) based on this information.
  • the node device D Upon receiving the Hello packet (i), the node device D performs an update process (10) for updating the sequence number (SN) of the node device E stored in its own cluster information 128. Then, the node device D increments (counts up) the sequence number (SN) of the node device D (own node) of its own cluster information 128, and transmits a Hello packet (j) based on this information.
  • the node device C receives the Hello packet (j), the node device C performs update processing (11) for updating the sequence numbers (SN) of the node devices D to E stored in its own cluster information 128. Then, the node device C increments (counts up) the sequence number (SN) of the node device C (own node) of its own cluster information 128, and transmits a Hello packet (k) based on this information.
  • the node device B Upon receiving the Hello packet (k), the node device B performs an update process (12) for updating the sequence numbers (SN) of the node devices C to E stored in its own cluster information 128.
  • the node device B increments (counts up) the sequence number (SN) of the node device B (own node) in its cluster information 128 by one, and transmits a Hello packet (l) based on this information.
  • a failure (5) has occurred in the origin node, and the node apparatus B does not receive the updated sequence number (SN) from the origin node A. Therefore, the node device B performs an update to increment (count up) the sequence number (SN) of the node device B (own node) stored in its own cluster information 128 at the next Hello transmission timing. Perform update processing. Further, since the SN of the origin node A is not updated, the TTL subtraction unit 142 performs a subtraction process (13) for subtracting one TTL of the origin node A stored in the TTL 144. Then, the Hello packet (m) is transmitted.
  • the node device C receives the Hello packet (m), the node device C performs an update process for updating the sequence number (SN) of the node device B stored in its own cluster information 128. Further, since the SN of the origin node A is not updated, the TTL subtraction unit 142 performs a subtraction process (14) for subtracting one TTL of the origin node A stored in the TTL 144. Then, the sequence number (SN) of the node device C (own node) in its own cluster information 128 is incremented by one (counts up), and a Hello packet (n) is transmitted based on this information.
  • the node device D Upon receiving the Hello packet (n), the node device D performs an update process for updating the sequence numbers (SN) of the node devices B to C stored in its own cluster information 128. Further, since the SN of the origin node A is not updated, the TTL subtraction unit 142 performs a subtraction process (15) for subtracting one TTL of the origin node A stored in the TTL 144. Then, the sequence number (SN) of the node device D (own node) of its own cluster information 128 is incremented by 1 (counts up), and a Hello packet (o) is transmitted based on this information.
  • the node device E Upon receipt of the Hello packet (o), the node device E performs an update process for updating the sequence numbers (SN) of the node devices B to D stored in its own cluster information 128. Further, since the SN of the origin node A is not updated, the TTL subtraction unit 142 performs a subtraction process (16) for subtracting one TTL of the origin node A stored in the TTL 144.
  • the node devices B to E rewrite the cluster identifier (CID) of their own cluster information 128 to “B” which is the identifier of the node device B, and the origin node of the cluster to which it belongs Is the node device B, the information on the node device A is deleted from the cluster information 128, and the node device A is disconnected (17).
  • CID cluster identifier
  • the state of cluster A before the failure of the participating node is shown in FIG.
  • Node device A node device with identifier NID A
  • FIG. 43 is a diagram showing a topology after a failure occurs in a participating node D and a cluster autonomous repair process is performed in a cluster of an ad hoc network using the above-described node device 10 as each node device.
  • the node device D in which the failure has occurred and the node device E arranged on the opposite side of the node device D with respect to the origin node A are separated from the cluster.
  • FIG. 44 shows a state in which the node device E that has become a free node then becomes a starting node itself and performs cluster generation processing ( ⁇ ) or is taken into another cluster ( ⁇ ).
  • the node device E increments (counts up) the sequence number (SN) of the node device E (own node) in its own cluster information 128, and a Hello packet (a) is transmitted based on this information.
  • CI cluster information
  • CI: ⁇ CID, ⁇ NID ⁇ , end> ⁇ A, ⁇ A, 1>, ⁇ B, 1>, ⁇ C, 1>, ⁇ D, 1>, ⁇ E, 2> ⁇ , false> Is stored.
  • the node device D that has received the Hello packet (a) performs update processing (1) for updating the sequence number (SN) of the node device E stored in its own cluster information 128.
  • the node device D increments (counts up) the sequence number (SN) of the node device D (own node) of its own cluster information 128, and transmits a Hello packet (b) based on this information.
  • the sequence numbers (SN) of the node equipment D and the node equipment E are counted up (updated by +1).
  • the node device D is that a fault (2) occurs.
  • the node device C performs an update process (3) for updating the sequence numbers (SN) of the node devices D and E stored in its own cluster information 128.
  • the node device C increments (counts up) the sequence number (SN) of the node device C (own node) of its own cluster information 128, and transmits a Hello packet (c) based on this information.
  • the node device B Upon receiving the Hello packet (c), the node device B performs an update process (4) for updating the sequence numbers (SN) of the node devices C to E stored in its own cluster information 128.
  • the node device B increments (counts up) the sequence number (SN) of the node device B (own node) in its cluster information 128 by one, and transmits a Hello packet (d) based on this information.
  • the origin node A that has received the Hello packet (d) resets the TTL of the node devices B to E stored in its own TTL 144, and the node devices B to E stored in its own cluster information 128.
  • the update process (5) for updating the sequence number (SN) is performed.
  • the originating node A increments (counts up) the sequence number (SN) of the node device A (own node) of its own cluster information 128, and transmits a Hello packet (e) based on this information.
  • the node device B that has received the Hello packet (e) from the origin node A resets the TTL of the origin node device A stored in its own TTL 144 and the node device stored in its own cluster information 128 updating process for updating the a sequence number (SN) performing (6).
  • Node device B increments (counts up) the sequence number (SN) of node device B (own node) in its cluster information 128 by one, and transmits a Hello packet (f) based on this information.
  • the node device C that has received the Hello packet (f) from the node device B resets the TTL of the originating node device A stored in its own TTL 144, and the node device stored in its own cluster information 128 Update processing (7) for updating the sequence numbers (SN) of A to B is performed. Then, the node device C increments (counts up) the sequence number (SN) of the node device B (own node) in its own cluster information 128, and transmits a Hello packet (g) based on this information.
  • the Hello packet (g) sent from the node device C does not reach the node device D due to a failure.
  • the node device E performs transmission processing of the Hello packet, and updates the sequence number (SN) of the node device E (own node) stored in its own cluster information 128 by one (counts up).
  • Node device C increments (counts up) the sequence number (SN) of node device C (own node) in its cluster information 128 by one, and transmits a Hello packet (h) based on this information.
  • the node device B receives the Hello packet (h), the node device B performs an update process (10) for updating the node device C stored in its own cluster information 128. Then, the node device B increments (counts up) the sequence number (SN) of the node device B (own node) of its own cluster information 128, and transmits the Hello packet (i) based on this information.
  • the originating node A that has received the Hello packet (i) performs an update process for updating the sequence numbers (SN) of the node devices B to C stored in its own cluster information 128. Further, since the sequence numbers (SN) of the participating node devices D to E are not updated, the TTL subtracting unit 142 subtracts the TTLs of the participating node device D and the node device E stored in its own TTL 144 one by one. A subtraction process (11) is performed.
  • the TTLs of the node device D and the node device E stored in the TTL 144 of the origin node A are both “0” (12).
  • the origin node A deletes the information about the node apparatus D and the node apparatus E from the client information 128 when the TTLs of the node apparatus D and the node apparatus E stored in the TTL 144 of the origin node A both become “0”.
  • the change process (13) is performed.
  • the origin node A transmits a Hello packet (j).
  • CI Cluster information
  • the node device B performs an update process (14) of its own cluster information 128 and transmits a Hello packet (k).
  • the originating node C that has received the Hello packet (i) performs an update process (15) of its own cluster information 128.
  • the node device E that has become a free node then becomes its own node and performs cluster generation processing ( ⁇ ) or is taken into another cluster ( ⁇ ).

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

 複数のノード装置を含むネットワーク中のノード装置は、クラスタに含まれ、前記ノード装置自身とは異なる第1のノード装置に対して整数値として定義され、所定のデフォルト値を有するTTL値を格納するTTL格納部と、前記第1のノード装置に対して定義され、前記第1のノード装置が前記経路情報の通知に用いられるハローパケットを送信するごとにカウントアップされるシーケンス番号を含む前記第1のノード装置が異なるタイミングで送信する第1および第2のハローパケットを受信する受信部と、前記受信部によって受信された前記第1のハローパケットおよび前記第2のハローパケットに含まれている前記第1のノード装置に対する第1のシーケンス番号および第2のシーケンス番号が互いに一致するかどうかを判定するシーケンス番号判定部と、第1のシーケンス番号と第2のシーケンス番号が同一であるとき、前記TTL格納部に格納されているTTL値を減らす処理を行うTTL減算部と、前記第1のノード装置に対するTTL値が所定の値以下になったとき、前記第1のノード装置の識別子を前記クラスタ情報格納部から削除することによって、前記第1のノード装置を前記クラスタから切り離すクラスタ情報更新部と、 を含むことを特徴とする。

Description

ノード装置および通信方法
 本発明は、複数のノードを含むネットワークで用いられるネットワーク装置および通信方法に関する。
 アドホックネットワークシステムでは、アドホックネットワーク通信端末(ノード装置、または単にノードとも呼ばれる)同士が自律的にネットワーク接続し、相互の通信を可能としている。「自律的に」という言葉は、使用者によって随時通信経路を設定したり、サーバやルータの通信管理を行う専用の通信端末やインフラを必要としない、ということを意味する。
 アドホックネットワークのルーティングプロトコル(アドホックプロトコル)には、リアクティブ型のAdhoc On Demand Distance Vector Algorithm(AODV)やプロアクティブ型のOptimized Link State Routing(OLSR)が知られている。
 AODVでは、経路探索にブロードキャストを用いて、他の通信ノード装置がブロードキャストを繰り返し、目的のノード装置への経路を発見する手法である。通信ノード装置は、目標とする経路を発見するために周囲に「Route Request(RREQ)」というパケットを送出する。このパケットには、検出目標の通信ノードIDが明記されている。
 周囲の通信ノード装置は、自身を検索していない場合は、新たにRREQパケットを作成して、周囲へのブロードキャストを繰り返し行う。このとき各通信ノード装置は、送り先のメッセージが、隣接するどの通信ノード装置から受信されたものなのかを記録する。RREQメッセージが目的の通信ノードに達したとき、その目的の通信ノード装置は、「Route Reply(PREP)」パケットを作成し、送り元のノードに対して、RREQパケットが送られてきた経路を辿るようにしてPREPを送信する。こうすることによって、双方向の通信経路が作成される。
 OLSRでは、通信ノード装置同士が定期的にパケットを交換し合うことで、ネットワーク全体を把握し、目的の通信ノードまでの経路を検出する。通信ノード装置は、周期的にHelloパケットを送出し、互いにその存在を通知し合う。通信相手となる通信ノード装置の存在が判明したところで、次に効率的にネットワーク全体にパケットを配信するための、Multi Point Reley(MPR)と呼ばれるフラッディング用のパスを生成する。MPRにより、各通信ノード装置から効率よくパケットをネットワーク全体へブロードキャストすることができる。次にこのMPRを用いて、経路生成メッセージであるTechnology Control(TC)パケットをノード装置同士が互いに配信することで全ノード装置がネットワークトポロジーを知ることができる。パケットを目標とする通信ノード装置に送るには、送信元となる通信ノード装置自信が知っているネットワークトポロジーを参照し、送るべき隣接通信ノード装置にパケットを渡す。隣接ノードも同様に処理を行う、最終的に目標ノード装置にパケットを配信する。
 無線アドホックネットワークに属するノード装置は、ルーティング情報を伝播させるためにHelloパケットを用いる。
 たとえば、アドホックネットワークは、ノード装置Aとノード装置Bを含むとする。ノード装置Aは、自身が保持しているルーティング情報を含むHelloパケットを生成し、周期的にブロードキャストする。Helloパケットを受信したノード装置Bは、ノード装置Bが保持しているルーティング情報と、Helloパケットに含まれている情報を比較し、ノード装置Bが保持していなかったルーティング情報をHelloパケットから取得する。さらに、ノード装置Bは、Helloパケットから経路の品質情報も取得し、なるべく品質の良い経路を用いて通信を行う。このようにアドホックネットワークに属するノード装置は、Helloパケットを用いて、ネットワークに含まれている他のノード装置への経路情報を学習し、最適経路を推測する。そして、推測された最適経路を用いて通信を行う。アドホックネットワークに含まれている各ノード装置は、アドホックネットワーク中の他の全てのノード装置までの経路をルーティングテーブル中に保持する。たとえば、ノード装置Aは、アドホックネットワーク中のノード装置A以外のノード装置の各々への経路情報をルーティングテーブルに保持する。このため、ノード装置Aは、たとえば、ノード装置Bを介してノード装置Cにデータパケットを送信することができる。このようなノード装置は、パケットの最終宛先ごとに中継先とするノードについての重み情報を格納する重み付けテーブルを備えることもある。この場合、ノード装置は、パケットを転送する際に、パケットの宛先ノードに対応する重み付けテーブルを参照して、パケットを中継するために宛先とするノードを特定する。
 しかし、各ノード装置がアドホックネットワーク中の他の全てのノード装置までの経路をルーティングテーブル中に保持する方法では、ネットワーク中のノード装置の数が増加すると、ルーティングテーブルのサイズが大きくなる。そこで、ネットワーク中のノード装置をクラスタに分け、各ノード装置が同一のクラスタ内のノード装置までの経路情報をルーティングテーブルに格納する方法が知られている。
 ネットワーク中のノード装置からクラスタを生成する際に、制御パケットを用いる方法がある。たとえば、経路情報に基づいて各ノード装置が属するクラスタを決定し、クラスタに参加するときとクラスタから離脱するときに、制御パケットを送受信する。一般に、クラスタを形成する際には、クラスタ内のノードの数が所定の値を超えると、別のクラスタを生成する。
 また、制御パケットではなくHelloパケットを用いる方法も知られている。
特開2011-193341
 アドホックネットワークシステムでは、運用中にクラスタ内のノードにハード故障、電波障害、電力停止等の障害が発生した場合、クラスタの機能障害を復旧する手段がないという問題がある。たとえば、クラスタ生成機能、クラスタ統合機能を正常に継続できないという問題がある。クラスタの機能障害が継続するとネットワーク全体でクラスタの数が増加し、ルーティング時のクラスタを跨ぐ数が多くなることから処理リソースを多く必要とし、スループットが低下するという問題がある。
 よって、クラスタ生成中に起点ノード(ゲートウェイ)や参加ノードで障害が発生した場合に、クラスタ統合ができないケースが発生しても、各ノードが自律分散的に動作し、クラスタの自律再生、自律修復を行なうことができるノード装置が望まれている。
 複数のノード装置を含むネットワーク中のノード装置は、複数のノード装置を含むネットワーク中のノード装置であって、前記ネットワーク中の前記複数のノード装置の中で、前記ノード装置が前記ネットワーク中の情報伝達のための経路に関する経路情報を記憶するノード装置のグループであるクラスタに含まれるノード装置と、前記クラスタの起点となる起点ノードに関する情報を格納するクラスタ情報格納部と、前記クラスタに含まれ、前記ノード装置自身とは異なる第1のノード装置に対して整数値として定義され、所定のデフォルト値を有するTTL値を格納するTTL格納部と、前記第1のノード装置に対して定義され、前記第1のノード装置が前記経路情報の通知に用いられるハローパケットを送信するごとにカウントアップされるシーケンス番号を含む前記第1のノード装置が異なるタイミングで送信する第1および第2のハローパケットを受信する受信部と、前記受信部によって受信された前記第1のハローパケットおよび前記第2のハローパケットに含まれている前記第1のノード装置に対する第1のシーケンス番号および第2のシーケンス番号が互いに一致するかどうかを判定するシーケンス番号判定部と、前記シーケンス番号判定部における判定で、第1のシーケンス番号と第2のシーケンス番号が同一であるとき、前記TTL格納部に格納されているTTL値を減らす処理を行うTTL減算部と、前記第1のノード装置に対するTTL値が所定の値以下になったとき、前記第1のノード装置の識別子を前記クラスタ情報格納部から削除することによって、前記第1のノード装置を前記クラスタから切り離すクラスタ情報更新部と、を含むことを特徴とする。
 クラスタ生成中に起点ノード(ゲートウェイ)や参加ノードで障害が発生した場合に、クラスタ統合ができないケースが発生しても、各ノードが自律分散的に動作し、クラスタの自律再生、自律修復を行なうことができる。
クラスタが形成されたアドホックネットワークの例を示す図である。 クラスタ生成中に起点ノードで障害が発生した場合に起こる不具合を説明する図である。 段階的にクラスタを形成するクラスタ形成処理の概略を説明する図である。 クラスタ統合中に起点ノードで障害が発生した場合に起こる不具合を説明する図である。 クラスタ統合中に参加ノードで障害が発生した場合に起こる不具合を説明する図である。 クラスタ統合中に参加ノードで障害が発生した場合に起こる別の不具合を説明する図である。 ノード装置の構成の例を示す機能ブロック図である。 Helloパケットのフォーマットの例を示す図である。 クラスタ内のノード監視処理の概略を説明する図である。 ノード監視処理に伴ってブロードキャストされる第1のHelloパケットの例を示す図である。 起点ノードおよび参加ノードのTTLの例を示す図である。 クラスタの自律再生処理の概略を説明する図である。 クラスタの自律再生処理に伴うクラスタ情報(CI)の変化の例を説明する図である。 クラスタの自律再生処理に伴う起点ノードおよび参加ノードのTTLの変化の例を説明する図である。 クラスタの自律再生処理に伴うクラスタ情報(CI)の変化の別の例を説明する図である。 クラスタの自律修復処理の概略を説明する図である。 クラスタの自律修復処理に伴うクラスタ情報(CI)の変化の別の例を説明する図である。 起点ノードのTTLの例を示す図である。 クラスタの自律修復処理に伴ってブロードキャストされるHelloパケットのクラスタ情報(CI)フィールドの例を示す図である。 参加ノードのTTLの例を示す図である。 クラスタ統合優先順位決定処理の概略を説明する図である。 クラスタ統合先候補通知処理の概略を説明する図である。 クラスタ統合要求通知処理の概略を説明する図である。 クラスタ統合要求受付処理の概略を説明する図である。 クラスタ統合完了処理の概略を説明する図である。 ノード装置の構成の例を示す機能ブロック図である。 ノード種別判定部での処理の流れの例を示すフローチャートである。 参加処理部での処理の流れの例を示すフローチャートである。 クラスタ情報更新処理での処理の流れの例を示すフローチャート(その1)である。 クラスタ情報更新処理での処理の流れの例を示すフローチャート(その2)である。 クラスタ生成部での処理の流れの例を示すフローチャートである。 フリーノードリスト生成部での処理の流れの例を示すフローチャートである。 クラスタ統合先候補通知部での処理の流れの例を示すフローチャートである。 クラスタ統合要求受付部での処理の流れの例を示すフローチャートである。 クラスタ統合要求更新部での処理の流れの例を示すフローチャートである。 クラスタ統合リスト生成部での処理の流れの例を示すフローチャートである。 クラスタ統合処理部での処理の流れの例を示すフローチャートである。 クラスタ統合リスト通知部での処理の流れの例を示すフローチャートである。 クラスタ統合リスト通知部での処理の流れの別の例を示すフローチャートである。 TTL減算部での処理の流れの例を示すフローチャートである。 クラスタ自律再生、修復処理前のネットワークのトポロジーの例を示す図である。 クラスタ自律再生処理後のネットワークのトポロジーの例を示す図である。 クラスタ自律再生処理の処理シーケンスの例を示す図である。 クラスタ自律修復処理後のネットワークのトポロジーの例を示す図である。 クラスタ自律修復処理後のフリーノードの動作の概略を示す図である。 クラスタ自律修復処理の処理シーケンスの例を示す図である。
 以下では、図面を参照しながら、自身が属するクラスタ内のノード装置を監視して、クラスタ内のノード障害を検出した場合、各ノード装置が自律分散的に動作することで、クラスタの自律再生または自律修復を行うことができるアドホックネットワークのノード装置100について説明する。
 ノード装置100は次のような構成を有する。すなわち、ノード装置100は、自身のシーケンス番号を管理し、自身がHelloパケットを送信するときに加算していく。またノード装置100は所定の周期で受信した、自身が属するクラスタ内の自身以外のノード装置のシーケンス番号をクラスタ情報として管理する。そして、Helloパケットの周期ごとにシーケンス番号をチェックし、変化がない場合には、「TTL(Time To Live)」として管理する値を減算し、変化がある場合には「TTL」の値を初期値にリセットする。TTLの値が0になった場合、そのノードに障害が発生したと判断する。TTLが0になったノード装置は、クラスタから切り離され、その後、クラスト自律再生処理、または自律修復処理を行なうことで、クラスタ同士の統合処理ができない状況を回避することができる。
 図1を用いて比較例を説明した後、図2~45を参照して、ノード装置10の構成および動作について説明する。
<比較例>
 図1は、クラスタが形成されたアドホックネットワークの例を示す図である。図1では、図中で1~50のID番号で指定される50個のノード装置N1~N50を含んでいる。ノード装置のことを単に、「ノード」と呼ぶこともある。各ノードに付与された番号をノードIDとも呼ぶ。これらのノード装置のうち互いに隣接するノード装置は実線で結ばれている。また、ノードIDが数字xで指定される場合、そのノード装置を単にノード装置Nx、またはノードNxを呼ぶことがある。またノードIDが数字以外の記号yで指定される場合、そのノード装置を単にノード装置y、またはノードyと呼ぶことがある。また、ノードIDをNIDと略記することがある。
 ここで、「隣接する」とは、複数のノード装置が互いにパケットを送受信できる距離に位置することを指す。特に、互いにパケットをホップ数=1で送受信できる距離に位置するノード装置を、隣接するノード装置を呼ぶことがある。2つのノード装置が隣接しているとき、これら2つのノード装置は「リンク」で結ばれているという。また、あるノード装置から送信されたパケットを受信できる範囲に位置するノード装置のことを、そのノード装置の「隣接ノード装置」または「隣接ノード」と呼ぶことがある。
 各ノード装置の例としては、センサが挙げられる。このとき、アドホックネットワークは、センサネットワークとも呼ばれる。リンクによるノードの接続は有線であっても無線であっても良い。
 各ノード装置は、それぞれ固有の識別情報(Identification、ID)を保有する。ノードIDは、MACアドレスでも良いし、MACアドレスとは無関係に付与されたアルファベット、数字を含む記号でもよい。各ノード装置は、ネットワーク内でどのノード装置が互いに隣接しているのかに関する情報や、ノード装置間の通信の状態などの情報や、ネットワーク全体についての情報を必ずしも把握していない。そこで、各ノードは、自分自身がどのように他のノードと接続されているかを知るために、隣接ノードとの間で、たとえばHelloメッセージのような、経路情報やノード間のリンクの通信品質情報といったノード情報を含むメッセージの送受信を定期的に行う。Helloメッセージは、たとえば数秒間隔で各ノードから送信される。そのようなメッセージの遣り取りから、最終宛先までの経路の探索や各経路の通信品質を計算し、その結果をもって最終宛先までの複数の経路の構築及び最適な経路の決定を行う。つまり、Helloメッセージには、メッセージを送信するノードと隣接するノード間の経路情報およびノード間リンクの通信品質情報等のノード情報が含まれている。たとえば、あるノード装置から送信されたHelloパケットは、送信元のノード装置の隣接ノード装置で受信される。Helloパケットは、ネットワークの経路情報を通知するために用いられる。
 図1に示されている例は、クラスタのノード数が10を超えると、新しいクラスタを生成する方法を用いて形成されたものである。この場合、ネットワーク全体でクラスタ数を最小にしようとすれば、ノード装置を50/10=5個のクラスタに分けることが可能である。しかしながら、図1では、C1~C8の8個のクラスタで形成されてしまっている。
 クラスタC1~C8はそれぞれ、クラスタヘッドN1、N13,N25、N30、N35、N38,N44、N46を含んでいる。また、クラスタC1は、ノード装置N1~N10を含んでいる。クラスタC2はノード装置N11~N20を含んでいる。クラスタC3はノード装置N21~N25を、クラスタC4はノード装置N26~N30を含んでいる。クラスタC5はノード装置N31~35を、クラスタC6はノード装置N36~N39を含んでいる。クラスタC7はノード装置N41~N45を、クラスタC8はノード装置N46~N50を含んでいる。
 ここで、「クラスタヘッド」とは、クラスタの生成を開始するノード装置であり、クラスタヘッド自身を含むクラスタの生成の起点となるノード装置である。クラスタヘッドを「起点ノード」または「ゲートウェイ(GW)」と呼ぶこともある。
 たとえば、ID番号1のノード装置N1がクラスタ生成を開始するとする。この時点でノード装置N2からノード装置N50は、いずれのクラスタにも属していないものとする。このように、どのクラスタにも属していないノード装置のことを「フリーノード」と呼ぶことがある。
 起点ノードは、生成しているクラスタの識別子(図1では、C1、C2、...、C8など)とそのクラスタに参加しているノード装置の識別子(図1のクラスタC1であればノード装置を示すID番号1~10など)を含むHelloパケットをブロードキャスト送信する。フリーノードは、起点ノードから送信されたHelloパケットにより生成中のクラスタの識別子を認識する。フリーノードがクラスタに参加する場合、参加するクラスタの識別子と自身の識別子を対応付けた情報を含むHelloパケットを生成し、生成したHelloパケットをブロードキャスト送信する。たとえば、ノード装置N1が起点ノードとなって、クラスタを生成する場合を考える。ノード装置N2からノード装置N50はまだフリーノードであるとする。図1では、ノード装置1に隣接するノード装置2、ノード装置N3、ノード装置N4、ノード装置N6、ノード装置N7は、起点ノードであるノード装置N1から送信されたHelloパケットを受信することにより、クラスタC1が生成中であることを認識する。ノード装置N2、N3、N4、N6、N7はクラスタに属していないフリーノードであるので、生成中のクラスタC1の識別子を認識すると、クラスタC1に参加することを決定する。図1のノード装置N2がクラスタC1に参加する場合、参加するクラスタの識別子C1と自身の識別子N2を対応付けた情報を含むHelloパケットを生成し、生成したHelloパケットをブロードキャスト送信する。
 起点ノードN1は、生成中のクラスタC1の識別子に対応付けてノード装置の識別子が通知されると、クラスタC1への参加の要求を受信したと認識する。そこで、起点ノードであるノード装置N1は、受信したHelloパケットにより、生成中のクラスタC1に参加するノード装置を認識し、認識したノード装置をクラスタに加える。クラスタに加えられたノード装置は、そのノード装置がクラスタに加えられたことを、起点ノードからのHellowパケットによって確認する。クラスタに参加しているノード装置を「参加ノード」と呼ぶことがある。参加ノードは、参加しているクラスタの識別子を含むHelloパケットをブロードキャスト送信する。フリーノードは、参加ノードで生成されたHelloパケットから生成中のクラスタの識別子を認識すると、上述の手順によってクラスタに参加する。これらの処理は、クラスタに含まれるノード装置の数が閾値に達するまで繰り返される。
 図1では、Helloパケットによってクラスタの生成に用いられる情報を送受信し、クラスタに含まれるノード装置の数が閾値すると別のクラスタを生成するという方法によりクラスタC1~C8が生成される。
 図1のクラスタC1は、ノード装置N1を起点ノードとし、ノード装置N2からノード装置N50がフリーノードの状態から、クラスタに含まれるノード装置の数の閾値が10のときに生成されたクラスタである。
 クラスタに含まれるノード装置の数が閾値に達すると、起点ノードは、新たなクラスタの生成を要求する情報(生成情報)を含むHelloパケットをブロードキャスト送信する。生成要求を受信した参加ノードは、受信した生成要求を含むHelloパケットを生成し、ブロードキャスト送信する。生成要求を含むHelloパケットを受信したフリーノードは、新たな起点ノードとして動作し、クラスタの生成を開始する。図1では、ノード装置N13、N30、N35、N38がそれぞれ、クラスタC2、C4、C5、C6の生成を開始する。クラスタの生成が始まった以後の手順は、クラスタC1の生成の手順と同じである。クラスタが生成されると、各ノード装置は、同一のクラスタ内の他のノード装置に至る経路をルーティングテーブルに格納する。
 このようにクラスタを形成することにより、各ノード装置は、アドホックネットワークに含まれる全てのノード装置までの経路を格納する必要がない。よって、各ノード装置のルーティングテーブルの大きさは、アドホックネットワークがクラスタに分割されていない場合に比べて小さくなる。このため、各ノード装置において、経路情報を格納することにより生じる負荷の大きさも軽減される。また、クラスタの形成に用いられる情報は、Helloパケットによって送受信されるので、他のパケット、たとえば制御パケットを用いる場合に比べてクラスタを生成するために行われる情報の送受信による帯域の消費量は少ない。
 しかしながら、図1の例では、ハード故障、電波障害、電力停止など運用中にクラスタ内のノード装置に障害が発生した場合、クラスタの機能障害を復旧する手段がないという問題がある。クラスタの機能には、たとえば、クラスタ生成機能、クラスタ統合機能が含まれる。クラスタ生成機能とは、起点ノードが他のノード装置を取り込んで、第1段階が終了するまでクラスタを成長させる機能を指す。また、クラスタ統合機能とは、複数のクラスタが統合して一つのクラスタを生成する機能を指す。
 図2を参照して、クラスタ内のノード装置に障害が発生した場合の例を説明する。
 図2は、クラスタ生成中に起点ノードに障害が発生し、クラスタに参加できないノードが発生した状況を説明する図である。
 クラスタAは、ノード装置A、B、Cを含んでいる。クラスタAの周囲には、ノード装置Dとノード装置Eが存在する。これらはフリーノードであり、クラスタAに参加をしたがっている。しかしながら、ノード装置DからクラスタAへの参加を要求するHelloパケットを受信したクラスタA中のノード装置Cは、その旨を起点ノードであるノード装置Aに伝達しようとしても起点ノードであるノード装置Aに障害が発生し、ノード装置DはクラスタAに参加できない様子を示している。同様に、ノード装置EからクラスタAへの参加を要求するHelloパケットを受信したクラスタA中のノード装置Bも、その旨を起点ノードであるノード装置Aに伝達しようとしても起点ノードであるノード装置Aに障害が発生し、ノード装置EはクラスタAに参加できない。
<全般的な説明>
 そこで、開示される実施形態に関するアドホックネットワークのノード装置は、クラスタ内の各ノード装置が相互にクラスタ内のノード装置を監視して、クラスタ内のノード障害を検出した場合、各ノード装置が自律分散的に動作することで、クラスタの自律的な再生(自律再生)、自律的な修復(自律修復)を行うことができる。また、クラスタ内のノード監視、クラスタの自律再生、及び、クラスタの自律修復は、通常定期的に送信するHelloパケットの交換のみで行うため、制御パケットによる方法よりネットワーク負荷をかけずに実施できる。その結果、本来のクラスタ化によるネットワーク負荷の軽減、省メモリ化を損なうことなく実現でき、クラスタ機能の継続、常に適正なクラスタの状態を保持、構成することで、ネットワークのスループットを安定させることが可能になる。
 自律再生および自律修復を行うために、実施形態のノード装置は、次のような機能を含む。
(F1)ノード装置が起点ノードである場合、ノード装置はクラスタ内の全参加ノードを監視し、全参加ノード装置のTTL(Time To Live)を保持、管理する。
(F2)ノード装置が参加ノードである場合、ノード装置はクラスタ内の起点ノードを監視し、起点ノードのTTLを保持・管理する。
(F3)各ノード装置は、自身のノード装置(以下、自ノードと呼ぶことがある)のシーケンス番号(Sequence Number:SN)を管理し、Helloパケットの送信毎に、カウントアップ(SNの現在値に1を加算)する。
(F4)TTLはノード装置毎にホップ数による距離、Helloパケットの到達間隔による品質等からなる重み付けに連動した可変値を設定する。
(F5)各ノード装置は、クラスタ情報(CI)に各ノード装置のシーケンス番号(Sequence Number:SN)を保持し、Helloパケット受信時に更新する。(F6)各ノード装置は、自ノードが保持しているクラスタ情報(CI)をHelloパケットにて伝播する。
(F7)自ノードが起点ノードの場合、監視対象である参加ノードのSNが更新された時、対応する参加ノードのTTLをリセットする。
(F8)自ノードが参加ノードの場合、監視対象ノード装置の中の起点ノードのSNが更新された時、対応する起点ノードのTTLをリセットする。
(F9)各ノードは、保持・管理しているTTLを、一定周期で、たとえばHelloパケット送信毎に、減算する。
(F10)自ノードが起点ノードの場合、監視対象である参加ノードのTTLが0、すなわちTTL=0となった時、対象ノードをクラスタ情報(CI)から削除する。
(F11)自ノードが参加ノードの場合、監視対象ノード装置の中の起点ノードTTLが0、すなわちTTL=0となった時、クラスタ内のノード数が一定数以上(たとえば、クラスタに含み得るノード数(最大クラスタノード数)の50%以上であれば、クラスタを識別する識別子(CID)をクラスタ内のノード装置の一つを選択し、そのノード装置の識別子(NID)に書き換える。このとき選択されるノード装置としては、ノード装置の識別子を数字で表したとき、ノード装置の識別子の数が最も小さいものであっても良い。この結果、新たなクラスタIDにてクラスタは再生される。
(F12)自ノードが参加ノードの場合、監視対象ノード装置の中の起点ノードのTTLが0、すなわちTTL=0となった時、クラスタ内のノード数が一定数以上(たとえば、クラスタに含み得るノード数(最大クラスタノード数)の50%未満であれば、クラスタ情報(CI)をクリアすることで自律的にクラスタ解放し、フリーノードになる。そしてフリーノードとしてクラスタ参加、またはクラスタ生成を行う。
 このように、各ノード装置は自身のシーケンス番号(SN)を管理し、自身がHelloパケットを送信するときに加算していく。各ノード装置は所定の周期で受信した各ノード装置のシーケンス番号(SN)をクラスタ情報(CI)として管理する。たとえば、Helloパケットの周期ごとにシーケンス番号(SN)をチェックし、変化がない場合には、TTL(Time To Live)として管理する値を減算し、変化がある場合、すなわち増加する場合にはTTLの値を初期値にリセットする。TTLの値が0になった場合、そのノードに障害が発生したと判断する。
 そして、クラスタの生成中に起点ノード(ゲートウェイ、クラスタヘッド)や参加ノードで障害が発生した場合に、各ノードが自律分散的に動作し、クラストの自律再生、自律修復を行なうことで、クラスタの生成を継続することができる。
 さらに、障害が発生したノード装置が属するクラスタのサイズが大きい(クラスタに含まれるノード装置が多い)場合は、クラスタを解散して再構築を行うと、解散前の参加ノードでクラスタ生成できる可能性は高い。しかしながら、ノード装置の数が多いことからクラスタの生成に時間がかかる。このことから、クラスタのサイズが大きい場合は、クラスタの解散は行わず、起点ノードだけを変更して別のクラスタとしたほうが効率が良い。
 一方、クラスタサイズが小さい(クラスタに含まれるノード装置が多くない)場合は、クラスタを解散して参加ノードがフリーノードとなっても、周囲のクラスタに取り込める可能性が高い。そこで、障害が発生したノード装置を含むクラスタを解消して、参加していたノード装置がフリーノードとなることでクラスタ数を減らすことができる。
 上記機能(F11)および(F12)を有するために、アドホックネットワークのノード装置は、複数のノード装置が集まったとき、第1段階のクラスタ生成処理と第2段階のクラスタ統合処理の2段階でクラスタを生成するように構成される。2段階でクラスタを形成するクラスタ形成処理の第1段階を「クラスタ生成処理」、クラスタ形成処理の第2段階を「クラスタ統合処理」と呼ぶ。ネットワーク中のクラスタの起点ノードで障害が発生した後の「クラスタ生成処理」または「クラスタ統合処理」を「クラスタ自律再生処理」と呼ぶ。また、ネットワーク中のクラスタの参加ノード、すなわち起点ノードではないノード装置で障害が発生した後の「クラスタ生成処理」または「クラスタ統合処理」を、「クラスタ自律再生処理」と呼ぶ。
 ノード装置に障害が発生した場合、障害が発生したノード装置が属するクラスタのノード装置の数が最大クラスタノード数の所定の割合以上であれば、障害が発生したノード装置が属するクラスタは、クラスタ統合処理を実施する。一方、障害が発生したノード装置が属するクラスタのノード装置の数が最大クラスタノード数の所定の割合より小さければ、クラスタを解消してクラスタ生成処理を行う。
 また、アドホックネットワークのノード装置は、ネットワークを形成するノード装置に障害が発生しなくても、クラスタを2段階で形成する。
 図3は段階的なクラスタ形成処理の概略を説明する図である。図3の(A)は、段階的にクラスタを形成するクラスタ形成処理の第1段階であるクラスタ生成処理の結果の例を説明する図、図3の(B)は、クラスタ形成処理の第2段階であるクラスタ統合処理の概略を説明する図、そして、図3の(C)は、クラスタ形成処理の第2段階であるクラスタ統合処理の結果の例を説明する図である。
 以下では、クラスタ生成処理、第2段階を含めて複数のノード装置からクラスタを作る処理を「クラスタ形成」、クラスタ統合処理で起点ノードが他のノード装置を取り込んで、第1段階が終了するまでクラスタを成長させる処理を「クラスタ生成」と呼ぶことがある。
 図3の(A)に示されているように、第1段階では、クラスタのノード数の上限が、最大クラスタノード数の所定の閾値以下となるように、例えば最大クラスタノード数の50%以下となるようにクラスタを生成、成長させるクラスタ生成処理を行う。第1段階終了時でのクラスタノード数を暫定的最大クラスタノード数と呼ぶことがある。つまり、クラスタのノード数が最大クラスタノード数に届かず、クラスタの成長の余地がある場合も、あえてクラスタを成長させない。第1段階の終了の時点で、ルーティングテーブルが最大クラスタノード数のノード装置に関する情報で埋められていない。したがって、ルーティングテーブルの埋められていない部分に格納可能なノード装置の数以下のノード装置を含むクラスタと統合する、またはノード装置を加えることができる。その後、第1段階で生成されたクラスタを統合するクラスタ統合処理を行う第2段階に移る。第1段階のクラスタ成長処理は、後述のように、Helloパケットの交換のみで行なわれる。
 第1段階では、ネットワークのノード装置は、Helloパケットの送受信により隣接するノード装置を認識した後、クラスタヘッド(起点ノード)を中心にフリーノードを取り込み、クラスタ内のノード数を増やしていく。クラスタ内のノード数が所定の値に達した時点で、そのクラスタの成長を止める。そして、そのクラスタの周囲にいるフリーノードが起点ノードとなりクラスタを生成し、残っているフリーノードをクラスタに取り込んでいく。フリーノードが無くなるまで、クラスタの生成と成長というこれらの手続きを繰り返す。
 最大クラスタノード数に対する第1段階終了時でのクラスタのノード数(暫定的最大クラスタノード数)の割合は、クラスタの生成の速度を優先する場合は高めに、たとえば75%、80%等に設定する。また、クラスタ内のノード数(クラスタ粒度)の均一性を優先する場合は割合を低く、たとえば40%、35%等に設定する。暫定的最大クラスタノード数の最大クラスタノード数に対する割合は、上記の数値に限定されない。
 ノード装置に対してフリーノードの参加要求がなくなった時点から所定の時間だけ経過した後に、第2段階での統合処理を開始する。つまり、各ノード装置は、一定時間のインターバルを取り、そのインターバル内でクラスタに属するノード装置の数に変化が無ければ、クラスタ形成は安定したと判定し、クラスタ統合の処理へ移行する。
 クラスタ統合処理に移行したクラスタは、隣接するクラスタに統合が可能であれば、統合される。所定の時間は、クラスタのノード数に依存し、クラスタのサイズが小さければ小さいほど、すなわちクラスタが含むノード数が少なければ少ないほど、短く設定され得る。よって、小さいサイズのクラスタからクラスタ統合処理に移行するので、小さいサイズのクラスタであるほど、別のクラスタに取り込まれる可能性が高い。
 図3の(B)では、クラスタ4がクラスタ1に、クラスタ6およびクラスタ7がクラスタ3に、クラスタ8がクラスタ5に、クラスタ10がクラスタ9に統合される。第2段階でのクラスタ統合処理は、サイズが小さいクラスタから開始される。第1段階では、クラスタのノード数の上限(暫定的最大クラスタノード数)が、最大クラスタノード数の所定の閾値、例えば50%となるようにクラスタが生成されるので、サイズが小さいクラスタは自身より大きなサイズのクラスタに統合される。図3の(B)では、クラスタ数は統合前の10から5に変化する。第2段階のクラスタ統合処理も、後述のように、Helloパケットの交換のみで行なわれる。
 各ノードはクラスタ生成段階を省略しクラスタ統合段階から始めることもできる。この場合、クラスタ粒度は最少、つまりでクラスタ内のノード数は1で、各ノード装置がクラスタを構成する。この場合、全ノード装置は起動と同時にクラスタ統合処理を開始する。言い換えると、各ノードは1つのノードから形成されるクラスタの起点ノードとして機能する。
 図3の(C)では、第1段階のクラスタ生成処理の結果として生成された10個のクラスタが存在する状態から、第2段階のクラスタ統合処理の結果として生成された5個のクラスタを示している。
 このように2段階でクラスタを形成すると、クラスタ統合処理中にノード装置に障害が発生することがある。以下の説明では、起点ノードの識別子NIDがxであるクラスタをクラスタxと呼ぶ。
 障害の例を図4~6を参照しながら説明する。
 図4は、クラスタ統合処理の実施中に起点ノードで障害が発生した場合を示している。図4では、ノード装置A、B、Cを含むクラスタAと、ノード装置D、Eを含むクラスタEが統合しようとする際、クラスタEの起点ノードであるノード装置Eに障害が発生した場合を示している。この場合、ノード装置Eに、クラスタEと統合可能なクラスタの情報(たとえば、後述のクラスタ統合先候補通知に含まれる情報)が到達しないと、クラスタEはどのクラスタと統合するのか判定ができず、クラスタAとクラスタEの統合ができなくなる。
 図5は、クラスタ統合処理の実施中に参加ノードで障害が発生した場合を示している。図5では、最大クラスタノード数は10であるとする。すなわち、最終的にクラスタが含み得るノード数は10であるとする。図5に示されているクラスタAは、ノード装置A~Gの8つのノード装置を含み、クラスタJはノード装置H~Kの4つのノード装置を含んでいる。そして、ノード装置Iとノード装置Kに障害が発生するとする。すると、稼働しているノード装置の数だけを見るとクラスタAとクラスタJの統合は可能であるが、障害が発生したノード装置Iとノード装置Kを含むと最大クラスタノード数を超えるためクラスタの統合できなくなる。
 図6は、クラスタ統合処理の実施中に参加ノードで障害が発生した場合を示している。図6では、クラスタAはノード装置A~Cの3つのノード装置を含み、クラスタEはノード装置D~Fの3つのノード装置を含んでいる。そして、クラスタEのノード装置Fに障害が発生している。この場合、クラスタAからクラスタEへのクラスタ統合要求がノード装置Fに届かず、クラスタEに含まれるノード装置としてノード装置Fが登録できない。すると、クラスタA側で、クラスタEのノード装置のリストをチェックする際、本体的にクラスタEが含んでいるべきノード装置の数と、実際にクラスタE内のHelloパケットの交換によって得られるクラスタE中のノード装置の数が一致せず、クラスタ統合できなくなる。
 以下で説明するノード装置は機能(F1)~(F12)を備え、このことによって図4~6で示したような不具合を解消することができる。
<ノード装置の構成>
 以下では、上述の機能(F1)~(F12)を備えるノード装置100について説明する。
 ノード装置100は、自身(以下、自ノードと呼ぶことがある)が属するクラスタ(以下、自クラスタと呼ぶことがある)内のノード装置を監視し、自クラスタ内のノード装置の障害の発生を検出した場合、自クラスタの自律再生、自律修復をHelloパケットの送受信のみで行う手段を備えている。
 クラスタ内のノード監視、クラスタの自律再生、及び、クラスタの自律修復は、通常定期的に送信するHelloパケットの送受信のみで行うため、制御パケットによる方法よりネットワーク負荷をかけずに実施できる。その結果、本来のクラスタ化によるネットワーク負荷の軽減、省メモリ化を損なうことなく実現でき、クラスタ機能の継続、常に適正なクラスタの状態を保持・構成することで、ネットワークのスループットを安定させることが可能になる。
 図7は、ノード装置100の構成の例を示す機能ブロック図である。ノード装置100は、受信部102、ノード種別判定部104、参加処理部106、クラスタ情報更新部108、クラスタ生成部110、フリーノードリスト生成部112、クラスタ統合先候補通知部114、クラスタ統合要求受付部116、クラスタ統合要求更新部118、クラスタ統合リスト生成部120、クラスタ統合処理部122、クラスタ統合リスト通知部124、設定部136、ハローパケット生成部138、送信部140、TTL(Time To Live:寿命)減算部142を含む。さらに、ノード装置10は、ノード種別情報126、クラスタ情報128、フリーノードリスト130、マージクラスタリスト132、マージノードリスト134、TLL144を記憶する。ノード種別情報126、クラスタ情報128、フリーノードリスト130、マージクラスタリスト132、マージノードリスト134、TLL144のそれぞれと、それらが格納されるノード種別情報格納部126、クラスタ情報格納部128、フリーノードリスト格納部130、マージクラスタリスト格納部132、マージノードリスト格納部134、TLL格納部144は同じ符号で参照される。
 ノード種別情報126、クラスタ情報128、フリーノードリスト130、マージクラスタリスト132、マージノードリスト134と、それらが格納されているノード種別情報格納部126、クラスタ情報格納部128、フリーノードリスト格納部130、マージクラスタリスト格納部132、マージノードリスト格納部134は同じ符号で参照される。
 受信部102は、隣接するノード装置100から送信されたパケットを受信し、Helloパケットをノード種別判定部104に出力する。
 送信部140は、パケットを隣接するノード装置100に送信する。たとえば、送信部140は、ハローパケット生成部138で生成されたHelloパケットを隣接するノード装置に送信する。隣接する全てのノード装置にパケットを送信するとき、パケットをブロードキャスト送信するとも言う。
 図8はHelloパケットのフォーマットの例を示す図である。
 図8に示されているように、Helloパケット200は、ヘッダとペイロードを含む。
 ヘッダは、Typeフィールド、グローバル宛先(Global Destination:GD)フィールド、グローバル送信先(Global Source:GS)フィールド、ローカル送信元(Local Source:LS)、ローカル宛先(Local Destination:LD)を含む。
 ペイロードは、クラスタ情報(Cluster Information:CI)フィールド、フリーノードリスト(Free Node List:FNL)フィールド、マージノードリスト(Merge Nodc List:MNL)フィールド、マージクラスタリスト(Merge Cluster List:MCL)フィールドを含む。ペイロードはさらに、図示されていないが、Helloヘッダの数を表す情報、Helloヘッダを含む。Helloヘッダは経路情報を含む。経路情報は、Helloパケットを生成するノード装置のルーティングテーブルに経路が記憶されているGDの識別子が含まれる。
 以下、「グローバル宛先(GD)」とは、パケットの最終的な宛先のノード装置100を指す。また、「ローカル宛先(LD)」とは、パケットが1ホップ転送される場合の転送先のノード装置100を指す。「グローバル送信元(GS)とは最初にパケットを作成した発信元のノード装置100を指す。「ローカル送信元(LS)」は、パケットが1ホップ転送される場合の転送元のノード装置100を指す。Helloパケットは、送信元のノード装置100に隣接するノード装置にブロードキャスト送信される。
 Typeフィールドには、ペイロードに含まれるデータの種類を示す情報が格納される。Helloパケットの場合、TypeフィールドはHelloパケットを特定する値が格納される。受信部102は、受信したパケットのTypeフィールドに格納されている値を用いてHelloパケットを識別し、ノード種別判定部104に出力する。
 クラスタ情報(CI)フィールドには、ノード装置100自身が所属しているクラスタの識別子(Cluster Identifier:CID)と、クラスタ識別子(CID)で識別されるクラスタに含まれているノード装置の識別子(Node Identifier:NID)およびそのノード装置のシーケンス番号(SN)の組のリストと、endフラグが格納される。
 クラスタに含まれているノード装置の識別子(NID)の数は任意である。以下では、複数のノード装置の識別子(NID)とそのノード装置のシーケンス番号(SN)の組の集合を「{<NID、SN>}」と示すことがある。
 クラスタ情報(CI)フィールドに含まれるendフラグは、クラスタ識別子(CID)で識別されるクラスタに新たなノード装置100が参加できるかを示す情報である。つまり、クラスタ識別子(CID)で識別されるクラスタが最大クラスタノード数のノード装置を含んでいるかを示す情報である。endフラグは、たとえば、「true」と「false」の2つを取る。「true」および「false」は、「true」および「false」を示す数字、文字を含む記号であってもよい。endフラグが「true」の場合、クラスタが最大クラスタノード数のノード装置を含んでいるため、ノード装置10は新たにそのクラスタに参加することができない。endフラグが「true」であるクラスタ情報を有するHelloパケットは、新たなクラスタの生成を要求するための情報である生成要求として用いられる。endフラグが「false」の場合、クラスタに含まれるノードの数は最大クラスタノード数には達していないため、そのノード装置10が含まれるクラスタには、新たなノード装置が参加することができる。
 フリーノードリスト(FNL)フィールドには、ノードを参加させたいクラスタを識別するクラスタ識別子(CID)と、クラスタ識別子(CID)で識別されるクラスタに参加させたいノード装置の識別子(Node Identifier:NID)のリストが含まれる。フリーノードリスト(FNL)フィールドに格納される情報を「フリーノード情報」と呼ぶことがある。クラスタに参加させたいノード装置の識別子(NID)の数は任意である。以下では、複数のノード装置の識別子(NID)の集合を「{NID}」と示すことがある。
 マージノードリスト(Merge Node List:MNL)フィールドとマージクラスタリスト(Merge Cluster List:MCL)フィールドは、クラスタ形成の第2段階のクラスタ統合処理で用いられる。
 クラスタ統合処理で2つのクラスタが統合する際には、異なる2つのクラスタに属し、隣接する2つのノード装置Aとノード装置Bの間でHelloパケットを送受信する。本実施形態では、クラスタ識別子(CID)を数値で表現した場合、クラスタ識別子(CID)の数値が小さい方のクラスタがマスタ、もう一方がスレーブとなる。仮に、ノード装置Aをマスタ側のクラスタに属するノード装置、ノード装置Bをスレーブ側のクラスタに属するノード装置とする。
 マージクラスタリスト(Merge Cluster List:MCL)フィールドは、スレーブ側クラスタに関する情報である。マージクラスタリスト(Merge Cluster List:MCL)フィールドは、自ノード装置がスレーブ側のクラスタに属しているとき、マスタ側のクラスタに属する、隣接ノード装置の識別子(S-Identifier:SID)と、自ノード装置が属するスレーブ側のクラスタに属するノード装置の識別子(NID)を含む。マスタ側クラスタに属するノード装置はクラスタ統合先候補であり、マージクラスタリスト(Merge Cluster List:MCL)フィールドにSIDが格納されたHelloパケットは、クラスタ統合要求通知として使用される。以下では、ノード装置の識別子(NID)の集合を「{NID}」と示すことがある。
 たとえば、スレーブ側クラスタに属するノード装置Bが、マスタ側クラスタに属するノード装置AからHelloパケットを受信するとする。すると、ノード装置Bは、マスタ側のクラスタに属するノード装置の識別子(SID)として、ノード装置Aを識別する識別子を格納し、スレーブ側のクラスタに属するノード装置を識別する識別子(NID)の集合を空集合{}として、Helloパケットを生成する。そして、このように生成されたHelloパケットを、ブロードキャスト送信する。
 マージクラスタリスト(Merge Cluster List:MCL)フィールドは、スレーブ側のクラスタ内で、Helloパケットがクラスタ統合要求通知として送受信されている場合には、ノード装置Bが含まれるスレーブ側のクラスタに属するノード装置を識別する識別子(NID)の集合である。
 マージノードリスト(Merge Node List:MNL)フィールドには、マスタ側クラスタに属するノード装置がスレーブ側クラスタに属する隣接ノード装置からクラスタ統合要求通知としてのHelloパケットを受信したとき、そのHelloパケットのクラスタ情報(CI)フィールドに含まれるスレーブ側クラスタに属するノード装置の識別子と、マージクラスタリスト(Merge Cluster List:MCL)フィールド含まれるスレーブ側クラスタに属するノード装置の識別子を比較して、一致した場合に、マージクラスタリスト(MCL)フィールドのノード装置を識別する識別子(NID)の集合が移動され格納される。すなわち、マージノードリスト(MNL)フィールドには、マスタ側のクラスタと統合し得るスレーブ側のクラスタに属する全ノード装置のリストが格納される。クラスタ情報(CI)フィールドに含まれるスレーブ側クラスタに属するノード装置の識別子と、マージクラスタリスト(Merge Cluster List:MCL)フィールド含まれるスレーブ側クラスタに属するノード装置の識別子は、要素数だけを比較してもよい。(マスタ側クラスタに属する)ノード装置Aがクラスタ統合要求通知としてHelloパケットをマスタ側クラスタ内でブロードキャスト送信する際には、マージノードリスト(MNL)は、スレーブ側のクラスタに属するード装置を識別する識別子(NID)の集合である。
 設定部136は、ノード装置10をフリーノード、起点ノード、参加ノードのいずれかに設定し、ノード装置10の種別を特定する情報を、ノード種別情報126に格納する。ノード種別情報126は、ノード装置100の種別を特定する任意の形式の情報である。もし、自身が起点ノードに設定されたときには、クラスタ情報128を更新する。
 ノード種別判定部104は、受信部102からHelloパケットが転送されると、ノード種別情報126からノード装置10の種別、つまりフリーノード、起点ノード、参加ノードのいずれであるか、を取得する。ノード種別判定部104では、ノードの種別と、Helloパケット中のクラスタ情報(CI)、フリーノード情報(FNL等)、マージクラスタリスト(MCL)、およびマージノードリスト(MNL)の出力先が関連付けられている。図3に示されているように、ノード種別判定部104はノード種別情報126を参照して、クラスタ情報(CI)を、ノード装置100がフリーノードである場合には、参加処理部106に送る。また、ノード種別判定部104はノード種別情報126を参照して、クラスタ情報(CI)を、ノード装置100が起点ノードまたは参加ノードである場合にはクラスタ情報更新部108に送る。ノード種別判定部104はノード種別情報126を参照して、フリーノード情報(FNL等)を、ノード装置100が起点ノードである場合にはクラスタ生成部110に、参加ノードである場合にはフリーノードリスト生成部112に送る。同様に、マージクラスタリスト(MCL)は、ノード装置10が起点ノードである場合にはクラスタ統合要求受付部116に、参加ノードである場合にはクラスタ統合要求更新部118に送られる。マージノードリスト(MNL)は、ノード装置10が起点ノードである場合にはクラスタ統合処理部122に、参加ノードである場合にはクラスタ統合リスト通知部124に送られる。
 参加処理部106は、クラスタへの参加の要求と参加の確認を行う。参加処理部106は、ノード装置100がフリーノードである場合にHelloパケットを受信したときに、Helloパケットに含まれるクラスタ情報(CI)を受け取る。参加処理部106はクラスタ情報(CI)を受け取ると、クラスタ情報(CI)に含まれるクラスタ識別子({NID})とendフラグの内容を確認する。さらに、参加処理部106は、ノード装置10自身の装置識別子を含むエントリがフリーノードリスト130に格納されているかを確認する。ノード装置10自身が既にクラスタへの参加を要求している場合、フリーノードリスト130にノード装置100自身の識別子を含むエントリが含まれている。フリーノードリスト130にノード装置100自身の識別子を含むエントリが含まれていない場合、ノード装置10自身はクラスタへの参加を要求していない。そこで、参加処理部106は、参加が可能なクラスタ、つまりendフラグが「true」ではないクラスタに参加を要求するために、クラスタ情報(CI)に含まれるクラスタ識別子(CID)とノード装置100自身の識別子の組み合わせをフリーノードリスト130に格納する。フリーノードリスト130にノード装置100自身の識別子を含むエントリが含まれている場合、ノード装置100自身は既にクラスタへの参加を要求している。そこで、参加処理部106は、クラスタに参加できたかどうかを確認するために、クラスタ情報(CI)にノード装置10自身の識別子が含まれているかどうかを確認する。クラスタ情報(CI)にノード装置10自身の識別子が含まれている場合、参加処理部106は、ノード装置100自身はクラスタに参加できていると判定して、クラスタ情報(CI)に含まれるノード装置の識別子とシーケンス番号の組の集合({<NID、SN>})を更新する。同時に、フリーノードリスト130からノード装置10自身の識別子を削除し、そのクラスタの参加ノードになる。クラスタ情報(CI)にノード装置10自身の識別子が含まれていない場合、クラスタ情報(CI)に含まれるクラスタ識別子(CID)クラスタに参加可能かを確認するため、endフラグを確認する。
 クラスタ情報(CI)に含まれるendフラグが「true」である場合、参加処理部106は、ノード装置10自身が属するクラスタは既に最大クラスタノード数個のノード装置を含んでいるため、フリーノードリスト130のエントリを削除する。フリーノードリスト130にノード装置10自身の識別子を含むエントリが含まれていない場合にendフラグが「true」であるクラスタ情報(CI)を含むHelloパケットを受信すると、ノード装置100自身を起点ノードに指定し、ノード種別情報126を変更し、さらにクラスタ情報128を更新する。
 クラスタ情報128には、クラスタ情報(CI)のほか、最大クラスタノード数に関する情報が格納されている。
 クラスタ情報更新部108は、Helloパケットで通知されたクラスタ情報(CI)が、ノード装置100自身が属しているクラスタに関する情報であるかを確認するために、クラスタ情報(CI)に含まれているクラスタ識別子(CID)とノード装置100自身が属しているクラスタの識別子が一致するかを確認する。両者が一致する場合には、ノード装置100自身が属しているクラスタの情報が通知されているので、クラスタ情報更新部108は、クラスタ情報128をHelloパケットで通知されたクラスタ情報(CI)に基づいて更新する。さらにクラスタ情報更新部108は、フリーノードリスト130からクラスタ情報(CI)に含まれているノード装置に関するエントリを削除する。
 また、クラスタ情報更新部108は、ノード装置100自身がクラスタ情報(CI)に設定されている場合は、マージノードリスト(MNL)またはマージクラスタリスト(MCL)を比較し、必要に応じてマージクラスタリスト132、マージノードリスト134を更新する。
 さらに、クラスタ情報更新部108は、ノード種別判定部104から受け取ったクラスタ情報(CI)をクラスタ統合先候補通知部114に送る。
 クラスタ情報更新部108は、受信部102が異なるタイミングで受信した第1および第2のHelloパケットに含まれているノード装置に対するシーケンス番号が互いに一致するかどうかを判定するシーケンス番号判定部として機能する。
 クラスタ生成部110は、ノード種別判断部より受け取ったノードフリーリスト(FNL)等のノードフリー情報を処理し、必要に応じて自ノードで管理するクラスタ情報(CI)を参照、更新する。
 フリーノードリスト生成部112は、ノード種別判定部104から受け取ったフリーノードリスト(FNL)を処理し、必要に応じてノード装置100自身が管理するフリーノードリスト130を更新する。
 クラスタ統合先候補通知部114は、クラスタ情報更新部108より受け取ったクラスタ情報(CI)と自ノードで管理するクラスタ情報128を参照し、クラスタ統合の条件を満たしていれば自ノードで管理するマージクラスタリスト132を更新する。また、マージクラスタリスト132を更新する場合、自ノードが起点ノードの場合はクラスタ統合要求受付部116にマージクラスタリスト(MCL)を渡す。
 クラスタ統合要求受付部116は、ノード種別判定部104またはクラスタ統合先候補通知部114より受け取ったマージクラスタリスト(MCL)を処理し、クラスタ統合の条件を満たしていれば自ノードで管理するマージクラスタリスト132を更新する。
 クラスタ統合要求更新部118は、ノード種別判定部104より受け取ったマージクラスタリスト(MCL)を処理し、クラスタ統合の条件を満たしていれば自ノードで管理するマージクラスタリスト132を更新(スレーブ側参加ノード登録)する。また、自ノードがマスタ側対向ノードの場合は、クラスタ統合リスト生成部120へマージクラスタリスト(MCL)およびクラスタ情報(CI)を渡す。
 クラスタ統合リスト生成部120は、クラスタ統合要求更新部118より受け取ったマージクラスタリスト(MCL)およびクラスタ情報(CI)を処理し、クラスタ統合の条件を満たしていれば自ノードで管理するマージノードリスト134を更新する。
 クラスタ統合処理部122は、ノード種別判定部104より受け取ったマージノードリスト(MNL)を処理し、クラスタ統合の条件を満たしていれば自ノードで管理するクラスタ情報128を更新する。
 クラスタ統合リスト生成部120は、クラスタ統合要求更新部より受け取ったマージクラスタリスト(MCL)およびクラスタ情報(CI)を処理し、クラスタ統合の条件を満たしていれば自ノードで管理するマージノードリスト134を更新する。
 クラスタ統合リスト通知部124は、ノード種別判定部より受け取ったマージノードリスト(MNL)を処理し、必要に応じて自ノードで管理するマージノードリスト134を参照、更新する。
 ハローパケット生成部138は、Helloパケットを生成し、送信部140に送る。Helloパケットのフォーマットの例は、図4に示されている。Helloパケットは、クラスタ情報(CI)フィールド、フリーノードリスト(FNL)フィールド、マージノードリスト(Merge Node List:MNL)フィールド、マージクラスタリスト(Merge Cluster List:MCL)フィールドを含んでいる。これらのフィールドに格納される情報はそれぞれ、クラスタ情報128、フリーノードリスト130、マージノードリスト134、マージクラスタリスト132から取得される。
 TTL減算部142は、一定周期で起動され監視対象のTTLを減算する。もし自身のノード装置10がクラスタ内で起点ノードである場合、自クラスタの他のノード装置(参加ノード)のTTLが0、すなわちTTL=0になったとき、その参加ノードに関する情報をクラスタ情報(CI)128から削除する。もし自身のノード装置10がクラスタ内で参加ノードである場合、自身が属するクラスタの起点ノードのTTLが0、すなわちTTL=0になったとき、その起点ノードの識別子に関する情報をクラスタ情報(CI)128から消去(クリア)し、自身が属するクラスタ内のノード装置の数が一定の閾値以上ならクラスタの自律再生処理を、閾値未満ならクラスタの自律修復処理を行う。
<クラスタ生成、修復処理>
 以下では、図面を参照しながら、ノード装置100の動作の例を説明する。まず、ノード装置100が属するクラスタ(自クラスタ)内の監視処理について説明する。監視処理は、主にノード装置10の機能(F1)~(F9)に関連する。次に、クラスタ内の起点ノードに障害が発生した場合に実行されるクラスタ自律再生処理について説明する。クラスタ自律再生処理は、主にノード装置100の機能(F10)に関連する。次に、クラスタ内の参加ノードに障害が発生した場合に実行されるクラスタ自律修復処理について説明する。クラスタ自律再生処理は、主にノード装置100の機能(F11)~(F12)に関連する。
 図9~11を参照しながら、ノード装置100における監視処理の例を説明する。
 図9に示されているクラスタは、クラスタを識別する識別子CIDが10であり、以下ではクラスタ10と呼ぶ。クラスタ10は、ノード装置の識別子(NID)としてNID=10~14を有する5つのノード装置を含み、起点ノードはNID=10のノード装置である。
 各ノード装置は、自ノードのシーケンス番号(Sequence Number:SN)を保持する。シーケンス番号(SN)は、Helloパケットを受信する毎に更新(カウントアップ)される。また、シーケンス番号(SN)は、クラスタ情報128に格納され、ノード装置N10のシーケンス番号(SN)に関する情報は、同じクラスタに属するノード装置にHelloパケットにてブロードキャスト送信される。
 クラスタ10の起点ノードであるノード装置N10(以下単に、起点ノードN10と呼ぶことがある)は、同じクラスタ10内の他のノード装置N11~N14、すなわちノード装置の識別子NID=11~14を有する参加ノードのTTLを保持、管理する。そして、受信した参加ノード(ノード装置N11~N14)のシーケンス番号(SN)を監視し、もし更新されていれば、自ノード(起点ノードN10)で管理する、各ノード装置N11~N14のTTLをリセットする。すなわち、起点ノードN10は、クラスタ10の参加ノードN11~N14のいずれかからHelloパケットを受信すると、現在管理しているそのノード装置に対するSNとHelloパケットに含まれているシーケンス番号(SN)を比較する。現在管理しているそのノード装置に対するシーケンス番号(SN)は、前回、そのノード装置からHelloパケットを受信に伴って設定された値である。よって、そのノード装置に障害が発生していなければシーケンス番号(SN)の値は更新されているので、そのノード装置に対するTTLはリセットされ、デフォルト値に設定される。
 図10に示されているHelloパケット202は、クラスタ10に属するノード装置から送信されるHelloパケットの例である。
 Helloパケット202では、クラスタ情報(CI)フィールドに、クラスタの識別子CID=10と、クラスタ10に含まれる各ノード装置の識別子とシーケンス番号(SN)の組、およびendフラグが格納されている。Helloパケット202のクラスタ情報(CI)フィールドは次のようである。
CI:<CID、{<NID、SN>}、end>=<10、{<11、1>、<12、1>、<13、1>、<14、1>}、false>
Helloパケット202のクラスタ情報(CI)フィールドは、起点ノードN10が属するクラスタはクラスタ10であり、NID=11~14の4つのノード装置を含み、endフラグが「false」なので、クラスタ10に含まれるノード装置の数はまだ上限の値(最大クラスタノード数)には達していないことを意味している。
 図11は、起点ノードN10および参加ノードであるノード装置N11~N14のTTLの例を示す図である。図11に示されているTTLの値はデフォルト値の例である。
 起点ノードN10は、自身が属するクラスタ10の各ノードのTTLをTTL144に保持する。各参加ノードは、自身が属するクラスタ10の起点ノードN10のTTLを各ノード装置N10のTTL144に保持する。
 図11では、クラスタ10に属する全てのノード装置のTTLは22である。ノード装置のTTLが0になると、そのノード装置の識別子に関する情報はクラスタ情報128から削除され、そのノード装置はクラスタ10から切り離される。
 上述のように、起点ノードN10は、参加ノードからHelloパケットを受信すると、クラスタ情報128に保持されているノード装置の識別子(NID)とそのノード装置のシーケンス番号(SN)の組の集合({<NID、SN>})を参照して、Helloパケットのクラスタ情報(CI)フィールドに格納されているノード装置のシーケンス番号(SN)と、自身のノード装置のクラスタ情報128に格納されている値とを比較する。そして、両者が異なっていれば、そのノード装置のTTLはリセットされるので、そのノード装置のTTLはデフォルト値のままである。しかし、ノード装置に障害が発生して、シーケンス番号(SN)が更新されないと、そのノード装置のTTLはTTL減算部142で減算され、1つ減る。
 次に、図12~15を参照して、クラスタ自律再生処理について説明する。
 図12は、図9に示されているクラスタ10の起点ノードN10で障害が発生した後、クラスタ自律再生処理を行った結果として得られるクラスタ11を示している。
 起点ノードN10に障害が発生した場合、起点ノードN10から参加ノード(ノード装置N11~N14)にHelloパケットが送信されず、参加ノードN11~N14のクラスタ情報128に格納されている起点ノード装置10のシーケンス番号(SN)は更新されない。一方、参加ノードN11~N14の各々のクラスタ情報128に格納されている自ノードのシーケンス番号(SN)は、そのノード装置がHelloパケットを送信するごとに更新される(カウントアップされる)。さらに、参加ノードN11~N14の各々のクラスタ情報128に格納されている、自ノード以外の参加ノードのシーケンス番号(SN)は、Helloパケット受信時に更新される。
 図13は、参加ノードN11~N14のクラスタ情報128に格納されている情報の例である。
 図13では、ノード装置N10に障害が発生してシーケンス番号(SN)が更新されないので、ノード装置N10のシーケンス番号(SN)は図10に示されているHelloパケット202から更新されておらず、他のノード装置N11~N14のシーケンス番号は更新されている。参加ノードN11~N14のクラスタ情報128に格納されているクラスタ情報(CI)は、
CI:<CID、{<NID、SN>}、end>=<10、{<10、1>、<11、23>、<12、23>、<13、23>、<14、23>}、false>
となっている。
 参加ノード(ノード装置N11~N14)の各々は、クラスタ内の起点ノードのTTLをそれぞれのTTL144に保持している。今の場合、起点ノード10のシーケンス番号(SN)が更新されていないので、起点ノードN10のTTLを一定時間(たとえば、Helloパケットの送信周期)ごとに減算する。
 図14は、各参加ノード(ノード装置N11~N14)が保持している起点ノード10のTTLが0になった状況を示す図である。
 図14に示されているように、各ノード装置のTTL144に格納されている起点ノードN10のTTL304、306、308、310はデフォルト値の「22」から「0」まで減少する。
 各参加ノード(ノード装置N11~N14)は、起点ノードN10のTTLが0になった時点で、クラスタ情報128から起点ノードN10の情報を削除する。この時点では、ノード装置N11~N14を含むクラスタには起点ノードがない。そこで、クラスタ内のノード装置の数が所定の閾値以上であれば、新たな起点ノードを既存のノード装置N11~N14から選ぶことでクラスタを再生する。そして、クラスタを識別する識別子(CID)を、新たに選択された起点ノード装置の識別子(NID)に書換えてクラスタを再生する。本例のように、ノード装置の識別子が数字である場合、クラスタ内の残されたノード装置のうち、識別子(NID)を示す数字が最も小さいものを選んでも良い。所定の閾値としては、最大クラスタノード数の所定の閾値、例えば50%を例示することができる。50%以外の数字、たとえば40%、60%でも構わない。
 図15は、新たにノード装置N11を起点ノードとしてクラスタを再生するとき、参加ノードN11~N14のクラスタ情報128に格納されているクラスタ情報(CI)の例である。このとき、参加ノードN11~N14のクラスタ情報128に格納されているクラスタ情報(CI)は、
CI:<CID、{<NID、SN>}、end>=<11、{<11、23>、<12、23>、<13、23>、<14、23>}、false>
のように変更され、特にクラスタを識別する識別子(CID)が、CID=11と変更されている。
 これによって、ノード装置11は起点ノードとなり、ノード装置N11~N14を含むクラスタは、クラスタを識別する識別子11を有するクラスタとして再生される。
 また、クラスタ内のノード装置の数が所定の閾値未満あれば、参加ノードN11~N14のクラスタ情報128に格納されているクラスタ情報(CI)をクリアして、クラスタを消滅させる。つまり、ノード装置N11~N14はフリーノードとなる。
 図16~20を参照して、クラスタの自律修復処理の例について説明する。
 図16は、図9に示されているクラスタ10の参加ノードN13で障害が発生した後、クラスタ自律修復処理を行った結果として得られるクラスタ10と、フリーノードであるノード装置N14(以下、単にフリーノードN14と呼ぶことがある)を示している。参加ノード13に障害が発生した場合、起点ノードN10にノード装置N13とノード装置N14から送信されたHelloパケットが到達しない。つまり、起点ノードN10のクラスタ情報128に格納されている情報のうち、ノード装置N13とノード装置N14のシーケンス番号(SN)が更新されなくなる。
 図17は、起点ノードN10のクラスタ情報128に格納されている情報のうち、ノード装置N13とノード装置N14のシーケンス番号(SN)が更新されない状況の例を説明する図である。起点ノードN10のクラスタ情報128に格納されている情報は、当初の
CI:<CID、{<NID、SN>}、end>=<10、{<10、1>、<11、1>、<12、1>、<13、1>、<14、1>}、false>
から
CI:<CID、{<NID、SN>}、end>=<10、{<10、23>、<11、23>、<12、23>、<13、1>、<14、1>}、false>
と、ノード装置N10~N12に関するシーケンス情報(SN)は更新されるが、ノード装置N13とノード装置N14のシーケンス番号(SN)が更新されない。起点ノードN10は、シーケンス情報(SN)が更新されないノード装置N13とノード装置N14のTTLを一定周期で減算するので、起点ノードN10のTTL144に格納されている参加ノードN11~N13のTTLはデフォルト値の「22」のままであるが、ノード装置N13とノード装置N14のTTLは、いずれ「0」になる。
 図18は、起点ノードN10のTTL144に格納されているノード装置N13とノード装置N14のTTLが「0」になったときの図である。ノード装置N13とノード装置N14のTTLはデフォルト値の「22」のままである。
 起点ノードN10は、TTL31が「0」になったノード装置N13とノード装置N14に関する情報を自身のクラスタ情報128から削除し、その旨をHelloパケットでブロードキャスト送信する。
 図19は、起点ノードN10から送信されるHelloパケットの例である。図19に示されているHelloパケット210のクラスタ情報(CI)は、
CI:<CID、{<NID、SN>}、end>=<10、{<10、24>、<11、24>、<12、24>}、false>
となっている。Helloパケット210のクラスタ情報(CI)は、クラスタ10がノード装置N10~N12で構成されることを示している。
 起点ノードN10からのHelloパケットで、ノード装置N13とノード装置N14がクラスタ10から削除されたことを認識したノード装置N11とノード装置N12はそれぞれ、自身のクラスタ情報128に格納されている情報から、ノード装置N13とノード装置N14に関する情報を削除する。このようにして、ノード装置N13とノード装置N14はクラスタ10から切り離され、クラスタ10は再生される。
 ノード装置N14は、起点ノード10からのHelloパケットが届かなくなり、自ノードで管理するクラスタ情報128のノード装置N10に関するシーケンス番号(SN)が更新されなくなる。ノード装置N14は、シーケンス番号(SN)が更新されない起点ノードN10のTTLを一定周期で減算する。
 図20は、ノード装置N14のTTL314に格納されているノード装置N10に関するシーケンス番号(SN)が「0」になった様子を示す図である。
 そして、ノード装置N14は、起点ノードN10のTTLが「0」になった時点でクラスタ情報128から起点ノードN10に関する情報を削除する。
 この時、ノード装置N14が属するクラスタには起点ノードがない。そこで、ノード装置N14を含むクラスタ内のノード装置の数が所定の閾値以上であれば、そのクラスタに属するノード装置から起点ノードを選択する。そして、クラスタを識別する識別子(CID)を、新たに選択された起点ノードを識別する識別子に置き換えることで、クラスタを再生する。本例のように、ノード装置の識別子が数字である場合、クラスタ内の残されたノード装置のうち、識別子(NID)を示す数字が最も小さいものを選んでも良い。所定の閾値としては、最大クラスタノード数の所定の閾値、例えば50%を例示することができる。50%以外の数字、たとえば40%、60%でも構わない。
 また、ノード装置N14を含むクラスタ内のノード装置の数が所定の閾値未満あれば、参加ノードのクラスタ情報128に格納されているクラスタ情報(CI)をクリアして、クラスタを消滅させる。このとき、ノード装置N14はフリーノードまたは起点ノードとなる。
<クラスタ統合処理>
 図21~25を参照して、クラスタ統合処理について説明する。
 クラスタ形成処理の第1段階であるクラスタ生成処理から第2段階のクラスタ統合処理への移行は、各ノード装置単位で行われる。各ノード装置100は所属するクラスタ内のノード装置の数の変化を監視し、所定の時間にわたりクラスタ内のノード装置の数の変化がない場合にクラスタ統合処理を開始する。例えばクラスタ生成処理でクラスタへの参加した後、属するクラスタのノード数の数が変化しなくなってから一定時間待機する。一定時間待機した時点で、クラスタ内のノード数が少ないクラスタは、ノード数が多いクラスタより先にタイムアウトになり、クラスタ統合段階へ移行しクラスタ統合要求が先に届く。すなわち、隣接するクラスタにおいてクラスタ内のノード数が少ないクラスタから優先的にクラスタ統合処理が開始される。
 図21は、複数のクラスタがある場合、どのクラスタからクラスタ統合処理が開始されるのかを決定するクラスタ統合優先順位決定処理の概略を説明する図である。
 図21に示されているように、クラスタ1はノード装置の識別子(NID)がNID=1から5の5つのノード装置を、クラスタ6はノード装置の識別子(NID)がNID=6から8の3つのノード装置を、クラスタ9はノード装置の識別子(NID)がNID=9から12の4つのノード装置を含んでいる。クラスタ1の起点ノードはNID=1のノード装置、クラスタ6の起点ノードはNID=6のノード装置、クラスタ9の起点ノードはNID=9のノード装置である。
 この場合、クラスタ6は、クラスタが含むノード装置の数が最小である。よって、クラスタ6が、クラスタ1および9より先にクラスタ統合段階に移行する。クラスタ形成処理の第1段階であるクラスタ生成処理から第2段階のクラスタ統合処理への移行は、第1段階で設定される最大クラスタノード数の値を変更し、さらにノード装置10のクラスタ情報128に格納されているendフラグを「true」から「false」に変更することによって行われる。
 図22は、クラスタ統合先候補通知処理の概略を説明する図である。
 クラスタ統合処理は、隣接するクラスタ同士で実施される。隣接クラスタとのHelloパケットの送受信は、隣接するクラスタに属するノード装置であって、ノード装置同士も互いに隣接する2つのノード装置である対向ノード装置の間で行われる。たとえば、図22に示されているノードであれば、クラスタ1に属するNID=3のノード装置と、クラスタ6に属するNID=7、8のノード装置の組がそのような対向ノード装置である。
 図22に示されているように、隣接するクラスタに属するノード装置からのHelloパケットを受け取ると、受信したノード装置は自ノードで管理するクラスタ情報(CI)とHelloパケットに含まれるクラスタ情報(CI)から両方のクラスタのノード装置の数を足し合わせ、最大クラスタノード数に達しているかどうかを判定する。もし、足し合わせたノード数が最大クラスタノード数以下であれば、2つのクラスタは統合可能であると判定される。
 この時、ノード装置10自身のクラスタ統合先候補通知部114は、自身が属するクラスタと隣接するクラスタのどちらがマスタでどちらがスレーブであるかを決定する。本例では、自身が属するクラスタと隣接するクラスタの識別子(CID)の値を比較し、クラスタの識別子(CID)の値が小さい方のクラスタをマスタ、大きいクラスタをスレーブとする。つまり、クラスタ1がマスタ、クラスタ6がスレーブとなる。
 クラスタ6(スレーブ側クラスタ)のNID=7のノード装置がクラスタ1(マスタ側クラスタ)のNID=3のノード装置からHelloパケットを受けて、クラスタ6とクラスタ1が統合可能であると判定されると、NID=3のノード装置のクラスタ統合要求更新部118は、自身のマージクラスタリスト132を、
<SID、{<NID、SN>}>=<3、{<、>}>
のように変更する。
 マージクラスタリスト132の情報は、クラスタ6のNID=7のノード装置が送信するHelloパケットのマージクラスタリスト(MCL)フィールドに反映される。この情報はハローパケット生成部138がマージクラスタリスト132から取得する。マージクラスタリスト132からの情報に基づいて、クラスタ6のNID=7のノード装置が送信するHelloパケットのマージクラスタリスト(MCL)フィールドには、「<3、{<、>}>」と格納され、送信部140からブロードキャスト送信される。
 クラスタ6のNID=7のノード装置からクラスタ6内にブロードキャスト送信されたHelloパケットは、NID=7のノード装置に隣接するNID=8のノード装置を経て、クラスタ6の起点ノードであるNID=6のノード装置によって受信される。
 NID=6のノード装置のクラスタ要求受付部116では、他クラスタからのクラスタ統合先候補通知を受信していないかを判定する。この判定は、NID=6のノード装置10のマージクラスタリスト132のSIDに既に値が格納されているかどうかで判定することができる。もし、NID=6のノード装置10のマージクラスタリスト132のSIDに値が設定されていなければ、クラスタ統合先候補通知を受け付け、マージクラスタリスト132のSIDに、クラスタ6に隣接するクラスタ1のノード装置の識別子を設定する。つまり、NID=6のノード装置10のマージクラスタリスト132では、SID=3と設定される。
 次に、NID=6のノード装置10のクラスタ統合要求更新部118は、自身が属するクラスタ6内の全ノードに対し、クラスタ統合要求中である事を通知するようなHelloパケットをハローパケット生成部138に生成させる。具体的には、マージクラスタリスト132のノード装置の識別子にスレーブのクラスタの起点ノード、すなわちNID=6のノード装置の識別子を設定し、それを用いたHelloパケットを生成する。このHelloパケットのクラスタ情報(CI)フィールドは、
<CID、{<NID、SN>}、end>=<6、{<6、x1>、<7、x2>、<8、x3>}、false>
が格納される。x6、x7、x8は整数である。また、マージクラスタリスト(MCL)フィールドには、
<SID、{NID}>=<3、{6}>
が格納される。
 その後、NID=6のノード装置10のハローパケット生成部138で生成されたHelloパケットは、送信部140から送信される。
 NID=6のノード装置からHelloパケットを受けたスレーブのクラスタ6内の各ノード装置は、Helloパケットのマージクラスタリスト(MCL)フィールドに、自身が属するクラスタの起点ノードを示す値、すなわちNID=6のノード装置の識別子が設定されていることで、クラスタ統合要求を受付けたこと認識する。そして、マージクラスタリスト132のノード装置の識別子の組{NID}に自身のノード装置の識別子を追加し、自身のノード装置の識別子が追加されたマージクラスタリスト(MCL)フィールドを含むHelloパケットを送信する。
 最終的にスレーブ側クラスタの全ノードがHelloパケットのマージクラスタリスト(MCL)フィールドのノード装置の識別子の集合({NID})にリストアップされる。
 NID=7のノード装置によりNID=3のノード装置に向けて送信されるHelloパケットの例では、クラスタ情報(CI)フィールドとマージクラスタリスト(MCL)フィールドにはそれぞれ、
CI:<CID、{<NID、SN>}、end>=<6、{<6、x6>、<7、x7>、<8、x8>}、false>
MCL:<SID、{NID}>=<3、{6、7、8}>
が格納される。
 NID=3のノード装置は、クラスタ統合要求通知に含まれるマージクラスタリスト(MCL)フィールドのノード装置の識別子の集合({NID})の要素数と、クラスタ情報(CI)フィールドに含まれるノード装置の数が一致するかを判定する。もし、両者が一致すれば、クラスタ統合リスト生成部120はマージクラスタリスト(MCL)に基づいて、NID=3のノード装置のマージノードリスト134を変更する。そして、NID=3のノード装置のハローパケット生成部138は、クラスタ情報(CI)フィールド、マージノードリスト(MNL)フィールド、マージクラスタリスト(MCL)フィールドがそれぞれ、
CI:<CID、{<NID、SN>}、end>=<1、{<1、x1>、<2、x2>、<3、x3>、<4、x4>、<5、x5>}、false>
MNL:<{NID}>=<{6、7、8}>
MCL:<SID、{NID}>=<、{}>
であるようなHelloパケットを生成し、NID=3のノード装置の送信部140からブロードキャスト送信する。このとき、クラスタ1内で送受信されるHelloパケットはクラスタ統合要求通知としての意味を持つ。x1、x2、x3、x4、x5は整数である。
 図23は、マスタ側クラスタであるクラスタ1のNID=3のノード装置がHelloパケットをブロードキャスト送信した後の、クラスタ1内の各ノード装置の動作の例を示す図である。
 マスタ側クラスタであるクラスタ1の起点ノード(NID=1のノード装置)は、他クラスタからのクラスタ統合先候補通知を受信していないか、及び、マージノードリスト(MNL)フィールドに含まれるノード装置の識別子の組({NID})の要素数と自身が属するクラスタ内のノード装置の数の合計が最大クラスタノード数以下であるかを確認する。もし、これらの条件を満たす場合は、クラスタ情報(CI)にマージノードリスト(MNL)フィールドに含まれるノード装置を追加することでクラスタ統合を実施する。そして、NID=1のノード装置のハローパケット生成部138は、クラスタ情報(CI)フィールド、マージノードリスト(MNL)フィールド、マージクラスタリスト(MCL)フィールドがそれぞれ、
CI:<CID、{<NID、SN>}、end>=<1、{<1、x1>、<2、x2>、<3、x3>、<4、x4>、<5、x5>、<6、x6>、<7、x7>、<8、x8>}、false>
MNL:<{NID}>=<{}>
MCL:<SID、{NID}>=<、{}>
であるようなHelloパケットを生成し、送信部140からブロードキャスト送信する。
 図24は、マスタ側クラスタであるクラスタ1のNID=3のノード装置が上記のようなHelloパケットをブロードキャスト送信した後の、クラスタ1内の各ノード装置の動作の例を示す図である。
 マスタ側クラスタであるクラスタ1の起点ノード(NID=1のノード装置)は、他クラスタからのクラスタ統合先候補通知を受信していないか、及び、マージノードリスト(MNL)フィールドに含まれるノード装置の識別子の組({NID})の要素数と自身が属するクラスタ内のノード装置の数の合計が最大クラスタノード数以下であるかを確認する。もし、これらの条件を満たす場合は、クラスタ情報(CI)にマージノードリスト(MNL)フィールドに含まれるノード装置を追加することでクラスタ統合を実施する。そして、NID=1のノード装置のハローパケット生成部138は、クラスタ情報(CI)フィールド、マージノードリスト(MNL)フィールド、マージクラスタリスト(MCL)フィールドがそれぞれ、
CI:<CID、{<NID、SN>}、end>=<1、{<1、x1>、<2、x2>、<3、x3>、<4、x4>、<5、x5>、<6、x6>、<7、x7>、<8、x8>}、false>
MNL:<{NID}>=<{}>
MCL:<SID、{NID}>=<、{}>
であるようなHelloパケットを生成する。また、マージノードリスト(MNL)フィールドに含まれるノード装置の識別子の組({NID})の要素数と自身が属するクラスタ内のノード装置の数の合計が最大クラスタノード数を超える場合には、endフラグは、「true」となり、クラスタ統合は実施されない。
 図25は、マスタ側クラスタであるクラスタ1の起点ノード(NID=1のノード装置)が、上記のようなクラスタ情報(CI)フィールドを含むHelloパケットを送信した後の、ノード装置の動作を説明する図である。
 マスタ側クラスタの起点ノード(NID=1のノード装置)からHelloパケットが送信されると、マスタ側クラスタに属していた各ノード装置(NID=1、2、3、4、5のノード装置)は、クラスタ情報(CI)フィールドに自身が管理するマージノードリスト134に格納されているノード装置の識別子(NID)が含まれていればクラスタ統合されたと認識しマージノードリスト134に格納されているノード装置の識別子(NID)から一致したノード装置の識別子(NID)を削除する。そして、自身のクラスタ情報128を書き換える。すなわち、クラスタ情報128には、
CI:<CID、{<NID、SN>}、end>=<1、{<1、x1>、<2、x2>、<3、x3>、<4、x4>、<5、x5>、<6、x6>、<7、x7>、<8、x8>}、false>
なる情報が格納される。
 図26はノード装置10のハードウェア構成の例を示す図である。ノード装置100はコンピュータにより実現される。
 ノード装置100、MPU(Micro Processing Unit)400、PHY(Physical Layer)チップ402、タイマIC404、DRAM(Dynamic Random Access Memory)406、フラッシュメモリ408、無線モジュール410を含む。MPU400、PHYチップ402、タイマIC404、DRAM406、フラッシュメモリ408、無線モジュール410は互いにバス412(412a~412c)によって接続され、MPU400の管理の下で各種のデータを相互に授受することができる。
 MPU400は、このコンピュータ全体の動作を制御する演算処理装置であり、コンピュータの制御処理部として機能する。MPU400は、ノード種別判定部104、参加処理部106、クラスタ情報更新部108、クラスタ生成部110、フリーノードリスト生成部112、クラスタ統合先候補通知部114、クラスタ統合要求受付部116、クラスタ統合要求更新部118、クラスタ統合リスト生成部120、クラスタ統合処理部122、クラスタ統合リスト通知部124、設定部136、ハローパケット生成部138、TTL減算部142として動作する。
 フラッシュメモリ408は、ファームウェアなどの所定の基本制御プログラムが予め記録されている不揮発性メモリである。MPU400は、この基本制御プログラムをコンピュータとしてのノード装置の起動時に読み出して実行することにより、このコンピュータとしてのノード装置の各構成要素の動作制御が可能になる。
 DRAM406は、MPU400が各種の制御プログラムを実行する際に、必要に応じて作業用記憶領域として使用する、随時書き込み読み出し可能な半導体メモリである。DRAM406は、ノード種別情報126、クラスタ情報128、フリーノードリスト130、マージクラスタリスト132、マージノードリスト134、TTL144、ルーティングテーブルを記憶できる。ただし、ノード種別情報126はフラッシュメモリ408に格納されても良い。この場合、起動後に、フラッシュメモリ408に格納されているノード種別情報126がDRAM406に読み込まれる。
 PHYチップ402や無線モジュール410は、受信部102や送信部140として動作する。PHYチップ402はオプションであり、PHYチップ402を備えることによって、回線を用いた通信を行うことができる。
 タイマIC404は、Helloパケットを送信する時刻や、装置10が属しているクラスタが含むノード装置の数が変化しない時間などを計測する。
 尚、ファームウェア等のプログラムは、コンピュータ読み取り可能な記録媒体に記録されてノード装置10に提供されても良い。MPU400は、コンピュータ読み取り可能な記録媒体に記録されている所定の制御プログラムを読み出して実行することもできる。なお、コンピュータ読み取り可能な記録媒体としては、例えばUSB(Universal Serial Bus)規格のコネクタが備えられているフラッシュメモリ、CD-ROM(Compact Disc Read Only Memory)、DVD-ROM(Digital Versatile Disc Read Only Memory)などがある。またプログラムはネットワークからPHYチップ402や無線モジュール410を介してダウンロードされることによりノード装置10にインストールされても良い。
<ノード装置における処理>
 図27は、ノード種別判定部104の動作を説明するフローチャートである。
 ステップS102で、ノード種別判定部104は、Helloパケットが受信部102から入力されると、ノード種別情報126を参照して、ノード装置10自身がフリーノードであるかどうかの判定をする。もしこの判定の結果がYes、すなわちノード装置10自身がフリーノードであればステップS104に進む。もしこの判定の結果がNo、すなわちノード装置10自身がフリーノードでなければステップS106に進む。
 ステップS104では、ノード装置10自身がフリーノードであるという情報を含むクラスタ情報(CI)を参加処理部106に通知する。ステップS104の処理が終わると、ノード種別判定部104の処理を終了する。
 ステップS106では、ノード装置10自身がフリーノードでないという情報を含むクラスタ情報(CI)をクラスタ情報更新部108に通知する。
 ステップS106の次のステップS108では、ノード種別情報126を参照して、ノード装置10自身が起点ノードであるかどうかを判定する。もしこの判定の結果がYes、すなわちノード装置10自身が起点ノードであればステップS110に進む。もしこの判定の結果がNo、すなわちノード装置10自身が起点ノードでなければステップS116に進む。
 ステップS110では、フリーノードリスト(FNL)をクラスタ生成部110に通知する。
 ステップS112では、マージクラスタリスト(MCL)をクラスタ統合要求受付部116に通知する。
 ステップS114では、マージノードリスト(NML)をクラスタ統合処理部122に通知する。ステップS110とステップS112とステップS114の処理の順序は、任意である。ステップS114の処理が終わると、ノード種別判定部104の処理を終了する。
 ステップS116では、フリーノードリスト(FNL)をフリーノードリスト生成部112に通知する。
 ステップS118では、マージクラスタリスト(MCL)をクラスタ統合要求更新部118に通知する。
 ステップS120では、マージノードリスト(NML)をクラスタ統合リスト通知部124に通知する。ステップS116とステップS118とステップS120の処理の順序は、任意である。ステップS114の処理が終わると、ノード種別判定部104の処理を終了する。
 図28は、参加処理部106の動作の例を示すフローチャートである。
 ステップS130では、参加処理部106は、フリーノードリスト130に自身のエントリがあるかどうかを判定する。フリーノードリスト130に自身のエントリがある場合はステップS140に進む。フリーノードリスト130に自身のエントリがない場合はステップS132に進む。
 ステップS132では、Helloパケットのクラスタ情報(CI)フィールドに含まれているendフラグが「true」であるかどうかを判定する。endフラグが「true」である場合ステップS136に進む。endフラグが「true」でない場合は、ステップS134に進む。
 ステップS134では、クラスタ内のノード数が最大クラスタノード数に達していないので、参加処理部106は、自身のノード装置の識別子(NID)を、クラスタ情報(CI)に含まれているクラスタ識別子(CID)に対応つけてフリーノードリスト130に格納する。ステップS134の処理が終わると、参加処理部の処理が終了する。
 ステップS136で参加処理部106は、自身のノード装置が起点ノードとして動作できるようにクラスタ情報128を生成する。このとき、クラスタ情報128には、自身のノード装置の識別子がクラスタ識別子(CID)として記憶され、新たに生成されたクラスタには自身のノードが含まれる。そして、ステップS138に進む。
 ステップS138で参加処理部106は、自身のノード装置の設定を起点ノードに変更して、ステップS138の処理が終わると、参加処理部の処理が終了する。
 一方、フリーノードリスト130に自身のエントリがある場合、参加処理部106は、ステップS140で、クラスタ情報128に自身のノード装置の識別子が含まれているかを確認する。クラスタ情報128に自身のノード装置の識別子が含まれている場合、ステップS142に進む。クラスタ情報128に自身のノード装置の識別子が含まれていない場合、ステップS146に進む。
 ステップS142で参加処理部106は、フリーノードリスト130から自身のノード装置のエントリを削除し、クラスタ情報(CI)フィールドに含まれているノードの情報をクラスタ情報128に格納する。そして、ステップS144に進む。
 ステップS144で参加処理部106は、自身のノード装置の設定を参加ノードに変更して、ステップS138の処理が終わると、参加処理部の処理が終了する。
 ステップS140の判定で、クラスタ情報128に自身のノード装置の識別子が含まれていない場合はステップS146の処理を行う。
 ステップS146では、endフラグが「true」であるかを判定する。この判定の結果がYesであれば、ステップS148に進む。この判定がNoであれば、参加処理部の処理が終了する。
 ステップS148では、ノード装置10が属するクラスタのノード装置の数が上限に達しているので、フリーノードリスト130のエントリを削除し、参加処理部の処理が終了する。
 図29A~29Bは、クラスタ情報更新部108の動作の例を示すフローチャートである。
 各ノードは受信したHelloパケットのクラスタ情報(CI)のクラスタ識別子(CID)が、自身のノード装置のクラスタ情報128に格納されているクラスタ識別子(CID)と同じ場合には次のような処理を行う。すなわち、ノード装置の識別子(NID)毎に受信したシーケンス番号(SN)と自ノードで管理するクラスタ情報128に含まれるシーケンス番号(SN)を比較し、監視対象ノードのシーケンス番号(SN)が更新されていれば監視対象ノードのTTLをリセットする。監視対象ノードは、自身のノード装置が起点ノードである場合は、クラスタの参加ノードであり、自身のノード装置が起点ノード以外の参加クラスタの場合は起点ノードである。さらに、クラスタ内のノード装置の数に変化があった時点から一定時間のタイミングを取るためのタイマを設定する。受信したHelloパケットのクラスタ情報(CI)を自身のノード装置のクラスタ情報128にマージすることで、自身のノード装置が属するクラスタの全ノードを認識する。また、自身のノード装置のフリーノードリスト130について、クラスタ情報128に追加されたノード装置に対応するエントリは削除し、フリーノードからの参加要求が無くなった時点から一定時間のタイミングを取るためのタイマを設定する。自身のノード装置のマージノードリスト134に格納されているノード装置の識別子(NID)が、受信したHelloパケットのクラスタ情報(CI)に含まれていれば、クラスタ統合(マスタ側)が完了したと認識し、自身のノード装置のマージノードリスト134に格納されているエントリを削除する。
 各ノードは受信したHelloパケットのクラスタ情報(CI)のクラスタ識別子(CID)が自身のノード装置のクラスタ情報128に格納されているクラスタ識別子(CID)と異なる場合に以下の処理を行う。すなわち、自身のノード装置のマージクラスタリスト132と、受信したHelloパケットのクラスタ情報(CI)に含まれているノード装置の識別子(NID)を確認し、自身のノード装置の識別子が含まれていればクラスタ統合(スレーブ側)が完了したと認識し、受信したHelloパケットのクラスタ情報(CI)を自身のノード装置のクラスタ情報128に置き換え、自身のノード装置のマージクラスタリスト132に格納されているエントリを削除する。クラスタ統合中でなければクラスタ統合先候補通知部114へノード種別判定部104より受け取った受信したHelloパケットに含まれているクラスタ情報(CI)を渡す。
 ステップS150でクラスタ情報更新部108は、受信したHelloパケットのクラスタ情報(CI)フィールドのクラスタ識別子(CID)が、自身のクラスタ情報128に格納されているクラスタ識別子(CID)が一致するかどうかを判定する。もし、両者が一致する場合は、ステップS152に進む。また、もし両者が一致しなければ、ステップS188に進む。
 ステップS152でクラスタ情報更新部108は、自ノードが起点ノードであるかどうかを判定する。もしこの判定の結果がYes、すなわち自ノードが起点ノードである場合には、ステップS160に進む。また、もしこの判定の結果がNo、すなわち自ノードが起点ノードではない場合には、ステップS154に進む。
 ステップS154でクラスタ情報更新部108は、自ノードのクラスタ情報128に格納されている起点ノードのシーケンス番号(SN)を取得する。
 ステップS154の次のステップS156でクラスタ情報更新部108は、自ノードのクラスタ情報128に格納されている起点ノードのシーケンス番号(SN)が更新または追加されているかどうかを判定する。ステップS156の判定の結果がYes、すなわち自ノードのクラスタ情報128に格納されている起点ノードのシーケンス番号(SN)が更新または追加されているか場合には、ステップS158に進む。また、ステップS156の判定の結果がNo、すなわち自ノードのクラスタ情報128に格納されている起点ノードのシーケンス番号(SN)が更新または追加されていない場合には、ステップS172に進む。
 ステップS158でクラスタ情報更新部108は、自ノードのTTL144に格納されている起点ノードのTTLの値をリセットし、デフォルト値に戻る。同時に、自ノードのクラスタ情報128に格納されているシーケンス番号(SN)の値を、受信したHelloパケットのクラスタ情報(CI)フィールドに含まれているシーケンス番号(SN)の値に更新する。そして、S172に進む。
 ステップS152の判定でYes、すなわち自ノードが起点ノードである場合、まず、ステップS160で自身が属するクラスタの全参加ノードを取得して、未処理の参加ノードを取得する。
 ステップS160の次のステップS162でクラスタ情報更新部108は、未処理の参加ノードが存在するかどうかを判定する。もしこの判定の結果がNo、すなわち未処理の参加ノードが存在しない場合には、ステップS172に進む。もしこの判定の結果がYes、すなわち未処理の参加ノードが存在する場合には、ステップS164に進む。
 ステップS164でクラスタ情報更新部108は、自ノードのクラスタ情報128に格納されている参加ノードのシーケンス番号(SN)を取得する。
 ステップS164の次のステップS166でクラスタ情報更新部108は、自身が起点ノードであるクラスタの参加ノード(起点ノード以外のノード装置)のシーケンス番号(SN)が更新または追加されているかどうかを判定する。この判定の結果がNo、すなわち自身が起点ノードであるクラスタの参加ノード(起点ノード以外のノード装置)のシーケンス番号(SN)が更新または追加されていない場合には、ステップS170に進む。また、この判定の結果がYes、すなわち自身が起点ノードであるクラスタの参加ノード(起点ノード以外のノード装置)のシーケンス番号(SN)が更新または追加されている場合には、ステップS168に進む。
 ステップS168でクラスタ情報更新部108は、自ノードのTTL144に格納されている参加ノードのTTLの値をリセットし、デフォルト値に戻る。同時に、自ノードのクラスタ情報128に格納されているシーケンス番号(SN)の値を、受信したHelloパケットのクラスタ情報(CI)フィールドに含まれているシーケンス番号(SN)の値に更新する。そして、ステップS170に進む。
 ステップS170では、参加ノードを処理済に設定する。そしてステップS172に進む。
 ステップS172でクラスタ情報更新部108は、Helloパケットに含まれるクラスタ識別子(CID)で識別されるクラスタのノード数と、自身のクラスタ情報128に格納されているクラスタ識別子(CID)で識別されるクラスタのノード数で違いがあるかどうかを判定する。この判定の結果がYesであれば、ステップS174に進む。この判定の結果がNoであれば、ステップS176に進む。
 ステップS174でクラスタ情報更新部108は、クラスタ識別子(CID)で識別されるクラスタのノード数に変化があった時点から一定時間のタイムアウトを計測するタイマを設定する。そして、ステップS176に進む。
 S176では、受信したHelloパケットのクラスタ情報(CI)フィールドに含まれるノードの識別子({NID})と、自身のクラスタ情報128に格納されているクラスタの識別子(CID)で認識されるクラスタに含まれるノードの識別子({NID})を結合させる(マージする)。このことによって、クラスタ識別子(CID)で識別されるクラスタに含まれる全てのノード装置を認識する。
 次のステップS178でクラスタ情報更新部108は、自身のノード装置のフリーノードリスト130に含まれるクラスタ識別子(CID)で識別されるクラスタに参加させたいノード装置の識別子(NID)のリストに、自身のクラスタ情報128に格納されているクラスタ識別子(CID)で識別されるクラスタに含まれるノード装置の識別子(NID)が含まれているかどうかを判定する。
 ステップS178の判定の結果がYesであればステップS180に進み、Noであれば、ステップS180を処理せずにステップS182に進む。
 ステップS180でクラスタ情報更新部108は、自身のクラスタ情報128に格納されているクラスタの識別子(CID)で認識されるクラスタに含まれるノードの識別子({NID})と一致する、自身のノード装置のフリーノードリスト130に含まれるノード装置の識別子(NID)を削除する。そしてステップS182に進む。
 ステップS182でクラスタ情報更新部108は、自身のノード装置のマージノードリスト134が設定されているかどうかを判定する。もし設定されていればステップS184に進む。もし、設定されていなければクラスタ情報更新部108の処理を終了する。
 ステップS184でクラスタ情報更新部108は、自身のノード装置のマージノードリスト132に含まれるノードの識別子({NID})は、受信したHelloパケットのクラスタ情報(CI)フィールドに含まれるノードの識別子({NID})に含まれているかどうかを判定する、もしこの判定の結果がYesであれば、ステップS186に進む。もしこの判定の結果がNoであれば、クラスタ情報更新部108の処理を終了する。
 ステップS186では、自身のノード装置のマージノードリスト132に含まれるノードの識別子({NID})と自身のクラスタ情報128に格納されているクラスタの識別子(CID)で認識されるクラスタに含まれるノードの識別子({NID})を比較し、一致するノード装置の識別子を自身のノード装置のマージノードリスト132から削除して、クラスタ情報更新部108の処理を終了する。
 受信したHelloパケットのクラスタ情報(CI)フィールドのクラスタ識別子(CID)と、自身のクラスタ情報128に格納されているクラスタ識別子(CID)が一致しない場合、ステップS188でクラスタ情報更新部108は、自身のノード装置のマージクラスタリスト132に自身のノード装置の識別子(NID)が設定されているかどうかを判定する。この判定の結果がYesであれば、ステップS190に進む。この判定の結果がNoであれば、ステップS198に進む。
 ステップS190でクラスタ情報更新部108は、受信したHelloパケットのクラスタ情報(CI)フィールドに含まれるノードの識別子({NID})に自身のノード装置の識別子(NID)が設定されているかどうかを判定する。この判定の結果がYesであれば、ステップS192に進む。また、この判定の結果がNoであれば、ステップS198に進む。
 ステップS192では、受け取ったHelloパケットの送信元LSが、マージクラスタリストのSIDまたは自身のクラスタ情報128に含まれるノード装置の識別子(NID)に含まれているかどうかを判定する。この判定の結果がYesであれば、ステップS194に進む。また、この判定の結果がNoであれば、ステップS198に進む。
 ステップS194では、自身のクラスタ情報128に含まれる情報を削除し、受信したHelloパケットのクラスタ情報(CI)フィールドに含まれる情報を自身のクラスタ情報128に上書きする。
 ステップS194の次のステップS196では、自身のノード装置のマージクラスタリスト132に含まれる情報を削除して、クラスタ情報更新部108の処理を終了する。
 ステップS198では、クラスタ統合先候補通知部の処理を行う。
 ステップS198の処理が終わると、クラスタ情報更新部108の処理を終了する。
 図30は、クラスタ生成部110の動作の例を示すフローチャートである。
 ステップS200でクラスタ生成部110は、クラスタ情報128のendフラグの値がtrueであるかを判定する。endフラグの値がtrueであれば、新たなノード装置をクラスタに追加することはできない。この判定の結果がNo、すなわちendフラグの値がfalseであれば、新たなノード装置をクラスタに追加することができる。この判定の結果がYes、すなわちendフラグの値がtrueであれば、クラスタ生成部110の処理は終了する。endフラグの値がfalseであれば、ステップS202に進む。
 endフラグの値がfalseの場合、クラスタ生成部110は、受信したHelloパケットのフリーノードリスト(FNL)フィールドに含まれるフリーノード情報が、自身のノード装置で作成したクラスタに参加しようとしているノード装置の識別子であるかを確認する。このため、S202でクラスタ生成部110は、受信したHelloパケットのフリーノードリスト(FNL)フィールドに含まれるクラスタ識別子(CID)と、クラスタ情報128に含まれているクラスタ識別子(CID)が異なるかどうかを判定する。この判定の結果がNo、すなわちフリーノード情報とクラスタ情報128に含まれているクラスタ識別子(CID)が一致する場合、クラスタ生成部110は、自身のノード装置が生成しているクラスタに対して、参加が要求されたと認識する。そして、ステップS204に進む。この判定の結果がYesであれば、クラスタ生成部110の処理は終了する。
 ステップS204でクラスタ生成部110は、フリーノード情報に含まれているノード装置の識別子(NID)をクラスタ情報128に追加し、クラスタに参加させる。ステップS204の処理が終了すると、クラスタ生成部110の処理は終了する。
 図31は、フリーノードリスト生成部112の動作の例を示すフローチャートである。
 ステップS210およびS212はそれぞれ、ステップ200およびS202と同様の処理である。
 ステップS210でフリーノードリスト生成部112は、クラスタ情報128のendフラグの値がtrueであるかを判定する。この判定の結果がYes、すなわちendフラグの値がtrueであれば、フリーノードリスト生成部112の処理は終了する。endフラグの値がfalseであれば、ステップS212に進む。
 ステップS212でフリーノードリスト生成部112は、受信したHelloパケットのフリーノードリスト(FNL)フィールドに含まれるクラスタ識別子(CID)と、クラスタ情報128に含まれているクラスタ識別子(CID)が異なるかどうかを判定する。この判定の結果がNoの場合、フリーノードリスト生成部112は、自身のノード装置が生成しているクラスタに対して、参加が要求されたと認識する。そして、ステップS212に進む。この判定の結果がYesであれば、フリーノードリスト110の処理は終了する。
 ステップS214でフリーノードリスト生成部112は、受信したHelloパケットのフリーノードリスト(FNL)フィールドに含まれるノード装置の識別子(NID)が、クラスタ情報128に含まれているかどうかを判定する。この判定の結果がNoの場合、すなわちフリーノードリスト(FNL)フィールドに含まれるノード装置の識別子(NID)が、クラスタ情報128に含まれてない場合、ステップS216に進む。この判定の結果がYesであれば、フリーノードリスト112の処理は終了する。
 ステップS216でフリーノードリスト生成部112は、フリーノードリスト(FNL)フィールドに含まれるノード装置の識別子(NID)をフリーノードリスト130に追加する。ステップS216の処理が終了すると、フリーノードリスト112の処理は終了する。
 図32は、クラスタ統合先候補通知部114の動作の例を示すフローチャートである。
 図32に示されている処理で各ノードは、自身が所属しているクラスタのクラスタ識別子(CID)と異なるクラスタ情報(CI)を含むHelloパケットを受信した場合に、クラスタ統合段階に移行しているかどうかを、クラスタのノード装置の数に変化がなくなった時点からのタイマがタイムアウトしているかに基づいて判断する。クラスタ統合段階に移行していれば、自身のノード装置のクラスタ情報128と、受信したHelloパケットのクラスタ情報(CI)から両方のクラスタのノード数を合計し、上限を超えていなければ、クラスタ統合可能と判断する。クラスタ統合可能で、自身ノード装置が属するクラスタがスレーブ側クラスタであった場合は、クラスタ統合先候補(マスタ側クラスタに属するノード装置)をマージクラスタリスト(MCL)のSIDに設定する。また、起点ノードの場合はクラスタ統合受付部へ設定したマージクラスタリストを渡す。
 ステップS220でクラスタ統合先候補通知部114は、受信したHelloパケットのクラスタ情報(CI)フィールドのクラスタ識別子(CID)が、自身のクラスタ情報128に格納されているクラスタ識別子(CID)が異なるかどうかを判定する。このときのHelloパケットは、クラスタ統合先候補通知としての意味を持つ。この判定の結果がYesの場合、すなわち受信したHelloパケットのクラスタ情報(CI)フィールドのクラスタ識別子(CID)が、自身のクラスタ情報128に格納されているクラスタ識別子(CID)が異なる場合、ステップS222に進む。
 ステップS222でクラスタ統合先候補通知部114は、ノード装置の数に変化がなくなった時点からの一定時間のタイムアウトをしているかを判断する。この判定の結果がYesの場合、クラスタ統合先候補通知部114は、クラスタ統合段階に移行していることを認識する。そして、ステップS224に進む。
 ステップS224でクラスタ統合先候補通知部114は、受信したHelloパケットのクラスタ情報(CI)フィールドに含まれるノード装置の識別子(NID)と、自身のクラスタ情報128に格納されているノード装置の識別子(NID)のエントリ数の合計が、クラスタあたりのノード装置の数の上限である最大クラスタノード数以下であるかを判定する。この判定の結果がYesの場合は、Helloパケットの送信元のノード装置が属するクラスタと、自身が属するクラスタは統合可能である。そして、ステップS226に進む。
 ステップS226でクラスタ統合先候補通知部114は、自身が属するクラスタがスレーブ側であるかどうかを判定する。この判定の結果がYesの場合、ステップS226に進む。
 ステップS228でクラスタ統合先候補通知部114は、受信したHelloパケットのマージクラスタリスト(MCL)が空であるかどうかを判定する。この判定の結果がYesの場合、ステップS230に進む。
 ステップS230でクラスタ統合先候補通知部114は、クラスタ統合先候補、すなわちマスタ側クラスタに属し、自身と隣接するノード装置をマージクラスタリスト(MCL)のSIDに設定する。
 ステップS230の次のS232でクラスタ統合先候補通知部114は、自身が起点ノードであるかを判定する。この判定の結果がYesの場合、ステップS234に進む。
 ステップS234でクラスタ統合先候補通知部114は、クラスタ統合要求受付部116へ設定したマージクラスタリストを渡す。そして、クラスタ統合先候補通知部114の処理は終了する。
 また、ステップS220、S222、S224、S226、S228、S232の判定の結果がNoであれば、クラスタ統合先候補通知部114の処理を終了する。
 図33は、クラスタ統合要求受付部116の動作の例を示すフローチャートである。
 図33に示されている処理で起点ノードは、他のクラスタからのクラスタ統合先候補通知が競合していないかを自身のノード装置のマージクラスタリスト132に含まれる情報に基づいて比較、判断し、クラスタ統合先候補通知を受け付ける。
 起点ノードは、クラスタ統合先候補通知を受け付けたことを受け、自身のノード装置の識別子(NID)をマージクラスタリスト132に追加する。
 ステップS240でクラスタ統合要求受付部116は、受信したHelloパケットのマージクラスタリスト(MCL)フィールドに含まれるマスタ側クラスタのノード装置の識別子(SID)が、自身のクラスタ情報128に含まれないかどうかを判定する。この判定の結果がYesの場合、ステップS242に進む。この判定の結果がNoの場合、クラスタ統合要求受付部116の処理を終了する。
 ステップS242でクラスタ統合要求受付部116は、受信したHelloパケットのマージクラスタリスト(MCL)フィールドのノード装置の識別子(NID)が未設定であるかどうかを判定する。この判定の結果がYesの場合、ステップS248に進む。この判定の結果がNoの場合、ステップS244に進む。
 ステップS244でクラスタ統合要求受付部116は、受信したHelloパケットのマージクラスタリスト(MCL)フィールドに含まれるマスタ側クラスタのノード装置の識別子(SID)が、自身のマージクラスタリスト132に含まれるマスタ側クラスタのノード装置の識別子(SID)と同じであるかどうかを判定する。この判定の結果がYesの場合、ステップS246に進む。この判定の結果がNoの場合、クラスタ統合要求受付部116の処理を終了する。
 ステップS246でクラスタ統合要求受付部116は、受信したHelloパケットのマージクラスタリスト(MCL)フィールドに含まれるノード装置の識別子(NID)を、自身のマージクラスタリスト132に含まれるノード装置の識別子(NID)にマージする。
 ステップS242の判定の結果がYesの場合、すなわち受信したHelloパケットのマージクラスタリスト(MCL)フィールドのノード装置の識別子(NID)が未設定であると判定された場合は、ステップS248の処理を行う。
 ステップS248でクラスタ統合要求受付部116は、自身のマージクラスタリスト132に含まれるノード装置の識別子(NID)に自身のノード装置の識別子(NID)を設定する。そして、クラスタ統合要求受付部116の処理は終了する。
 図34は、クラスタ統合要求更新部118の動作の例を示すフローチャートである。
 図34に示されている処理で参加ノードは、マージクラスタリスト(MCL)に自身のノード装置が属するクラスタの起点ノードが設定されていることでクラスタ統合要求通知を受付けたことを判断し、自身のノード装置の識別子を自身のマージクラスタリスト132に追加する。
 ステップS250でクラスタ統合要求更新部118は、受信したHelloパケットのマージクラスタリスト(MCL)フィールドに含まれるマスタ側クラスタのノード装置の識別子(SID)が、自身のクラスタ情報128に含まれないかどうかを判定する。この判定の結果がYesの場合、ステップS260に進んでクラスタ統合リスト生成部120の処理を行い、クラスタ統合要求更新部118の処理は終了する。この判定の結果がNoの場合、ステップS252に進む。
 ステップS252でクラスタ統合要求更新部118は、受信したHelloパケットのマージクラスタリスト(MCL)フィールドのノード装置の識別子(NID)が未設定であるかどうかを判定する。この判定の結果がNoの場合、ステップS254に進む。この判定の結果がYesの場合、ステップS258に進む。
 ステップS258でクラスタ統合要求更新部118は、自身のマージクラスタリスト132に、受信したHelloパケットのマージクラスタリスト(MCL)フィールドに含まれるマスタ側クラスタのノード装置の識別子(SID)を設定する。そして、クラスタ統合要求更新部118の処理は終了する。
 ステップS254でクラスタ統合要求更新部118は、受信したHelloパケットのマージクラスタリスト(MCL)フィールドのノード装置の識別子(NID)が、自身のクラスタ情報126に含まれるかどうかを判定する。この判定の結果がNoの場合、クラスタ統合要求更新部118の処理は終了する。この判定の結果がYesの場合、ステップS256に進む。
 ステップS256でクラスタ統合要求更新部118は、自身のノード装置のマージクラスタリスト132に格納されるノード装置の識別子(NID)に自身のノード装置の識別子を追加する。そして、クラスタ統合要求更新部118の処理は終了する。
 図35は、クラスタ統合リスト生成部120の動作の例を示すフローチャートである。
 マスタ側の対向ノードは、自身のノード装置のクラスタ情報128に格納されるノード装置の識別子(NID)と、受信したクラスタ統合要求通知のマージクラスタリスト(MCL)フィールドに含まれるノード装置の識別子(NID)とが完全に一致するかどうかを確認する。一致すれば受信したHelloパケット(クラスタ統合要求通知)のマージクラスタリスト(MCL)フィールドに含まれるノード装置の識別子(NID)を自身のノード装置のクラスタ情報128に格納されるノード装置の識別子(NID)に設定する。
 ステップS270でクラスタ統合リスト生成部120は、自身のノード装置のマージクラスタリスト132は空かどうかを判定する。この判定の結果がYesであれば、ステップS262に進む。
 ステップS272でクラスタ統合リスト生成部120は、受信したHelloパケットのマージクラスタリスト(MCL)フィールドに含まれるマスタ側クラスタのノード装置の識別子(SID)が、自身のノード装置の識別子であるかどうかを判定する。この判定の結果がYesであれば、ステップS274に進む。
 ステップS274でクラスタ統合リスト生成部120は、受信したHelloパケットのクラスタ情報(CI)フィールドに含まれるノード装置の識別子(NID)と、自身のクラスタ情報128に格納されているノード装置の識別子(NID)が一致するかどうかを判定する。この判定の結果がYesであれば、ステップS276に進む。
 ステップS276でクラスタ統合リスト生成部120は、受信したHelloパケットのクラスタ情報(CI)フィールドに含まれるノード装置の識別子(NID)を、自身のマージノードリスト134に設定する。そして、クラスタ統合リスト生成部120の処理を終了する。
 また、ステップS270、S272、S274の判定の結果がNoの場合は、クラスタ統合リスト生成部120の処理を終了する。
 図36はクラスタ統合処理部122の動作の例を示すフローチャートである。
 起点ノードは、クラスタ統合要求の競合確認し、受信したHelloパケットのマージノードリスト(MNL)に含まれるノード装置の識別子(NID)の数と自身のノード装置のクラスタ情報128に格納されているノード装置の数の合計が、クラスタあたりのノード装置の数の上限である最大クラスタノード数以下であれば、ノード装置のクラスタ情報128に受信したHelloパケットのマージノードリスト(MNL)に含まれるノード装置の識別子(NID)を追加することでクラスタ統合を実施する。
 ステップS280でクラスタ統合処理部122は、自身のノード装置のマージクラスタリスト132が未設定であるかを判定する。この判定の結果がYesであれば、ステップS282に進む。
 ステップS282でクラスタ統合処理部122は、受信したHelloパケットのマージクラスタリスト(MCL)フィールドに含まれるノード装置の識別子(NID)の数と、自身のクラスタ情報128に格納されているノード装置の識別子(NID)の数の合計が、クラスタあたりのノード装置の数の上限である最大クラスタノード数以下であるかどうかを判定する。この判定の結果がYesであれば、ステップS284に進む。
 ステップS284でクラスタ統合処理部122は、自身のクラスタ情報128に、受信したHelloパケットのマージクラスタリスト(MCL)フィールドに含まれるノード装置の識別子(NID)を追加して、クラスタを統合する。そして、クラスタ統合処理部122の処理を終了する。
 また、ステップS280、S282の判定の結果がNoであれば、クラスタ統合処理部122の処理を終了する。
 図37と図38は、クラスタ統合リスト通知部124の動作の例を示すフローチャートである。
 参加ノードは、クラスタ統合要求の競合を確認し、受信したHelloパケットのマージノードリスト(MNL)フィールドに含まれるノード装置の識別子(NID)をマージノードリスト134に含まれるノード装置の識別子(NID)に設定する。
 図37は、複数のクラスタから統合要求通知が送られてきたとき、複数のクラスタの1つのクラスタと統合するときのクラスタ統合リスト通知部124の動作の例を示すフローチャートである。
 ステップS290でクラスタ統合リスト通知部124は、自身のノード装置のマージクラスタリスト132が空かどうかを判定する。この判定の結果がYesであれば、ステップS292に進む。
 ステップS292でクラスタ統合リスト通知部124は、自身のマージノードリスト134が未設定であるかどうかを判定する。この判定の結果がYesであれば、ステップS294に進む。
 ステップS294でクラスタ統合リスト通知部124は、受信したHelloパケットのマージノードリスト(MNL)フィールドに含まれるノード装置の識別子(NID)をマージノードリスト134に含まれるノード装置の識別子(NID)に設定する。そして、クラスタ統合リスト通知部124の処理を終了する。
 また、ステップS290、S292の判定の結果がNoであれば、クラスタ統合リスト通知部124の処理を終了する。
 図38は、複数のクラスタから統合要求通知が送られてきたとき、複数のクラスタと同時に統合するのクラスタ統合リスト通知部124の動作の例を示すフローチャートである。
 ステップS300でクラスタ統合リスト通知部124は、ステップS290と同様の処理を行う。すなわち、自身のノード装置のマージクラスタリスト132が空かどうかを判定する。この判定の結果がYesであれば、ステップS302に進む。この判定の結果がNoであれば、クラスタ統合リスト通知部124の処理を終了する。
 ステップS302でクラスタ統合リスト通知部124は、ステップS294と同様の処理を行う。ステップS302でクラスタ統合リスト通知部124は、受信したHelloパケットのマージノードリスト(MNL)フィールドに含まれるノード装置の識別子(NID)をマージノードリスト134に含まれるノード装置の識別子(NID)に設定する。そして、クラスタ統合リスト通知部124の処理を終了する。
 図39は、TTL減算部142の動作の例を示すフローチャートである。
 TTL減算部142は、一定周期で起動され、TTL144に格納されている監視対象のノード装置のTTLを減算する。監視対象のノード装置は、自ノードが起点ノードであれば、自身が属するクラスタの参加ノード(起点ノード以外のノード)であり、自ノードが参加ノードであれば、自身が属するクラスタの起点ノードである。
 起点ノードは、監視対象(参加ノード)のTTLが0になった場合、対象ノードに関する情報をクラスタ情報128から削除する。参加ノードは、監視対象(起点ノード)のTTLが0になった場合、クラスタ情報128に格納されている対象ノードに関する情報をクリアし、クラスタ内のノード装置の数が閾値以上ならクラスタの自律再生、閾値未満ならクラスタの自律修復を行う。
 ステップS310でTTL減算部142は、自ノードが起点ノードであるかどうかを判定する。もしこの判定の結果がYes、すなわち自ノードが起点ノードである場合には、ステップS324に進む。また、もしこの判定の結果がNo、すなわち自ノードが起点ノードではない場合には、ステップS312に進む。
 ステップS312でTTL減算部142は、自身(参加ノード)が属するクラスタの起点ノードのTTLについて、TTL-1が0以下であるかどうかを判定する。もしこの判定がYesであれば、ステップS314に進む。もしこの判定がNoであれば、ステップ322に進む。
 ステップS322でTTL減算部142は、自身(参加ノード)が属するクラスタの起点ノードのTTLの値を減算して(1だけ減らす)、TTL減算部142の処理を終了する。
 ステップS314でTTL減算部142は、自身(参加ノード)が属するクラスタの起点ノードの情報を自身のクラスタ情報128から削除する。そして、ステップS316に進む。
 ステップS316でTTL減算部142は、自身が属するクラスタのノード装置の数が閾値以上であるかどうかを判定する。もしこの判定がYesであれば、ステップS318に進む。もしこの判定がNoであれば、ステップ320に進む。
 ステップS318では、自身が属するクラスタの任意のノード装置の識別子(NID)をクラスタ情報128に格納されているクラスタ識別子(CID)に設定する。そして、ステップS323に進む。
 ステップS320では、自身のクラスタ情報128に格納されている情報をクリアする。そして、ステップS323に進む。
 ステップS323でTTL減算部142は、クラスタ識別子(CID)で識別されるクラスタのノード数に変化があった時点から一定時間のタイムアウトを計測するタイマを設定する。そして、TTL減算部142の処理を終了する。
 自ノードが起点ノードである場合、ステップS310の次にステップS324が処理される。
 ステップS324でTTL減算部142は、自身が属するクラスタの全参加ノードを取得して、未処理の参加ノードを取得する。
 ステップS324の次のステップS326でTTL減算部142は、未処理の参加ノードが存在するかどうかを判定する。もしこの判定の結果がNo、すなわち未処理の参加ノードが存在しない場合には、TTL減算部142の処理を終了する。もしこの判定の結果がYes、すなわち未処理の参加ノードが存在する場合には、ステップS328に進む。
 ステップS328でTTL減算部142は、自身が起点ノードであるクラスタの参加ノード(起点ノード以外のノード装置)のTTLを取得する。
 ステップS328の次のステップS330でTTL減算部142は、自身(起点ノード)が属するクラスタの参加ノードのTTLについて、TTL-1が0以下であるかどうかを判定する。もしこの判定がYesであれば、ステップS332に進む。もしこの判定がNoであれば、ステップS336に進む。
 ステップS332でTTL減算部142は、参加ノードの情報を自身のクラスタ情報128から削除する。そして、ステップS334に進む。
 ステップS334でTTL減算部142は、クラスタ識別子(CID)で識別されるクラスタのノード数に変化があった時点から一定時間のタイムアウトを計測するタイマを設定する。そして、ステップS338に進む。
 ステップS336では、参加ノードのTTLの値を減算する(1だけ減らす)。
 ステップS338では、参加ノードを処理済に設定する。そして、ステップS324に戻って未処理の参加ノードに対して同様の処理を行う。
<処理シーケンス>
 図40~42を参照して、クラスタの起点ノードに障害が発生したとき行われるクラスタ自律再生処理の処理シーケンスの例を説明する。
 図40は起点ノードに障害が発生する前のクラスタAの状態を示す図である。クラスタAは、ノード装置の識別子(NID)がNID=A~Eの5つのノード装置を含んでいる。ノード装置A(識別子NIDがAであるノード装置)が起点ノード(ゲートウェイ)である。
 図41は、各ノード装置として上述のノード装置10を用いたアドホックネットワークのクラスタにおいて、起点ノードAに障害が発生してクラスタ自律再生処理を行った後のトポロジーを示す図である。障害が発生したノード装置Aがクラスタから切り離され、ノード装置Bを起点ノードとするクラスタBが形成さている。すなわち、以下の例では、ノード装置Aを切り離した後のクラスタは、そのクラスタが含むノード装置の数が大(閾値以上)であり、クラスタ内のあるノード装置を起点ノードとして、自律的に再生される。
 図42は図40に示されている状態から図41に示されている状態への遷移の処理シーケンスである。
 ノード装置Eは自身のクラスタ情報128のノード装置E(自ノード)のシーケンス番号(SN)を1つ増加(カウントアップ)し、この情報に基づいてHelloパケット(a)が送信する。Helloパケット(a)のクラスタ情報(CI)フィールドには、
CI:<CID、{NID}、end>=<A、{<A、1>、<B、1>、<C、1>、<D、1>、<E、2>}、false>
なる情報が格納されている。
 Helloパケット(a)を受けたノード装置Dは、自身のクラスタ情報128に格納されているノード装置Eの更新を行う更新処理(1)を行う。
 次にノード装置Dは、自身のクラスタ情報128のノード装置D(自ノード)のシーケンス番号(SN)を1つ増加(カウントアップ)しこの情報に基づいてHelloパケット(b)を送信する。Helloパケット(b)のクラスタ情報(CI)フィールドには、
CI:<CID、{NID}、end>=<A、{<A、1>、<B、1>、<C、1>、<D、2>、<E、2>}、false>
となり、ノード装置Dとノード装置Eのシーケンス番号(SN)がカウントアップ(+1だけ更新)されている。
 Helloパケット(b)を受けたノード装置Cは、自身のクラスタ情報128に格納されているノード装置Dとノード装置Eのシーケンス番号(SN)の更新を行う更新処理(2)を行う。
 次にノード装置Cは、自身のクラスタ情報128のノード装置C(自ノード)のシーケンス番号(SN)を1つ増加(カウントアップ)し、この情報に基づいてHelloパケット(c)を送信する。Helloパケット(c)のクラスタ情報(CI)フィールドは、
CI:<CID、{NID}、end>=<A、{<A、1>、<B、1>、<C、2>、<D、2>、<E、2>}、false>
となる。
 Helloパケット(c)を受けたノード装置Cは、自身のクラスタ情報128に格納されているノード装置C~Eのシーケンス番号(SN)の更新を行う更新処理(3)を行う。
 次にノード装置Bは、自身のクラスタ情報128のノード装置B(自ノード)のシーケンス番号(SN)を1つ増加(カウントアップ)し、この情報に基づいてHelloパケット(d)を送信する。Helloパケット(d)のクラスタ情報(CI)フィールドは、
CI:<CID、{NID}、end>=<A、{<A、1>、<B、2>、<C、2>、<D、2>、<E、2>}、false>
となる。
 Helloパケット(d)を受けた起点ノードAは、自身のTTL144に格納されているノード装置B~EのTTLをリセットするリセット処理と、自身のクラスタ情報128に格納されているノード装置B~Eのシーケンス番号(SN)の更新を行う更新処理(4)を行う。
 起点ノードAは、自身のクラスタ情報128のノード装置A(自ノード)のシーケンス番号(SN)を1つ増加(カウントアップ)し、この情報に基づいてHelloパケット(e)を送信する。Helloパケット(e)のクラスタ情報(CI)フィールドは、
CI:<CID、{NID}、end>=<A、{<A、2>、<B、2>、<C、2>、<D、2>、<E、2>}、false>
となる。
 このHelloパケット(e)を送信の後、起点ノードAには障害(5)が発生するものとする。
 起点ノードAからHelloパケット(e)を受けたノード装置Bは、自身のTTL144に格納されている起点ノード装置AのTTLをリセットするリセット処理と、自身のクラスタ情報128に格納されているノード装置Aのシーケンス番号(SN)の更新を行う更新処理(6)を行う。ノード装置Bは、自身のクラスタ情報128のノード装置B(自ノード)のシーケンス番号(SN)を1つ増加(カウントアップ)し、この情報に基づいてHelloパケット(f)を送信する。Helloパケット(f)のクラスタ情報(CI)フィールドは、
CI:<CID、{NID}、end>=<A、{<A、2>、<B、3>、<C、2>、<D、2>、<E、2>}、false>
となる。
 ノード装置BからHelloパケット(f)を受けたノード装置Cは、自身のTTL144に格納されている起点ノード装置AのTTLをリセットするリセット処理と、自身のクラスタ情報128に格納されているノード装置A~Bのシーケンス番号(SN)の更新を行う更新処理(7)を行う。そして、ノード装置Cは、自身のクラスタ情報128のノード装置C(自ノード)のシーケンス番号(SN)を1つ増加(カウントアップ)し、この情報に基づいてHelloパケット(g)を送信する。Helloパケット(g)のクラスタ情報(CI)フィールドは、
CI:<CID、{NID}、end>=<A、{<A、2>、<B、3>、<C、3>、<D、2>、<E、2>}、false>
となる。
 ノード装置CからHelloパケット(g)を受けたノード装置Dも同様に、自身のTTL144に格納されている起点ノード装置AのTTLをリセットするリセット処理と、自身のクラスタ情報128に格納されているノード装置A~Cのシーケンス番号(SN)の更新を行う更新処理(8)を行う。そして、ノード装置Cは、自身のクラスタ情報128のノード装置D(自ノード)のシーケンス番号(SN)を1つ増加(カウントアップ)し、この情報に基づいてHelloパケット(h)を送信する。Helloパケット(h)のクラスタ情報(CI)フィールドは、
CI:<CID、{NID}、end>=<A、{<A、2>、<B、3>、<C、3>、<D、3>、<E、2>}、false>
となる。
 ノード装置DからHelloパケット(h)を受けたノード装置Eも同様に、自身のTTL144に格納されている起点ノード装置AのTTLをリセットするリセット処理と、自身のクラスタ情報128に格納されているノード装置A~Dのシーケンス番号(SN)の更新を行う更新処理(9)を行う。
 そしてまた、ノード装置Eは自身のクラスタ情報128のノード装置E(自ノード)のシーケンス番号(SN)を1つ増加(カウントアップ)し、この情報に基づいてHelloパケット(i)を送信する。Helloパケット(i)のクラスタ情報(CI)フィールドは、
CI:<CID、{NID}、end>=<A、{<A、2>、<B、3>、<C、3>、<D、3>、<E、3>}、false>
となる。
 Helloパケット(i)を受けたノード装置Dは、自身のクラスタ情報128に格納されているノード装置Eのシーケンス番号(SN)の更新を行う更新処理(10)を行う。そして、ノード装置Dは、自身のクラスタ情報128のノード装置D(自ノード)のシーケンス番号(SN)を1つ増加(カウントアップ)し、この情報に基づいてHelloパケット(j)を送信する。Helloパケット(j)のクラスタ情報(CI)フィールドは、
CI:<CID、{NID}、end>=<A、{<A、2>、<B、3>、<C、3>、<D、4>、<E、3>}、false>
となる。
 Helloパケット(j)を受けたノード装置Cは、自身のクラスタ情報128に格納されているノード装置D~Eのシーケンス番号(SN)の更新を行う更新処理(11)を行う。そして、ノード装置Cは、自身のクラスタ情報128のノード装置C(自ノード)のシーケンス番号(SN)を1つ増加(カウントアップ)し、この情報に基づいてHelloパケット(k)を送信する。Helloパケット(k)のクラスタ情報(CI)フィールドは、
CI:<CID、{NID}、end>=<A、{<A、2>、<B、3>、<C、4>、<D、4>、<E、3>}、false>
となる。
 Helloパケット(k)を受けたノード装置Bは、自身のクラスタ情報128に格納されているノード装置C~Eのシーケンス番号(SN)の更新を行う更新処理(12)を行う。ノード装置Bは、自身のクラスタ情報128のノード装置B(自ノード)のシーケンス番号(SN)を1つ増加(カウントアップ)し、この情報に基づいてHelloパケット(l)を送信する。
 起点ノードには障害(5)が生じており、ノード装置Bは、起点ノードAから更新されたシーケンス番号(SN)を受けることはない。よって、ノード装置Bは、次のHelloの送信タイミングで、自身のクラスタ情報128に格納されているノード装置B(自ノード)のシーケンス番号(SN)を1つ増加(カウントアップ)する更新を行う更新処理を行う。また、起点ノードAのSNが更新されないため、TTL減算部142により、TTL144に格納されている起点ノードAのTTLを一つ減算する減算処理(13)を行う。そして、Helloパケット(m)を送信する。Helloパケット(m)のクラスタ情報(CI)フィールドは、
CI:<CID、{NID}、end>=<A、{<A、2>、<B、5>、<C、4>、<D、4>、<E、3>}、false>
となる。
 Helloパケット(m)を受けたノード装置Cは、自身のクラスタ情報128に格納されているノード装置Bのシーケンス番号(SN)の更新を行う更新処理を行う。また、起点ノードAのSNが更新されないため、TTL減算部142により、TTL144に格納されている起点ノードAのTTLを一つ減算する減算処理(14)を行う。そして、自身のクラスタ情報128のノード装置C(自ノード)のシーケンス番号(SN)を1つ増加(カウントアップ)し、この情報に基づいてHelloパケット(n)を送信する。Helloパケット(n)のクラスタ情報(CI)フィールドは、
CI:<CID、{NID}、end>=<A、{<A、2>、<B、5>、<C、5>、<D、4>、<E、3>}、false>
となる。
 Helloパケット(n)を受けたノード装置Dは、自身のクラスタ情報128に格納されているノード装置B~Cのシーケンス番号(SN)の更新を行う更新処理を行う。また、起点ノードAのSNが更新されないため、TTL減算部142により、TTL144に格納されている起点ノードAのTTLを一つ減算する減算処理(15)を行う。そして、自身のクラスタ情報128のノード装置D(自ノード)のシーケンス番号(SN)を1つ増加(カウントアップ)し、この情報に基づいてHelloパケット(o)を送信する。Helloパケット(o)のクラスタ情報(CI)フィールドは、
CI:<CID、{NID}、end>=<A、{<A、2>、<B、5>、<C、5>、<D、5>、<E、3>}、false>
となる。
 Helloパケット(o)を受けたノード装置Eは、自身のクラスタ情報128に格納されているノード装置B~Dのシーケンス番号(SN)の更新を行う更新処理を行う。また、起点ノードAのSNが更新されないため、TTL減算部142により、TTL144に格納されている起点ノードAのTTLを一つ減算する減算処理(16)を行う。
 以上の処理を、ノード装置B~EのTTL144に格納されている起点ノードAのTTLが「0」になるまで繰り返す。
 起点ノードAのTTLが「0」になると、ノード装置B~Eは、各自のクラスタ情報128のクラスタ識別子(CID)をノード装置Bの識別子である「B」に書き換え、所属するクラスタの起点ノードをノード装置Bとし、クラスタ情報128からノード装置Aに関する情報を削除し、ノード装置Aを切り離す処理(17)を行う。
 次に、図43~45を参照しながら、参加ノードに障害が発生した場合のクラスタ自律修復処理の処理シーケンスについて説明する。
 参加ノードに障害が発生する前のクラスタAの状態は図40に示されている。クラスタAは、ノード装置の識別子(NID)がNID=A~Eの5つのノード装置を含んでいる。ノード装置A(識別子NIDがAであるノード装置)が起点ノード(ゲートウェイ)である。
 図43は、各ノード装置として上述のノード装置10を用いたアドホックネットワークのクラスタにおいて、参加ノードDに障害が発生してクラスタ自律修復処理を行った後のトポロジーを示す図である。障害が発生したノード装置Dと、起点ノードAに関してノード装置Dの反対側に配置されていたノード装置Eがクラスタから切り離されている。
 図44は、フリーノードになったノード装置Eがその後、自ら起点ノードとなってクラスタ生成処理を行う(α)か、他クラスタに取り込まれる(β)様子を示している。
 図45は図40に示されている状態から図43に示されている状態への遷移の処理シーケンスである。
 ノード装置Eは自身のクラスタ情報128のノード装置E(自ノード)のシーケンス番号(SN)を1つ増加(カウントアップ)し、この情報に基づいてHelloパケット(a)が送信する。Helloパケット(a)のクラスタ情報(CI)フィールドには、
CI:<CID、{NID}、end>=<A、{<A、1>、<B、1>、<C、1>、<D、1>、<E、2>}、false>
なる情報が格納されている。
 Helloパケット(a)を受けたノード装置Dは、自身のクラスタ情報128に格納されているノード装置Eのシーケンス番号(SN)の更新を行う更新処理(1)を行う。
 次にノード装置Dは、自身のクラスタ情報128のノード装置D(自ノード)のシーケンス番号(SN)を1つ増加(カウントアップ)し、この情報に基づいてHelloパケット(b)を送信する。Helloパケット(b)のクラスタ情報(CI)フィールドは、
CI:<CID、{NID}、end>=<A、{<A、1>、<B、1>、<C、1>、<D、2>、<E、2>}、false>
となり、ノード装置Dとノード装置Eのシーケンス番号(SN)がカウントアップ(+1だけ更新)されている。
 この後、ノード装置Dには障害(2)が発生するものとする。
 Helloパケット(b)を受けたノード装置Cは、自身のクラスタ情報128に格納されているノード装置Dとノード装置Eのシーケンス番号(SN)の更新を行う更新処理(3)を行う。
 次にノード装置Cは、自身のクラスタ情報128のノード装置C(自ノード)のシーケンス番号(SN)を1つ増加(カウントアップ)し、この情報に基づいてHelloパケット(c)を送信する。Helloパケット(c)のクラスタ情報(CI)フィールドは、
CI:<CID、{NID}、end>=<A、{<A、1>、<B、1>、<C、2>、<D、2>、<E、2>}、false>
となる。
 Helloパケット(c)を受けたノード装置Bは、自身のクラスタ情報128に格納されているノード装置C~Eのシーケンス番号(SN)の更新を行う更新処理(4)を行う。
 次にノード装置Bは、自身のクラスタ情報128のノード装置B(自ノード)のシーケンス番号(SN)を1つ増加(カウントアップ)し、この情報に基づいてHelloパケット(d)を送信する。Helloパケット(d)のクラスタ情報(CI)フィールドは、
CI:<CID、{NID}、end>=<A、{<A、1>、<B、2>、<C、2>、<D、2>、<E、2>}、false>
となる。
 Helloパケット(d)を受けた起点ノードAは、自身のTTL144に格納されているノード装置B~EのTTLをリセットするリセット処理と、自身のクラスタ情報128に格納されているノード装置B~Eのシーケンス番号(SN)の更新を行う更新処理(5)を行う。
 起点ノードAは、自身のクラスタ情報128のノード装置A(自ノード)のシーケンス番号(SN)を1つ増加(カウントアップ)し、この情報に基づいてHelloパケット(e)を送信する。Helloパケット(e)のクラスタ情報(CI)フィールドは、
CI:<CID、{NID}、end>=<A、{<A、2>、<B、2>、<C、2>、<D、2>、<E、2>}、false>
となる。
 起点ノードAからHelloパケット(e)を受けたノード装置Bは、自身のTTL144に格納されている起点ノード装置AのTTLをリセットするリセット処理と、自身のクラスタ情報128に格納されているノード装置Aのシーケンス番号(SN)の更新を行う更新処理(6)を行う。ノード装置Bは、自身のクラスタ情報128のノード装置B(自ノード)のシーケンス番号(SN)を1つ増加(カウントアップ)し、この情報に基づいてHelloパケット(f)を送信する。Helloパケット(f)のクラスタ情報(CI)フィールドは、
CI:<CID、{NID}、end>=<A、{<A、2>、<B、3>、<C、2>、<D、2>、<E、2>}、false>
となる。
 ノード装置BからHelloパケット(f)を受けたノード装置Cは、自身のTTL144に格納されている起点ノード装置AのTTLをリセットするリセット処理と、自身のクラスタ情報128に格納されているノード装置A~Bのシーケンス番号(SN)の更新を行う更新処理(7)を行う。そして、ノード装置Cは、自身のクラスタ情報128のノード装置B(自ノード)のシーケンス番号(SN)を1つ増加(カウントアップ)し、この情報に基づいてHelloパケット(g)を送信する。Helloパケット(g)のクラスタ情報(CI)フィールドは、
CI:<CID、{NID}、end>=<A、{<A、2>、<B、3>、<C、3>、<D、2>、<E、2>}、false>
となる。
 ノード装置Cから送られたHelloパケット(g)は、故障のためノード装置Dには届かない。
 このとき、ノード装置Eでは、Helloパケットの送信処理を行い、自身のクラスタ情報128に格納されているノード装置E(自ノード)のシーケンス番号(SN)を1つ増加(カウントアップ)する更新を行う更新処理と、所定の時間が経過しても更新された起点ノードAのシーケンス番号(SN)が届かないので、起点ノードAのTTLの減算する減算処理(8)を行う。
 そして、いずれノード装置EのTTL144に格納されている起点ノードAのTTLが「0」になる。
 ノード装置Cは、自身のクラスタ情報128のノード装置C(自ノード)のシーケンス番号(SN)を1つ増加(カウントアップ)し、この情報に基づいてHelloパケット(h)を送信する。Helloパケット(h)のクラスタ情報(CI)フィールドは、
CI:<CID、{NID}、end>=<A、{<A、2>、<B、3>、<C、4>、<D、2>、<E、2>}、false>
となる。
 Helloパケット(h)を受けたノード装置Bは、自身のクラスタ情報128に格納されているノード装置Cの更新を行う更新処理(10)を行う。そして、ノード装置Bは、自身のクラスタ情報128のノード装置B(自ノード)のシーケンス番号(SN)を1つ増加(カウントアップ)し、この情報に基づいてHelloパケット(i)を送信する。Helloパケット(i)のクラスタ情報(CI)フィールドは、
CI:<CID、{NID}、end>=<A、{<A、2>、<B、4>、<C、4>、<D、2>、<E、2>}、false>
となる。
 Helloパケット(i)を受けた起点ノードAでは、自身のクラスタ情報128に格納されているノード装置B~Cのシーケンス番号(SN)の更新を行う更新処理を行う。
 また、参加ノード装置D~Eのシーケンス番号(SN)が更新されないため、TTL減算部142により、自身のTTL144に格納されている参加ノード装置Dとノード装置EのTTLをそれぞれ1つずつ減算する減算処理(11)を行う。
 このような処理を繰り返すと、起点ノードAのTTL144に格納されているノード装置Dとノード装置EのTTLはいずれ共に「0」になる(12)。
 すると、起点ノードAは、起点ノードAのTTL144に格納されているノード装置Dとノード装置EのTTLが共に「0」になると、クライアント情報128から、ノード装置Dとノード装置Eに関する情報を削除する変更処理(13)を行う。
 そして、起点ノードAはHelloパケット(j)を送信する。Helloパケット(j)のクラスタ情報(CI)フィールドは、たとえば、
CI:<CID、{NID}、end>=<A、{<A、24>、<B、24>、<C、24>}、false>
となり、クラスタに属するノード装置からノード装置Dとノード装置Eが削除されている。
 次にノード装置Bでは、自身のクラスタ情報128の更新処理(14)を行い、Helloパケット(k)を送信する。Helloパケット(k)のクラスタ情報(CI)フィールドは、たとえば、
CI:<CID、{NID}、end>=<A、{<A、24>、<B、25>、<C、24>}、false>
となる。
 Helloパケット(i)を受けた起点ノードCでは、自身のクラスタ情報128の更新処理(15)を行う。
 このようにして図44の状況に至る。フリーノードになったノード装置Eはその後、自ら起点ノードとなってクラスタ生成処理を行う(α)か、他クラスタに取り込まれる(β)。
100 ノード装置
102 受信部
104 ノード種別判定部
106 参加処理部
108 クラスタ情報更新部
110 クラスタ生成部
112 フリーノードリスト生成部
114 クラスタ統合先候補通知部
116 クラスタ統合要求受付部
118 クラスタ統合要求更新部
120 クラスタ統合リスト生成部
122 クラスタ統合処理部
124 クラスタ統合リスト通知部
126 ノード種別情報
128 クラスタ情報
130 フリーノードリスト
132 マージクラスタリスト
134 マージノードリスト
136 設定部
138 ハローパケット生成部
140 送信部
142 TTL(Time To Live)減算部
144、 TTL(Time To Live)
200、202、210 Helloパケット
300、302、304、306、308、310、312、314 TTL(Time To Live)
400 MPU(Micro Processing Unit)
402 PHY(Physical Layer)チップ
404 タイマIC
406 DRAM(Dynamic Random Access Memory)
408 フラッシュメモリ
410 無線モジュール
412 バス

Claims (10)

  1.  複数のノード装置を含むネットワーク中のノード装置であって、
     前記ネットワーク中の前記複数のノード装置の中で、前記ノード装置が前記ネットワーク中の情報伝達のための経路に関する経路情報を記憶するノード装置のグループであるクラスタに含まれるノード装置と、前記クラスタの起点となる起点ノードに関する情報を格納するクラスタ情報格納部と、
     前記クラスタに含まれ、前記ノード装置自身とは異なる第1のノード装置に対して整数値として定義され、所定のデフォルト値を有するTTL値を格納するTTL格納部と、
     前記第1のノード装置に対して定義され、前記第1のノード装置が前記経路情報の通知に用いられるハローパケットを送信するごとにカウントアップされるシーケンス番号を含む前記第1のノード装置が異なるタイミングで送信する第1および第2のハローパケットを受信する受信部と、
     前記受信部によって受信された前記第1のハローパケットおよび前記第2のハローパケットに含まれている前記第1のノード装置に対する第1のシーケンス番号および第2のシーケンス番号が互いに一致するかどうかを判定するシーケンス番号判定部と、
     前記シーケンス番号判定部における判定で、第1のシーケンス番号と第2のシーケンス番号が同一であるとき、前記TTL格納部に格納されているTTL値を減らす処理を行うTTL減算部と、
     前記第1のノード装置に対するTTL値が所定の値以下になったとき、前記第1のノード装置の識別子を前記クラスタ情報格納部から削除することによって、前記第1のノード装置を前記クラスタから切り離すクラスタ情報更新部と、
    を含むノード装置。
  2.  さらに、
     前記クラスタ情報格納部に格納されているクラスタに含まれるノード装置と、前記クラスタの起点となる起点ノードに関する情報と、前記ノード装置自身に対して整数値として定義されるシーケンス番号に関する情報を参照して、ハローパケットを生成するハローパケット生成部と、
     前記ハローパケット生成部で生成されたハローパケットを送信する送信部と、
    を含み
     クラスタ情報格納部は、前記ノード装置自身に対する前記シーケンス番号を格納し、前記ノード装置自身に対する前記シーケンス番号は前記送信部からハローパケットが送信される毎に更新される、請求項1に記載のノード装置。
  3.  前記ノード装置が前記起点ノードであるとき、前記TTL格納部は、前記クラスタ内に含まれる前記ノード自身以外のノード装置のTTL値を格納する、請求項1または2に記載のノード装置。
  4.  前記ノード装置が前記起点ノードではないとき、前記TTL格納部は、前記ノード自身が含まれるクラスタの前記起点ノードのTTL値を格納する、請求項1乃至3のいずれか一項に記載のノード装置。
  5.  前記クラスタ情報更新部は、前記ノード装置自身が前記起点ノードであるとき、前記クラスタ内に含まれる前記ノード自身以外のノード装置である参加ノードに対するTTL値が所定の値以下であるとき、前記参加ノードの識別子を前記クラスタ情報格納部から削除する、請求項1乃至4のいずれか一項に記載のノード装置。
  6.  前記クラスタ情報更新部は、前記第1のノード装置が前記起点ノードであるとき、前記第1のノード装置が切り離された前記クラスタに含まれるノード装置の数が所定の値以上であれば、前記第1のノード装置以外で前記クラスタに含まれるノード装置を前記起点ノードとして再定義することによって、前記クラスタを再生し、前記第1のノード装置が切り離された前記クラスタに含まれるノード装置の数が所定の値未満であれば、前記クラスタに含まれるノード装置をいかなるクラスタにも含まれないフリーノード装置として前記クラスタを開放する、請求項1乃至5のいずれか一項に記載のノード装置。
  7.  ネットワーク中の前記複数のノード装置の中で、前記ノード装置が前記ネットワーク中の情報伝達のための経路に関する経路情報を記憶するノード装置のグループであるクラスタに含まれるノード装置と、前記クラスタの起点となる起点ノードに関する情報を格納することと、
     前記クラスタに含まれ、前記ノード装置自身とは異なる第1のノード装置に対して整数値として定義され、所定のデフォルト値を有するTTL値を格納することと、
     前記第1のノード装置に対して定義され、前記第1のノード装置が前記経路情報の通知に用いられるハローパケットを送信するごとにカウントアップされるシーケンス番号を含む前記第1のノード装置が異なるタイミングで送信する第1および第2のハローパケットを受信することと、
     前記受信部によって受信された前記第1のハローパケットおよび前記第2のハローパケットに含まれている前記第1のノード装置に対する第1のシーケンス番号および第2のシーケンス番号が互いに一致するかどうかを判定することと、
     第1のシーケンス番号と第2のシーケンス番号が同一であるとき、前記TTL格納部に格納されているTTL値を減らす処理を行うこと(S336)と、
      前記第1のノード装置に対するTTL値が所定の値以下になったとき、前記第1のノード装置の識別子を前記クラスタ情報格納部から削除することによって、前記第1のノード装置を前記クラスタから切り離すことと
    を含む通信方法。
  8.  さらに、
     クラスタに含まれるノード装置と、前記クラスタの起点となる起点ノードに関する情報と、前記ノード装置自身に対して整数値として定義されるシーケンス番号に関する情報を参照して、ハローパケットを生成することと、
     前記ハローパケット生成部で生成されたハローパケットを送信することと、
    を含み
     前記ノード装置自身に対する前記シーケンス番号はハローパケットが送信される毎に更新される、請求項7に記載の通信方法。
  9.  さらに、前記ノード装置自身が前記起点ノードであるとき、前記クラスタ内に含まれる前記ノード自身以外のノード装置である参加ノードに対するTTL値が所定の値以下であるとき、前記参加ノードの識別子を前記クラスタ情報格納部から削除することを含む、請求項7または8に記載の通信方法。
  10.  前記クラスタ情報更新部は、前記第1のノード装置が前記起点ノードであるとき、前記第1のノード装置が切り離された前記クラスタに含まれるノード装置の数が所定の値以上であれば、前記第1のノード装置以外で前記クラスタに含まれるノード装置を前記起点ノードとして再定義することによって、前記クラスタを再生し、前記第1のノード装置が切り離された前記クラスタに含まれるノード装置の数が所定の値未満であれば、前記クラスタに含まれるノード装置をいかなるクラスタにも含まれないフリーノード装置として前記クラスタを開放することを含む、請求項7乃至9のいずれか一項に記載の通信方法。
PCT/JP2012/062563 2012-05-16 2012-05-16 ノード装置および通信方法 WO2013171868A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2012/062563 WO2013171868A1 (ja) 2012-05-16 2012-05-16 ノード装置および通信方法
JP2014515418A JP5928583B2 (ja) 2012-05-16 2012-05-16 ノード装置および通信方法
US14/507,065 US9450830B2 (en) 2012-05-16 2014-10-06 Node apparatus and communication method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/062563 WO2013171868A1 (ja) 2012-05-16 2012-05-16 ノード装置および通信方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/507,065 Continuation US9450830B2 (en) 2012-05-16 2014-10-06 Node apparatus and communication method

Publications (1)

Publication Number Publication Date
WO2013171868A1 true WO2013171868A1 (ja) 2013-11-21

Family

ID=49583311

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2012/062563 WO2013171868A1 (ja) 2012-05-16 2012-05-16 ノード装置および通信方法

Country Status (3)

Country Link
US (1) US9450830B2 (ja)
JP (1) JP5928583B2 (ja)
WO (1) WO2013171868A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018117224A (ja) * 2017-01-17 2018-07-26 富士通株式会社 無線通信制御方法、無線通信制御装置及び無線通信制御プログラム

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NZ607298A (en) * 2013-02-19 2014-08-29 Allied Telesis Holdings Kk Improvements in and relating to network communications
US10423643B2 (en) * 2013-08-29 2019-09-24 Oracle International Corporation System and method for supporting resettable acknowledgements for synchronizing data in a distributed data grid
US9658897B2 (en) 2014-06-23 2017-05-23 International Business Machines Corporation Flexible deployment and migration of virtual machines
US9473353B2 (en) 2014-06-23 2016-10-18 International Business Machines Corporation Cluster reconfiguration management
US9743367B2 (en) * 2014-09-18 2017-08-22 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Link layer discovery protocol (LLDP) on multiple nodes of a distributed fabric
US10069689B1 (en) * 2015-12-18 2018-09-04 Amazon Technologies, Inc. Cache based on dynamic device clustering
US10097318B2 (en) 2016-10-07 2018-10-09 Trellisware Technologies, Inc. Methods and systems for reliable broadcasting using re-transmissions
CN108134986B (zh) * 2016-12-01 2020-08-07 华为技术有限公司 报文传输方法及装置
US10455484B2 (en) * 2017-02-28 2019-10-22 Qualcomm Incorporated Methods and systems for access point clustering
US10477543B2 (en) 2017-09-27 2019-11-12 Trellisware Technologies, Inc. Methods and systems for improved communication in multi-hop networks
US11388058B2 (en) * 2018-08-02 2022-07-12 Synadia Communications Inc. System and method for a distributed computing cluster architecture
CN109101260B (zh) * 2018-08-30 2023-01-24 郑州云海信息技术有限公司 一种节点软件的升级方法、装置和计算机可读存储介质
CN111082898B (zh) * 2018-10-19 2022-08-26 华为技术有限公司 一种报文处理方法和装置
JP6997378B2 (ja) * 2018-10-26 2022-01-17 日本電信電話株式会社 推定方法、推定装置及び推定プログラム
CN113170376A (zh) * 2018-12-06 2021-07-23 维萨国际服务协会 接近装置网络

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010055602A1 (ja) * 2008-11-14 2010-05-20 日本電気株式会社 ネットワークシステム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060007882A1 (en) * 2004-07-07 2006-01-12 Meshnetworks, Inc. System and method for selecting stable routes in wireless networks
JP2011193341A (ja) 2010-03-16 2011-09-29 Oki Electric Industry Co Ltd 無線通信装置、ネットワーク構成方法及びコンピュータプログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010055602A1 (ja) * 2008-11-14 2010-05-20 日本電気株式会社 ネットワークシステム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
HIROKAZU SHIBUYA ET AL.: "A Method of Cluster Mergence Considering Network Condition for Periodic Broadcasting VANET with Clustering", IEICE TECHNICAL REPORT, ITS2009-85, THE INSTITUTE OF ELECTRONICS, INFORMATION AND COMMUNICATION ENGINEERS, March 2010 (2010-03-01) *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018117224A (ja) * 2017-01-17 2018-07-26 富士通株式会社 無線通信制御方法、無線通信制御装置及び無線通信制御プログラム

Also Published As

Publication number Publication date
US9450830B2 (en) 2016-09-20
US20150023213A1 (en) 2015-01-22
JP5928583B2 (ja) 2016-06-01
JPWO2013171868A1 (ja) 2016-01-07

Similar Documents

Publication Publication Date Title
JP5928583B2 (ja) ノード装置および通信方法
JP5928582B2 (ja) ノード装置および通信方法
US7551562B2 (en) Determining bidirectional path quality within a wireless mesh network
Chiang et al. A minimum hop routing protocol for home security systems using wireless sensor networks
JP6323856B2 (ja) 通信制御方法および移動端末
JP4099185B2 (ja) 移動アドホクネットワークでの最適方向−基盤フラッディング方法
US9629063B2 (en) Method and system for global topology discovery in multi-hop ad hoc networks
WO2017101575A1 (zh) 一种无线自组网的路由方法及装置
EP2894812B1 (en) Method and apparatus for establishing a virtual interface for a set of mutual-listener devices
JP5839041B2 (ja) ノード装置および通信方法
US20130094404A1 (en) Peer-to-peer communications in ami with source-tree routing
CN109068367B (zh) 一种无线令牌传递方法、装置、设备及可读存储介质
JP5875696B2 (ja) データ配信システム、配信装置、端末装置、データ配信方法
Del-Valle-Soto et al. An efficient multi-parent hierarchical routing protocol for WSNs
JP5673840B2 (ja) ノード装置および通信方法
CN102573000B (zh) 基于直接/间接矩阵的无线自组织网络保护路由生成方法
JP4767329B2 (ja) ネットワークシステムおよび通信方法
Marinho et al. Mobile devices routing using Wi-Fi direct technology
WO2012132013A1 (ja) ノード、リンク形成方法およびリンク形成プログラム
JP2011109412A (ja) ノード装置、アドホックネットワークシステムおよびネットワーク参加方法
US11463350B2 (en) Interconnecting local RPL instance nodes via global RPL instance node as AODV relay
Midha et al. Performance Analysis of AODV & OLSR for MANET
KR20110003210A (ko) 센서 네트워크의 자율 구성 방법
Rao et al. Impact and Suitability of Reactive Routing Protocols, Energy-Efficient and AI Techniques on QoS Parameters of WANETs
CN112512091A (zh) 一种多出口的mesh网络路由器配置方法与装置

Legal Events

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

Ref document number: 12876676

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2014515418

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12876676

Country of ref document: EP

Kind code of ref document: A1