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

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

Info

Publication number
WO2013042208A1
WO2013042208A1 PCT/JP2011/071402 JP2011071402W WO2013042208A1 WO 2013042208 A1 WO2013042208 A1 WO 2013042208A1 JP 2011071402 W JP2011071402 W JP 2011071402W WO 2013042208 A1 WO2013042208 A1 WO 2013042208A1
Authority
WO
WIPO (PCT)
Prior art keywords
cluster
node
node device
gateway
sub
Prior art date
Application number
PCT/JP2011/071402
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 JP2013534492A priority Critical patent/JP5673840B2/ja
Priority to PCT/JP2011/071402 priority patent/WO2013042208A1/ja
Publication of WO2013042208A1 publication Critical patent/WO2013042208A1/ja
Priority to US14/216,462 priority patent/US20140198770A1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W36/00Hand-off or reselection arrangements
    • H04W36/16Performing reselection for specific purposes
    • H04W36/22Performing reselection for specific purposes for handling the traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/04Interdomain routing, e.g. hierarchical routing

Definitions

  • the present invention relates to a communication method between a plurality of node devices belonging to a network and the node device.
  • Node devices belonging to a wireless ad hoc network use Hello packets to propagate routing information.
  • the node device A belonging to the ad hoc network shown in FIG. 1 generates a Hello packet including routing information held by the node device A and broadcasts it periodically.
  • 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 do.
  • the node device B also acquires route quality information from the Hello packet, and performs communication using a route with good quality information as much as possible. This quality information includes loop information.
  • the node device belonging to the ad hoc network learns route information to other node devices included in the network using the Hello packet, and performs communication using the obtained 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 routing information to each of the node devices other than the node device A in the ad hoc network in the routing table. Therefore, the node device A can transmit a data packet to the node device C via the node device B, for example.
  • a communication method in which a node device that receives a packet compares the identification information of the transmission target packet stored in advance with the identification information of the received packet. In this method, the possibility of transmission of the route to the final destination of the received packet is determined based on the comparison result. Further, a method has been devised in which weighting is performed on a node that relays a packet for each final destination node of the packet, and a packet destination is determined based on the weighting result. Further, when a cluster is formed by a plurality of node devices arranged in the vicinity of each other and a cluster head is selected from the cluster, a node device having more adjacent nodes is selected as a cluster head with a higher probability. The method of doing so is known. In addition, a method has been devised in which a stable route is constructed in a tree shape based on the position information of the wireless sensor node and the radio wave strength of each other and divided into groups.
  • An object of the present invention is to suppress the capacity of a routing table held by a node device.
  • the apparatus includes a reception unit, a participation request unit, a routing table, a generation request unit, and a transmission unit.
  • the receiving unit receives a route information packet that notifies network route information.
  • the participation request unit transfers to the first cluster to which the node belongs to the first node device selected from among the node devices that can communicate with the adjacent node device that is an adjacent node device.
  • a participation request packet for requesting participation is generated.
  • the routing table stores a route to each belonging node device belonging to the first cluster.
  • the generation request unit sends a second node device not belonging to the first cluster to a second node device different from the first cluster.
  • a generation request packet for requesting generation of the second cluster is generated.
  • the transmission unit transmits the participation request packet to the first node device, and transmits the generation request packet to the second node device.
  • the capacity of the routing table is suppressed.
  • FIG. 2 shows an example of the generated cluster.
  • the ad hoc network shown in FIG. 1 is divided into three clusters C1 to C3.
  • Each node device included in the ad hoc network recognizes an adjacent node device by transmitting and receiving a route information packet for notifying route information of the network.
  • the route information packet is a Hello packet.
  • the “adjacent node device” of a certain node device refers to a node device located within a range in which a packet transmitted from a certain node device can be received.
  • the origin node device transmits a control packet for requesting the neighboring node device to belong to the same cluster as the cluster to which the origin node device belongs.
  • the starting node device stores in advance a threshold value indicating the number of node devices that can be included in one cluster, and includes a number of node devices equal to or less than the threshold value in one cluster.
  • the node device transmits a Hello packet including an identifier for identifying the joined cluster.
  • the node device records the route to the node device belonging to the same cluster in the routing table. However, the node device does not record the information of the node device to which the cluster to which the node belongs belongs in the routing table.
  • a “sub-gateway” is selected from node devices that can communicate with node devices in adjacent clusters.
  • the nodes (SG11 to SG32) indicated by squares are sub-gateways.
  • a node device operating as a sub-gateway includes, in the routing table, information on sub-gateways included in a cluster adjacent to the cluster to which the node device belongs.
  • the sub-gateway SG21 holds information on SG12. Therefore, the node device can transmit the packet to the node device in a cluster different from the cluster to which the node device belongs via the sub-gateway.
  • the node device belonging to the cluster C2 can transmit a packet to the node device belonging to the cluster C1 via the sub-gateways SG21 and SG12.
  • the sub-gateway includes information on the nodes in the adjacent cluster in addition to the route to the node device in the cluster to which the sub-gateway belongs. Therefore, the node device can transmit a packet to nodes belonging to different clusters via the sub-gateway.
  • the route information held by the sub-gateway is also the route to the node device in the cluster to which the sub-gateway belongs and the route to the node device belonging to the adjacent cluster.
  • the number of routes included in the routing table is smaller than the number of routes to each of the node devices included in the entire network. Accordingly, the size of the routing table held by the node device in the network can be reduced by the method according to the embodiment.
  • FIG. 3 shows an example of the configuration of the node device 10.
  • the node device 10 includes a reception unit 11, a packet branch processing unit 12, an FID (frame identification) generation unit 13, a higher level processing unit 14, a Hello generation unit 15, a transmission unit 16, a Hello processing unit 20, a reception processing unit 30, and cluster processing.
  • Unit 40 search processing unit 70, data processing unit 80, and storage unit 90.
  • the receiving unit 11 receives a packet from the adjacent node device 10.
  • FIG. 4A shows an example of a configuration of a packet transmitted / received between the node devices 10.
  • the packet has a header and a payload.
  • the header has a common format regardless of the type of the packet, and includes a Type field, a Length field, a global destination (Global Destination, GD) field, a global source (Global Source, GS) field, a local source (Local Source, LS). ) Field and a local destination (LD) field.
  • “global destination” indicates the node device 10 that is the final destination of a packet.
  • the “local destination” indicates the node device 10 designated as the destination in the case of one-hop transfer performed to transmit the packet to the global destination.
  • “Local transmission source” refers to the node device 10 that is a transfer source when a packet is transferred by one hop.
  • the “global transmission source address” indicates the node device 10 that generated the packet.
  • the device may be an identifier (ID) unique to the device, such as a (MAC) address.
  • the Type field indicates the type of data included in the payload.
  • An example of the relationship between the value of the Type field and the packet type is shown in the table of FIG.
  • the value of the Type field is set to “0”.
  • a packet whose value of the Type field is “1” is a cluster data packet (CDP).
  • a packet whose Type field value is “2” is a highway data packet (HDP), and a packet whose value is “3” is a data packet (DP).
  • a packet whose value of the Type field is “4” is a search data packet (SDP).
  • Each packet will be described in detail later.
  • the cluster data packet, the search data packet, and the Hello packet are used for controlling the node device 10.
  • a cluster data packet, a search data packet, or a Hello packet may be referred to as a “control packet”.
  • the Length field represents the length of the packet.
  • the packet branch processing unit 12 determines the type of the received packet based on the value of the Type field in the header of the received packet, and outputs the packet to a predetermined output destination for each type of packet.
  • the packet branch processing unit 12 outputs the Hello packet to the Hello processing unit 20.
  • the cluster data packet is output to the cluster processing unit 40, and the highway data packet is output to the data processing unit 80.
  • the data packet is an Acknowledgment (ACK) packet
  • the data packet is output to the reception processing unit 30, but the data packet other than the ACK packet is output to the data processing unit 80.
  • the packet branch processing unit 12 outputs the search data packet to the search processing unit 70. Information contained in the packet will be described later.
  • the Hello processing unit 20 includes a route management unit 21 and an unaffiliated node identification unit 22.
  • the hello processing unit 20 acquires information included in the hello packet, and updates the link table 91, the cluster table 92, the unaffiliation table 93, and the routing table 95.
  • the link table 91, cluster table 92, unaffiliation table 93, and routing table 95 are stored in the storage unit 90.
  • the link table 91 stores information such as the identifier of the cluster in which the adjacent node device 10 participates and whether the adjacent node device 10 is designated as a sub-gateway in association with the identifier of the adjacent node device 10. To do.
  • the cluster table 92 records information on the node device 10 belonging to the same cluster as the cluster to which the node device 10 belongs.
  • the unaffiliation table 93 records information about the node devices 10 that do not belong to the cluster.
  • a node device 10 that does not belong to a cluster may be referred to as an “unassigned node device”.
  • the routing table 95 records a route to the node device 10 belonging to the same cluster as the cluster to which the node device 10 belongs.
  • the link table 91, cluster table 92, unaffiliation table 93, and routing table 95 will be described in detail later.
  • the cluster processing unit 40 includes a cluster generation unit 50, a sub-gateway generation unit 60, a default GW determination unit 41, a cluster search table (CCT) 42, an adjacent cluster table (NCT) 43, and a gateway candidate table (SGWCT) 44.
  • the cluster generation unit 50 includes a participation request unit 51, a participation processing unit 52, a generation request unit 53, and an unaffiliated node specification unit 54.
  • the participation request unit 51, the generation request unit 53, and the unaffiliated node specifying unit 54 operate.
  • the participation processing unit 52 operates in the node device 10 that is not selected as the origin node device.
  • the cluster construction table 42 is a table used when the participation request unit 51 operates in the node device 10 newly designated as the origin node device by the generation request unit 53.
  • the cluster construction table 42 is a table of the node device 10 designated as the origin node device. Information is recorded. Further, the unaffiliated node specifying unit 54 uses the information of the unaffiliation table 93 and updates it appropriately.
  • the sub-gateway generation unit 60 includes an adjacent cluster notification unit 61, a candidate table generation unit 62, and a sub-gateway determination unit 63.
  • the candidate table generation unit 62 and the sub-gateway determination unit 63 operate on the node device 10 that is operating as the origin node device.
  • the adjacent cluster notification unit 61 can operate in both the node device 10 that is not operating as the starting node device and the starting node device.
  • the adjacent cluster table 43 and the gateway candidate table 44 are referred to by the operations of the sub-gateway determination unit 63 and the candidate table generation unit 62.
  • the default GW determination unit 41 operates on the node device 10 that is not set as a sub-gateway.
  • the default GW determination unit 41 determines a sub-gateway (default gateway) used by the node device 10 to transmit a packet to the node device 10 belonging to another cluster.
  • the adjacent cluster notification unit 61, candidate table generation unit 62, sub-gateway determination unit 63, adjacent cluster table 43, and gateway candidate table 44 will also be described in detail later.
  • the search processing unit 70 includes a search destination determination unit 71, a search execution unit 72, and a search log table 73.
  • the search destination determination unit 71 and the search execution unit 72 operate in a sub-gateway.
  • the search destination determination unit 71 and the search execution unit 72 use the search log table 73 and the highway table 94 to search the transmission destination of the highway data packet. Communication using the highway data packet will be described later.
  • the data processing unit 80 includes a data packet (DP) processing unit 81, a highway data packet (HDP) processing unit 82, and a pending data table 83.
  • the highway data packet processing unit 82 can convert the highway data packet received from the packet branch processing unit 12 into a data packet.
  • the highway data packet processing unit 82 outputs the data packet obtained by the conversion to the data packet processing unit 81. Further, the data packet from the data packet processing unit 81 can be converted into a highway data packet and output to the transmission unit 16.
  • the data packet processing unit 81 processes the data packet input from the packet branch processing unit 12, the data packet input from the highway data packet processing unit 82, and the data packet from the upper processing unit 14.
  • the data packet processing unit 81 can output the information included in the data packet to the upper processing unit 14 as appropriate.
  • processing by an upper layer application is performed.
  • the data packet processing unit 81 and the highway data packet processing unit 82 generate a packet using the FID input from the FID generation unit 13. Highway data packet processing will also be described later.
  • the reception processing unit 30 includes an ACK processing unit 31 and a buffer unit 32.
  • the ACK processing unit 31 confirms the content of the data packet received from the packet branch processing unit 12 and recognizes whether the reception success or failure is notified.
  • the buffer unit 32 stores transmitted data packets in preparation for failure and retransmission of data packet transmission. Therefore, when an ACK packet indicating successful reception is input, the ACK processing unit 31 deletes the data packet specified by the received ACK packet from the buffer unit 32.
  • the Hello generation unit 15 generates a Hello packet for notifying the adjacent node device 10 of the route to the node device 10 and the route recorded in the routing table 95.
  • the transmission unit 16 transmits the packet input from the Hello generation unit 15, the cluster processing unit 40, the search processing unit 70, and the data processing unit 80 to the adjacent node.
  • the storage unit 90 includes an FID management table 96 in addition to the link table 91, the cluster table 92, the unaffiliated table 93, the highway table 94, and the routing table 95.
  • the FID management table 96 is used for loop detection of a route through which data packets are transmitted and received.
  • the data packet processing unit 80 records the GS and FID of the data packet in the FID management table 96 in association with each other.
  • the reception processing unit 30 compares the combination of the FID and GS of the received data packet with information recorded in the FID management table 96. When the combination of GS and FID of the received data packet is already recorded in the FID management table 96, the reception processing unit 30 determines that the data packet has returned by the loop.
  • FIG. 5 is a diagram illustrating an example of a hardware configuration of the node device 10.
  • the node device 10 includes a MicroProcessing Unit (MPU) 100, a bus 101 (101a to 101c), a PHYsical layer (PHY) chip 102, a timer IC 104, a dynamic random access memory (DRAM) 106, a flash memory 107, and a wireless module 108.
  • the buses 101a to 101c are connected so that data can be input and output among the MPU 100, the PHY chip 102, the timer IC 104, the DRAM 106, the flash memory 107, and the wireless module 108.
  • the MPU 100 reads a program such as firmware stored in the flash memory 107 and performs processing. At this time, the MPU 100 can use the DRAM 106 as a working memory.
  • the MPU 100 operates as a packet branch processing unit 12, an FID generation unit 13, an upper processing unit 14, a Hello generation unit 15, a Hello processing unit 20, a reception processing unit 30, a cluster processing unit 40, a search processing unit 70, and a data processing unit 80. To do.
  • the DRAM 106 operates as the storage unit 90.
  • the PHY chip 102 and the wireless module 108 operate as the reception unit 11 and the transmission unit 16.
  • the PHY chip 102 is optional, and the node device 10 can perform communication via a line via the PHY chip 102.
  • the node device 10 that operates as a gateway between the L3 network and the ad hoc network can communicate with the node device in the L3 network using the PHY chip 102.
  • the timer IC 104 is used when measuring a time until receiving a response packet for a packet transmitted by the participation request unit 51 or the generation request unit 53, and operates as a part of the participation request unit 51 or the generation request unit 53.
  • a program such as firmware may be provided by being stored in a computer-readable storage medium and installed in the node device 10.
  • the program may be installed in the node device 10 by being downloaded from the network via the PHY chip 102 or the wireless module 108.
  • other types of storage devices other than the DRAM 106 and the flash memory 107 may be used.
  • the node device 10 may be realized by a computer.
  • the node device 10 in the network confirms an adjacent node and an unaffiliated node using a Hello packet.
  • An example of a Hello packet is shown in FIG.
  • the node device 10a broadcasts a Hello packet to notify the node device 10b adjacent to the node device 10a of the node device 10a information.
  • the payload includes a cluster field, an Sgw flag, and data.
  • the cluster field the cluster identifier of the cluster to which the node device 10a that is the transmission source of the Hello packet belongs is recorded. However, since no cluster is formed here, the cluster identifier is not stored.
  • the Sgw flag represents whether the transmission source node device 10a is a sub-gateway.
  • the fact that the Sgw flag is set to “0” means that the sub gateway is not set, and the fact that the Sgw flag is set to “1” means that the sub gateway is set. It expresses that it is.
  • the value of the Sgw flag is 0.
  • Information about the GD recorded in the routing table 95 is recorded in the data field. However, since the routing table 95 is not generated before the cluster is generated, a Hello packet that does not include data in the data field is transmitted.
  • the operation of the node device 10b when a Hello packet is received will be described with reference to FIGS.
  • the path management unit 21 and the unaffiliated node specifying unit 22 provided in the node device 10b receive the Hello packet via the packet branch processing unit 12, the link table 91 and the unaffiliated table are based on the received Hello packet. 93 is updated.
  • FIG. 6 shows an example of the link table 91.
  • the link table 91 records the address of the adjacent node, the cluster identifier, the number of hops, and the value of the Sgw flag set for the adjacent node device for each of the adjacent node devices of the node device 10.
  • the cluster identifier in the link table 91 is an identifier for identifying the cluster to which the adjacent node device belongs.
  • FIG. 6 shows an example of the link table 91. For example, the information included in the link table 91 can be changed such that the link table 91 does not include the number of hops.
  • FIG. 7 is a flowchart for explaining an example of the operation of the route management unit 21 when the link table 91 is updated.
  • the route management unit 21 extracts the LS of the received Hello packet and searches the address column of the link table 91 using the LS as a key (step S1).
  • the path management unit 21 creates an entry corresponding to the LS (No in step S2, step S3).
  • the route management unit 21 sets the values of the LS, cluster ID, and Sgw flag of the Hello packet in the added entry, and records the number of hops (step S4). That is, the route management unit 21 registers the LS of the Hello packet in the address column and sets 1 as the number of hops.
  • the path management unit 21 initializes the value in the column of the cluster ID and sets the value of the Sgw flag to 0.
  • the path management unit 21 updates the link table 91 without creating an entry (Yes in step S2). In this case, the route management unit 21 performs the process of step S4 on the entry hit in the search of step S1.
  • FIG. 8 shows an example of the unaffiliated table 93.
  • the unaffiliation table 93 records an unaffiliated node in association with an adjacent node of the unaffiliated node.
  • FIG. 9 is a flowchart for explaining an example of the operation of the unaffiliated node specifying unit 22 when the unaffiliation table 93 is updated.
  • Steps S11 to S15 are operations when a Hello packet is received from a node device 10 that does not belong to the cluster
  • Steps S16 to S18 are operations when a Hello packet is received from the node device 10 that belongs to a cluster. It is.
  • the process performed by the node device 10b will be described with reference to steps S11 to S15, and the processes of steps S16 to S18 will be described later.
  • the unaffiliated node specifying unit 22 confirms whether a cluster identifier is set in the cluster field of the received Hello packet (step S11). If the cluster identifier is not set, the unaffiliated node specifying unit 22 determines that the Hello packet has been received from the node device 10 not belonging to the cluster, and the source of the Hello packet is stored in the unaffiliation table (UKT) 93. Processing for recording is performed. First, the unaffiliated node specifying unit 22 extracts the LS of the received Hello packet, and searches the unaffiliated node column of the unaffiliation table 93 using the LS as a key (step S12).
  • the unaffiliated node specifying unit 22 When the address of the LS used as the key is not registered in the unaffiliation table 93, the unaffiliated node specifying unit 22 creates an entry corresponding to the LS (No in step S13, step S14). Further, the unaffiliated node identification unit 22 sets the LS of the Hello packet to the unaffiliated node of the added entry, and sets the address of the node device 10 that has received the Hello packet in the adjacent node column (step S15). For example, when the node device 10b receives a Hello packet for the first time from the node device 10a, the node device 10a is not recorded in the unaffiliation table 93.
  • the unaffiliated node specifying unit 22 of the node device 10b records the node device 10a in the unaffiliated node column of the newly generated entry, and records the node device 10b as an adjacent node of the node device 10a.
  • the unaffiliated node specifying unit 22 ends the process (Yes in step S13).
  • FIG. 10 shows an example of a cluster generation method.
  • the node device 10 that starts generating a cluster may be referred to as a “starting node device”.
  • the cluster to which the node device 10 belongs may be described as the “cluster to which the node device 10 belongs”.
  • the node device 10 belonging to the cluster may be described as “belonging node”.
  • the starting node device stores in advance a threshold that represents the number of node devices 10 that can be included in one cluster.
  • the origin node device When the origin node device recognizes the adjacent node device by transmitting and receiving the Hello packet, it starts generating a cluster including the adjacent node device. First, the participation request unit 51 in the origin node device determines a cluster identifier for identifying a cluster to be generated. Next, the origin node device belongs to the cluster identified by the determined cluster identifier. In the following description, it is assumed that the origin node device O1 generates a cluster C4.
  • the origin node device O1 requests the neighboring node device 10 to participate in the cluster C4 and transmits a cluster identifier for identifying the cluster C4 (capture). If the node device 10 requested to participate does not belong to any cluster, the node device 10 belongs to the cluster C4 and notifies the originating node device O1 that it has joined the cluster C4 (participation notification).
  • the origin node device O1 appropriately records information on the cluster in the cluster table 92.
  • FIG. 11 shows an example of the cluster table 92. It is assumed that the cluster identifier of the cluster to which the node device 10 belongs and the address of the origin node device O1 are recorded in the cluster table 92.
  • the cluster identifier is C4.
  • the origin node device O1 Upon receiving the participation notification, the origin node device O1 records the participation notification transmission source in the cluster table 92 as the belonging node.
  • the cluster table 92 also records the sub-gateways included in the cluster to which the user belongs. The setting and recording of the sub-gateway will be described later.
  • the originating node device O1 When receiving the participation notification, the originating node device O1 increments the number of nodes belonging to the cluster C4 and compares it with a threshold value. When the number of node devices 10 belonging to the cluster C4 is less than the threshold value, the originating node device O1 requests other neighboring node devices to participate in the cluster C4. If the total number of nodes belonging to the cluster C4 has not yet reached the threshold even if all the adjacent nodes are requested to participate, the originating node device O1 also sends a request to the node device 10 that can communicate via the adjacent node device. Request to join cluster C4. The origin node device O1 repeats the request for participation in the cluster C4 until the number of node devices 10 included in the cluster C4 reaches a threshold value.
  • the originating node device O1 stops requesting to join the cluster C4. Furthermore, as shown in FIG. 10B, the origin node device O1 requests the node device 10 selected from the unaffiliated nodes to operate as a new origin node device O2. In addition, the origin node device O1 notifies the origin node device O2 of the threshold when requesting to operate as the origin node device.
  • the origin node device O2 generates a cluster C5.
  • the operation of the origin node device O2 when generating the cluster C5 is the same as when the origin node device O1 generates the cluster C4.
  • the origin node device O2 requests the origin node device O3 to generate a new cluster.
  • the origin node device O3 generates a cluster C6. If there is no unaffiliated node that can request participation, the origin node device O3 notifies the origin node device O2 of the end of cluster creation. Then, the origin node device O2 requests the new origin node device O4 to generate a cluster as shown in FIG.
  • the network shown in FIG. 12 includes 15 node devices 10 and the node S operates as a starting node device.
  • FIG. 12 shows adjacent nodes for each of the node S, the node A, and the node C. It is assumed that the adjacent node of the node S is a node in the range indicated by the NS circle.
  • the adjacent node of the node A is a node located in a range surrounded by a circle of NA and the adjacent node of the node C is surrounded by an ellipse of NC.
  • the threshold stored in the origin node device is 9.
  • FIG. 13 is a sequence diagram illustrating an example of processing performed when generating a cluster.
  • the participation request unit 51 of the node S starts generating the cluster CS when acquiring the information of the adjacent node.
  • the participation request unit 51 registers “CS” in the cluster ID of the cluster table (CT) 92 of the node S. At this time, the cluster ID is not registered in the cluster table 92 in nodes other than the node S.
  • CT cluster table
  • the participation request unit 51 of the node S refers to the unaffiliation table (UKT) 93, and selects a node that requests participation in the cluster CS from the nodes registered in the unaffiliation table 93.
  • the participation request unit 51 also recognizes from the unaffiliation table 93 that the node S is an adjacent node (Nei) of the node A.
  • the participation request unit 51 generates a cluster data packet for requesting participation.
  • An example of the configuration of the cluster data packet is shown in FIG.
  • the value of the Type field is set to 1. Since the node A is an adjacent node of the node S, the participation request unit 51 sets the address of the node A in both GD and LD. Also, the participation request unit 51 sets the address of the node S in both GS and LS.
  • the payload of the cluster data packet includes a cluster type field, a cluster ID field, and data.
  • the participation request unit 51 transmits the generated cluster data packet to the node A via the transmission unit 16.
  • the participation processing unit 52 of the node A receives the cluster data packet transmitted from the node S via the packet branching processing unit 12.
  • the participation processing unit 52 recognizes that the participation to the cluster is requested by checking the value of the cluster type field.
  • the participation processing unit 52 confirms whether the node A is participating in any cluster with reference to the cluster table 92 of the node A.
  • the participation processing unit 52 recognizes that the node A does not participate in any cluster. Therefore, the participation processing unit 52 participates in the cluster CS.
  • the participation processing unit 52 sets CS in the cluster ID column of the cluster table 92 and records the address of the node S as the address of the starting node of the cluster CS.
  • the participation processing unit 52 of the node A generates a participation notification to be transmitted to the originating node device S.
  • the participation processing unit 52 sets GD and LD of the cluster data packet to the address of the node S, and further sets GS and LS to the address of the node A. Further, “3” is set in the cluster type field.
  • the cluster type field 3 indicates a response message to the cluster data packet transmitted from the node set in the GS of the cluster data packet (FIG. 14).
  • the participation processing unit 52 sets CS in the cluster ID field.
  • the participation processing unit 52 includes the data of the unaffiliation table 93 held by the node A in the data field. In the example of FIG.
  • the participation processing unit 52 transmits the generated packet to the node S.
  • the unaffiliated node specifying unit 54 of the node S confirms the value of the cluster ID field.
  • the unaffiliated node specifying unit 54 recognizes that the node A belongs to the cluster CS. Therefore, the unaffiliated node specification unit 54 deletes the entry of node A from the unaffiliation table 93. Further, the unaffiliated node specifying unit 54 registers the node A in the column of the belonging node of the cluster table 92 stored in the node S.
  • the unaffiliated node specifying unit 54 updates the unaffiliation table 93 using the data in the data field of the cluster data packet received from the node A.
  • the unaffiliated node specifying unit 54 performs the following processing for each node notified by the cluster data packet.
  • ( ⁇ ) a node that operates as an origin node device;
  • ( ⁇ ) Check whether any of the nodes registered in the cluster table 92 is applicable. If none of ( ⁇ ) to ( ⁇ ) is applicable, the unaffiliated node specifying unit 54 registers the notified node in the unaffiliation table 93.
  • the node S, the node B, and the node C are notified as unaffiliated nodes.
  • the unaffiliated node specifying unit 54 recognizes that the node S is a starting node, the node S is added to the unaffiliation table 93. Do not add. Further, the unaffiliated node specifying unit 54 compares the nodes recorded in the unaffiliation table 93 with the nodes B and C. Then, since the node B is already registered in the unaffiliation table 93, the unaffiliated node specifying unit 54 does not add the node B to the unaffiliation table 93. Since the node C is not the starting node and is not registered in the unaffiliated table 93, the unaffiliated node specifying unit 54 registers the node C in the unaffiliated table 93. At this time, the node A that has notified the node C is designated as an adjacent node of the node C. An example of the unaffiliation table 93 after registration is shown in FIG.
  • the participation request unit 51 of the node S compares the number of affiliation nodes recorded in the cluster table 92 with a threshold value.
  • the number of belonging nodes is 2 (node S and node A), which is smaller than the threshold value. Therefore, the participation request unit 51 selects a node that newly requests participation in the cluster CS from the unaffiliation table 93. It is assumed that the participation request unit 51 selects the node C as a node that requests participation, and recognizes that the node A is an adjacent node of the node C.
  • the participation request unit 51 generates a cluster data packet for requesting participation.
  • the address of node C is set in GD, the address of node A in LD, and the address of node S in both GS and LS.
  • the payload of the cluster data packet is the same as that of the cluster data packet generated in the procedure (3).
  • the participation request unit 51 transmits the generated cluster data packet to the node A.
  • Node A receives the packet transmitted in step (7).
  • the participation processing unit 52 of the node A recognizes that the received packet is not addressed to the node A because the address of the node C is set in the GD. Therefore, the participation processing unit 52 changes the LS in the header of the received packet to the address of the node A, changes the LD to the address of the node C, and transmits to the node C. Note that before the routing table 95 is generated, the participation processing unit 52 uses the link table 91 as appropriate to transfer the cluster data packet.
  • the participation processing unit 52 of the node C Upon receiving the packet, the participation processing unit 52 of the node C performs the same process as in the procedure (4). Further, the participation processing unit 52 generates a cluster data packet to be transmitted to the node (starting node device) set in the GS of the cluster data packet. The participation processing unit 52 sets GD of the cluster data packet to the address of the node S, LD to the address of the node A, and further sets GS and LS to the address of the node C. The payload information is generated in the same manner as in the procedure (5). Here, based on the unaffiliation table 93 of node C, node A, node L, and node M are recorded in the data field as unaffiliated nodes. The generated cluster data packet is transmitted to the node A.
  • the participation processing unit 52 of the node A Upon receiving the cluster data packet from the node C, the participation processing unit 52 of the node A confirms the GD. Since the node S is designated in the GD, the participation processing unit 52 changes the LS in the header of the received packet to the address of the node A, changes the LD to the address of the node S, and then changes to the node S. Send.
  • the unaffiliated node specifying unit 54 of the node S processes the received cluster data packet in the same manner as in the procedure (6). That is, the unaffiliated node specifying unit 54 deletes the entry of the node C from the unaffiliated table 93 and registers the node C in the column of the belonging node of the cluster table 92. Further, the unaffiliated node specifying unit 54 searches for a node to be registered in the unaffiliation table 93 among the unaffiliated nodes notified from the node C. Here, since the node A is already registered in the cluster table 92, the unaffiliated node specifying unit 54 registers the node L and the node M in the unaffiliated table 93. Node C is registered as an adjacent node of node L and node M.
  • the node S can make all the adjacent nodes belong to the cluster CS by repeating the processes (2) to (6) for the adjacent nodes other than the node A.
  • the procedure described with reference to FIG. 13 is an example, and may be changed depending on the implementation.
  • the originating node device requests to join the neighboring node of the originating node device with priority, and requests participation from a node other than the neighboring node after the originating node device has requested to join the neighboring node. Can do.
  • the participation request unit 51 stops the process and checks whether there is a node registered in the unaffiliation table 93. If there is no node registered in the unaffiliation table 93, the participation request unit 51 recognizes that the generation of the cluster has been completed. On the other hand, when an unaffiliated node is registered in the unaffiliation table 93, the participation request unit 51 notifies the generation request unit 53 that the number of belonging nodes has reached the threshold and that there is an unaffiliated node. . Upon receiving the notification from the participation request unit 51, the generation request unit 53 specifies a new origin node device.
  • FIG. 15 shows an example of designation of a new origin node device and generation of a cluster.
  • FIG. 16 is a sequence diagram illustrating an example of communication performed in designating a new starting node device and generating a cluster.
  • the numbers in FIG. 15 represent the procedure numbers used in the description of FIG.
  • the generation request unit 53 of the node S notifies the participation request unit 51 that the number of nodes belonging to the cluster CS generated by the node S has reached the threshold, but there are still unaffiliated nodes. Is done. Then, the generation request unit 53 confirms the unaffiliation table 93 and determines a node to be designated as a new starting node. Here, it is assumed that the generation request unit 53 designates the node L as a new starting node.
  • the generation request unit 53 generates a cluster data packet for setting to the starting node.
  • the value of the cluster type field of the cluster data packet is set to “1” as shown in FIG.
  • the generation request unit 53 sets the header of the cluster data packet.
  • the generation request unit 53 includes information for identifying a node through which the cluster data packet is routed, in the data field of the cluster data packet.
  • a routing table 95 is generated by Hello packets transmitted / received between the node devices 10 belonging to the cluster.
  • the routing table 95 holds a route to the node device 10 in the same cluster as the cluster to which the routing table 95 belongs. Therefore, the generation request unit 53 sets an address using the data in the routing table 95 for the route to the adjacent node that is the destination of the cluster data packet. For example, it is recognized from the unaffiliation table 93 that the destination node L is adjacent to the node C here.
  • the routing table 95 of the node S records that a packet addressed to the node C can be transmitted via the node A.
  • the generation request unit 53 designates node C as GD, node A as LD, and node S as GS and LS. Further, the generation request unit 53 records the node L, which is the generation start destination, in the cluster ID field. The generation request unit 53 transmits the generated cluster data packet to the node A.
  • the participation processing unit 52 of the node A receives a cluster data packet addressed to another node and the value of the cluster type field is set to “1”, it refers to the GD field.
  • the participation processing unit 52 transfers the cluster data packet toward the node recorded in the GD field.
  • the generation request unit 53 changes the LS of the cluster data packet to node A and the LD to node C, and transmits to node C.
  • the participation processing unit 52 of the node C changes the LS of the cluster data packet received from the node A to the node C, LD to the node L, and GD to the node L recorded in the cluster ID field of the cluster data packet. To the node L. At this time, it is assumed that the participation processing unit 52 performs transfer with reference to the link table 91.
  • the participation request unit 51 of the node L When the participation request unit 51 of the node L receives the cluster data packet from the node S, it starts generating the cluster CL.
  • the participation request unit 51 registers “CL” in the cluster ID of the cluster table (CT) 92 of the node L. Further, the participation request unit 51 records the GS and LS of the packet that has requested cluster generation start in the cluster construction table (CCT) 42.
  • the address of the node S is recorded as GS
  • the address of the node C is recorded as LS.
  • the participation request unit 51 of the node L determines a node that requests participation in the cluster CL based on the unaffiliation table 93.
  • the node L requests the node M to participate.
  • the operation performed when requesting participation is the same as the operation described with reference to FIGS.
  • the participation request unit 51 records the completion of cluster generation in the cluster construction table 42 using a cluster data packet (completion notification message). GS is notified. At this time, the participation request unit 51 records the list of nodes belonging to the generated cluster in the data field of the end notification message. Here, the participation request unit 51 of the node L notifies that the node L and the node M are included in the generated cluster.
  • the GS address recorded in the cluster construction table 42 as GD is designated.
  • the node L notifies the node S of the end of cluster generation.
  • the value of the cluster type field is set to “4”, and the cluster ID is set to CL.
  • the participation request unit 51 of the node L designates the node C to the LD and transmits the generated packet to the node C. Further, when the end notification message is transmitted, the participation request unit 51 deletes the entry in the cluster search table 42.
  • the participation processing unit 52 of the node C When the participation processing unit 52 of the node C recognizes that the GD of the cluster data packet received from the node L is the node S, it transfers the cluster data packet using the routing table 95. At this time, the participation processing unit 52 sets the LS of the cluster data packet to the address of the node C and sets the LD to the address of the node A, and then transmits to the node A.
  • the participation processing unit 52 of the node A also uses the routing table 95 to transfer the cluster data packet.
  • the participation processing unit 52 recognizes that the GD of the cluster data packet is the node S
  • the participation processing unit 52 sets the LS of the packet to the address of the node A and sets the LD to the address of the node S, and then transmits to the node S.
  • the generation request unit 53 of the node S receives an end notification message generated at the node L from the node A. Then, the generation request unit 53 deletes the entry of the node L from the unaffiliation table 93. Furthermore, the generation request unit 53 also deletes entries from the unaffiliation table 93 for the nodes recorded in the data field of the generation end notification. Here, the entries of the nodes L and M are deleted from the unaffiliation table 93.
  • FIG. 17 is a flowchart for explaining an example of a cluster generation procedure.
  • the origin node participation request unit 51 starts generating a cluster (step S21).
  • the participation request unit 51 checks whether there is a registration in the unaffiliation table (UKT) 93 (Yes in Step S21, Step S22).
  • the participation request unit 51 confirms whether a new node can be added to the cluster by comparing the number of nodes belonging to the generated cluster with a threshold value. (Yes in step S22, step S23).
  • the participation request unit 51 makes a request to join the cluster (Yes in step S23, step S24).
  • the participation request unit 51 requests the generation request unit 53 to generate a new cluster (No in step S23, step S25).
  • the participation request unit 51 ends the process (No in step S22). In addition, the process is ended even in the node determined not to be the starting node in step S21 (No in step S21).
  • FIG. 18 is a flowchart for explaining an example of an operation when a non-participating node is requested to participate in a cluster. Note that the flowchart of FIG. 18 is an example. For example, the order of steps S37 to S39 can be arbitrarily changed. Step S41 is an option and can be omitted according to the performance of the node device 10.
  • the participation request unit 51 selects one of the unaffiliated nodes recorded in the unaffiliation table 93, and generates a cluster data packet (steps S31 and S32). At this time, the address of the node selected in step S31 is designated in the GD of the cluster data packet. The value of the cluster type field is set to 2 (CREATE). Further, the cluster ID generated by the participation request unit 51 is recorded in the cluster ID. The participation request unit 51 transmits the generated cluster data packet and records the transmission time (steps S33 and S34). The unaffiliated node identification unit 54 waits until it receives a cluster data packet participation notification message (ACK) (steps S35 and S36).
  • ACK cluster data packet participation notification message
  • the unaffiliated node specifying unit 54 deletes the entry of the node that is the transmission source of the participation notification message from the unaffiliation table 93 (Yes in step S36, step S37). Further, the unaffiliated node identification unit 54 adds the obtained node information to the unaffiliation table 93 when the data of the participation notification message includes the information of the unaffiliated node (step S38). Furthermore, the unaffiliated node specifying unit 54 adds the transmission source of the participation notification message to the cluster table 92 (step S39).
  • step S36 determines whether the participation notification message has been received. If it is determined in step S36 that the participation notification message has not been received, the unaffiliated node specifying unit 54 checks whether the time elapsed from the transmission time of the cluster data packet requesting participation is longer than a predetermined time. (No in step S36, step S40). If the predetermined time has not elapsed, the processes after step S35 are repeated. If the participation notification message cannot be received even after a predetermined time has elapsed, the priority for selecting a node from the unaffiliation table 93 is lowered for the node that requested participation (step S41).
  • FIG. 19 is a flowchart for explaining an example of operation when generation of a new cluster is started. Note that the flowchart of FIG. 19 is an example. For example, changes such as omitting step S59 may be added according to the performance of the node device 10.
  • the generation request unit 53 selects one of the unaffiliated nodes registered in the unaffiliation table 93 (Step S51).
  • the generation request unit 53 generates a cluster data packet to be transmitted to the selected unaffiliated node (step S52).
  • the GD of the cluster data packet designates the address of the adjacent node with respect to the unaffiliated node selected in step S51.
  • the value of the cluster type field is set to 1 (START). Further, a cluster ID for identifying a newly generated cluster is recorded in the cluster ID. It is assumed that the node device 10 as a new starting node can be uniquely identified by the cluster ID.
  • the generation request unit 53 transmits the generated cluster data packet and records the transmission time (steps S53 and S54).
  • the generation request unit 53 waits until a cluster data packet end notification message (FINISH) is received (steps S55 and S56).
  • FINISH cluster data packet end notification message
  • the generation request unit 53 deletes the entry of the node that is the transmission source of the end notification message from the unaffiliation table 93 (Yes in step S56, step S57). Furthermore, the generation request unit 53 also deletes the cluster belonging node generated based on the cluster data packet transmitted in step S53 from the unaffiliation table 93.
  • step S56 the generation request unit 53 checks whether the time elapsed from the transmission time of the cluster data packet that requests generation of the cluster is longer than a predetermined time. (No in step S56, step S58). If the predetermined time has not elapsed, the processes after step S55 are repeated (No in step S58). If the end notification message cannot be received after a predetermined time has elapsed, the priority for selecting a node from the unaffiliation table 93 is lowered for the node that requested the cluster generation (Yes in step S58). Step S59).
  • the Hello packet is transmitted and received between the node devices 10 during and after the generation of the cluster.
  • the processing of the Hello packet will be described in the case where no node device 10 is set as a sub-gateway after the generation of the cluster is started. Processing after the sub-gateway is set will be described later.
  • the operation of the node device 10 varies depending on whether the node device 10 that has received the Hello packet belongs to the cluster.
  • the operation when the node device 10 not belonging to the cluster receives the Hello packet is as described above with reference to FIGS.
  • the routing table 95 and the cluster table 92 may be updated using the Hello packet.
  • the route information of the routing table 95 stored in the node device 10 can be included in the data field of the Hello packet.
  • FIG. 20 shows an example of generating a Hello packet in the node device 10a belonging to the cluster.
  • FIG. 20A shows an example of the format of a Hello packet.
  • FIG. 20B shows an example of the format of the data field.
  • the data field includes information about GD.
  • the number of GDs included in the data field is recorded in the Len field.
  • the Hello generation unit 15 of the node device 10a reads the cluster ID, the number of hops, and the value of the Sgw flag for the GD recorded in the routing table 95 and includes them in the data.
  • FIG. 95 An example of the routing table 95 is shown in FIG.
  • a TTL (Time-to-Live) entry survival counter value for each GD, a TTL (Time-to-Live) entry survival counter value, a GD cluster ID, a GD-Sgw flag value, and an LD are recorded.
  • the “GD-Sgw flag” is the value of the Sgw flag recorded in association with the GD in the routing table 95.
  • no node device 10 is designated as a sub-gateway, it is assumed that the value of the GD-Sgw flag is 0 in any node.
  • the value of the TTL entry survival counter decreases in accordance with the time elapsed since the record about GD was updated.
  • the GD cluster ID is an identifier for identifying a cluster to which the GD belongs.
  • three LDs set by the node device 10 for transmitting packets to the GD are recorded for each GD, and the number of hops is recorded for each LD. .
  • the Hello generation unit 15 acquires the values recorded in the routing table 95 for each of the GD, the cluster ID, the GD-Sgw flag, and the number of hops, and sets them in the data. At this time, the Hello generation unit 15 includes the number of hops associated with the LS used as the first candidate when transmitting a packet from the node device 10a to the GD.
  • FIG. 21 is a flowchart for explaining an example of an operation performed when the node device 10 receives a Hello packet.
  • the node devices 10b and 10c receive the Hello packet broadcast from the node device 10a will be described with reference to FIG.
  • the node device 10a and the node device 10b belong to a cluster, and the node device 10c is an unaffiliated node.
  • FIG. 21 shows an example of the operation. For example, there may be a change such as a change in the order of steps S61 and S62, a change in the order of steps S65 and S66, and a change in the order of steps S71 and S72.
  • step S61 is the same as the operation described in FIG. 7, and step S62 is the same as the operation of steps S16 to S18 in FIG.
  • step S11 is the same as the operation described in FIG. 7
  • step S62 is the same as the operation of steps S16 to S18 in FIG.
  • step S16 If the unaffiliated node is hit, the unaffiliated node specifying unit 22 deletes the entry of the hit node (steps S17 and S18).
  • the node device 10 checks whether the cluster ID is recorded in the cluster table 92 (step S63).
  • the node device 10c that does not belong to the cluster ends the process (No in step S63).
  • the node device 10b belonging to the cluster compares the cluster identifier recorded in the cluster table 92 with the cluster identifier in the Hello packet (step S64). If the two match, the path management unit 21 of the node device 10b updates the routing table 95 for the node device 10a (LS of the Hello packet) (Yes in step S64, step S65). Further, the path management unit 21 also performs a process for updating the cluster table 92 (step S66).
  • the path management unit 21 of the node device 10b acquires one unprocessed entry from the list included in the data field of the Hello packet (Steps S67 and S68). If a valid value is not recorded in the unprocessed entry, the path management unit 21 ends the process (No in step S68).
  • the path management unit 21 checks whether the GD of the acquired entry matches the address of the node device 10b (the node device 10 provided with the path management unit 21). (Yes in step S68, step S69). If the GD of the acquired entry matches the address of the node device 10b, the path management unit 21 returns to step S67 to perform processing of another entry without updating the routing table 95 (Yes in step S69). On the other hand, if the GD of the acquired entry does not match the address of the node device 10b, the path management unit 21 further identifies the cluster to which the node device 10b belongs, with the cluster ID recorded for the acquired entry. It is confirmed whether it is a cluster ID (step S70).
  • the path management unit 21 updates the routing table 95 and the cluster table 92 (Yes in step S70, step S71, S72). Thereafter, the route management unit 21 repeats the processing after step S67. On the other hand, when the cluster ID recorded for the acquired entry is not the cluster ID for identifying the cluster to which the node device 10b belongs, the path management unit 21 repeats the processing after step S67 (No in step S70). .
  • the path management unit 21 of the node device 10b confirms whether the node device 10b is a sub-gateway (step S64). S73). If the node device 10b is not a sub-gateway, the node device 10b ends the process (No in step S73). When the node device 10b is a sub-gateway, the routing table 95 and the cluster table 92 are updated (steps S74 and S75). The operation when the node device 10b is a sub-gateway will be described later.
  • FIG. 22 is a flowchart illustrating an example of an operation for updating the routing table 95.
  • FIG. 22 shows the process of step S65 of FIG. 21 in detail.
  • the path management unit 21 of the node apparatus 10b searches the GD column of the routing table 95 using the address registered in the LS of the Hello packet as a key to confirm whether the path to the LS has already been registered. (Steps S81 and S82).
  • the route management unit 21 creates a new entry in the routing table 95 and records a value corresponding to the LS in the created entry (No in step S82, step S83, S84).
  • the route management unit 21 updates the value of the entry obtained by the search to the value notified by the Hello packet (No in Step S82, Step S84). .
  • FIG. 23 is a flowchart for explaining an example of an operation for updating the cluster table 92.
  • FIG. 23 shows in detail the process of step S66 of FIG. As represented in step S91 of FIG. 23, when the node device 10 that is the transmission source of the Hello packet is not a sub-gateway, the cluster table 92 is not updated.
  • the path management unit 21 of the node device 10b ends the process without updating the cluster table 92. The case where the transmission source of the Hello packet is a sub-gateway will be described later.
  • FIG. 24 is a flowchart illustrating an example of an operation for updating the routing table 95.
  • FIG. 24 shows in detail the process of step S71 of FIG.
  • the route management unit 21 of the node device 10b searches the GD column of the routing table 95 using the address registered in the GD of the data field as a key (step S101).
  • the processing in steps S102 to S104 is the same as the processing in steps S82 to S84 described with reference to FIG.
  • FIG. 25 is a flowchart for explaining an example of an operation for updating the cluster table 92.
  • FIG. 25 shows the process of step S72 of FIG. 21 in detail.
  • the cluster table 92 is not updated.
  • the path management unit 21 of the node device 10b ends the process without updating the cluster table 92. The case where the GD in the data field is a sub-gateway will be described later.
  • the node device 10b obtains the routing table 95 by using the information acquired from the Hello packet when the node device 10b acquires the information about the node belonging to the cluster to which the node device 10b belongs by the processing of steps S68 to S72 in FIG. Update. Therefore, the routing table 95 records route information to the node device 10 belonging to the same cluster as the node device 10b. In other words, the node device 10 records the route to the node device 10 belonging to the same cluster as the cluster to which it belongs in the routing table 95. For this reason, in the node device 10 according to the present embodiment, the size of the routing table 95 is smaller than when each node device records routes to all the node devices in the ad hoc network.
  • FIG. 26 shows an example of a sub-gateway determination method.
  • the node device 10 recognizes an adjacent cluster adjacent to the cluster to which it belongs (affiliated cluster), and notifies the origin node device O1 of the cluster ID of the adjacent cluster as shown in FIG.
  • the origin node device O1 selects a sub-gateway from the node devices 10 that have notified the cluster ID of the adjacent cluster.
  • the originating node device O1 transmits a message (SGW request) requesting the selected node device 10 to operate as a sub-gateway.
  • SGW request message
  • the node device 10 that has received the SGW request transmits an SGW response message to the originating node device O1, and starts an operation as a sub-gateway. Further, the node device 10 that has received the SGW request transmits the SGW request to the node device 10 in the adjacent cluster that can receive the Hello packet, and sets it as a sub-gateway. Further, as shown in FIG. 26 (d), the sub-gateway is also determined in the adjacent cluster.
  • FIG. 27 shows an example of a method for recognizing the ID of a cluster adjacent to the affiliation cluster.
  • the node device 10 updates the link table 91 by transmitting and receiving Hello packets.
  • the link table 91 records a cluster ID of a cluster to which an adjacent node belongs. Therefore, the adjacent cluster notification unit 61 compares the value recorded in the cluster ID column of the link table 91 with the cluster ID of the belonging cluster.
  • the adjacent cluster notifying unit 61 recognizes that the Hello packet is received from the node device 10 belonging to the adjacent cluster of the belonging cluster.
  • the adjacent cluster notification unit 61 includes the detected cluster ID in the data field of the cluster data packet to be transmitted to the origin node device O1, as shown in FIG. Further, the adjacent cluster notification unit 61 sets the value of the cluster type field to “5” (NEI_CLUSTER in FIG. 14). The adjacent cluster notification unit 61 transmits the generated packet to the originating node device.
  • FIG. 28 shows an example of the operation of the origin node device when a notification of an adjacent cluster is received.
  • the candidate table generation unit 62 of the origin node device generates the adjacent cluster table 43 and the gateway candidate table 44 based on the received cluster data packet (FIG. 28 (a)).
  • the adjacent cluster table 43 is used by the sub-gateway determination unit 63 to recognize adjacent clusters for which a sub-gateway is set.
  • the gateway candidate table 44 is used for the sub-gateway determination unit 63 to recognize node devices 10 that can be designated as sub-gateways.
  • the ID of the adjacent cluster is associated with the confirmation flag indicating the setting status of the sub-gateway used between the adjacent clusters.
  • the confirmation flag is set to “0”
  • the determination flag is set to “1”. That is, the sub-gateway determination unit 63 recognizes the cluster recorded in the entry with the confirmation flag value “0” as a target for determining the sub-gateway.
  • the candidate table generation unit 62 compares the cluster ID included in the data field of the received cluster data packet with the value recorded in the adjacent cluster ID column of the adjacent cluster table 43. When a cluster ID not included in the adjacent cluster table 43 is notified by the cluster data packet, the candidate table generation unit 62 generates a new entry in the adjacent cluster table 43 and records the adjacent cluster ID. At this time, the confirmation flag is set to 0.
  • the candidate node device 10 (candidate node) designated as the sub-gateway, the ID of the cluster adjacent to the candidate node, and the status flag are associated with each other. .
  • Status flag 0 indicates that the candidate node is not operating as a sub-gateway.
  • the status flag 1 indicates that the candidate node is selected as the sub-gateway.
  • the candidate table generation unit 62 searches the gateway candidate table 44 for a combination of the GS in the cluster data packet (FIG. 28A) for notifying the adjacent cluster and the cluster ID notified in the data field.
  • generation part 62 produces
  • FIG. 29 is a sequence diagram illustrating an example of an operation performed when a sub-gateway is determined.
  • the setting of the sub-gateway used between the cluster CS and the cluster CL will be described.
  • the node S is a starting node device of the cluster CS
  • the node L is a starting node device of the cluster CL.
  • Nodes A and C belong to the cluster CS
  • the node M belongs to the cluster CL.
  • the following procedure is an example, and for example, the processing after the procedure (52) can be changed to be performed before the procedures (49) to (51).
  • the adjacent cluster notification unit 61 of the node C compares the cluster ID recorded in the link table (LT) 91 with the cluster ID (CS) of the cluster to which the node C belongs, and detects an adjacent cluster.
  • LT link table
  • CS cluster ID
  • the nodes A, L, and M are recorded in the link table 91 of the node C. Since the cluster to which the nodes L and M belong is the cluster CL, the adjacent cluster notification unit 61 of the node C recognizes that it is adjacent to the cluster CL.
  • the node C generates a cluster data packet including a list of adjacent clusters (cluster ID list) in the data field.
  • the cluster data packet for notifying the adjacent cluster is expressed as (NEIGBOR_CLUSTOR, S, C) in association with the transmission source node device 10 and the transmission source node device 10.
  • NEIGBOR_CLUSTOR represents a cluster data packet for notifying an adjacent cluster. After the description indicating the type of the cluster data packet, it is described that the origin node device is the node S and the transmission source is the node C.
  • the candidate table generation unit 62 of the node S updates the adjacent cluster table (NCT) 43 and the gateway candidate table (SGWCT) 44 using the received packet.
  • the method for updating the adjacent cluster table 43 and the gateway candidate table 44 is as described with reference to FIG. In the example of FIG. 29, the ID of the cluster CL is registered in the adjacent cluster table 43.
  • the gateway candidate table 44 records that the node C is adjacent to the node device 10 included in the cluster CL.
  • the node device 10 is searched.
  • the node C is adjacent to the node in the cluster CL, and the value of the status flag is 0. Therefore, the sub-gateway determination unit 63 of the node S determines the node C as a sub-gateway.
  • the sub-gateway determination unit 63 transmits a cluster data packet (SGW request, REQ_SGW) requesting to operate as a sub-gateway to the node device 10 designated as the sub-gateway.
  • SGW request the value of the cluster type field is set to “6”.
  • the cluster ID field IDs of adjacent clusters are recorded.
  • the sub-gateway determination unit 63 transmits the cluster data packet of the SGW request to the candidate node determined in the procedure (45). Further, the sub-gateway determination unit 63 sets, in the adjacent cluster table 43, a confirmation flag associated with the adjacent cluster whose ID is recorded in the cluster ID field of the SGW request to “1”.
  • the sub-gateway determination unit 63 of the node S generates a cluster data packet in which the cluster CL ID is set in the cluster ID field and 6 is set in the cluster type field, and is transmitted to the node C.
  • the SGW request is expressed as (REQ_SGW, CL, C) in association with the adjacent cluster ID and the destination node device 10.
  • the sub-gateway determination unit 63 sets the confirmation flag associated with the cluster CL in the adjacent cluster table 43 to 1.
  • the node A refers to the routing table 95 and transmits the SGW request received from the node S to the node C.
  • the node C Upon receiving the SGW request, the node C recognizes that the node C is a sub-gateway and starts operation as a sub-gateway. For example, even when the node C receives a Hello packet from the node device 10 belonging to a cluster different from the cluster to which the node C belongs, the node C updates the routing table 95 according to the Hello packet. In the Hello packet transmitted from the node C, the SGW flag is set to 1. The operation as a sub-gateway will be described in detail later.
  • the node C transmits to the node S a cluster data packet that is an SGW response (ACK_SGW).
  • ACK_SGW SGW response
  • the value of the cluster type field is set to “7”.
  • IDs of adjacent clusters are recorded.
  • the SGW response is written as (REQ_ACK, CL, C) in association with the adjacent cluster ID and the source node device 10.
  • the node A refers to the routing table 95 to transmit the SGW response received from the node C to the node S.
  • the originating node Upon receiving the SGW response, the originating node sets a status flag corresponding to the node device that is the source of the SGW response to 1 in the gateway candidate table 44.
  • the node S sets the status flag of the entry in which the adjacent cluster is CL for the node C to 1.
  • the node C set as the sub-gateway is a node device 10 in the cluster CL and requests the node device 10 adjacent to the node C to operate as a sub-gateway.
  • the sub-gateway determination unit 63 of the node C refers to the cluster table 92 and selects a node device included in the cluster CL to set it as a sub-gateway.
  • the sub-gateway determination unit 63 selects the node M.
  • the sub-gateway determination unit 63 generates an SGW request and transmits it to the node M.
  • the generation of the SGW request is the same as the procedure (42).
  • the sub-gateway determination unit 63 adds an entry for the node M to the routing table (RT) 95.
  • the node M is also registered as a sub-gateway.
  • the node M Upon receiving the SGW request, the node M recognizes that the SGW request has been received from a node belonging to a cluster (cluster CS) different from the cluster to which the node M belongs (cluster CL). Then, the node M starts operation as a sub-gateway. In addition, the SGW response is transmitted to the originating node device of the affiliated node to notify that it is operating as a sub-gateway. Here, the node M transmits an SGW response to the node L. The method for generating the SGW response is as described in the procedure (49). Further, the sub-gateway determination unit 63 of the node M adds the entry of the node C to the routing table 95. At this time, it is registered that node C is a sub-gateway.
  • the operation of the origin node is the same as in the procedure (51). That is, when the node L receives the SGW response, the node L sets the status flag of the entry in which the adjacent cluster of the node M is CL in the gateway candidate table 44.
  • FIG. 30 is a flowchart for explaining an example of the operation of the adjacent cluster notification unit 61.
  • the adjacent cluster notification unit 61 acquires one unprocessed entry registered in the link table 91 (Yes in step S121 and step S122).
  • the adjacent cluster notification unit 61 confirms whether the cluster ID included in the acquired entry is the cluster ID of the belonging cluster (step S123). If the cluster ID of the affiliation cluster is included, the adjacent cluster notification unit 61 returns to step S121 to start processing of another entry (Yes in step S123).
  • the adjacent cluster notification unit 61 records the cluster ID included in the acquired entry in the adjacent cluster table 43, and returns to step S121. (No in step S123, step S124).
  • the adjacent cluster notification unit 61 confirms whether the cluster ID is recorded in the adjacent cluster table 43 (step S125).
  • the adjacent cluster notification unit 61 When the cluster ID is recorded in the adjacent cluster table 43, the adjacent cluster notification unit 61 generates a cluster data packet for notifying the adjacent cluster and transmits it to the originating node device of the belonging cluster (Yes in step S125). , Steps S126 and S127).
  • the adjacent cluster notification unit 61 ends the process (No in step S125).
  • FIG. 31 is a flowchart for explaining an example of the operation of the candidate table generation unit 62 when notified of an adjacent cluster.
  • FIG. 31 shows an example of the operation performed in the procedure (44) described with reference to FIG.
  • the candidate table generation unit 62 confirms whether or not the cluster ID is included in the cluster data packet (steps S131 and S132). If the unprocessed cluster list is not included in the cluster data packet, the candidate table generation unit 62 ends the process (No in step S132). On the other hand, when the cluster ID is included, the candidate table generating unit 62 determines the gateway candidate table 44 by combining the cluster data packet transmission source address (GS) and the cluster ID (adjacent cluster) in the received packet. Search is performed (step S133).
  • GS cluster data packet transmission source address
  • the cluster ID adjacent cluster
  • the candidate table generating unit 62 adds an entry of the combination of the GS and the adjacent cluster to the gateway candidate table 44 (No in step S134, step S135). , S136). If a combination of GS and adjacent clusters is recorded in the gateway candidate table 44, steps S135 and S136 are not performed (Yes in step S134).
  • the candidate table generation unit 62 searches the adjacent cluster table 43 using the adjacent cluster ID as a key (step S137). When the adjacent cluster ID is recorded in the adjacent cluster table 43, the candidate table generating unit 62 repeats the processing after step S131 (Yes in step S138). On the other hand, when the adjacent cluster ID is not recorded in the adjacent cluster table 43, the candidate table generating unit 62 adds an entry in which the adjacent cluster ID is recorded to the adjacent cluster table 43 (No in step S138, steps S139, S140). ).
  • FIG. 32 is a flowchart for explaining an example of the operation of the origin node device when generating a sub-gateway.
  • the sub-gateway determination unit 63 in the origin node device reads an unprocessed entry included in the adjacent cluster table 43 (Yes in Step S151 and Step S152). If no unprocessed entry remains in the adjacent cluster table 43, the sub-gateway determination unit 63 ends the process (No in step S152). When an unprocessed entry is read, the sub-gateway determination unit 63 checks the value of the confirmation flag (step S153). If the value of the confirmation flag is 1 and the sub-gateway has already been confirmed, the sub-gateway determination unit 63 returns to step S151 (No in step S153).
  • the sub-gateway determination unit 63 checks whether the cluster ID of the adjacent cluster table 43 matches the cluster ID of the gateway candidate table 44 (step S157). If the two do not match, the processes after step S154 are repeated (No in step S157).
  • This flow represents a method in which the origin node performs a process of setting a sub-gateway only once for an adjacent cluster for which no sub-gateway has been set. In order to perform processing on a plurality of adjacent clusters for which a sub-gateway has not been set, the processing from step S151 to step S160 may be performed simultaneously in parallel.
  • FIG. 33 is a flowchart for explaining an example of the operation of a node designated as a sub-gateway.
  • the node that has received the SGW request recognizes that it has been set as a sub-gateway, and generates an SGW response (steps S171 and S172).
  • the sub-gateway determination unit 63 transmits the generated SGW response to the originating node device of the belonging cluster (step S173). Further, the sub-gateway determination unit 63 confirms whether the source (GS) of the SGW request is the origin node device (step S174). If the source of the SGW request is not the origin node device, the process ends (No in step S174).
  • the sub-gateway determination unit 63 selects an adjacent node belonging to the cluster identified by the cluster ID of the SGW request from the link table 91 (Yes in step S174). Step S175). When the corresponding entry exists in the link table 91, the sub-gateway determination unit 63 generates an SGW request and transmits it to the selected node (Yes in Step S176, Steps S177 and S178). Further, the sub-gateway determination unit 63 registers the entry of the selected link table 91 in the routing table 95 (step S179). On the other hand, when the adjacent node belonging to the cluster identified by the cluster ID of the SGW request is not included in the link table 91 in step S176, the sub-gateway determination unit 63 ends the process (No in step S176).
  • the default GW determination unit 41 selects a sub-gateway to be used when transmitting a packet to the node device 10 that does not belong to the cluster to which the sub-gateway belongs.
  • a sub-gateway used when transmitting a packet to the node device 10 that does not belong to the cluster to which it belongs is referred to as “default gateway”.
  • Each node device 10 in the cluster can use a sub-gateway with the smallest number of hops as a default gateway.
  • the method using the number of hops is an example of a default gateway determination method, and the default gateway determination method can be arbitrarily changed according to the implementation.
  • the default gateway can be determined using communication quality (reach rate, congestion, etc.).
  • Processing when the sub-gateway receives a Hello packet from a node belonging to the cluster to which the sub-gateway belongs is as steps S61 to S72.
  • the update process of the cluster table 92 in step S66 will be described with reference to FIG.
  • the node that has received the Hello packet confirms from the SGW flag of the Hello packet whether the source (LS) of the Hello packet is a sub-gateway (step S91).
  • the node that has received the Hello packet confirms whether the transmission source of the Hello packet is recorded in the sub-gateway list of the cluster table 92 (Steps S92 and S93). If the sub-gateway is registered in the cluster table 92, the update process of the cluster table 92 is terminated (Yes in step S93). On the other hand, when the sub-gateway is not registered in the cluster table 92, the node that has received the Hello packet records the transmission source of the Hello packet in the sub-gateway list of the cluster table 92 (No in step S93, step S94). The process when the transmission source of the Hello packet is not a sub-gateway is as described above.
  • the node that has received the Hello packet confirms whether the GD is a sub-gateway with respect to the list of route information included in the data portion of the Hello packet (step S111).
  • the node that has received the Hello packet confirms whether the GD is recorded in the sub-gateway list of the cluster table 92 (steps S112 and S113). If the sub-gateway is registered in the cluster table 92, the update process of the cluster table 92 is terminated (Yes in step S113).
  • the node that has received the Hello packet records the GD in the sub-gateway list of the cluster table 92 (No in step S113, step S114).
  • the process when the GD of the route notified by the Hello packet is not a sub-gateway is as described above.
  • step S73 processing when a Hello packet is received from a cluster different from the cluster to which it belongs (No in step S64 in FIG. 21) will be described with reference to FIG.
  • the node device 10 that has received the Hello packet confirms whether it is a sub-gateway (step S73).
  • the path management unit 21 updates the routing table 95 and the cluster table 92 (Yes in Step S73, Steps S74 and S75).
  • the processing in step S74 is the same as the processing described with reference to FIG.
  • step S75 is the same as the process described with reference to FIG.
  • the node device 10 that has received the Hello packet is not a sub-gateway, the node device 10 ends the process (No in step S73).
  • FIG. 34 shows an example of the format of the data packet.
  • the data packet processing unit 81 generates a data packet. At this time, the value of the Type field of the header of the data packet is set to “3” as shown in FIG.
  • the value of the Length field represents the length of data included in the data packet.
  • the data packet processing unit 81 sets the destination address of the data packet to GD. Further, the data packet processing unit 81 searches the GD column of the routing table 95 by the destination address, and sets the node registered as the LD in the hit entry to the LD. Further, the data packet processing unit 81 sets GS and LS to the address of the transmission source node.
  • the hop count is used to count the hop count from the transmission source node, and is set to 0 at the transmission source node.
  • a value input from the FID generation unit 13 is recorded in the FID field.
  • the data field includes transmission data.
  • the combination of GS and FID represents the uniqueness of the packet on the network.
  • FIG. 35 is a flowchart for explaining an example of an operation performed when a data packet is received.
  • the data packet processing unit 81 checks whether the GD of the data packet received via the packet branch processing unit 12 matches the address assigned to the node device 10 that has received the packet (step S191). If the GD of the data packet matches the address assigned to the node device 10, the data packet processing unit 81 determines that the data packet is a processing target in the upper processing unit 14 and notifies the upper processing unit 14. (Yes in step S191, step S192). In addition, the data packet processing unit 81 can output the data packet to the upper processing unit 14 as appropriate.
  • the data packet processing unit 81 determines to transfer the received packet to another node (No in step S191).
  • the data packet processing unit 81 searches the GD column of the routing table 95 using the address recorded in the GD of the data packet as a key, and confirms whether there is a hit entry (steps S193 and S194). If the node set in the GD belongs to the same cluster as the belonging cluster, there is an entry that hits the routing table 95 (Yes in step S194).
  • the data packet processing unit 81 changes the LD of the data packet to the address of the node recorded as the LD in the hit entry, and changes the LS to the address of the node device 10 that processes the data packet. Further, the hop count value is incremented by one (step S195).
  • the data packet processing unit 81 compares the value of the number of hops with a Hop limit value stored in advance (Step S196). When the value of the hop count is equal to or less than the Hop limit value, the data packet processing unit 81 transfers the data packet via the transmission unit 16 (Yes in Step S196, Step S197). On the other hand, when the value of the hop count exceeds the Hop limit value, the data packet processing unit 81 discards the data packet and ends the process (No in step S196).
  • step S194 If it is determined No in step S194, the node set in the GD does not belong to the same cluster as the belonging cluster. The processing performed in this case will be described later.
  • the node device 10 that is not a sub-gateway does not record the route to the node device 10 that does not belong to the belonging cluster in the routing table 95. Therefore, when transmitting a packet to the node device 10 that is not included in the cluster to which the node belongs, the node device 10 transmits a highway data packet to the default gateway of the node device 10.
  • FIG. 36 shows an example of the format of the highway data packet.
  • the highway data packet is generated by the highway data packet processing unit 82.
  • the highway data packet further includes a header at the beginning of the data packet.
  • the header attached to the head of the highway data packet is referred to as “outer header”, and the header included in the data packet in the highway data packet is referred to as “inner header”.
  • the format of the outer header is the same as the format of the inner header.
  • a value indicating a highway data packet is set in the Type field of the outer header.
  • the Type field at the beginning of the highway data packet is set to 2.
  • the address of the destination node of the highway data packet is recorded in the GD of the outer header.
  • the source node sets the destination node of the highway data packet as the default gateway of the source node.
  • the GS, LS, and LD of the outer header are set in the same manner as in the data packet.
  • LS and LD may not be set in the inner header.
  • the GD of the inner header is set to the address of the destination node of the data packet
  • GS is set to the address of the source node of the data packet.
  • FIG. 37 shows an example of a communication method with a node device not included in the cluster to which it belongs.
  • the transmission source node transmits the highway data packet to the default gateway of the transmission source node.
  • the sub-gateway that has received the highway data packet acquires the GD of the inner header of the highway data packet and searches for a cluster to which the acquired GD belongs. Search data packets are used to search for clusters.
  • the search data packet is generated by the search execution unit 72.
  • the payload of the search data packet includes a SearchType field, a found flag, a Search ID field, a Hop number, a KeyGS field, a KeyFID field, and a Checkedaddr field.
  • the SearchType field is used to distinguish whether the search data packet requests a search or notifies a search result. In the following description, it is assumed that the value of the SearchType field is set to 0 in a search data packet that requests a search, and the value of the SearchType field is set to 1 in a search data packet that notifies a search result.
  • the Search ID field records the address of the node to be searched.
  • the found flag indicates whether a search target node has been detected.
  • the Hop number indicates the number of hops from the transmission source of the search data packet to the detected node.
  • the KeyGS field records the GS set in the inner header (data packet header) in the highway data packet, and the KeyFID field records the FID of the inner header. In the Checkedaddr field, information on the cluster to be searched is recorded.
  • the Type field of the search data packet is set to a value indicating that it is a search data packet. For example, in the example of FIG. 4, the Type field is set to “4”.
  • the GD of the search data packet is the address of the sub-gateway in the cluster to be searched.
  • LS is the address of the node that transmits the search data packet,
  • GS is the address of the transmission source of the search data packet,
  • LD is the address of the transfer destination to the GD.
  • the data packet processing unit 81 refers to the routing table 95 and acquires the LD.
  • the search execution unit 72 in the sub-gateway that searches for a cluster transmits a search data packet for each cluster to which the cluster to which the sub-gateway belongs is adjacent.
  • An example in which a search data packet is transmitted is shown in FIG.
  • Each of the sub-gateways that have received the search data packet confirms whether the node device 10 to be searched belongs to the cluster to which the sub-gateway belongs. If the node device 10 to be searched cannot be detected, the sub-gateway newly generates a search data packet and transmits it to a cluster adjacent to the cluster to which it belongs. When the node device 10 that is the search target can be detected, the sub-gateway notifies the search result to the node device 10 that has made an inquiry to the sub-gateway.
  • the state of notification of the search result is shown in FIG.
  • the sub-gateway that has received the highway data packet transmits the highway data packet to the cluster to which the node device 10 that is the search target belongs.
  • the sub-gateway that has received the highway data packet removes the outer header of the highway data packet and transmits the data packet to the destination of the data packet.
  • An example when a data packet is transmitted is shown in FIG.
  • FIG. 39 shows an example of a data packet destination search method and data packet transmission.
  • the node S belonging to the cluster C1 transmits a data packet to the node G belonging to the cluster C3.
  • node S and node A belong to cluster C1
  • node B and node C belong to cluster C2
  • node D and node G belong to cluster C3.
  • node A is the default gateway for node S.
  • the cluster C1 is adjacent to the cluster C2, but is not adjacent to the cluster C3, and the cluster C2 is adjacent to the cluster C1 and the cluster C3.
  • the data packet processing unit 81 of the node S generates a data packet addressed to the node G.
  • the GD of the data packet is set to the node G, and the GS and LS are set to the node S.
  • the data packet processing unit 81 outputs the generated data packet to the highway data packet processing unit 82 without setting the LD.
  • the highway data packet processing unit 82 adds an outer header to the input data packet.
  • the highway data packet processing unit 82 sets the GD of the outer header to the node A that is the default gateway of the node S.
  • the GS and LS of the outer header are set to the node S.
  • the highway data packet processing unit 82 refers to the routing table 95 to acquire the LD specified for transmitting the packet to the node A, and sets the acquired value in the LD of the outer header.
  • the packet generated here is as shown in FIG.
  • the highway data packet processing unit 82 transmits the highway data packet toward the node A.
  • the node A Upon receiving the highway data packet, the node A checks the highway table 94. In the highway table 94, information on a node that recognizes the LD is recorded because a highway data packet has been transferred or a route has been searched. The highway table 94 records a GD belonging to other than the belonging cluster and an LD corresponding to the GD. Note that the node device 10 that is not a sub-gateway can not hold the highway table 94.
  • the highway data packet processing unit 82 of the node A records the highway data packet in the pending data table 83.
  • the pending data table 83 can be in any format that can record highway data packets.
  • the highway data packet processing unit 82 notifies the search destination determination unit 71 of the GD of the inner header of the highway data packet, and requests a route search.
  • the search destination determination unit 71 confirms the search log table (SLT) 73.
  • the search log table 73 records information about the routes searched so far.
  • Each entry of the search log table 73 includes an LS, FID, GS, done flag, and address list.
  • data is recorded in the order of LS, FID, GS, done flag, and address list from the left side for each entry.
  • the address of the node device 10 that is the transmission source of the search data packet is recorded.
  • the FID stores the FID of the data packet included in the highway data packet
  • the GS stores the address of the source node of the highway data packet.
  • the address list the address of the node device 10 that is the transmission destination of the search data packet is recorded.
  • search log table 73 An example of the search log table 73 is shown in FIG.
  • the search destination determining unit 71 When the entry about the notified GD is not included in the search log table 73, the search destination determining unit 71 generates an entry and records information about the notified GD in the search log table 73.
  • LS is node A and GS is node S.
  • the done flag 0 and the FID is set to FID0.
  • the search destination determination unit 71 selects a search destination from the adjacent clusters and notifies the search execution unit 72 of the search destination.
  • the search execution unit 72 determines a node that is an adjacent node of the node A among the sub-gateways of the search destination cluster as a transmission destination of the search data packet.
  • the cluster C2 is designated as the search destination and the transmission destination of the search data packet is determined by the node B. Further, the search execution unit 72 records the transmission destination (node B) of the search data packet in the address list of the search log table 73.
  • the search execution unit 72 generates a search data packet.
  • An example of a search data packet generated by the node A is shown in FIG.
  • GS and LS become node A.
  • GD and LD become the destination node B of the search data packet.
  • the search execution unit 72 of the node A transmits the generated search data packet to the node B.
  • the search destination determination unit 71 of the Node B performs a search when receiving a search data packet in which the value of the SearchType field is set to 0. First, the search destination determination unit 71 checks the value of the Checkedaddr field. Here, it is recognized from the value of the Checkedaddr field that the belonging cluster (cluster C2) has not been searched. Then, the search destination determination unit 71 of the node B checks whether the node recorded in the Search ID field of the search data packet is recorded in the routing table 95. Here, the node G is not recorded in the routing table 95 held by the node B. Then, the search destination determination unit 71 recognizes that the node G does not belong to the cluster C2.
  • the search destination determination unit 71 of the node B extracts the value of the KeyGS field and the value of the KeyFID field of the search data packet, and an entry associated with the combination of the extracted values is recorded in the search log table 73. Make sure that Here, it is assumed that entries corresponding to the value of the KeyGS field and the value of the KeyFID field are not included in the search log table 73. Then, the search destination determination unit 71 adds an entry to the search log table 73 and sets the values of the LS, FID, GS, and done flags. Next, the search destination determination unit 71 of the node B determines a cluster that has not been searched yet among the adjacent clusters as a search destination. Here, the search destination determination unit 71 designates the cluster C3 as the search destination and notifies the search execution unit 72 of it.
  • the search execution unit 72 determines a sub-gateway (node C) that is a sub-gateway of the cluster to which it belongs and is adjacent to the sub-gateway included in the cluster C3 as a transmission destination of the search data packet. Therefore, the search log table 73 includes LS: Node A FID: FID0 GS: Node S done flag: 0 GD: Node C Is recorded. An example of the search log table 73 is shown in FIG.
  • the search execution unit 72 transmits a search data packet to the node C.
  • the search data packet generation method is the same as the method described in the procedure (62).
  • An example of a search data packet generated by the node B is shown in FIG.
  • the search execution unit 72 of the node B sets GD of the search data packet to the node C, and sets GS and LS to the node B. Further, the search execution unit 72 of the node B sets the number of hops to 1, and further records that the cluster C1 and the cluster C2 have been searched in the Checkedaddr field.
  • the search execution unit 72 of the node B determines the LD with reference to the routing table 95 and transmits the generated search data packet.
  • the search destination determining unit 71 of the node C recognizes from the value of the Checkedaddr field that the cluster to which it belongs (cluster C2) has been searched. Then, the search destination determination unit 71 of the node C does not search the routing table 95.
  • the search destination determination unit 71 of the node C confirms whether an entry corresponding to the combination of the value of the KeyGS field and the value of the KeyFID field of the search data packet is recorded in the search log table 73.
  • the search destination determination unit 71 LS: Node B FID: FID0 GS: Node S done flag: 0 GD: Node D Is added to the search log table 73.
  • An example of the added entry is shown in FIG. Note that the LS in the search log table 73 is the node B because it is the source node of the search data packet.
  • the search destination determination unit 71 of the node C designates the cluster C3 from the adjacent clusters as the search destination and notifies the search execution unit 72 of it.
  • the search execution unit 72 transmits a search data packet to a sub-gateway (node D) that is an adjacent node and adjacent to the sub-gateway included in the cluster C3.
  • the search data packet generation method is the same as the method described in the procedure (62).
  • An example of a search data packet generated by the node C is shown in FIG.
  • the search execution unit 72 of the node C sets GD of the search data packet to the node D, and sets GS and LS to the node C.
  • the number of hops is a value obtained by adding 1 to the number of hops from the node B to the node C. That is, the hop count is the hop count starting from the node A.
  • the search destination determination unit 71 of the node D Upon receiving the search data packet requesting the search, the search destination determination unit 71 of the node D checks the value of the Checkedaddr field. Here, since C3 is not included in the Checkedaddr field, the search destination determination unit 71 recognizes that the cluster C3 has not been searched. Then, the search destination determination unit 71 of the node D confirms whether or not the node recorded in the Search ID field is recorded in the routing table 95. Here, it is assumed that the node G is recorded in the routing table 95 held by the node D.
  • the search destination determination unit 71 determines that the search is completed, and generates a search data packet for notifying the search result.
  • An example of a search data packet generated at the node D is shown in FIG.
  • the search destination determination unit 71 of the node D sets the value of the SearchType field of the search data packet to 1 and sets the found flag to 1, indicating that the response is for notifying the search result. Further, clusters C1 to C3 are recorded in the Checkedaddr field.
  • the search destination determination unit 71 records the number of hops from the node D to the node G in the hop number field.
  • the search destination determination unit 71 sets the values of the KeyGS field, the KeyFID field, and the Search ID field to the same values as the search data packet that has requested the search.
  • the search destination determination unit 71 sets the transmission source of the search data packet that has requested the GD to search. Therefore, node C is set in GD. Further, GS and LS are set to the node D. The search destination determination unit 71 transmits the generated search data packet to the node C.
  • An example of an entry added to the highway table 94 is shown in FIG.
  • the value of the Search ID field is recorded in GD
  • the source node of the search data packet is recorded in LD
  • the value of the hop number field in the search data packet after increment is recorded in the Len column. That is, the value of Len is the number of hops from the node recording the highway table 94 to the GD of the entry.
  • the number of hops is the number of hops from node C to node G. If there are entries with the same GD in the highway table 94, the value with the smaller hop count is adopted.
  • the search destination determination unit 71 of the node C confirms the search log table 73 and identifies a target to be notified of information recorded in the payload of the search data packet. At this time, the search destination determination unit 71 searches the GS and FID fields of the search log table 73 using the combination of the values of the KeyGS field and KeyFID field of the search data packet as a key. In the example of FIG. 39, the GS and FID fields of the search log table 73 are the second and third fields of entries in the search log table 73. Further, the done flag is changed to 1 for the hit entry in the search log table 73.
  • FIG. 39 (k) shows an example when an entry in the search log table 73 is changed.
  • the search destination determination unit 71 notifies the information notified from the node D toward the node specified in the LS of the entry that has been hit. At this time, the search destination determination unit 71 generates a search data packet shown in FIG. 39 (j) and transmits it to the node B.
  • the search destination determination unit 71 of the node A updates the highway table 94 and the search log table 73 by the same processing as the procedure described in (67).
  • An example of the highway table 94 is shown in FIG.
  • LS Node A
  • FID FID0 GS
  • Node S done flag 1
  • GD Node B Data is recorded.
  • An example of the search log table 73 is shown in FIG.
  • the highway data packet processing unit 82 of the node A transfers the highway data packet stored in the pending data table 83 to the node B because the entry of the node G has been made in the highway table 94. At this time, GD of the outer header of the highway data packet is changed to node B, and GS and LS are changed to node A.
  • the highway data packet processing unit 82 of the node D searches the routing table 95 using the GD of the inner header of the highway data packet as a key. Since GD is recorded in the routing table 95, the highway data packet processing unit 82 removes the outer header of the highway data packet and outputs it to the data packet processing unit 81.
  • An example of a data packet output to the data packet processing unit 81 is shown in FIG.
  • the data packet processing unit 81 refers to the routing table 95 and transfers the data packet to the node G.
  • FIG. 40 is a flowchart for explaining an example of processing of a search data packet (SDP).
  • SDP search data packet
  • FIG. 40 shows the operation of the node that has received the search data packet.
  • the node that has received the search data packet may be described as “own node”.
  • the search destination determination unit 71 of the node that has received the search data packet determines whether a search is requested based on the SearchType field (step S221). When the search is requested, the search destination determination unit 71 confirms whether the own node matches the GD of the search data packet (Yes in step S221, step S222). If the own node is not the GD of the search data packet, a process for transferring the search data packet to the destination is performed (No in step S222, step S227). When the own node is the GD of the search data packet, the search destination determining unit 71 further confirms whether the own node is a sub-gateway (Yes in step S222, step S223).
  • the search destination determination unit 71 ends the process (No in step S223).
  • the search destination determination unit 71 changes the value of the SearchType field to 1.
  • the search destination determination unit 71 records a cluster ID for identifying the cluster to which the node belongs in the searched cluster list of the search data packet (step S226).
  • the search destination determination unit 71 transmits the generated search data packet (step S227).
  • the search destination determination unit 71 searches the routing table 95 with the GD of the search data packet, and sets the obtained LD as the LD of the search data packet. Further, the own node is set in the LS of the search data packet.
  • step S224 when the node recorded in the Search ID field is not the own node and the node recorded in the routing table 95, the search destination determining unit 71 performs registration processing in the search log table 73 ( Step S228). In addition, the search destination determination unit 71 identifies a cluster that has not been searched yet among the adjacent clusters, and selects a sub-gateway belonging to the search destination cluster (step S229). When the transfer destination of the search data packet is obtained, the search destination determination unit 71 records the transfer destination node in the search log table 73, and performs the processing after step S226 (Yes in step S231).
  • the search destination determination unit 71 confirms whether the own node matches the GD of the search data packet (No in step S221, step S234). If the own node is not the GD of the search data packet, a process for transferring the search data packet to the destination is performed (No in step S234, step S241). When the own node is the GD of the search data packet, the search destination determining unit 71 further confirms whether the own node is a sub-gateway (step S235). If the own node is not a sub-gateway, the search destination determination unit 71 ends the process (No in step S235).
  • step S236 If the own node is a sub-gateway, it is confirmed whether the found flag of the search data packet is 1 (step S236).
  • the search destination determination unit 71 records the content notified by the search data packet in the highway table 94 (Yes in step S236, step S237).
  • the node recorded in the Search ID field of the search data packet is recorded in the GD of the highway table 94.
  • the GS of the search data packet is recorded in the LD of the highway table 94.
  • the search destination determination unit 71 sets the number of hops in the highway table 94.
  • the search destination determination unit 71 performs the process of step S238 without performing the process of step S237 (No in step S236).
  • the node device 10 starts an inquiry using the search data packet
  • the node device 10 transmits the highway data packet using the highway table 94 (Yes in step S238, step S239).
  • Whether or not the own node has started an inquiry using the search data packet is determined by searching the search log table 73 with a combination of the values of the KeyGS field and the KeyFID field of the search data packet. If the LS of the entry that matches the combination of the values of the KeyGS field and KeyFID field of the search data packet is the local node, it is determined that the local node has started an inquiry.
  • the search execution unit 72 acquires from the search log table 73 the LS of the entry that matches the combination of the values of the KeyGS field and the KeyFID field (step S240). .
  • the search execution unit 72 sets the LS obtained from the search log table 73 in the GD of the search data packet.
  • the search destination determination unit 71 transmits the generated search data packet (step S241).
  • the method for generating the search data packet transmitted in step S241 is the same as that in step S227.
  • FIG. 41 is a flowchart for explaining an example of processing of a highway data packet.
  • FIG. 41 shows the operation of the node that has received the highway data packet.
  • the node that has received the highway data packet may be described as “own node”.
  • the highway data packet processing unit 82 determines whether the GD of the received highway data packet is its own node (step S251). When the GD of the highway data packet is the own node, the highway data packet processing unit 82 confirms whether the own node is a sub-gateway (Yes in step S251, step S252). If the own node is not a sub-gateway, the highway data packet processing unit 82 terminates the processing after discarding the data (No in step S252, step S253).
  • the highway data packet processing unit 82 confirms whether the GD of the inner header (GD of the data packet) is the own node (Yes in step S252, step S254). If the GD is its own node, the highway data packet processing unit 82 outputs the data to the higher-level processing unit 14 and ends the process (Yes in step S254, step S255). If the GD is not its own node, it is confirmed whether the GD of the inner header is registered in the routing table 95 (No in step S254, step S256). If the GD is registered in the routing table 95, the GD exists in the cluster to which the GD belongs (Yes in step S257).
  • the highway data packet processing unit 82 converts the highway data packet into a data packet and outputs the data packet to the data packet processing unit 81. Further, the data packet processing unit 81 sets the LS of the data packet as its own node, and sets the LD of the data packet as the LD recorded in the routing table 95 in association with the GD (step S258). The data packet processing unit 81 transfers the data packet (step S259).
  • step S257 If it is determined in step S257 that the GD is not registered in the routing table 95, the highway data packet processing unit 82 confirms whether the GD of the inner header is registered in the highway table 94 (No in step S257). Step S260). If the GD is not registered in the highway table 94, the search data packet is transmitted (No in step S261, step S262). On the other hand, if the GD is registered in the highway table 94, the LD of the highway table 94 is set to the GD of the highway data packet (GD of the outer header) (Yes in step S261, step S263). Thereafter, the highway data packet processing unit 82 confirms whether the GD of the outer header of the highway data packet is registered in the routing table 95 (steps S264 and S265). If the GD of the outer header is not registered in the routing table 95, the highway data packet processing unit 82 discards the data and ends the processing (No in step S265, step S268).
  • the LD recorded in the corresponding entry of the routing table 95 is set as the LD of the outer header.
  • the LS of the outer header is set as its own node, and the hop count of the data packet is incremented by 1 (Yes in Step S265, Step S266).
  • the highway data packet processing unit 82 transfers the highway data packet when the value of the number of hops is equal to or less than the previously stored hop limit (step S269).
  • the hop count value exceeds the pre-stored hop limit, the highway data packet processing unit 82 discards the data (No in step S267, step S268).
  • the processes in and after step S264 are performed.
  • step S198 the operation when a highway data packet is generated will be described with reference to FIG. If the GD of the data packet belongs to a cluster different from the cluster to which the data packet belongs, it is determined No in step S194, and creation of a highway data packet is started (step S198). In the following description, the operation of the node that generates the highway data packet will be described with reference to steps S198 to S210. In the description of steps S198 to S210, the node that generates the highway data packet is described as “own node”.
  • the highway data packet processing unit 82 confirms whether the own node is a sub-gateway (step S199). When the own node is not a sub-gateway, the highway data packet processing unit 82 acquires a route to the default gateway from the routing table 95 (steps S200 and S201). The highway data packet processing unit 82 sets the address of the highway data packet and the like (step S202). That is, the highway data packet processing unit 82 sets the default gateway to the GD of the highway data packet and sets its own node to the GS of the highway data packet. Further, the highway data packet processing unit 82 sets the LD of the highway data packet to the LD of the route to the default gateway, and further increments the number of hops of the data packet by one.
  • the highway data packet processing unit 82 transfers the highway data packet (Yes in step S208, step S209). On the other hand, if the hop count exceeds the hop limit, the highway data packet processing unit 82 discards the highway data packet (No in step S208).
  • step S199 If it is determined in step S199 that the own node is a sub-gateway, it is confirmed whether the GD of the inner header (GD of the data packet) is registered in the highway table 94 (steps S203 and S204).
  • the highway data packet processing unit 82 sets the node registered as the LD of the route to the GD in the highway table 94 as the GD of the outer header. Further, the highway data packet processing unit 82 sets the GS of the highway data packet in its own node (step S205). Next, the highway data packet processing unit 82 acquires an entry that matches the GD of the outer header of the highway data packet from the routing table 95 (step S206).
  • the highway data packet processing unit 82 designates the node recorded as the LD in the acquired entry as the LD of the outer header of the highway data packet, and sets the LS as its own node. Further, the highway data packet processing unit 82 increments the number of hops of the data packet by 1 (step S207). The highway data packet processing unit 82 transfers the highway data packet when the hop count is less than or equal to the hop limit, and discards the highway data packet when the hop count exceeds the hop limit (steps S208 and S209). If it is determined in step S204 that it is not registered in the highway table 94, the sub-gateway performs search data packet transmission processing (step S210).
  • the packet format illustrated in the above description is an example.
  • the packet format may be appropriately changed depending on the implementation. Further, in the above description, the case where there is one starting node device that generates a cluster has been described as an example, but the number of starting node devices that generate a cluster may be plural. Also in this case, the operation of each starting node device is as described above.
  • the cluster ID can be the address of the cluster starting node device.
  • the cluster table 92 can store one of the cluster ID and the address of the starting node device, thereby saving the memory area.

Abstract

 ノード装置は、受信部、参加要求部、ルーティングテーブル、生成要求部、および、送信部を備える。受信部は、ネットワークの経路情報を通知する経路情報パケットを受信する。参加要求部は、隣接するノード装置である隣接ノード装置と隣接ノード装置を介して通信可能なノード装置の中から選択した第1のノード装置に、自身が所属している第1のクラスタへの参加を要求するための参加要求パケットを生成する。ルーティングテーブルは、第1のクラスタに所属している各所属ノード装置までの経路を記憶する。生成要求部は、第1のクラスタに所属する所属ノード装置の数が閾値を超えると、第1のクラスタに所属していない第2のノード装置に、第1のクラスタとは異なる第2のクラスタの生成を要求するための生成要求パケットを生成する。送信部は、参加要求パケットを第1のノード装置に送信し、生成要求パケットを第2のノード装置に送信する。

Description

ノード装置および通信方法
 本発明は、ネットワークに属する複数のノード装置の間での通信方法と、ノード装置に関する。
 無線アドホックネットワークに属するノード装置は、ルーティング情報を伝播させるために、Helloパケットを用いる。例えば、図1に示すアドホックネットワークに属するノード装置Aは、ノード装置Aが保持しているルーティング情報を含むHelloパケットを生成し、周期的にブロードキャストする。Helloパケットを受信したノード装置Bは、ノード装置Bが保持しているルーティング情報と、Helloパケットに含まれている情報を比較し、ノード装置Bが保持していなかったルーティング情報をHelloパケットから取得する。さらに、ノード装置Bは、Helloパケットから経路の品質情報も取得し、なるべく品質情報の良い経路を用いて通信を行う。この品質情報には、ループ情報も含まれている。このように、アドホックネットワークに属するノード装置は、Helloパケットを用いて、ネットワーク中に含まれている他のノード装置への経路情報を学習し、得られた最適経路を用いて通信を行う。ここで、アドホックネットワークに含まれている各ノード装置は、アドホックネットワーク中の他の全てのノード装置までの経路をルーティングテーブル中に保持する。例えば、ノード装置Aは、アドホックネットワーク中のノード装置A以外のノード装置の各々への経路情報をルーティングテーブルに保持する。このため、ノード装置Aは、例えば、ノード装置Bを介してノード装置Cにデータパケットを送信することができる。
 関連する技術として、パケットを受信したノード装置が、予め記憶していた送信対象パケットの識別情報と、受信パケットの識別情報を比較する通信方法が知られている。この方法では、比較結果に基づいて、受信パケットの最終宛先への経路についての送信可能性が判断される。また、パケットの最終宛先ノードごとに、パケットを中継するノードについての重み付けを行い、重み付けの結果に基づいて、パケットの送り先を決定する方法も考案されている。さらに、互いに近傍に配置された複数のノード装置でクラスタを形成し、クラスタの中からクラスタヘッドを選択する際に、より多くの隣接ノードを持つノード装置がより高い確率でクラスタヘッドに選択されるようにする方法が知られている。また、無線センサーノードの位置情報とお互いの電波強度を元に安定した経路をツリー状に構築して、グループ分割する方法も考案されている。
国際公開第2011/013165号 国際公開第2009/130918号 特開2008-312059号公報 特開2007-243794号公報
 背景技術で述べた方法では、ネットワーク中に含まれるノード装置の数が増加すると、各ノード装置が保持するルーティングテーブルの大きさが大きくなってしまうという問題がある。ネットワーク中のノード装置をクラスタやグループに分ける方法であっても、形成されるクラスタやグループの規模が大きくなると、ルーティングテーブルが大きくなるという問題がある。
 本発明は、ノード装置が保持するルーティングテーブルの容量を抑えることを目的とする。
 実施形態に係る装置は、受信部、参加要求部、ルーティングテーブル、生成要求部、および、送信部を備える。受信部は、ネットワークの経路情報を通知する経路情報パケットを受信する。参加要求部は、隣接するノード装置である隣接ノード装置と前記隣接ノード装置を介して通信可能なノード装置の中から選択した第1のノード装置に、自身が所属している第1のクラスタへの参加を要求するための参加要求パケットを生成する。ルーティングテーブルは、前記第1のクラスタに所属している各所属ノード装置までの経路を記憶する。生成要求部は、前記第1のクラスタに所属する所属ノード装置の数が閾値を超えると、前記第1のクラスタに所属していない第2のノード装置に、前記第1のクラスタとは異なる第2のクラスタの生成を要求するための生成要求パケットを生成する。送信部は、前記参加要求パケットを前記第1のノード装置に送信し、前記生成要求パケットを前記第2のノード装置に送信する。
 ルーティングテーブルの容量が抑制される。
アドホックネットワークの例を示す図である。 生成されたクラスタの例を示す図である。 ノード装置の構成の例を示す図である。 パケットの構成の例を説明する図である。 ノード装置のハードウェア構成の例を示す図である。 リンクテーブルの例を示す図である。 リンクテーブルを更新するときの経路管理部の動作の例を説明するフローチャートである。 未所属テーブルの例を示す図である。 未所属テーブルを更新するときの未所属ノード特定部の動作の例を説明するフローチャートである。 クラスタの生成方法の例を説明する図である。 クラスタテーブルの例を示す図である。 起点ノード装置による、クラスタの生成の例を示す図である。 クラスタの生成の際に行われる処理の例を説明するシーケンス図である。 クラスタデータパケットの構成の例を示す図である。 新たな起点ノード装置の指定とクラスタの生成の例を説明する図である。 新たな起点ノード装置の指定とクラスタの生成において行われる通信の例を説明するシーケンス図である。 クラスタ生成の手順の例を説明するフローチャートである。 未所属ノードにクラスタへの参加を要求するときの動作の例を説明するフローチャートである。 新たなクラスタの生成が開始される場合の動作の例を説明するフローチャートである。 クラスタに所属しているノード装置でのHelloパケットの生成の例を説明する図である。 ノード装置がHelloパケットを受信した場合に行う動作の例を説明するフローチャートである。 ルーティングテーブルの更新のための動作の例を説明するフローチャートである。 クラスタテーブルの更新のための動作の例を説明するフローチャートである。 ルーティングテーブルの更新のための動作の例を説明するフローチャートである。 クラスタテーブルの更新のための動作の例を説明するフローチャートである。 サブゲートウェイの決定方法の例を説明する図である。 所属クラスタに隣接するクラスタのIDを認識する方法の例を説明する図である。 隣接クラスタの通知を受けたときの起点ノード装置の動作の例を説明する図である。 サブゲートウェイの決定の際に行われる動作の例を説明するシーケンス図である。 隣接クラスタ通知部の動作の例を説明するフローチャートである。 隣接クラスタを通知されたときの候補テーブル生成部の動作の例を説明するフローチャートである。 サブゲートウェイを生成する際の起点ノード装置の動作の例を説明するフローチャートである。 サブゲートウェイに指定されたノードの動作の例を説明するフローチャートである。 データパケットのフォーマットの例を示す図である。 データパケットの受信に際して行われる動作の例を説明するフローチャートである。 ハイウェイデータパケットのフォーマットの例を示す図である。 所属クラスタに含まれないノード装置との通信方法の例を説明する図である。 検索データパケットのフォーマットの例を示す図である。 データパケットの宛先の検索方法とデータパケットの送信の例を説明する図である。 検索データパケットの処理の例を説明するフローチャートである。 ハイウェイデータパケットの処理の例を説明するフローチャートである。
 図2は、生成されたクラスタの例を示す。図2の例では、図1に示したアドホックネットワークがクラスタC1~C3の3つに分けられている。アドホックネットワークに含まれるノード装置の各々は、ネットワークの経路情報を通知する経路情報パケットを送受信することにより、隣接ノード装置を認識する。以下の説明では、経路情報パケットはHelloパケットであるものとする。ここで、あるノード装置の「隣接ノード装置」は、あるノード装置から送信されたパケットを受信することができる範囲内に位置するノード装置のことを指すものとする。
 起点ノード装置は、隣接ノード装置に対して、起点ノード装置が所属するクラスタと同じクラスタに所属するように要求するための制御パケットを送信する。ここで、起点ノード装置は、予め、1つのクラスタに含めることができるノード装置の数を表す閾値を記憶しており、閾値以下の数のノード装置を1つのクラスタに含める。クラスタに参加すると、ノード装置は、参加したクラスタを識別する識別子を含めたHelloパケットを送信する。ノード装置は、同じクラスタに所属しているノード装置までの経路をルーティングテーブルに記録する。しかし、ノード装置は、所属するクラスタが異なるノード装置の情報はルーティングテーブルに記録しない。
 各クラスタでは、隣接するクラスタ中のノード装置と通信可能なノード装置から「サブゲートウェイ」(sub gateway、SGW)が選択される。図2の例では、四角で示すノード(SG11~SG32)がサブゲートウェイであるものとする。サブゲートウェイとして動作するノード装置は、そのノード装置が所属しているクラスタに隣接するクラスタ中に含まれているサブゲートウェイの情報もルーティングテーブルに含めるものとする。例えば、サブゲートウェイSG21は、SG12の情報を保持している。従って、ノード装置は、所属するクラスタとは異なるクラスタ中のノード装置に、サブゲートウェイを介してパケットを送信することができる。例えば、クラスタC2に属するノード装置は、サブゲートウェイSG21とSG12を介してクラスタC1に所属しているノード装置にパケットを送信することができる。
 このように、各クラスタに所属するノード装置の数に上限を設け、サブゲートウェイ以外のノード装置が保持するルーティングテーブルには各クラスタ中のノード装置までの経路を記録するようにすると、ノード装置中のルーティングテーブルの肥大化を抑えることができる。また、サブゲートウェイは、サブゲートウェイが所属しているクラスタ中のノード装置への経路に加えて、隣接するクラスタ中のノードの情報も含む。このため、ノード装置は、サブゲートウェイを介して異なるクラスタに所属するノードにパケットを送信することができる。また、サブゲートウェイが保持する経路情報も、サブゲートウェイが所属しているクラスタ中のノード装置までの経路と、隣接するクラスタに所属するノード装置までの経路である。このため、サブゲートウェイに選択されたノード装置であっても、ルーティングテーブルに含まれる経路の数は、ネットワーク全体に含まれているノード装置の各々への経路の数に比べて小さくなる。従って、実施形態にかかる方法により、ネットワーク中のノード装置が保持するルーティングテーブルの大きさを小さくすることができる。
 <装置構成>
 図3は、ノード装置10の構成の例を示す。ノード装置10は、受信部11、パケット分岐処理部12、FID(frame identification)生成部13、上位処理部14、Hello生成部15、送信部16、Hello処理部20、受信処理部30、クラスタ処理部40、検索処理部70、データ処理部80、記憶部90を備える。受信部11は、隣接するノード装置10からパケットを受信する。
 図4(a)は、ノード装置10の間で送受信されるパケットの構成の例を示す。パケットは、ヘッダとペイロードを有する。ヘッダは、パケットの種類によらず共通の形式であり、Typeフィールド、Lengthフィールド、グローバル宛先(Global Destination、GD)フィールド、グローバル送信元(Global Source、GS)フィールド、ローカル送信元(Local Source、LS)フィールド、ローカル宛先(Local Destination、LD)フィールドを含む。以下の説明で、「グローバル宛先」は、パケットの最終的な宛先のノード装置10を示すものとする。一方、「ローカル宛先」は、パケットをグローバル宛先に送信するために行われる1ホップの転送の際に、宛先として指定されるノード装置10を示す。「ローカル送信元」は、パケットが1ホップ転送される場合の転送元のノード装置10を指す。「グローバル送信元アドレス」は、パケットを生成したノード装置10を示すものである。装置を示すものは(MAC)アドレス等、装置固有の識別子(ID)であっても良い。
 Typeフィールドは、ペイロードに含まれるデータの種類を示す。Typeフィールドの値とパケットの種類の関係の例を図4(b)のテーブルに表す。Helloパケットでは、Typeフィールドの値が「0」に設定されている。Typeフィールドの値が「1」であるパケットはクラスタデータパケット(CDP)である。また、Typeフィールドの値が「2」であるパケットはハイウェイデータパケット(HDP)、「3」であるパケットはデータパケット(DP)である。また、Typeフィールドの値が「4」であるパケットは、検索データパケット(SDP)である。個々のパケットについては後で詳しく説明する。これらのパケットのうち、クラスタデータパケット、検索データパケット、および、Helloパケットは、ノード装置10の制御に用いられる。以下の記載では、クラスタデータパケット、検索データパケット、もしくは、Helloパケットのことを「制御パケット」と記載することがある。Lengthフィールドは、パケットの長さを表す。
 パケット分岐処理部12は、受信パケットのヘッダ中にあるTypeフィールドの値によって受信パケットの種類を判別し、パケットの種類ごとに予め決められた出力先に出力する。パケット分岐処理部12は、HelloパケットをHello処理部20に出力する。クラスタデータパケットは、クラスタ処理部40に出力され、ハイウェイデータパケットは、データ処理部80に出力される。データパケットは、Acknowledgment(ACK)パケットである場合は受信処理部30に出力されるが、ACKパケット以外のデータパケットはデータ処理部80に出力される。また、パケット分岐処理部12は、検索データパケットを検索処理部70に出力する。なお、パケットに含まれている情報などについては後述する。
 Hello処理部20は、経路管理部21、未所属ノード特定部22を備える。Hello処理部20は、Helloパケットに含まれている情報を取得して、リンクテーブル91、クラスタテーブル92、未所属テーブル93、ルーティングテーブル95を更新する。リンクテーブル91、クラスタテーブル92、未所属テーブル93、ルーティングテーブル95は、記憶部90に格納されている。リンクテーブル91は、隣接するノード装置10の識別子に対応付けて、隣接するノード装置10が参加しているクラスタの識別子や、隣接するノード装置10がサブゲートウェイに指定されているかなどの情報を保持する。クラスタテーブル92は、ノード装置10が所属しているクラスタと同じクラスタに所属しているノード装置10の情報などを記録する。未所属テーブル93は、クラスタに所属していないノード装置10についての情報を記録している。なお、以下の説明では、クラスタに所属していないノード装置10を「未所属ノード装置」と記載することがある。ルーティングテーブル95は、ノード装置10が所属するクラスタと同じクラスタに所属しているノード装置10までの経路を記録する。リンクテーブル91、クラスタテーブル92、未所属テーブル93、ルーティングテーブル95については、後で詳しく説明する。
 クラスタ処理部40は、クラスタ生成部50、サブゲートウェイ生成部60、デフォルトGW決定部41、クラスタ検索テーブル(CCT)42、隣接クラスタテーブル(NCT)43、ゲートウェイ候補テーブル(SGWCT)44を備える。クラスタ生成部50は、参加要求部51、参加処理部52、生成要求部53、未所属ノード特定部54を備える。起点ノード装置として選択されたノード装置10では、参加要求部51、生成要求部53、未所属ノード特定部54が動作する。一方、起点ノード装置として選択されていないノード装置10では、参加処理部52が動作する。参加要求部51、参加処理部52、生成要求部53、未所属ノード特定部54の動作については後で説明する。クラスタ構築テーブル42は、生成要求部53により新たに起点ノード装置に指定されたノード装置10で参加要求部51が動作するときに使用されるテーブルであり、起点ノード装置に指定したノード装置10の情報などが記録される。また、未所属ノード特定部54は、未所属テーブル93の情報を使用し、適宜、更新する。
 サブゲートウェイ生成部60は、隣接クラスタ通知部61、候補テーブル生成部62、サブゲートウェイ決定部63を備える。候補テーブル生成部62とサブゲートウェイ決定部63は、起点ノード装置として動作しているノード装置10で動作する。一方、隣接クラスタ通知部61は、起点ノード装置として動作していないノード装置10と、起点ノード装置の両方で動作できるものとする。隣接クラスタテーブル43とゲートウェイ候補テーブル44は、サブゲートウェイ決定部63および候補テーブル生成部62の動作で参照される。デフォルトGW決定部41は、サブゲートウェイに設定されていないノード装置10で動作する。デフォルトGW決定部41は、ノード装置10が他のクラスタに所属するノード装置10にパケットを送信するために使用するサブゲートウェイ(デフォルトゲートウェイ)を決定する。隣接クラスタ通知部61、候補テーブル生成部62、サブゲートウェイ決定部63、隣接クラスタテーブル43、ゲートウェイ候補テーブル44についても、後で詳しく説明する。
 検索処理部70は、検索先決定部71、検索実行部72、サーチログテーブル73を備える。検索先決定部71と検索実行部72は、サブゲートウェイで動作する。検索先決定部71や検索実行部72は、ハイウェイデータパケットの送信先を検索するために、サーチログテーブル73、ハイウェイテーブル94を用いる。ハイウェイデータパケットを用いた通信については後述する。
 データ処理部80は、データパケット(DP)処理部81、ハイウェイデータパケット(HDP)処理部82、ペンディングデータテーブル83を備える。ハイウェイデータパケット処理部82は、パケット分岐処理部12から受信したハイウェイデータパケットをデータパケットに変換することができる。ハイウェイデータパケット処理部82は、変換により得られたデータパケットをデータパケット処理部81に出力する。また、データパケット処理部81からのデータパケットをハイウェイデータパケットに変換して送信部16に出力できる。データパケット処理部81は、パケット分岐処理部12から入力されたデータパケットと、ハイウェイデータパケット処理部82から入力されたデータパケット、上位処理部14からのデータパケットを処理する。また、データパケット処理部81は、適宜、データパケットに含まれている情報を上位処理部14に出力することができる。上位処理部14では、上位レイヤのアプリケーションによる処理が行われる。また、データパケット処理部81やハイウェイデータパケット処理部82は、FID生成部13から入力されたFIDを用いてパケットを生成する。ハイウェイデータパケットの処理についても後述する。
 受信処理部30は、ACK処理部31とバッファ部32を備える。ACK処理部31は、パケット分岐処理部12から受信したデータパケットの内容を確認し、受信の成功と失敗のいずれが通知されているかを認識する。バッファ部32は、データパケットの送信の失敗と再送に備えて、送信済みのデータパケットを格納している。そこで、受信の成功を表すACKパケットが入力されると、ACK処理部31は、受信したACKパケットで特定されるデータパケットをバッファ部32から削除する。
 Hello生成部15は、ノード装置10への経路と、ルーティングテーブル95に記録されている経路を、隣接ノード装置10に通知するためのHelloパケットを生成する。送信部16は、Hello生成部15、クラスタ処理部40、検索処理部70、データ処理部80から入力されたパケットを、隣接ノードに送信する。
 記憶部90は、リンクテーブル91、クラスタテーブル92、未所属テーブル93、ハイウェイテーブル94、ルーティングテーブル95のほかに、FID管理テーブル96を備える。FID管理テーブル96は、データパケットが送受信される経路のループ検出に用いられる。データパケット処理部80は、データパケットのGSとFIDを対応付けてFID管理テーブル96に記録する。受信処理部30は、受信したデータパケットのFIDとGSの組み合わせをFID管理テーブル96に記録されている情報と比較する。受信したデータパケットのGSとFIDの組み合わせが既にFID管理テーブル96に記録されている場合、受信処理部30は、データパケットがループによって戻ってきたと判断する。
 図5は、ノード装置10のハードウェア構成の例を示す図である。ノード装置10は、MicroProcessingUnit(MPU)100、バス101(101a~101c)、PHYsical layer(PHY)チップ102、タイマIC104、Dynamic Random access Memory(DRAM)106、フラッシュメモリ107、無線モジュール108を備える。バス101a~101cは、MPU100、PHYチップ102、タイマIC104、DRAM106、フラッシュメモリ107、無線モジュール108の間でデータの入出力が可能になるように接続する。
 MPU100は、フラッシュメモリ107に格納されたファームウェアなどのプログラムを読み込んで処理を行う。このとき、MPU100は、DRAM106をワーキングメモリとして使用できる。MPU100は、パケット分岐処理部12、FID生成部13、上位処理部14、Hello生成部15、Hello処理部20、受信処理部30、クラスタ処理部40、検索処理部70、データ処理部80として動作する。DRAM106は、記憶部90として動作する。PHYチップ102や無線モジュール108は、受信部11および送信部16として動作する。ここで、PHYチップ102はオプションであり、ノード装置10は、PHYチップ102を介して回線による通信を行うことができる。例えば、L3ネットワークとアドホックネットワークとの間のゲートウェイとして動作するノード装置10は、L3ネットワーク中のノード装置とPHYチップ102を用いて通信することができる。タイマIC104は、参加要求部51や生成要求部53が送信したパケットに対する応答パケットを受信するまでの時間を計測する際に用いられ、参加要求部51や生成要求部53の一部として動作する。
 なお、ファームウェアなどのプログラムは、コンピュータ読み取り可能な記憶媒体に格納されて提供され、ノード装置10にインストールされてもよい。または、プログラムは、ネットワークからPHYチップ102や無線モジュール108を介してダウンロードされることによりノード装置10にインストールされてもよい。また、実施形態に応じて、DRAM106やフラッシュメモリ107以外の他の種類の記憶装置が利用されることがある。また、ノード装置10は、コンピュータによって実現されても良い。
 <クラスタの生成前のHelloパケットの処理>
 まず、クラスタが生成される前に、ネットワーク中のノード装置10は、Helloパケットを用いて隣接ノードや未所属ノードを確認する。Helloパケットの例を図4(c)に示す。以下、ノード装置10aがHelloパケットをブロードキャスト送信することにより、ノード装置10aに隣接しているノード装置10bにノード装置10aの情報を通知する場合を例として述べる。
 Helloパケットでは、GDとLDがブロードキャストアドレス、GSとLSがHelloパケットを送信するノード装置10のアドレスに設定されている。また、Typeフィールドの値は「0」である。ペイロードには、クラスタフィールド、Sgwフラグ、データが含まれる。クラスタフィールドには、Helloパケットの送信元であるノード装置10aが所属しているクラスタのクラスタ識別子が記録されるが、ここでは、クラスタが形成されていないため、クラスタの識別子は格納されない。Sgwフラグは、送信元のノード装置10aがサブゲートウェイであるかを表す。以下の説明では、Sgwフラグが「0」に設定されていることは、サブゲートウェイに設定されていないことを表し、Sgwフラグが「1」に設定されていることは、サブゲートウェイに設定されていることを表すものとする。クラスタの形成前は、いずれのノード装置10もサブゲートウェイに設定されていないため、Sgwフラグの値は0である。データフィールドには、ルーティングテーブル95に記録されているGDについての情報が記録される。しかし、クラスタが生成される前は、ルーティングテーブル95も生成されていないので、データフィールドにデータが含まれていないHelloパケットが送信される。
 次に、図6~図9を参照しながら、Helloパケットを受信したときのノード装置10bの動作について説明する。ノード装置10bに備えられている経路管理部21と未所属ノード特定部22は、パケット分岐処理部12を介してHelloパケットを受信すると、受信したHelloパケットに基づいて、リンクテーブル91と未所属テーブル93を更新する。
 図6は、リンクテーブル91の例を示す。リンクテーブル91は、ノード装置10の隣接ノード装置の各々について、隣接ノードのアドレス、クラスタ識別子、ホップ数、隣接ノード装置に対して設定されているSgwフラグの値が記録される。リンクテーブル91中のクラスタ識別子は、隣接ノード装置が所属しているクラスタを識別する識別子である。なお、図6はリンクテーブル91の例であり、例えば、リンクテーブル91はホップ数を含めないなど、リンクテーブル91に含まれる情報を変更することができる。
 図7は、リンクテーブル91を更新するときの経路管理部21の動作の例を説明するフローチャートである。経路管理部21は、受信したHelloパケットのLSを抽出し、LSをキーとしてリンクテーブル91のアドレスの欄を検索する(ステップS1)。キーとして用いたLSのアドレスがリンクテーブル91に登録されていない場合、経路管理部21は、LSに対応するエントリを作成する(ステップS2でNo、ステップS3)。次に、経路管理部21は、追加したエントリにHelloパケットのLS、クラスタID、Sgwフラグの値を設定し、ホップ数を記録する(ステップS4)。すなわち、経路管理部21は、アドレスの欄にHelloパケットのLSを登録し、ホップ数に1を設定する。このとき、まだクラスタが生成されていないので、経路管理部21は、クラスタIDの欄の値を初期化し、Sgwフラグの値を0に設定する。一方、ステップS2でLSのアドレスがリンクテーブル91に登録されている場合、経路管理部21は、エントリの作成を行わずにリンクテーブル91を更新する(ステップS2でYes)。この場合、経路管理部21は、ステップS1の検索でヒットしたエントリについてステップS4の処理を行う。
 図8は、未所属テーブル93の例を示す。未所属テーブル93は、未所属ノードを未所属ノードの隣接ノードと対応付けて記録している。図9は、未所属テーブル93を更新するときの未所属ノード特定部22の動作の例を説明するフローチャートである。ステップS11~S15はクラスタに所属していないノード装置10からHelloパケットを受信した場合の動作であり、ステップS16~S18は、クラスタに所属しているノード装置10からHelloパケットを受信した場合の動作である。ここでは、ステップS11~S15を参照しながらノード装置10bで行われる処理を説明し、ステップS16~S18の処理については、後述する。
 未所属ノード特定部22は、受信したHelloパケットのクラスタフィールドにクラスタ識別子が設定されているかを確認する(ステップS11)。クラスタ識別子が設定されていない場合、未所属ノード特定部22は、クラスタに所属していないノード装置10からHelloパケットを受信したと判断し、Helloパケットの送信元を未所属テーブル(UKT)93に記録するための処理を行う。まず、未所属ノード特定部22は、受信したHelloパケットのLSを抽出し、LSをキーとして未所属テーブル93の未所属ノードの欄を検索する(ステップS12)。キーとして用いたLSのアドレスが未所属テーブル93に登録されていない場合、未所属ノード特定部22は、LSに対応するエントリを作成する(ステップS13でNo、ステップS14)。さらに、未所属ノード特定部22は、追加したエントリの未所属ノードにHelloパケットのLSを設定し、隣接ノードの欄にHelloパケットを受信したノード装置10のアドレスを設定する(ステップS15)。例えば、ノード装置10bがノード装置10aから初めてHelloパケットを受信した場合、ノード装置10aは未所属テーブル93に記録されていない。そこで、ノード装置10bの未所属ノード特定部22は、新たに生成したエントリの未所属ノードの欄にノード装置10aを記録し、ノード装置10aの隣接ノードとして、ノード装置10bを記録する。一方、ステップS13で、キーとして用いたLSのアドレスが未所属テーブル93に登録されていることが確認された場合、未所属ノード特定部22は処理を終了する(ステップS13でYes)。
 <クラスタの生成>
 図10は、クラスタの生成方法の例を示す。以下の説明では、クラスタの生成を開始するノード装置10のことを「起点ノード装置」と記載することがある。また、ノード装置10が所属しているクラスタを、そのノード装置10の「所属クラスタ」と記載することがある。さらに、クラスタに所属しているノード装置10を「所属ノード」と記載することもある。また、起点ノード装置は、予め、1つのクラスタに含めることができるノード装置10の数を表す閾値を記憶しているものとする。
 起点ノード装置は、Helloパケットの送受信により隣接ノード装置を認識すると、隣接ノード装置を含むクラスタの生成を開始する。まず、起点ノード装置中の参加要求部51は、生成するクラスタを識別するクラスタ識別子を決定する。次に、起点ノード装置を、決定したクラスタ識別子で識別されるクラスタに所属させる。以下の説明では、起点ノード装置O1はクラスタC4を生成するものとする。
 次に、図10(a)に示すように、起点ノード装置O1は、隣接ノード装置10に、クラスタC4への参加を要求すると共に、クラスタC4を識別するクラスタ識別子を送信する(取り込み)。参加を要求されたノード装置10は、いずれのクラスタにも所属していない場合、クラスタC4に所属すると共に、起点ノード装置O1にクラスタC4に参加した旨を通知(参加通知)する。ここで、起点ノード装置O1は、クラスタに関する情報を、適宜、クラスタテーブル92に記録するものとする。図11は、クラスタテーブル92の例を示す。クラスタテーブル92には、ノード装置10の所属クラスタのクラスタ識別子と起点ノード装置O1のアドレスが記録されるものとする。例えば、起点ノード装置O1が保持するクラスタテーブル92では、クラスタ識別子はC4である。起点ノード装置O1は、参加通知を受け取ると、参加通知の送信元を所属ノードとしてクラスタテーブル92に記録する。なお、クラスタテーブル92には、所属クラスタに含まれているサブゲートウェイも記録されるが、サブゲートウェイの設定や記録については、後述する。
 起点ノード装置O1は、参加通知を受信すると、クラスタC4に所属しているノードの数をインクリメントし、閾値と比較する。クラスタC4に所属しているノード装置10の数が閾値未満である場合、起点ノード装置O1は、他の隣接ノード装置にクラスタC4への参加を要求する。全ての隣接ノードに参加を要求しても、まだクラスタC4の所属ノードの総数が閾値に達しない場合、起点ノード装置O1は、隣接ノード装置を介して通信可能なノード装置10に対しても、クラスタC4への参加を要求する。起点ノード装置O1は、クラスタC4に含まれるノード装置10の数が閾値に達するまでクラスタC4への参加の要求を繰り返す。
 クラスタC4の所属ノードの数が閾値と同数になると、起点ノード装置O1は、クラスタC4への参加の要求を停止する。さらに、起点ノード装置O1は、図10(b)に示すように、未所属ノードから選択したノード装置10に対して、新たな起点ノード装置O2として動作することを要求する。また、起点ノード装置O1は、起点ノード装置として動作することを要求する際に、閾値を起点ノード装置O2に通知するものとする。
 図10(c)に示すように、起点ノード装置O2はクラスタC5を生成する。クラスタC5の生成の際の起点ノード装置O2の動作は、起点ノード装置O1がクラスタC4を生成するときと同様である。クラスタC5の所属ノードの数が閾値に達すると、起点ノード装置O2は、起点ノード装置O3に新たなクラスタの生成を要求する。起点ノード装置O3は、クラスタC6を生成する。起点ノード装置O3は、参加を要求できる未所属ノードが無い場合、クラスタの作成終了を起点ノード装置O2に通知する。すると、起点ノード装置O2は、図10(d)に示すように、新たな起点ノード装置O4にクラスタの生成を要求する。
 図10(a)~図10(d)に示す手順を繰り返されることにより、アドホックネットワーク中の全てのノード装置10(ノード)がいずれかのクラスタに分類される。次に、図12に示すアドホックネットワークでクラスタが生成される場合を例として、クラスタ生成部50の動作を詳しく説明する。図12に示すネットワークは、15個のノード装置10を含み、ノードSは起点ノード装置として動作するものとする。図12には、ノードS、ノードA、ノードCの各々についての隣接ノードを示している。ノードSの隣接ノードは、NSの円で示される範囲のノードであるとする。同様に、ノードAの隣接ノードはNAの円、ノードCの隣接ノードはNCの楕円で囲まれた範囲に位置するノードであるとする。また、ここでは、起点ノード装置が記憶している閾値は9であるものとする。なお、図12中の数字は、図13を参照しながら説明する手順の番号を示す。
 図13は、クラスタの生成の際に行われる処理の例を説明するシーケンス図を示す。
 (1)ノードSの参加要求部51は、隣接ノードの情報を取得すると、クラスタCSの生成を開始する。参加要求部51は、ノードSのクラスタテーブル(CT)92のクラスタIDに「CS」を登録する。このとき、ノードS以外のノードでは、クラスタテーブル92にクラスタIDは登録されていない。
 (2)ノードSの参加要求部51は、未所属テーブル(UKT)93を参照し、未所属テーブル93に登録されているノードから、クラスタCSへの参加を要求するノードを選択する。ここでは、ノードAが選択されたとする。このとき、参加要求部51は、未所属テーブル93からノードSがノードAの隣接ノード(Nei)であることも認識する。
 (3)参加要求部51は、参加を要求するクラスタデータパケットを生成する。クラスタデータパケットの構成の例を図14に示す。クラスタデータパケットでは、Typeフィールドの値は1に設定される。参加要求部51は、ノードAがノードSの隣接ノードであるため、GDとLDの両方にノードAのアドレスを設定する。また、参加要求部51は、GSとLSの両方にノードSのアドレスを設定する。クラスタデータパケットのペイロードには、クラスタタイプフィールド、クラスタIDフィールド、データが含まれる。参加要求部51は、クラスタタイプフィールドに参加要求を表す値(=2)、クラスタIDフィールドにクラスタCSの識別子であるCSを設定する。参加要求部51は、送信部16を介して、生成したクラスタデータパケットをノードAに送信する。
 (4)ノードAの参加処理部52は、パケット分岐処理部12を介して、ノードSから送信されたクラスタデータパケットを受信する。参加処理部52はクラスタタイプフィールドの値を確認することにより、クラスタへの参加が要求されたことを認識する。参加処理部52は、ノードAがいずれかのクラスタに参加しているかを、ノードAのクラスタテーブル92を参照して確認する。ここでは、クラスタテーブル92にクラスタIDが登録されていないので、参加処理部52は、ノードAがいずれのクラスタにも参加していないと認識する。そこで、参加処理部52は、クラスタCSに参加する。また、参加処理部52は、クラスタテーブル92のクラスタIDの欄にCSを設定し、合わせてノードSのアドレスをクラスタCSの起点ノードのアドレスとして記録する。
 (5)ノードAの参加処理部52は、起点ノード装置Sに送信する参加通知を生成する。参加処理部52は、クラスタデータパケットのGDとLDをノードSのアドレスに設定し、さらに、GSとLSをノードAのアドレスに設定する。さらに、クラスタタイプフィールドに「3」を設定する。ここで、クラスタタイプフィールド=3は、クラスタデータパケットのGSに設定されたノードから送信されたクラスタデータパケットに対する応答メッセージであることを示すものとする(図14)。また、参加処理部52は、クラスタIDフィールドにCSを設定する。さらに、参加処理部52は、データフィールドに、ノードAが保持している未所属テーブル93のデータを含める。図13の例では、ノードAの未所属テーブル93に基づいて、ノードS、ノードB、ノードCが未所属ノードとしてデータフィールドに記録される。クラスタデータパケットの生成が終わると、参加処理部52は、生成したパケットをノードSに送信する。
 (6)ノードSの未所属ノード特定部54は、ノードAからクラスタデータパケットを受信すると、クラスタIDフィールドの値を確認する。ここでは、クラスタIDフィールドの値がCSであるので、未所属ノード特定部54は、ノードAがクラスタCSに所属していることを認識する。そこで、未所属ノード特定部54は、ノードAのエントリを未所属テーブル93から削除する。また、未所属ノード特定部54は、ノードSに記憶されているクラスタテーブル92の所属ノードの欄に、ノードAを登録する。
 さらに、未所属ノード特定部54は、ノードAから受信したクラスタデータパケットのデータフィールドのデータを用いて、未所属テーブル93を更新する。未所属ノード特定部54は、クラスタデータパケットで通知されたノードの各々について、
  (α)起点ノード装置として動作するノード、
  (β)未所属テーブル93に登録されているノード、
  (γ)クラスタテーブル92に登録されているノード
のいずれかに該当するかを確認する。(α)~(γ)のいずれにも該当しない場合、未所属ノード特定部54は、通知されたノードを未所属テーブル93に登録する。ここでは、ノードS、ノードB、ノードCが未所属ノードとして通知されているが、未所属ノード特定部54は、ノードSは起点ノードであることを認識すると、ノードSを未所属テーブル93に追加しない。さらに、未所属ノード特定部54は、未所属テーブル93に記録されているノードとノードB、ノードCを比較する。すると、ノードBはすでに未所属テーブル93に登録されているので、未所属ノード特定部54は、ノードBも未所属テーブル93に追加しない。ノードCは起点ノードではなく、未所属テーブル93にも登録されていないので、未所属ノード特定部54は、ノードCを未所属テーブル93に登録する。このとき、ノードCを通知してきたノードであるノードAが、ノードCの隣接ノードに指定される。登録後の未所属テーブル93の例を図13に示す。
 (7)ノードSの参加要求部51は、クラスタテーブル92に記録されている所属ノードの数を閾値と比較する。所属ノード数は2(ノードSとノードA)であり、閾値よりも小さい。そこで、参加要求部51は、未所属テーブル93から、新たにクラスタCSへの参加を要求するノードを選択する。参加要求部51は、参加を要求するノードとしてノードCを選択し、ノードAがノードCの隣接ノードであることを認識したとする。
 すると、参加要求部51は、参加を要求するためのクラスタデータパケットを生成する。このとき、GDにノードCのアドレス、LDにノードAのアドレス、GSとLSの両方にノードSのアドレスが設定される。クラスタデータパケットのペイロードは、手順(3)で生成されたクラスタデータパケットと同様である。参加要求部51は、生成したクラスタデータパケットをノードAに送信する。
 (8)ノードAは、手順(7)で送信されたパケットを受信する。ノードAの参加処理部52は、GDにノードCのアドレスが設定されているので、受信したパケットがノードA宛てではないことを認識する。そこで、参加処理部52は、受信したパケットのヘッダ中のLSをノードAのアドレスに変更し、LDをノードCのアドレスに変更した上で、ノードCに送信する。なお、ルーティングテーブル95が生成される前は、参加処理部52は、適宜、リンクテーブル91を使用してクラスタデータパケットを転送しているものとする。
 (9)ノードCの参加処理部52は、パケットを受信すると、手順(4)と同様の処理を行う。さらに、参加処理部52は、クラスタデータパケットのGSに設定されていたノード(起点ノード装置)に送信するクラスタデータパケットを生成する。参加処理部52は、クラスタデータパケットのGDをノードSのアドレス、LDをノードAのアドレスに設定し、さらに、GSとLSをノードCのアドレスに設定する。ペイロードの情報は、手順(5)と同様に生成される。なお、ここでは、ノードCの未所属テーブル93に基づいて、ノードA、ノードL、ノードMが未所属ノードとしてデータフィールドに記録される。生成されたクラスタデータパケットは、ノードAに送信される。
 (10)ノードAの参加処理部52は、ノードCからのクラスタデータパケットを受信すると、GDを確認する。GDにはノードSが指定されているので、参加処理部52は、受信したパケットのヘッダ中のLSをノードAのアドレスに変更し、LDをノードSのアドレスに変更した上で、ノードSに送信する。
 (11)ノードSの未所属ノード特定部54は、受信したクラスタデータパケットを、手順(6)と同様に処理する。すなわち、未所属ノード特定部54は、ノードCのエントリを未所属テーブル93から削除し、クラスタテーブル92の所属ノードの欄に、ノードCを登録する。さらに、未所属ノード特定部54は、ノードCから通知された未所属ノードのうち、未所属テーブル93への登録の対象となるノードを検索する。ここでは、ノードAがすでにクラスタテーブル92に登録されているので、未所属ノード特定部54は、ノードLとノードMを未所属テーブル93に登録する。なお、ノードLとノードMの隣接ノードとして、ノードCが登録される。
 なお、ノードSは、ノードA以外の隣接ノードにも、手順(2)~(6)の処理を繰り返すことにより、全ての隣接ノードをクラスタCSの所属ノードとすることができる。さらに、図13を参照して説明した手順は一例であり、実装に応じて変更されることがある。例えば、起点ノード装置は、起点ノード装置の隣接ノードに対して優先的に参加を要求し、起点ノード装置の隣接ノードへの参加要求が終わった後に、隣接ノード以外のノードに参加を要求することができる。
 図12および図13を参照しながら説明した処理により、クラスタCSにノードA~HとノードSが参加したとする。すると、クラスタCSの所属ノードの数は9であり、閾値に到達する。所属ノードの数が閾値と一致すると、参加要求部51は処理を停止し、未所属テーブル93に登録されているノードがあるかを確認する。未所属テーブル93に登録されているノードが無い場合、参加要求部51は、クラスタの生成が終了したと認識する。一方、未所属テーブル93に未所属ノードが登録されている場合、参加要求部51は、所属ノードの数が閾値に達していることと、未所属ノードがあることを生成要求部53に通知する。生成要求部53は、参加要求部51からの通知を受けると、新たな起点ノード装置を指定する。
 図15は、新たな起点ノード装置の指定とクラスタの生成の例を示す。また、図16は、新たな起点ノード装置の指定とクラスタの生成において行われる通信の例を説明するシーケンス図である。なお、図15の数字は、図16の説明で用いられる手順の番号を表す。
 (21)ノードSの生成要求部53は、ノードSが生成しているクラスタCSの所属ノードの数は閾値に達しているが、未所属ノードが残っていることを、参加要求部51から通知される。すると、生成要求部53は、未所属テーブル93を確認して、新たな起点ノードに指定するノードを決定する。ここでは、生成要求部53が、ノードLを新たな起点ノードに指定したとする。
 (22)生成要求部53は、起点ノードに設定するためのクラスタデータパケットを生成する。新たなクラスタの生成を要求する場合、図14に示すように、クラスタデータパケットのクラスタタイプフィールドの値は「1」に設定される。さらに、生成要求部53は、クラスタデータパケットのヘッダを設定する。また、生成要求部53は、クラスタデータパケットを経由させるノードを識別する情報を、クラスタデータパケットのデータフィールドに含める。
 後述するように、クラスタが形成されると、クラスタに所属しているノード装置10同士で送受信されたHelloパケットにより、ルーティングテーブル95が生成される。ルーティングテーブル95には、所属しているクラスタと同一のクラスタ中のノード装置10までの経路が保持される。そこで、生成要求部53は、クラスタデータパケットの宛先の隣接ノードまでの経路についてのルーティングテーブル95のデータを用いてアドレスを設定する。例えば、ここでは宛先となるノードLは、ノードCに隣接していることが未所属テーブル93から認識される。ノードSのルーティングテーブル95には、ノードC宛てのパケットをノードAを経由して送信できることが記録されている。そこで、生成要求部53は、GDにノードC、LDにノードA、GSとLSとにノードSを指定する。さらに、生成要求部53は、生成開始の宛先となるノードLは、クラスタIDフィールドに記録する。生成要求部53は、生成したクラスタデータパケットをノードAに送信する。
 (23)ノードAの参加処理部52は、他のノード宛のクラスタデータパケットであって、クラスタタイプフィールドの値が「1」に設定されているパケットを受け取ると、GDフィールドを参照する。参加処理部52は、GDフィールドに記録されているノードに向けて、クラスタデータパケットを転送する。ここでは、GDフィールドにノードCの情報が含まれているので、生成要求部53は、クラスタデータパケットのLSをノードA、LDをノードCに変更して、ノードCに送信する。
 (24)ノードCの参加処理部52は、ノードAから受信したクラスタデータパケットのLSをノードC、LDをノードL、GDをクラスタデータパケットのクラスタIDフィールドに記録されているノードLに変更して、ノードLに送信する。このとき、参加処理部52は、リンクテーブル91を参照して転送を行うものとする。
 (25)ノードLの参加要求部51は、ノードSからのクラスタデータパケットを受信すると、クラスタCLの生成を開始する。参加要求部51は、ノードLのクラスタテーブル(CT)92のクラスタIDに「CL」を登録する。さらに、参加要求部51は、クラスタ構築テーブル(CCT)42に、クラスタの生成開始を要求してきたパケットのGSとLSを記録する。ここでは、GSとしてノードSのアドレスが記録され、LSとしてノードCのアドレスが記録される。
 (26)ノードLの参加要求部51は、未所属テーブル93に基づいて、クラスタCLへの参加を要求するノードを決定する。図15の例では、ノードLはノードMに参加を要求する。参加を要求する際に行われる動作は、図12と図13を参照しながら説明した動作と同様である。
 (27)参加要求部51は、未所属テーブル93に未所属ノードがなくなると、クラスタの生成が終了したことを、クラスタデータパケット(終了通知メッセージ)を用いて、クラスタ構築テーブル42に記録されているGSに通知する。このとき、参加要求部51は、生成したクラスタに所属しているノードのリストを、終了通知メッセージのデータフィールドに記録する。ここでは、ノードLの参加要求部51は、生成したクラスタにノードLとノードMが含まれていることを通知する。
 生成終了を通知するクラスタデータパケットのヘッダでは、GDとしてクラスタ構築テーブル42に記録されているGSのアドレスが指定される。ここでは、ノードLは、ノードSに、クラスタ生成の終了を通知する。終了通知メッセージでは、クラスタタイプフィールドの値は「4」に設定されており、クラスタIDはCLに設定されている。ノードLの参加要求部51は、LDにノードCを指定した上で、生成したパケットをノードCに送信する。さらに、終了通知メッセージを送信すると、参加要求部51は、クラスタ検索テーブル42のエントリを削除する。
 (28)ノードCの参加処理部52は、ノードLから受信したクラスタデータパケットのGDがノードSであることを認識すると、ルーティングテーブル95を用いてクラスタデータパケットを転送する。このとき、参加処理部52は、クラスタデータパケットのLSをノードCのアドレス、LDをノードAのアドレスに設定した上で、ノードAに送信する。
 (29)ノードAの参加処理部52も、ルーティングテーブル95を用いて、クラスタデータパケットの転送処理を行う。参加処理部52は、クラスタデータパケットのGDがノードSであることを認識すると、パケットのLSをノードAのアドレス、LDをノードSのアドレスに設定した上で、ノードSに送信する。
 (30)ノードSの生成要求部53は、ノードAから、ノードLで生成された終了通知メッセージを受信する。すると、生成要求部53は、ノードLのエントリを未所属テーブル93から削除する。さらに、生成要求部53は、生成終了通知のデータフィールドに記録されているノードについても、未所属テーブル93からエントリを削除する。ここでは、ノードLとノードMのエントリが未所属テーブル93から削除される。
 図17は、クラスタ生成の手順の例を説明するフローチャートである。起点ノードの参加要求部51は、クラスタの生成を開始する(ステップS21)。参加要求部51は、未所属テーブル(UKT)93に登録があるかを確認する(ステップS21でYes、ステップS22)。未所属テーブル93に未所属ノードが登録されている場合、参加要求部51は、生成しているクラスタの所属ノード数と閾値を比較することにより、新たなノードをクラスタに追加できるかを確認する(ステップS22でYes、ステップS23)。新たなノードをクラスタに追加できる場合、参加要求部51は、クラスタへの参加要求を行う(ステップS23でYes、ステップS24)。新たなノードをクラスタに追加できない場合、参加要求部51は、生成要求部53に新たなクラスタの生成を依頼する(ステップS23でNo、ステップS25)。一方、ステップS22で未所属テーブル93に未所属ノードが登録されていないと判定した場合、参加要求部51は処理を終了する(ステップS22でNo)。また、ステップS21で起点ノードではないと判定されたノードでも、処理が終了される(ステップS21でNo)。
 図18は、未所属ノードにクラスタへの参加を要求するときの動作の例を説明するフローチャートである。なお、図18のフローチャートは一例である。例えば、ステップS37~S39の順序は任意に変更することができる。また、ステップS41はオプションであり、ノード装置10の性能に応じて省略することもできる。
 参加要求部51は、未所属テーブル93に記録されている未所属ノードの1つを選択し、クラスタデータパケットを生成する(ステップS31、S32)。このとき、クラスタデータパケットのGDにはステップS31で選択されたノードのアドレスが指定される。また、クラスタタイプフィールドの値は2(CREATE)に設定される。さらに、クラスタIDには、参加要求部51が生成しているクラスタのIDが記録される。参加要求部51は、生成したクラスタデータパケットを送信し、送信時刻を記録する(ステップS33、S34)。クラスタデータパケットの参加通知メッセージ(ACK)を受信するまで、未所属ノード特定部54は待機する(ステップS35、S36)。参加通知メッセージを受信すると、未所属ノード特定部54は、参加通知メッセージの送信元のノードのエントリを、未所属テーブル93から削除する(ステップS36でYes、ステップS37)。さらに、未所属ノード特定部54は、参加通知メッセージのデータに未所属ノードの情報が含まれている場合、得られたノードの情報を未所属テーブル93に追加する(ステップS38)。さらに、未所属ノード特定部54は、クラスタテーブル92に参加通知メッセージの送信元を追加する(ステップS39)。
 一方、ステップS36で参加通知メッセージを受け取っていないと判定した場合、未所属ノード特定部54は、参加を要求するクラスタデータパケットの送信時刻から経過した時間が所定の時間よりも長いかを確認する(ステップS36でNo、ステップS40)。所定の時間を経過していない場合、ステップS35以降の処理が繰り返される。所定の時間を経過しても参加通知メッセージを受信できない場合、参加を要求したノードについては、次に未所属テーブル93からノードを選択する際の優先順位を低くする(ステップS41)。
 図19は、新たなクラスタの生成が開始される場合の動作の例を説明するフローチャートである。なお、図19のフローチャートは一例である。例えば、ノード装置10の性能に応じてステップS59を省略するなどの変更が加えられることがある。
 生成要求部53は、未所属テーブル93に登録されている未所属ノードの1つを選択する(ステップS51)。生成要求部53は、選択した未所属ノードに送信するためのクラスタデータパケットを生成する(ステップS52)。このとき、クラスタデータパケットのGDはステップS51で選択された未所属ノードに対する隣接ノードのアドレスが指定される。また、クラスタタイプフィールドの値は1(START)に設定される。さらに、クラスタIDには、新たに生成されるクラスタを識別するクラスタIDが記録される。なお、クラスタIDにより、新たな起点ノードとされるノード装置10は、一意に識別できるものとする。生成要求部53は、生成したクラスタデータパケットを送信し、送信時刻を記録する(ステップS53、S54)。クラスタデータパケットの終了通知メッセージ(FINISH)を受信するまで、生成要求部53は待機する(ステップS55、S56)。終了通知メッセージを受信すると、生成要求部53は、終了通知メッセージの送信元のノードのエントリを、未所属テーブル93から削除する(ステップS56でYes、ステップS57)。さらに、生成要求部53は、ステップS53で送信したクラスタデータパケットに基づいて生成されたクラスタの所属ノードについても、未所属テーブル93から削除する。
 一方、ステップS56で参加通知メッセージを受け取っていないと判定した場合、生成要求部53は、クラスタの生成を要求するクラスタデータパケットの送信時刻から経過した時間が所定の時間よりも長いかを確認する(ステップS56でNo、ステップS58)。所定の時間を経過していない場合、ステップS55以降の処理が繰り返される(ステップS58でNo)。所定の時間を経過しても終了通知メッセージを受信できない場合、クラスタの生成を要求したノードについては、次に未所属テーブル93からノードを選択する際の優先順位を低くする(ステップS58でYes、ステップS59)。
 <クラスタ所属後のHelloパケットの処理>
 クラスタの生成中やクラスタの生成後も、ノード装置10の間でHelloパケットの送受信が行われる。以下、クラスタの生成が開始された後で、いずれのノード装置10もサブゲートウェイに設定されていない場合について、Helloパケットの処理を説明する。サブゲートウェイが設定された後の処理は、後述する。
 ノード装置10の動作は、Helloパケットを受信したノード装置10がクラスタに所属しているかによって変化する。クラスタに所属していないノード装置10がHelloパケットを受信した場合の動作は、先に図6~図9を参照しながら説明したとおりである。一方、クラスタに所属しているノード装置10では、Helloパケットを用いてルーティングテーブル95やクラスタテーブル92の更新が行われることがある。また、クラスタに所属しているノード装置10は、Helloパケットを生成する際に、ノード装置10が記憶しているルーティングテーブル95の経路情報をHelloパケットのデータフィールドに含めることができる。
 図20は、クラスタに所属しているノード装置10aでのHelloパケットの生成の例を示す。図20(a)は、Helloパケットのフォーマットの例を示す。図20(b)は、データフィールドのフォーマットの例を示す。データフィールドには、GDについての情報が含まれる。データフィールドに含まれているGDの数は、Lenフィールドに記録される。ノード装置10aのHello生成部15は、ルーティングテーブル95に記録されているGDについて、クラスタID、ホップ数、Sgwフラグの値を読み出して、データに含める。
 ルーティングテーブル95の例を図20(c)に示す。ルーティングテーブル95は、GDごとに、TTL(Time to Live)エントリ生存カウンタの値、GDクラスタID、GD-Sgwフラグの値、LDが記録されている。ここで、「GD-Sgwフラグ」は、ルーティングテーブル95でGDに対応付けて記録されているSgwフラグの値である。ここでは、いずれのノード装置10もサブゲートウェイに指定されていないので、GD-Sgwフラグの値は、いずれのノードでも0であるものとする。TTLエントリ生存カウンタの値は、GDについての記録が更新されてから経過した時間に応じて減少し、TTLエントリ生存カウンタの値が正の値である場合、GDに関する情報が有効であることを示す。GDクラスタIDは、GDが所属しているクラスタを識別する識別子である。また、図20(c)の例では、GDにパケットを送信するためにノード装置10が設定するLDが、GDごとに3つ記録されており、各LDに応じてホップ数が記録されている。
 Hello生成部15は、GD、クラスタID、GD-Sgwフラグ、ホップ数の各々について、ルーティングテーブル95に記録されている値を取得してデータに設定する。このとき、Hello生成部15は、ノード装置10aからGDにパケットを送信する際に第1候補として用いられるLSに対応付けられたホップ数をデータに含めるものとする。
 図21は、ノード装置10がHelloパケットを受信した場合に行う動作の例を説明するフローチャートである。ここでは、ノード装置10aからブロードキャストされたHelloパケットをノード装置10b、10cが受信する場合の例を、図21を参照しながら説明する。ここで、ノード装置10aとノード装置10bはクラスタに所属しており、ノード装置10cは未所属ノードであるとする。なお、図21は動作の例であり、例えば、ステップS61とS62の順序の変更、ステップS65とS66の順序の変更、ステップS71とS72の順序の変更などの変更が加えられる場合がある。
 ノード装置10b、10cのいずれも、Helloパケットを受信すると、リンクテーブル91と未所属テーブル93を更新する(ステップS61、S62)。なお、ステップS61は図7で説明した動作と同様であり、ステップS62は図9のステップS16~S18の動作と同様である。ノード装置10aから送信されたHelloパケットによりクラスタが通知されているので、ノード装置10b、10cは、Helloパケット中のLSをキーとして未所属テーブル93の未所属ノードの欄を検索する(ステップS11でYes、ステップS16)。未所属ノードがヒットしたら未所属ノード特定部22は、ヒットしたノードのエントリを削除する(ステップS17、S18)。
 次に、ノード装置10は、クラスタテーブル92にクラスタIDが記録されているかを確認する(ステップS63)。クラスタに所属していないノード装置10cは処理を終了する(ステップS63でNo)。
 クラスタに所属しているノード装置10bは、クラスタテーブル92に記録されているクラスタ識別子と、Helloパケット中のクラスタ識別子を比較する(ステップS64)。両者が一致すると、ノード装置10bの経路管理部21は、ノード装置10a(HelloパケットのLS)について、ルーティングテーブル95を更新する(ステップS64でYes、ステップS65)。また、経路管理部21は、クラスタテーブル92を更新するための処理も行う(ステップS66)。
 ノード装置10bの経路管理部21は、Helloパケットのデータフィールドに含まれているリストから、未処理のエントリを1つ取得する(ステップS67、S68)。未処理のエントリに有効な値が記録されていない場合、経路管理部21は処理を終了する(ステップS68でNo)。
 一方、未処理のエントリを取得できた場合、経路管理部21は、取得したエントリのGDがノード装置10b(経路管理部21が備えられているノード装置10)のアドレスと一致するかを確認する(ステップS68でYes、ステップS69)。取得したエントリのGDとノード装置10bのアドレスが一致した場合、経路管理部21は、ルーティングテーブル95を更新せずに他のエントリの処理を行うため、ステップS67に戻る(ステップS69でYes)。一方、取得したエントリのGDとノード装置10bのアドレスが一致しない場合、経路管理部21は、さらに、取得したエントリについて記録されているクラスタIDが、ノード装置10bが所属しているクラスタを識別するクラスタIDであるかを確認する(ステップS70)。取得したエントリについて記録されているクラスタIDが、ノード装置10bの所属クラスタを識別するクラスタIDである場合、経路管理部21は、ルーティングテーブル95とクラスタテーブル92を更新する(ステップS70でYes、ステップS71、S72)。その後、経路管理部21はステップS67以降の処理を繰り返す。一方、取得したエントリについて記録されているクラスタIDが、ノード装置10bが所属しているクラスタを識別するクラスタIDではない場合、経路管理部21はステップS67以降の処理を繰り返す(ステップS70でNo)。
 ステップS64においてクラスタテーブル92に記録されているクラスタ識別子と、Helloパケット中のクラスタ識別子が一致しない場合、ノード装置10bの経路管理部21は、ノード装置10bがサブゲートウェイであるかを確認する(ステップS73)。ノード装置10bがサブゲートウェイではない場合、ノード装置10bは処理を終了する(ステップS73でNo)。ノード装置10bがサブゲートウェイの場合は、ルーティングテーブル95とクラスタテーブル92が更新される(ステップS74、S75)。ノード装置10bがサブゲートウェイである場合の動作については、後述する。
 図22は、ルーティングテーブル95の更新のための動作の例を説明するフローチャートである。図22は、図21のステップS65の処理を詳細に表している。ノード装置10bの経路管理部21は、HelloパケットのLSに登録されているアドレスをキーとして、ルーティングテーブル95のGDの欄を検索することにより、LSまでの経路が既に登録されているかを確認する(ステップS81、S82)。HelloパケットのLSまでの経路が登録されていない場合、経路管理部21は、ルーティングテーブル95に新たなエントリを作成し、作成したエントリにLSに対応する値を記録する(ステップS82でNo、ステップS83、S84)。一方、HelloパケットのLSまでの経路が登録されている場合、経路管理部21は、検索で得られたエントリの値をHelloパケットで通知された値に更新する(ステップS82でNo、ステップS84)。
 図23は、クラスタテーブル92の更新のための動作の例を説明するフローチャートである。図23は、図21のステップS66の処理を詳細に表している。図23のステップS91で表されているように、Helloパケットの送信元のノード装置10がサブゲートウェイではない場合は、クラスタテーブル92は更新されない。ここでは、ノード装置10aがサブゲートウェイに設定されていないため、ノード装置10bの経路管理部21はクラスタテーブル92を更新せずに処理を終了する。Helloパケットの送信元がサブゲートウェイである場合については、後述する。
 図24は、ルーティングテーブル95の更新のための動作の例を説明するフローチャートである。図24は、図21のステップS71の処理を詳細に表している。ノード装置10bの経路管理部21は、データフィールドのGDに登録されているアドレスをキーとして、ルーティングテーブル95のGDの欄を検索する(ステップS101)。ステップS102~S104の処理は、図22を参照しながら説明したステップS82~S84の処理と同様である。
 図25は、クラスタテーブル92の更新のための動作の例を説明するフローチャートである。図25は、図21のステップS72の処理を詳細に表している。図25のステップS111に表されているように、Helloパケットのデータフィールドに記録されているGDがサブゲートウェイではない場合は、クラスタテーブル92は更新されない。ここでは、サブゲートウェイの設定がまだ開始されていないので、ノード装置10bの経路管理部21はクラスタテーブル92を更新せずに処理を終了する。データフィールド中のGDがサブゲートウェイである場合については、後述する。
 図21のステップS68~S72の処理により、ノード装置10bは、ノード装置10bが所属しているクラスタの所属ノードについての情報を取得したときに、Helloパケットから取得した情報を用いてルーティングテーブル95を更新する。このため、ルーティングテーブル95には、ノード装置10bと同じクラスタに所属するノード装置10までの経路情報が記録される。換言すると、ノード装置10は、所属しているクラスタと同じクラスタに所属するノード装置10までの経路をルーティングテーブル95に記録する。このため、本実施形態に係るノード装置10では、ルーティングテーブル95の大きさは、各ノード装置がアドホックネットワーク中の全てのノード装置までの経路を記録する場合に比べて小さくなる。
 <サブゲートウェイの決定>
 図26は、サブゲートウェイの決定方法の例を示す。まず、ノード装置10は、所属しているクラスタ(所属クラスタ)に隣接する隣接クラスタを認識し、図26(a)に示すように、隣接クラスタのクラスタIDを起点ノード装置O1に通知する。起点ノード装置O1は、隣接クラスタのクラスタIDを通知してきたノード装置10の中からサブゲートウェイを選択する。さらに、起点ノード装置O1は、図26(b)に示すように、選択したノード装置10に、サブゲートウェイとして動作することを依頼するメッセージ(SGW依頼)を送信する。次に、図26(c)に示すように、SGW依頼を受信したノード装置10は、起点ノード装置O1にSGW応答メッセージを送信すると共に、サブゲートウェイとしての動作を開始する。さらに、SGW依頼を受信したノード装置10は、隣接クラスタ中のノード装置10であって、Helloパケットを受信することができるノード装置10に対して、SGW依頼を送信してサブゲートウェイとする。また、図26(d)に示すように、隣接クラスタでもサブゲートウェイの決定が行われる。
 以下、図26で示した方法について、図27~33を参照しながら詳しく説明する。
 図27は、所属クラスタに隣接するクラスタのIDを認識する方法の例を示す。ノード装置10は、前述のように、Helloパケットを送受信することにより、リンクテーブル91を更新する。リンクテーブル91は、図27(a)に示すように、隣接ノードが所属するクラスタのクラスタIDを記録している。そこで、隣接クラスタ通知部61は、リンクテーブル91のクラスタIDの欄に記録されている値を、所属クラスタのクラスタIDと比較する。隣接クラスタ通知部61は、所属クラスタのクラスタIDとは異なるクラスタのIDを検出すると、所属クラスタの隣接クラスタに所属するノード装置10からHelloパケットを受信していることを認識する。図27(a)と図27(b)の例では、ノード装置10の所属クラスタは、CID1、CID2、CIDkで特定できるクラスタと隣接していることが認識される。そこで、隣接クラスタ通知部61は、検出したクラスタIDを図27(c)に示すように、起点ノード装置O1に送信するクラスタデータパケットのデータフィールドに含める。さらに、隣接クラスタ通知部61は、クラスタタイプフィールドの値を「5」(図14のNEI_CLUSTER)に設定する。隣接クラスタ通知部61は、生成したパケットを起点ノード装置に送信する。
 図28は、隣接クラスタの通知を受けたときの起点ノード装置の動作の例を表す。起点ノード装置の候補テーブル生成部62は、受信したクラスタデータパケット(図28(a))に基づいて、隣接クラスタテーブル43とゲートウェイ候補テーブル44を生成する。なお、隣接クラスタテーブル43は、サブゲートウェイ決定部63がサブゲートウェイを設定する対象となる隣接クラスタを認識するために用いられる。一方、ゲートウェイ候補テーブル44は、サブゲートウェイ決定部63がサブゲートウェイとして指定できるノード装置10を認識するために用いられる。
 隣接クラスタテーブル43は、図28(b)に示すように、隣接クラスタのIDと、その隣接クラスタとの間で用いられるサブゲートウェイの設定状況を示す確定フラグを対応付けている。ここで、確定フラグが「0」に設定されている場合は、その隣接クラスタとの間で通信する際に用いられるサブゲートウェイが確定していないことを示す。一方、サブゲートウェイが確定している場合、確定フラグは「1」に設定される。つまり、サブゲートウェイ決定部63は、確定フラグの値が「0」のエントリに記録されているクラスタを、サブゲートウェイを決定する対象として認識する。候補テーブル生成部62は、受信したクラスタデータパケットのデータフィールドに含まれているクラスタIDを、隣接クラスタテーブル43の隣接クラスタIDの欄に記録されている値と比較する。隣接クラスタテーブル43に含まれていないクラスタIDがクラスタデータパケットにより通知された場合、候補テーブル生成部62は、隣接クラスタテーブル43に新たなエントリを生成して、隣接クラスタIDを記録する。このとき、確定フラグは0に設定される。
 ゲートウェイ候補テーブル44は、図28(c)に示すように、サブゲートウェイに指定する候補のノード装置10(候補ノード)、候補ノードが隣接しているクラスタのID、状態フラグが対応付けられている。状態フラグ=0は、その候補ノードがサブゲートウェイとして動作していないことを示す。一方、状態フラグ=1は、その候補ノードがサブゲートウェイとして選択されていることを示す。候補テーブル生成部62は、隣接クラスタを通知するクラスタデータパケット(図28(a))でのGSと、データフィールドで通知されたクラスタIDの組み合わせをゲートウェイ候補テーブル44から検索する。GSとクラスタIDの組み合わせが無い場合、候補テーブル生成部62は、ゲートウェイ候補テーブル44にエントリを生成して、GSとクラスタIDの組み合わせを記録する。このとき、GSは候補ノードの欄に記録される。また、新たに生成されたエントリでは状態フラグの値を0に設定される。
 図29は、サブゲートウェイの決定の際に行われる動作の例を説明するシーケンス図である。図29の例では、クラスタCSとクラスタCLの間で用いられるサブゲートウェイの設定について述べる。ここで、ノードSはクラスタCSの起点ノード装置であり、ノードLはクラスタCLの起点ノード装置であるものとする。また、ノードA、CはクラスタCSに所属し、ノードMはクラスタCLに所属しているものとする。なお、以下の手順は一例であり、例えば、手順(52)以降の処理を手順(49)~(51)よりも前に行うように変更することができる。
 (41)ノードCの隣接クラスタ通知部61は、リンクテーブル(LT)91に記録されているクラスタIDとノードCの所属クラスタのクラスタID(CS)を比較して、隣接クラスタを検出する。ここでは、ノードCのリンクテーブル91にノードA、L、Mが記録されているとする。ノードL、Mの所属クラスタはクラスタCLであるため、ノードCの隣接クラスタ通知部61は、クラスタCLと隣接していることを認識する。
 (42)ノードCは、データフィールドに隣接クラスタのリスト(クラスタIDリスト)を含むクラスタデータパケットを生成する。図29では、隣接クラスタを通知するクラスタデータパケットは、送信先となる起点ノード装置および送信元のノード装置10と対応付けて、(NEIGHBOR_CLUSTOR,S,C)のように表記されている。NEIGHBOR_CLUSTORは隣接クラスタを通知するクラスタデータパケットを表す。クラスタデータパケットの種類を表す記述の後に、起点ノード装置がノードSであることと、送信元がノードCであることが記載されている。
 (43)手順(42)でノードCから送信されたクラスタデータパケットは、ノードAによってノードSに送信される。
 (44)ノードSの候補テーブル生成部62は、受信したパケットを用いて、隣接クラスタテーブル(NCT)43とゲートウェイ候補テーブル(SGWCT)44を更新する。隣接クラスタテーブル43とゲートウェイ候補テーブル44の更新方法は、図28を参照しながら説明したとおりである。図29の例では、隣接クラスタテーブル43にクラスタCLのIDが登録される。また、ゲートウェイ候補テーブル44には、ノードCがクラスタCLに含まれるノード装置10に隣接していることが記録される。
 (45)サブゲートウェイ決定部63は、隣接クラスタテーブル43から、確定フラグが0に設定されているクラスタのIDを取得する。次に、サブゲートウェイ決定部63はゲートウェイ候補テーブル44を確認することにより、取得したクラスタIDに対応付けられた候補ノードのうちで、状態フラグが0に設定されているノード装置10を検索する。サブゲートウェイ決定部63は、検索したノード装置10の中から、サブゲートウェイに指定するノード装置10を決定する。例えば、図29の例では、クラスタCLのIDに対応付けられた確定フラグの値は0である。そこで、サブゲートウェイ決定部63は、クラスタCLとの間の通信に用いられるサブゲートウェイが決定されていないと判断し、ゲートウェイ候補テーブル44に登録されている候補ノードのうちで状態フラグ=0であるノード装置10を検索する。ここで、ノードCは、クラスタCL中のノードに隣接していて状態フラグの値が0である。そこで、ノードSのサブゲートウェイ決定部63は、ノードCをサブゲートウェイに決定する。
 (46)サブゲートウェイ決定部63は、サブゲートウェイに指定するノード装置10に対して、サブゲートウェイとして動作することを要求するクラスタデータパケット(SGW要求、REQ_SGW)を送信する。図14に示すように、SGW要求の場合、クラスタタイプフィールドの値は「6」に設定される。また、クラスタIDフィールドには、隣接クラスタのIDが記録される。サブゲートウェイ決定部63は、SGW要求のクラスタデータパケットを手順(45)で決定した候補ノードに送信する。さらに、サブゲートウェイ決定部63は、隣接クラスタテーブル43について、SGW要求のクラスタIDフィールドにIDが記録されている隣接クラスタに対応付けられた確定フラグを「1」に設定する。
 例えば、ノードSのサブゲートウェイ決定部63は、クラスタIDフィールドにクラスタCLのID、クラスタタイプフィールドに6を設定したクラスタデータパケットを生成し、ノードCにむけて送信する。図29では、SGW要求は、隣接クラスタID、および、送信先のノード装置10と対応付けて、(REQ_SGW,CL,C)のように表記されている。SGW要求の送信後、サブゲートウェイ決定部63は、隣接クラスタテーブル43でクラスタCLに対応付けられた確定フラグを1に設定する。
 (47)ノードAは、ルーティングテーブル95を参照することにより、ノードSから受信したSGW要求をノードCに送信する。
 (48)ノードCは、SGW要求を受信すると、ノードCがサブゲートウェイであることを認識し、サブゲートウェイとしての動作を開始する。例えば、ノードCは、ノードCの所属クラスタとは異なるクラスタに所属するノード装置10からHelloパケットを受信した場合でも、Helloパケットに応じてルーティングテーブル95を更新する。また、ノードCから送信されるHelloパケットでは、SGWフラグが1に設定される。サブゲートウェイとしての動作については、後で詳しく述べる。
 (49)ノードCは、ノードSにSGW応答(ACK_SGW)であるクラスタデータパケットを送信する。図14に示すように、SGW応答の場合、クラスタタイプフィールドの値は「7」に設定される。また、クラスタIDフィールドには、隣接クラスタのIDが記録される。図29では、SGW応答は、隣接クラスタID、および、送信元のノード装置10と対応付けて、(REQ_ACK,CL,C)のように表記されている。
 (50)ノードAは、ルーティングテーブル95を参照することにより、ノードCから受信したSGW応答をノードSに送信する。
 (51)起点ノードは、SGW応答を受信すると、ゲートウェイ候補テーブル44において、SGW応答の送信元のノード装置に対応する状態フラグを1に設定する。ここでは、ノードSは、SGW応答を受信すると、ノードCについて隣接クラスタがCLであるエントリの状態フラグを1に設定する。
 (52)サブゲートウェイに設定されたノードCは、クラスタCL中のノード装置10であり、かつ、ノードCに隣接しているノード装置10に対して、サブゲートウェイとして動作することを要求する。このとき、ノードCのサブゲートウェイ決定部63は、クラスタテーブル92を参照し、クラスタCLに含まれているノード装置をサブゲートウェイに設定するために選択する。ここでは、サブゲートウェイ決定部63がノードMを選択したものとする。サブゲートウェイ決定部63は、SGW要求を生成してノードMに送信する。なお、SGW要求の生成は、手順(42)と同様である。さらに、サブゲートウェイ決定部63は、ルーティングテーブル(RT)95にノードMのエントリを追加する。このとき、ノードMがサブゲートウェイであることも合せて登録される。
 (53)ノードMは、SGW要求を受信すると、ノードMの所属クラスタ(クラスタCL)とは異なるクラスタ(クラスタCS)に所属するノードからSGW要求を受信したことを認識する。すると、ノードMは、サブゲートウェイとしての動作を開始する。また、所属ノードの起点ノード装置に、SGW応答を送信することにより、サブゲートウェイとして動作していることを通知する。ここでは、ノードMは、ノードLにSGW応答を送信する。SGW応答の生成方法は、手順(49)で述べたとおりである。さらに、ノードMのサブゲートウェイ決定部63は、ルーティングテーブル95にノードCのエントリを追加する。このとき、ノードCがサブゲートウェイであることを登録する。
 (54)起点ノードの動作は手順(51)と同様である。すなわち、ノードLは、SGW応答を受信すると、ゲートウェイ候補テーブル44において、ノードMの隣接クラスタがCLであるエントリの状態フラグを1に設定する。
 図30は、隣接クラスタ通知部61の動作の例を説明するフローチャートである。隣接クラスタ通知部61は、リンクテーブル91に登録されている未処理のエントリを1つ取得する(ステップS121、ステップS122でYes)。次に、隣接クラスタ通知部61は、取得したエントリに含まれているクラスタIDは、所属クラスタのクラスタIDであるかを確認する(ステップS123)。所属クラスタのクラスタIDが含まれている場合、隣接クラスタ通知部61はステップS121に戻って他のエントリの処理を開始する(ステップS123でYes)。一方、取得したエントリのクラスタIDが所属クラスタのクラスタIDとは異なる場合、隣接クラスタ通知部61は、取得したエントリに含まれているクラスタIDを隣接クラスタテーブル43に記録して、ステップS121に戻る(ステップS123でNo、ステップS124)。リンクテーブル91に含まれている全てのエントリについて処理が終わると、隣接クラスタ通知部61は、隣接クラスタテーブル43にクラスタIDが記録されているかを確認する(ステップS125)。隣接クラスタテーブル43にクラスタIDが記録されている場合、隣接クラスタ通知部61は、隣接クラスタを通知するためのクラスタデータパケットを生成して、所属クラスタの起点ノード装置に送信する(ステップS125でYes、ステップS126、S127)。一方、隣接クラスタテーブル43にクラスタIDが記録されていない場合、隣接クラスタ通知部61は処理を終了する(ステップS125でNo)。
 図31は、隣接クラスタを通知されたときの候補テーブル生成部62の動作の例を説明するフローチャートである。図31は、図29を参照しながら説明した手順(44)で行われる動作の例を示す。候補テーブル生成部62は隣接クラスタの通知を受信すると、クラスタデータパケットにクラスタIDが含まれているかを確認する(ステップS131、ステップS132)。未処理のクラスタリストがクラスタデータパケットに含まれていない場合、候補テーブル生成部62は処理を終了する(ステップS132でNo)。一方、クラスタIDが含まれている場合、候補テーブル生成部62は、クラスタデータパケットの送信元のアドレス(GS)と、受信パケット中のクラスタID(隣接クラスタ)の組み合わせで、ゲートウェイ候補テーブル44を検索する(ステップS133)。GSと隣接クラスタの組み合わせがゲートウェイ候補テーブル44に記録されていない場合、候補テーブル生成部62は、ゲートウェイ候補テーブル44に、GSと隣接クラスタの組み合わせのエントリを追加する(ステップS134でNo、ステップS135、S136)。GSと隣接クラスタの組み合わせがゲートウェイ候補テーブル44に記録されている場合は、ステップS135とS136は行われない(ステップS134でYes)。次に、候補テーブル生成部62は、隣接クラスタIDをキーとして、隣接クラスタテーブル43を検索する(ステップS137)。隣接クラスタIDが隣接クラスタテーブル43に記録されている場合、候補テーブル生成部62は、ステップS131以降の処理を繰り返す(ステップS138でYes)。一方、隣接クラスタIDが隣接クラスタテーブル43に記録されていない場合、候補テーブル生成部62は、隣接クラスタテーブル43に、隣接クラスタIDを記録したエントリを追加する(ステップS138でNo、ステップS139、S140)。
 図32は、サブゲートウェイを生成する際の起点ノード装置の動作の例を説明するフローチャートである。起点ノード装置中のサブゲートウェイ決定部63は、隣接クラスタテーブル43に含まれている未処理のエントリを読み込む(ステップS151、ステップS152でYes)。なお、隣接クラスタテーブル43に未処理のエントリが残っていない場合、サブゲートウェイ決定部63は、処理を終了する(ステップS152でNo)。未処理のエントリを読み込んだ場合、サブゲートウェイ決定部63は、確定フラグの値を確認する(ステップS153)。確定フラグの値が1であり、すでにサブゲートウェイが確定されている場合、サブゲートウェイ決定部63はステップS151に戻る(ステップS153でNo)。
 一方、確定フラグの値が0であり、サブゲートウェイが決まっていない場合、サブゲートウェイ決定部63はゲートウェイ候補テーブル44から未処理のエントリを取得する(ステップS154、ステップS155でYes)。なお、ゲートウェイ候補テーブル44から未処理のエントリが取得できない場合、サブゲートウェイ決定部63は処理を終了する(ステップS155でNo)。次に、サブゲートウェイ決定部63は、取得したエントリの状態フラグが未確定(状態フラグ=0)であることを示しているかを確認する(ステップS155でYes、ステップS156)。取得したエントリの状態フラグが未確定ではない(状態フラグ=1)場合、ステップS154以降の処理が繰り返される(ステップS156でNo)。一方、取得したエントリの状態フラグが未確定を表す場合、サブゲートウェイ決定部63は、隣接クラスタテーブル43のクラスタIDとゲートウェイ候補テーブル44のクラスタIDが一致しているかを確認する(ステップS157)。両者が一致していない場合、ステップS154以降の処理が繰り返される(ステップS157でNo)。
 隣接クラスタテーブル43のクラスタIDとゲートウェイ候補テーブル44のクラスタIDが一致している場合、サブゲートウェイ決定部63は、SGW要求を生成する(ステップS157でYes、ステップS158)。さらに、サブゲートウェイ決定部63は、ステップS155で読み込んだゲートウェイ候補テーブル44のエントリに記録されているノードに、SGW要求を送信する(ステップS159)。さらに、サブゲートウェイ決定部63は、ステップS151で読み込んだ隣接クラスタテーブル43のエントリについて、確定フラグを確定(確定フラグ=1)に設定する(ステップS160)。このフローでは、起点ノードが、サブゲートウェイが未設定である隣接クラスタに対してサブゲートウェイを設定する処理を1度だけ行う方法を表している。サブゲートウェイが未設定である複数の隣接クラスタに対して処理を行うために、ステップS151からステップS160の処理を同時に並行して実行しても良い。
 図33は、サブゲートウェイに指定されたノードの動作の例を説明するフローチャートである。SGW要求を受信したノードは、サブゲートウェイに設定されたことを認識すると共に、SGW応答を生成する(ステップS171、S172)。サブゲートウェイ決定部63は、生成したSGW応答を、所属クラスタの起点ノード装置に送信する(ステップS173)。さらに、サブゲートウェイ決定部63は、SGW要求の送信元(GS)が起点ノード装置であるかを確認する(ステップS174)。SGW要求の送信元が起点ノード装置ではない場合は、処理を終了する(ステップS174でNo)。
 一方、SGW要求の送信元が起点ノード装置である場合、サブゲートウェイ決定部63は、SGW要求のクラスタIDで識別されるクラスタに所属する隣接ノードをリンクテーブル91から選択する(ステップS174でYes、ステップS175)。リンクテーブル91に該当するエントリが存在する場合、サブゲートウェイ決定部63は、SGW要求を生成して選択したノードに送信する(ステップS176でYes、ステップS177、S178)。さらに、サブゲートウェイ決定部63は、選択したリンクテーブル91のエントリをルーティングテーブル95に登録する(ステップS179)。一方、ステップS176で、SGW要求のクラスタIDで識別されるクラスタに所属する隣接ノードがリンクテーブル91に含まれていない場合、サブゲートウェイ決定部63は処理を終了する(ステップS176でNo)。
 サブゲートウェイが決定されると、デフォルトGW決定部41は、所属クラスタに所属していないノード装置10にパケットを送信する際に用いるサブゲートウェイを選択する。以下の説明では、所属クラスタに所属していないノード装置10にパケットを送信する際に用いるサブゲートウェイのことを「デフォルトゲートウェイ」と記載する。
 クラスタ内の各ノード装置10は、ホップ数が一番小さいサブゲートウェイをデフォルトゲートウェイとすることができる。なお、ホップ数を用いる方法は、デフォルトゲートウェイの決定方法の例であって、デフォルトゲートウェイの決定方法は、実装に応じて任意に変更することができる。例えば、通信品質(到達率、輻輳など)も用いてデフォルトゲートウェイを決定することもできる。
 <サブゲートウェイが決定された後のHelloパケットの処理>
 次に、図21を参照しながら、サブゲートウェイが決定された後で、Helloパケットが処理される場合の動作について説明する。サブゲートウェイが所属クラスタに所属するノードからHelloパケットを受信したときの処理は、ステップS61~S72の通りである。ここで、ステップS66のクラスタテーブル92の更新の処理について図23を参照しながら説明する。Helloパケットを受信したノードは、Helloパケットの送信元(LS)はサブゲートウェイであるかを、HelloパケットのSGWフラグによって確認する(ステップS91)。送信元がサブゲートウェイである場合、Helloパケットを受信したノードは、Helloパケットの送信元がクラスタテーブル92のサブゲートウェイリストに記録されているかを確認する(ステップS92、S93)。サブゲートウェイがクラスタテーブル92に登録されている場合、クラスタテーブル92の更新処理が終了される(ステップS93でYes)。一方、サブゲートウェイがクラスタテーブル92に登録されていない場合、Helloパケットを受信したノードは、クラスタテーブル92のサブゲートウェイリストに、Helloパケットの送信元を記録する(ステップS93でNo、ステップS94)。なお、Helloパケットの送信元がサブゲートウェイではない場合の処理は、前述のとおりである。
 また、ステップS72で行われるクラスタテーブル92の更新について、図25を参照しながら説明する。Helloパケットを受信したノードは、Helloパケットのデータ部分に含まれる経路情報のリストについて、GDがサブゲートウェイであるかを確認する(ステップS111)。GDがサブゲートウェイである場合、Helloパケットを受信したノードは、GDがクラスタテーブル92のサブゲートウェイリストに記録されているかを確認する(ステップS112、S113)。サブゲートウェイがクラスタテーブル92に登録されている場合、クラスタテーブル92の更新処理が終了される(ステップS113でYes)。一方、サブゲートウェイがクラスタテーブル92に登録されていない場合、Helloパケットを受信したノードは、クラスタテーブル92のサブゲートウェイリストに、GDを記録する(ステップS113でNo、ステップS114)。なお、Helloパケットにより通知された経路のGDがサブゲートウェイではない場合の処理は、前述のとおりである。
 次に、Helloパケットを所属クラスタとは異なるクラスタから受信した場合の処理について(図21のステップS64でNo)、図21を参照しながら説明する。Helloパケットを受信したノード装置10は、サブゲートウェイであるかを確認する(ステップS73)。Helloパケットを受信したノード装置10がサブゲートウェイである場合、経路管理部21は、ルーティングテーブル95とクラスタテーブル92を更新する(ステップS73でYes、ステップS74、S75)。ここで、ステップS74の処理は図22を参照しながら説明した処理と同様である。また、ステップS75の処理は、図23を参照しながら説明した処理と同様である。一方、Helloパケットを受信したノード装置10は、サブゲートウェイではない場合、ノード装置10は処理を終了する(ステップS73でNo)。
 <クラスタ内でのデータパケットの送受信>
 図34は、データパケットのフォーマットの例を示す。データパケット処理部81は、データパケットを生成する。このとき、データパケットのヘッダのTypeフィールドの値は、図4にも示すように「3」に設定される。Lengthフィールドの値はデータパケットに含まれているデータの長さを表す。データパケット処理部81は、データパケットの宛先のアドレスをGDに設定する。さらにデータパケット処理部81は、ルーティングテーブル95のGDの欄を宛先アドレスで検索し、ヒットしたエントリ中にLDとして登録されているノードをLDに設定する。また、データパケット処理部81は、GSとLSを送信元ノードのアドレスに設定する。ホップ数は送信元ノードからのホップ数をカウントするために用いられ、送信元ノードでは0に設定される。FIDフィールドには、FID生成部13から入力された値が記録される。データフィールドには、送信データが含まれる。GSとFIDを組み合わせて、パケットにネットワーク上での唯一性を表している。
 図35は、データパケットの受信に際して行われる動作の例を説明するフローチャートである。データパケット処理部81は、パケット分岐処理部12を介して受信したデータパケットのGDと、パケットを受信したノード装置10に割り当てられているアドレスが一致するかを確認する(ステップS191)。データパケットのGDと、ノード装置10に割り当てられているアドレスが一致した場合、データパケット処理部81は、データパケットが上位処理部14での処理対象であると判断し、上位処理部14に通知する(ステップS191でYes、ステップS192)。また、データパケット処理部81は、適宜、データパケットを上位処理部14に出力することもできる。
 一方、データパケットのGDと、ノード装置10に割り当てられているアドレスが一致しない場合、データパケット処理部81は、受信パケットを他のノードに転送することを決定する(ステップS191でNo)。データパケット処理部81は、ルーティングテーブル95のGDの欄を、データパケットのGDに記録されているアドレスをキーとして検索し、ヒットするエントリがあるかを確認する(ステップS193、S194)。GDに設定されているノードが所属クラスタと同じクラスタに所属している場合、ルーティングテーブル95にヒットするエントリがある(ステップS194でYes)。データパケット処理部81は、データパケットのLDを、ヒットしたエントリにLDとして記録されているノードのアドレスに変更し、LSをそのデータパケットを処理しているノード装置10のアドレスに変更する。さらに、ホップ数の値を1つインクリメントする(ステップS195)。データパケット処理部81は、ホップ数の値を、予め記憶しているHop限界値と比較する(ステップS196)。ホップ数の値がHop限界値以下である場合、データパケット処理部81は、送信部16を介してデータパケットを転送する(ステップS196でYes、ステップS197)。一方、ホップ数の値がHop限界値を超えた場合、データパケット処理部81は、データパケットを破棄して処理を終了する(ステップS196でNo)。
 ステップS194においてNoと判定された場合は、GDに設定されているノードが所属クラスタと同じクラスタに所属していない。この場合に行われる処理については後で説明する。
 <所属クラスタに含まれないノード装置との通信方法>
 サブゲートウェイではないノード装置10は、所属クラスタに所属していないノード装置10までの経路をルーティングテーブル95に記録していない。そこで、所属クラスタに含まれていないノード装置10にパケットを送信する場合、ノード装置10は、そのノード装置10のデフォルトゲートウェイにハイウェイデータパケットを送信する。
 図36は、ハイウェイデータパケットのフォーマットの例を示す。ハイウェイデータパケットはハイウェイデータパケット処理部82によって生成される。ハイウェイデータパケットは、データパケットの先頭に、さらにヘッダを含んでいる。以下、区別をし易くするために、ハイウェイデータパケットの先頭に付されているヘッダを「アウターヘッダ」、ハイウェイデータパケット中のデータパケットに含まれているヘッダを「インナーヘッダ」と記載する。アウターヘッダのフォーマットは、インナーヘッダのフォーマットと同様である。
 アウターヘッダのTypeフィールドには、ハイウェイデータパケットであることを表す値が設定される。図36の例では、ハイウェイデータパケットの先頭のTypeフィールドは、2に設定される。アウターヘッダのGDにはハイウェイデータパケットの宛先ノードのアドレスが記録される。例えば、送信元のノードは、ハイウェイデータパケットの宛先ノードを送信元ノードのデフォルトゲートウェイとする。アウターヘッダのGS、LS、LDは、データパケットの場合と同様に設定される。一方、インナーヘッダでは、LSとLDは設定されなくても良い。インナーヘッダのGDはデータパケットの宛先ノードのアドレス、GSはデータパケットの送信元ノードのアドレスに設定される。
 図37は、所属クラスタに含まれないノード装置との通信方法の例を示す。図37(a)に示すように、まず、送信元ノードは、ハイウェイデータパケットを生成すると、送信元ノードのデフォルトゲートウェイにハイウェイデータパケットを送信する。すると、ハイウェイデータパケットを受信したサブゲートウェイは、ハイウェイデータパケットのインナーヘッダのGDを取得し、取得したGDが所属しているクラスタを検索する。クラスタの検索には、検索データパケットが用いられる。
 検索データパケットのフォーマットの例を図38に示す。検索データパケットは、検索実行部72により生成される。検索データパケットのペイロードは、SearchTypeフィールド、foundフラグ、Search IDフィールド、Hop数、KeyGSフィールド、KeyFIDフィールド、Checkedaddrフィールドが含まれる。SearchTypeフィールドは、その検索データパケットが検索を要求しているか、検索結果を通知しているかを区別するために用いられる。以下の説明では、検索を要求する検索データパケットでは、SearchTypeフィールドの値が0に設定され、検索結果を通知する検索データパケットではSearchTypeフィールドの値が1に設定されるものとする。Search IDフィールドは、検索の対象となるノードのアドレスを記録する。foundフラグは検索対象のノードが検出されたかを示す。foundフラグ=0は未検出を表し、foundフラグ=1は検出成功を表す。Hop数は、検索データパケットの送信元から検出されたノードまでのホップ数を示す。KeyGSフィールドは、ハイウェイデータパケット中のインナーヘッダ(データパケットのヘッダ)に設定されているGSを記録し、KeyFIDフィールドは、インナーヘッダのFIDを記録する。Checkedaddrフィールドは、検索対象とされたクラスタの情報が記録される。
 検索データパケットのTypeフィールドは検索データパケットであることを表す値に設定される。例えば、図4の例では、Typeフィールドは「4」に設定される。検索データパケットのGDは、検索を行う対象となるクラスタ中のサブゲートウェイのアドレスである。LSは、検索データパケットを送信するノードのアドレス、GSは、検索データパケットの送信元のアドレス、LDはGDへの転送先のアドレスである。なお、データパケット処理部81は、ルーティングテーブル95を参照してLDを取得する。
 クラスタの検索を行うサブゲートウェイ中の検索実行部72は、そのサブゲートウェイの所属クラスタが隣接しているクラスタの各々について、検索データパケットを送信する。検索データパケットが送信される場合の例を図37(b)に示す。検索データパケットを受信したサブゲートウェイの各々は、所属クラスタに検索の対象となっているノード装置10が所属しているかを確認する。検索の対象となっているノード装置10が検出できない場合、サブゲートウェイは、新たに検索データパケットを生成し、所属クラスタに隣接しているクラスタに送信する。検索の対象となっているノード装置10が検出できた場合、サブゲートウェイは、そのサブゲートウェイに問合せを行ったノード装置10に向けて検索結果を通知する。検索結果の通知の様子を図37(c)に示す。ハイウェイデータパケットを受信したサブゲートウェイは、検索結果を取得すると、検索の対象となっているノード装置10が所属するクラスタへハイウェイデータパケットを送信する。ハイウェイデータパケットを受信したサブゲートウェイは、ハイウェイデータパケットのアウターヘッダを除去し、データパケットの宛先にデータパケットを送信する。データパケットが送信されたときの例を図37(d)に示す。
 次に、図39を参照しながらデータパケットの送信で行われる動作について詳しく説明する。
 図39は、データパケットの宛先の検索方法とデータパケットの送信の例を示す。図39の例では、クラスタC1に所属するノードSがクラスタC3に所属するノードGにデータパケットを送信するものとする。ここで、ノードSおよびノードAはクラスタC1、ノードBおよびノードCはクラスタC2、ノードDおよびノードGがクラスタC3に所属しているものとする。また、ノードAはノードSのデフォルトゲートウェイであるとする。さらに、クラスタC1はクラスタC2に隣接しているが、クラスタC3には隣接しておらず、クラスタC2はクラスタC1およびクラスタC3に隣接しているものとする。
 (61)ノードSのデータパケット処理部81は、ノードG宛のデータパケットを生成する。データパケットのGDはノードG、GSとLSはノードSに設定されている。しかし、データパケット処理部81は、ルーティングテーブル95にノードGが記録されていないことを認識すると、LDを設定せずに、生成したデータパケットをハイウェイデータパケット処理部82に出力する。
 ハイウェイデータパケット処理部82は、入力されたデータパケットにアウターヘッダを付加する。ハイウェイデータパケット処理部82は、アウターヘッダのGDを、ノードSのデフォルトゲートウェイであるノードAに設定する。アウターヘッダのGSとLSはノードSに設定される。ハイウェイデータパケット処理部82は、ルーティングテーブル95を参照することにより、ノードAにパケットを送信するために指定するLDを取得し、取得した値をアウターヘッダのLDに設定する。ここで生成されたパケットは図39(a)に示すとおりである。ハイウェイデータパケット処理部82は、ハイウェイデータパケットをノードAに向けて送信する。
 (62)ノードAは、ハイウェイデータパケットを受信すると、ハイウェイテーブル94を確認する。ハイウェイテーブル94は、ハイウェイデータパケットの転送や、経路の検索をしたことがあるために、LDを認識しているノードについての情報が記録されている。ハイウェイテーブル94は、所属クラスタ以外に所属するGDと、そのGDに対応するLDを記録している。なお、サブゲートウェイではないノード装置10は、ハイウェイテーブル94を保持しないことができる。
 ノードAのハイウェイデータパケット処理部82は、受信したハイウェイデータパケットのGDがハイウェイテーブル94に記録されていない場合、ハイウェイデータパケットをペンディングデータテーブル83に記録する。ペンディングデータテーブル83は、ハイウェイデータパケットを記録できる任意の形式とすることができる。ハイウェイデータパケット処理部82は、ハイウェイデータパケットのインナーヘッダのGDを検索先決定部71に通知し、経路の検索を要求する。
 検索先決定部71は、サーチログテーブル(SLT)73を確認する。サーチログテーブル73は、これまでに検索された経路に付いての情報が記録されている。サーチログテーブル73の各エントリには、LS、FID、GS、doneフラグ、および、アドレスリストが含まれている。図39中のサーチログテーブル73の記載では、エントリごとに、左側からLS、FID、GS、doneフラグ、アドレスリストの順にデータが記録されているものとする。サーチログテーブル73のLSの欄には、検索データパケットの送信元となるノード装置10のアドレスが記録される。FIDにはハイウェイデータパケットに含まれているデータパケットのFID、GSにはハイウェイデータパケットの送信元ノードのアドレスが記録される。doneフラグは、検索が終了したかを表す。以下の説明では、doneフラグ=0は検索が終わっていないことを表し、doneフラグ=1は検索が終わっていることを表すものとする。アドレスリストには、検索データパケットの送信先のノード装置10のアドレスが記録される。
 サーチログテーブル73の例を図39(b)に示す。検索先決定部71は、通知されたGDについてのエントリがサーチログテーブル73に含まれていない場合、エントリを生成して通知されたGDについての情報をサーチログテーブル73に記録する。ここでは、LSはノードA、GSはノードSである。また、doneフラグ=0、FIDはFID0に設定される。検索先決定部71は、隣接クラスタから検索先を選択して、検索実行部72に通知する。検索実行部72は、検索先のクラスタのサブゲートウェイのうちでノードAの隣接ノードであるノードを検索データパケットの送信先に決定する。ここではクラスタC2が検索先に指定され、検索データパケットの送信先はノードBに決定されたものとする。さらに、検索実行部72は、サーチログテーブル73のアドレスリストに、検索データパケットの送信先(ノードB)を記録する。
 検索実行部72は、検索データパケットを生成する。ノードAが生成する検索データパケットの例を図39(c)に示す。ノードAで生成された検索データパケットは、GSとLSがノードAとなる。GDおよびLDは、検索データパケットの送信先のノードBとなる。検索実行部72は、SearchTypeフィールドの値を0、foundフラグ=0、ホップ数=0、KeyGSフィールドの値をノードSに設定する。さらに、検索実行部72は、CheckedaddrフィールドにクラスタC1を指定することにより、クラスタC1が検索済みであることをノードBに通知する。ノードAの検索実行部72は、生成した検索データパケットをノードBに向けて送信する。
 (63)ノードBの検索先決定部71は、SearchTypeフィールドの値が0に設定された検索データパケットを受信すると検索を行う。まず、検索先決定部71は、Checkedaddrフィールドの値を確認する。ここでは、Checkedaddrフィールドの値から、所属クラスタ(クラスタC2)が検索されていないことを認識する。すると、ノードBの検索先決定部71は、検索データパケットのSearch IDフィールドに記録されているノードがルーティングテーブル95に記録されているかを確認する。ここでは、ノードBが保持するルーティングテーブル95にはノードGが記録されていない。すると、検索先決定部71は、ノードGはクラスタC2に所属していないことを認識する。
 次に、ノードBの検索先決定部71は、検索データパケットのKeyGSフィールドの値とKeyFIDフィールドの値を抽出し、抽出した値の組み合わせに対応付けられたエントリがサーチログテーブル73に記録されているかを確認する。ここでは、KeyGSフィールドの値とKeyFIDフィールドの値に対応するエントリがサーチログテーブル73に含まれていないものとする。すると、検索先決定部71は、エントリをサーチログテーブル73に追加し、LS、FID、GS、doneフラグの値を設定する。次に、ノードBの検索先決定部71は、隣接クラスタのうちで、まだ検索が行われていないクラスタを検索先に決定する。ここでは、検索先決定部71は、クラスタC3を検索先に指定して検索実行部72に通知する。
 検索実行部72は、所属クラスタのサブゲートウェイであって、かつ、クラスタC3に含まれているサブゲートウェイに隣接しているサブゲートウェイ(ノードC)を検索データパケットの送信先に決定する。従って、サーチログテーブル73には、
   LS     :ノードA
   FID    :FID0
   GS     :ノードS
   doneフラグ:0
   GD     :ノードC
の情報が記録される。サーチログテーブル73の例を図39(d)に示す。
 さらに、検索実行部72は、ノードCに、検索データパケットを送信する。検索データパケットの生成方法は、手順(62)で説明した方法と同様である。ノードBが生成する検索データパケットの例を図39(e)に示す。ノードBの検索実行部72は、検索データパケットのGDをノードC、GSとLSをノードBに設定する。さらに、ノードBの検索実行部72は、ホップ数を1に設定し、さらに、クラスタC1とクラスタC2が検索済みであることをCheckedaddrフィールドに記録する。ノードBの検索実行部72は、ルーティングテーブル95を参照してLDを決定し、生成した検索データパケットを送信する。
 (64)ノードBからノードCに至る経路のノード装置10は、検索データパケットを受信するたびに、適宜、LSとLDを変更し、ホップ数を1つインクリメントした上で、検索データパケットを転送する。
 (65)ノードCの検索先決定部71は、検索を要求する検索データパケットを受信すると、Checkedaddrフィールドの値から、所属クラスタ(クラスタC2)が検索済みであることを認識する。すると、ノードCの検索先決定部71はルーティングテーブル95の検索を行わない。
 次に、ノードCの検索先決定部71は、検索データパケットのKeyGSフィールドの値とKeyFIDフィールドの値の組み合わせに対応するエントリがサーチログテーブル73に記録されているかを確認する。ここでは、検索データパケットから得られた値の組み合わせに対応するエントリがサーチログテーブル73に含まれていないので、検索先決定部71は、
   LS     :ノードB
   FID    :FID0
   GS     :ノードS
   doneフラグ:0
   GD     :ノードD
を示すエントリをサーチログテーブル73に追加する。追加されたエントリの例を、図39(f)に示す。なお、サーチログテーブル73のLSは、検索データパケットの送信元ノードであるので、ノードBとなる。ノードCの検索先決定部71は、隣接クラスタからクラスタC3を検索先に指定して検索実行部72に通知する。
 検索実行部72は、隣接ノードであって、かつ、クラスタC3に含まれているサブゲートウェイに隣接しているサブゲートウェイ(ノードD)に、検索データパケットを送信する。検索データパケットの生成方法は、手順(62)で説明した方法と同様である。ノードCが生成する検索データパケットの例を図39(g)に示す。ノードCの検索実行部72は、検索データパケットのGDをノードD、GSとLSをノードCに設定する。また、ホップ数はノードBからノードCに至るまでのホップ数に1を加えた値になる。すなわち、ホップ数は、ノードAを起点としたホップ数である。
 (66)ノードDの検索先決定部71は、検索を要求する検索データパケットを受信すると、Checkedaddrフィールドの値を確認する。ここでは、CheckedaddrフィールドにC3が含まれていないため、検索先決定部71は、クラスタC3が検索されていないことを認識する。すると、ノードDの検索先決定部71は、Search IDフィールドに記録されているノードがルーティングテーブル95に記録されているかを確認する。ここでは、ノードDが保持するルーティングテーブル95にはノードGが記録されているものとする。
 すると、検索先決定部71は検索が終了したと判断し、検索結果を通知するための検索データパケットを生成する。ノードDで生成される検索データパケットの例を図39(h)に示す。ノードDの検索先決定部71は、検索データパケットのSearchTypeフィールドの値を1、foundフラグを1に設定し、検索結果を通知するための応答であることを示す。さらにCheckedaddrフィールドにクラスタC1~C3を記録する。検索先決定部71は、ホップ数フィールドに、ノードDからノードGに至るまでのホップ数を記録する。検索先決定部71は、KeyGSフィールド、KeyFIDフィールド、Search IDフィールドの値は、検索を要求してきた検索データパケットと同じ値とする。検索先決定部71は、GDに検索を要求してきた検索データパケットの送信元を設定する。従って、GDにノードCが設定される。さらに、GSとLSがノードDに設定される。検索先決定部71は、生成した検索データパケットをノードCに向けて送信する。
 (67)ノードCの検索先決定部71は、SearchTypeフィールドの値が1である検索データパケットを受信すると、検索結果が通知されていると認識する。また、検索データパケットのホップ数フィールドの値を1つインクリメントする。
 検索先決定部71は、SearchTypeフィールド=1の検索データパケットの内容をハイウェイテーブル94に記録する。ハイウェイテーブル94に追加されるエントリの例を図39(i)に示す。GDにはSearch IDフィールドの値、LDは、検索データパケットの送信元ノード、Lenの欄には、インクリメント後の検索データパケットのホップ数フィールドの値が記録される。すなわち、Lenの値は、ハイウェイテーブル94を記録しているノードからそのエントリのGDまでのホップ数になる。ここでは、ホップ数は、ノードCからノードGまでのホップ数である。もしハイウェイテーブル94にGDが同じエントリがある場合は、ホップ数が小さい方の値が採用される。
 ノードCの検索先決定部71は、サーチログテーブル73を確認して、検索データパケットのペイロードに記録されている情報を通知する対象を特定する。このとき、検索先決定部71は、検索データパケットのKeyGSフィールドとKeyFIDフィールドの値の組合せをキーとして、サーチログテーブル73のGSとFIDの欄を検索する。なお、図39の例では、サーチログテーブル73のGSとFIDの欄は、サーチログテーブル73のエントリの2番目と3番目の欄である。さらに、サーチログテーブル73中の、ヒットしたエントリについては、doneフラグを1に変更する。従って、変更後のサーチログテーブル73のエントリは、
   LS     :ノードB
   FID    :FID0
   GS     :ノードS
   doneフラグ:1
   GD     :ノードD
となる。図39(k)にサーチログテーブル73のエントリが変更されたときの例を示す。検索先決定部71は、ヒットしたエントリのLSに指定されているノードに向けて、ノードDから通知された情報を通知する。このとき、検索先決定部71は図39(j)に示す検索データパケットを生成して、ノードBに向けて送信する。
 (68)ノードBの検索先決定部71は、SearchTypeフィールドの値が1である検索データパケットを受信すると、(67)で説明した手順と同様の処理により、ハイウェイテーブル94とサーチログテーブル73を更新する。ハイウェイテーブル94の例を図39(l)に示す。サーチログテーブル73の変更後のエントリには、
   LS     :ノードA
   FID    :FID0
   GS     :ノードS
   doneフラグ:1
   GD     :ノードC
のデータが記録される。変更後のサーチログテーブル73の例を図39(m)に示す。また、ノードBの検索先決定部71は、図39(n)に示す検索データパケットを生成して、ノードAに送信する。
 (69)ノードAの検索先決定部71は、検索データパケットを受信すると、(67)で説明した手順と同様の処理により、ハイウェイテーブル94とサーチログテーブル73を更新する。ハイウェイテーブル94の例を図39(o)に示す。変更後のサーチログテーブル73には、
   LS     :ノードA
   FID    :FID0
   GS     :ノードS
   doneフラグ:1
   GD     :ノードB
のデータが記録される。サーチログテーブル73の例を図39(p)に示す。
 (70)ノードAのハイウェイデータパケット処理部82は、ハイウェイテーブル94にノードGのエントリができたため、ペンディングデータテーブル83に格納されていたハイウェイデータパケットをノードBに転送する。このとき、ハイウェイデータパケットのアウターヘッダのGDはノードB、GSおよびLSはノードAに変更される。
 (71)ノードBのハイウェイデータパケット処理部82は、ノードAからハイウェイデータパケットを受信すると、ハイウェイデータパケットのインナーヘッダのGDをキーとして、ルーティングテーブル95を参照する。ルーティングテーブル95にGDが含まれていない場合、ハイウェイデータパケット処理部82は、ハイウェイテーブル94を参照する。ハイウェイテーブル94にGD=ノードGのエントリができたため、ノードBは、このエントリのLDに登録されているノードCをアウターヘッダのGDに設定して、ハイウェイデータパケットをノードCに転送する。
 (72)ノードCがノードBからハイウェイデータパケットを受信した場合の処理も手順(71)と同様である。ノードCは、アウターヘッダに含まれるアドレスを変更して、ハイウェイデータパケットをノードDに転送する。
 (73)ノードDのハイウェイデータパケット処理部82は、ノードCからハイウェイデータパケットを受信すると、ハイウェイデータパケットのインナーヘッダのGDをキーとして、ルーティングテーブル95を検索する。ルーティングテーブル95にGDが記録されているので、ハイウェイデータパケット処理部82は、ハイウェイデータパケットのアウターヘッダを除去し、データパケット処理部81に出力する。データパケット処理部81に出力されるデータパケットの例を図39(q)に示す。データパケット処理部81は、ルーティングテーブル95を参照してデータパケットをノードGに転送する。
 図40は、検索データパケット(SDP)の処理の例を説明するフローチャートである。図40は、検索データパケットを受信したノードの動作を表しており、図40の説明では、検索データパケットを受信したノードのことを「自ノード」と記載することがある。
 検索データパケットを受信したノードの検索先決定部71は、SearchTypeフィールドに基づいて、検索が要求されているかを判定する(ステップS221)。検索が要求されている場合、検索先決定部71は、自ノードが検索データパケットのGDと一致するかを確認する(ステップS221でYes、ステップS222)。自ノードが検索データパケットのGDでない場合、検索データパケットを宛先に転送するための処理を行う(ステップS222でNo、ステップS227)。自ノードが検索データパケットのGDである場合、検索先決定部71は、さらに、自ノードがサブゲートウェイであるかを確認する(ステップS222でYes、ステップS223)。自ノードがサブゲートウェイでない場合、検索先決定部71は処理を終了する(ステップS223でNo)。自ノードがサブゲートウェイである場合、Search IDフィールドに記録されているノードが自ノード、もしくは、ルーティングテーブル95に記録されているノードのいずれかであるかを判定する(ステップS224)。Search IDフィールドに記録されているノードが自ノード、もしくは、ルーティングテーブル95に記録されているノードのいずれかである場合、検索は終了する(ステップS224でYes)。そこで、検索先決定部71は、検索結果を通知するための検索データパケットを生成する(ステップS225)。このとき、検索先決定部71は、受信した検索データパケットのGDとGSを入れ替え、foundフラグを1に設定する。また、検索先決定部71は、SearchTypeフィールドの値を1に変更する。次に、検索先決定部71は、検索データパケットの探索済みのクラスタリストに自ノードの所属クラスタを識別するクラスタIDを記録する(ステップS226)。その後、検索先決定部71は、生成した検索データパケットを送信する(ステップS227)。このとき、検索先決定部71は、検索データパケットのGDでルーティングテーブル95を検索し、得られたLDを検索データパケットのLDに設定する。さらに、検索データパケットのLSに自ノードを設定する。
 ステップS224で、Search IDフィールドに記録されているノードが自ノードではなく、ルーティングテーブル95に記録されているノードでもない場合、検索先決定部71は、サーチログテーブル73への登録処理を行う(ステップS228)。また、検索先決定部71は、隣接クラスタのうちでまだ検索が行われていないクラスタを検索先として特定し、検索先のクラスタに所属するサブゲートウェイを選択する(ステップS229)。検索データパケットの転送先が得られた場合、検索先決定部71は、転送先のノードをサーチログテーブル73に記録し、ステップS226以降の処理を行う(ステップS231でYes)。一方、全ての隣接クラスタの検索が終わっているなどの理由により、検索データパケットの転送先が得られなかった場合、検索実行部72は、サーチログテーブル73のdoneフラグを1に設定する(ステップS231でNo、ステップS232)。さらに、検索実行部72は、検索データパケットの送信元に対して、検索が終わったことを通知するための検索データパケットを返信する(ステップS233)。ステップS233で送信される検索データパケットでは、SearchTypeフィールド=1が設定されているので、検索データパケットに対する応答であることが宛先のノードで認識される。ここでは検索先のノードまでの経路が発見されていないので、検索データパケットのfoundフラグは0に設定される。
 受信した検索データパケットが検索結果を通知している場合、検索先決定部71は、自ノードが検索データパケットのGDと一致するかを確認する(ステップS221でNo、ステップS234)。自ノードが検索データパケットのGDでない場合、検索データパケットを宛先に転送するための処理を行う(ステップS234でNo、ステップS241)。自ノードが検索データパケットのGDである場合、検索先決定部71は、さらに、自ノードがサブゲートウェイであるかを確認する(ステップS235)。自ノードがサブゲートウェイでない場合、検索先決定部71は処理を終了する(ステップS235でNo)。自ノードがサブゲートウェイである場合、検索データパケットのfoundフラグが1であるかを確認する(ステップS236)。foundフラグが1である場合、検索先決定部71は、検索データパケットで通知された内容をハイウェイテーブル94に記録する(ステップS236でYes、ステップS237)。このとき、ハイウェイテーブル94のGDに、検索データパケットのSearch IDフィールドに記録されているノードが記録される。また、ハイウェイテーブル94のLDに、検索データパケットのGSが記録される。さらに、検索先決定部71は、ハイウェイテーブル94のホップ数を設定する。一方、foundフラグが1でない場合、検索先決定部71はステップS237の処理を行わずにステップS238の処理を行う(ステップS236でNo)。ノード装置10は、自ノードが検索データパケットを用いた問い合わせを開始した場合、ハイウェイテーブル94を用いてハイウェイデータパケットを送信する(ステップS238でYes、ステップS239)。自ノードが検索データパケットを用いた問い合わせを開始したかどうかは、検索データパケットのKeyGSフィールド、KeyFIDフィールドの値の組み合わせでサーチログテーブル73を検索することにより判定される。検索データパケットのKeyGSフィールド、KeyFIDフィールドの値の組み合わせに一致するエントリのLSが自ノードである場合、自ノードが問い合わせを開始したと判定される。一方、検索データパケットを用いた問い合わせを開始したノードではない場合、検索実行部72は、KeyGSフィールド、KeyFIDフィールドの値の組み合わせに一致するエントリのLSをサーチログテーブル73から取得する(ステップS240)。検索実行部72は、検索データパケットのGDに、サーチログテーブル73から得られたLSを設定する。その後、検索先決定部71は、生成した検索データパケットを送信する(ステップS241)。ステップS241で送信される検索データパケットの生成方法は、ステップS227と同様である。
 図41は、ハイウェイデータパケットの処理の例を説明するフローチャートである。図41は、ハイウェイデータパケットを受信したノードの動作を表しており、図41の説明では、ハイウェイデータパケットを受信したノードのことを「自ノード」と記載することがある。
 ハイウェイデータパケット処理部82は、受信したハイウェイデータパケットのGDが自ノードであるかを判定する(ステップS251)。ハイウェイデータパケットのGDが自ノードである場合、ハイウェイデータパケット処理部82は、自ノードがサブゲートウェイであるかを確認する(ステップS251でYes、ステップS252)。自ノードがサブゲートウェイではない場合、ハイウェイデータパケット処理部82はデータを廃棄した上で処理を終了する(ステップS252でNo、ステップS253)。
 一方、自ノードがサブゲートウェイである場合、ハイウェイデータパケット処理部82は、インナーヘッダのGD(データパケットのGD)が自ノードかを確認する(ステップS252でYes、ステップS254)。GDが自ノードである場合、ハイウェイデータパケット処理部82は、上位処理部14にデータを出力して処理を終了する(ステップS254でYes、ステップS255)。GDが自ノードではない場合、インナーヘッダのGDがルーティングテーブル95に登録されているかを確認する(ステップS254でNo、ステップS256)。GDがルーティングテーブル95に登録されている場合、所属クラスタ内にGDがいることになる(ステップS257でYes)。そこで、ハイウェイデータパケット処理部82は、ハイウェイデータパケットをデータパケットに変換してデータパケット処理部81に出力する。さらに、データパケット処理部81は、データパケットのLSを自ノードとし、データパケットのLDをGDに対応付けてルーティングテーブル95に記録されているLDとする(ステップS258)。データパケット処理部81は、データパケットを転送する(ステップS259)。
 ステップS257で、GDがルーティングテーブル95に登録されていないと判定された場合、ハイウェイデータパケット処理部82は、インナーヘッダのGDがハイウェイテーブル94に登録されているかを確認する(ステップS257でNo、ステップS260)。GDがハイウェイテーブル94に登録されていない場合、検索データパケットの送信が行われる(ステップS261でNo、ステップS262)。一方、GDがハイウェイテーブル94に登録されている場合、ハイウェイテーブル94のLDをハイウェイデータパケットのGD(アウターヘッダのGD)に設定する(ステップS261でYes、ステップS263)。その後、ハイウェイデータパケット処理部82は、ハイウェイデータパケットのアウターヘッダのGDがルーティングテーブル95に登録されているかを確認する(ステップS264、S265)。アウターヘッダのGDがルーティングテーブル95に登録されていない場合、ハイウェイデータパケット処理部82は、データを廃棄して処理を終了する(ステップS265でNo、ステップS268)。
 一方、GDがルーティングテーブル95に登録されている場合、ルーティングテーブル95の該当するエントリに記録されているLDをアウターヘッダのLDに設定する。また、アウターヘッダのLSを自ノードにし、データパケットのホップ数を1つインクリメントする(ステップS265でYes、ステップS266)。ハイウェイデータパケット処理部82は、ホップ数の値が予め記憶しているホップ限界以下の場合、ハイウェイデータパケットを転送する(ステップS269)。一方、ホップ数の値を予め記憶しているホップ限界を超えている場合、ハイウェイデータパケット処理部82は、データを廃棄する(ステップS267でNo、ステップS268)。また、ステップS251でハイウェイデータパケットのGDは自ノードではないと判定された場合は、ステップS264以降の処理が行われる。
 さらに、図35を参照しながら、ハイウェイデータパケットが生成される場合の動作について説明する。データパケットのGDが所属クラスタと異なるクラスタに所属している場合、ステップS194でNoと判定され、ハイウェイデータパケットの作成が開始される(ステップS198)。以下の説明では、ステップS198~S210を参照しながら、ハイウェイデータパケットを生成するノードの動作を説明する。また、ステップS198~S210の説明では、ハイウェイデータパケットを生成するノードを「自ノード」と記載する。
 ハイウェイデータパケット処理部82は、自ノードがサブゲートウェイであるかを確認する(ステップS199)。自ノードがサブゲートウェイではない場合、ハイウェイデータパケット処理部82は、デフォルトゲートウェイまでの経路をルーティングテーブル95から取得する(ステップS200、S201)。ハイウェイデータパケット処理部82は、ハイウェイデータパケットのアドレス等を設定する(ステップS202)。すなわち、ハイウェイデータパケット処理部82は、デフォルトゲートウェイをハイウェイデータパケットのGDに設定し、自ノードをハイウェイデータパケットのGSに設定する。さらに、ハイウェイデータパケット処理部82は、ハイウェイデータパケットのLDをデフォルトゲートウェイまでの経路のLDに設定し、さらに、データパケットのホップ数を1つインクリメントする。ホップ数がホップ限界以下であれば、ハイウェイデータパケット処理部82は、ハイウェイデータパケットを転送する(ステップS208でYes、ステップS209)。一方、ホップ数がホップ限界を超えていれば、ハイウェイデータパケット処理部82は、ハイウェイデータパケットを廃棄する(ステップS208でNo)。
 ステップS199で自ノードがサブゲートウェイであると判定された場合、インナーヘッダのGD(データパケットのGD)がハイウェイテーブル94に登録されているかを確認する(ステップS203、S204)。インナーヘッダのGDがハイウェイテーブル94に記録されている場合、ハイウェイデータパケット処理部82は、ハイウェイテーブル94でGDへの経路のLDとして登録されているノードを、アウターヘッダのGDに設定する。さらに、ハイウェイデータパケット処理部82は、ハイウェイデータパケットのGSを自ノードに設定する(ステップS205)。次に、ハイウェイデータパケット処理部82は、ハイウェイデータパケットのアウターヘッダのGDと一致するエントリをルーティングテーブル95から取得する(ステップS206)。ハイウェイデータパケット処理部82は、取得したエントリにLDとして記録されているノードを、ハイウェイデータパケットのアウターヘッダのLDに指定し、LSを自ノードとする。さらに、ハイウェイデータパケット処理部82は、データパケットのホップ数を1つインクリメントする(ステップS207)。ハイウェイデータパケット処理部82は、ホップ数がホップ限界以下の場合、ハイウェイデータパケットを転送し、ホップ数がホップ限界を超えている場合、ハイウェイデータパケットを廃棄する(ステップS208、S209)。なお、ステップS204でハイウェイテーブル94に登録されていないと判定されると、サブゲートウェイは、検索データパケットの送信処理を行う(ステップS210)。
 <その他>
 以上の説明では、クラスタ中のノード数が閾値まで達したときに新たなクラスタの生成が開始される場合を例としたが、新たなクラスタの生成が開始されるタイミングは実装に応じて変更されることがある。例えば、クラスタ中のノード数が閾値の80%に達したときに新たなクラスタの生成が開始されても良い。
 これまでの説明で図示したパケットのフォーマットは一例である。実装に応じてパケットのフォーマットが適宜変更される場合もある。
 さらに、前述の説明では、クラスタの生成を行っている起点ノード装置が1つの場合を例として説明したが、クラスタの生成を行う起点ノード装置の数は複数でもよい。この場合も個々の起点ノード装置の動作は前述のとおりである。
 また、クラスタIDをクラスタの起点ノード装置のアドレスとすることができる。この場合、クラスタIDと起点ノード装置のアドレスは一致するため、クラスタテーブル92は、クラスタIDと起点ノード装置のアドレスのうちの一方を記憶することができ、メモリ領域を節約できる。
  10 ノード装置
  11 受信部
  12 パケット分岐処理部
  13 FID生成部
  14 上位処理部
  15 Hello生成部
  16 送信部
  20 Hello処理部
  21 経路管理部
  22 未所属ノード特定部
  30 受信処理部
  31 ACK処理部
  32 バッファ部
  40 クラスタ処理部
  41 デフォルトGW決定部
  42 クラスタ検索テーブル
  43 隣接クラスタテーブル
  44 ゲートウェイ候補テーブル
  50 クラスタ生成部
  51 参加要求部
  52 参加処理部
  53 生成要求部
  54 未所属ノード特定部
  60 サブゲートウェイ生成部
  61 隣接クラスタ通知部
  62 候補テーブル生成部
  63 サブゲートウェイ決定部
  70 検索処理部
  71 検索先決定部
  72 検索実行部
  73 サーチログテーブル
  80 データ処理部
  81 データパケット処理部
  82 ハイウェイデータパケット処理部
  83 ペンディングデータテーブル
  90 記憶部
  91 リンクテーブル
  92 クラスタテーブル
  93 未所属テーブル
  94 ハイウェイテーブル
  95 ルーティングテーブル
  96 FID管理テーブル
 100 MPU
 101 バス
 102 PHYチップ
 104 タイマIC
 106 DRAM
 107 フラッシュメモリ
 108 無線モジュール

Claims (10)

  1.  ネットワークの経路情報を通知する経路情報パケットを受信する受信部と、
     隣接するノード装置である隣接ノード装置と前記隣接ノード装置を介して通信可能なノード装置の中から選択した第1のノード装置に、自身が所属している第1のクラスタへの参加を要求するための参加要求パケットを生成する参加要求部と、
     前記第1のクラスタに所属している各所属ノード装置までの経路を記憶するルーティングテーブルと、
     前記第1のクラスタに所属する所属ノード装置の数が閾値を超えると、前記第1のクラスタに所属していない第2のノード装置に、前記第1のクラスタとは異なる第2のクラスタの生成を要求するための生成要求パケットを生成する生成要求部と、
     前記参加要求パケットを前記第1のノード装置に送信し、前記生成要求パケットを前記第2のノード装置に送信する送信部
     を備えることを特徴とするノード装置。
  2.  前記隣接ノード装置と前記隣接ノード装置を介して通信可能なノード装置のうち、いずれのクラスタにも所属していない未所属ノード装置を特定すると共に、前記未所属ノード装置を未所属テーブルに記録する未所属ノード特定部をさらに備え、
     前記参加要求部は、前記未所属テーブルに記録されているノード装置から、前記第1のクラスタへの参加を要求するノード装置を選択し、
     前記未所属ノード特定部は、前記所属ノード装置を前記未所属テーブルから削除し、前記所属ノード装置から通知された情報から、前記所属ノード装置に隣接しているノード装置のうちでいずれのクラスタにも所属していないノード装置を特定し、前記未所属テーブルに記録する
     ことを特徴とする請求項1に記載のノード装置。
  3.  前記所属ノード装置から、前記所属ノード装置に隣接するノード装置が前記第2のクラスタに所属していることを通知する隣接クラスタ通知を受信すると、前記隣接クラスタ通知の送信元を前記第2のクラスタと対応付けて、候補テーブルに記録する候補テーブル生成部と
     前記候補テーブルから選択したノード装置を、前記第2のクラスタと前記第1のクラスタの間のゲートウェイとして動作するノード装置であるサブゲートウェイに決定するサブゲートウェイ決定部
    をさらに備える
     ことを特徴とする請求項1もしくは2に記載のノード装置。
  4.  前記サブゲートウェイ決定部は、前記サブゲートウェイに、前記第1のクラスタに所属しておらず、かつ、前記サブゲートウェイに隣接するノード装置までの経路をルーティングテーブルに記憶することと、前記隣接クラスタ通知で通知したクラスタに含まれるノード装置を前記サブゲートウェイとして動作させることを要求する
     ことを特徴とする請求項3に記載のノード装置。
  5.  所属しているクラスタ中に複数のサブゲートウェイがある場合、通信条件が所定の条件よりも良いサブゲートウェイを、前記所属しているクラスタに含まれていないノード装置宛のデータパケットの中継先として優先的に選択するデフォルトゲートウェイに決定するデフォルトゲートウェイ決定部をさらに備える
     ことを特徴とする請求項3もしくは4に記載のノード装置。
  6.  第1のノード装置は、前記第1のノード装置の隣接ノード装置、および、前記隣接ノード装置から通信可能なノード装置に、第1のクラスタへの参加を要求することにより、前記第1のノード装置を含む第1のクラスタを生成し、
     前記第1のクラスタに所属している所属ノード装置は、経路情報を通知する経路情報パケットを送受信することにより、他の所属ノード装置までの経路をルーティングテーブルに記憶し、
     前記第1のノード装置は、前記所属ノード装置の数が閾値を超えるまで、前記第1のクラスタへの参加の要求と、前記ルーティングテーブルへの経路の記憶を繰り返し、
     前記所属ノードの数が前記閾値を超えると、前記第1のクラスタに所属していない第2のノード装置に、前記第1のクラスタとは異なる第2のクラスタの生成を要求する
     ことを特徴とする通信方法。
  7.  前記第1のノード装置は、前記第1のクラスタに所属しており、かつ、前記第2のクラスタに所属する第3のノード装置に隣接するノード装置を、前記第1のクラスタと前記第2のクラスタの間のゲートウェイとして動作するノード装置である第1のサブゲートウェイに決定し、
     前記第1のサブゲートウェイは、前記第3のノード装置を、第1のクラスタと前記第2のクラスタの間のゲートウェイとして動作する第2のサブゲートウェイに設定し、
     前記第1のサブゲートウェイは前記第2のサブゲートウェイまでの経路を前記ルーティングテーブルに記憶する
     ことを特徴とする請求項6に記載の通信方法。
  8.  前記第1のサブゲートウェイは、前記所属ノード装置から前記第1のクラスタとは異なるクラスタに所属する第4のノード装置へ送信されるデータを含むデータパケットを記憶し、
     前記第1のサブゲートウェイは、前記第4のノード装置への経路を前記第2のサブゲートウェイに問い合わせ、
     前記第2のサブゲートウェイが格納しているルーティングテーブルに前記第4のノード装置が記録されている場合、前記第2のサブゲートウェイは前記第4のノード装置への経路を前記第1のサブゲートウェイに通知し、
     前記第1のサブゲートウェイは、通知された経路を用いて、前記データパケットを前記第4のノード装置へ送信する
     ことを特徴とする請求項6もしくは7に記載の通信方法。
  9.  前記第2のサブゲートウェイが格納しているルーティングテーブルに前記第4のノード装置が記録されていない場合、前記第2のサブゲートウェイは、前記第2のクラスタに所属している第3のサブゲートウェイに、前記第4のノード装置への経路を問い合わせ、
     前記第3のサブゲートウェイは、前記第3のサブゲートウェイに隣接し、かつ、前記第2のクラスタに所属していない第4のサブゲートウェイに対して、前記第4のノード装置への経路を問い合わせ、
     前記第4のサブゲートウェイが格納しているルーティングテーブルに前記第4のノード装置が記録されている場合、前記第4のサブゲートウェイは前記第4のノード装置への経路を前記第3のサブゲートウェイに通知し、
     前記第3のサブゲートウェイは前記第4のノード装置への経路を前記第2のサブゲートウェイに通知する
     ことを特徴とする請求項8に記載の通信方法。
  10.  ネットワークの経路情報を通知する経路情報パケットを受信し、
     隣接するノード装置である隣接ノード装置と前記隣接ノード装置を介して通信可能なノード装置に、第1のクラスタへの参加を要求する制御パケットを送信し、
     前記第1のクラスタに所属している所属ノード装置までの経路をルーティングテーブルに記憶し、
     前記所属ノード装置の数が閾値を超えると、前記第1のクラスタに所属していないノード装置に、前記第1のクラスタとは異なる第2のクラスタの生成を要求する制御パケットを送信する
     処理をコンピュータに行わせることを特徴とする通信プログラム。
PCT/JP2011/071402 2011-09-20 2011-09-20 ノード装置および通信方法 WO2013042208A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013534492A JP5673840B2 (ja) 2011-09-20 2011-09-20 ノード装置および通信方法
PCT/JP2011/071402 WO2013042208A1 (ja) 2011-09-20 2011-09-20 ノード装置および通信方法
US14/216,462 US20140198770A1 (en) 2011-09-20 2014-03-17 Node device, communication method, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/071402 WO2013042208A1 (ja) 2011-09-20 2011-09-20 ノード装置および通信方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/216,462 Continuation US20140198770A1 (en) 2011-09-20 2014-03-17 Node device, communication method, and storage medium

Publications (1)

Publication Number Publication Date
WO2013042208A1 true WO2013042208A1 (ja) 2013-03-28

Family

ID=47914020

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2011/071402 WO2013042208A1 (ja) 2011-09-20 2011-09-20 ノード装置および通信方法

Country Status (3)

Country Link
US (1) US20140198770A1 (ja)
JP (1) JP5673840B2 (ja)
WO (1) WO2013042208A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014155712A1 (ja) * 2013-03-29 2014-10-02 富士通株式会社 通信方法、通信プログラム、および、ノード装置
JP2015015585A (ja) * 2013-07-04 2015-01-22 富士通株式会社 無線通信装置、無線通信方法、無線通信プログラムおよび無線通信システム
JP2016529795A (ja) * 2013-08-13 2016-09-23 ▲華▼▲為▼▲終▼端有限公司 近傍認識ネットワーク装置クラスタに参加するための方法、装置、およびシステム

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105814850B (zh) * 2014-11-21 2019-04-12 华为技术有限公司 路由数据包的方法、节点和通信系统
CN105208622B (zh) * 2015-08-26 2019-05-10 江苏林洋能源股份有限公司 一种高效动态自动维护的路由表结构的路由选择方法及路由表管理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004056787A (ja) * 2002-06-19 2004-02-19 Harris Corp 移動アドホックネットワークおよび重み係数を乗じたサービス品質メトリックに基づいて機能を実行するための方法
JP2006033855A (ja) * 2004-07-15 2006-02-02 Samsung Electronics Co Ltd アドホックネットワークにおけるプレフィックス割当て方法
JP2006186446A (ja) * 2004-12-27 2006-07-13 Hiroshima Industrial Promotion Organization 通信方法
JP2011520327A (ja) * 2008-04-15 2011-07-14 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 通信の信頼性を提供する方法及びシステム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7466663B2 (en) * 2000-10-26 2008-12-16 Inrotis Technology, Limited Method and apparatus for identifying components of a network having high importance for network integrity
US6744740B2 (en) * 2001-12-21 2004-06-01 Motorola, Inc. Network protocol for wireless devices utilizing location information
US7881229B2 (en) * 2003-08-08 2011-02-01 Raytheon Bbn Technologies Corp. Systems and methods for forming an adjacency graph for exchanging network routing data
KR101394357B1 (ko) * 2007-10-09 2014-05-13 삼성전자주식회사 무선 센서 네트워크 시스템 및 그의 클러스터 관리 방법
CN101540714B (zh) * 2008-03-21 2012-02-01 华为技术有限公司 网络路径建立与数据发送的方法及网络节点
EP2479938A4 (en) * 2009-09-14 2016-09-07 Nec Corp COMMUNICATION SYSTEM, FORWARDING NOTIFICATION, PATH MANAGEMENT SERVER, COMMUNICATION PROCESS AND PROGRAM
KR101612475B1 (ko) * 2010-04-19 2016-04-27 삼성전자주식회사 가십 기반의 p2p 서비스의 파트너쉽 형성 방법 및 장치
FI20105658A (fi) * 2010-06-10 2011-12-11 Defendec Inc Laite ja menetelmä liikkuvaa ad hoc -monijänneverkkoa varten
JP2012085115A (ja) * 2010-10-12 2012-04-26 Panasonic Corp 通信端末およびクラスター監視方法
US8340016B1 (en) * 2011-07-29 2012-12-25 Viasat, Inc. Flexible forward and return capacity allocation in a hub-spoke satellite communication system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004056787A (ja) * 2002-06-19 2004-02-19 Harris Corp 移動アドホックネットワークおよび重み係数を乗じたサービス品質メトリックに基づいて機能を実行するための方法
JP2006033855A (ja) * 2004-07-15 2006-02-02 Samsung Electronics Co Ltd アドホックネットワークにおけるプレフィックス割当て方法
JP2006186446A (ja) * 2004-12-27 2006-07-13 Hiroshima Industrial Promotion Organization 通信方法
JP2011520327A (ja) * 2008-04-15 2011-07-14 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 通信の信頼性を提供する方法及びシステム

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014155712A1 (ja) * 2013-03-29 2014-10-02 富士通株式会社 通信方法、通信プログラム、および、ノード装置
CN105009642A (zh) * 2013-03-29 2015-10-28 富士通株式会社 通信方法、通信程序以及节点装置
JPWO2014155712A1 (ja) * 2013-03-29 2017-02-16 富士通株式会社 通信方法、通信プログラム、および、ノード装置
US9912779B2 (en) 2013-03-29 2018-03-06 Fujitsu Limited Communication method and node device for communication between adjacent clusters
JP2015015585A (ja) * 2013-07-04 2015-01-22 富士通株式会社 無線通信装置、無線通信方法、無線通信プログラムおよび無線通信システム
JP2016529795A (ja) * 2013-08-13 2016-09-23 ▲華▼▲為▼▲終▼端有限公司 近傍認識ネットワーク装置クラスタに参加するための方法、装置、およびシステム
US9888438B2 (en) 2013-08-13 2018-02-06 Huawei Device (Dongguan) Co., Ltd. Method, device, and system for joining neighbor awareness network cluster
JP2018029350A (ja) * 2013-08-13 2018-02-22 華為終端(東莞)有限公司 近傍認識ネットワーク装置クラスタに参加するための方法、装置、およびシステム

Also Published As

Publication number Publication date
US20140198770A1 (en) 2014-07-17
JPWO2013042208A1 (ja) 2015-03-26
JP5673840B2 (ja) 2015-02-18

Similar Documents

Publication Publication Date Title
US7787361B2 (en) Hybrid distance vector protocol for wireless mesh networks
US7330694B2 (en) Method for setting up route path through route discovery in a mobile ad hoc network using partial route discovery
US8441958B2 (en) Directed acyclic graph discovery and network prefix information distribution relative to a clusterhead in an ad hoc mobile network
US9450830B2 (en) Node apparatus and communication method
WO2013171867A1 (ja) ノード装置および通信方法
US8213352B2 (en) Wireless communication system, wireless communication device, wireless communication method, and program
US8284775B2 (en) Six-address scheme for multiple hop forwarding in wireless mesh networks
JP2005168020A (ja) 無線マルチホップネットワークの通信経路制御方法及び通信端末
TWI793361B (zh) 用於藍芽網路之獨立冗餘路徑探索
JP5673840B2 (ja) ノード装置および通信方法
US20170245132A1 (en) Radio communication system, radio communication device, and radio relay device
CN109068367B (zh) 一种无线令牌传递方法、装置、设备及可读存储介质
WO2018019056A1 (zh) 传输数据的方法和中继节点
WO2013054425A1 (ja) ノード装置および通信方法
WO2019119346A1 (zh) 一种通信路径确定方法及网络设备
JP5720793B2 (ja) データ転送方法およびそれを用いるノード装置
US20080107033A1 (en) Radio communication network capable of radio communication with reduced overhead
Mu An improved AODV routing for the zigbee heterogeneous networks in 5G environment
WO2020156340A1 (zh) 一种传输数据的方法及装置
JP6264856B2 (ja) ノード装置、制御プログラム、無線通信システム、及びデータ通信方法
US10680899B1 (en) Topology discovery through multicast transmission
JP4299343B2 (ja) 通信システムにおけるパスを用いた情報伝送方法
US20160182252A1 (en) Wireless and Powerline Communication Mesh Network
CN110996266B (zh) 自组网系统的多播组数据传输方法
JP4913208B2 (ja) アドレス解決方法

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2013534492

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

Country of ref document: EP

Kind code of ref document: A1