WO2011121675A1 - データ通信装置および方法 - Google Patents

データ通信装置および方法 Download PDF

Info

Publication number
WO2011121675A1
WO2011121675A1 PCT/JP2010/002401 JP2010002401W WO2011121675A1 WO 2011121675 A1 WO2011121675 A1 WO 2011121675A1 JP 2010002401 W JP2010002401 W JP 2010002401W WO 2011121675 A1 WO2011121675 A1 WO 2011121675A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
node device
data frame
frame
data
Prior art date
Application number
PCT/JP2010/002401
Other languages
English (en)
French (fr)
Inventor
望月敬久
石川瑞直
三輪秀成
由良正和
Original Assignee
富士通株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to PCT/JP2010/002401 priority Critical patent/WO2011121675A1/ja
Priority to JP2012507918A priority patent/JP5500246B2/ja
Publication of WO2011121675A1 publication Critical patent/WO2011121675A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W40/00Communication routing or communication path finding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W84/00Network topologies
    • H04W84/18Self-organising networks, e.g. ad-hoc networks or sensor networks

Definitions

  • the present invention relates to a data communication device capable of route selection in a network including a plurality of data communication devices.
  • a data communication device (hereinafter, sometimes referred to as a node device or simply a node) that performs a plurality of data communications.
  • a transmission source node (GS: Global Source)
  • GD Global Destination
  • an ACK technique for an ad hoc network in which a path between end nodes is constructed by a forward broadcast and a return unicast.
  • a conventional technique for controlling retransmission based on quality of service (QoS) for example, the technique described in Patent Document 1
  • a retransmission control technique for establishing an alternative path that bypasses a failed node for example, Patent Document 1.
  • QoS quality of service
  • Patent Document 1 for example, the technique described in Patent Document 1
  • ACK acknowledgment packet
  • an object of the present invention is to provide a communication device that accurately performs reception confirmation between a GS and a GD while avoiding network congestion between source and destination node devices in an autonomous distributed network such as a wireless ad hoc network. It is to be.
  • a node device including a receiving unit and a communication control unit.
  • the reception means receives first data from a first adjacent node adjacent to the first apparatus in which the first node device is set as a transmission source and the second node device is set as a final destination.
  • the communication control unit transmits the first data to a second adjacent node device adjacent to the own device other than the first adjacent node device.
  • the communication control unit stores first data identification information for identifying the first data in association with node identification information for identifying the first adjacent node device in the storage unit.
  • the communication control unit includes the first data identification information received by the receiving unit, the second node device is set as a transmission source, and the first node device is set as a destination. Based on the second data, information indicating that the first data has been received by the second node device is stored in the storage unit.
  • the communication control unit transfers the second data to the first adjacent node device identified by the node identification information stored in the storage unit in association with the first data identification information. To do.
  • Example 1 of the retransmission control process by this embodiment It is a figure which shows the example of the arrival guarantee transfer recording table 115 which each node of FIG. 1A holds. It is a figure which shows Example 2 of the retransmission control process by this embodiment. It is a figure which shows the example of the arrival guarantee transfer recording table 115 which each node of FIG. 2A holds. It is a figure which shows Example 3 of the retransmission control process by this embodiment. It is a figure which shows the example of the arrival guarantee transfer recording table 115 which each node of FIG. 3A holds. It is a figure which shows the 1st example of a network structure. It is a figure which shows the 2nd example of a network configuration.
  • FIG. 1 It is a functional block diagram which shows the structure of the node apparatus in this embodiment. It is a figure which shows the hardware constitutions of the node apparatus in this embodiment. It is a figure explaining weight learning paying attention to one node apparatus. It is a figure explaining a mode that a path
  • FIG. 7 is a diagram (part 1) illustrating an example of an FID management table 105 in FIG. 6;
  • FIG. 7 illustrates an example of the FID management table 105 in FIG. 6 (part 2);
  • It is a figure which shows the example of the retransmission buffer 117 of FIG.
  • It is a figure which shows the example of the assembly buffer 116 of FIG.
  • It is a flowchart of a frame reception process.
  • It is a flowchart of the hello frame reception process in step S203 of FIG.
  • It is a flowchart of a hello frame transmission process.
  • 10 is a flowchart of an aging process of an adjacent node management table 103.
  • It is a flowchart of the aging process of the weighting table 104.
  • FIG. 10 is a flowchart of an aging process of the FID management table 105.
  • FIG. 20 is a flowchart (No. 1) of data frame reception processing in step S205 of FIG. 19;
  • FIG. 20 is a flowchart (part 2) of the data frame reception process in step S205 of FIG. 20 is a flowchart (No. 3) of the data frame reception process in step S205 of FIG.
  • FIG. 20 is a flowchart (part 4) of the data frame reception process in step S205 of FIG. 19;
  • FIG. FIG. 20 is a flowchart (No. 5) of the data frame reception process in step S205 in FIG. 19;
  • FIG. FIG. 20 is a flowchart (No. 6) of the data frame reception process in step S205 of FIG. 19;
  • FIG. 20 is a flowchart (No. 7) of the data frame reception process in step S205 of FIG. 19;
  • FIG. FIG. 20 is a flowchart (No. 8) of the data frame reception process in step S205 of FIG. 19;
  • FIG. FIG. 20 is a flowchart (No. 9) of the data frame reception process in step S205 in FIG. 19;
  • FIG. FIG. 20 is a flowchart (No. 10) of a data frame reception process in step S205 in FIG. 19;
  • FIG. 20 is a flowchart (No. 11) of the data frame reception process in Step S205 of FIG.
  • FIG. 20 is a flowchart (No. 12) of the data frame reception process in step S205 of FIG. 19;
  • FIG. 12 is a flowchart (part 3) of a transmission process when the node device 100 is GS and transmits a data frame. It is a flowchart of the aging process of the retransmission buffer 117. 5 is a flowchart of an aging process of an assembly buffer 116.
  • FIG. 29 is a flowchart of a process performed by the node device 100 that can be a GS instead of the process of FIG. 28 as part of the data frame reception process.
  • FIG. 10 is a diagram illustrating route selection in FIG. 9 in the form of a search tree representing a search space for searching for a route.
  • FIG. 10 is a timing chart showing recognition of adjacent nodes by transmission / reception of a hello frame and route selection in FIG. 9.
  • FIGS. 1A to 3B data including a request for guaranteeing arrival of data from GS to GD is transferred from GD to GS, and this global arrival ACK is returned from GD to GS. Or, the operation of the arrival ACK indicating that it has been retransmitted will be described.
  • FIGS. 4 and 5 an example of the network configuration will be described with reference to FIGS. 4 and 5, and this embodiment will be described with reference to FIGS.
  • effects of the present embodiment will be described with reference to FIGS. 41A to 41D.
  • ACK control different from local ACK between adjacent nodes is required. That is, when a global ACK across nodes is notified from the GD to the GS, and the global ACK has not yet reached, retransmission processing by the GS is essential.
  • arrival guarantee ACK such global ACK is referred to as arrival guarantee ACK.
  • TCP Transfer Control Protocol
  • IP Internet Protocol
  • the following relay device is realized. That is, when the relay device determines that the data packet retransmitted from the transmission side device has been received by the reception confirmation packet (ACK) from the destination side, the data packet is discarded. As a result, even if the transmission side apparatus retransmits the corresponding TCP / IP data due to the disappearance of the ACK in the middle of the route, the TCP / IP data is transmitted to the destination side from the relay apparatus that has successfully received the ACK. Can be controlled not to be retransmitted.
  • ACK reception confirmation packet
  • the retransmission control by TCP is premised on establishing a session between the transmission source and destination node devices prior to the start of communication.
  • the wireless ad hoc network is characterized in that data transmitted from the GS can be transferred to the GD while dynamically selecting a route according to the wireless quality at a plurality of nodes.
  • Various data can be stored and transmitted in the payload of the data frame flowing through the ad hoc network.
  • the payload of an ad hoc data frame can store an Ethernet frame, an IP packet, a higher layer PDU (Protocol Data Unit), data directly handled by an application, or the like.
  • PDU Protocol Data Unit
  • FIG. 1A is a diagram illustrating a first example of retransmission control processing according to the present embodiment.
  • FIG. 1B is a diagram showing an example of arrival guarantee transfer record tables 115A, 115B, and 115C held by the nodes A, B, and C in FIG. 1A.
  • nodes are communication node devices (hereinafter simply referred to as “nodes”) that constitute a wireless ad hoc network.
  • Example 1 in FIG. 1A shows an example in which a data frame that is guaranteed to reach the node C, which is a GD, is transferred from the node A, which is a GS, via the node B, which is a relay node. Yes.
  • the nodes constituting the wireless ad hoc network are not limited to A, B, and C.
  • the transfer of the data frame from the GS (node A) to the GD (node C) is not limited to relaying only the node B, and the present embodiment can be applied to relaying more nodes. Can be applied.
  • a data frame that is guaranteed to arrive will be referred to as an “arrival guaranteed data frame”.
  • the arrival guarantee data frame D101 (denoted as “data D101” in the figure) transmitted from the node A at the time T1 is transferred to the node B selected by the node A from among the adjacent nodes, and the node at the time T2 Received at B.
  • node A is designated as GS and node C is designated as GD.
  • the arrival guarantee data frame D101 received at the node B at the time T2 is transferred to the node C selected by the node B from the adjacent nodes, and is received at the node C at the time T3.
  • an adjacent node of a certain target node refers to a node existing in a wireless communication range within one hop number from the target node.
  • the node C that has received the arrival guarantee data frame D101 at time T3 transmits the arrival guarantee ACK frame G101 by designating the node A designated as the GS of D101 as GD and the node A as GS.
  • This arrival guarantee ACK frame G101 is an ACK (acknowledgment) to the arrival guarantee data frame D101. It should be noted that the arrival guarantee ACK frame is different from the local ACK returned to each adjacent node of the transmission source by each node receiving the data frame.
  • the arrival guarantee ACK frame G101 is transferred to the adjacent transmission source node B extracted by the node C from the data D101, and is received by the node B at time T4.
  • the arrival guarantee ACK frame G101 received at the node B at the time T4 is transferred to the node A selected by the node B from among the adjacent nodes, and is received at the node A at the time T5. Thereby, the node A can recognize that the arrival guarantee data frame D101 has reached the node C.
  • the arrival guarantee data frame D102 transmitted by designating node C as GD and node A as GS at time T6 is received and transferred at node B at time T7 and received at node C at time T8.
  • the node C transmits an arrival guarantee ACK frame G102, which is an ACK to the arrival guarantee data frame D102, with the node A that is the transmission source of the data D102 as GD and itself as GS.
  • This arrival guarantee ACK frame G102 is received and transferred by the node B at time T9, and is received by the node A at time T10. Thereby, the node A can recognize that the arrival guarantee data frame D102 has also reached the node C.
  • the arrival guarantee ACK frames G101 and G102 which are ACKs for the arrival guarantee data frames D101 and D102 transmitted from the node A to the node C, are returned to the node A as follows. Such control is performed.
  • the GS that is the transmission source node transmits the arrival guarantee data frame by specifying the arrival guarantee ID.
  • the GS can arbitrarily specify the value of the arrival guarantee ACK as long as it is unique.
  • Each of the nodes A, B, and C holds arrival guarantee transfer record tables 115A, 115B, and 115C, respectively.
  • FIG. 1B is a diagram illustrating an example of the arrival guarantee transfer record tables 115A, 115B, and 115C of FIG. 1A.
  • node A When node A, which is a GS, transmits arrival guarantee data frames D101 and D102 at times T1 and T6, information related to each arrival guarantee data frame is recorded in the arrival guarantee transfer record table 115A. Each entry of these pieces of information is a row where the value of the event time field in the arrival guarantee transfer record table 115A shown in FIG. 1B is T1 and T6.
  • node A receives arrival guarantee ACK frames G101 and G102 for the first time from node B at times T5 and T10, node A records information on each arrival guarantee ACK frame in arrival guarantee transfer record table 115A. Each entry of these pieces of information is a row where the value of the event time field in the arrival guarantee transfer record table 115A shown in FIG. 1B is T5 and T10.
  • the node B When the node B receives the arrival guarantee data frames D101 and D102 for the first time at times T2 and T7, the node B records information on each arrival guarantee data frame in the arrival guarantee transfer record table 115B. Each entry of these pieces of information is a row where the value of the event time field in the arrival guarantee transfer record table 115B shown in FIG. 1B is T2 and T7. Further, when the node B receives the arrival guarantee ACK frames G101 and G102 for the first time from the node C at times T4 and T9, the node B records information on each arrival guarantee ACK frame in the arrival guarantee transfer record table 115B. Each entry of these pieces of information is a row where the value of the event time field in the arrival guarantee transfer record table 115B shown in FIG. 1B is T4 and T9.
  • node C which is a GD
  • Each entry of these pieces of information is a row in which the value of the event time field in the arrival guarantee transfer record table 115B shown in FIG. 1B is T3 and T8.
  • a time value corresponding to the processing trigger of the arrival guarantee data frame or the arrival guarantee ACK frame is recorded in the event time field.
  • each time value T1 to T10 is recorded.
  • the arrival guarantee ID field the arrival guarantee ID stored in the arrival guarantee header in the received or transmitted arrival guarantee data frame or the arrival guarantee ACK frame is recorded.
  • the source GS arbitrarily designates the arrival guarantee ID in the arrival guarantee data frame transmitted by itself so that each node can uniquely identify each arrival guarantee data frame by the GS and the arrival guarantee ID (and the port number). To do. However, the GS gives the same arrival guarantee ID when retransmitting a frame once transmitted.
  • sequential numbers for example, are sequentially assigned as arrival guarantee IDs to the group of groups of frames. .
  • the destination GD gives the arrival guarantee ID set in the received arrival guarantee data frame corresponding to the ACK to the arrival guarantee ACK frame transmitted by itself. This is also because each node can uniquely identify each arrival guarantee ACK frame by GS and arrival guarantee ID (and port number).
  • the port number stored in the arrival guarantee header in the received or transmitted arrival guarantee data frame or the arrival guarantee ACK frame is recorded.
  • the port number is arbitrarily designated by the source GS.
  • the port number can be used by the GS to designate the type of application processing.
  • the GS transmits for example, one large piece of data divided into a plurality of arrival guarantee data frames, the same number is assigned as a port number to the group of frames.
  • the GS that is the node ID of the node that first transmitted the frame, which is stored in the data frame header of the arrival guarantee data frame or the arrival guarantee ACK frame to be transmitted, is stored.
  • the node ID of node A (denoted as “node A” in the figure) is recorded in all entries of all the arrival guarantee transfer record tables 115A to 115C. That is, it is shown that the frame data corresponding to all entries in the arrival guarantee transfer record tables 115A to 115C corresponds to the arrival guarantee data frame transmitted from the node A.
  • the LS (Local Source) field stores the LS, which is the node ID of the adjacent node immediately before transmitting the frame, stored in the ad hoc header of the arrival guarantee data frame or arrival guarantee ACK frame that generated the entry.
  • the node transmits an arrival guarantee data frame or receives a corresponding arrival guarantee ACK frame
  • source or a value indicating it
  • present or a value indicating it
  • node receives or transmits the arrival guarantee ACK frame
  • noone or a value indicating it
  • ACK transmission source (or a value indicating it) is recorded.
  • present (or a value indicating it) is recorded.
  • node receives or transmits the arrival guarantee data frame “none” (or a value indicating it) is recorded.
  • “transmission source” is recorded in the arrival guarantee transfer information fields of all the entries in the arrival guarantee transfer record table 115A held by the node A which is the GS.
  • the following control is realized in FIG. 1A by the example of the arrival guarantee transfer record tables 115A to 115C shown in FIG. 1B.
  • arrival guarantee data frame D101 is transmitted from node A at time T1
  • This frame is transferred to the node B selected by the node A from the adjacent nodes, and is received by the node B at time T2.
  • the arrival guarantee data frame D101 received at the node B at the time T2 is transferred to the node C selected by the node B from among the adjacent nodes, and is received at the node C at the time T3.
  • the node C that has received the arrival guarantee data frame D101 at time T3 transmits the arrival guarantee ACK frame G101 by designating the node A designated as the GS of D101 as GD and the node A as GS.
  • This arrival guarantee ACK frame G101 is transferred to the adjacent transmission source node B extracted by the node C from the data D101, and is received by the node B at time T4.
  • the arrival guarantee ACK frame G101 received at the node B at the time T4 is transferred to the node A selected by the node B from among the adjacent nodes, and is received at the node A at the time T5.
  • the node A can recognize that the arrival guarantee data frame D101 has reached the node C.
  • the processing at times T6 to T10 related to the arrival guarantee data frame D101 and the arrival guarantee ACK frame G102 is the same as described above, and the corresponding entries are generated in the arrival guarantee transfer record tables 115A to 115C, respectively.
  • FIG. 2A is a diagram illustrating a second example of the retransmission control process according to the present embodiment.
  • FIG. 2B is a diagram showing an example of arrival guarantee transfer record tables 115A, 115B, and 115C held by the nodes A, B, and C in FIG. 2A.
  • the meanings of the arrival guarantee transfer record tables 115A to 115C shown in FIG. 2B are the same as those in the case of FIG. 1B.
  • FIG. 2A shows a case where the arrival guarantee data frame D111 transmitted from the node A at the time T11 is received and transferred by the node B at the time T12 and received by the node C at the time T13.
  • the node C returns the arrival guarantee ACK frame G111 corresponding to the arrival guarantee data frame D111 after time T13, but the quality of the radio link from the node C to the node B deteriorates due to fading or the like, and the arrival guarantee ACK frame Assume that G111 has not reached node B. In this case, the node B cannot receive the arrival guarantee ACK frame G111, and the node A cannot receive it. As a result, at node T, a timeout for retransmission occurs at time T14, and node A retransmits the arrival guarantee data frame D111. This retransmission frame is received by the Node B at time T15.
  • the retransmission frame of the arrival guarantee data frame is transferred from the node B to the node C, and is received by the node C at time T16.
  • the node C returns again the arrival guarantee ACK frame G111 corresponding to the retransmission frame D111 after the time T16, but this time the quality of the radio link from the node C to the node B is recovered, and the arrival guarantee ACK frame G111 is changed to the node B Is reached.
  • This retransmitted arrival guarantee ACK frame is received at node A at time T18.
  • FIG. 3A is a diagram illustrating Example 3 of the retransmission control process according to the present embodiment.
  • FIG. 3B is a diagram illustrating an example of the arrival guarantee transfer record tables 115A, 115B, and 115C held by the nodes A, B, and C in FIG. 3A.
  • the meanings of the arrival guarantee transfer record tables 115A to 115C shown in FIG. 3B are the same as those in the case of FIG.
  • FIG. 3A shows a case where the arrival guarantee data frame D121 transmitted from the node A at the time T21 is received and transferred by the node B at the time T22 and received by the node C at the time T23.
  • the node C returns the arrival guarantee ACK frame G121 corresponding to the arrival guarantee data frame D121 after time T23, and the frame is received by the node B at time T24.
  • the node A cannot receive the arrival guarantee ACK frame G121.
  • a timeout for retransmission occurs at time T25, and node A retransmits the arrival guarantee data frame D121.
  • the radio link from node A to node B has not deteriorated, and the above-described retransmission frame is received at node B at time T26.
  • the node B extracts the GS, port number, and arrival guarantee ID from the retransmitted arrival guarantee data frame D121, and searches the arrival guarantee transfer record table 115B of FIG. To do.
  • the node B does not transfer the retransmission frame of the arrival guarantee data frame D121 received at the current time T26 to the node C, but retransmits the arrival guarantee ACK frame G121 to the node A instead.
  • the present embodiment it is possible to realize arrival notification using an arrival guarantee ACK frame from the GD to the GS in a wireless ad hoc network based on multihop.
  • FIG. 4 is a diagram illustrating a first example of a network configuration to which the present embodiment is applied.
  • the network 1 in FIG. 4 is an example of a wireless ad hoc network to which the following embodiment can be applied, and includes a plurality of node devices.
  • node device may be simply referred to as “node”.
  • node ID Identification information unique to the network 1 (hereinafter referred to as “node ID (identification)”) is assigned in advance to each node device in the network 1.
  • the reference symbol “N i ” indicates a node ID.
  • node device N i a node device to which N i is assigned as a node ID.
  • the node device N to N i is a node ID assigned to itself for i
  • the node device N i is also referred to as "own node ID" (FIG. 4, 1 ⁇ i ⁇ 7).
  • the links are represented by solid lines.
  • the topology of the network 1 is as follows. That is, between the node devices N 1 and N 2 , between the node devices N 2 and N 3 , between the node devices N 2 and N 6 , between the node devices N 3 and N 4 , and between the node devices N 3 and N 5 There are links between the node devices N 4 and N 5 , between the node devices N 4 and N 7 , and between the node devices N 6 and N 7 .
  • link refers to a wireless link. Wired links may be mixed.
  • the node devices N i and N j can communicate information directly and wirelessly without being relayed by other node devices N k , “there is a wireless link between the node devices N i and N j. (In FIG. 4, 1 ⁇ i, j, k ⁇ 7).
  • the node devices N i and N j are directly connected by a cable and the node devices N i and N j can communicate information via the cable, the node devices N i and N j There is a wired link between them.
  • the node devices N i and N j are adjacent to each other”.
  • the node device N j is an adjacent node device
  • the node device N i is an adjacent node device
  • a new node device may be added to the network 1 in FIG. 4, or any of the node devices N 1 to N 7 may be removed and disappear from the network 1. Also, links are not fixed and can change dynamically.
  • a new wireless link may be established between the node devices N i and N j due to the influence of weather, shielding, or the like, or the wireless link established so far may be lost. If the node device is movable, the presence or absence of a link may change due to a change in the distance between the node devices.
  • an appropriate route that can be used depends on the situation of the network 1 at the time when data is transmitted. Data is transmitted while being found and selected dynamically.
  • the route selection according to the dynamic topology change is realized in an autonomous and distributed manner without the node devices N 1 to N 7 needing to recognize the topology of the entire network 1 that dynamically changes.
  • a PDU transmitted / received between node devices is hereinafter referred to as a “frame”.
  • Data transmission / reception within the network 1 is performed using a frame.
  • the node device that is the transmission source of the frame is GS as described above, and the node device that is the destination of the frame is GD as described above.
  • the frame is relayed by other node devices, and as a result, the frame it reaches the node device N 7.
  • the frame may be transmitted from the node device N 1 to the node device N 2 , transmitted from the node device N 2 to the node device N 6, and transmitted from the node device N 6 to the node device N 7 .
  • the route is represented by a tuple such as ⁇ N 1 , N 2 , N 6 , N 7 >.
  • the final destination of the frame is the node device N that is GD. 7
  • direct destination of the frame is the node device N 2 adjacent to the node device N 1.
  • the node device that is the transmission source of the frame is referred to as “LS (Local Source)”
  • the node device that is the destination of the frame is referred to as “LD (Local). Destination) ”.
  • the LS and LD when the frame is relayed from the node device N 1 to the node device N 7 via the node devices N 2 and N 6 are as follows.
  • LS is a node device N 1
  • LD is the node device N 2.
  • LS is a node device N 2
  • LD is the node device N 6.
  • the frame is transmitted to the node device N 7, which is also GD is adjacent to the node device N 6
  • LS is a node device N 6
  • LD is the node device N 7 .
  • one or a plurality of node devices in the network 1 may be connected to a network device (not shown) belonging to a network different from the network 1 (hereinafter referred to as “external network”).
  • the gateway device of the external network including a data management server
  • the node device N 7 may be connected by a wired link or a wireless link. Then, the data transmitted in the network 1 with the node device N 7 designated as GD may be transmitted from the node device N 7 to the data management server via the gateway device and managed by the data management server.
  • FIG. 5 is a diagram illustrating a second example of the network configuration.
  • the network 2 in FIG. 5 is also an example of an ad hoc network to which the following embodiment can be applied, and includes a plurality of node devices.
  • the network 2 may be connected to an external network (not shown).
  • the network 2 includes node devices N 101 to N 120 .
  • FIG. 5 is a diagram expressed by paying attention to one node device N 105 among the node devices N 101 to N 120 . That is, the node device N 105 indicated by a thick solid line circle only needs to recognize the existence of the three adjacent node devices N 107 , N 111 , and N 112 that can directly communicate with each other and the node ID. It is not necessary to recognize the topology of the entire network 2. Node device N 105 is far from the network 2 topologies, neither need to be aware of the number of node devices in the network 2, also need to be preliminarily know the node ID of the node device that is not adjacent to the node device N 105 Absent.
  • the portion recognized by the node device N 105 is represented by a solid line, and the portion that the node device N 105 does not need to recognize is represented by a broken line. That is, in FIG. 5, only the following items existing within the range of the hop number 1 as viewed from the node device N 105 are shown by solid lines.
  • Node device N 105 itself.
  • each node device in the network only needs to recognize an adjacent node device like the node device N 105 described above. Therefore, even if the scale of the network increases, “each node device communicates control information to recognize the network topology, and the communication of the control information increases the load on the network, which deteriorates the overall performance of the communication system. It does not fall into the situation.
  • FIG. 6 is a functional block diagram showing the configuration of the node device according to this embodiment. Specifically, each node device in FIG. 1 or FIG. 5 is, for example, the node device 100 shown in FIG.
  • the node device 100 includes a receiving unit 101 that receives a frame and a transmitting unit 102 that transmits a frame.
  • the node device 100 also includes an adjacent node management table 103, a weighting table 104, and an FID (Frame IDentification) management table 105 in order to store various types of information used for frame transmission.
  • FID Fre IDentification
  • the node device 100 further includes a frame branching processing unit 106 that determines the type of frame received by the receiving unit 101.
  • a frame branching processing unit 106 that determines the type of frame received by the receiving unit 101.
  • the node device 100 includes an ACK processing unit 107 that performs processing related to an ACK frame, and a link management unit 108 that performs processing in response to reception of a hello frame. Further, the node device 100 includes a buffer unit 109 and a data frame processing unit 110 in order to perform processing according to reception of the data frame. The node device 100 further includes an upper layer processing unit 111, a hello frame generation unit 112, and an FID generation unit 113.
  • the node device 100 includes an arrival guarantee ACK processing unit 114 that processes transmission and reception of the arrival guarantee data frame and the arrival guarantee ACK frame described above, and the arrival guarantee transfer record table 115 described above. Also, an assembly buffer 116 for assembling the original transmission data from the arrival guarantee data frame divided into a plurality of parts and a retransmission buffer 117 for temporarily holding the arrival guarantee data frame to be retransmitted by the arrival guarantee ACK control are provided. Each part of the node device 100 operates as follows.
  • the receiving unit 101 receives the frame and outputs the received frame to the frame branch processing unit 106. Then, the frame branch processing unit 106 determines the type of frame. When the hello frame is received, the frame branching processing unit 106 outputs the received hello frame to the link management unit 108.
  • the link management unit 108 manages the adjacent node management table 103 and is also involved in the management of the weighting table 104.
  • the hello frame is a type of control frame for communicating control information, and specifically, a frame for the node device 100 to notify the other node devices of its own existence. Therefore, as will be described in detail later with reference to FIG. That is, the adjacent node management table 103 is a table for the node device 100 to store other node devices adjacent to the node device 100.
  • the link management unit 108 Since the network status can change dynamically, in some cases, other node devices that have been recognized as adjacent node devices by the link management unit 108 may become unrecognizable as adjacent node devices. . Therefore, as will be described in detail later with reference to FIG. 22, the link management unit 108 also performs an aging process for deleting, from the adjacent node management table 103, an entry related to a node device that has become unrecognizable as an adjacent node device.
  • the link management unit 108 adds, deletes, or updates the weighting table 104 in accordance with the change of the adjacent node device.
  • the weighting table 104 is a table for managing, for each GD, information for determining which adjacent node device the frame is transmitted to.
  • FIG. 6 shows weighting tables 104-1 to 104-M provided corresponding to each of the M GDs.
  • the “weighting table 104” is a general term for the weighting tables 104-1 to 104-M.
  • M 0.
  • the weighting table 104 manages, for each GD, “which adjacent node device can be selected as the LD by the node device 100 itself in order to finally reach the frame to the GD”. is doing.
  • the weighting table 104 represents, for each GD of a frame, the priority at the time of selecting as an LD for one or more node devices adjacent to the node device 100 as a weight.
  • a certain adjacent node device is “selectable as an LD” means that the transmission possibility of a frame to the adjacent node device is “transmittable”.
  • an adjacent node device is “not selectable as an LD” means that the transmission possibility of a frame to the adjacent node device is “not transmittable”, and the priority of the adjacent node device is It means a predetermined lowest priority corresponding to “transmission impossible”.
  • the link management unit 108 performs the weighting table 104 in accordance with the change in the adjacent node device, as will be described in detail later with reference to FIGS. Add, update, or delete.
  • the frame branching processing unit 106 outputs the received ACK frame to the ACK processing unit 107.
  • the ACK frame is a kind of control frame, and is a frame for notifying the node device 100 of the reception of the data frame from the node device that is the LD of the data frame transmitted by the node device 100.
  • the reception of the ACK frame means that the transmission of the data frame has succeeded, and the time-out without receiving the ACK frame even after a predetermined time has passed means that the transmission of the data frame has failed.
  • the ACK processing unit 107 performs time-out monitoring of ACK frame reception shown in FIG.
  • the buffer unit 109 stores data frames in preparation for transmission failure and retransmission of data frames. Therefore, as will be described in detail later with reference to FIG. 32, when the ACK processing unit 107 recognizes the successful transmission of the data frame triggered by the reception of the ACK frame, the ACK processing unit 107 deletes the unnecessary data frame from the buffer unit 109. Further, the ACK processing unit 107 notifies the data frame processing unit 110 of success or failure of transmission of the data frame.
  • the frame branching processing unit 106 stores the received data frame in the buffer unit 109 and requests the data frame processing unit 110 to perform the processes of FIGS. 25 to 29H described later. To do.
  • the data frame is a frame including, as a payload, data that the node device that is the GS intends to transmit to the node device that is the GD.
  • a PDU of a protocol defined in a layer higher than a layer in which the frame in the present embodiment is defined is included in the data frame as a payload.
  • the upper layer processing unit 111 processes an upper layer PDU included as a payload in the data frame.
  • An outline of the operation of the data frame processing unit 110 that has received a data frame processing request from the frame branching processing unit 106 is as follows.
  • the data frame processing unit 110 requests the transmission unit 102 to transmit an ACK frame for the data frame received by the reception unit 101. Further, the data frame processing unit 110 determines whether or not the GD value of the received data frame is equal to the own node ID of the node device 100. If the GD value of the received data frame is different from the own node ID of the node device 100, the data frame processing unit 110 refers to the FID management table 105, so that the current reception is (A1) and ( It is determined which of A2) is applicable.
  • a new data frame other than (A1) is received by the receiving unit 101. If the data frame processing unit 110 determines that the current reception corresponds to (A2), the data frame processing unit 110 refers to the weighting table 104, selects an adjacent node device designated as an LD to transfer the received data frame, Is requested to the transmission unit 102.
  • the data frame processing unit 110 when determining that the current reception corresponds to (A1), the data frame processing unit 110 recognizes that the adjacent node device selected as the LD in the past is not an appropriate LD, and stores the recognition result in the weighting table 104. To reflect. Then, the data frame processing unit 110 refers to the weighting table 104 to determine whether or not there are other adjacent node devices that can be selected as the LD.
  • the data frame processing unit 110 also receives a notification of data frame transmission success or transmission failure from the ACK processing unit 107 and recognizes whether or not the adjacent node device selected as the LD of the data frame is appropriate. The result is reflected in the weighting table 104.
  • the node device Ni being “selectable as an LD” means “not (B1) below or (B2) below”. Note that the more detailed meaning of the word “selectable” is clear from the description regarding FIG. 8 described later and the descriptions (F1) to (F2) and (G1) to (G4) regarding FIG.
  • This receiver 101 is a data frame received once LS when the receiver 101 is received for the first time (hereinafter referred to as "Original Local Source” abbreviated as "OLS”) was the node device N i .
  • the data frame processing unit 110 selects the selectable adjacent node device as the LD, and requests the transmission unit 102 to transfer the data frame. . Conversely, if there are no more adjacent node devices that can be selected as the LD, the data frame processing unit 110 operates as in (C1) or (C2) below.
  • the data frame processing unit 110 selects the OLS as the LD to return the data frame to the OLS, and transfers the data frame to the transmission unit 102.
  • This operation is an operation for causing an adjacent node device that is an OLS to recognize that “selecting the node device 100 as an LD is inappropriate”, and corresponds to backtracking in a route search as described later.
  • the data frame processing unit 110 needs to distinguish between (A1) and (A2). Therefore, in the present embodiment, frame identification information that can uniquely identify a data frame is included in each data frame, and the FID management table 105 stores the frame identification information.
  • the frame identification information in this embodiment is specifically a combination of the node ID of the node device, which is the GS of the data frame, and the FID.
  • the FID is identification information that uniquely identifies each of a plurality of frames transmitted as a GS by a certain node device, and may be a sequence number of a predetermined number of bits or a time stamp, for example.
  • the frame identification information is not a FID alone, but a combination of the node ID of the node device, which is the GS of the data frame, and the FID.
  • the node ID is information for uniquely identifying the node device in the network as described above. Therefore, even if a plurality of different node devices accidentally generate the same FID, frames transmitted by different node devices as GS each have different frame identification information and can be distinguished.
  • the frame identification information is not rewritten by the node device that relays the data frame even if the data frame is transferred through the network via one or more node devices, and therefore does not change.
  • the data frame processing unit 110 records the frame identification information of the data frame requested to be transmitted to the transmission unit 102 in the FID management table 105, and when the data frame later returns to the node device 100 itself (A1) It can be recognized that it falls under.
  • the node device 100 performs other processing not triggered by reception of the frame. Specifically, the hello frame generation unit 112 periodically generates a hello frame using the FID generated by the FID generation unit 113 and outputs the hello frame to the transmission unit 102. Then, since the transmission unit 102 transmits a hello frame, the node device 100 can periodically notify the surroundings of the presence of the node device 100 itself.
  • the upper layer processing unit 111 can output the data to be transmitted as a payload in the data frame to the data frame processing unit 110 at an arbitrary timing. Then, the data frame processing unit 110 generates a data frame in response to a request from the higher layer processing unit 111 and instructs the transmission unit 102 to transmit the data frame.
  • the node device 100 can be a GS itself.
  • the arrival guarantee ACK processing unit 114 operates when it is necessary to process an arrival guarantee data frame and an associated arrival guarantee ACK frame among transmission / reception data frames processed by the data frame processing unit 110. That is, the arrival guarantee ACK processing unit 114 is handed over from the data frame processing unit 110 the frame data that requires the arrival guarantee processing among the data frames transmitted and received by the data frame processing unit 110.
  • the arrival guarantee ACK processing unit 114 executes the retransmission control process using the arrival guarantee ACK frame, the outline of which is described with reference to FIGS. 1A to 3B, while accessing the arrival guarantee transfer record table 115.
  • the arrival guarantee ACK processing unit 114 uses the assembly buffer 116 to assemble the original transmission data from the arrival guarantee data frame divided into a plurality of parts. Execute the process.
  • the arrival guarantee ACK processing unit 114 temporarily stores the transmitted arrival guarantee data frame in the retransmission buffer 117. Then, the arrival guarantee ACK processing unit 114 performs processing for retransmitting the arrival guarantee data frame according to the reception status of the arrival guarantee ACK frame.
  • retransmission control by the arrival guarantee ACK that is a global ACK between the GS and the GD is realized.
  • the This retransmission control process is not based on an upper layer process that requires session establishment such as TCP. That is, stable retransmission control between GS and GD is realized in a wireless ad hoc network in which the wireless quality is likely to change no matter what data is stored and transmitted in the payload of the arrival guarantee data frame. It becomes possible. In other words, retransmission control that has been difficult in the past is realized even for data that does not require session establishment.
  • FIG. 7 is a diagram illustrating a hardware configuration of the node device according to the present embodiment.
  • the node device 100 in FIG. 6 may be realized by, for example, various hardware illustrated in FIG.
  • the node device 100 includes an MPU (MicroProcessing Unit) 201 and a timer IC (Integrated Circuit) 203.
  • the node device 100 includes a dynamic random access memory (DRAM) 204, a flash memory 205, and a wireless module 206.
  • DRAM dynamic random access memory
  • the MPU 201 and the timer IC 203 are connected via an I 2 C / PIO (Inter-Integrated Circuit or Parallel Input / Output) bus 208.
  • the DRAM 204, the flash memory 205, and the wireless module 206 are connected to the MPU 201 via a PCI (Peripheral Component Interconnect) bus 209.
  • PCI Peripheral Component Interconnect
  • the MPU 201 loads a program such as firmware stored in a flash memory 205, which is a kind of nonvolatile storage device, into the DRAM 204, and executes various processes while using the DRAM 204 as a working memory.
  • the MPU 201 executes the program so that the frame branch processing unit 106, the ACK processing unit 107, the link management unit 108, the data frame processing unit 110, the upper layer processing unit 111, the hello frame generation unit 112, and the FID generation unit in FIG. 113 and the arrival guarantee ACK processing unit 114.
  • a program such as firmware may be provided by being stored in a computer-readable storage medium and installed in the node device 100.
  • the program may be downloaded from the network via the wireless module 206 and installed in the node device 100.
  • the node device 100 may include a storage device such as a CAM (Content Addressable Memory), an SRAM (Static Random Access Memory), or an SDRAM (Synchronous Dynamic Random Access Memory).
  • CAM Content Addressable Memory
  • SRAM Static Random Access Memory
  • SDRAM Synchronous Dynamic Random Access Memory
  • the flash memory 205 stores not only programs but also information unique to the node device 100 such as the node ID of the node device 100.
  • the node device 100 may include a PHY (Physical layer) chip (not shown) as a circuit that performs physical layer processing in wired connection. Further, the node device 100 may include a PHY chip for connection between the node device 100 and an external network.
  • PHY Physical layer
  • the node device 100 may include a wired LAN port according to the Ethernet (registered trademark) standard, and may be connected to a gateway device of an external network via a cable connected to the wired LAN port.
  • Ethernet registered trademark
  • the MPU 201 can generate an Ethernet frame and output it to the PHY chip via MII / MDIO (Media Independent Interface Management Data Input / Output) (not shown). Then, the PHY chip converts the output from the MPU 201 (that is, a logical signal representing an Ethernet frame) into a signal (that is, an electrical signal or an optical signal) corresponding to the type of the cable, and outputs the signal to the cable. In this way, the node device 100 can transmit data to the external network using the PHY chip.
  • MII / MDIO Media Independent Interface Management Data Input / Output
  • the PHY chip can convert an electric signal or an optical signal input from an external network via a cable and a wired LAN port into a logical signal and output it to the MPU 201 via the MII / MDIO.
  • the node device 100 can receive data from the external network using the PHY chip.
  • the wireless module 206 is hardware that performs physical layer processing in wireless connection.
  • the wireless module 206 includes, for example, an antenna, an ADC (Analog-to-Digital Converter), a DAC (Digital-to-Analog Converter), a modulator, a demodulator, an encoder, a decoder, and the like.
  • ADC Analog-to-Digital Converter
  • DAC Digital-to-Analog Converter
  • the receiving unit 101 and the transmitting unit 102 in FIG. 6 are realized by the wireless module 206 in FIG. That is, in this embodiment, the link in the network is a wireless link.
  • the link in the network is a wireless link.
  • wired links are mixed.
  • Timer IC 203 performs a count-up operation until a set time elapses, and outputs an interrupt signal when the set time elapses.
  • the timer IC 203 may output an interrupt signal for executing the aging processing of the adjacent node management table 103, the weighting table 104, the FID management table 105, the assembly buffer 116, and the retransmission buffer 117 at predetermined intervals. .
  • the hardware configuration of the node device may be different from that of FIG. 7, and other hardware other than the standards and types illustrated in FIG. 7 may be used for the node device.
  • each part of FIG. 6 may be realized by a reconfigurable circuit such as FPGA (Field Programmable Gate Array) or ASIC (Application Specific Integrated Circuit) instead of MPU 201.
  • FPGA Field Programmable Gate Array
  • ASIC Application Specific Integrated Circuit
  • a reference code in which a node ID is added after a reference code of each part in FIGS. 6 and 7 may be used.
  • the adjacent node management table 103 of FIG. 6 included in the node device N 1 may be referred to by a reference numeral “103-N 1 ”.
  • each node device will be described with reference to FIG. 8, and route selection realized as the entire network as a result of the operation of each node device will be described with reference to FIG.
  • FIG. 8 is a diagram for explaining learning of weights by paying attention to one node device.
  • six node devices in the network 3 are extracted as “node ⁇ ” to “node ⁇ ”.
  • nodes ⁇ , ⁇ , ⁇ , ⁇ , and ⁇ are adjacent to the node ⁇ .
  • the following five links are indicated by solid lines. -Link L ⁇ , ⁇ between nodes ⁇ and ⁇ Link L ⁇ , ⁇ between nodes ⁇ and ⁇ Link L ⁇ , ⁇ between nodes ⁇ and ⁇ Link L ⁇ , ⁇ between nodes ⁇ and ⁇ Link L ⁇ , ⁇ between nodes ⁇ and ⁇ Link L ⁇ , ⁇ between nodes ⁇ and ⁇ Link L ⁇ , ⁇ between nodes ⁇ and ⁇
  • the network 3 a schematically represented in the shape of a cloud in FIG. 8 is a part of the network 3.
  • the network 3a includes a link directly connecting the nodes ⁇ and ⁇ , or one of the nodes ⁇ and ⁇ via one or more unillustrated nodes and two or more unillustrated links. Includes routes that indirectly connect each other.
  • the node ⁇ receives a data frame 301 having a node (not shown) in the network 3 (hereinafter referred to as “node ⁇ ” for convenience) as a GD from the node ⁇ via the links L ⁇ and ⁇ . .
  • the node ⁇ has the weighting table 104 of FIG. 6, and among these, the weighting table corresponding to the node ⁇ is referred to by the reference numeral “104-h” for convenience in the description of FIG.
  • each of the weighting tables 104 managed for each GD stores associations between adjacent nodes and weights. Since nodes ⁇ , ⁇ , ⁇ , ⁇ , and ⁇ are adjacent to the node ⁇ , in the weighting table 104-h, the node ⁇ and the weight W ⁇ , the node ⁇ and the weight W ⁇ , the node ⁇ and the weight W ⁇ , The node ⁇ and the weight W ⁇ are associated with the node ⁇ and the weight W ⁇ , respectively.
  • the node ⁇ recognizes that the priority of the node ⁇ associated with the lightest weight W ⁇ is the highest among the adjacent nodes ⁇ , ⁇ , ⁇ , and ⁇ . Therefore, the node ⁇ first selects the node ⁇ from the adjacent nodes ⁇ , ⁇ , ⁇ , and ⁇ as the LD for transferring the data frame 301, and transmits the data frame 301 to the node ⁇ .
  • the node ⁇ learns that “it is inappropriate to select the node ⁇ as an LD when transmitting a data frame having the node ⁇ as a GD”. As a result of learning, the node ⁇ decreases the priority of the node ⁇ . That is, the node ⁇ increases the value of the weight W ⁇ .
  • the node ⁇ selects the node ⁇ as the LD when transmitting the data frame with the node ⁇ as the GD as shown in (D1) or (D2) below. Is inappropriate. "
  • the node ⁇ learns that “it is inappropriate to select the node ⁇ as an LD when transmitting a data frame with the node ⁇ as a GD”, and the weight W ⁇ associated with the node ⁇ selected as the LD. Increase the value of.
  • the weight W ⁇ is not increased to a maximum value at a time in the event of a link failure, but is increased by a predetermined value. In this way, it is possible to prevent the LD from becoming inappropriate due to the occurrence of a single link failure.
  • the node ⁇ sends the data frame 301 back to the node ⁇ by a backtrack operation described later. For example, when the node ⁇ is adjacent only to the node ⁇ , the node ⁇ cannot find a path through which the data frame 301 can be transferred to the node ⁇ . Even when the node ⁇ is adjacent to some nodes other than the node ⁇ , the node ⁇ may not reach the node ⁇ depending on the topology of the network 3.
  • the node ⁇ When the node ⁇ performs the backtracking operation, the node ⁇ recognizes that “the transmission to the node ⁇ has failed” because the node ⁇ itself receives the data frame 301 previously transmitted to the node ⁇ from the node ⁇ . Can do. As a result of recognition, the node ⁇ learns that “it is inappropriate to select the node ⁇ as an LD when transmitting a data frame having the node ⁇ as a GD”, and the weight associated with the node ⁇ selected as the LD. Increase the value of W ⁇ .
  • the node ⁇ when the node ⁇ recognizes a transmission failure by receiving the data frame 301 transmitted in the past by the node ⁇ itself, the node ⁇ specifically has the value of the weight W ⁇ . Set to the maximum value.
  • the node ⁇ recognizes the transmission failure and sets the weight W ⁇ to the maximum value as shown in (D2) in the example of FIG.
  • Expression (2) is established.
  • the node ⁇ selects an adjacent node other than the node ⁇ determined to be inappropriate as the LD, and tries to retransmit the data frame 301.
  • the node ⁇ selects the node ⁇ associated with the lightest weight W ⁇ at the present time as the LD, and transmits the data frame 301 to the node ⁇ .
  • the node ⁇ receives the ACK frame for the data frame 301 from the node ⁇ , and the node ⁇ recognizes the successful transmission.
  • the node ⁇ decreases the value of the weight W ⁇ associated with the node ⁇ selected as the LD.
  • the formula (2) is also established.
  • the data frame 301 reaches the node ⁇ from the node ⁇ via the network 3a.
  • the node ⁇ selects the node ⁇ as the LD.
  • the node ⁇ receives from the node ⁇ the data frame 301 that the node ⁇ itself has transmitted to the node ⁇ in the past, it can be recognized that “the transmission to the node ⁇ has failed due to the presence of the loop”.
  • the node ⁇ learns that “it is inappropriate to select the node ⁇ as LD when transmitting a data frame with the node ⁇ as GD”, and increases the value of the weight W ⁇ .
  • FIG. 8 shows Formula (3) as a new weighting relationship as a result of receiving the same data frame 301 from the node ⁇ and updating the weighting.
  • the node ⁇ selects an adjacent node other than the nodes ⁇ and ⁇ determined to be inappropriate as the LD in order to cause the data frame 301 to reach a node ⁇ (not shown) that is a GD, and tries to retransmit the data frame 301. .
  • the node ⁇ selects the node ⁇ associated with the lightest weight W ⁇ at the present time as the LD, and transmits the data frame 301 to the node ⁇ .
  • the node ⁇ receives the ACK frame for the data frame 301 from the node ⁇ , and the node ⁇ recognizes the successful transmission.
  • the node ⁇ decreases the value of the weight W ⁇ associated with the node ⁇ selected as the LD.
  • equation (3) is also established.
  • the data frame 301 is not returned from the node ⁇ to the node ⁇ by backtracking. Further, it is assumed that the data frame 301 loops in the network 3 and is transmitted from any adjacent node of the node ⁇ to the node ⁇ and is not received by the node ⁇ .
  • the node ⁇ receives the lightest weight W ⁇ when it receives another data frame having the node ⁇ as GD from any of the adjacent nodes ⁇ , ⁇ , ⁇ , and ⁇ as in the data frame 301.
  • the node ⁇ associated with is preferentially selected as the LD.
  • FIG. 9 is a diagram for explaining how routes are selected dynamically and autonomously distributed in the network 1 of FIG. Specifically, FIG. 9 shows a state of route selection in the network 1 when the node device N 1 becomes GS and transmits a data frame in which the node device N 7 is designated as GD.
  • FIG. 9 shows a failure that occurs between the network 1 of FIG. 4 and the node devices N 4 and N 7 .
  • the 12 thick arrows in FIG. 9 indicate that a data frame is transferred from GS (ie, node device N 1 ) to GD (ie, node device N 7 ) while a route is dynamically selected in network 1.
  • weighting table 104-N i of the node device N i to be referred to by reference numeral as for convenience those corresponding to the node device N 7 "104-h i -N i" ( 1 ⁇ i ⁇ 6).
  • the node device N 1 is a GS, select the node device N 2 adjacent to only the node device N 1 as LD, and transmits the data frame to the node device N 2.
  • the node device N 2 in addition to the node device N 1 is an LS of the transmitted data frame at step S101, the node device N 3 and N 6 are adjacent. Of the two adjacent node devices N 3 and N 6 , the node device N 3 is associated with a lighter weight in the weighting table 104 -h 2 -N 2 .
  • the node device N 2 in step S102 select the node device N 3 as LD for transferring the received data frame at step S101, it transmits the data frame to the node device N 3.
  • the node apparatus N 4 and N 5 are adjacent. Of the two adjacent node devices N 4 and N 5 , the node device N 4 is associated with a lighter weight in the weighting table 104 -h 3 -N 3 .
  • the node device N 3 in step S103 select the node device N 4 as a LD for transferring the received data frame at step S102, it transmits the data frame to the node apparatus N 4.
  • the node device N 4 in addition to the node device N 3 is an LS of the transmitted data frame at step S103, the node device N 5 and N 7 are adjacent. Of the two adjacent node devices N 5 and N 7 , the node device N 7 is associated with a lighter weight in the weighting table 104 -h 4 -N 4 .
  • the node device N 4 in step S104 as LD for transferring a data frame received in step S103, select the node device N 7 that is also GD, transmits the data frame to the node device N 7.
  • the node device N 4 in step S104 corresponds to the failed node in the above (D1) to the transmission of the data frame to the node ⁇ in Figure 8 beta. Therefore, the node device N 4 updates the weighting table 104-h 4 -N 4 according to the transmission failure (specifically, the weight associated with the node device N 7 which is the LD in the transmission in step S104). Increase the value).
  • the node device N 4 in step S105 the LD for transferring a data frame received in step S103, still select another adjacent node device N 5 not tried, transmits the data frame to the node device N 5 To do.
  • the node device N 5 is the other node device N 4 is LS of the transmitted data frame at step S105, only the node device N 3 are adjacent. Therefore, the node device N 5 in step S106, select the node device N 3 as LD for transferring the received data frame at step S105, it transmits the data frame to the node device N 3.
  • the node device N 3 in step S106 recognizes that "the node device N 3 itself has received the same data frame that was transmitted in step S103".
  • the node device N 3 in step S106 corresponds to a node ⁇ which has received the data frame has been loops 8 from node zeta. Therefore, the node device N 3 updates the weighting table 104-h 3 -N 3 in the same manner as in FIG. 8 (specifically, the weight associated with the node device N 4 that is the LD of the transmission in step S103). To the maximum value).
  • the node device N 3 determines from among adjacent node devices other than OLS (that is, the node device N 2 that is the LS when the node device N 3 first receives the data frame in step S102). Look for things that you haven't tried as LD yet.
  • the adjacent node devices other than the OLS are the node devices N 4 and N 5 , and the node device N 4 has been selected in step S103.
  • the node device N 3 in step S107 select the node device N 5 unselected as LD, and transmits the data frame to the node device N 5.
  • the node device N 3 in step S107 corresponds to a node ⁇ to transmit data frames and re-select the node epsilon as LD 8 to node epsilon.
  • the node device N 5 in step S107 recognized as a "node apparatus N 5 itself has received the same data frame that was transmitted in step S106".
  • the node device N 5 in step S107 corresponds to the failed node as (D2) to transmit the data frame to the node ⁇ in FIG 8 beta. Therefore, the node device N 5 updates the weighting table 104-h 5 -N 5 in the same manner as in FIG. 8 (specifically, the weight of the weight associated with the node device N3 that is the LD of the transmission in step S106). Set the value to the maximum).
  • the adjacent node device other than the OLS that is, the node device N 4 that is the LS when the node device N 5 first receives the data frame in step S 105) has already failed in transmission. Only node device N 3 found to. Therefore, there is no longer any adjacent node device that can be selected as the LD.
  • Step S108 is a backtracking operation, the node device N 5 by backtracking operation, in the transmission of data frames to a "node device N 7 GD is the node device N 5 previously path from its own dead end (dead end The) can be a tell the node device N 4 that it is "turned.
  • the node device N 4 in step S108 recognizes a "node apparatus N 4 itself has received the same data frame that was transmitted in step S105". That is, the node apparatus N 4 in step S108 corresponds to the failed node as (D2) to transmit the data frame to the node ⁇ in FIG 8 beta. Accordingly, the node device N 4 updates the weighting table 104-h 4 -N 4 in the same manner as in FIG. 8 (specifically, the weight associated with the node device N 5 that is the LD of the transmission in step S105). To the maximum value).
  • the node ⁇ in FIG. 8 still has a node ⁇ or the like that can be selected as the LD even if transmission of the data frame to the node ⁇ fails, but for the node device N 4 in step S108 in FIG.
  • Step S109 is also backtracking operation, in the transmission of data frames to a "node device N 7 and GD is the node device N 4 is a node device N 3, ahead of the path from the node device N 4 itself has become blind alley Can be informed.
  • the node device N 3 in step S109 recognizes that "the node device N 3 itself has received the same data frame that was transmitted in step S107". That is, the node apparatus N 4 in step S109 corresponds to a node ⁇ which has received the data frame has been loops 8 from node zeta. Therefore, the node device N 3 updates the weighting table 104-h 3 -N 3 in the same manner as in FIG. 8 (specifically, the weight associated with the node device N 5 that is the LD of the transmission in step S107). To the maximum value).
  • Step S110 sends back a data frame to the node device N 2 is OLS.
  • Step S110 is also a backtracking operation, and the node device N 3 sends a message “the route ahead from the node device N 3 itself to the node device N 2 to send a data frame with the node device N 7 as GD”. Can be informed.
  • the node device N 2 in step S110 recognizes that "the node device N 2 itself has received the same data frame that was transmitted in step S102".
  • the node device N 2 at step S110 corresponds to the failed node as (D2) to transmit the data frame to the node ⁇ in Figure 8 beta. Therefore, the node device N 2 updates the weighting table 104-h 2 -N 2 in the same manner as in FIG. 8 (specifically, the weight associated with the node device N 3 that is the LD of the transmission in step S102) To the maximum value).
  • the node device N 2 at step S111 as the LD for transferring a data frame, still select another adjacent node device N 6 not try to send the data frame to the node device N 6.
  • the node device N 6 are in the other node device N 2 is LS of the transmitted data frame step S111, only the node device N 7, which is also GD is adjacent. Therefore, the node device N 6 at step S112, select the node device N 7 as LD for transferring the received data frame at step S111, it transmits the data frame to the node device N 7.
  • each node device behaves in an autonomous distributed manner, so that the data frame successfully reaches the GD.
  • the route from the GS to the GD is finally selected as the entire network. This is because each node device sequentially selects node devices that can be selected as LDs, and performs backtracking operations when there are no more node devices that can be selected.
  • the node device N 2 selects the node device N 3 as LD in step S102, it turns out to result unsuitable for in step S110.
  • the operation of steps S103 to S110 succeeds in selecting the route ⁇ N 1 , N 2 , N 6 , N 7 > from the GS to the GD finally as the entire network 1.
  • the route selected in this way is learned and contributes to the efficiency of data frame transfer from the next time.
  • the efficiency of learning will be described in detail as follows.
  • the node device N 2 learns the weighting table 104-h 2 -N 2 and sets the weight associated with the node device N 3 to the maximum value. Therefore, when the node device N 2 receives from the adjacent node device N 1 a new data frame having the node device N 7 as GD, the node device N 6 selects the node device N 6 as an LD from the beginning. That is, as a result of autonomous distributed learning, the entire network 1 efficiently transmits data frames to the GD through the path ⁇ N 1 , N 2 , N 6 , N 7 > without trial and error including backtracking. It becomes possible.
  • the influence of inappropriate LD selection or the influence of a local failure does not reach the entire network 1 and is locally limited. That is, according to the present embodiment, for example, even if a failure occurs in the link between the node devices N 4 and N 7 , a control frame for inquiring an alternative route is flooded to all the node devices in the entire network 1. I do not. Therefore, according to this embodiment, even if a failure or a loop occurs locally, a situation in which a broadcast storm is caused in the entire network 1 does not occur.
  • the node device N 1 does not recognize any failure in the link between the node devices N 4 and N 7 or the loop ⁇ N 3 , N 4 , N 5 , N 3 >. It is clear. This means that the influence of inappropriate LD selection or local failure is limited locally and does not reach the entire network 1.
  • the node device N 7 is associated with a lighter weight than the node device N 3 in the weighting table 104-h 5 -N 5 .
  • it transmits the data frame to the node device N 7 node device N 5 immediately after step S105 selects the node device N 7 as LD.
  • steps S108 to S112 is not performed, and not only the node device N 1 but also the node devices N 2 and N 3 recognize no occurrence of the failure.
  • problems such as link failures and loops affect only a minimal local range depending on where the problem occurs.
  • FIG. 10 is a diagram illustrating an example of a frame.
  • the data frame in the present embodiment includes an ad hoc header 331 including LD and LS fields and a data header 332 including GD, GS, FID, type, and length fields, as in the data frame 302 of FIG. , An arrival guarantee flag, an arrival guarantee ACK flag, a port number, an arrival guarantee ID, a start flag, and an end flag, and an arrival guarantee header 333 including a payload in which an upper layer PDU is stored.
  • the data frame 301 in FIG. 8 has the same format as the data frame 302.
  • the node ID of each node device that is the LD, LS, GD, and GS of the data frame 302 is specified.
  • the FID field of the data frame 302 the FID generated by the node device that is the GS of the data frame 302 and assigned to the data frame 302 is specified.
  • a predetermined constant indicating the type “data frame” is designated. Also, the length of the payload is specified in the length field of the data frame 302.
  • Each field of the arrival guarantee header 333 is used for retransmission control processing between the GS and the GD using the arrival guarantee ACK frame in the present embodiment.
  • the arrival guarantee flag and the arrival guarantee ACK flag are flags for identifying a data frame including a frame for which arrival guarantee is performed, and have the following meanings by a combination of two flag values. Reach guarantee flag value Reach guarantee ACK flag value Frame type 1 0 Reach guarantee data frame 0 1 Reach guarantee ACK frame 1 1 Normal data frame 0 0 Normal data frame
  • the port number is as described above in the description of FIG. 1B. That is, the transmission source GS is arbitrarily designated.
  • the port number can be used by the GS to designate the type of application processing.
  • the GS transmits, for example, one large piece of data divided into a plurality of arrival guarantee data frames, the same number is assigned as a port number to the group of frames.
  • the arrival guarantee ID is also as described above in the description of FIG. 1B. That is, the GS of the transmission source arbitrarily sets the arrival guarantee ID in the arrival guarantee data frame transmitted by itself so that each node can uniquely identify each arrival guarantee data frame by the GS, the arrival guarantee ID, and the port number. specify. However, the GS gives the same arrival guarantee ID when retransmitting a frame once transmitted. On the other hand, as described above, the destination GD assigns the arrival guarantee ID set in the received arrival guarantee data frame corresponding to the ACK to the arrival guarantee ACK frame transmitted by itself. This is also because each node can uniquely identify each arrival guarantee ACK frame by the GS, the arrival guarantee ID, and the port number.
  • the arrival guarantee data frame to be transmitted is a frame that is neither the head nor the end of the series of frames
  • the payload of the data frame 302 is a PDU of a higher layer protocol than the protocol in which the data frame 302 is defined.
  • the frame of this embodiment may be defined in a lower sublayer of the two virtual sublayers, that is, a PDU of another protocol (such as Ethernet) defined in the MAC sublayer. May be included in the payload.
  • the frame of the present embodiment may be a frame that encapsulates an Ethernet frame defined in the second layer.
  • the upper layer processing unit 111 is a processing unit that processes an Ethernet frame, it can also be realized by using a known MAC chip.
  • the payload of the data frame 302 is a MAC layer protocol frame (specifically, an Ethernet frame, for example).
  • the payload of the data frame 302 may be a PDU of a protocol defined at the network layer (third layer) or higher, or may be raw data that is not related to a specific communication protocol. May be.
  • the payload of the data frame 302 may be an IP (Internet Protocol) datagram.
  • the upper layer processing unit 111 is a processing unit that processes the IP datagram.
  • the format of the data frame 302 is as described above, but more specific examples using specific values are as in the data frames 303 and 304.
  • the data frame 303 is a data frame transmitted from the node device N 2 to the node device N 3 in step S102 of FIG. Specific contents of the data frame 303 are as follows.
  • the node ID (that is, N 3 ) of the node device N 3 selected as the LD in the transmission in step S102 is designated.
  • the node ID (that is, N 2 ) of the node device N 2 that is the LS in the transmission in step S102 is designated.
  • the node ID (that is, N 7 ) of the node device N 7 specified by the node device N 1 that is the GS at the time of transmission in step S101 is specified.
  • the node ID (that is, N 1 ) of the node device N 1 that is the GS is specified.
  • the field node device N 1 is a GS (and less F a) resulting FID is specified.
  • a predetermined constant D indicating the type “data frame” is specified.
  • the length field, the length P a payload of the data frame 302 is designated.
  • the length may be expressed in units of bytes, for example, or may be expressed in other units.
  • the payload includes a MAC layer protocol frame (for example, an Ethernet frame).
  • the node device N 3 that has received the data frame 303 transmits the data frame 304 in FIG. 10 to the node device N 4 in step S 103 in FIG.
  • the specific contents of the data frame 304 are as follows.
  • the node ID (that is, N 4 ) of the node device N 4 selected as the LD in the transmission in step S103 is designated. In other words, when transfer node device N 3 rewrites the LD field.
  • the node ID (that is, N 3 ) of the node device N 3 that is the LS in the transmission in step S103 is specified. That is, when the transfer, the node device N 3 rewrites the LS field, sets the self node ID.
  • the contents of the payload is the same as the data frame 303 is the node device N 3 received.
  • the contents of the arrival guarantee header 333 have a start flag and an end flag value of 1 and all other values are 0.
  • the data frame means a normal data frame.
  • Data frames 305 to 308 are arrival guarantee data frames transmitted from the node A to the node B in FIGS. 1A, 2A, 3A, and the like.
  • the specific contents of this data frame are as follows.
  • the node ID of node B is specified in the LD field.
  • the node ID of the node A that is also GS is specified.
  • the node ID of node C is specified in the GD field.
  • the node ID of the node A that is the GS is specified.
  • the FID field the FID generated by the node A that is the GS is specified.
  • a predetermined constant D indicating the type “data frame” is specified.
  • the length field the length of the payload of the data frames 305 to 308 is specified.
  • the length may be expressed in units of bytes, for example, or may be expressed in other units.
  • a value 1 is specified in the arrival guarantee flag field, and a value 0 is specified in the arrival guarantee ACK flag field, whereby an arrival guarantee data frame is specified.
  • a number determined by the GS is specified in the port number field.
  • the arrival guarantee ID field the value of the arrival guarantee ID generated by the GS is specified.
  • the start flag field and the end flag field values corresponding to the division positions (head, end, etc.) of transmission data stored in the data frame are designated.
  • the payload includes a MAC layer protocol frame (for example, an Ethernet frame).
  • the data frame 309 is an arrival guarantee ACK frame transmitted from the node C to the node B in FIG. 1A, FIG. 2A, FIG.
  • the specific contents of this data frame are as follows.
  • the node ID of node B is specified in the LD field.
  • the node ID of node C that is also GS is specified.
  • the node ID of node A is specified.
  • the node ID of the node C that is the GS is specified.
  • the FID field the FID generated by the node C that is a GS is specified.
  • a predetermined constant D indicating the type “data frame” is specified.
  • the length field the length of the payload of the data frame 309 is specified, but since the arrival guarantee ACK frame has no payload, the length is zero.
  • a value 0 is specified in the arrival guarantee flag field, and a value 1 is specified in the arrival guarantee ACK flag field, thereby specifying the arrival guarantee ACK frame.
  • a number determined by the GS is specified in the port number field.
  • the value of the arrival guarantee ID generated by the GS is specified.
  • the start flag field and the end flag field values corresponding to the division positions (head, end, etc.) of transmission data stored in the data frame are designated.
  • the hello frame in the present embodiment has a header including LD, LS, GD, GS, FID, and type fields as in the hello frame 311 in FIG. 10, but does not have a payload.
  • Specific examples of the hello frame 311 is hello frame 312, the hello frame 312 is transmitted by the node device N 3 in step S1203 of FIG. 31 described later.
  • a special value indicating a broadcast to all node devices adjacent to the node device that transmits the hello frame 311 is designated. Note that “broadcast” here is “broadcast to all adjacent node devices”, not “flooding to the entire network 1”.
  • the node ID is represented by 3 bytes, and “0x” represents a hexadecimal number. Also, it is assumed that 0x000000 and 0xFFFFFF are reserved and are not used as normal node IDs.
  • 0xFFFFFF is specified as a special value indicating broadcast to all the node devices adjacent to the node device that transmits the hello frame in the LD field as in the hello frame 312. Yes.
  • N 3 that is the node ID of the node device N 3 is specified in the LS field of the hello frame 312 transmitted by the node device N 3 .
  • a special value 0x000000 representing null is specified in the GD field. This is because the hello frame is only used by the adjacent node device and is not transferred.
  • the node ID of the node device itself that transmits the hello frame 311 is specified as in the LS field. Accordingly, N 3 that is the node ID of the node device N 3 is specified in the GS field of the hello frame 312.
  • the FID generated by the node device that transmits the hello frame 311 and assigned to the hello frame 311 is specified.
  • the FID (hereinafter referred to as F b ) generated by the node device N 3 that transmits the hello frame 312 and assigned to the hello frame 312 is designated.
  • a predetermined constant indicating the type “hello frame” is designated.
  • the ACK frame in the present embodiment has a header including LD, LS, GD, GS, FID, and type fields as in the ACK frame 321 in FIG. 10, but does not have a payload.
  • a specific example of the ACK frame 321 is the ACK frame 322.
  • ACK frame 322 when the node device N 2 has transmitted the data frame 303 to the node device N 3 in step S102 in FIG. 9, an ACK frame is the node device N 3 returns to the node device N 2.
  • the reply of the ACK frame 322 from the node device N 3 to the node device N 2 expressed as the step S102a.
  • the node ID of the adjacent node device that transmitted the data frame that triggered the transmission of the ACK frame 321 is specified. Therefore, for example, in the LD field of the ACK frame 322, N that is the node ID of the adjacent node device N 2 of the node device N 3 that transmitted the data frame 303 that triggered the transmission of the ACK frame 322 by the node device N 3 2 is specified.
  • N 3 that is the node ID of the node device N 3 is specified in the LS field of the ACK frame 322 transmitted by the node device N 3 .
  • a special value 0x000000 representing null is specified in the GD field in all ACK frames in the present embodiment.
  • the values of the GS field and FID field of the data frame that triggered the transmission of the ACK frame 321 are copied.
  • the data frame is uniquely identified in the network by the combination of the values of the GS field and the FID field. Therefore, the node device that transmits the ACK frame 321 can identify which data frame the ACK frame 321 is for in the node device that has received the ACK frame 321 by copying the value from the received data frame. It becomes possible.
  • the ACK frame 322 for example, transmits the received data frame 303 as a trigger, the value of GS field and the FID field, as well as the data frame 303, respectively N 1 and F a.
  • a predetermined constant indicating the type “ACK frame” is designated.
  • the frame may further include a trailer such as FCS (Frame (Check Sequence).
  • FCS Full Sequence
  • FIG. 11 is a diagram illustrating an example of data stored in the buffer unit 109 of FIG.
  • the buffer unit 109 includes a plurality of entries respectively corresponding to individual data frames received by the receiving unit 101. Each entry includes a timeout time and the received data frame.
  • FIG. 11 illustrates an entry in the buffer unit 109-N 3 of the node device N 3 .
  • the buffer unit 109-N 3 stores the timeout time TI 3, j and the data frame. Entry 303 is created. Details of creation of entries in the buffer unit 109 will be described later with reference to FIG. The meaning of the timeout time TI 3, j is as follows.
  • Node device N 3 is the header of the data frame 303 received in step S102, rewritten as data frame 304 in FIG. 10 in step S103.
  • the node device N 3 transmits a data frame 304 at step S103.
  • the data frame also includes the arrival guarantee header 333 shown in FIG.
  • the timeout time TI 3, j in FIG. 11 indicates how long the node apparatus N 3 waits for the reception of the ACK frame for the data frame 304 after transmitting the data frame 304. That is, if the node device N 3 cannot receive an ACK frame for the data frame 304 from the node device N 4 before the timeout time TI 3, j , the node device N 3 times out and the data frame 304 to the node device N 4 Judge that transmission failed.
  • the timeout time set in the buffer unit 109 may be overwritten.
  • the node device N 4 that failed to transmit the data frame to the node device N 7 in step S104 in FIG. 9 stores the data in the buffer unit 109-N 4 corresponding to the data frame received from the node device N 3 in step S105.
  • Update the timeout time Timeout timing of the updated, specifically, indicating whether the reception of the ACK frame to data frame sent to the node device N 5 in step S105 forever node device N 4 waits.
  • FIG. 12 is a diagram showing an example of the adjacent node management table 103 in FIG.
  • the adjacent node management table 103 has a node ID field and a last update time field.
  • node devices N 1 , N 3 , and N 6 are adjacent to the node device N 2 . Therefore, the node adjacent node management table 103-N 2 of the apparatus N 2, these three adjacent node device N 1, N 3, and N 6 has three entries respectively corresponding to.
  • N i 1, 3, 6
  • N i 1, 3, 6
  • last update time field Stores the time TA 2, i when the entry was last updated.
  • FIG. 13 is a diagram illustrating an example of the weighting table 104 in FIG.
  • FIG. 13 shows a weighting table 104-N 3 of the node device N 3 of FIG. 4 as a specific example.
  • “weighting table 104” is a general term for a plurality of weighting tables 104-1 to 104-M managed for each GD.
  • Each weighting table 104-i (1 ⁇ i ⁇ M) stores a corresponding GD.
  • Each weighting table 104-i (1 ⁇ i ⁇ M) has one or more entries, and each entry has a last update time field, an LD field, and a weight field.
  • the last update time field stores the time when the entry was last updated for weight learning
  • the LD field stores the node ID of the adjacent node device
  • the weight field associates with the adjacent node device. Stored weight values.
  • the first weighting table 104-1-N 3 is a table for transmitting a data frame in which the node device N 7 is designated as GD. Therefore, the node ID of the node device N 7 is GD. stores certain N 7.
  • the weighting table 104-1 -N 3 has three entries respectively corresponding to these three adjacent node devices N 2 , N 4 and N 5 .
  • the last update time field the last update time TW 3, 7, i of the entry is stored.
  • N i that is the node ID of the adjacent node device N i is stored.
  • the second sheet of the weighting table 104-2-N3 since the node device N 4 is a table for transmission of the data frame designated as GD, node of the node device N 4 as GD N 4 which is an ID is stored.
  • the weighting table 104-2 -N 3 is also connected to these three adjacent node devices N 3. It has three entries, each corresponding to 2 , N 4 , and N 5 .
  • the last update time field the last update time TW 3, 4, i of the entry is stored.
  • N i that is the node ID of the adjacent node device N i is stored.
  • the weighting table 104-N 3 may include a weighting table 104-jN 3 (j> 2) associated with another GD.
  • the weighting table 104 is the same GD, even if a data frame having a different combination of FID and GS is transmitted, the weight of the LD serving as the transmission destination is updated each time transmission is performed. For example, when a certain data frame is transmitted, even if the weight of a specific LD is increased due to a link failure (even if the priority is low), the link is immediately transmitted with another data frame (GD and LD are the same). If the failure is resolved and transmission is successful, the weight of the LD becomes small (priority becomes high).
  • FIG. 14 is a diagram for explaining changes in the weighting table 104-1-N 3 in FIG.
  • T a ⁇ T b ⁇ T c ⁇ T d ⁇ T e the weighting table 104-N 3 of the node device N 3 is the weighting table 104-1-N 3 corresponding to the node device N 7 Is not present. Then, it is assumed that a new weighting table 104-1-N 3 having the following contents is created in the weighting table 104-N 3 with the reception of step S102.
  • the node device N 3 uses any of the node devices N 4 and N 5 as the transmission LD in step S103. may be selected, but if, as in the example of FIG. 9, and chose the node device N 4 as LD.
  • the node device N 3 in step S103 transmits the data frame to the node apparatus N 4.
  • the node device N 4 transmits an ACK frame to the node device N 3 as shown in Step S103a in FIG. 31, the node device N 3 recognizes that the transmission of the data frame to the node device N 4 is successful.
  • the node device N 3 decreases the value of the weight W 3,7,4 associated with the node apparatus N 4.
  • the node device N 3 updates the values of W 3, 7 , and 4 from 0.5 to 0.4.
  • the node device N 3 is the last update time field of the entry corresponding to the node device N 4, it sets the current time T b.
  • the node device N 3 receives the same data frame again in step S106.
  • the node device N 3 sets the values of the weights W 3 , 7, and 4 associated with the node device N 4 in the weighting table 104-1-N 3 to 0.4. To the maximum value of 1.0.
  • the node device N 3 is the last update time field of the entry corresponding to the node device N 4, it sets the current time T c.
  • the node device N 3 selects the node device N 5 as an LD and transmits a data frame. Thereafter, when the node device N 5 transmits an ACK frame to the node device N 3 as shown in Step S107a in FIG. 31, the node device N 3 recognizes that the transmission of the data frame to the node device N 5 is successful.
  • the node device N 3 reduces the values of the weights W 3 , 7, and 5 associated with the node device N 5 .
  • the node device N 3 updates the values of W 3, 7 , and 5 from 0.5 to 0.4.
  • the node device N 3 is the last update time field of the entry corresponding to the node device N 5, sets the current time T d.
  • the node device N 3 receives the same data frame again in step S109.
  • the value of the weight W 3,7,5 which is associated with the node device N 5 in the weighting table 104-1-N 3, the maximum value from 0.4 1 Update to .0.
  • the node device N 3 is the last update time field of the entry corresponding to the node device N 5, sets the current time T e.
  • the weighting table 104-1 -N 3 is updated when an ACK frame is received or when a data frame that is the same as a transmitted data frame is received.
  • FIGS. 15 and 16 are diagrams showing examples of the FID management table 105 in FIG. As shown in FIGS. 15 and 16, the FID management table 105 has fields of FID, GS, LD, OLS, and last update time.
  • the FID field and GS field in the FID management table 105 are fields for uniquely identifying the data frame, and values are copied from the FID field and the GS field of the received data frame, respectively.
  • the node ID of the adjacent node device last selected as the LD is stored in order to transmit the data frame identified by the values of the FID field and the GS field.
  • the node ID of the adjacent node device designated in the LS field of the data frame when the data frame identified by the values of the FID field and the GS field is first received. Stored.
  • the OLS field is also used to remove the OLS from the LD candidates when selecting the LD for data frame transfer, and is also used to determine the LD during the backtrack operation.
  • FIGS. 15 and 16 show the FID management table 105 of each node device in steps S101 to S112 of FIG. 9 as a specific example.
  • the times at which steps S101 to S112 are executed are represented as TF 101 to TF 112 , respectively.
  • the node device N 1 When the node device N 1 transmits a data frame to the node device N 2 in step S101, the node device N 1 creates a new entry E 1 in the FID management table 105-N 1 . Then, the node device N 1 sets the FID and GS values of the transmitted data frame in the FID field and GS field of the entry E 1 .
  • the GS and FID values of the data frame are not rewritten even if the data frame is transferred through the network 1 as described above. Therefore, the value of the FID and GS of the data frame to be transmitted through the network 1 in step S101 ⁇ S112 in FIG. 9, like the data frames 303 and 304 in FIG. 10, respectively F a and N 1. Therefore, the node device N 1 in step S101, the FID field and GS field of the entry E 1, sets the value of F a and N 1, respectively.
  • each step S102 ⁇ S112 follows another node device sets the FID field and GS field of the entry of each FID management table 105, which is also a F a and N 1. Therefore, the description regarding the FID field and the GS field is omitted below.
  • the node device N 1 in step S101 the N 2 is a node ID of the node device N 2 selected as LD, it sets the LD field of the entry E 1.
  • the OLS is designated as the LS of the specific data frame when the specific data frame is first received.
  • An adjacent node device identified by a node ID.
  • OLS becomes undefined for transmission data frames. Therefore, the definition of OLS is expanded below. Specifically, it defined as "node when the device N i itself transmits the data frame become GS includes a OLS for the node device N i itself about the data frame is the node device N i itself" To do.
  • the OLS within the scope of a network node apparatus N i itself is aware directly, a node device which is recognized as the origin of the data frame to the node device N i.
  • the "range of a network node apparatus N i itself is aware directly" ranges of 1 or less hops as viewed from the node device N i, the node device N i itself specifically, only the adjacent node device of the node device N i contains. For example, in the example of FIG. 5, only the range of the network that is directly recognized by the node device N 105 itself is indicated by a solid line.
  • value node device N 1 is set to the OLS field of the entry E 1 in step S101, the node device N 1 its own node ID (i.e. N 1). If the node device N 1 receives a data frame having a GS value of N 1 and an FID value of Fa in the future, the node device N 1 will be notified based on the entry E 1 created as described above. N 1 has received a data frame transmitted by itself.
  • the node device N 1 in step S101 sets the current time TF 101 in the last update time field of the entry E 1.
  • the values set by the other node devices in the last update time fields of the entries in the FID management table 105 are the same as the times TF 102 to S112 when the steps S102 to S112 are executed. TF 112 . Therefore, the description regarding the last update time field is also omitted below.
  • the node device N 2 receiving the data frame from the node device N 1 in step S101 adds a new entry E 2 to the FID management table 105-N 2 when transmitting the data frame to the node device N 3 in step S102. create. Then, in the entry E 2 , the node device N 2 sets N 1 in the OLS field and N 3 in the LD field.
  • the node device N 3 that has received the data frame from the node device N 2 in step S102 transmits a new entry E 3 in the FID management table 105-N 3 when transmitting the data frame to the node device N 4 in step S103. Create Then, in the entry E 3 , the node device N 3 sets N 2 in the OLS field and N 4 in the LD field.
  • the node device N 4 receiving the data frame from the node device N 3 in step S103 transmits a new entry E 4 in the FID management table 105-N 4 when transmitting the data frame to the node device N 7 in step S104.
  • the node device N 4 entries E 4 the OLS field is set to N 3
  • the LD field is set to N 7.
  • step S104 the fail due to failure of a link between the node device N 4 and N 7. That is, the node apparatus N 4, it is not possible to receive the ACK frame from the node device N 7, times out. As a result, the node device N 4, as in step S105, and reselects another adjacent node device N 5 as the next LD, transmits the data frame to the node device N 5.
  • the data frames transmitted at steps S104 and S105 the value of the value of FID is F a GS is N 1, the same data frame. Accordingly, the node apparatus N 4 in step S105, instead of creating a new entry, and updates the existing entry E 4.
  • the value is transmitted value F a same data frame node device N 4 is the FID is many times N 1 of GS, the "node apparatus N 4 has received the data frame to the first node apparatus The fact that “from N 3 ” does not change. Therefore, the value of the OLS field of the entry E 4 is not rewritten and remains N 3 .
  • the node device N 5 that has received the data frame from the node device N 4 in step S105 transmits a new entry E 5 in the FID management table 105-N 5 when transmitting the data frame to the node device N 3 in step S106.
  • Create The node device N 5 sets N 4 in the OLS field and N 3 in the LD field in the entry E 5 .
  • the node device N 3 that has received the data frame from the node device N 5 in step S106 searches the FID management table 105-N 3 using the GS and FID values of the received data frame as keys, and sets the entry E 3 locate. Since the entry E 3 is found, the node device N 3 can recognize that “the same data frame that the node device N 3 itself once transmitted in step S103 was received in step S106”.
  • the node device N 3 updates the existing entry E 3 instead of creating a new entry in the FID management table 105-N 3 when transmitting the data frame to the node device N 5 in the next step S107. To do. Specifically, the node device N 3 in step S107, in the entry E 3, overwrites the value of the LD field N 5. The value of the OLS field of the entry E 3 is never rewritten, it remains N 2.
  • the node device N 5 that has received the data frame from the node device N 3 in step S107 searches the FID management table 105-N 5 using the GS and FID values of the received data frame as keys, and sets the entry E 5 locate. Since the entry E 5 is found, the node device N 5 can recognize that “the same data frame that the node device N 5 itself once transmitted in step S106 has been received in step S107”.
  • the node device N 5 updates the existing entry E 5 instead of creating a new entry in the FID management table 105-N 5 when transmitting the data frame to the node device N 4 in the next step S108. To do. Specifically, the node device N 5 in step S108, in the entry E 5, overwrites the value of the LD field N 4. The value of the OLS field of the entry E 5 is never rewritten, it remains N 4.
  • the node device N 4 that has received the data frame from the node device N 5 in step S108 searches the FID management table 105-N 4 using the GS and FID values of the received data frame as keys, and sets the entry E 4 locate. Since the entry E 4 is found, the node device N 4 can recognize that “the same data frame that the node device N 4 itself once transmitted in step S105 has been received in step S108”.
  • the node device N 4 updates the existing entry E 4 instead of creating a new entry in the FID management table 105-N 4 when transmitting the data frame to the node device N 3 in the next step S109. To do. Specifically, the node apparatus N 4 in step S109, in the entry E 4, overwrites the value of the LD field N 3. Note that the value of the OLS field of the entry E 4 is not rewritten and remains N 3 .
  • the node device N 3 that has received the data frame from the node device N 4 in step S109 searches the FID management table 105-N 3 using the GS and FID values of the received data frame as keys, and sets the entry E 3 locate. Since the entry E 3 is found, the node device N 3 can recognize that “the same data frame that the node device N 3 itself once transmitted in step S103 was received in step S109”.
  • the node device N 3 updates the existing entry E 3 instead of creating a new entry in the FID management table 105-N 3 when transmitting the data frame to the node device N 2 in the next step S110. To do. Specifically, the node device N 3 in step S110, the entry E 3, overwrites the value of the LD field N 2. The value of the OLS field of the entry E 3 is never rewritten, it remains N 2.
  • the node device N 2 that has received the data frame from the node device N 3 in step S110 searches the FID management table 105-N 2 using the GS and FID values of the received data frame as keys, and enters the entry E 2 . locate. Since the entry E 2 is found, the node device N 2 can recognize that “the same data frame that the node device N 2 itself once transmitted in step S102 has been received in step S110”.
  • the node device N 2 updates the existing entry E 2 instead of creating a new entry in the FID management table 105-N 2 when transmitting the data frame to the node device N 6 in the next step S111. To do. Specifically, the node device N 2 at step S111, in the entry E 2, overwrites the value of the LD field N 6. Note that the value of the OLS field of the entry E 2 is not rewritten and remains N 1 .
  • the node device N 6 that has received the data frame from the node device N 2 in step S111 adds a new entry E 6 to the FID management table 105-N 6 when transmitting the data frame to the node device N 7 in step S112. create.
  • the node device N 6 sets N 2 in the OLS field and N 7 in the LD field in the entry E 6 .
  • FIG. 17 is a diagram illustrating an example of the retransmission buffer 117 of FIG.
  • the retransmission buffer 117 includes a GD field, a port number field, an arrival guarantee ID field, an arrival guarantee ACK waiting time field, a retransmission count field, and a data frame field.
  • the arrival guarantee ACK processing unit 114 in FIG. 6 temporarily holds the transmitted arrival guarantee data frame in the retransmission buffer 117. Then, the arrival guarantee ACK processing unit 114 performs processing for retransmitting the arrival guarantee data frame according to the reception status of the arrival guarantee ACK frame.
  • the data frame field stores an arrival guarantee data frame that may be retransmitted.
  • Each value in the arrival guarantee data frame stored in the data frame field is copied to the GD field, the port number field, and the arrival guarantee ID field. This value set can uniquely specify the arrival guarantee data frame.
  • predetermined waiting times TR 1 , TR 2 , TR 3 ,... are set for each transmission including retransmission, and are decremented at regular intervals. Then, the retransmission process is executed for the entry whose waiting time becomes zero.
  • the value of the retransmission count field is incremented by +1 for each retransmission, and an entry whose retransmission count exceeds a predetermined value is deleted from the retransmission buffer 117 from which the retransmission has been given up.
  • FIG. 18 is a diagram illustrating an example of the assembly buffer 116 of FIG.
  • the assembly buffer 116 includes a GS field, a port number field, a timer value, an arrival guarantee ID field, a content field, a start flag field, and an end flag field.
  • the arrival guarantee ACK processing unit 114 in FIG. The process for assembling the transmission data is executed.
  • the arrival guarantee ACK processing unit 114 Each time the arrival guarantee ACK processing unit 114 receives an arrival guarantee data frame addressed to the own node, the arrival guarantee ACK processing unit 114 extracts values of GS, port number, arrival guarantee ID, payload, start flag, and end flag from the received frame. Then, on the assembly buffer 116, the data sets including the payload are rearranged and stored from the one having the start flag of 1 to the one having the end flag of 1 in the order of arrival guarantee ID while collecting the data for each GS and port number. At this time, timer values TB 1 , TB 2 ,..., TB 3 ,... Are set for each GS and port number, and are decremented at regular intervals.
  • the transmitted data can be restored.
  • the restored data is read from the assembly buffer 116 by, for example, an application executed by the upper layer processing unit 111 in FIG.
  • the group whose timer value is 0 is deleted from the assembly buffer 116.
  • FIG. 19 is a flowchart of the frame reception process.
  • the frame reception process is started when the node device 100 is turned on.
  • step S201 the receiving unit 101 waits until a frame is received. That is, if the receiving unit 101 has not received a frame, step S201 is repeated.
  • the receiving unit 101 outputs the received frame to the frame branching processing unit 106, and the process proceeds to step S202.
  • step S202 the frame branching processing unit 106 refers to the value of the type field of the frame received by the receiving unit 101 in step S201, and determines the frame type. If the received frame type is a hello frame, the process proceeds to step S203. If the received frame type is a data frame, the process proceeds to step S204. If the received frame type is an ACK frame, the process proceeds to step S206.
  • step S203 the frame branch processing unit 106 outputs the received hello frame to the link management unit 108, and the link management unit 108 performs the hello frame reception process of FIG. Then, the process returns to step S201.
  • the frame branch processing unit 106 outputs a hello frame, it does not wait for the end of the hello frame reception process. The process may move to step S201.
  • step S204 the frame branching processing unit 106 stores the data frame received in step S201 in the buffer unit 109. That is, the frame branching processing unit 106 reserves a new entry area in the buffer unit 109, and stores the data frame received in step S201 in the secured area. Further, the frame branching processing unit 106 extracts and stores the GS and FID values from the data frame for the next step S205.
  • the buffer unit 109 has a timeout time field, but at the time of step S204, the timeout time is not yet set.
  • the frame branch processing unit 106 instructs the data frame processing unit 110 to perform data frame reception processing. When instructed, the frame branching processing unit 106 notifies the data frame processing unit 110 of the GS and FID values of the data frame stored in step S204.
  • the data frame reception processing is as shown in FIGS. 25 to 29A to H.
  • the data frame reception process is as shown in FIGS. 25 to 27 and FIG.
  • the process returns to step S201.
  • the process may proceed to step S201 without waiting for the end of the data frame reception process.
  • step S206 the frame branch processing unit 106 outputs the received ACK frame to the ACK processing unit 107, and the ACK processing unit 107 performs the ACK frame reception process of FIG. Then, the process returns to step S201.
  • the process may proceed to step S201 without waiting for the end of the ACK frame reception process.
  • FIG. 20 is a flowchart of the hello frame reception process in step S203 of FIG.
  • the processing in FIG. 20 is started when a hello frame is output from the frame branch processing unit 106 to the link management unit 108.
  • step S301 the link management unit 108 determines whether an entry having the same value as the LS of the received hello frame as the node ID exists in the adjacent node management table 103 (see FIG. 12). If an entry is found, the process proceeds to step S302. If no entry is found, the process proceeds to step S303.
  • the “received hello frame” in the description of FIG. 20 is the hello frame received by the receiving unit 101 in step S201 of FIG. That is, the “received hello frame” in the description of FIG. 20 is a hello frame output from the frame branching processing unit 106 to the link management unit 108 in step S202 and triggering the start of the processing of FIG.
  • step S302 the link management unit 108 sets the current time as the last update time of the entry found in step S301. Then, the process of FIG. 20 ends.
  • step S302 is executed in the node device N 2, in the adjacent node management table 103-N 2 as shown in FIG. 12, the value of the last update time field corresponding to the node ID of N 1 is TA 2,1 And updated.
  • the node device N 2 can store “at the time TA 2,1 , the node device N 2 can recognize the node device N 1 as an adjacent node device”.
  • step S301 if no entry is found in step S301, it means that a hello frame has been received from a new node device that has not been recognized as an adjacent node device until now. Therefore, in the subsequent steps S303 to S308, processing for registering the new node device as an adjacent node device is performed.
  • step S ⁇ b> 303 the link management unit 108 adds a new entry to the adjacent node management table 103.
  • step S304 the link management unit 108 sets the LS value of the received hello frame and the current time in the new entry added in step S303. For example, when the hello frame 312 of FIG. 10 is received for the first time, the node device N 2 sets N 3 which is the LS value of the hello frame 312 in the node ID field of the new entry, and the last update time field of the new entry Set the current time to.
  • the link management unit 108 includes the weighting table 104-i (1 ⁇ i ⁇ M) that has not been noticed in the weighting tables 104-1 to 104-M (see FIGS. 13 and 14). ) Is determined. If all the weighting tables 104-1 to 104-M have already been focused on, the processing in FIG. 20 ends. If there is a weighting table 104-i that has not yet been focused on, the processing moves to step S306.
  • step S306 the link management unit 108 pays attention to the next weighting table from among the weighting tables 104-1 to 104-M that have not been noticed yet.
  • the weighting table 104-i is noted in step S306.
  • step S307 the link management unit 108 adds a new entry to the weighting table 104-i of interest. Further, in step S308, the link management unit 108 sets the LS value, initial weight value, and current time of the received hello frame in the LD, weight, and last update time fields of the new entry added in step S307. Set each.
  • the initial weight value is a constant arbitrarily determined according to the embodiment.
  • the weight value is 0 or more and 1 or less, and 1 is a special value indicating that the LD cannot be selected. Therefore, the initial weight value is an arbitrary value between 0 and 1 Good. More specifically, the initial weight value may be 0.5, for example.
  • the first entry of the weighting table 104-1-N 3 shown at the top of FIG. 14 may be created as follows (however, in that case, the first entry is the last update time of the entry, the last update time T a of the other two entries are set different values, not exactly the same as FIG. 14).
  • Node device N 7 weighting table 104-1-N 3 associated with a GD already exists. However, the node device N 3 has not recognized the node device N 2 as an adjacent node device until now.
  • the node device N 3 has received a hello frame from the node device N 2 for the first time.
  • the weighting table 104-1-N 3 was noted in step S306.
  • step S308 N 2 that is the LS value of the received hello frame is set in the LD field of the new entry, and 0.5 that is the initial weight value is set in the weight field of the new entry. After execution of step S308, the process returns to step S305.
  • FIG. 21 is a flowchart of the hello frame transmission process. The process of FIG. 21 is executed by the hello frame generation unit 112 in parallel with the process of FIG. Specifically, when the node device 100 is powered on, the hello frame generation unit 112 starts the process of FIG.
  • step S401 the hello frame generation unit 112 determines whether or not the current time is the scheduled transmission time. If the current time is the scheduled transmission time, the process proceeds to step S402. If the current time is not the scheduled transmission time, the process returns to step S401. That is, the hello frame generation unit 112 waits until the scheduled transmission time.
  • the transmission time ⁇ T hello between the reference time T ref and the hello frame may be determined in advance.
  • the hello frame generation unit 112 can refer to the current time T now based on MPU201 clock in FIG. 7, for example.
  • the hello frame generation unit 112 may determine that “the current time is the scheduled transmission time” only when Z in Expression (4) is an integer.
  • Z (T ref ⁇ T now ) / ⁇ T hello (4)
  • the reference time T ref may be a predetermined constant or the time when the node device 100 is turned on.
  • the transmission interval ⁇ T hello can be appropriately determined according to the embodiment, and may be a relatively long time such as 10 seconds, for example.
  • the hello frame generation unit 112 requests the FID generation unit 113 to generate a new FID, and the FID generation unit 113 generates a new FID.
  • the FID may be a sequence number, and the FID generation unit 113 may be realized using a counter circuit.
  • the FID generation unit 113 may be realized by the MPU 201 executing a program.
  • the hello frame generation unit 112 further generates a hello frame using the FID generated by the FID generation unit 113.
  • the hello frame 312 in FIG. 10 is generated as follows. That is, the FID generator 113-N 3 of the node device N 3, and generates a value of F b as a new FID. Then, the hello frame generation unit 112-N 3 of the node device N 3 generates a new hello frame 312.
  • the hello frame generation unit 112-N 3 sets a predetermined value of 0xFFFFFF in the LD, sets N 3 which is its own node ID in the LS and GS, and sets a predetermined value of 0x000000 in the GD. Set the value. Further, the hello frame generation unit 112-N 3, in the hello frame 312, the FID sets the value F b generated by the FID generator 113-N 3, the type sets a predetermined value H.
  • step S403 the hello frame generation unit 112 requests the transmission unit 102 to transmit the generated hello frame, and the transmission unit 102 transmits the hello frame. Send. Then, the process returns to step S401.
  • Each aging process may be started, for example, in response to an interrupt signal from the timer IC 203 in FIG.
  • FIG. 22 is a flowchart of the aging process of the adjacent node management table 103.
  • the timer IC203 outputs an interrupt signal at predetermined intervals I a link management unit 108
  • link management unit 108 the interrupt signal as a trigger may perform processing in FIG. 22 at a predetermined interval I a.
  • step S501 the link management unit 108 pays attention to the first entry in the adjacent node management table 103 (see FIG. 12).
  • the entry in the adjacent node management table 103 focused by the link management unit 108 is referred to as a “target entry”.
  • step S503 If the difference between the current time and the last update time of the target entry is greater than or equal to a predetermined value Ga, the process proceeds to step S503. On the other hand, the current time, the difference between the last update time of the target entry, is less than the predetermined value G a, the process proceeds to step S505.
  • step S503 the link management unit 108 deletes the entry having the same value as the node ID of the entry of interest as the LD from the weighting table 104. For example, interest entry, if a third entry of the adjacent node management table 103-N 3 in FIG. 12, the value of the node ID of the target entry is N 5. Accordingly, in step S503, the link management unit 108 deletes the entry whose LD value is N 5 from each of the weighting tables 104-1-N 3 to 104-MN 3 . For example, in step S503, the third entry of the weighting table 104-1-N 3 and the third entry of the weighting table 104-2-N 3 in FIG. 13 are deleted.
  • step S504 the link management unit 108.
  • the attention entry is deleted from the adjacent node management table 103.
  • the process proceeds to step S505.
  • step S ⁇ b> 505 the link management unit 108 determines whether an entry that has not been noticed still remains in the adjacent node management table 103. If the link management unit 108 finishes paying attention to all entries in the adjacent node management table 103, the processing in FIG. On the other hand, if an entry not yet noticed by the link management unit 108 remains in the adjacent node management table 103, the process proceeds to step S506.
  • step S506 the link management unit 108 pays attention to the next entry among the entries not yet noticed in the adjacent node management table 103. Then, the process returns to step S502.
  • the node device 100 stops receiving the hello frame from the node device that has been recognized as an adjacent node device by the aging process of FIG. 22 described above, “the node device is no longer adjacent to the node device 100. It will be possible to recognize that there is no. That is, the process of FIG. 22 allows the node device 100 to appropriately manage the adjacent node device as a potential LD candidate following the change in the environment.
  • the predetermined interval I a and the predetermined value G a are desirably determined as appropriate according to the embodiment in accordance with the ease of change of the environment.
  • the same hello frame transmission interval ⁇ T hello is set for all the node devices in the network, and the predetermined value G a that is the aging time of the adjacent node management table 103 is G a > ⁇ T hello is satisfied.
  • FIG. 23 is a flowchart of the aging process of the weighting table 104.
  • the timer IC203 outputs an interrupt signal at predetermined intervals I w to the data frame processing unit 110, the data frame processing unit 110 may perform the process in FIG. 23 at a predetermined interval I w interrupt signal as a trigger.
  • step S601 the data frame processing unit 110 pays attention to the first weighting table 104-1 in the weighting table 104 (see FIGS. 13 and 14).
  • the weighting table focused by the data frame processing unit 110 is represented by the reference numeral “104-i” (1 ⁇ i ⁇ M) and is referred to as “target table”.
  • i 1.
  • step S602 the data frame processing unit 110 pays attention to the first entry of the attention table 104-i.
  • an entry that the data frame processing unit 110 pays attention to in the attention table is referred to as a “notice entry”.
  • the data frame processing unit 110 in step S603 the current time, the difference between the last update time of the target entry, it is determined whether more than a predetermined value G w.
  • G w I w , G w ⁇ I w , or G w > I w may be used.
  • the current time, the difference between the last update time of the target entry is less than the predetermined value G w, the process proceeds to step S605.
  • step S604 the data frame processing unit 110 deletes the target entry from the target table 104-i. Then, the process proceeds to step S605.
  • step S605 the data frame processing unit 110 determines whether or not there is an entry that has not been noticed yet in the attention table 104-i. If the data frame processing unit 110 has finished paying attention to all entries in the attention table 104-i, the process proceeds to step S607. On the other hand, if an entry not yet noticed by the data frame processing unit 110 remains in the attention table 104-i, the process proceeds to step S606.
  • step S606 the data frame processing unit 110 pays attention to the next entry among the entries not yet noticed in the attention table 104-i. Then, the process returns to step S603.
  • step S607 the data frame processing unit 110 determines whether there is an entry in the attention table 104-i. As a result of repeating steps S603 to S606, when there are no more entries in the attention table 104-i, the process proceeds to step S608. On the other hand, if one or more entries exist in the attention table 104-i, the process proceeds to step S609.
  • step S608 the data frame processing unit 110 deletes the attention table 104-i in which no entry exists. Then, the process proceeds to step S609.
  • step S609 the data frame processing unit 110 determines whether or not a weighting table that has not been noticed remains in the weighting table 104. If the data frame processing unit 110 finishes paying attention to all the weighting tables 104-1 to 104-M, the processing in FIG. 23 ends. On the other hand, if the weighting table 104-j (1 ⁇ j ⁇ M) not yet noticed by the data frame processing unit 110 remains in the weighting table 104, the process proceeds to step S610.
  • step S610 the data frame processing unit 110 pays attention to the next weighting table 104-j that has not been noticed in the weighting table 104 (that is, selects the weighting table 104-j as the attention table 104-i). Then, the process returns to step S602.
  • the node device 100 does not fall into a situation in which “the effects of past failures are accumulated and any adjacent node device cannot be selected as an LD”.
  • the data frame can be transmitted through the path ⁇ N 1 , N 2 , N 3 , N 4 , N 7 >, for example, by actually recovering from the failure. However, this route will not be selected as a result of autonomous distributed cooperation. However, if the aging process of FIG. 23 is performed, the path ⁇ N 1 , N 2 , N 3 , N 4 , N 7 > can be selected in the situation assumed above.
  • FIG. 24 is a flowchart of the aging process of the FID management table 105.
  • the timer IC203 outputs an interrupt signal at predetermined intervals I f to the data frame processing unit 110, the data frame processing unit 110 may perform the process in FIG. 24 at a predetermined interval I f the interrupt signal as a trigger.
  • step S701 the data frame processing unit 110 pays attention to the first entry in the FID management table 105 (see FIGS. 15 and 16).
  • the entry that the data frame processing unit 110 is paying attention to is referred to as a “target entry”.
  • the data frame processing unit 110 in step S702 the current time, the difference between the last update time of the target entry, it is determined whether more than a predetermined value G f.
  • G f I f , G f ⁇ I f , or G f > I f may be used.
  • the predetermined value G w is the aging time of the weighting table 104
  • a predetermined value G f is the aging time of the FID management table 105
  • G f ⁇ Gw is satisfied.
  • step S703 the current time, the difference between the last update time of the target entry, equal to or greater than a predetermined value G f, the process proceeds to step S703.
  • step S703 the data frame processing unit 110 deletes the entry of interest from the FID management table 105. Then, the process proceeds to step S704.
  • step S ⁇ b> 704 the data frame processing unit 110 determines whether an entry that has not been noticed still remains in the FID management table 105. If the data frame processing unit 110 has finished paying attention to all entries in the FID management table 105, the processing in FIG. 24 ends. On the other hand, if an entry not yet noticed by the data frame processing unit 110 remains in the FID management table 105, the process proceeds to step S705.
  • step S705 the data frame processing unit 110 pays attention to the next entry among the entries not yet noticed in the FID management table 105. Then, the process returns to step S702.
  • the above aging process of FIG. 24 can prevent a situation such as “the number of entries in the FID management table 105 continues to increase and the storage area is exhausted”.
  • the predetermined value G f is determined so as to be equal to or longer than the length of time predicted for the data frame to reach the GD from the GS in the worst case in which backtracking occurs many times. It may be.
  • the “worst case” means a case where the search space is traced in the depth-first search order while backtracking all search nodes that are not trimmed, as will be described later in detail with reference to FIG. In general, larger the network, it is desirable to set larger the predetermined value G f.
  • FIGS. 25 to 29A to H are flowcharts of the data frame reception process in step S205 of FIG.
  • a data frame reception process when the node device 100 is not a GS but is a specialized type of relay will be described with reference to FIGS. 25 to 29A to H.
  • FIG. In the case where the node device 100 is a type that can also be a GS, the part of FIG. 28 is replaced with the process of FIG.
  • the data frame processing unit 110 When instructed to perform the data frame reception processing from the frame branching processing unit 106 in step S205 of FIG. 19, the data frame processing unit 110 starts the processing of FIG. As described above, the instruction from the frame branch processing unit 106 is accompanied by notification of the GS and FID values of the received data frame.
  • step S801 the data frame processing unit 110 determines whether the LD value of the received data frame is its own node ID. If the LD value of the received data frame is not the own node ID, the process proceeds to step S802. If the LD value of the received data frame is the own node ID, the process proceeds to step S803.
  • the “received data frame” is received by the receiving unit 101 in step S201 in FIG. 19 and stored in the buffer unit 109 in step S204, and the trigger for starting the process in FIG. It is the data frame that became.
  • the frame branching processing unit 106 instructs the data frame processing unit 110 to start the data frame reception processing
  • the frame branching processing unit 106 notifies the data frame processing unit 110 of the GS and FID values of the received data frame. Therefore, the data frame processing unit 110 can find an entry including the received data frame by searching the buffer unit 109 using the notified GS and FID values as keys. Therefore, the data frame processing unit 110 can read the value of each field included in the header of the received data frame from the found entry.
  • step S801 the data frame processing unit 110 first reads and stores the value of each field included in the header of the received data frame from the buffer unit 109 as described above. Then, the stored LD value (that is, the LD value of the received data frame) is compared with its own node ID.
  • the own node ID which is the node ID of the node device 100 itself, is recorded in advance in the flash memory 205 of FIG. 7, for example, so that the data frame processing unit 110 can refer to the own node ID.
  • step S802 the data frame processing unit 110 discards the received data frame. That is, the data frame processing unit 110 deletes the entry of the buffer unit 109 found in step S801. Then, the data frame reception process ends.
  • the data frame processing unit 110 determines whether the LD value of the received data frame is equal to the own node ID. If the LD value of the received data frame is equal to the own node ID, the data frame processing unit 110 generates an ACK frame and requests the transmission unit 102 to transmit the ACK frame in step S803. Then, the transmission unit 102 transmits an ACK frame. Note that, unlike the arrival guarantee ACK frame, this ACK frame is transmitted / received locally only between adjacent nodes.
  • the data frame processing unit 110-N 3 of the node device N 3 when the node device N 3 receives the data frame 303 in FIG. 10, the data frame processing unit 110-N 3 of the node device N 3 generates the ACK frame 322 in FIG. 10 in step S803. Then, the transmission unit 102-N 3 transmits the ACK frame 322.
  • the data frame processing unit 110-N 3 sets N 2 which is the LS value of the received data frame 303 to the LD of the ACK frame 322, and sets its own node ID (that is, the node of the node device N 3 itself) ID N 3 ) is set in LS of ACK frame 322. Further, since the ACK frame 322 is irrelevant except for the node device N 2 which is the LS of the corresponding data frame 303, the data frame processing unit 110-N 3 has a special value representing null in the GD of the ACK frame 322. Set 0x000000.
  • the data frame processing unit 110-N 3 receives the ACK frame 322 so that the node device N 2 that has received the ACK frame 322 can recognize that the “ACK frame 322 is an ACK frame for the data frame 303”.
  • Set GS and FID That is, the data frame processing unit 110-N 3 is the GS and FID of the ACK frame 322, respectively, to set the value N 1 and F a of GS and FID data frame 303 received.
  • the data frame processing unit 110-N 3 sets a predetermined value A indicating “ACK frame” as the type of the ACK frame 322.
  • the data frame processing unit 110-N 3 generates the ACK frame 322 as described above, and the transmission unit 102-N 3 transmits the ACK frame 322.
  • step S803a the data frame processing unit 110 extracts the arrival guarantee header 333 (see FIG. 10) of the received data frame.
  • step S803b the data frame processing unit 110 reads the arrival guarantee flag and the arrival guarantee ACK flag from the arrival guarantee header 333.
  • step S803c the data frame processing unit 110 determines whether the value of the (arrival guarantee flag, arrival guarantee ACK flag) pair is (1, 0) or (0, 1).
  • the received data frame is an arrival guarantee data frame when the value set is (1, 0), and is an arrival guarantee ACK frame when (0, 1).
  • the value set is other than, it is a normal data frame. Therefore, when the received data frame is normal, the determination in step S803c is No, and the process proceeds to step S804.
  • the determination in step S803c is Yes, and the process proceeds to step S1301 in FIG. 29A.
  • step S804 the data frame processing unit 110 determines whether or not the GD value of the received data frame is its own node ID. If the GD value of the received data frame is the own node ID, the process proceeds to step S805. On the other hand, if the GD value of the received data frame is different from the own node ID, the process proceeds to step S806 in FIG.
  • step S805 the data frame processing unit 110 passes the payload of the received data frame to the upper layer processing unit 111, and ends the data frame reception process. Specifically, the data frame processing unit 110 extracts the payload from the entry of the buffer unit 109 found in step S801, outputs the payload to the upper layer processing unit 111, and deletes the entry from the buffer unit 109. Then, the data frame reception process ends.
  • the payload of the received data frame is output to the upper layer processing unit 111-N 7 , and the upper layer processing unit 111-N 7 is processed.
  • step S806 in FIG. 26 The processing after step S806 in FIG. 26 is executed when the LD value of the received data frame is equal to the own node ID and the GD value of the received data frame is different from the own node ID.
  • step S806 the data frame processing unit 110 searches the FID management table 105 using the FID and GS values of the received data frame as search keys. As described above, the FID and GS values of the received data frame are notified from the frame branch processing unit 106 at the start of the processing of FIG.
  • step S807 the data frame processing unit 110 determines whether or not the search result entry in step S806 has been hit. If the entry is hit, it means that the same data frame as the data frame that the node device 100 has transmitted before has been received, and therefore the process proceeds to step S808. On the other hand, if the entry is not hit, it means that a data frame that has not been transmitted by the node device 100 has been received, and the process moves to step S810.
  • step S808 the data frame processing unit 110 takes out the LD and OLS values of the entry in the FID management table 105 hit in the search in step S806, and stores them in a storage area such as the DRAM 204 in FIG.
  • step S809 the data frame processing unit 110 refers to a weighting table corresponding to the GD value of the received data frame (hereinafter referred to by the reference numeral “104-i” in the description of FIGS. 26 to 28). Update as follows: That is, the data frame processing unit 110 changes the weight corresponding to the LD extracted in step S808 to the maximum value in the weighting table 104-i. In the present embodiment, the maximum weight value is 1. After changing the weight, the process proceeds to step S817.
  • the last update time in the entry of the FID management table 105 is set when the data frame is transmitted. Further, as described with reference to FIG. 24, the aging time Gf of the FID management table 105 is set to be longer than the time predicted in the worst case, for example. Therefore, when the data frame transmitted in the past by the node device 100 is received by the node device 100 through the network, it is guaranteed that the entry corresponding to the data frame still remains in the FID management table 105. .
  • the weight is updated, and the weight is updated in each entry in the weighting tables 104-1 to 101-M. Sometimes the last update time is also set.
  • (E1) A data frame in which the GD value is N GD , the GS value is N GS , the LD value is N LD , and the FID value is F c is transmitted from the node device 100.
  • the last update time is set in the FID management table 105.
  • the last update time T 103 is set in the entry E 3 in FIG. 15 in step S103.
  • (E3) the value of GS is in N GS
  • the value of FID is the same data frame F c, it is received by the node device 100.
  • the node device N 3 in step S106 in FIG. 9 receives the data frame. Since there is no possibility that the value of GD of the data frame is rewritten when the relay, the value of GD of the data frame received by (E3), of course from the (E1), a N GD.
  • the time point (E3) is before the time point (E5). Therefore, at the time of (E3), the existence of an entry whose LD field value is N LD is guaranteed in the weighting table 104-i corresponding to the node device N GD .
  • time of step S106 is more particularly that at the time when the process of step S809 in the data frame reception processing triggered by the reception in step S106, the node device N 3 executes It is.
  • step S809 the data frame processing unit 110 sets the weight value to the maximum value in the entry whose existence is guaranteed.
  • step S810 the data frame processing unit 110 stores the LS value of the received data frame as an OLS in a storage area such as the DRAM 204 in FIG. .
  • step S811 the data frame processing unit 110 searches the weighting table 104 using the GD value of the received data frame as a search key. Subsequently, in step S812, the data frame processing unit 110 determines whether the table is hit as a result of the search in step S811.
  • step S812a If the weighting table corresponding to the GD value of the received data frame exists in the weighting table 104, the process proceeds to step S812a.
  • the reference sign “104-i” introduced in step S809 indicates a weighting table corresponding to the GD value of the received data frame, and therefore, the table hit as a result of the search in step S811 is also “weighting table 104-”. i ".
  • step S812a the data frame processing unit 110 adjusts the weighting table 104-i hit in the search in step S811.
  • the weighting table adjustment process in step S812a is a process for neutralizing the side effects of the aging process, which will be described later in detail with reference to FIG.
  • step S812a it is guaranteed that entries corresponding to all adjacent node devices managed in the adjacent node management table 103 exist in the weighting table 104-i. Then, the process proceeds to step S817.
  • step S813 the data frame processing unit 110 adds a new weighting table corresponding to the GD value of the received data frame. Note that the table added in step S813 is also the “weighting table 104-i”.
  • step S814 the data frame processing unit 110 sets the GD value of the received data frame as the GD of the weighting table 104-i in the new weighting table 104-i.
  • step S815 the data frame processing unit 110 creates as many new entries as the number of entries in the adjacent node management table 103 in the new weighting table 104-i.
  • step S816 the data frame processing unit 110 sets the node ID, initial weight value, and current time of each entry in the adjacent node management table 103 in each entry created in step S815.
  • a specific example of the above steps S811 to S816 is as follows. For example, when receiving the data frame 303 of FIG. 10 from the node device N 2 at step S102 of FIG. 9, the weighting table 104-N 3 of the node device N 3 are weighting table 104-1-N 3 in FIG. 14 Suppose that it did not exist. Then, the data frame processing unit 110-N 3 of the node device N 3 searches the weighting table 104-N 3 in step S811 using N 7 which is the GD value of the data frame 303 received by the node device N 3 as a search key. Even so, the table does not hit.
  • the data frame processing unit 110-N 3 newly creates the weighting table 104-1-N 3 in step S813, and sets N 7 to the GD of the weighting table 104-1-N 3 in step S814.
  • the data frame processing unit 110-N 3 creates the same number (ie, three) new entries in the weighting table 104-1-N 3 as the adjacent node management table 103-N 3 in FIG.
  • the node ID of each entry of the adjacent node management table 103-N 3 is N 2 , N 4 and N 5 as shown in FIG. Therefore, in step S816, the data frame processing unit 110-N 3 sets N 2 , N 4, and N 5 as LDs in each of the three entries created in step S815. The data frame processing unit 110-N 3 sets an initial weight value of 0.5 in the weight fields of these three entries, and sets the current time in the last update time fields of these three entries. Set.
  • Step S817 is executed after step S809 is executed, after step S816 is executed, or after it is determined in step S812 that the table is hit in the search of step S811. Therefore, when step S817 is executed, the existence of the weighting table 104-i corresponding to the GD value of the received data frame is guaranteed.
  • step S817 the data frame processing unit 110, in the weighting table 104-i corresponding to the GD value of the received data frame, the LD value associated with the minimum weight among the LDs different from the OLS. To get.
  • the data frame processing unit 110 selects, in the weighting table 104-i, the entry having the smallest weight value from the entries having as the LD a value different from the OLS value stored in step S808 or S810. Then, the data frame processing unit 110 stores the LD and weight values of the selected entry in a storage area such as the DRAM 204 in FIG.
  • step S818 in FIG. 27 the data frame processing unit 110 determines whether one of the following two conditions (F1) and (F2) is satisfied.
  • F1 The weight corresponding to the LD value acquired in step S817 (or S829 described later) is the maximum weight value (1.0 in this embodiment).
  • step S830 If the condition (F1) or (F2) is satisfied, there is no longer any adjacent node device that can be selected as an LD, and the process moves to step S830 in FIG. On the other hand, if neither of the conditions (F1) and (F2) is satisfied, there is still an adjacent node device that can be selected as the LD. In other words, there is at least one adjacent node device that does not correspond to any of (G1) to (G4). Then, the node ID of the adjacent node device that can be selected as the LD is acquired in step S817 (or S829 described later).
  • the adjacent node device Since it is determined that the path ahead from the adjacent node device is a dead path or a loop, the adjacent node device is associated with the maximum weight. (G2) Since the results of the failure to transmit data frames addressed to the same GD to the adjacent node device have accumulated in the past, the adjacent node device is associated with the maximum weight.
  • step S818 The adjacent node device is OLS. Therefore, if it is determined in step S818 that neither of the conditions (F1) and (F2) is satisfied, the process proceeds to step S819.
  • the processing after step S819 is processing for attempting to transfer the data frame to the adjacent node device identified by the acquired LD value.
  • step S819 the data frame processing unit 110 creates a new data frame and outputs it to the transmission unit 102 as follows, and the transmission unit 102 transmits the created data frame.
  • the data frame processing unit 110 designates the LD value acquired in step S817 (or S829 described later) as the LD of the new data frame, and designates its own node ID as the LS of the new data frame. .
  • the data frame processing unit 110 copies the values of the GD, GS, FID, type, and length fields and the payload from the received data frame to a new data frame.
  • the “received data frame” is a data frame stored in the entry in the buffer unit 109 found in step S801 as described above.
  • step S821 the data frame processing unit 110 finds that the entry is hit in the search of the FID management table 105 in step S806, or adds a new entry to the FID management table 105 in steps S823 and S824 described later. Check whether the value has been added and set. That is, the data frame processing unit 110 confirms whether or not an entry having GS and FID having values equal to the GS and FID values of the received data frame exists in the FID management table 105.
  • step S806 If the entry is hit in the search in step S806, or if a value is set by adding a new entry to the FID management table 105 in steps S823 and S824, the current data frame reception process has been executed in the past. This is a process triggered by reception of the same data frame as that transmitted by itself. Therefore, the data frame processing unit 110 subsequently executes step S822.
  • the node device 100 receives for the first time. The first transfer of data frames is being attempted. Therefore, the process proceeds to step S823.
  • step S822 the data frame processing unit 110 updates the entry hit in the search in step S806. Specifically, the data frame processing unit 110 sets the LD value of the data frame transmitted in step S819 in the LD field in the entry hit in the search in step S806, and sets the current value in the last update time field. Set the time. Then, the process proceeds to step S825.
  • step S823 the data frame processing unit 110 adds a new entry to the FID management table 105.
  • step S824 the data frame processing unit 110 sets a value for the new entry. Specifically, in the new entry, the data frame processing unit 110 copies the value of the data frame transmitted in step S819 to each field of FID, GS, and LD. In addition, in the new entry, the data frame processing unit 110 sets the current time in the last update time field, and copies the OLS value stored in step S810 in the OLS field. Then, the process proceeds to step S825.
  • step S825 the data frame processing unit 110 waits for notification of the success or failure of transmission in step S819.
  • the thread may sleep in step S825.
  • the notification of “success in transmission” or “transmission failure” is a process for causing a thread.
  • step S819 If the transmission in step S819 is successful, an ACK frame is returned from the adjacent node device designated as the LD in the data frame transmitted in step S819. Then, the ACK processing unit 107 performs the process of FIG. 32 described later, and notifies the data frame processing unit 110 of “successful transmission”.
  • the transmission failure in step S819 means that the node device 100 does not receive an ACK frame from the adjacent node device designated as LD in the data frame transmitted in step S819 even when the time T timeout in Expression (5) is reached. It is not received.
  • the reception of the ACK frame is monitored by the processing of FIG. 33 described later by the ACK processing unit 107. If the ACK frame is not received even when the timeout time T timeout is reached, the ACK processing unit 107 notifies the data frame processing unit 110 that “ Notification of “transmission failure”.
  • step S825 When the data frame processing unit 110 receives a “transmission success” or “transmission failure” notification from the ACK processing unit 107 after waiting in step S825, the process proceeds to step S826.
  • step S826 based on the notification received from the ACK processing unit 107, the data frame processing unit 110 determines whether the transmission in step S819 is successful. If the transmission is successful, the process proceeds to step S827. If the transmission fails, the process proceeds to step S828.
  • step S827 the data frame processing unit 110 decreases the weight corresponding to the pair of GD and LD of the data frame transmitted in step S819 in the weighting table 104.
  • the GD of the data frame is not rewritten by the transfer.
  • the data frame processing unit 110 performs weighting in the weighting table 104-i corresponding to the GD of the received data frame. Update.
  • the data frame processing unit 110 searches the weighting table 104-i for an entry having the LD value acquired in step S817 (or step S829 described later) as an LD, and decreases the weight value of the found entry. Decreasing the weight value means increasing the priority of the corresponding LD.
  • the data frame processing unit 110 may update the weight value of the found entry to, for example, W revised in Expression (6) in step S827.
  • W revised max (W min , W current ⁇ W success ) (6)
  • step S827 the data frame processing unit 110 sets the current time as the last update time in the entry of the weighting table 104-i having the LD value acquired in step S817 (or step S829 described later) as the LD. Then, the data frame reception process ends.
  • step S828 the data frame processing unit 110 increases the weight corresponding to the pair of GD and LD of the data frame transmitted in step S819 in the weighting table 104. That is, in step S828, the data frame processing unit 110 searches the weighting table 104-i for an entry having the LD value acquired in step S817 (or later-described step S829) as an LD, and increases the weight value of the found entry. To do. Increasing the weight value means lowering the priority of the corresponding LD.
  • the data frame processing unit 110 may update the weight value of the found entry to W revised in Expression (7).
  • W revised min (W max , W current + ⁇ W failure ) (7)
  • W max is the maximum weight value
  • W max 1 in this embodiment.
  • step S828 the data frame processing unit 110 stores the LD value acquired in step S817 (or step S829 described later) as “LD failed to transfer” in a work area such as the DRAM 204 in FIG.
  • the data frame processing unit 110 initializes the linear list on the DRAM 204 to be empty in step S817, and holds the LD value acquired in step S817 (or step S829 described later) each time step S828 is executed. May be added to the linear list.
  • other data structures such as an array may be used for storing “LD failed to transfer”.
  • step S828 the data frame processing unit 110 sets the current time as the last update time in the entry of the weighting table 104-i having the LD value acquired in step S817 (or step S829 described later) as the LD. Then, the process proceeds to step S829.
  • step S829 the data frame processing unit 110 searches for other selectable adjacent node devices that have not been tried as LDs so far. Specifically, the data frame processing unit 110, in the weighting table 104-i corresponding to the GD value of the received data frame, is the smallest among the LDs other than the LD that failed to transfer and different from the OLS. The LD value associated with the weight is acquired. Note that the LD that failed to be transferred is stored in a work area such as the DRAM 204 of FIG. 7 in step S828, for example, in the form of a linear list.
  • the data frame processing unit 110 selects the entry with the smallest weight value from the entries having the values (H1) and (H2) as LDs in the weighting table 104-i. Then, the data frame processing unit 110 stores the LD and weight values of the selected entry in a storage area such as the DRAM 204 in FIG. (H1) A value different from the LD value acquired in step S817 or S829 in the past (H2) A value different from the OLS value stored in step S808 or S810
  • the adjacent node device associated with the weight updated to 0.2 in step S828 is not selected as the LD in step S829, and the weight of the weight such as 0.8, which is larger than 0.2 in step S829.
  • An adjacent node device may be selected.
  • steps S817 to S829 are as follows.
  • node devices N 3 , N 5 , and N 7 are adjacent to the node device N 4 in FIG.
  • the value of the OLS of FID management table 105-N 4 entries E4 node device N 4 is N 3.
  • step S817 since the data frame processing unit 110-N 4 of the node device N 4 first acquires the LD value N 7 in step S817, the data frame to the node device N 7 as in step S104. Transmission is performed. However, since the transmission in step S104 fails as shown in FIG. 9, the data frame processing unit 110-N 4 determines “transmission failure” in step S826.
  • step S829 the LD value other than the LD that failed to transfer (ie, N 7 ) and different from the OLS (ie, N 3 ) is only N 5. It is. Therefore, the value N 5 of the LD in step S829 is acquired.
  • step S829 When the LD value is acquired in step S829, the process returns from step S829 to step S818. Therefore, in the above example of the node device N 4, after step S829, it is executed steps S818 ⁇ S826 again. Then, as shown in FIG. 9 as step S105, it is determined that transmission is successful in step S826, step S827 is executed, and the data frame reception process ends.
  • step S828 it will be as follows if the influence of updating a weight like Formula (7), for example with a specific example is demonstrated at step S828.
  • the node device N 106 receives a first data frame designating the node device N 118 as GD from the adjacent node device N 108 at time T rcv1 .
  • the weighting table 104-g 106 -N 106 corresponding to the node device N 118 exists in the node device N 106 at time T rcv1 .
  • the node device weight 0.4 to N 102 is, weight 0.7 to the node device N 103 is the weight 0 to the node device N 107 .1, is assumed that the weight 0.5 is associated with the node apparatus N 108 , respectively.
  • step S817 the node device N 107 associated with the minimum weight 0.1 is selected as the LD.
  • chance for reasons such as shield between the node device N 106 and N 107 are placed, temporarily, the wireless link of the node device N 106 and N 107 Suppose that communication is lost.
  • step S829 the node device N 102 associated with the weight 0.4 is selected as the LD.
  • the transmission of the data frame is successful in step S819, the ACK frame from the node device N 102 is returned.
  • the weight of the node device N 102 in step S827 is updated from 0.4 to 0.3, the data frame reception process ends.
  • the first data frame transmitted from the node device N 106 to the node device N 102 reaches the node device N 118 without backtracking to the node device N 106 . That is, in the weighting table 104-g 106 -N 106 , it is assumed that there is no entry whose weight is updated to 1 with the transfer of the first data frame.
  • the weighting table 104-g 106 -N When the node device N 106 receives a second data frame from the node device N 103 at this time T rcv2 , which similarly designates the node device N 118 as GD, the weighting table 104-g 106 -N.
  • the contents of 106 are as follows. That is, node device N 102 has weight 0.3, node device N 103 has weight 0.7, node device N 107 has weight 0.2, node device N 108 has weight 0.5, Each is associated.
  • step S817 the node device N 107 still associated with the minimum weight is selected as the LD even though the transfer of the first data frame has failed. If the communication quality of the radio link between the node devices N 106 and N 107 is improved at time T rcv2 and the transmission of the second data frame in step S819 is successful, the node device N in step S827. The weight of 107 returns to 0.1 again.
  • the weight of the node device N 107 remains 0.1. Therefore, when the node device N 106 receives a third data frame that similarly designates the node device N 118 as GD from the adjacent node device other than the node device N 107 at the subsequent time T rcv3 , the highest priority is given to the LD. The node device N 107 is still selected.
  • the weighting table 104 does not react excessively to changes in the communication environment. Therefore, while the node device N 106 receives a plurality of data frames designating the same node device as the GD one after another, if the link in which the failure has occurred temporarily recovers from the failure, the environment will be improved. Thus, the past learning result is again utilized for the selection of the LD. In other words, in the above example, the node device N 107 that has been learned in the past when it is appropriate as the LD is again preferentially selected as the LD.
  • the radio link between the node devices N 106 and N 107 has not recovered from the failure at the time T rcv2 .
  • the node device N 107 having a weight of 0.2 is selected as the LD at the time of transmitting the second data frame.
  • the weight of the node device N 107 is 0.3.
  • the node device N 102 associated with the weight 0.3 may be selected as the LD, the transmission may be successful, and the weight may be updated to 0 and 2.
  • the node device N 106 may receive the third data frame from the node device N 103 , the node device N 102 associated with the weight 0.2 is selected as the LD, and transmission is performed. Successful, node device N 102 may have a weight of 0.1. Then, for a while, the node device N 106 may continue to select the node device N 102 as the LD of the data frame designating the node device N 118 as GD.
  • step S829 the LD is reselected.
  • the node device N 107 that has been learned to be suitable as the LD before the time T rcv1 is associated with the weights 0.5 and 0.7 and is relatively unsuitable as the LD. than 108 and N 103, are preferentially selected as LD.
  • the reason is that learning of the weights at the time of transmission of the first and second data frames changes the weights gently as shown in step S828, and the weight of the node device N 107 is still the node device N 108. This is because less than the weight of the or N 103.
  • the weight is again reduced to 0.2 for the node device N 107 .
  • the temporary environment change is not reflected excessively in the weighting table 104, so that past learning results are gradually reflected. Therefore, the probability that an appropriate LD is selected increases.
  • step S828 the weight is slightly adjusted in step S828 so as not to be excessively affected by the temporary failure. Now, it returns to description of the branch of step S818. If it is determined in step S818 that either of the two conditions (F1) and (F2) is satisfied, there is no longer an adjacent node device that can be selected as an LD, and the process proceeds to step S830 in FIG.
  • step S830 the data frame processing unit 110 creates a new data frame as follows and outputs it to the transmission unit 102, and the transmission unit 102 transmits the created data frame.
  • the data frame processing unit 110 designates the OLS value stored in step S808 or S810 in the LD of the new data frame, and designates its own node ID in the LS of the new data frame. In addition, the data frame processing unit 110 copies the values of the GD, GS, FID, type, and length fields and the payload from the received data frame to a new data frame.
  • the “received data frame” is a data frame stored in the entry in the buffer unit 109 found in step S801 as described above.
  • the transmission process performed in step S830 is a backtrack operation.
  • step S830 A specific example of the transmission in step S830 is step S110 in FIG. After the transmission in step S830, the process proceeds to step S831.
  • step S831 the data frame processing unit 110 searches the FID management table 105 using the FID and GS values of the received data frame as search keys.
  • step S832 the data frame processing unit 110 determines whether the entry has been hit as a result of the search in step S831. If the entry is hit, the process proceeds to step S833. If the entry is not hit, the process proceeds to step S834.
  • step S807 If it is determined in step S807 that “an entry has been hit”, the entry found as a result of the search in step S831 is the entry found as a result of the search in step S806. If it is determined in step S807 that “the entry has not been hit” and a new entry is created in step S823, the new entry created in step S823 is found as a result of the search in step S831.
  • step S832 It is determined in step S832 that “the entry did not hit” in the cases (I1) and (I2), in other words, in the cases (J1) and (J2).
  • step S807 it is determined that “the entry has not been hit”.
  • step S818 Immediately after step S818 is executed for the first time, the process proceeds to step S830.
  • J1 A data frame that has never been received by the node device 100 has been received.
  • J2 In the weighting table 104-i corresponding to the GS value of the received data frame, the maximum value weight is associated with all the LDs.
  • step S833 the data frame processing unit 110 updates the entry hit as a result of the search in step S831. Specifically, in the hit entry, the data frame processing unit 110 copies the OLS value of the hit entry itself to the LD, and sets the current time as the last update time. Then, the process proceeds to step S836.
  • step S834 the data frame processing unit 110 adds a new entry to the FID management table 105.
  • step S835 the data frame processing unit 110 sets a value in the new entry added in step S834. Specifically, in the new entry, the data frame processing unit 110 copies the value of the received data frame to the FID and GS, sets the current time as the last update time, and sets the current time as the OLS and LD. The LS value of the received data frame is copied. Then, the process proceeds to step S836.
  • step S836 the data frame processing unit 110 waits for a transmission success / failure notification regarding the data frame transmitted in step S830.
  • the process proceeds to step S837. Since step S836 is similar to step S825, detailed description is omitted.
  • step S837 the data frame processing unit 110 determines whether transmission of the data frame in step S830 is successful. If the transmission fails, the process proceeds to step S838. If the transmission is successful, the process proceeds to step S839.
  • Step S838 is executed in exceptional cases (K1) and (K2).
  • K1 All adjacent node devices other than OLS are (K1-1) or (K1-2).
  • K1-1) Corresponds to the weight of the maximum value.
  • K1-2 When a data frame is transmitted by designating as LD, transmission fails.
  • K2 Transmission of the data frame to the OLS (that is, the backtrack operation) has failed.
  • the data frame processing unit 110 discards the received data frame in step S838. That is, the data frame processing unit 110 deletes the entry found in step S801 from the buffer unit 109. Then, the data frame reception process ends.
  • step S110 in FIG. 9 the node device N 3 which is the transmission performed at step S830.
  • the node device N 2 returns an ACK frame to the node device N 3 in response to the transmission of the data frame from the node device N 3 to the node device N 2 in step S110.
  • Step S830 the data frame transmitted by the node device N 3 in step S110 (that is, step S830) becomes the node device N. Assume that 2 was not reached. Then, since naturally the node device N 3 nor to receive an ACK frame from the node device N 2, the node device N 3 determines a "transmission failed" in step S837, executes Step S838. That is, the data frame to the node device N 1 is transmitted in step S101, before reaching the node device N 7 is a GD, disappear within network 1.
  • the node device N 2 does not recognize that “when the node device N 7 is designated as the GD, it is inappropriate for the node device N 2 to select the node device N 3 as the LD”. That is, as in the example of FIG. 9, the node device N 2 is “when the node device N 7 is designated as GD, it is appropriate for the node device N 2 to select the node device N 6 as LD”. I can't learn.
  • the node device N 2 receives another new data frame in which the node device N 7 is designated as the GD (or when the node device N 2 transmits the data frame as GS).
  • the node device N 2 selects the node device N 3 as the LD.
  • the node device N 2 can not receive the ACK frame, it is determined as "transmission failure" in step S826 of FIG. 27.
  • the node device N 2 at step S828, corresponding to the node device N 2 in the weighting table 104-h 2 -N 2 corresponding to the node device N 7 is a GD (The reference numerals similar to the description of FIG. 9) Increase the weight to be used. Then, the node device N 2 is the next step S829, re-select a node device N 6 as LD.
  • the weighting table 104-h 2 -N 2 at another node device N 2 is OLS relates discarded data frames Learning may be delayed.
  • the node device N 2 can learn an appropriate weight through a series of processes triggered by the reception of the next data frame in which the node device N 7 is set to GD as in the previous data frame. That is, when viewed as an operation of the entire network 1 in which a plurality of data frames are circulated one after another, even if there is a node device whose weight learning is locally delayed due to a data frame transmission failure for backtracking to the OLS, The delay can be quickly recovered.
  • Step S839 is executed when the data frame is successfully transmitted to the OLS.
  • the data frame processing unit 110 decreases the weight corresponding to the combination of GD and LD of the data frame transmitted in step S830 in the weighting table 104.
  • the data frame processing unit 110 updates the weight corresponding to the LD of the transmitted data frame (that is, the OLS stored in step S808 or S810) in the weighting table 104-i corresponding to the GD of the received data frame. To do.
  • step S839 Details of step S839 are the same as step S827, and detailed description thereof is omitted.
  • the data frame processing unit 110 may update the weight using, for example, equation (6). Further, the data frame processing unit 110 sets the current time as the last update time in the entry whose weight is updated in the weighting table 104-i. Then, the data frame reception process ends.
  • step S803c in FIG. 25 the determination in step S803c in FIG. 25 is Yes, and step S1301 in FIG. 29A is executed.
  • the subsequent arrival guarantee related processing is executed by the arrival guarantee ACK processing unit 114 of FIG.
  • the arrival guarantee ACK processing unit 114 extracts the GS, the arrival guarantee ID, and the port number from the data header 332 and the arrival guarantee header 333 (see FIG. 10) of the received data frame.
  • the arrival guarantee ACK processing unit 114 searches the arrival guarantee transfer record table 115 using a combination of GS, arrival guarantee ID, and port number as a key.
  • step S1316 when the content of the arrival guarantee transfer information is “none”, in other words, when a new arrival guarantee frame is received while the arrival guarantee ACK frame is already received at the node, FIG. The process proceeds to step S1316.
  • step S1305 the arrival guarantee ACK processing unit 114 reads the arrival guarantee flag and the arrival guarantee ACK frame of the received data frame.
  • step S1306 the arrival guarantee ACK processing unit 114 determines whether the value of the arrival guarantee flag is 1 or 0, that is, whether the received frame is an arrival guarantee data frame or an arrival guarantee ACK frame.
  • the arrival guarantee ACK processing unit 114 determines whether the GD value of the received arrival guarantee data frame is its own node ID. Determine whether or not.
  • step S1307 If the determination in step S1307 is Yes, the process proceeds to step S1309.
  • This transition state is a state in which the following conditions are satisfied for a combination of GS, arrival guarantee ID, and port number related to the received frame.
  • ⁇ State 1> The arrival guarantee data frame has already been received as GD. -The same arrival guarantee data frame addressed to the own node is newly received.
  • the arrival guarantee ACK processing unit 114 executes a process for transmitting the arrival guarantee ACK frame in step S1310.
  • the arrival guarantee ACK processing unit 114 in the transmitted arrival guarantee ACK frame GD: GS of the received arrival guarantee data frame
  • LD LS of the entry noticed in step S1303 Set. Since state 1 implies that an arrival guarantee ACK frame with its own node ID designated as GS has already been transmitted, the process of step S1310 is an exception process in the event of some unexpected error.
  • the reason why the arrival guarantee ACK processing unit 114 sets the LD field of the arrival guarantee ACK frame as described above in step S1310 as an exception process is to prevent the influence of temporary fluctuation of the route. . That is, the arrival guarantee ACK processing unit 114 intends to transmit an arrival guarantee ACK frame to the path when normal processing is performed, and is not an LS node in reception that triggered the exception processing this time.
  • the LS node of the entry created in the previously performed process (the entry focused in step S1303) is designated in the LD field of the arrival guarantee ACK frame.
  • the processing of S1336, S1351, and S1355 is not an exception processing as in step S1310, but is normal processing when the arrival guarantee data frame whose own node ID is designated as GD is received for the first time. Therefore, in S1336, S1351, and S1355, which will be described later, the LD field of the arrival guarantee ACK frame to be transmitted is not the value of the LS field of the existing entry in the arrival guarantee transfer record table 115 but the LS of the received arrival guarantee data frame. The field value is set.
  • the arrival guarantee ACK processing unit 114 in the transmitted arrival guarantee ACK frame GS: GD of received guarantee data frame -LS: Local node ID Set. Further, an arrival guarantee ID, a port number, a start flag and an end flag are added to the transmitted arrival guarantee ACK frame, and the arrival guarantee ACK frame is transmitted.
  • state 1 the arrival guarantee ACK processing unit 114 discards the received arrival guarantee data frame in step S1311, and ends the data frame reception process.
  • the above state 1 is a state in which the same arrival guarantee data frame addressed to the own node is newly received in the state where the arrival guarantee data frame is already received in the own node which is the GD. Originally, the arrival guarantee ACK frame has already been transmitted at the stage where the arrival guarantee data frame has been received by the own node that is already a GD, and the determination in step S1304 should not be Yes. However, this state 1 may occur due to a timing problem. In this case, only the arrival guarantee ACK frame return process is performed.
  • step S1307 If the determination in step S1307 is No, the process proceeds to step S1308.
  • This transition state is a state in which the following conditions are satisfied for a combination of GS, arrival guarantee ID, and port number related to the received frame.
  • ⁇ State 2> The arrival guarantee data frame has already been received and transferred as a relay node. -The same arrival guarantee data frame is newly received.
  • the arrival guarantee ACK processing unit 114 returns the processing of the received frame to the data frame processing unit 110, and executes the data frame transfer processing after step S806 in FIG.
  • the data frame is further transferred to the GD.
  • the node B transfers the retransmission frame of the arrival guarantee data frame D111 received at the current time T15 to the next node C again.
  • the retransmission frame of the arrival guarantee data frame is transferred from the node B to the node C, and is received by the node C at time T16.
  • step S1306 If it is determined in step S1306 that the value of the arrival guarantee flag is 0, that is, the received frame is an arrival guarantee ACK frame, the process proceeds to step S1312 in FIG. 29B.
  • step S1312 the arrival guarantee ACK processing unit 114 determines whether the GD value of the received arrival guarantee ACK frame is the local node ID. When determination of step S1312 is Yes, it transfers to step S1313a.
  • This transition state is a state in which the following conditions are satisfied for a combination of GS, arrival guarantee ID, and port number related to the received frame.
  • ⁇ State 3> The local node has already transmitted the arrival guarantee data frame as GS. -An arrival guarantee ACK frame addressed to the own node for the frame is received.
  • the arrival guarantee ACK processing unit 114 deletes the entry corresponding to the received arrival guarantee ACK frame from the retransmission buffer 117 of FIG. More specifically, the arrival guarantee ACK processing unit 114 extracts a GD (own node), a port number, and an arrival guarantee ID from the arrival guarantee ACK frame, and uses these value pairs as keys, for example, in the example of FIG. The entry (reach guarantee data frame) in the retransmission buffer 117 is searched and deleted.
  • step S1313b the arrival guarantee ACK processing unit 114 deletes the received arrival guarantee ACK frame.
  • the arrival guarantee ACK processing unit 114 notifies the upper layer processing unit 111 of FIG. 6 that the transmission of the corresponding arrival guarantee data frame has been successful, and ends the data frame reception process. To do.
  • step S1312 If the determination in step S1312 is No, the process proceeds to step S1314.
  • This transition state is a state in which the following conditions are satisfied for a combination of GS, arrival guarantee ID, and port number related to the received frame.
  • ⁇ State 4> The local node has already received and transferred the arrival guarantee data frame as a relay node. An arrival guarantee ACK frame addressed to another node for the frame has been received.
  • the arrival guarantee ACK processing unit 114 executes transfer (transmission) processing of the received arrival guarantee ACK frame in step S1315.
  • the arrival guarantee ACK processing unit 114 in the transferred arrival guarantee ACK frame, LD: LS of the entry noticed in step S1303 -LS: Local node ID Then, the data frame is transferred to the next node, and the data frame reception process is terminated.
  • step S1315 the reason why the arrival guarantee ACK processing unit 114 sets the LD field of the arrival guarantee ACK frame as described above in step S1315 is as follows. That is, it is presumed that the entry noticed in step S1303 was created when the arrival guarantee data frame was normally transferred. Therefore, the value of the LS field of the entry is the node ID itself of the node to be selected as the LD for the purpose of transmitting the arrival guarantee ACK frame so as to go back along the transmission path of the arrival guarantee data frame. Therefore, in step S1315, the arrival guarantee ACK processing unit 114 sets the LD field of the arrival guarantee ACK frame as described above.
  • step S1304 if the content of the arrival guarantee transfer information of the entry noted in the arrival guarantee transfer record table 115 is “none” in step S1304, the process proceeds to step S1316 in FIG. 29C. In other words, this is a case where a new arrival guarantee frame is received in a state where the arrival guarantee ACK frame has already been received or transmitted at the node.
  • step S1316 the arrival guarantee ACK processing unit 114 reads the arrival guarantee flag and the arrival guarantee ACK frame of the received data frame.
  • the arrival guarantee ACK processing unit 114 determines whether the value of the arrival guarantee flag is 1 or 0, that is, whether the received frame is an arrival guarantee data frame or an arrival guarantee ACK frame.
  • the arrival guarantee ACK processing unit 114 determines in step S1318 whether the GD value of the received arrival guarantee data frame is its own node ID. Determine whether or not.
  • step S1318 If the determination in step S1318 is Yes, the process proceeds to step S1321.
  • This transition state is a state in which the following conditions are satisfied for a combination of GS, arrival guarantee ID, and port number related to the received frame.
  • ⁇ State 5> The arrival guarantee ACK frame has already been transmitted as GD. -The same arrival guarantee data frame addressed to the own node is newly received.
  • the arrival guarantee ACK processing unit 114 executes a transmission process of the arrival guarantee ACK frame.
  • the arrival guarantee ACK processing unit 114 in the transmitted arrival guarantee ACK frame GD: GS of the received arrival guarantee data frame
  • LD LS of the entry noticed in step S1303 Set.
  • the reason why the arrival guarantee ACK processing unit 114 of the present embodiment sets the LD field of the arrival guarantee ACK frame as described above is to prevent the influence of temporary fluctuation of the route. The reason will be described in detail as follows.
  • step S1322 is performed in the following situation, for example. -When the same arrival guarantee data frame that was received this time was received before, the arrival guarantee ACK frame was already transmitted. However, the arrival guarantee ACK frame did not reach the node that is the GS of the arrival guarantee data frame for some reason such as deterioration of the radio link quality due to fading. ⁇ As a result, the guaranteed arrival data frame was retransmitted, and this time, the same guaranteed arrival data frame was received this time.
  • the arrival guarantee ACK processing unit 114 in order to avoid the influence of temporary route fluctuation, in step S1322, as described above, the entry created by the previously performed processing (noting in step S1303) The LS value of the entry) is specified in the LD field of the arrival guarantee ACK frame.
  • the arrival guarantee ACK processing unit 114 in the transmitted arrival guarantee ACK frame GS: GD of received guarantee data frame -LS: Local node ID Set. Further, an arrival guarantee ID, a port number, a start flag and an end flag are added to the transmitted arrival guarantee ACK frame, and the arrival guarantee ACK frame is transmitted.
  • the arrival guarantee ACK processing unit 114 discards the received arrival guarantee data frame in step S1323 and ends the data frame reception process.
  • the same arrival guarantee data frame addressed to the own node is newly received even though the arrival guarantee data frame is received by the own node that is already a GD and the corresponding arrival guarantee ACK frame is transmitted. It is the state that was done.
  • the possibility is that the arrival guarantee ACK frame transmitted by the own node does not reach the GS due to some network failure, and the GS retransmits the arrival guarantee ACK frame due to a retransmission timeout.
  • the state 5 corresponds to the processing of the node C at time T16 in FIG. 2A or FIG. 2B. That is, the node C returns the arrival guarantee ACK frame G111 corresponding to the arrival guarantee data frame D111 after time T13, but the quality of the radio link from the node C to the node B deteriorates due to the influence of fading or the like, and the arrival guarantee Assume that the ACK frame G111 does not reach the node B. Thereby, the node A retransmits the arrival guarantee data frame D111. The retransmission frame of the arrival guarantee data frame is transferred from the node B to the node C, and is received by the node C at time T16. At this point, the condition of state 5 is satisfied.
  • the node C returns again the arrival guarantee ACK frame G111 corresponding to the retransmission frame D111 after the time T16, but this time the quality of the radio link from the node C to the node B is recovered, and the arrival guarantee ACK frame G111 is changed to the node B To node A.
  • step S1318 If the determination in step S1318 is No, the process proceeds to step S1319.
  • This transition state is a state in which the following conditions are satisfied for a combination of GS, arrival guarantee ID, and port number related to the received frame.
  • ⁇ State 6> The arrival guarantee ACK frame has already been received and transferred as a relay node. -The same arrival guarantee data frame is newly received.
  • the arrival guarantee ACK processing unit 114 performs a transmission guarantee ACK frame transmission process in step S1320.
  • the arrival guarantee ACK processing unit 114 in the transmitted arrival guarantee ACK frame GD: GS of the received arrival guarantee data frame
  • LD LS of the entry noticed in step S1303 Set.
  • the arrival guarantee ACK processing unit 114 is the entry created by the previously performed processing (as noted in step S1303) so as not to be affected by the temporary fluctuation of the route.
  • the LS value of the entry is specified in the LD field of the arrival guarantee ACK frame.
  • the arrival guarantee ACK processing unit 114 in the transmitted arrival guarantee ACK frame GS: GD of received guarantee data frame -LS: Local node ID Set. Further, an arrival guarantee ID, a port number, a start flag and an end flag are added to the transmitted arrival guarantee ACK frame, and the arrival guarantee ACK frame is transmitted.
  • the arrival guarantee ACK processing unit 114 discards the received arrival guarantee data frame in step S1323 and ends the data frame reception process.
  • the same arrival guarantee data is received even though the arrival guarantee data frame is received and transferred in the local node that is already a relay node and the corresponding arrival guarantee ACK frame is received and transferred. A frame is newly received.
  • the possibility is that the arrival guarantee ACK frame transmitted by the own node does not reach the GS due to some network failure, and the GS retransmits the arrival guarantee ACK frame due to a retransmission timeout.
  • the state 6 corresponds to the processing of the node C at the time T16 in FIG. 3A or 3B. That is, it is assumed that the quality of the radio link from Node B to Node A deteriorates due to the influence of fading or the like at time T24 and the arrival guarantee ACK frame G121 does not reach Node A. As a result, at node T, a timeout for retransmission occurs at time T25, and node A retransmits the arrival guarantee data frame D121.
  • the node B extracts the GS, port number, and arrival guarantee ID from the retransmitted arrival guarantee data frame D121, and searches the arrival guarantee transfer record table 115B of FIG. To do.
  • step S1317 If it is determined in step S1317 that the value of the arrival guarantee flag is 0, that is, the received frame is an arrival guarantee ACK frame, the process proceeds to step S1324 in FIG. 29D.
  • step S1324 the arrival guarantee ACK processing unit 114 determines whether or not the GD value of the received arrival guarantee ACK frame is its own node ID. When determination of step S1324 is Yes, it transfers to step S1325.
  • This transition state is a state in which the following conditions are satisfied for a combination of GS, arrival guarantee ID, and port number related to the received frame.
  • ⁇ State 7> The own node has already transmitted the arrival guarantee ACK frame as GS. -The arrival guarantee ACK frame addressed to the own node for the frame is received again.
  • step S1325 the arrival guarantee ACK processing unit 114 discards the received arrival guarantee ACK frame in step S1325, and ends the data frame reception process. If the determination in step S1324 is No, the process moves to step S1326.
  • This transition state is a state in which the following conditions are satisfied for a combination of GS, arrival guarantee ID, and port number related to the received frame.
  • ⁇ State 8> The local node has already received and transferred the arrival guarantee ACK frame as a relay node. An arrival guarantee ACK frame addressed to another node for the frame is received again.
  • the arrival guarantee ACK processing unit 114 executes transfer (transmission) processing of the received arrival guarantee ACK frame in step S1327.
  • the arrival guarantee ACK processing unit 114 in the transferred arrival guarantee ACK frame, LD: LS of the entry noticed in step S1303 -LS: Local node ID Then, the data frame is transferred to the next node, and the data frame reception process is terminated.
  • step S1328 the arrival guarantee ACK processing unit 114 reads the arrival guarantee flag and the arrival guarantee ACK frame of the received data frame.
  • the arrival guarantee ACK processing unit 114 determines whether the value of the arrival guarantee flag is 1 or 0, that is, whether the received frame is an arrival guarantee data frame or an arrival guarantee ACK frame.
  • the arrival guarantee ACK processing unit 114 determines whether the GD value of the received arrival guarantee data frame is its own node ID. Determine whether or not.
  • step S1331 When determination of step S1331 is Yes, it transfers to step S1333 of FIG. 29F. This process will be described later. When determination of step S1331 is No, it transfers to step S1332.
  • This transition state is a state in which the following conditions are satisfied for a combination of GS, arrival guarantee ID, and port number related to the received frame.
  • ⁇ State 9> The arrival guarantee data frame has not been received as a relay node. • The arrival guarantee data frame is received for the first time.
  • the arrival guarantee ACK processing unit 114 returns the processing of the received frame to the data frame processing unit 110, and executes the data frame transfer processing after step S806 in FIG.
  • the state 9 corresponds to, for example, the processing of the node B at time T2 in FIG. 1A or 1B.
  • step S1329 if the value of the arrival guarantee flag is 0, that is, if the received frame is an arrival guarantee ACK frame, the arrival guarantee ACK processing unit 114 proceeds to step S1330.
  • the arrival guarantee ACK frame corresponding to the arrival guarantee data frame having the arrival guarantee ID (no other route) having no entry in the arrival guarantee transfer record table 115 is received.
  • the arrival guarantee ACK processing unit 114 discards the received arrival guarantee ACK frame in step S1330 and ends the data frame reception process.
  • step S1331 If the determination in step S1331 is Yes, the process proceeds to step S1333 in FIG. 29F.
  • This transition state is a state in which the following conditions are satisfied for a combination of GS, arrival guarantee ID, and port number related to the received frame.
  • ⁇ State 10> The arrival guarantee data frame is not yet received as GD. -The arrival guarantee data frame addressed to the own node is received for the first time.
  • the received arrival guarantee data frames are sequentially expanded in the assembly buffer 116 shown in FIG. 6 to assemble the transmitted data.
  • the arrival guarantee ACK processing unit 114 reads the start flag and the end flag in the arrival guarantee header 333 stored in the received arrival guarantee data frame.
  • step S1334 the arrival guarantee ACK processing unit 114 determines whether the start flag is 1 or 0. If the start flag is 1, that is, if the received arrival guarantee data frame is the first frame of the data frame group divided into a plurality, the process proceeds to step S1335.
  • This transition state is a state in which the following conditions are satisfied for a combination of GS, arrival guarantee ID, and port number related to the received frame.
  • ⁇ State 11> The arrival guarantee data frame as GD has not been received so far. -The arrival guarantee data frame addressed to the own node is received for the first time.
  • the arrival guarantee ACK processing unit 114 executes a transmission process of the arrival guarantee ACK frame.
  • the arrival guarantee ACK processing unit 114 in the transmitted arrival guarantee ACK frame GD: GS of the received arrival guarantee data frame LD: LS of the entry noticed in step S1303 Set.
  • the arrival guarantee ACK processing unit 114 in the transmitted arrival guarantee ACK frame GS: GD of received guarantee data frame -LS: Local node ID Set.
  • an arrival guarantee ID, a port number, a start flag and an end flag are added to the transmitted arrival guarantee ACK frame, and the arrival guarantee ACK frame is transmitted.
  • step S1337 the arrival guarantee ACK processing unit 114 determines whether the end flag is 1 or 0. If the end flag is 1, that is, if the received arrival guarantee data frame is the first frame and the end frame, that is, if it is a single frame with a division number of 1, the process proceeds to step S805 in FIG. To do. Here, the content of the received payload of a single frame is taken out and delivered to the upper layer processing unit 111 in FIG. 6, and the data frame reception processing is completed.
  • step S1338 the arrival guarantee ACK processing unit 114 reads the port number from the arrival guarantee header 333 in the arrival guarantee data frame.
  • step S1339 the arrival guarantee ACK processing unit 114 creates an entry in the assembly buffer 116 that can be identified by the GS stored in the arrival guarantee header 333 in the arrival guarantee data frame and the above-described port number. That is, for example, in the assembly buffer 116 shown in FIG. 18, an entry that can store a plurality of payloads determined by the GS and the port number is created.
  • step S1340 the arrival guarantee ACK processing unit 114 stores the received arrival guarantee data frame payload in the entry created in the assembly buffer 116, sets a timer value corresponding to the timeout time, and receives the data frame. The process ends.
  • step S1334 determines whether the received arrival guarantee data frame is not the first frame of the data frame group divided into a plurality. If the determination in step S1334 is No, that is, if the received arrival guarantee data frame is not the first frame of the data frame group divided into a plurality, the process proceeds to step S1341 in FIG. 29G.
  • step S1341 the arrival guarantee ACK processing unit 114 first reads the port number from the arrival guarantee header 333 in the arrival guarantee data frame.
  • step S1342 the arrival guarantee ACK processing unit 114 uses the GS extracted from the data header 332 (FIG. 10) of the received arrival guarantee data frame and the port number obtained in step S1341 to use the assembly buffer 116. Search for.
  • the assembly buffer 116 has a configuration example as shown in FIG.
  • step S1343 the arrival guarantee ACK processing unit 114 determines whether or not an entry corresponding to the assembly buffer 116 exists as a result of the search in step S1342. If there is no corresponding entry in the assembly buffer 116, the process proceeds to step S1344, and the arrival guarantee ACK processing unit 114 discards the received arrival guarantee data frame and ends the data frame reception process.
  • This state is an error state in which a divided frame that is neither the head nor the tail is received, but the entry of the assembly buffer 116 to be added cannot be found. If there is a corresponding entry in the assembly buffer 116 and the determination in step S1343 is YES, the arrival guarantee ACK processing unit 114 determines in step S1345 whether the end flag acquired in step S1333 in FIG. 29F is 1 or 0. judge.
  • step S1346 the arrival guarantee ACK processing unit 114 displays the frames stored in the assembly buffer 116 in the order of arrival guarantee ID from the frame having the start flag of 1 to the frame having the end flag of 1 shown in the example of FIG. Try to assemble with sequential numbers.
  • step S1347 the arrival guarantee ACK processing unit 114 determines whether or not the assembling with the serial number is successful. If the assembling with the sequential number is successful, the process proceeds to step S1350.
  • step S1351 the arrival guarantee ACK processing unit 114 performs a transmission guarantee ACK frame transmission process.
  • the arrival guarantee ACK processing unit 114 in the transmitted arrival guarantee ACK frame GD: GS of the received arrival guarantee data frame LD: LS of the entry noticed in step S1303 Set.
  • the arrival guarantee ACK processing unit 114 in the transmitted arrival guarantee ACK frame GS: GD of received guarantee data frame -LS: Local node ID Set.
  • an arrival guarantee ID, a port number, a start flag and an end flag are added to the transmitted arrival guarantee ACK frame, and the arrival guarantee ACK frame is transmitted.
  • step S1352 the arrival guarantee ACK processing unit 114 deletes the entry found in step S1342 in the assembly buffer 116. Thereafter, the process proceeds to step S805 in FIG. Here, the data assembled in step S1346 is delivered to the upper layer processing unit 111 in FIG. 6, and the data frame reception process is terminated.
  • step S1348 the arrival guarantee ACK processing unit 114 discards the received arrival guarantee data frame.
  • step S1349 the arrival guarantee ACK processing unit 114 deletes the entry found in step S1342 in the assembly buffer 116, and ends the data frame reception process.
  • step S1345 If it is determined in step S1345 that the end flag is 0, that is, if the received arrival guarantee data frame is a frame in the middle of the divided data frame group, the process proceeds to step S1353 in FIG. 29H.
  • step S1353 the arrival guarantee ACK processing unit 114 adds an entry including the payload of the received arrival guarantee data frame to the assembly buffer 116 in the example of FIG. 10, and returns the timer value to the initial value.
  • step S1355 the arrival guarantee ACK processing unit 114 executes a transmission process of the arrival guarantee ACK frame.
  • the arrival guarantee ACK processing unit 114 in the transmitted arrival guarantee ACK frame GD: GS of the received arrival guarantee data frame LD: LS of the entry noticed in step S1303 Set.
  • the arrival guarantee ACK processing unit 114 in the transmitted arrival guarantee ACK frame GS: GD of received guarantee data frame -LS: Local node ID Set.
  • an arrival guarantee ID, a port number, a start flag and an end flag are added to the transmitted arrival guarantee ACK frame, the arrival guarantee ACK frame is transmitted, and the data frame reception process is terminated.
  • FIG. 30A is a flowchart showing details of the recording process to the arrival guarantee transfer record table executed in the following steps in the flowcharts of FIGS. 29A to 29H.
  • FIG. 29A S1308, S1309 FIG. 29B S1314 FIG. 29C S1319, S1321 FIG. 29D S1326 FIG. 29E S1332 FIG. 29F S1335 FIG. 29G S1350 FIG. 29H S1354
  • the arrival guarantee ACK processing unit 114 When this process is executed by the arrival guarantee ACK processing unit 114, the value of the arrival guarantee transfer record information and the value of the arrival guarantee ACK reception information are specified in the process of each step described above.
  • step S1401 the arrival guarantee ACK processing unit 114 adds a new entry to the arrival guarantee transfer record table 115.
  • the arrival guarantee ACK processing unit 114 adds the respective values in the received guarantee data frame to the arrival guarantee ID, port number, start flag, end flag, GS, and LS fields in the added entry. Set.
  • step S1403 the arrival guarantee ACK processing unit 114 sets the designated value in the arrival guarantee transfer record information of the added entry.
  • the arrival guarantee ACK processing unit 114 sets the specified value in the arrival guarantee ACK reception information of the added entry.
  • step S1405 the arrival guarantee ACK processing unit 114 sets the current time to the event time of the added entry. Examples of the arrival guarantee transfer record table 115 are shown in FIGS. 1B, 2B, 3B, and the like.
  • FIG. 30B is a flowchart showing details of the arrival guarantee ACK transmission process executed in the following steps in the flowcharts of FIGS. 29A to 29H.
  • FIG. 29A S1310 FIG. 29C S1320, S1322 FIG. 29F S1336 FIG. 29G S1351 FIG. 29H S1355
  • step S1501 the arrival guarantee ACK processing unit 114 secures a memory area for the arrival guarantee ACK frame.
  • step S1502 the arrival guarantee ACK processing unit 114 sets the designated GD setting value to the GD of the arrival guarantee ACK frame.
  • step S1503 the arrival guarantee ACK processing unit 114 sets its own node ID to GS and LS of the arrival guarantee ACK frame.
  • step S1504 the arrival guarantee ACK processing unit 114 sets the designated LD setting value to the LD of the arrival guarantee ACK frame.
  • step S1505 the arrival guarantee ACK processing unit 114 generates a new FID and sets it in the arrival guarantee ACK frame.
  • step S1506 the arrival guarantee ACK processing unit 114 sets a value indicating “data frame” as the type of the arrival guarantee ACK frame.
  • step S1507 the arrival guarantee ACK processing unit 114 sets 0, 0, and 1 to the length of the arrival guarantee ACK frame, the arrival guarantee flag, and the arrival guarantee ACK flag, respectively.
  • step S1508 the arrival guarantee ACK processing unit 114 copies the arrival guarantee ID, port number, start flag, and end flag of the received data frame to the arrival guarantee ACK frame.
  • step S1509 the arrival guarantee ACK processing unit 114 transmits the generated arrival guarantee ACK frame.
  • weighting table adjustment processing in step S812a of FIG. 26 will be described with reference to FIG.
  • the weighting table adjustment process in FIG. 31 is also called in step S1108a in FIG. 34B described later.
  • “hit weighting table 104-i” means a table hit in the search in step S811 in FIG. 26 or the search in step S1107 in FIG. 34B.
  • step S851 the data frame processing unit 110 pays attention to the first entry of the adjacent node management table 103 (see FIG. 12).
  • a target entry an entry in the adjacent node management table 103 focused on by the data frame processing unit 110 is referred to as a “target entry”.
  • step S852 the data frame processing unit 110 determines whether there is an entry including the value of the node ID of the entry of interest as LD in the hit weighting table 104-i. If there is an entry including the value of the node ID of the entry of interest as LD in the hit weighting table 104-i, the process proceeds to step S855. On the other hand, if there is no entry in the hit weighting table 104-i that includes the value of the node ID of the entry of interest as LD, the process proceeds to step S853.
  • step S853 the data frame processing unit 110 adds a new entry to the hit weighting table 104-i.
  • step S854 the data frame processing unit 110 sets a value for the new entry added to the weighting table 104-i in step S853. That is, in the new entry, the data frame processing unit 110 sets the node ID value of the entry of interest in the adjacent node management table 103 as the LD field, the initial weight value as the weight field, and the current time as the last update time field. To do.
  • the initial weight value in step S854 is different from the initial weight value in step S308 in FIG. Specifically, the initial weight value in step S854 is the maximum value of weights less than 1 in the weight field of the hit weight table 104-i.
  • the initial value in step S854 is 0.7.
  • the initial weighting value in step S854 is an arbitrary value less than 1, for example, in step S308 in FIG. 0.5 may be used similarly to the initial weighting value.
  • step S854 the learning result reflected in the existing entry of the weighting table 104-i is preferentially considered. As a result, the route does not fluctuate more than necessary, in other words, the route becomes stable.
  • the initial weighting value in step S854 is 0. 0 as in step S308 in FIG.
  • an adjacent node device in which no weight is learned that is, an adjacent node device in which the node ID is recorded as an LD in the new entry added in step S853 is greater than an adjacent node device having a weight of 0.7.
  • the LD is preferentially selected. That is, the weight 0.7 as the accumulated learning so far is ignored.
  • step S855 the data frame processing unit 110 determines whether or not there are entries that are not yet focused on in the adjacent node management table 103. If the data frame processing unit 110 has finished paying attention to all entries in the adjacent node management table 103, the processing in FIG. 31 ends. On the other hand, if an entry not yet noticed by the data frame processing unit 110 remains in the adjacent node management table 103, the process proceeds to step S856.
  • step S856 the data frame processing unit 110 pays attention to the next entry among the entries not yet noticed in the adjacent node management table 103. Then, the process returns to step S852.
  • the significance of the processing in FIG. 31 is as follows. As a side effect of the aging process for each entry in the weighting table 104-i, there is a possibility of the following situation immediately before the process of FIG. That is, there is a possibility that an entry having the node ID of an adjacent node device registered in the adjacent node management table 103 as LD does not exist in the weighting table 104-i.
  • the adjacent node device of the node device 100 is a potential candidate for the LD selected by the data frame processing unit 110 when transmitting the data frame. Therefore, it is desirable for proper operation of the node device 100 to cover all adjacent node devices in the LD field of the hit weighting table 104-i.
  • step S205 of FIG. 19 has been described in detail above with reference to FIGS. Subsequently, processing related to notification of transmission success / failure in steps S826 and S837 of the data frame reception processing will be described with reference to FIG. 32 and FIG.
  • FIG. 32 is a flowchart of the ACK frame reception process in step S206 of FIG. The processing in FIG. 32 is started when an ACK frame is output from the frame branching processing unit 106 to the ACK processing unit 107.
  • step S901 the ACK processing unit 107 determines whether the LD value of the ACK frame received from the frame branching processing unit 106 is equal to the own node ID. If the LD value of the ACK frame is equal to the own node ID, the process proceeds to step S902. If the LD value of the ACK frame is different from the own node ID, the process of FIG. 32 ends.
  • the ACK processing unit 107 can also refer to its own node ID stored in advance in the flash memory 205, for example.
  • the irrelevant node device N 3 when the node device N 5 transmits an ACK frame for the data frame transmitted by the node device N 4 in step S105 of FIG. 9 as shown in step S105a in FIG. 40, the irrelevant node device N 3 also receives the ACK frame. To do. This is because the node device N 3 is adjacent to the node device N 5 .
  • the node device N 3 since the ACK processing unit 107-N 3 of the node device N 3 immediately ends the processing of FIG. 32 as a result of the determination in step S901, the node device N 3 has a side effect due to the ACK frame unrelated to the node device N 3. Not receive.
  • the ACK processing unit 107 specifies a transmitted data frame corresponding to the ACK frame from the GS and FID values of the ACK frame. For example, in response to the data frame 303 in FIG. 10 transmitted from the node device N 2 to the node device N 3 in step S102 in FIG. 9, the node device N 3 returns an ACK frame 322 in FIG. 10 to the node device N 2 .
  • the ACK processing unit 107-N 2 of the node device N 2 performs the processing of FIG. 32 in response to the reception of the ACK frame 322 will be described in detail as follows.
  • step S902 the ACK processing unit 107-N 2 extracts GS and FID values (that is, N 1 and F a ) of the ACK frame 322. Further, since the buffer unit 109-N 2 has the same format as that of FIG. 11, the data frame 303 transmitted from the node device N 2 is stored in the buffer unit 109-N 2 . Therefore, the ACK processing unit 107-N 2 searches the entry of the buffer unit 109-N 2 using the extracted GS and FID values (ie, N 1 and F a ) as keys, and identifies the entry including the data frame 303. To do.
  • step S903 the ACK processing unit 107 deletes the transmitted data frame specified in step S902 from the buffer unit 109. That is, the ACK processing unit 107 deletes the entry found by the search in step S902 from the buffer unit 109.
  • step S904 the ACK processing unit 107 notifies the data frame processing unit 110 of “successful transmission” regarding the transmitted data frame specified in step S902. Then, the process of FIG. 32 ends.
  • the data frame processing unit 110 may be realized by the MPU 201 in FIG. 7 executing a program.
  • the thread that causes the MPU 201 to function as the data frame processing unit 110 may sleep until the ACK frame is received after the data frame is transmitted.
  • the notification of “successful transmission” in step S904 is a process for waking up a sleeping thread.
  • the notification in step S904 is accompanied by notification of the GS and FID values of the data frame specified in step S902.
  • the ACK processing unit 107-N 2 also notifies the data frame processing unit 110 of the GS and FID values (ie, N 1 and F a ) for identifying the data frame 303.
  • FIG. 33 is a flowchart showing processing when an ACK frame is not received by the timeout time.
  • the processing in FIG. 33 is periodically performed, for example, triggered by an interrupt signal generated by the timer IC 203 in FIG. 7 at a predetermined interval.
  • step S1001 the ACK processing unit 107 pays attention to the first entry of the buffer unit 109 (see FIG. 11).
  • target entry the entry of the buffer unit 109 that the ACK processing unit 107 is paying attention to.
  • step S1002 the ACK processing unit 107 compares the current time with the value of the timeout time field of the entry of interest. If the current time is after the timeout time, the process proceeds to step S1003. On the other hand, if the current time has not yet reached the timeout time, the process proceeds to step S1005.
  • step S1003 the ACK processing unit 107 notifies the data frame processing unit 110 of “transmission failure” regarding the data frame stored in the entry of interest in the buffer unit 109.
  • the notification in step S1003 may be, specifically, a process for waking up a sleeping thread, for example, similarly to the notification in step S904 in FIG.
  • the notification in step S1003 is also accompanied by notification of the GS and FID values of the data frame.
  • the ACK processing unit 107 reads the GS and FID values of the data frame stored in the entry of interest, identifies the data frame based on the read GS and FID values, and identifies “ “Transmission failure” is notified to the data frame processing unit 110.
  • the data frame processing unit 110 may select an adjacent node device that has not been tried as an LD as a new LD and try to retransmit the data frame. Accordingly, the entry of interest is not deleted from the buffer unit 109 at the time of step S1003.
  • step S1004 the ACK processing unit 107 sets the time T timeout of Expression (5) as the timeout time of the entry of interest. Then, the process proceeds to step S1005.
  • step S1005 the ACK processing unit 107 determines whether or not an entry that has not been noticed still remains in the buffer unit 109. If the ACK processing unit 107 has finished paying attention to all entries in the buffer unit 109, the processing in FIG. On the other hand, if an entry not yet noticed by the ACK processing unit 107 remains in the buffer unit 109, the process proceeds to step S1006.
  • step S1006 the ACK processing unit 107 pays attention to the next entry in the buffer unit 109 that has not been noticed yet. Then, the process returns to step S1002.
  • the data frame reception processing described with reference to FIGS. 25 to 28 is an example in the case where the node device 100 is a node device of a type that does not become GS as described above.
  • FIGS. 34A to 38 processing unique to a type of node device that can be a GS will be described.
  • FIG. 34A, 34B and FIG. 35 are flowcharts of a transmission process when the node apparatus 100 is a GS and transmits a data frame.
  • the process of FIG. 34A is triggered by a request from the upper layer processing unit 111 to the data frame processing unit 110.
  • step S1101 the data frame processing unit 110 receives information indicating the GD value, payload, and arrival guarantee of the data frame from the upper layer processing unit 111 as a result of the upper layer protocol processing in the upper layer processing unit 111. To get.
  • the “upper layer protocol” may be an Ethernet protocol.
  • the upper layer processing unit 111 outputs an Ethernet frame to the data frame processing unit 110 as a payload of the data frame defined in the present embodiment. Further, the upper layer processing unit 111 notifies the data frame processing unit 110 of the value set in the GD of the data frame in the present embodiment.
  • the data frame processing unit 110 creates a new data frame including the payload acquired from the upper layer processing unit 111, and sets the value acquired from the upper layer processing unit 111 in the GD of the generated data frame.
  • the data frame processing unit 110-N 1 node device N 1 from the upper layer processing section 111-N 1 to N 7 was obtained as the value of GD, and N 7 to the GD of the data frame Set.
  • step S1101a the data frame processing unit 110 determines whether or not arrival guarantee is specified. If the arrival guarantee is not designated, the arrival guarantee header 333 including blank or invalid data is generated in step S1101f. Thereafter, the process proceeds to step S1102 in FIG. 34B. If the arrival guarantee is specified, first, in step S1101b, the data frame processing unit 110 creates an arrival guarantee ID.
  • step S1101c the data frame processing unit 110 generates an arrival guarantee header. Specifically, each value of the arrival guarantee header 333 in FIG. 10 is set. Subsequently, in step S1101d, the data frame processing unit 110 sets the arrival guarantee ID, GS, LS, arrival guarantee transfer information, arrival guarantee ACK information, and event time in the arrival guarantee transfer record table 115.
  • step S1101e the data frame processing unit 110 stores the data frame (payload), GD, port number, arrival guarantee ID, arrival guarantee ACK waiting time, and number of retransmissions in the retransmission buffer 117, as shown in FIG. Set. Thereafter, the process proceeds to step S1102 in FIG. 34B.
  • step S1102 of FIG. 34B the data frame processing unit 110 obtains the length of the payload acquired in step S1101, and sets it in the length field of the created data frame.
  • the data frame processing unit 110-N 1 node device N 1 since the length of the payload is P a, the data frame processing unit 110-N 1 node device N 1 was prepared It is set to P a length field of the data frame.
  • step S1103 the data frame processing unit 110 sets its own node ID in the GS and LS of the created data frame.
  • the data frame processing unit 110-N 1 of the node device N 1 sets N 1 to GS and LS of the created data frame.
  • step S1104 the data frame processing unit 110 requests the FID generation unit 113 to generate a new FID. Then, since the FID generation unit 113 generates a new FID and outputs it to the data frame processing unit 110, the data frame processing unit 110 sets the generated FID in the FID field of the created data frame.
  • step S1105 the data frame processing unit 110 sets a predetermined value D (see FIG. 10) indicating “data frame” in the type field of the created data frame. Note that the execution order of the above steps S1102 to S1105 is in no particular order.
  • the data frame processing unit 110 stores the created data frame in the buffer unit 109 in step S1106. In other words, the data frame processing unit 110 secures a new entry area in the buffer unit 109 and stores the created data frame in the secured area. As shown in FIG. 11, the buffer unit 109 has a time-out time field, but at this time, the time-out time is not set.
  • step S1107 the data frame processing unit 110 searches the weighting table 104 using the value of GD designated by the upper layer processing unit 111 in step S1101.
  • step S1108 the data frame processing unit 110 determines whether the weighting table corresponding to the designated GD value has been hit as a result of the search in step S1107. If the weighting table corresponding to the designated GD value hits, the process proceeds to step S1108a. If the weighting table corresponding to the designated GD value does not exist, the process proceeds to step S1009.
  • step S1108a the data frame processing unit 110 performs the weighting table adjustment process of FIG. 31 to neutralize the side effects of the aging process. Then, the process proceeds to step S1110.
  • step S1109 the data frame processing unit 110 adds a new weighting table corresponding to the GD value designated in step S1101 to the weighting table 104. Specifically, the data frame processing unit 110 performs processing similar to steps S813 to S816 in FIG. 26 in step S1109.
  • step S1109 the data frame processing unit 110 adds a new weighting table corresponding to the GD value designated by the upper layer processing unit 111, and the GD of the GD designated by the upper layer processing unit 111 in the new weighting table. Set the value as GD. Further, the data frame processing unit 110 creates the same number of new entries as the adjacent node management table 103 in the new weighting table. Then, the data frame processing unit 110 sets the node ID, the initial weight value, and the current time of each entry in the adjacent node management table 103 for each created entry.
  • the weighting table corresponding to the value of GD designated in step S1101 is referred to by the reference numeral “104-i”. That is, the weighting table 104-i is a table that has been hit by the search in step S1107 or a table that has been added in step S1109.
  • step S1108 After it is determined in step S1108 that the weighting table 104-i is hit or after the weighting table 104-i is created in step S1109, the process proceeds to step S1110.
  • step S 1110 the data frame processing unit 110 acquires the LD value associated with the minimum weight in the weighting table 104-i corresponding to the GD value designated by the upper layer processing unit 111.
  • a plurality of entries in the weighting table 104-i may have the same minimum weight.
  • the data frame processing unit 110 selects and acquires any one of a plurality of LD values associated with the minimum weight in step S1110.
  • the data frame processing unit 110 stores the acquired LD value and corresponding weight value in a storage area such as the DRAM 204 of FIG.
  • step S1111 the data frame processing unit 110 determines whether one of the following two conditions (L1) and (L2) is satisfied.
  • L1 The weight corresponding to the value of LD acquired in step S1110 is the maximum weight value (specifically, in the present embodiment, 1.0).
  • step S1112 If the condition (L1) or (L2) is satisfied, there is no longer any adjacent node device that can be selected as the LD, and the process moves to step S1112. On the other hand, when neither of the conditions (L1) and (L2) is satisfied, there are still adjacent node devices that can be selected as the LD. In other words, there is at least one adjacent node device that does not correspond to any of (G1) to (G3) described for step S818 of the data frame reception process. Then, the node ID of the adjacent node device that can be selected as the LD is acquired in step S1110 (or step S1125 described later). Therefore, if it is determined in step S1111 that neither of the conditions (L1) and (L2) is satisfied, the process proceeds to step S1114.
  • the data frame processing unit 110 discards the data frame in step S1112. That is, the data frame processing unit 110 deletes the entry newly created in step S1106 and storing the data frame from the buffer unit 109.
  • step S1113 the data frame processing unit 110 notifies the upper layer processing unit 111 of “transmission failure”. That is, the data frame processing unit 110 notifies the upper layer processing unit 111 that the data frame has not been successfully transmitted to any adjacent node device. Then, the processing in FIGS. 34A and 34B to FIG. 35 ends.
  • step S1111 determines whether neither of the conditions (L1) and (L2) is satisfied. If it is determined in step S1111 that neither of the conditions (L1) and (L2) is satisfied, the process of trying to transfer the data frame to the adjacent node device identified by the acquired LD value is performed in step S1111. This is performed in S1114 to S1125.
  • step S1114 the data frame processing unit 110 sets the LD value acquired in step S1110 or step S1125 described later to the LD of the data frame stored in the buffer unit 109 in step S1106. Then, the data frame processing unit 110 requests the transmission unit 102 to transmit a data frame in which the LD value is set. Then, the transmission part 102 transmits a data frame.
  • step S1115 the data frame processing unit 110 sets the time T timeout of Expression (5) as the timeout time of the entry in the buffer unit 109 that stores the data frame in step S1106.
  • step S1116 the data frame processing unit 110 searches the FID management table 105 using the own node ID and the FID generated by the FID generation unit 113 in step S1104.
  • step S1117 the data frame processing unit 110 determines whether an entry has been hit in the search of the FID management table 105 in step S1116.
  • step S1117 is executed for the first time, it is determined that “the entry has not been hit”, and when step S1117 is executed for the second time or later, it is determined that “the entry has been hit”.
  • step S1116 If the entry is hit in the search in step S1116, the process proceeds to step S1118. On the other hand, if the entry is not hit in the search of step S1116, the process proceeds to step S1119.
  • step S1118 the data frame processing unit 110 updates the entry hit in the search in step S1116. Specifically, the data frame processing unit 110 sets the LD value of the data frame transmitted in step S1114 in the LD field in the entry hit in the search in step S1116, and sets the current value in the last update time field. Set the time. Then, the process proceeds to step S1121.
  • step S 1119 the data frame processing unit 110 adds a new entry to the FID management table 105.
  • step S1120 the data frame processing unit 110 sets a value for the new entry. Specifically, in the new entry, the data frame processing unit 110 copies the value of the data frame transmitted in step S1114 to each field of FID, GS, and LD. In addition, in the new entry, the data frame processing unit 110 sets the current time in the last update time field, and copies its own node ID in the OLS field.
  • the node FID management table 105-N 1 entry E1 devices N 1 is for the data frame processing unit 110-N 1 node device N 1 created by the above processing.
  • step S1121 the data frame processing unit 110 waits for notification of the success or failure of transmission in step S1114. Details of step S1121 are the same as step S825 of FIG.
  • step S1121 the data frame processing unit 110 receives a notification of “transmission success” or “transmission failure” from the ACK processing unit 107 after waiting in step S1121, the process proceeds to step S1122.
  • step S1122 the data frame processing unit 110 determines whether or not the transmission in step S1114 is successful based on the notification received from the ACK processing unit 107. If the transmission is successful, the process proceeds to step S1123. If the transmission fails, the process proceeds to step S1124.
  • step S1123 the data frame processing unit 110 decreases the weight corresponding to the combination of GD and LD of the data frame transmitted in step S1114 in the weighting table 104.
  • the data frame processing unit 110 uses the weight corresponding to the LD of the transmitted data frame in the weighting table 104-i corresponding to the value of GD designated from the higher layer processing unit 111, for example, using Equation (6). Update. Further, the data frame processing unit 110 sets the current time as the last update time in the entry whose weight is updated in the weighting table 104-i. Then, the processes in FIGS. 34A, 34B to 35 are terminated.
  • step S1124 the data frame processing unit 110 increases the weight corresponding to the combination of GD and LD of the data frame transmitted in step S1114 in the weighting table 104.
  • the data frame processing unit 110 uses the weight corresponding to the LD of the transmitted data frame in the weighting table 104-i corresponding to the GD value designated by the upper layer processing unit 111, for example, using Equation (7). Update.
  • step S1124 the data frame processing unit 110 further stores the LD value of the transmitted data frame as “LD failed in transmission” in a work area such as the DRAM 204 in FIG. Similarly to step S828 in FIG. 27, a data structure such as a linear list or an array may be used for storing “LD failed to transmit”.
  • step S1124 the data frame processing unit 110 further sets the current time as the last update time in the entry whose weight is updated in the weighting table 104-i. Then, the process proceeds to step S1125.
  • step S1125 the data frame processing unit 110 searches for other selectable adjacent node devices that have not been tried as LDs so far. Specifically, the data frame processing unit 110 uses the minimum weight among the LDs other than the LD that failed to transmit in the weighting table 104-i corresponding to the GD value designated by the higher layer processing unit 111. The associated LD value is acquired.
  • the LDs that failed to be transmitted are stored in a work area such as the DRAM 204 of FIG. 7 in step S1124, for example, in the form of a linear list or an array.
  • the data frame processing unit 110 acquires, in the weighting table 104-i, an LD value that has not been acquired in step S1110 or S1125 in the past and that is associated with the minimum weight.
  • the data frame processing unit 110 stores the acquired LD value and corresponding weight value in a storage area such as the DRAM 204 of FIG. Then, the process returns to step S1111.
  • FIG. 36 is a flowchart of the aging process of the retransmission buffer 117.
  • a timer IC203 7 outputs to reach guaranteed ACK processor 114 an interrupt signal at predetermined intervals I a
  • reaching guaranteed ACK processor 114 an interrupt signal as a trigger is a process of FIG. 36 at a predetermined interval I a You may go.
  • step S1601 the arrival guarantee ACK processing unit 114 determines whether there is an unfocused entry in the retransmission buffer 117. If there are no unfocused entries, the process ends.
  • the arrival guarantee ACK processing unit 114 pays attention to one of the unfocused entries in the retransmission buffer 117 in step S1602. For example, it is one horizontal line in the example of FIG.
  • step S1603 the arrival guarantee ACK processing unit 114 decrements the arrival guarantee ACK waiting time (see FIG. 17) of the entry of interest.
  • step S1601 the arrival guarantee ACK processing unit 114 determines in step S1605 whether the number of retransmissions (FIG. 17) has expired, that is, whether it has reached a predetermined value.
  • the arrival guarantee ACK processing unit 114 If the number of retransmissions has not expired, the arrival guarantee ACK processing unit 114 resets the arrival guarantee ACK waiting time (FIG. 17) to an initial value in step S1608. In step S1609, the arrival guarantee ACK processing unit 114 increments the number of retransmissions (FIG. 17).
  • step S1610 the arrival guarantee ACK processing unit 114 extracts the payload of the data frame and the arrival guarantee header from the entry of interest.
  • step S1611 the arrival guarantee ACK processing unit 114 calls the processing after step S1102 in FIG. 34B to execute the retransmission processing.
  • step S1601 the arrival guarantee ACK processing unit 114 proceeds to step S1601 and executes the processing of the next entry.
  • the arrival guarantee ACK processing unit 114 deletes the entry of interest from the retransmission buffer, assuming that retransmission is no longer performed.
  • step S1607 the arrival guarantee ACK processing unit 114 notifies the higher layer processing unit 111 in FIG. Thereafter, the arrival guarantee ACK processing unit 114 proceeds to step S1601 and executes the processing of the next entry.
  • FIG. 37 is a flowchart of the aging process of the assembly buffer 116.
  • the output timer IC203 7 is an interrupt signal at predetermined intervals I a to reach guaranteed ACK processing unit 114, reaches ensure ACK processor 114 an interrupt signal as a trigger is a process of FIG. 37 at a predetermined interval I a You may go.
  • step S1701 the arrival guarantee ACK processing unit 114 determines whether there is an unfocused combination of GS and port number in the assembly buffer 116 shown in FIG. If there are no unfocused items, the process ends.
  • step S1702 the arrival guarantee ACK processing unit 114 focuses on one of the unfocused pairs of GS and port number.
  • the arrival guarantee ACK processing unit 114 decrements the timer value (see FIG. 17) corresponding to the group of interest.
  • step S1704 the arrival guarantee ACK processing unit 114 determines whether or not the timer value corresponding to the group of interest has become zero. If the timer value is not 0, the arrival guarantee ACK processing unit 114 proceeds to step S1701 and executes the next set of processes.
  • the arrival guarantee ACK processing unit 114 deletes all entries corresponding to the group of interest in step S1705. Thereafter, the arrival guarantee ACK processing unit 114 proceeds to step S1701 and executes the next set of processes.
  • FIG. 38 is a flowchart of a process performed by the node device 100 that can be a GS instead of the process of FIG. 28 as part of the data frame reception process.
  • steps S801 to S829 in the data frame reception process are the same as in the case where the node device 100 is dedicated for relaying, as shown in FIGS. is there.
  • the node device 100 is a type of device that can also be a GS
  • the data frame processing unit 110 determines in step S818 in FIG. 27 that “one of the conditions (F1) and (F2) is met”, The processing moves to step S830a in FIG.
  • step S830a the data frame processing unit 110 determines whether or not the GS value of the received data frame is its own node ID. If the GS value of the received data frame is different from the own node ID, the process proceeds to step S830b. If the GS value of the received data frame is the own node ID, the process proceeds to step S830c.
  • step S830b the data frame processing unit 110 creates a new data frame and outputs it to the transmission unit 102 as follows, and the transmission unit 102 transmits the created data frame.
  • the data frame processing unit 110 designates the OLS value stored in step S808 or S810 in the LD of the new data frame, and designates its own node ID in the LS of the new data frame. In addition, the data frame processing unit 110 copies the values of the GD, GS, FID, type, and length fields and the payload from the received data frame to a new data frame. After transmitting the data frame, the process proceeds to step S831a.
  • step S830c the data frame processing unit 110 notifies the upper layer processing unit 111 of “transmission failure”.
  • the data frame processing unit 110 may extract a payload from the received data frame, for example, and output the payload or a part of the payload to the upper layer processing unit 111. Then, the upper layer processing unit 111 can recognize which data transmission has failed based on the contents of the payload received from the data frame processing unit 110. After notification of transmission failure, the process proceeds to step S838a.
  • step S831a the data frame processing unit 110 searches the FID management table 105 using the FID and GS values of the received data frame as search keys.
  • the following steps S831a to S839a are similar to steps S831 to S839 in FIG. 28, respectively.
  • step S832a the data frame processing unit 110 determines whether or not the entry is hit as a result of the search in step S831a. If the entry is hit, the process proceeds to step S833a. If the entry is not hit, the process proceeds to step S834a.
  • step S807 If it is determined in step S807 that “an entry has been hit”, the entry found as a result of the search in step S831a is the entry found as a result of the search in step S806. If it is determined in step S807 that “the entry has not been hit” and a new entry is created in step S823, the new entry created in step S823 is found as a result of the search in step S831a.
  • step S832a It is determined in step S832a that “the entry has not been hit” in the cases of (M1) and (M2).
  • step S807 it was determined that “the entry did not hit”.
  • step S818 Immediately after step S818 is executed for the first time, the process proceeds to step S830a.
  • step S833a the data frame processing unit 110 updates the entry hit as a result of the search in step S831a. Specifically, in the hit entry, the data frame processing unit 110 copies the OLS value of the hit entry itself to the LD, and sets the current time as the last update time. Then, the process proceeds to step S836a.
  • step S834a the data frame processing unit 110 adds a new entry to the FID management table 105.
  • step S835a the data frame processing unit 110 sets a value in the new entry added in step S834a. Specifically, in the new entry, the data frame processing unit 110 copies the value of the received data frame to the FID and GS, sets the current time as the last update time, and sets the current time as the OLS and LD. The LS value of the received data frame is copied. Then, the process proceeds to step S836a.
  • step S836a the data frame processing unit 110 waits for a transmission success / failure notification regarding the data frame transmitted in step S830b.
  • the process proceeds to step S837a.
  • step S837a the data frame processing unit 110 determines whether transmission of the data frame in step S830b is successful. If the transmission fails, the process proceeds to step S838a, and if the transmission is successful, the process proceeds to step S839a.
  • Step S838a is executed in the case of (N1) or (N2).
  • N1 The data frame transmitted by the node device 100 itself as GS is returned to the node device 100 by backtracking and received, and all the adjacent node devices of the node device 100 are (N1-1) or (N1-2).
  • N1-1) Corresponds to the weight of the maximum value.
  • N1-2 If a data frame is transmitted by designating as LD, transmission fails.
  • the GS of the received data frame is a node device other than the node device 100, and all adjacent node devices other than the OLS are (N2-1) or (N2-2), and Transmission of the data frame to the OLS failed.
  • N2-1 Corresponds to the maximum weight.
  • N2-2 When a data frame is transmitted by designating as LD, transmission fails.
  • the data frame processing unit 110 discards the received data frame in step S838a. That is, the data frame processing unit 110 deletes the entry found in step S801 from the buffer unit 109. Then, the data frame reception process ends.
  • step S839a is executed when transmission from the node device 100 to the OLS of the node device 100 is successful for a data frame in which another node device that is not the node device 100 is GS.
  • the data frame processing unit 110 decreases the weight corresponding to the pair of GD and LD of the data frame transmitted in step S830b in the weighting table 104.
  • the data frame processing unit 110 updates the weight corresponding to the LD of the transmitted data frame (that is, the OLS stored in step S808 or S810) in the weighting table 104-i corresponding to the GD of the received data frame. To do.
  • the data frame processing unit 110 may update the weight using Expression (6). Further, the data frame processing unit 110 sets the current time as the last update time in the entry whose weight is updated in the weighting table 104-i. Then, the data frame reception process ends.
  • FIG. 39 is a diagram illustrating route selection in FIG. 9 in the form of a search tree representing a search space for searching for routes.
  • search spaces are often expressed in the form of search trees.
  • FIG. 39 is a diagram in which the search space is expressed as a search tree 400 from the viewpoint of route search that is dynamically performed in the network in the data frame transfer in the present embodiment. Note that the search tree 400 is not a data structure created in the node device, and is not a network topology itself.
  • Each search node included in the search tree 400 is labeled with a node ID of a node device in the network 1.
  • each search node is represented by three types of figures: a circle, a square, and a hexahedron. The difference in meaning between the circle, the square, and the six strokes will be described later.
  • each node device N 1 and N 7 since each node device N 1 and N 7, the root node of the search tree 400 is a search node 401 labeled N 1 is attached.
  • the goal of the route search is to find a search node 409 labeled N 7 in the search tree 400.
  • a search node labeled N i has a search node labeled N j as a child node.
  • the first search node labeled N i has as a child node the second search node labeled N j , and the second search node is N It has a third search node labeled i as a child node. Since the same is true below, the search tree 400 has potentially infinite search nodes.
  • search space pruning is a technique of ignoring one or more branches of a search tree in order to increase search efficiency.
  • various pruning methods are proposed according to the application field. Has been.
  • the first type of pruning is pruning a child node having the same label as the parent node.
  • the label of the third search node that is a child node of the second search node is the first search node that is the parent node of the second search node. Is equal to the label. Therefore, in the search after the second search node, the third search node is pruned.
  • the search nodes that are trimmed by the first type of trimming are represented by squares in FIG.
  • the second type of pruning is pruning a child node having the same label as the ancestor node.
  • the second type of pruning is enabled by the FID management table 105 of this embodiment.
  • the search nodes that are trimmed by the second type of trimming are represented by six strokes in FIG. In FIG. 39, a circle represents a search node searched without being trimmed.
  • the label of the search node 401 that is the root node of the search tree 400 is the node ID ⁇ N 1 of the node device N 1 that is the GS of the data frame. And, since only the node device N 1 in network 1 node device N 2 are adjacent, the search node 401 has only one search node 402 as a child node, the label of the search node 402 is N 2.
  • step S101 of FIG. 9 the data frame is transmitted from the node device N 1 to the node device N 2.
  • the transmission in step S101 corresponds to the search progressing from the search node 401 to the search node 402 in FIG.
  • the search node 402 has three search nodes 403 and 404 and 405 as child nodes, each label search node 403, 404 and 405 are N 3 and N 6 and N 1.
  • the node device N 2 first selects the node device N 3 as an LD and transmits a data frame to the node device N 3 in step S102. In FIG. This corresponds to the progress of the search.
  • the search node 403 has three search nodes 406, 407 and 408 as a child node, each label search nodes 406, 407, and 408 are N 4 and N 2 and N 5.
  • the node device N 3 first selects the node device N 4 as an LD and transmits a data frame to the node device N 4 in step S103. In FIG. This corresponds to the progress of the search.
  • the search node 406 has three search nodes 411, 412, and 413 as child nodes, each label search nodes 411, 412, and 413 are N 7 and N 5 and N 3.
  • the node device N 4 first selects the node device N 7 as an LD and transmits a data frame to the node device N 7 in step S104.
  • the search node 406 to the search node 411 This corresponds to the progress of the search.
  • the failure of a link between the step S104 the node device N 4 and N 7, transmission fails. That is, in the search tree 400, the search fails at the search node 411 and backtracking occurs. Incidentally, from the search node 411 to search node 406, backtracking on the search tree 400, on the actual network 1, the node apparatus N 4 without being received ACK frame is a phenomenon that times out.
  • the node device N 4 next selects the node device N 5 as an LD and transmits a data frame to the node device N 5 in step S105.
  • the transmission in step S105 corresponds to the search progressing from the search node 406 to the search node 412 in FIG.
  • the search node 412 Since the node devices N 3 and N 4 are adjacent to the node device N 5 in the network 1, the search node 412 has two search nodes 414 and 415 as child nodes, and the labels of the search nodes 414 and 415, respectively. Are N 3 and N 4 .
  • the search node 414 has the same label as the search node 403 that is an ancestor node. However, since the two search nodes 406 and 412 are sandwiched between the search nodes 403 and 414, the search node 414 is not trimmed at this time.
  • the search node 414 has three search nodes 416, 417, and 418 as the child node, the search node 416, 417, and 418 each label, is N 2 and N 4 and N 5.
  • the FID management table 105-N 3 of the node device N 3 upon receiving the data frame at step S106, the FID management table 105-N 3 of the node device N 3, it as an entry E 3 in Fig. 15 are already present. This means the following (O1) and (O2).
  • search tree 400 as ancestor nodes as viewed from the search node 414, the search node 403 exists with the same label N 3 as the search node 414 itself. (O2) Therefore, the search nodes 416, 417, and 418 that are child nodes of the search node 414 are pruning targets.
  • the pruning is realized as follows.
  • the presence of the search node 406 having the label N 4 as the ancestor node of the search node 414 having the label N 3 means that the entry of the LD at the time of step S106 in the entry E 3 of the FID management table 105-N 3 of the node device N 3 This corresponds to a value of N 4 (see FIG. 15).
  • the node device N 3 is the weight corresponding to the node device N 4 selected as LD in step S103, is set to the maximum value as shown in FIG. 14.
  • the node device N 3 excludes the node device N 4 from potential LD candidates, triggered by the reception of the data frame in step S106. Then, the exclusion from potential LD candidate, since it is the pruning of the search tree 400, the search node 417 with a label N 4 is trimmed.
  • search node 402 having the label N 2 as an ancestor node of the search node 414 is that the OLS value is N 2 in the entry E 3 of the FID management table 105-N 3 of the node device N 3. Corresponding (see FIG. 15).
  • the node device N 3 is the node device N 2 is OLS LD Do not choose as. In other words, the search node 416 with a label N 2 is pruned.
  • the node device N 3 selects the node device N 5 as LD.
  • the search node 418 is the first type. It is a target of pruning.
  • the transmission of the data frame from the node device N 3 to the node device N 5 in step S107 is performed as shown in FIG. 39, from the search node 414 on the search tree 400 to the search node 412 that is the parent node. Can be represented as a track. In other words, a child node of the search node 414, the search node 418 having the same label N 5 the search node 412 of the parent node is pruned.
  • step S108 the node device N 5 has to backtrack a data frame to the node apparatus N 4 is OLS.
  • the operation of step S108 is, in FIG. 39, is expressed as backtracking in the search tree 400 from the search node 412 having a label N 5 to search the node 406 having a label N 4.
  • the search node 415 that is a child node of the search node 412 and has the same label N 4 as the search node 406 of the parent node of the search node 412 is pruned.
  • step S109 the data frame is backtracked to the node device N 3 in which the node device N 4 is OLS.
  • FIG. 39 is expressed as backtracking in the search tree 400 from the search node 406 having a label N 4 to search the node 403 having a label N 3.
  • the search node 413 that is a child node of the search node 406 and has the same label N 3 as the search node 403 of the parent node of the search node 406 is pruned.
  • the unsearched child nodes of the search node 403 having the label N 3 are the search node 407 having the label N 2 and the search node 408 having the label N 5 .
  • the node device N 3 has already transmitted the data frame to the node device N 5 in step S107, and the weight corresponding to the node device N 5 is triggered by the reception of the data frame in step S109 as shown in FIG. Is set to the maximum value. Therefore, the node device N 5 are excluded from candidates for the LD, the search node 408 having a label N 5 are pruned.
  • step S110 as shown in FIG. 9, the node device N 3 has to backtrack a data frame to the node device N 2 is OLS.
  • the operation of step S110, in Figure 39, are expressed as backtracking in the search tree 400 from the search node 403 having a label N 3 to search a node 402 having a label N 2.
  • the search node 407 that is a child node of the search node 403 and has the same label N 2 as the search node 402 of the search node 402 that is the parent node of the search node 403 is pruned.
  • step S111 the node device N 2 newly selects the node device N 6 as LD, and transmits the data frame to the node device N 6.
  • Step transmission S111 is, in FIG. 39, it corresponds to proceed the search from the search node 402 having a label N 2 to search the node 404 having a label N 6.
  • the search node 404 Since the node devices N 7 and N 2 are adjacent to the node device N 6 in the network 1, the search node 404 has two search nodes 409 and 410 as child nodes, and the labels of the search nodes 409 and 410 respectively. Are N 7 and N 2 .
  • the node device N 6 first selects the node device N 7 as the LD, not the node device N 2 that is the OLS, and transmits the data frame in step S112. In other words, the search node 410 having a label N 2 is pruned. Then, the transmission of step S112, and advances the search to the search node 409 having the node ID ⁇ N 7 of the node device N 7 is a GD as a label, the search is terminated. Since the search ends in step S112, the search node 405 that is a child node of the search node 402 is not searched, but the search node 405 is also a target of the first type of pruning. It is expressed by.
  • the labels of the search nodes on the route are arranged in order and expressed as a tuple. , ⁇ N 1 , N 2 , N 6 , N 7 >.
  • This tuple is a path ⁇ N 1 , N 2 , N 6 , N 7 > learned in the network 1 of FIG.
  • the route is dynamically searched while the data frame is transferred.
  • the search order is represented by the search tree 400
  • the depth-first search order is shown in FIG.
  • the fact that the depth-first search is performed instead of the breadth-first search is understood from the fact that data frames are always unicast rather than multicast.
  • the aging time G f of the entry in the FID management table 105 is appropriately set, a potentially possible route until a route from GS to GD is found in the network 1. Is exhausted by depth-first search. That is, if the aging time Gf is not too short, a route is always found as long as there is a route from GS to GD.
  • the “worst case” described with reference to FIG. 24 refers to the case where the search node having the node ID of the GD node device as the label is found last in the traverse in the depth-first search order of the search tree 400. That is.
  • FIG. 40 is a timing chart showing the recognition of adjacent nodes by the transmission / reception of a hello frame and the route selection of FIG.
  • each of the node devices N 1 to N 7 independently performs the hello frame transmission process of FIG. Which node is device is arbitrary to send a hello frame to the above, in the example of FIG. 40, first, the node device N 2 executes the step S403 of FIG. 21 in step S1201, transmits a hello frame. Then, the hello frame is received by the node devices N 1 , N 3 , and N 6 adjacent to the node device N 2 , respectively. Then, each of the node devices N 1 , N 3 , and N 6 calls and executes the hello frame reception process of FIG. 20 in step S203 of FIG. 19, and recognizes the node device N 2 as an adjacent node device.
  • the node device N 4 executes the step S403 in FIG. 21, and transmits the hello frame. Then, the hello frame is received by the node devices N 3 , N 5 , and N 7 adjacent to the node device N 4 , respectively. Then, each of the node devices N 3 , N 5 , and N 7 calls and executes the hello frame reception process of FIG. 20 in step S203 of FIG. 19, and recognizes the node device N 4 as an adjacent node device.
  • step S1203 the node device N 3 executes step S403 in FIG. 21, and transmits a hello frame 312 in FIG. 10. Then, the hello frame 312 are respectively received by the node device N 2, N 4, and N 5 adjacent to the node device N 3. Then, each of the node devices N 2 , N 4 , and N 5 calls and executes the hello frame reception process of FIG. 20 in step S203 of FIG. 19, and recognizes the node device N 3 as an adjacent node device.
  • step S1204 the node device N 7 executes the step S403 in FIG. 21, and transmits the hello frame.
  • the link between the node device N 4 and N 7 is that a fault has not occurred yet. Therefore, the hello frame is received by the node devices N 4 and N 6 adjacent to the node device N 7 , respectively.
  • each of the node devices N 4 and N 6 calls and executes the hello frame reception process of FIG. 20 in step S203 of FIG. 19, and recognizes the node device N 7 as an adjacent node device.
  • step S1205 the node device N 1 executes the step S403 in FIG. 21, and transmits the hello frame. Then, the hello frame is received by the node device N 2 adjacent to the node device N 1 . Then, the node device N 2 calls and executes the hello frame reception process of FIG. 20 in step S203 of FIG. 19, and recognizes the node device N 1 as an adjacent node device.
  • step S1206 the node device N 6 executes the step S403 in FIG. 21, and transmits the hello frame. Then, the hello frame is received by the node devices N 2 and N 7 adjacent to the node device N 6 , respectively. Then, the node devices N 2 and N 7 call and execute the hello frame reception process of FIG. 20 in step S203 of FIG. 19, respectively, and recognize the node device N 6 as an adjacent node device.
  • step S1207 the node device N 5 executes the step S403 in FIG. 21, and transmits the hello frame. Then, the hello frame is received by the node devices N 3 and N 4 adjacent to the node device N 5 , respectively. Then, the node devices N 3 and N 4 respectively call and execute the hello frame reception process of FIG. 20 in step S203 of FIG. 19, and recognize the node device N 5 as an adjacent node device.
  • the node devices N 1 to N 7 in the network 1 shown in FIGS. 1 and 9 recognize the adjacent node devices, respectively, and store the adjacent node management tables 103-N 1 to 103-N 7 respectively . Update. Further, as shown in FIG. 20, the node devices N 1 to N 7 may update the weighting tables 104-N 1 to 104-N 7 ) in response to the reception of the hello frame.
  • the node device N 1 in step S101 performs the process of FIG. 34A, 34B ⁇ 35.
  • the node device N 2 that has received the data frame calls and executes the processes of FIGS. 25 to 29H from step S205 of FIG. Be the node device N 2 transmits an ACK frame in step S803 of FIG. 25, it is expressed as a step S101a in FIG. 40.
  • the node device N 1 is waiting to receive an ACK frame at step S1121 in FIG. 35.
  • the node device N 1 calls and executes the processing in FIG. 32 from step S206 in FIG. 19, and as a result, finishes the standby in step S1121, and steps S1122 and S1123 To finish the process of FIG.
  • the transmission in step S819 corresponds to step S102 in FIG. FIG. 10 illustrates the data frame 303 transmitted in step S102.
  • the node device N 3 that has received the data frame calls and executes the processes of FIGS. 25 to 29H from step S205 of FIG. Node device N 3 in step S803 in FIG. 25 that transmits the ACK frame, and is represented as step S102a in FIG. 40.
  • FIG. 10 illustrates the ACK frame 322 transmitted in step S102a.
  • the node device N 2 is waiting to receive an ACK frame at step S825 in FIG. 27.
  • the node device N 2 calls and executes the processing in FIG. 32 from step S206 in FIG. 19, and as a result, finishes waiting in step S825, and steps S826 and S827. To finish the process of FIG.
  • the transmission in step S819 corresponds to step S103 in FIG. FIG. 10 illustrates the data frame 304 transmitted in step S103.
  • the node device N 4 that has received the data frame calls and executes the processes of FIGS. 25 to 29A to H from step S205 of FIG. Node apparatus N 4 in step S803 of FIG. 25 that transmits the ACK frame, and is represented as step S103a in FIG. 40.
  • the node device N 3 is waiting to receive an ACK frame at step S825 in FIG. 27.
  • the node device N 3 calls and executes the processing in FIG. 32 from step S206 in FIG. 19, and as a result, finishes waiting in step S825, and steps S826 and S827. To finish the process of FIG.
  • step S103a the node device N 4 that has transmitted the ACK frame in step S803 in FIG. 25 continues the processing from step S804 onward, and in step S819 in FIG. 27, specifies the node device N 7 as the LD. Send a data frame.
  • the transmission in step S819 corresponds to step S104 in FIG.
  • step S1208 the link between the node device N 4 and N 7 in step S1208 is failure, the data frame does not reach the node device N 7. Therefore, in FIG. 40, the arrow in step S104 is a broken line from the middle.
  • Node device N 4 is waiting to receive an ACK frame at step S825 in FIG. 27. However, since the ACK frame is not received from the node device N 7 , the node device N 4 determines that transmission of the data frame to the node device N 7 has failed in step S1003 of the processing of FIG. recognize.
  • step S819 transmits the data frame by specifying a node device N 5 as LD.
  • the transmission in step S819 corresponds to step S105 in FIG.
  • the node device N 5 that has received the data frame calls and executes the processes of FIGS. 25 to 29A to H from step S205 of FIG. Be the node device N 5 transmits an ACK frame in step S803 of FIG. 25, it is expressed as a step S105a in FIG. 40.
  • the node device N 4 is waiting to receive an ACK frame at step S825 in FIG. 27.
  • the node device N 4 calls and executes the processing in FIG. 32 from step S206 in FIG. 19, and as a result, finishes waiting in step S825, and steps S826 and S827. To finish the process of FIG.
  • step S804 specifies the node device N 3 as LD Send a data frame.
  • the transmission in step S819 corresponds to step S106 in FIG.
  • the node device N 3 that has received the data frame calls and executes the processes of FIGS. 25 to 29A to H from step S205 of FIG. Node device N 3 in step S803 in FIG. 25 that transmits the ACK frame, and is represented as step S106a in FIG. 40.
  • the node device N 5 is waiting to receive an ACK frame at step S825 in FIG. 27. Then, the node device N 5 receives the ACK frame transmitted in step S 106 a, invokes and executes the processing of FIG. 32 from step S206 in FIG. 19, as a result, after a wait in step S825, and step S826 S827 To finish the process of FIG.
  • the transmission in step S819 corresponds to step S107 in FIG.
  • the node device N 5 that has received the data frame calls and executes the processes of FIGS. 25 to 29A to H from step S205 of FIG. Be the node device N 5 transmits an ACK frame in step S803 of FIG. 25, it is expressed as a step S107a in FIG. 40.
  • the node device N 3 is waiting to receive an ACK frame at step S825 in FIG. 27. Then, the node device N 3 receives the ACK frame transmitted in step S107a, invokes and executes the processing of FIG. 32 from step S206 in FIG. 19, as a result, after a wait in step S825, and step S826 S827 To finish the process of FIG.
  • step S804 the process proceeds to step S830 of FIG. 28 from step S818 in FIG. 27, the node device N 5 in step S830, transmits the data frame by specifying a node device N 4 is OLS as LD.
  • the transmission in step S830 corresponds to step S108 in FIG.
  • the node device N 4 that has received the data frame calls and executes the processes of FIGS. 25 to 29A to H from step S205 of FIG. Node apparatus N 4 in step S803 of FIG. 25 that transmits the ACK frame, and is represented as step S108a in FIG. 40.
  • the node device N 5 is waiting to receive an ACK frame at step S836 in FIG. 28.
  • the node device N 5 calls and executes the processing in FIG. 32 from step S206 in FIG. 19, and as a result, finishes waiting in step S836, and steps S837 and S839 To finish the process of FIG.
  • step S830 of FIG. 28 the node apparatus N 4 in step S830, transmits the data frame by specifying a node device N 3 is OLS as LD.
  • the transmission in step S830 corresponds to step S109 in FIG.
  • the node device N 3 that has received the data frame calls and executes the processing of FIGS. 25 to 29A to H from step S205 of FIG. Node device N 3 in step S803 in FIG. 25 that transmits the ACK frame, and is represented as step S109a in FIG. 40.
  • the node device N 4 is waiting to receive an ACK frame at step S836 in FIG. 28.
  • the node device N 4 calls and executes the processing in FIG. 32 from step S206 in FIG. 19, and as a result, finishes waiting in step S836, and steps S837 and S839 To finish the process of FIG.
  • step S830 of FIG. 28 the node device N 3 in step S830, transmits the data frame by specifying a node device N 2 is OLS as LD.
  • the transmission in step S830 corresponds to step S110 in FIG.
  • the node device N 2 that has received the data frame calls and executes the processing of FIGS. 25 to 29A to H from step S205 of FIG. Be the node device N 2 transmits an ACK frame in step S803 of FIG. 25, it is expressed as a step S110a in FIG. 40.
  • the node device N 3 is waiting to receive an ACK frame at step S836 in FIG. 28.
  • the node device N 3 calls and executes the processing in FIG. 32 from step S206 in FIG. To finish the process of FIG.
  • the node device N 2 that transmitted the ACK frame in step S803 of FIG. 25, as shown in step S110a, the step S804 to continue the subsequent processing, at step S819 of FIG. 27, specifies the node device N 6 as LD Send a data frame.
  • the transmission in step S819 corresponds to step S111 in FIG.
  • the node device N 6 that has received the data frame calls and executes the processes of FIGS. 25 to 29A to H from step S205 of FIG. Node device N 6 at step S803 of FIG. 25 that transmits the ACK frame, and is represented as step S111a in FIG. 40.
  • the node device N 2 is waiting to receive an ACK frame at step S825 in FIG. 27.
  • the node device N 2 calls and executes the processing of FIG. 32 from step S206 of FIG. 19, and as a result, ends the standby of step S825, and completes steps S826 and S827 To finish the process of FIG.
  • step S111a the node device N 6 that has transmitted the ACK frame in step S803 in FIG. 25 continues the processing from step S804, and in step S819 in FIG. 27, specifies the node device N 7 as the LD. Send a data frame.
  • the transmission in step S819 corresponds to step S112 in FIG.
  • the node device N 7 that has received the data frame calls and executes the processes of FIGS. 25 to 29A to H from step S205 of FIG. Node device N 7 in the step S803 of FIG. 25 that transmits the ACK frame, and is represented as step S112a in FIG. 40.
  • step S1208 the route ⁇ N 1 , N 2 , N 6 , N 7 > is selected and learned. That is, the weighting tables 104-N 1 to 104-N 6 are updated in the node devices N 1 to N 6 by the series of processes described above.
  • step S112a as a result of learning, the node device N 7 data frame specified as GD, instead of being trial and error transfer while backtracking in the network 1 as shown in FIG. 9, initially Is transferred efficiently.
  • Some specific examples are as follows.
  • the node device N 2 when the node device N 2 becomes GS and transmits a data frame designating the node device N 7 as GD, the node device N 2 is also based on the learned weighting table 104-N 2 . , it selects the node device N 6 from the beginning as LD. Then, the data frame is transmitted from the node device N 6 to the node device N 7 which is a GD.
  • the node device N 5 uses the learned weighting table 104-N 5 to The node device N 4 is first selected as the LD, not the node device N 3 that has occurred. In the same manner, the node device N 4 selects the node device N 3 as LD, the node device N 3 Select a node device N 2 as LD, node device N 2 selects a node device N 6 as LD, node device N 6 selects a node device N 7 as LD.
  • FIG. 41A is an explanatory diagram (part 1) of the effect of the present embodiment.
  • FIG. 41A is a diagram for explaining how routes are selected dynamically and autonomously distributed in the network 1 of FIG. 4 in the same manner as in FIG. Specifically, FIG. 41A, the node device N 1 becomes a GS, when transmitting the data frame specifying the node device N 7 as GD, showing how routing of in the network 1.
  • guaranteed delivery data frame transmitted from the node device N 1 is, in S1801, S1802, S1803, S1804 order of FIG. 41A, is transferred between the node devices, and finally reaches the node device N 7.
  • the node device N 7 GS at S1811, S1812, S1813, S1814 order of FIG. 41A, the return processing has reached assurance ACK frame for guaranteed delivery data frames, finally reached warranty data frames GS Return to a node device N 1.
  • the arrival guarantee data frame is transferred in the order of S1801, S1802, S1803, and S1804, the arrival guarantee transfer record table 115 is created in each node device.
  • the return paths S1811, S1812, S1813, and S1814 to which the arrival guarantee ACK frame is returned are relayed so as to reversely follow the forward paths S1801, S1802, S1803, and S1804.
  • an arrival guarantee ACK frame which is a global ACK for the arrival guarantee data frame, can be reliably returned from the GD to the GS.
  • FIG. 41B is an explanatory diagram (part 2) of the effect of the present embodiment.
  • the transfer routes of the arrival guarantee data frame are S1901, S1902, S1903, and S1904.
  • the transfer path of the arrival guarantee ACK frame corresponding to the arrival guarantee data frame is S1911, S1912, S1913.
  • a communication failure occurs between the node equipment N 3 and N 2 , and the arrival guarantee ACK frame disappears in that portion.
  • the node device N 1 cannot receive the arrival guarantee ACK frame, and retransmission of the arrival guarantee data frame occurs due to a retransmission timeout.
  • the path of the retransmission frame is S1921 and S1922.
  • the node equipment N 3 that has received the retransmitted arrival guarantee data frame knows from the arrival guarantee transfer record table 115 that it has received the arrival guarantee ACK frame corresponding to the arrival guarantee data before that. . In such a case, the transfer of the retransmitted arrival guarantee data frame is stopped. Instead, an arrival guarantee ACK frame indicating that the arrival guarantee data frame has been normally received by the GD node device N 7 is returned to the node device N 1 through a route of S1931 and S1932. Thereby, useless traffic is suppressed.
  • FIG. 41C is an explanatory diagram (part 3) of the effect of the present embodiment.
  • the arrival guarantee data frame is transferred from the node device N 1 to the node device N 7 , it is shown that the arrival has been made while getting lost considerably. That is, after the path is traced to S101, S102, and S103, backtracking occurs in S104. Thereafter, S105, S106, S107 will revert to the node device N 3, the then follow the S107, S108, S109, S110, S111, S112, guaranteed delivery data frame is arrived to the node device N 7.
  • the wireless ad hoc network operates to select an appropriate route autonomously through several trials and errors, and finally, from the node device N 1 through N 2 and N 6 , the node device route to N 7 is to be selected.
  • the node device route to N 7 is to be selected.
  • the node ID of the node device N 4 that has been selected is selected.
  • the latest LS from the node device N 1 through N 2 and N 6 to the node device N 7 is stored in the arrival guarantee transfer record table 115. Note that the entry of the inefficient route is naturally deceived on the arrival guarantee transfer record table 115 by the aging process.
  • the transfer route of the arrival guarantee ACK frame is determined in synchronization with the dynamic route selection algorithm according to the present embodiment.
  • the arrival guarantee ACK frame is managed by the arrival guarantee transfer record table 115 held by each node device on the route. For this reason, it becomes possible for each node to perform appropriate retransmission control by autonomously judging the loss of the arrival guarantee ACK frame on the route due to the deterioration of the radio quality or the like.
  • FIG. 41D is an explanatory diagram (part 4) of the effect of the present embodiment. This figure is similar to FIG. 41C. Although there is no trackback, the arrival guarantee data frame initially followed an inefficient path of S2101, S2102, S2103, S2104, S2105, S2106, and S2107. However, an appropriate route is selected over time, and an efficient route such as S2111, S2112, S2113, and S2114 is selected as the route for the arrival guarantee ACK frame. Also in this case, as a result of the control so that the latest LS is always stored in the arrival guarantee transfer record table 115, efficient retransmission control can be realized while absorbing fluctuations in radio quality.
  • a local ACK and an arrival guarantee ACK may be combined and operated.

Landscapes

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

Abstract

 ノード装置は、第1のノード装置が送信元として設定され、第2のノード装置が最終宛先として設定された、第1のデータを自装置に隣接する第1の隣接ノードから受信する。また、ノード装置は、第1の隣接ノード装置以外の自装置に隣接する第2の隣接ノード装置に、第1のデータを送信し、第1のデータを識別する第1のデータ識別情報と第1の隣接ノード装置を識別するノード識別情報を対応付けて記憶する。そして、ノード装置は、第1のデータ識別情報を含み、前記第2のノード装置が送信元として設定され、前記第1のノード装置が宛先として設定された第2のデータを受信する。すると、ノード装置は、第2のデータに基づき、第1のデータが第2のノード装置により受信済みであることを示す情報を記憶し、第1のデータ識別情報に対応付けて記憶されたノード識別情報により識別される第1の隣接ノード装置に、第2のデータを転送する。

Description

データ通信装置および方法
 本発明は、複数のデータ通信装置を含むネットワークにおける、経路選択が可能なデータ通信装置に関する。
 無線アドホックネットワークにおいて、複数のデータ通信を行なうデータ通信装置(以降、ノード装置、または単にノードということがある)によりデータ転送が実現されている。このデータ転送は,このアドホックネットワークにおいて最初の送信元となるデータ通信装置である送信元ノード(GS:Global Source)から送信されたデータを、複数のノードを経由しながら最終的な宛先であるデータ通信装置である最終宛先ノード(GD:Global Destination)までデータを転送する。
 従来技術では,GSであるノードXとGDであるノードZ間でデータ転送が行われる場合、次のようなACK(ACKnowledge)制御が実行されている。まず、ノードXとその隣接ノードa間で行われるデータ送信1について、ノードaがACKをノードXに返す。次に、ノードaとその隣接ノードb間でデータ送信2が実行され、データ送信2に対するACKをノードbがノードaに返す。同様の転送をノードZまで行う。すなわち、従来のACK制御では、隣接ノード間でのデータ送信とそれに対するローカルなACK返送を行なうものがあった。
 また、アドホックネットワークのACK技術として往路のブロードキャストと復路のユニキャストによりエンドノード間の経路を構築するものもあった。
 さらに、サービス品質(QoS)に基づいて再送を制御する従来技術(例えば特許文献1に記載の技術)や、障害の発生したノードを迂回する代替パスを確立することによる再送制御技術(例えば特許文献2に記載の技術)が知られている。さらに、送信側装置から再送されたデータパケットについて、受信確認パケット(ACK)によって受信済みであることが判断されると、そのデータパケットを廃棄制御する再送制御技術が従来知られている(例えば特許文献3に記載の技術)。
特表2004-531971号公報 特表2004-537206号公報 特開2006-287331号公報
 各ノードからデータを収集するだけでなく、各宛先ノードへ制御情報を送信する場合やファームウェアの更新を行なう場合、データが宛先ノードに正確に到達したかを確認する必要がある。また、無線アドホックネットワークでデータサイズの大きな動画などを転送する場合、フェージング等に起因してリトライが頻発することがある。
 上記の場合、従来のように隣接ノード間だけのACKの確認では不十分であった。
 また、アドホックネットワークにおいて宛先ノードに到達したことを確認しようとするとネットワークに輻輳が発生するという問題があった。
 そこで本発明の課題は、無線アドホックネットワーク等の自律分散型ネットワークにおける送信元と宛先のノード装置間で、ネットワークの輻輳を回避しながらGSとGD間での受信確認を正確に行なう通信装置を提供することである。
 態様の一例では、受信手段と通信制御部を備えるノード装置が提供される。
 前記受信手段は、第1のノード装置が送信元として設定され、第2のノード装置が最終宛先として設定された、第1のデータを自装置に隣接する第1の隣接ノードから受信する。
 前記通信制御部は、前記第1の隣接ノード装置以外の自装置に隣接する第2の隣接ノード装置に、前記第1のデータを送信する。また、前記通信制御部は、前記第1のデータを識別する第1のデータ識別情報と前記第1の隣接ノード装置を識別するノード識別情報を対応付けて記憶部に記憶する。また、前記通信制御部は、前記受信手段により受信された、前記第1のデータ識別情報を含み、前記第2のノード装置が送信元として設定され、前記第1のノード装置が宛先として設定された第2のデータに基づき、前記記憶部に、前記第1のデータが前記第2のノード装置により受信済みであることを示す情報を記憶する。また、前記通信制御部は、前記記憶部に前記第1のデータ識別情報に対応付けて記憶された前記ノード識別情報により識別される前記第1の隣接ノード装置に、前記第2のデータを転送する。
 無線アドホックネットワーク等において、通信経路の輻輳を回避しながらGDからGSへ受信確認データによる到達通知を行うことが可能となる。
本実施形態による再送制御処理の例1を示す図である。 図1Aの各ノードが保有する到達保証転送記録テーブル115の例を示す図である。 本実施形態による再送制御処理の例2を示す図である。 図2Aの各ノードが保有する到達保証転送記録テーブル115の例を示す図である。 本実施形態による再送制御処理の例3を示す図である。 図3Aの各ノードが保有する到達保証転送記録テーブル115の例を示す図である。 ネットワーク構成の第1の例を示す図である。 ネットワーク構成の第2の例を示す図である。 本実施形態におけるノード装置の構成を示す機能ブロック図である。 本実施形態におけるノード装置のハードウェア構成を示す図である。 1つのノード装置に注目して重みの学習について説明する図である。 図4のネットワーク1において動的かつ自律分散的に経路が選択される様子を説明する図である。 フレームの例を示す図である。 図6のバッファ部109に格納されるデータの例を示す図である。 図6の隣接ノード管理テーブル103の例を示す図である。 図6の重み付けテーブル104の例を示す図である。 図13の重み付けテーブル104-1-N3の変化を説明する図である。 図6のFID管理テーブル105の例を示す図(その1)である。 図6のFID管理テーブル105の例を示す図(その2)である。 図6の再送信バッファ117の例を示す図である。 図6の組立バッファ116の例を示す図である。 フレーム受信処理のフローチャートである。 図19のステップS203におけるハローフレーム受信処理のフローチャートである。 ハローフレーム送信処理のフローチャートである。 隣接ノード管理テーブル103のエージング処理のフローチャートである。 重み付けテーブル104のエージング処理のフローチャートである。 FID管理テーブル105のエージング処理のフローチャートである。 図19のステップS205におけるデータフレーム受信処理のフローチャート(その1)である。 図19のステップS205におけるデータフレーム受信処理のフローチャート(その2)である。 図19のステップS205におけるデータフレーム受信処理のフローチャート(その3)である。 図19のステップS205におけるデータフレーム受信処理のフローチャート(その4)である。 図19のステップS205におけるデータフレーム受信処理のフローチャート(その5)である。 図19のステップS205におけるデータフレーム受信処理のフローチャート(その6)である。 図19のステップS205におけるデータフレーム受信処理のフローチャート(その7)である。 図19のステップS205におけるデータフレーム受信処理のフローチャート(その8)である。 図19のステップS205におけるデータフレーム受信処理のフローチャート(その9)である。 図19のステップS205におけるデータフレーム受信処理のフローチャート(その10)である。 図19のステップS205におけるデータフレーム受信処理のフローチャート(その11)である。 図19のステップS205におけるデータフレーム受信処理のフローチャート(その12)である。 到達保証転送記録テーブルへの記録処理の詳細を示すフローチャートである。 到達保証ACK送信処理の詳細を示すフローチャートである。 図26のステップS812aにおける重み付けテーブル調整処理のフローチャートである。 図19のステップS206におけるACKフレーム受信処理のフローチャートである。 ACKフレームがタイムアウト時刻までに受信されない場合の処理を示すフローチャートである。 ノード装置100がGSとなってデータフレームを送信する場合の送信処理のフローチャート(その1)である。 ノード装置100がGSとなってデータフレームを送信する場合の送信処理のフローチャート(その2)である。 ノード装置100がGSとなってデータフレームを送信する場合の送信処理のフローチャート(その3)である。 再送信バッファ117のエージング処理のフローチャートである。 組立バッファ116のエージング処理のフローチャートである。 GSにもなりうるノード装置100が、データフレーム受信処理の一部として図28の処理の代わりに行う処理のフローチャートである。 経路を探索するための探索空間を表す探索木の形式で、図9における経路選択を説明する図である。 ハローフレームの送受信による隣接ノードの認識と図9の経路選択とを示すタイミングチャートである。 本実施形態の効果の説明図(その1)である。 本実施形態の効果の説明図(その2)である。 本実施形態の効果の説明図(その3)である。 本実施形態の効果の説明図(その4)である。
 以下、いくつかの実施形態について、図面を参照しながら詳細に説明する。具体的には、まず図1Aから図3Bを参照してデータのGSからGDへの到達保証を要求することを含むデータがGDからGSへ転送され、このグローバル到達ACKがGDからGSに返送され、あるいは再送されたことを示す到達ACKの動作について説明する。次に図4と図5を参照してネットワーク構成の例を説明し、図6~図40を参照して本実施形態について説明する。最後に、図41A~図41Dを参照して本実施形態の効果について説明する。
 無線アドホックネットワーク等においてS/Nが十分確保できない通信環境下でデータ送受信を正常に行うためには、隣接ノード間のローカルなACKとは別のACK制御が必要となる。すなわち、GDからGSへノードをまたいだグローバルなACKを通知し、そのグローバルACKが未到達の場合には、GSによる再送処理が必須となる。以後、本実施形態では、このようなグローバルなACKを到達保証ACKと呼ぶことにする。
 ここで,正常にデータ送受信が完了しても、フェージング等の影響で電波品質が悪い場合には、到達保証ACKの返信経路の途中で、到達保証ACKの送受信に失敗してしまう。その結果、GSが到達保証ACKを受信できずに、該当するデータフレームを再送してしまう可能性が高くなる。特に、GSからGDまで複数ノードを経由して到達保証ACKを通知する場合、到達保証ACKの送受信に失敗する可能性が増し、その結果、GSからのデータフレームの再送が頻発してネットワークの負荷が増大する。
 IP(Internet Protocol)をベースとするTCP(Transfer Control Protocol)技術で実現されるような再送制御技術を、無線アドホックネットワークにも適用することは想到できる。例えば、前述した従来技術の一つでは、次のような中継装置が実現されている。すなわち、中継装置において、送信側装置から再送されたデータパケットについて、宛先側からの受信確認パケット(ACK)によって受信済みであることが判断されると、そのデータパケットが廃棄される。この結果、ACKが経路途中で消失してしまうことにより送信側装置が該当するTCP/IPデータの再送を行っても、ACKが正常に受信できている中継装置より宛先側にはTCP/IPデータが再送されないように制御することができる。
 ここで、TCPによる再送制御は、送信元と宛先のノード装置間で、通信開始に先立ってセッションを確立することが前提である。
 一方、無線アドホックネットワークは、GSから送信されたデータを、複数のノードで無線品質に応じて動的に経路を選択しながら、GDまでデータを転送できることが大きな特徴である。そして、アドホックネットワークを流れるデータフレームのペイロードには、様々なデータを格納して伝送することができる。例えば、アドホックデータフレームのペイロードには、イーサネットフレーム、IPパケット、さらには上位レイヤのPDU(Protocol Data Unit)、あるいはアプリケーションが直接扱うデータ等を格納することができる。
 しかし、このようなアドホックネットワークに、TCP技術を応用した再送制御方式を実装しようとした場合、アドホックレイヤよりも上位のレイヤで制御されるセッションの確立を前提とする再送方式を実装する必要が生じる。前述したように、無線アドホックネットワーク上で大きなサイズのデータを伝送するためには、GSとGD間のグローバルな再送制御が必須と考えられる。しかし、TCPベースの再送制御方式を実装するためには、伝送されるデータを、セッションの確立を前提とする上位レイヤのPDUに合わせて格納し伝送する必要が生じる。このため、無線アドホックネットワークのデータ伝送の自由度が損なわれてしまうという問題がある。
 そこで、以下に説明する実施形態では、GSとGD間のグローバルな再送制御を、アドホックレイヤで実現する方式について説明する。
 図1Aは、本実施形態による再送制御処理の例1を示す図である。また、図1Bは、図1Aの各ノードA,B,Cが保有する到達保証転送記録テーブル115A,115B,115Cの例を示す図である。
 図1Aにおいて、3つのノードA,B,Cは、無線アドホックネットワークを構成する通信ノード装置(以下単に「ノード」と表記)である。そして、図1Aの例1は、GSであるノードAから、中継ノードであるノードBを経由して、GDであるノードCに、到達することが保証されるデータフレームを転送する例を示している。もちろん、無線アドホックネットワークを構成するノードは、A,B,Cに限られるものではない。また、GS(ノードA)からGD(ノードC)へのデータフレームの転送は、ノードBのみを中継するものに限られるものではなく、より多くのノードを中継する場合にも、本実施形態を適用することができる。以下、到達することが保証されるデータフレームを、「到達保証データフレーム」と表記する。
 図1Aにおいて、時刻T1にノードAから送信された到達保証データフレームD101(図中では「データD101」と表記)は、ノードAが隣接ノード中から選択したノードBに転送され、時刻T2にノードBで受信される。この到達保証データフレームD101において、GSとしてはノードAが指定され、GDとしてはノードCが指定されている。時刻T2にノードBで受信された到達保証データフレームD101は、ノードBが隣接ノード中から選択したノードCに転送され、時刻T3にノードCで受信される。ここで、ある対象ノードの隣接ノードとは、その対象ノードからホップ数1以内の無線通信範囲に存在するノードをいう。
 時刻T3に到達保証データフレームD101を受信したノードCは、D101のGSとして指定されているノードAをGD、自分自身をGSと指定して、到達保証ACKフレームG101を送信する。この到達保証ACKフレームG101は、到達保証データフレームD101に対するACK(肯定応答)である。なお、到達保証ACKフレームは、データフレームを受信した各ノードが送信元の隣接ノードに返すローカルなACKとは異なることに注意されたい。到達保証ACKフレームG101は、ノードCがデータD101から抽出した隣接送信元ノードBに転送され、時刻T4にノードBで受信される。時刻T4にノードBで受信された到達保証ACKフレームG101は、ノードBが隣接ノード中から選択したノードAに転送され、時刻T5にノードAで受信される。これにより、ノードAは、到達保証データフレームD101がノードCに到達したことを認識できる。
 さらに、時刻T6にノードCをGD、ノードAをGSと指定して送信された到達保証データフレームD102は、時刻T7にノードBで受信および転送され、時刻T8にノードCで受信される。ノードCは、到達保証データフレームD102に対するACKである到達保証ACKフレームG102を、データD102の送信元であるノードAをGD、自分自身をGSとして送信する。この到達保証ACKフレームG102は、時刻T9にノードBで受信および転送され、時刻T10にノードAで受信される。これにより、ノードAは、到達保証データフレームD102もノードCに到達したことを認識できる。
 本実施形態においては、ノードAからノードCに送信された到達保証データフレームD101やD102に対して、それらに対するACKである到達保証ACKフレームG101やG102が、ノードAに返送されるように、以下のような制御が行われる。
 送信元ノードであるGSは、到達保証データフレームに、到達保証IDを指定して送信する。GSは、到達保証ACKの値を一意である限り任意に指定できる。
 各ノードA,B,Cは、到達保証転送記録テーブル115A,115B,115Cをそれぞれ保持する。図1Bは、図1Aの到達保証転送記録テーブル115A,115B,115Cの例を示す図である。
 GSであるノードAは、時刻T1およびT6に到達保証データフレームD101およびD102を送信すると、各到達保証データフレームに関する情報を到達保証転送記録テーブル115Aに記録する。これらの情報の各エントリは、図1Bに示される到達保証転送記録テーブル115A中のイベント時刻フィールドの値がT1およびT6の各行である。また、ノードAは、時刻T5およびT10にノードBから到達保証ACKフレームG101およびG102を初めて受信すると、各到達保証ACKフレームに関する情報を到達保証転送記録テーブル115Aに記録する。これらの情報の各エントリは、図1Bに示される到達保証転送記録テーブル115A中のイベント時刻フィールドの値がT5およびT10の各行である。
 ノードBは、時刻T2およびT7に到達保証データフレームD101およびD102を初めて受信すると、各到達保証データフレームに関する情報を到達保証転送記録テーブル115Bに記録する。これらの情報の各エントリは、図1Bに示される到達保証転送記録テーブル115B中のイベント時刻フィールドの値がT2およびT7の各行である。また、ノードBは、時刻T4およびT9にノードCから到達保証ACKフレームG101およびG102を初めて受信すると、各到達保証ACKフレームに関する情報を到達保証転送記録テーブル115Bに記録する。これらの情報の各エントリは、図1Bに示される到達保証転送記録テーブル115B中のイベント時刻フィールドの値がT4およびT9の各行である。
 GDであるノードCは、時刻T3およびT8に到達保証データフレームD101およびD102を初めて受信すると、各到達保証データフレームに関する情報を到達保証転送記録テーブル115Cに記録する。これらの情報の各エントリは、図1Bに示される到達保証転送記録テーブル115B中のイベント時刻フィールドの値がT3およびT8の各行である。
 到達保証転送記録テーブル115A~Cの情報において、イベント時刻フィールドには、到達保証データフレームまたは到達保証ACKフレームの処理契機に対応する時刻値が記録される。図1Aの例では、各時刻値T1~T10が記録される。
 到達保証IDフィールドには、受信または送信された到達保証データフレームまたは到達保証ACKフレーム中の到達保証ヘッダに格納されている到達保証IDが記録される。
 送信元のGSは、各ノードが各到達保証データフレームをGSと到達保証ID(とポート番号)によって一意に識別できるように、自らが送信する到達保証データフレームに、到達保証IDを任意に指定する。ただし、GSは、一度送信されたフレームを再送するときには、同じ到達保証IDを付与する。図1Bの例では、ノードAは、イベント時刻=T1,T2,T3で処理される到達保証データフレームD101には、到達保証ID=1を付与する。また、ノードAは、イベント時刻=T6,T7,T8で処理される到達保証データフレームD102には、到達保証ID=2を付与する。またGSが、例えば1つの大きなデータを複数の到達保証データフレームに分割して送信するときに、それらの一連のまとまりのフレーム群に対して、到達保証IDとして、例えばシーケンシャルな番号を順次付与する。
 一方、宛先のGDは、自らが送信する到達保証ACKフレームに、そのACKに対応する受信された到達保証データフレームに設定されている到達保証IDを付与する。これも、各ノードが、各到達保証ACKフレームを、GSと到達保証ID(とポート番号)によって一意に識別できるようにするためである。図1Bの例では、ノードAは、イベント時刻=T4,T5で処理される到達保証データフレームD101には、到達保証ID=1を付与する。また、ノードAは、イベント時刻=T9,T10で処理される到達保証データフレームD102には、到達保証ID=2を付与する。
 ポート番号フィールドには、受信または送信された到達保証データフレームまたは到達保証ACKフレーム中の到達保証ヘッダに格納されているポート番号が記録される。ポート番号は、送信元のGSが任意に指定する。ポート番号は、GSが、アプリケーションの処理の種別を指定するために使用することができる。またGSが、例えば1つの大きなデータを複数の到達保証データフレームに分割して送信するときに、それらの一連のまとまりのフレーム群に対して、ポート番号として、同一の番号を付与する。図1Bの例では、全ての到達保証転送記録テーブル115A~Cの全てのエントリにおいて、ポート番号=1が記録されている。すなわち、ここで転送されるデータフレームは全て、GSであるノードAで、同じデータから分割されたデータフレームであることを示している。
 スタートフラグフィールドには、送信される到達保証データフレームが、上記一連のまとまりのフレーム群の先頭フレームであるときに、スタートフラグ=1が記録される。このスタートフラグは、送信される到達保証データフレーム中の到達保証ヘッダに格納されて伝送される。終了フラグフィールドには、送信される到達保証データフレームが、上記一連のまとまりのフレーム群の末尾フレームであるときに、終了フラグ=1が記録される。この終了フラグは、送信される到達保証データフレーム中の到達保証ヘッダに格納されて伝送される。送信される到達保証データフレームが、上記一連のまとまりのフレーム群の先頭でも末尾でもないフレームであるときには、スタートフラグフィールドにはスタートフラグ=0が、終了フラグフィールドには終了フラグ=0が記録される。なお、到達保証ACKフレームに対応する到達保証転送記録テーブル115のエントリでは、スタートフラグフィールドおよびエンドフラグフィールドの値は意味をなさない(図中「-」と表記)。スタートフラグおよびエンドフラグは、送信元のGSが、送信する各到達保証データフレームに付与する。図1Bの例では、ノードAは、イベント時刻=T1,T2で処理される到達保証データフレームD101には、スタートフラグ=1(終了フラグ=0)を付与する。また、ノードAは、イベント時刻=T6,T7で処理される到達保証データフレームD102には、終了フラグ=1(スタートフラグ=0)を付与する。
 GSフィールドには、送信される到達保証データフレームまたは到達保証ACKフレームのデータフレームヘッダに格納されている、そのフレームを最初に送信したノードのノードIDであるGSが格納される。図1Bの例では、全ての到達保証転送記録テーブル115A~Cの全てのエントリにおいて、ノードAのノードID(図中では「ノードA」と表記)が記録されている。すなわち、到達保証転送記録テーブル115A~Cの全てのエントリに対応するフレームデータは、ノードAから送信された到達保証データフレームに対応するものであることが示されている。
 LS(Local Source)フィールドには、そのエントリを生成した到達保証データフレームまたは到達保証ACKフレームのアドホックヘッダに格納されている、そのフレームを送信した直前の隣接ノードのノードIDであるLSが格納される。図1Bの例では、ノードBが保持する到達保証転送記録テーブル115Bにおいて、イベント時刻=T2,T7の各エントリのLSフィールドには、ノードAのノードID(図中では「ノードA」と表記)が記録されている。すなわち、イベント時刻=T2,T7の各エントリに対応する到達保証データフレームD101およびD102は、ノードAが送信したものであることが示されている。また、同じくノードBが保持する到達保証転送記録テーブル115Bにおいて、イベント時刻=T4,T9の各エントリのLSフィールドには、ノードCのノードID(図中では「ノードC」と表記)が記録されている。すなわち、イベント時刻=T4,T9の各エントリに対応する到達保証ACKフレームG101およびG102は、ノードCが送信したものであることが示されている。さらに、ノードAとCが保持する到達保証転送記録テーブル115Aと115Cにおいて、イベント時刻=T5,T10,T3,T8の各エントリのLSフィールドには、ノードBのノードID(図中では「ノードB」と表記)が記録されている。すなわち、イベント時刻=T5,T10,T3,T8の各エントリに対応する到達保証ACKフレームG101およびG102と到達保証データフレームD101およびD102は、ノードBが送信したものであることが示されている。
 到達保証転送情報フィールドには、自ノードが到達保証データフレームを送信した場合またはそれに対応する到達保証ACKフレームを受信した場合には「送信元」(またはそれを示す値)が記録される。自ノードが到達保証データフレームを受信して他ノードへ転送した場合には「あり」(またはそれを示す値)が記録される。自ノードが到達保証ACKフレームを受信または送信した場合には「なし」(またはそれを示す値)が記録される。
 到達保証ACK受信情報フィールドには、自ノードが到達保証ACKフレームを送信した場合には「ACK送信元」(またはそれを示す値)が記録される。自ノードが到達保証ACKフレームを受信して他ノードへ転送した場合には「あり」(またはそれを示す値)が記録される。自ノードが到達保証データフレームを受信または送信した場合には「なし」(またはそれを示す値)が記録される。
 図1Bの例では、GSであるノードAが保持する到達保証転送記録テーブル115Aの全てのエントリの到達保証転送情報フィールドには「送信元」が記録される。同じく到達保証転送記録テーブル115Aのイベント時刻=T1,T6に対応するエントリの到達保証ACK受信情報フィールドには、「なし」が記録される。即ち、イベント時刻=T1,T6において、ノードAは、到達保証転送情報フィールドの「送信元」と到達保証ACK受信情報フィールドの「なし」とによって、到達保証データフレームを送信したことが示されている。また、同じく到達保証転送記録テーブル115Aのイベント時刻=T5,T10に対応するエントリの到達保証ACK受信情報フィールドには、「あり」が記録される。即ち、イベント時刻=T5,T10において、ノードAは、到達保証転送情報フィールドの「送信元」と到達保証ACK受信情報フィールドの「あり」とによって、到達保証ACKフレームを受信したことが示されている。
 また、ノードBが保持する到達保証転送記録テーブル115Bにおいて、イベント時刻=T2,T7に対応するエントリの、到達保証転送情報フィールドには「あり」が記録され、到達保証ACK受信情報には「なし」が記録される。すなわち、イベント時刻=T2,T7において、ノードBは、到達保証データフレームを受信して他ノードに転送したことが示されている。また、ノードBが保持する到達保証転送記録テーブル115Bにおいて、イベント時刻=T4,T9に対応するエントリの、到達保証ACK受信情報には「あり」が記録され、到達保証転送情報フィールドには「なし」が記録される。すなわち、イベント時刻=T4,T9において、ノードBは、到達保証ACKフレームを受信して他ノードに転送したことが示されている。
 図1Bに示される到達保証転送記録テーブル115A~Cの例によって、図1Aにおいて、下記のような制御が実現される。まず、時刻T1にノードAから到達保証データフレームD101が送信されたときに、到達保証転送記録テーブル115Aのイベント時刻=T1を含むエントリが生成される。このフレームは、ノードAが隣接ノード中から選択したノードBに転送され、時刻T2にノードBで受信される。この結果、到達保証転送記録テーブル115Bのイベント時刻=T2を含むエントリが生成される。
 時刻T2にノードBで受信された到達保証データフレームD101は、ノードBが隣接ノード中から選択したノードCに転送され、時刻T3にノードCで受信される。この結果、到達保証転送記録テーブル115Bのイベント時刻=T2を含むエントリが生成される。到達保証転送記録テーブル115Cのイベント時刻=T3を含むエントリが生成される。
 時刻T3に到達保証データフレームD101を受信したノードCは、D101のGSとして指定されているノードAをGD、自分自身をGSと指定して、到達保証ACKフレームG101を送信する。この到達保証ACKフレームG101は、ノードCがデータD101から抽出した隣接送信元ノードBに転送され、時刻T4にノードBで受信される。この結果、到達保証転送記録テーブル115Bのイベント時刻=T4を含むエントリが生成される。
 時刻T4にノードBで受信された到達保証ACKフレームG101は、ノードBが隣接ノード中から選択したノードAに転送され、時刻T5にノードAで受信される。この結果、到達保証転送記録テーブル115Aのイベント時刻=T5を含むエントリが生成される。これにより、ノードAは、到達保証データフレームD101がノードCに到達したことを認識できる。
 到達保証データフレームD101および到達保証ACKフレームG102に関する時刻T6~T10の処理についても、上記と同様であり、それぞれに対応するエントリが各到達保証転送記録テーブル115A~Cに生成される。
 図2Aは、本実施形態による再送制御処理の例2を示す図である。また、図2Bは、図2Aの各ノードA,B,Cが保有する到達保証転送記録テーブル115A,115B,115Cの例を示す図である。図2Bに示される各到達保証転送記録テーブル115A~Cの意味は、図1Bの場合と同じであるため、個々の値等の説明は省略する。
 図2Aでは、時刻T11にノードAから送信された到達保証データフレームD111が、時刻T12にノードBで受信・転送され、時刻T13にノードCで受信される場合が示されている。
 ノードCは、時刻T13以後、到達保証データフレームD111に対応する到達保証ACKフレームG111を返送するが、フェージング等の影響によりノードCからノードBに向かう無線リンクの品質が悪化し、到達保証ACKフレームG111がノードBに到達しなかったとする。この場合、ノードBが到達保証ACKフレームG111を受信することができず、さらにノードAも受信できない。この結果、ノードAにおいて、時刻T14で、再送のためのタイムアウトが発生し、ノードAは、到達保証データフレームD111を再送する。この再送フレームは、時刻T15にノードBで受信される。
 ノードBは、受信された到達保証データフレームD111から、GSとポート番号と到達保証IDを抽出し、これらの値の組をキーとして図2Bの到達保証転送記録テーブル115Bを検索する。この結果、イベント時刻=T12のエントリ(時刻T15のエントリはまだ生成されていない)が参照される。そして、このエントリから、到達保証転送情報=「あり」で、かつ到達保証ACK受信情報=「なし」が検出される。これにより、すでに到達保証データフレームD111が転送されているが、それに対応する到達保証ACKフレームが未だ受信されていないことがわかる。これを受けてノードBは、今回の時刻T15に受信した到達保証データフレームD111の再送フレームを、再度次のノードCに転送する。
 この結果、到達保証データフレームの再送フレームがノードBからノードCに転送され、時刻T16にノードCで受信される。
 ノードCは、時刻T16以後、再送フレームD111に対応する到達保証ACKフレームG111を再度返送するが、今度はノードCからノードBに向かう無線リンクの品質が回復し、到達保証ACKフレームG111がノードBに到達したとする。
 この結果、ノードBは、到達保証転送記録テーブル115Bにおいて、イベント時刻=T17に対応するエントリを生成の後、その再送された到達保証ACKフレームをノードAに転送する。この再送された到達保証ACKフレームは、時刻T18にノードAで受信される。
 この結果、ノードAは、到達保証転送記録テーブル115Aにおいて、イベント時刻=T18に対応するエントリを生成し、再送した到達保証データフレームD111がGDであるノードCに到達したことを認識できる。
 図3Aは、本実施形態による再送制御処理の例3を示す図である。また、図3Bは、図3Aの各ノードA,B,Cが保有する到達保証転送記録テーブル115A,115B,115Cの例を示す図である。図3Bに示される各到達保証転送記録テーブル115A~Cの意味は、図1Bの場合と同じであるため、個々の値等の説明は省略する。
 図3Aでは、時刻T21にノードAから送信された到達保証データフレームD121が、時刻T22にノードBで受信・転送され、時刻T23にノードCで受信される場合が示されている。
 ノードCは、時刻T23以後、到達保証データフレームD121に対応する到達保証ACKフレームG121を返送し、そのフレームが時刻T24にノードBで受信される。
 ノードBは、到達保証転送記録テーブル115Bにおいて、イベント時刻=T24に対応するエントリを生成の後、その到達保証ACKフレームG121をノードAに向けて転送する。ところが、フェージング等の影響によりノードBからノードAに向かう無線リンクの品質が悪化し、到達保証ACKフレームG121がノードAに到達しなかったとする。
 この場合、ノードAが到達保証ACKフレームG121を受信することができない。この結果、ノードAにおいて、時刻T25で、再送のためのタイムアウトが発生し、ノードAは、到達保証データフレームD121を再送する。ノードAからノードBに向かう無線リンクは悪化しておらず、上述の再送フレームは、時刻T26にノードBで受信されるとする。
 ノードBは、再送された到達保証データフレームD121から、GSとポート番号と到達保証IDを抽出し、これらの値の組をキーとして図3Bの到達保証転送記録テーブル115B上で最新のエントリを検索する。この結果、イベント時刻=T24のエントリ(時刻T22はT24より古く、時刻T26のエントリはまだ生成されていない)が参照される。そして、このエントリから、到達保証転送情報=「なし」で、かつ到達保証ACK受信情報=「あり」が検出される。これにより、到達保証データフレームD121がノードCに転送されノードCから到達保証ACKフレームG121も受信されて、自身も到達保証ACKフレームG121をノードAに送信していることがわかる。すなわち、到達保証データフレームD121はノードCで正常に受信されたが、それに対応する到達保証ACKフレームG121がノードBからノードAに届いていないということがわかる。
 この場合には、ノードBは、今回の時刻T26に受信した到達保証データフレームD121の再送フレームは、ノードCには転送せず、代わりに、到達保証ACKフレームG121を、ノードAに再送する。
 この場合、今度は(あるいは何回かのリトライの後)、ノードBからノードAに向かう無線リンクの品質が回復し、到達保証ACKフレームG121がノードAに到達したとする。この結果、ノードAは、到達保証転送記録テーブル115Aにおいて、イベント時刻=T27に対応するエントリを生成し、到達保証データフレームD121がGDであるノードCに到達したことを認識できる。
 以上のようにして、本実施形態では、マルチホップを前提とした無線アドホックネットワークにおいて、GDからGSへ到達保証ACKフレームによる到達通知を実現することが可能となる。各ノードからデータを収集するだけでなく、各宛先ノードへ制御情報を送信する場合やファームウェアの更新を行なう場合、データが宛先ノードに正確に到達したかを確認することができる。また、無線アドホックネットワークでデータサイズの大きな動画などを転送することもより容易となる。
 また、アドホックネットワークにおいて宛先ノードに到達したことを確認しようとするときネットワークに輻輳が発生することを抑制できる。また、到達保証ACKフレーム自体の転送が途中で失敗した場合でも、再送によるトラフィック増加の影響を、到達保証ACKフレームの転送が失敗したノードまでに留めることが可能となる。これにより、ネットワークの輻輳をさらに抑制できる。このような実現により、例えばファームウェアデータの配信や各種制御情報の配信等において、信頼性の高いデータ伝送を実現することが可能となる。
 図4は、本実施形態が適用されるネットワーク構成の第1の例を示す図である。図4のネットワーク1は、以下の本実施形態を適用することが可能な無線アドホックネットワークの一例であり、複数のノード装置を含む。なお、以下では、ネットワークトポロジの観点からの説明においては、「ノード装置」を単に「ノード」ということもある。
 ネットワーク1内の各ノード装置には、ネットワーク1内で一意な識別情報(以下、「ノードID(identification)」という)が予め割り当てられている。以下では、参照符号「N」がノードIDを示すものとし、例えば、ノードIDとしてNが割り当てられたノード装置を「ノード装置N」のように参照する。なお、以下では、ノード装置Nにとって自分自身に割り当てられたノードIDであるNを、ノード装置Nの「自ノードID」ともいう(図4では1≦i≦7)。
 また、図4ではリンクを実線で表している。具体的には、ネットワーク1のトポロジは次のとおりである。すなわち、ノード装置NとNの間、ノード装置NとNの間、ノード装置NとNの間、ノード装置NとNの間、ノード装置NとNの間、ノード装置NとNの間、ノード装置NとNの間、およびノード装置NとNの間に、各々リンクが存在する。
 なお、以下で「リンク」とは、無線リンクをいう。なお、有線リンクが混在してもよい。ノード装置NとNが、他のノード装置Nによる中継を経ずに直接、無線により情報を通信しあうことができるとき、「ノード装置NとNの間に無線リンクが存在する」という(図4では1≦i,j,k≦7)。また、ノード装置NとNの間が直接ケーブルで接続されており、ノード装置NとNがケーブルを介して情報を通信しあうことができるとき、「ノード装置NとNの間に有線リンクが存在する」という。
 また、ノード装置NとNの間に無線リンクが存在するとき、「ノード装置NとNは互いに隣接している」という。換言すれば、ノード装置Nにとってノード装置Nは隣接ノード装置であり、ノード装置Nにとってノード装置Nは隣接ノード装置である。
 なお、図4のネットワーク1には、新たなノード装置が追加されることもありうるし、ノード装置N~Nのいずれかが撤去されてネットワーク1からは消滅することもありうる。また、リンクは固定的ではなく、動的に変化しうる。
 例えば、天候や遮蔽物などの影響で、ノード装置NとNの間に無線リンクが新たに確立されたり、今まで確立されていた無線リンクが消滅したりすることがある。ノード装置が可動式であれば、ノード装置間の距離の変動によってリンクの有無が変化することもある。
 以下に説明する本実施形態によれば、このようにノードやリンクが動的に変化する環境においても、データが送信される時点でのネットワーク1の状況に応じて、利用可能で適切な経路が動的に見出されて選択されながら、データの送信が行われる。しかも、動的に変化するネットワーク1全体のトポロジを各ノード装置N~Nが認識する必要なしに、動的なトポロジの変化に応じた経路選択が自律分散的に実現される。
 ところで、詳しくは図10とともに後述するが、以下ではノード装置間で送受信されるPDUを「フレーム」と称する。ネットワーク1内でのデータの送受信はフレームを用いて行われるが、フレームの送信元のノード装置は前述したようにGSであり、フレームの宛先のノード装置は前述したようにGDである。
 例えば、ノード装置NがGSでノード装置NがGDの場合、ネットワーク1においてノード装置NとNは隣接していないので、他のノード装置によってフレームが中継され、その結果として、フレームはノード装置Nに到達する。例えば、フレームは、ノード装置Nからノード装置Nへ送信され、ノード装置Nからノード装置Nへ送信され、ノード装置Nからノード装置Nへ送信されるかもしれない。以下では経路を、〈N,N,N,N〉のようなタプル(tuple)で表す。
 経路〈N,N,N,N〉の例において、例えばノード装置Nからノード装置Nへフレームが送信されるとき、フレームの最終的な宛先は、GDであるノード装置Nだが、フレームの直接的な宛先は、ノード装置Nに隣接するノード装置Nである。以下では、このように互いに隣接する2つのノード装置間でのフレームの送信において、フレームの送信元のノード装置を「LS(Local Source)」といい、フレームの宛先のノード装置を「LD(Local Destination)」という。例えば、上記のようにフレームがノード装置Nからノード装置NとNを経由してノード装置Nへと中継される場合のLSとLDは次のとおりである。
 GSでもあるノード装置Nから、ノード装置Nに隣接するノード装置Nへと、最初にフレームが送信されるとき、LSはノード装置Nであり、LDはノード装置Nである。続いて、ノード装置Nから、ノード装置Nに隣接するノード装置Nへと、フレームが送信されるとき、LSはノード装置Nであり、LDはノード装置Nである。そして、ノード装置Nから、ノード装置Nに隣接しておりGDでもあるノード装置Nへとフレームが送信されるとき、LSはノード装置Nであり、LDはノード装置Nである。
 なお、ネットワーク1内の1つまたは複数のノード装置が、ネットワーク1とは別のネットワーク(以下「外部ネットワーク」という)に属する不図示のネットワーク機器と接続されていてもよい。
 例えば、データ管理サーバを含む外部ネットワークのゲートウェイ装置に、有線リンクまたは無線リンクによってノード装置Nが接続されていてもよい。そして、ノード装置NがGDとして指定されてネットワーク1内で送信されるデータは、ノード装置Nからゲートウェイ装置を介してデータ管理サーバに送信され、データ管理サーバで管理されてもよい。
 続いて、図5を参照して他のネットワークの例について説明する。図5は、ネットワーク構成の第2の例を示す図である。図5のネットワーク2も、以下の本実施形態を適用することが可能なアドホックネットワークの一例であり、複数のノード装置を含む。また、図4のネットワーク1と同様に、ネットワーク2も、不図示の外部ネットワークと接続されていてもよい。
 ネットワーク2はノード装置N101~N120を含む。図5は、ノード装置N101~N120のうち、1つのノード装置N105に注目して表現した図である。すなわち、太い実線の丸で示したノード装置N105は、直接通信することが可能な、隣接する3つのノード装置N107、N111、およびN112の存在とノードIDさえ認識していればよく、ネットワーク2全体のトポロジを認識する必要はない。ノード装置N105は、ネットワーク2のトポロジどころか、ネットワーク2内に存在するノード装置の個数を認識する必要もないし、ノード装置N105に隣接していないノード装置のノードIDを予め知っている必要もない。
 図5では、ノード装置N105が認識する部分を実線で表し、ノード装置N105が認識する必要のない部分を破線で表してある。すなわち、図5では、ノード装置N105から見てホップ数1以内の範囲に存在する以下のものだけが、実線で示してある。
  ・ノード装置N105自身
  ・ノード装置N105に隣接する3つのノード装置N107、N111、およびN112
  ・ノード装置N105を3つの隣接ノード装置N107、N111、およびN112にそれぞれ接続する3本のリンク
 以下に説明する本実施形態によれば、ネットワーク内の各ノード装置は、上記のノード装置N105のように、隣接ノード装置さえ認識していればよい。したがって、ネットワークの規模が増大しても「各ノード装置がネットワークトポロジを認識するために制御情報の通信を行い、制御情報の通信のせいでネットワークの負荷が高まり、通信システム全体としての性能が悪化する」といった事態に陥ることはない。
 以下では具体的に、図4のネットワーク1や図5のネットワーク2など任意のトポロジを有するネットワークに適用可能な実施形態について説明する。
 本実施形態に関しては、まず、図6と図7を参照してノード装置の構成を説明し、図8を参照してノード装置の動作の概要を説明する。そして、「各ノード装置が自律分散的に図8のように振る舞うことで、図4のネットワーク1全体ではどのようにして動的な経路選択が実現されるのか」ということについて、図9を参照して概要を説明する。
 その後、図10を参照してフレームの例を説明し、図11~図18を参照して各ノード装置が記憶する各種情報の例を説明し、図19~図38を参照して各ノード装置が行う処理の詳細を説明する。そして、図10~図38の詳細を踏まえて、再度、ネットワーク1全体としての振る舞いについて、図39~図41Dを参照して説明する。
 さて、図6は、本実施形態におけるノード装置の構成を示す機能ブロック図である。図1または図5の各ノード装置は、具体的には、例えば図6に示されるノード装置100である。
 ノード装置100は、フレームを受信する受信部101と、フレームを送信する送信部102を備える。また、ノード装置100は、フレームの送信のために用いる各種情報を格納するため、隣接ノード管理テーブル103、重み付けテーブル104、およびFID(Frame IDentification)管理テーブル105を備える。
 ノード装置100はさらに、受信部101が受信したフレームの種類を判別するフレーム分岐処理部106を備える。詳しい形式は図10とともに後述するが、本実施形態では、「データフレーム」、「ハローフレーム」、および「ACK(ACKnowledgment)フレーム」という少なくとも3種類のフレームが使われる。
 ノード装置100は、ACKフレームに関する処理を行うACK処理部107と、ハローフレームの受信に応じて処理を行うリンク管理部108を備える。また、ノード装置100は、データフレームの受信に応じた処理を行うために、バッファ部109とデータフレーム処理部110を備えている。ノード装置100はさらに、上位層処理部111、ハローフレーム生成部112、およびFID生成部113も備えている。
 加えて、ノード装置100は、前述した到達保証データフレームと到達保証ACKフレームの送信および受信を処理する到達保証ACK処理部114と、前述した到達保証転送記録テーブル115を備える。また、複数に分割された到達保証データフレームから元の送信データを組み立てるための組立バッファ116と、到達保証ACK制御によって再送されるべき到達保証データフレームを一時保持する再送信バッファ117を備える。 ノード装置100の各部は以下のように動作する。
 受信部101がフレームを受信し、受信したフレームをフレーム分岐処理部106に出力する。すると、フレーム分岐処理部106がフレームの種別を判別する。
 ハローフレームが受信された場合、フレーム分岐処理部106は、受信されたハローフレームをリンク管理部108に出力する。リンク管理部108は、隣接ノード管理テーブル103を管理しており、さらに、重み付けテーブル104の管理にも関与している。
 ここで、ハローフレームは、制御情報を通信するための制御フレームの一種であり、具体的には、ノード装置100が自分自身の存在を他のノード装置に通知するためのフレームである。よって、詳しくは図20とともに後述するとおり、リンク管理部108は、ハローフレームの受信を契機として隣接ノード装置の存在を認識し、認識結果を隣接ノード管理テーブル103に反映させる。すなわち、隣接ノード管理テーブル103は、ノード装置100に隣接する他のノード装置を、ノード装置100が記憶しておくためのテーブルである。
 なお、ネットワークの状況は動的に変化しうるので、場合によっては、今まで隣接ノード装置としてリンク管理部108に認識されていた他のノード装置が、隣接ノード装置として認識不能となるかもしれない。よって、詳しくは図22とともに後述するとおり、リンク管理部108は、隣接ノード装置として認識不能となったノード装置に関するエントリを隣接ノード管理テーブル103から削除するためのエージング処理も行う。
 また、本実施形態においてリンク管理部108は、隣接ノード装置の変化にともなって重み付けテーブル104の追加、削除、あるいは更新を行う。
 ここで、重み付けテーブル104は、フレームをどの隣接ノード装置に送信するかを決定するための情報をGDごとに管理するためのテーブルである。図6にはM個のGDそれぞれに対応して設けられた重み付けテーブル104-1~104-Mが示されている。本明細書において「重み付けテーブル104」とは、重み付けテーブル104-1~104-Mの総称である。また、ノード装置100の運用が開始される時点では、重み付けテーブル104は存在せず、M=0である。
 具体的には、重み付けテーブル104は、「最終的にフレームをGDに到達させるためには、ノード装置100自身はどの隣接ノード装置をLDとして選択することができるか」ということをGDごとに管理している。換言すれば、重み付けテーブル104は、フレームのGDごとに、ノード装置100に隣接する1つ以上のノード装置に関して、LDとして選択する際の優先度を、重みとして表して保持している。
 別の観点から言えば、ある隣接ノード装置が「LDとして選択可能である」とは、当該隣接ノード装置へのフレームの送信可能性が「送信可能」であることを意味する。また、ある隣接ノード装置が「LDとして選択不能である」とは、当該隣接ノード装置へのフレームの送信可能性が「送信不能」であることを意味し、当該隣接ノード装置の優先度が、「送信不能」に対応する所定の最低優先度であることを意味する。
 したがって、ネットワークの状況の変化に応じてノード装置100の隣接ノード装置が変化すると、リンク管理部108は、詳しくは図20および図22とともに後述するとおり、隣接ノード装置の変化に応じて重み付けテーブル104を追加、更新、または削除する。
 また、ACKフレームが受信された場合、フレーム分岐処理部106は、受信されたACKフレームをACK処理部107に出力する。ここで、ACKフレームは、制御フレームの一種であり、ノード装置100が送信したデータフレームのLDであるノード装置から、ノード装置100に、データフレームの受信を通知するためのフレームである。
 したがって、ACKフレームの受信は、データフレームの送信が成功したことを意味し、所定の時間が経過してもACKフレームが受信されずにタイムアウトとなることは、データフレームの送信に失敗したことを意味する。ACK処理部107は、後述の図32に示すACKフレーム受信のタイムアウト監視を行う。
 バッファ部109は、データフレームの送信失敗と再送に備えて、データフレームを格納している。よって、詳しくは図32とともに後述するとおり、ACK処理部107は、ACKフレームの受信を契機としてデータフレームの送信成功を認識すると、不要になったデータフレームをバッファ部109から削除する。また、ACK処理部107はデータフレームの送信の成否をデータフレーム処理部110に通知する。
 また、データフレームが受信された場合、フレーム分岐処理部106は、受信されたデータフレームをバッファ部109に格納するとともに、後述の図25~図29Hの処理を行うようデータフレーム処理部110に依頼する。
 ここで、データフレームは、GSであるノード装置が、GDであるノード装置に伝達しようとするデータを、ペイロードとして含むフレームである。換言すれば、本実施形態におけるフレームが定義される層よりも上位の層で定義されるプロトコルのPDUが、ペイロードとしてデータフレームに含まれる。上位層処理部111は、ノード装置100がGSまたはGDである場合に、データフレームにペイロードとして含まれる上位層のPDUを処理する。
 フレーム分岐処理部106からデータフレームの処理の依頼を受けたデータフレーム処理部110の動作の概要は、以下のとおりである。
 データフレーム処理部110は、受信部101が受信したデータフレームに対するACKフレームの送信を送信部102に依頼する。また、データフレーム処理部110は、受信されたデータフレームのGDの値がノード装置100の自ノードIDと等しいか否かを判断する。そして、受信されたデータフレームのGDの値がノード装置100の自ノードIDと異なる場合、データフレーム処理部110は、FID管理テーブル105を参照することにより、今回の受信が下記(A1)と(A2)のどちらに該当するのかを判断する。
  (A1)過去にノード装置100がLSとなって送信したデータフレームが、ネットワーク内を中継されているうちにノード装置100に戻ってきて、受信部101で受信された。
  (A2)上記(A1)以外の新たなデータフレームが受信部101で受信された。
 データフレーム処理部110は、今回の受信が(A2)に該当すると判断すると、重み付けテーブル104を参照して、受信したデータフレームを転送するためにLDとして指定する隣接ノード装置を選択し、データフレームの転送を送信部102に依頼する。
 他方、データフレーム処理部110は、今回の受信が(A1)に該当すると判断すると、過去にLDとして選択した隣接ノード装置が、適切なLDではなかったと認識し、認識の結果を重み付けテーブル104に反映させる。そして、データフレーム処理部110は、重み付けテーブル104を参照して、LDとして選択可能な隣接ノード装置が他にまだ残っているか否かを判断する。
 データフレーム処理部110は、また、ACK処理部107からのデータフレーム送信成功あるいは送信失敗の通知を受け、該データフレームのLDとして選択した隣接ノード装置が適切か否かの認識をし、その認識結果を重み付けテーブル104に反映させる。
 なお、ノード装置100に隣接する、あるノード装置Nが「LDとして選択可能である」とは、直感的には「隣接ノード装置NをLDとして選択してみて、フレームが成功裡にGDまで到達するか否かを試してみる価値がある」という意味である。具体的には、ノード装置Nが「LDとして選択可能である」とは、「下記(B1)でもなく下記(B2)でもない」という意味である。なお、「選択可能」という語の、より詳細な意味については、後述の図8に関する説明と、図27に関する(F1)~(F2)と(G1)~(G4)の説明から明らかである。
  (B1)ノード装置100が隣接ノード装置Nを過去にLDとして選択した結果、ループ等の何らかの失敗が発生したことがあり、「ノード装置NはLDとして不適切である」と既に判明している。
  (B2)今回受信部101が受信したデータフレームを、かつて受信部101が初めて受信したときのLS(以下「Original Local Source」と称し、「OLS」と略す)が、ノード装置Nであった。
 データフレーム処理部110は、もしLDとして選択可能な隣接ノード装置が他にまだ残っていれば、選択可能な隣接ノード装置を選んでLDとして指定し、データフレームの転送を送信部102に依頼する。逆に、LDとして選択可能な隣接ノード装置がもう残っていなければ、データフレーム処理部110は、下記(C1)または(C2)のように動作する。
  (C1)今回受信したデータフレームのGSがノード装置100以外である場合、データフレーム処理部110は、OLSへデータフレームを返送するため、OLSをLDとして選択し、データフレームの転送を送信部102に依頼する。この動作は、OLSである隣接ノード装置に「ノード装置100をLDとして選択することは不適切である」と認識させるための動作であり、後述するとおり経路探索におけるバックトラックに相当する。
  (C2)今回受信したデータフレームのGSがノード装置100自身である場合、このデータフレームを元々生成したのは上位層処理部111である。よって、データフレーム処理部110は、上位層処理部111に対してデータフレームの送信失敗を通知し、バッファ部109に格納されているデータフレームを破棄する。
 なお、以上のようなデータフレーム処理部110の動作を実現するためには、データフレーム処理部110は上記(A1)と(A2)の区別をすることが必要である。そのため本実施形態では、データフレームを一意に識別することのできるフレーム識別情報が各データフレームに含まれており、フレーム識別情報をFID管理テーブル105が記憶している。
 本実施形態でのフレーム識別情報は、具体的には、データフレームのGSであるノード装置のノードIDと、FIDとの組み合わせである。FIDは、ある1つのノード装置がGSとなって送信する複数のフレームの各々を一意に識別する識別情報であり、例えば所定のビット数のシーケンス番号でもよいし、タイムスタンプでもよい。
 つまり、個々のノード装置は独立にFIDを生成するため、異なる複数のノード装置が偶然同じFIDを生成することもありうる。しかし、フレーム識別情報は、FID単独ではなく、データフレームのGSであるノード装置のノードIDと、FIDとの組み合わせである。そして、ノードIDは、上記のとおりネットワーク内でノード装置を一意に識別する情報である。したがって、たとえ異なる複数のノード装置が偶然同じFIDを生成したとしても、異なるノード装置がそれぞれGSとなって送信したフレームは、異なるフレーム識別情報を有するので、区別可能である。
 なお、フレーム識別情報は、データフレームが1つ以上のノード装置を経由してネットワーク内を転送されても、データフレームを中継するノード装置によって書き換えられることはなく、したがって変化しない。データフレーム処理部110は、送信部102に送信を依頼したデータフレームのフレーム識別情報をFID管理テーブル105に記録することにより、後にデータフレームがノード装置100自身に戻ってきたとき、上記(A1)に該当すると認識することができる。
 なお、ノード装置100は、フレームの受信を契機としないその他の処理も行う。具体的には、ハローフレーム生成部112が、FID生成部113の生成するFIDを利用して定期的にハローフレームを生成し、送信部102に出力する。すると送信部102がハローフレームを送信するので、ノード装置100は、ノード装置100自身の存在を定期的に周囲に通知することができる。
 また、上位層処理部111は任意のタイミングで、データフレームにペイロードとして含めて送信する対象のデータをデータフレーム処理部110に出力することができる。すると、データフレーム処理部110は、上位層処理部111の要求に応じてデータフレームを生成し、送信部102にデータフレームの送信を指示する。こうして、ノード装置100は、自らGSとなることができる。
 到達保証ACK処理部114は、データフレーム処理部110が処理する送受信データフレームのうち、到達保証データフレーム及びそれに関連する到達保証ACKフレームの処理が必要となったときに動作する。すなわち、到達保証ACK処理部114は、データフレーム処理部110が送受信するデータフレームのうち、到達保証処理が必要なフレームデータを、データフレーム処理部110から引き渡される。到達保証ACK処理部114は、図1Aから図3Bでその概略を説明した到達保証ACKフレームによる再送制御処理を、到達保証転送記録テーブル115にアクセスしながら実行する。
 また、自ノードが到達保証データフレームのGDであった場合には、到達保証ACK処理部114は、組立バッファ116を使いながら、複数に分割された到達保証データフレームから元の送信データを組み立てるための処理を実行する。
 また、自ノードが到達保証データフレームのGSであった場合には、到達保証ACK処理部114は、送信した到達保証データフレームを再送信バッファ117に一時保持する。そして、到達保証ACK処理部114は、到達保証ACKフレームの受信状況に応じて、到達保証データフレームを再送する処理を実行する。
 以上の到達保証ACK処理部114、到達保証転送記録テーブル115、組立バッファ116、および再送信バッファ117からなる部分によって、GSとGDの間のグローバルなACKである到達保証ACKによる再送制御が実現される。この再送制御処理は、TCPのようなセッションの確立を必要とする上位レイヤの処理によるものではない。
 すなわち、到達保証データフレームのペイロードに格納して伝送されるデータがどのようなものであっても、無線品質が変化しやすい無線アドホックネットワークにおいて、GSとGDの間の安定した再送制御を実現することが可能となる。さらに換言すれば、セッションの確立を必要としないようなデータであっても、従来困難であった再送制御が実現される。
 図7は、本実施形態におけるノード装置のハードウェア構成を示す図である。図6のノード装置100は、例えば図7に示す各種ハードウェアにより実現されてもよい。
 図7の例では、ノード装置100は、MPU(MicroProcessing Unit)201、およびタイマIC(Integrated Circuit)203を備える。また、ノード装置100は、DRAM(Dynamic Random access Memory)204、フラッシュメモリ205、および無線モジュール206を備える。
 MPU201とタイマIC203は、IC/PIO(Inter-Integrated Circuit or Parallel Input/Output)バス208を介して接続されている。そして、DRAM204とフラッシュメモリ205と無線モジュール206は、PCI(Peripheral Component Interconnect)バス209を介してMPU201に接続されている。
 MPU201は、不揮発性記憶装置の一種であるフラッシュメモリ205に格納されたファームウェアなどのプログラムをDRAM204にロードし、DRAM204をワーキングメモリとして使いながら各種処理を実行する。MPU201は、プログラムを実行することで、図6のフレーム分岐処理部106、ACK処理部107、リンク管理部108、データフレーム処理部110、上位層処理部111、ハローフレーム生成部112、FID生成部113、および到達保証ACK処理部114として動作することができる。
 なお、ファームウェアなどのプログラムは、コンピュータ読み取り可能な記憶媒体に格納されて提供され、ノード装置100にインストールされてもよい。または、プログラムは、ネットワークから無線モジュール206を介してダウンロードされ、ノード装置100にインストールされてもよい。
 なお、実施形態に応じて、DRAM204やフラッシュメモリ205以外の他の種類の記憶装置が利用されてもよい。例えば、ノード装置100は、CAM(Content Addressable Memory)、SRAM(Static Random Access Memory)、SDRAM(Synchronous Dynamic Random Access Memory)などの記憶装置を有してもよい。
 図6の隣接ノード管理テーブル103、重み付けテーブル104、FID管理テーブル105、バッファ部109、到達保証転送記録テーブル115、組立バッファ116、および再送信バッファ117は、DRAM204、フラッシュメモリ205、あるいは不図示のその他の記憶装置により実現される。また、フラッシュメモリ205は、プログラムだけでなく、ノード装置100のノードIDなど、ノード装置100に固有の情報も記憶している。
 ノード装置100は、有線接続における物理層の処理を行う回路として、不図示のPHY(PHYsical layer)チップを備えてもよい。また、ノード装置100と外部ネットワークとの接続のために、ノード装置100はPHYチップを備えていてもよい。
 例えば、ノード装置100は、イーサネット(登録商標)規格にしたがった有線LANポートを備え、有線LANポートに接続されたケーブルを介して外部ネットワークのゲートウェイ装置などに接続されていてもよい。
 その場合、MPU201は、イーサネットフレームを生成し、不図示のMII/MDIO(Media Independent Interface or Management Data Input/Output)を介してPHYチップに出力することができる。そして、PHYチップは、MPU201からの出力(すなわちイーサネットフレームを表す論理信号)を、ケーブルの種類に応じた信号(つまり電気信号または光信号)に変換し、ケーブルに出力する。こうして、ノード装置100はPHYチップを用いて外部ネットワークにデータを送信することができる。
 また、PHYチップは、ケーブルと有線LANポートを介して外部ネットワークから入力される電気信号または光信号を、論理信号に変換し、MII/MDIOを介してMPU201に出力することもできる。こうして、ノード装置100はPHYチップを用いて外部ネットワークからデータを受信することができる。
 無線モジュール206は、無線接続における物理層の処理を行うハードウェアである。無線モジュール206は、例えば、アンテナ、ADC(Analog-to-Digital Converter)、DAC(Digital-to-Analog Converter)、変調器、復調器、符号化器、復号器などを含む。
 本実施形態では、図6の受信部101と送信部102は、図7の無線モジュール206により実現される。つまり、本実施形態では、ネットワーク内のリンクは無線リンクである。もちろん、有線リンクが混在する実施形態も可能である。
 タイマIC203は、設定された時間が経過するまでカウントアップ動作を行い、設定された時間が経過すると割り込み信号を出力する。例えば、タイマIC203は、隣接ノード管理テーブル103、重み付けテーブル104、FID管理テーブル105、組立バッファ116、再送信バッファ117のエージング処理をそれぞれ所定の間隔で実行するための割り込み信号を出力してもよい。
 なお、実施形態に応じて、ノード装置のハードウェア構成は図7とは異なっていてもよく、図7に例示した規格・種類以外のその他のハードウェアをノード装置に利用することもできる。
 例えば、図6のフレーム分岐処理部106、ACK処理部107、リンク管理部108、データフレーム処理部110、上位層処理部111、ハローフレーム生成部112、またはFID生成部113は、ハードウェア回路により実現されてもよい。具体的には、MPU201の代わりに、FPGA(Field Programmable Gate Array)などのリコンフィギュラブル回路や、ASIC(Application Specific Integrated Circuit)などにより、これら図6の各部が実現されてもよい。もちろん、MPU201とハードウェア回路の双方により、図6の各部が実現されてもよい。
 なお、以下の説明においては、説明の明確化のため、図6および図7の各部の参照符号の後にノードIDを付けた参照符号を用いることがある。例えば、ノード装置Nが有する図6の隣接ノード管理テーブル103を「103-N」という参照符号で参照する場合がある。
 続いて、個々のノード装置の動作の概要について図8を参照して説明し、個々のノード装置の動作の結果としてネットワーク全体として実現される経路選択について図9を参照して説明する。
 図8は、1つのノード装置に注目して重みの学習について説明する図である。図8には、ネットワーク3内の6つのノード装置が「ノードα」~「ノードζ」として抜粋されて示されている。図8に示すように、ノードβにはノードα、γ、δ、ε、およびζが隣接しており、図8では下記5本のリンクが実線で示されている。
  ・ノードβとαの間のリンクLβ,α
  ・ノードβとγの間のリンクLβ,γ
  ・ノードβとδの間のリンクLβ,δ
  ・ノードβとεの間のリンクLβ,ε
  ・ノードβとζの間のリンクLβ,ζ
 また、図8において雲の形で模式的に表現されたネットワーク3aは、ネットワーク3のうちの一部分である。ネットワーク3aは、具体的には、ノードδとζの間を直接的に接続するリンク、または、1つ以上の不図示のノードと2本以上の不図示のリンクを介してノードδとζの間を間接的に接続する経路を含む。
 以下では、図8においてノードβに注目し、ノードβにおける重みの学習について説明する。
 あるとき、ノードβが、ネットワーク3内の不図示のあるノード(以下、便宜的に「ノードη」という)をGDとするデータフレーム301を、リンクLβ,αを介してノードαから受信する。ノードβは図6の重み付けテーブル104を有しており、このうちノードηに対応する重み付けテーブルを、図8の説明では便宜的に「104-h」という参照符号で参照する。
 詳しくは図13および図14とともに後述するが、GDごとに管理される重み付けテーブル104のそれぞれは、隣接ノードと重みの対応付けを記憶している。ノードβにはノードα、γ、δ、ε、およびζが隣接しているので、重み付けテーブル104-hでは、ノードαと重みWα、ノードγと重みWγ、ノードδと重みWδ、ノードεと重みWε、およびノードζと重みWζが、それぞれ対応付けられている。
 説明の便宜上、ノードβがノードαからデータフレーム301を受信した時点での重み付けの関係が、式(1)のとおりであったとする。
   Wγ<Wδ<Wε<Wζ          (1)
 以下、本実施形態においては説明の便宜上、重みが0以上1以下の値をとり、重みの値が小さいほど当該重みに対応するノードの優先度が高いことを示すものとする。
 したがって、式(1)に基づいてノードβは、最も軽い重みWγと対応付けられたノードγの優先度が、隣接ノードγ、δ、ε、およびζの中で最も高いことを認識する。よって、ノードβは、データフレーム301を転送するためのLDとして、隣接ノードγ、δ、ε、およびζの中から、まずノードγを選択し、ノードγにデータフレーム301を送信する。
 ここで、ノードβからノードγへの送信が失敗すると、ノードβは、「ノードηをGDとするデータフレームの送信時にノードγをLDとして選択することは不適切である」と学習する。そして、学習の結果として、ノードβは、ノードγの優先度を下げる。すなわち、ノードβは、重みWγの値を大きくする。
 送信失敗には何種類かあり、具体的には、ノードβは下記(D1)または(D2)のようにして、「ノードηをGDとするデータフレームの送信時にノードγをLDとして選択することは不適切である」と学習する。
  (D1)リンク障害の場合
 ノードβがデータフレーム301をノードγに転送した時点で、偶然リンクLβ,γ、あるいは、ノードγに障害が発生していると、ノードβはノードγへの送信が失敗したと認識する。
 例えばリンクLβ,γが無線リンクである場合、ノードγからデータフレーム301に対するACKフレームが所定時間内に返信されてこなければ、ノードβはタイムアウトして、「ノードγへのデータフレーム301の送信に失敗した」と判断する。そして、ノードβは、「ノードηをGDとするデータフレームの送信時にノードγをLDとして選択することは不適切である」と学習し、LDとして選択したノードγに対応付けられた重みWγの値を大きくする。
 なお、無線リンクはその品質環境が変化しやすいため、リンク障害が再び解消されている可能性がある。そのため、本実施形態においては、リンク障害時に一挙に重みWγを最大値にするのではなく、所定の値だけ大きくすることにしている。このようにすれば、1回のリンク障害発生だけでそのLDが不適切となることを防ぐことができる。
  (D2)ノードγからノードβにデータフレーム301が戻ってくる場合
 ノードβは、一旦、ノードγへのデータフレーム301の送信に成功する。例えば、ノードβは、データフレーム301に対するACKフレームをノードγから受け取ることで、ノードγへのデータフレーム301の送信が成功したことを認識する。よって、一旦ノードβは、LDとして選択したノードγに対応付けられた重みWγの値を小さくする。
 しかしながら、その後、ノードγからノードηまでデータフレーム301を転送することのできる経路がネットワーク3内で見つからなければ、後述するバックトラック動作により、ノードγはノードβにデータフレーム301を送り返す。例えば、ノードγがノードβにのみ隣接している場合、ノードγはノードηまでデータフレーム301を転送することのできる経路を見つけることができない。また、ノードγがノードβ以外にいくつかのノードに隣接している場合でも、ネットワーク3のトポロジによっては、ノードγからノードηまで到達不能なこともある。
 ノードγがバックトラック動作を行うと、ノードβは、ノードβ自身が過去にノードγに送信したデータフレーム301をノードγから受信するので、「ノードγへの送信が失敗した」と認識することができる。認識の結果、ノードβは、「ノードηをGDとするデータフレームの送信時にノードγをLDとして選択することは不適切である」と学習し、LDとして選択したノードγに対応付けられた重みWγの値を大きくする。
 本実施形態では、(D2)のように、ノードβ自身が過去に送信したデータフレーム301を受信することでノードβが送信失敗を認識する場合、ノードβは具体的には重みWγの値を最大値に設定する。
 以下では説明の便宜上、図8の例において(D2)のようにしてノードβが送信失敗を認識し、重みWγの値を最大値に設定したとする。その結果、式(2)が成立する。
   Wδ<Wε<Wζ<Wγ          (2)
 続いてノードβは、GDである不図示のノードηへデータフレーム301を到達させるため、不適切と判明したノードγ以外の隣接ノードをLDとして選択し、データフレーム301の再送信を試みる。具体的には式(2)に基づいて、ノードβは、現時点で最も軽い重みWδと対応付けられたノードδをLDとして選択し、ノードδにデータフレーム301を送信する。
 図8の例では、データフレーム301に対するACKフレームをノードβがノードδから受信し、ノードβは送信の成功を認識する。送信の成功を認識すると、ノードβは、LDとして選択したノードδに対応付けられた重みWδの値を小さくする。その結果、やはり式(2)が成立する。
 続いて、データフレーム301はネットワーク3aを介してノードδからノードζに到達したとする。そして、ノードζがLDとしてノードβを選択したとする。
 すると、ノードβは、ノードβ自身が過去にノードδに送信したデータフレーム301をノードζから受信するので、「ノードδへの送信は、ループの存在により失敗した」と認識することができる。認識の結果、ノードβは、「ノードηをGDとするデータフレームの送信時にノードδをLDとして選択することは不適切である」と学習し、重みWδの値を大きくする。
 ここで、ループして戻ってきたデータフレーム301をノードβがノードζから受信する場合も、「ノードβ自身が過去に送信したデータフレーム301を受信することでノードβが送信失敗を認識する」という点では上記(D2)の場合と同様である。したがって、ノードβは、「ノードηをGDとするデータフレームの送信時にノードδをLDとして選択することは不適切である」と学習し、LDとして選択したノードδに対応付けられた重みWδの値を最大値に設定する。その結果、式(3)が成立する。
   Wε<Wζ<Wγ=Wδ          (3)
 図8には、ノードζから同一データフレーム301を受信して重み付けを更新した結果の新しい重み付けの関係として、式(3)を示してある。
 続いてノードβは、GDである不図示のノードηへデータフレーム301を到達させるため、不適切と判明したノードγおよびδ以外の隣接ノードをLDとして選択し、データフレーム301の再送信を試みる。具体的には式(3)に基づいて、ノードβは、現時点で最も軽い重みWεと対応付けられたノードεをLDとして選択し、ノードεにデータフレーム301を送信する。
 図8の例では、データフレーム301に対するACKフレームをノードβがノードεから受信し、ノードβは送信の成功を認識する。送信の成功を認識すると、ノードβは、LDとして選択したノードεに対応付けられた重みWεの値を小さくする。その結果、やはり式(3)が成立する。
 ここで仮に、ノードεからバックトラックによってデータフレーム301がノードβへと返信されることがないとする。また、データフレーム301がネットワーク3内をループして、ノードβのいずれかの隣接ノードからノードβに送信され、ノードβで受信されることもないとする。
 すると、式(3)から、ノードβは、データフレーム301と同じくノードηをGDとする別のデータフレームを隣接ノードα、γ、δ、ζのいずれかから受け取った場合に、最も軽い重みWεと対応付けられたノードεをLDとして優先して選択するようになる。
 図9は、図4のネットワーク1において動的かつ自律分散的に経路が選択される様子を説明する図である。具体的には、図9は、ノード装置NがGSとなって、ノード装置NをGDとして指定したデータフレームを送信する場合の、ネットワーク1内での経路選択の様子を示す。
 図9には図4のネットワーク1と、ノード装置NとNの間で発生した障害が示されている。また、図9の12本の太い矢印は、ネットワーク1内で経路が動的に選択されながらデータフレームがGS(すなわちノード装置N)からGD(すなわちノード装置N)まで転送される様子を表す。
 なお、以下では、ノード装置Nの重み付けテーブル104-Nのうち、ノード装置Nに対応するものを便宜的に「104-h-N」という参照符号で参照することにする(1≦i≦6)。
 また、図9の説明においては、特に断らない限りデータフレームの送信が成功してACKフレームが返信されるものとし、ACKフレームの返信については省略して説明を簡略化する。ACKフレームの返信も含めた一連の処理の流れは、図31とともに後述する。
 ステップS101で、GSであるノード装置Nは、唯一ノード装置Nに隣接するノード装置NをLDとして選択し、データフレームをノード装置Nに送信する。
 ノード装置Nには、ステップS101で送信されたデータフレームのLSであるノード装置Nのほかに、ノード装置NとNが隣接している。そして、この2つの隣接ノード装置NとNのうちでノード装置Nの方が、重み付けテーブル104-h-Nにおいて、より軽い重みと対応付けられているとする。
 すると、ステップS102でノード装置Nは、ステップS101で受信したデータフレームを転送するためのLDとしてノード装置Nを選択し、ノード装置Nにデータフレームを送信する。
 ノード装置Nには、ステップS102で送信されたデータフレームのLSであるノード装置Nのほかに、ノード装置NとNが隣接している。そして、この2つの隣接ノード装置NとNのうちでノード装置Nの方が、重み付けテーブル104-h-Nにおいて、より軽い重みと対応付けられているとする。
 すると、ステップS103でノード装置Nは、ステップS102で受信したデータフレームを転送するためのLDとしてノード装置Nを選択し、ノード装置Nにデータフレームを送信する。
 ノード装置Nには、ステップS103で送信されたデータフレームのLSであるノード装置Nのほかに、ノード装置NとNが隣接している。そして、この2つの隣接ノード装置NとNのうちでノード装置Nの方が、重み付けテーブル104-h-Nにおいて、より軽い重みと対応付けられているとする。
 すると、ステップS104でノード装置Nは、ステップS103で受信したデータフレームを転送するためのLDとして、GDでもあるノード装置Nを選択し、ノード装置Nにデータフレームを送信する。
 しかし、図9に示すように、ノード装置Nがノード装置Nにデータフレームを送信した時点で、ノード装置NとNの間のリンクには障害が発生しており、したがって送信は失敗する。すなわち、ノード装置Nは、所定時間待機してもノード装置NからACKフレームが返信されてこないため、タイムアウトし、送信失敗を認識する。
 なお、ステップS104におけるノード装置Nは、図8でノードγへのデータフレームの送信に上記(D1)のようにして失敗したノードβに相当する。よって、ノード装置Nは、送信失敗に応じて重み付けテーブル104-h-Nを更新する(具体的には、ステップS104の送信でのLDであるノード装置Nに対応付けられた重みの値を大きくする)。
 そして、ステップS105でノード装置Nは、ステップS103で受信したデータフレームを転送するためのLDとして、まだ試していない他の隣接ノード装置Nを選択し、ノード装置Nにデータフレームを送信する。
 ノード装置Nには、ステップS105で送信されたデータフレームのLSであるノード装置Nのほかには、ノード装置Nのみが隣接している。
 そこで、ステップS106でノード装置Nは、ステップS105で受信したデータフレームを転送するためのLDとしてノード装置Nを選択し、ノード装置Nにデータフレームを送信する。
 すると、ステップS106でノード装置Nは、「ノード装置N自身がステップS103で送信したのと同じデータフレームを受信した」と認識する。つまり、ステップS106におけるノード装置Nは、図8においてループしてきたデータフレームをノードζから受信したノードβに相当する。よって、ノード装置Nは、図8と同様にして重み付けテーブル104-h-Nを更新する(具体的には、ステップS103の送信のLDであるノード装置Nに対応付けられた重みの値を最大値に設定する)。
 そして、ステップS107でノード装置Nは、OLS(すなわち、ステップS102で最初に当該データフレームをノード装置Nが受信したときのLSであるノード装置N)以外の隣接ノード装置の中から、まだLDとして試していないものを探す。ここで、OLS以外の隣接ノード装置はノード装置NとNであり、ノード装置NはステップS103で選択済みである。
 よって、ステップS107でノード装置Nは、未選択のノード装置NをLDとして選択し、ノード装置Nにデータフレームを送信する。つまり、ステップS107におけるノード装置Nは、図8においてノードεをLDとして選択しなおしてノードεにデータフレームを送信するノードβに相当する。
 すると、ステップS107でノード装置Nは、「ノード装置N自身がステップS106で送信したのと同じデータフレームを受信した」と認識する。つまり、ステップS107におけるノード装置Nは、図8においてノードγへのデータフレームの送信に(D2)のようにして失敗したノードβに相当する。よって、ノード装置Nは、図8と同様にして重み付けテーブル104-h-Nを更新する(具体的には、ステップS106の送信のLDであるノード装置N3に対応付けられた重みの値を最大値に設定する)。
 そして、ノード装置Nにとって、OLS(すなわちステップS105で最初に当該データフレームをノード装置Nが受信したときのLSであるノード装置N)以外で隣接しているノード装置は、既に送信失敗と判明したノード装置Nのみである。したがって、もはやLDとして選択可能な隣接ノード装置がない。
 よってステップS108でノード装置Nは、OLSであるノード装置Nにデータフレームを送り返す。ステップS108はバックトラック動作であり、バックトラック動作によってノード装置Nは、「ノード装置NをGDとするデータフレームの送信においては、ノード装置N自身から先の経路は袋小路(dead end)になっている」ということをノード装置Nに知らせることができる。
 すると、ステップS108でノード装置Nは、「ノード装置N自身がステップS105で送信したのと同じデータフレームを受信した」と認識する。つまり、ステップS108におけるノード装置Nは、図8においてノードγへのデータフレームの送信に(D2)のようにして失敗したノードβに相当する。よって、ノード装置Nは、図8と同様にして重み付けテーブル104-h-Nを更新する(具体的には、ステップS105の送信のLDであるノード装置Nに対応付けられた重みの値を最大値に設定する)。
 しかし、図8のノードβには、ノードγへのデータフレームの送信に失敗しても、まだLDとして選択可能なノードδ等が残っていたが、図9のステップS108のノード装置Nにとっては、LDとして選択可能な隣接ノード装置が残っていない。すなわち、OLS以外の2つの隣接ノード装置NとNは、ステップS104とS105でそれぞれLDとして選択済みであり、両者とも送信失敗という結果になることが既に判明している。
 したがって、ステップS109でノード装置N4は、OLSであるノード装置Nにデータフレームを送り返す。ステップS109もバックトラック動作であり、ノード装置Nはノード装置Nに「ノード装置NをGDとするデータフレームの送信においては、ノード装置N自身から先の経路は袋小路になっている」ということを知らせることができる。
 すると、ステップS109でノード装置Nは、「ノード装置N自身がステップS107で送信したのと同じデータフレームを受信した」と認識する。つまり、ステップS109におけるノード装置Nは、図8においてループしてきたデータフレームをノードζから受信したノードβに相当する。よって、ノード装置Nは、図8と同様にして重み付けテーブル104-h-Nを更新する(具体的には、ステップS107の送信のLDであるノード装置Nに対応付けられた重みの値を最大値に設定する)。
 しかし、図8のノードβには、ノードδへのデータフレームの送信が失敗すると判明しても、まだLDとして選択可能なノードεが残っていたが、図9のステップS109のノード装置Nにとっては、LDとして選択可能な隣接ノード装置が残っていない。すなわち、OLS以外の2つの隣接ノード装置NとNは、ステップS103とS107でそれぞれLDとして選択済みであり、両者とも送信失敗という結果になることが既に判明している。
 したがって、ステップS110でノード装置N3は、OLSであるノード装置Nにデータフレームを送り返す。ステップS110もバックトラック動作であり、ノード装置Nはノード装置Nに「ノード装置NをGDとするデータフレームの送信においては、ノード装置N自身から先の経路は袋小路になっている」ということを知らせることができる。
 すると、ステップS110でノード装置Nは、「ノード装置N自身がステップS102で送信したのと同じデータフレームを受信した」と認識する。つまり、ステップS110におけるノード装置Nは、図8でノードγへのデータフレームの送信に(D2)のようにして失敗したノードβに相当する。よって、ノード装置Nは、図8と同様にして重み付けテーブル104-h-Nを更新する(具体的には、ステップS102の送信のLDであるノード装置Nに対応付けられた重みの値を最大値に設定する)。
 そして、ステップS111でノード装置Nは、データフレームを転送するためのLDとして、まだ試していない他の隣接ノード装置Nを選択し、ノード装置Nにデータフレームを送信する。
 ノード装置Nには、ステップS111で送信されたデータフレームのLSであるノード装置Nのほかには、GDでもあるノード装置Nのみが隣接している。
 そこで、ステップS112でノード装置Nは、ステップS111で受信したデータフレームを転送するためのLDとしてノード装置Nを選択し、ノード装置Nにデータフレームを送信する。
 以上のようにして、ネットワーク1内に障害が発生しても、各ノード装置が自律分散的に振る舞うことで、データフレームは成功裡にGDまで到達する。
 また、データフレームの転送において、局所的に不適切なノード装置がLDとして選択されても、最終的にはネットワーク全体としては、GSからGDに至る経路が選択される。なぜなら、各ノード装置がLDとして選択可能なノード装置を次々と選択し、選択可能なノード装置がなくなればバックトラック動作をするからである。
 具体的には、図9の例では、ステップS102でノード装置Nがノード装置NをLDとして選択したことは、結果的には不適切であるとステップS110で判明する。しかし、ステップS103~S110の動作により、ネットワーク1全体としては、最終的にはGSからGDに至る経路〈N,N,N,N〉の選択に成功する。
 こうして選択された経路は学習され、次回以降のデータフレームの転送の効率化に寄与する。学習による効率化について具体的に説明すれば次のとおりである。
 ステップS110でのデータフレームの受信の結果、ノード装置Nは重み付けテーブル104-h-Nの学習を行い、ノード装置Nに対応付けられた重みを最大値に設定している。したがって、ノード装置Nは、ノード装置NをGDとする新たなデータフレームを隣接ノード装置Nから受信すると、最初からノード装置NをLDとして選択する。つまり、ネットワーク1全体としては、自律分散的な学習の結果、バックトラックを含む試行錯誤なしに、データフレームを効率的に経路〈N,N,N,N〉によりGDまで送信することが可能となる。
 さらに、本実施形態によれば、不適切なLDの選択の影響または局所的な障害の影響は、ネットワーク1全体には及ばず、局所的に限定される。すなわち、本実施形態によれば、例えばノード装置NとNの間のリンクに障害が発生しても、代替経路を問い合わせるための制御フレームがネットワーク1全体の全ノード装置へとフラッディングされたりはしない。よって、本実施形態によれば、障害やループが局所的に発生しても、ネットワーク1全体にブロードキャストストームを引き起こすといった事態には陥らない。
 また、図9の例においてノード装置Nは、ノード装置NとNの間のリンクの障害や、ループ〈N,N,N,N〉については全く認識することがないのは明らかである。このことは、不適切なLDの選択や局所的な障害の影響が、局所的に限定され、ネットワーク1全体には及ばないということを意味している。
 問題の影響が局所的に限定されるということは、局所的な問題がネットワーク1全体にポジティブにフィードバックされて発散することがないということであり、ネットワーク1が系として安定しているということである。問題が局所的に限定されることの別の例を挙げれば、例えば以下のとおりである。
 例えば、仮にネットワーク1においてノード装置NとNの間にもリンクが存在し、重み付けテーブル104-h-Nにおいてノード装置Nよりもノード装置Nの方が軽い重みに対応づけられているとする。すると、ステップS105の直後にノード装置Nがノード装置NをLDとして選択してデータフレームをノード装置Nに送信する。その結果、ステップS108~S112の送信は行われず、ノード装置Nだけでなくノード装置NとNも、障害の発生を全く認識しない。このように、リンクの障害やループの発生などの問題は、問題が生じた場所に応じて最小限の局所的な範囲にしか影響を及ぼさない。
 続いて、以上説明したノード装置100の構成および動作、ならびにネットワーク1全体で実現される自律分散協調動作について、更に詳細に説明してゆく。
 図10は、フレームの例を示す図である。
 本実施形態におけるデータフレームは、図10のデータフレーム302のように、LD、LSの各フィールドを含むアドホックヘッダ331と、GD、GS、FID、タイプ、長さの各フィールドを含むデータヘッダ332と、到達保証フラグ、到達保証ACKフラグ、ポート番号、到達保証ID、スタートフラグ、および終了フラグの各フィールドを含む到達保証ヘッダ333と、上位層PDUが格納されるペイロードとを含む。例えば図8のデータフレーム301も、データフレーム302と同様の形式である。
 データフレーム302のLDフィールド、LSフィールド、GDフィールド、およびGSフィールドには、データフレーム302のLD、LS、GD、およびGSである各ノード装置のノードIDがそれぞれ指定される。また、データフレーム302のFIDフィールドには、データフレーム302のGSであるノード装置が生成してデータフレーム302に割り当てたFIDが指定される。
 データフレーム302のタイプフィールドには、「データフレーム」というタイプを示す所定の定数が指定される。また、データフレーム302の長さフィールドには、ペイロードの長さが指定される。
 到達保証ヘッダ333の各フィールドは、本実施形態における到達保証ACKフレームを用いたGSとGD間の再送制御処理に用いられる。
 到達保証フラグと到達保証ACKフラグは、到達保証を行うフレームを含むデータフレームを識別するためのフラグであり、2つのフラグ値の組合せにより、下記の意味を有する。
 
 到達保証フラグ値 到達保証ACKフラグ値 フレーム種別
     1         0      到達保証データフレーム
     0         1      到達保証ACKフレーム
     1         1      通常のデータフレーム
     0         0      通常のデータフレーム
 
 図10の到達保証ヘッダ333において、ポート番号は、図1Bの説明において前述したとおりである。すなわち、送信元のGSが任意に指定する。ポート番号は、GSが、アプリケーションの処理の種別を指定するために使用することができる。またGSが、例えば1つの大きなデータを複数の到達保証データフレームに分割して送信するときに、それらの一連のまとまりのフレーム群に対して、ポート番号として、同一の番号を付与する。
 到達保証IDは、やはり図1Bの説明において前述したとおりである。すなわち、送信元のGSは、各ノードが各到達保証データフレームをGSと到達保証ID、ならびにポート番号によって一意に識別できるように、自らが送信する到達保証データフレームに、到達保証IDを任意に指定する。ただし、GSは、一度送信されたフレームを再送するときには、同じ到達保証IDを付与する。一方、前述したように、宛先のGDは、自らが送信する到達保証ACKフレームに、そのACKに対応する受信された到達保証データフレームに設定されている到達保証IDを付与する。これも、各ノードが、各到達保証ACKフレームを、GSと到達保証ID、ならびにポート番号によって一意に識別できるようにするためである。
 図10の到達保証ヘッダ333において、スタートフラグと終了フラグも、図1Bの説明において前述したとおりである。すなわち、送信される到達保証データフレームが、一連のまとまりのフレーム群の先頭フレームであるときに、スタートフラグ=1が設定される。一方、送信される到達保証データフレームが、上記一連のまとまりのフレーム群の末尾フレームであるときに、終了フラグ=1が設定される。送信される到達保証データフレームが、上記一連のまとまりのフレーム群の先頭でも末尾でもないフレームであるときには、スタートフラグフィールドにはスタートフラグ=0が、終了フラグフィールドには終了フラグ=0が記録される。送信される到達保証データフレームの1フレームのみで送信データが伝送される場合には、スタートフラグ=1かつ終了フラグ=1が設定される。スタートフラグおよびエンドフラグは、送信元のGSが、送信する各到達保証データフレームに付与する。
 データフレーム302のペイロードは、データフレーム302が定義されるプロトコルよりも上位の層のプロトコルのPDUである。
 例えば、MAC副層を仮想的にさらに2つの副層に分割することを想定する。本実施形態のフレームは、この仮想的な2つの副層のうちの下の方の副層で定義されてもよく、すなわち、MAC副層で定義される他のプロトコル(例えばイーサネットなど)のPDUをペイロードに含んでもよい。換言すれば、本実施形態のフレームは、第2層で定義されるイーサネットフレームをカプセル化するフレームであってもよい。この場合、上位層処理部111はイーサネットフレームを処理する処理部であるから、公知のMACチップを用いて実現することもできる。
 以下では説明の便宜上、データフレーム302のペイロードは、MAC層プロトコルのフレーム(具体的には例えばイーサネットフレーム)であるものとする。
 しかし、もちろん実施形態によっては、データフレーム302のペイロードは、ネットワーク層(第3層)以上で定義されるプロトコルのPDUであってもよいし、特定の通信プロトコルとは無関係な生のデータであってもよい。例えば、データフレーム302のペイロードがIP(Internet Protocol)データグラムであってもよい。この場合、上位層処理部111はIPデータグラムを処理する処理部である。
 データフレーム302の形式は以上説明したとおりであるが、具体的な値を使ってより詳しく例示すれば、データフレーム303および304のごとくである。
 データフレーム303は、図9のステップS102でノード装置Nがノード装置Nに送信するデータフレームである。データフレーム303の具体的な内容は以下のとおりである。
  ・LDフィールドには、ステップS102の送信においてLDとして選択されたノード装置NのノードID(すなわちN)が指定されている。
  ・LSフィールドには、ステップS102の送信におけるLSであるノード装置NのノードID(すなわちN)が指定されている。
  ・GDフィールドには、GSであるノード装置NがステップS101の送信のときに指定したノード装置NのノードID(すなわちN)が指定されている。
  ・GSフィールドには、GSであるノード装置NのノードID(すなわちN)が指定されている。
  ・FIDフィールドには、GSであるノード装置Nが生成したFID(以下Fとする)が指定されている。
  ・タイプフィールドには、「データフレーム」というタイプを示す所定の定数Dが指定されている。例えば、タイプは2ビットによって表すこともでき、D=(00)でもよい。
  ・長さフィールドには、データフレーム302のペイロードの長さPが指定される。なお、長さは例えばバイト単位で表されてもよいし、その他の単位で表されてもよい。
  ・ペイロードとして、MAC層プロトコルのフレーム(例えばイーサネットフレーム)が含まれる。
 また、データフレーム303を受信したノード装置Nが図9のステップS103でノード装置Nに送信するのが、図10のデータフレーム304である。データフレーム304の具体的な内容は以下のとおりである。
  ・LDフィールドには、ステップS103の送信においてLDとして選択されたノード装置NのノードID(すなわちN)が指定されている。つまり、転送にあたって、ノード装置NはLDフィールドを書き換える。
  ・LSフィールドには、ステップS103の送信におけるLSであるノード装置NのノードID(すなわちN)が指定されている。つまり、転送にあたって、ノード装置NはLSフィールドを書き換え、自ノードIDを設定する。
  ・GD、GS、FID、タイプ、長さの各フィールドと、ペイロードの内容は、ノード装置Nが受信したデータフレーム303と同じである。
 なお、データフレーム303と304で、到達保証ヘッダ333の内容は、スタートフラグと終了フラグの値が共に1であり、その他の値はオール0である。前述したように、到達保証フラグと到達保証ACKフレームの値が共に1である場合には、データフレームは通常のデータフレームを意味する。
 データフレーム305~308は、図1A,図2A,図3Aなどで、ノードAがノードBに送信する到達保証データフレームである。このデータフレームの具体的な内容は、以下のとおりである。
  ・LDフィールドには、ノードBのノードIDが指定されている。
  ・LSフィールドには、GSでもあるノードAのノードIDが指定されている。
  ・GDフィールドには、ノードCのノードIDが指定されている。
  ・GSフィールドには、GSであるノードAのノードIDが指定されている。
  ・FIDフィールドには、GSであるノードAが生成したFIDが指定されている。
  ・タイプフィールドには、「データフレーム」というタイプを示す所定の定数Dが指定されている。
  ・長さフィールドには、データフレーム305~308のペイロードの長さが指定される。なお、長さは例えばバイト単位で表されてもよいし、その他の単位で表されてもよい。
  ・到達保証フラグフィールドには値1が指定され、到達保証ACKフラグフィールドには値0が指定されることにより、到達保証データフレームが指定される。
  ・ポート番号フィールドには、GSが決定する番号が指定される。
  ・到達保証IDフィールドには、GSが生成する到達保証IDの値が指定される。
  ・スタートフラグフィールドと終了フラグフィールドには、データフレームに格納される送信データの分割位置(先頭、末端、その他)に応じた値が指定される。
  ・ペイロードとして、MAC層プロトコルのフレーム(例えばイーサネットフレーム)が含まれる。
 データフレーム309は、図1A,図2A,図3Aなどで、ノードCがノードBに送信する到達保証ACKフレームである。このデータフレームの具体的な内容は、以下のとおりである。
  ・LDフィールドには、ノードBのノードIDが指定されている。
  ・LSフィールドには、GSでもあるノードCのノードIDが指定されている。
  ・GDフィールドには、ノードAのノードIDが指定されている。
  ・GSフィールドには、GSであるノードCのノードIDが指定されている。
  ・FIDフィールドには、GSであるノードCが生成したFIDが指定されている。
  ・タイプフィールドには、「データフレーム」というタイプを示す所定の定数Dが指定されている。
  ・長さフィールドには、データフレーム309のペイロードの長さが指定されるが、到達保証ACKフレームはペイロードを持たないため、長さは0である。
  ・到達保証フラグフィールドには値0が指定され、到達保証ACKフラグフィールドには値1が指定されることにより、到達保証ACKフレームが指定される。
  ・ポート番号フィールドには、GSが決定する番号が指定される。
  ・到達保証IDフィールドには、GSが生成する到達保証IDの値が指定される。
  ・スタートフラグフィールドと終了フラグフィールドには、データフレームに格納される送信データの分割位置(先頭、末端、その他)に応じた値が指定される。
 また、本実施形態におけるハローフレームは、図10のハローフレーム311のように、LD、LS、GD、GS、FID、タイプの各フィールドを含むヘッダを有するが、ペイロードを持たない。ハローフレーム311の具体例はハローフレーム312であり、ハローフレーム312は後述の図31のステップS1203でノード装置Nにより送信されるものである。
 ハローフレーム311のLDフィールドには、ハローフレーム311を送信するノード装置に隣接するすべてのノード装置へのブロードキャストを表す特殊な値が指定される。なおここでの「ブロードキャスト」は「隣接するすべてのノード装置へのブロードキャスト」であり、「ネットワーク1全体へのフラッディング」ではないので注意されたい。
 以下、説明の便宜上、本実施形態においてはノードIDが3バイトで表されるものとし、「0x」は16進数を表すものとする。また、0x000000と0xFFFFFFは予約されており、通常のノードIDとしては使われないものとする。
 本実施形態におけるすべてのハローフレームでは、ハローフレーム312と同様、LDフィールドに、当該ハローフレームを送信するノード装置に隣接するすべてのノード装置へのブロードキャストを表す特殊な値として、0xFFFFFFが指定されている。
 ハローフレーム311のLSフィールドには、ハローフレーム311を送信するノード装置自身のノードIDが指定される。よって、ノード装置Nが送信するハローフレーム312のLSフィールドには、ノード装置NのノードIDであるNが指定される。
 また、本実施形態におけるすべてのハローフレームでは、GDフィールドに、ヌル(null)を表す特殊な値0x000000が指定される。なぜなら、ハローフレームは隣接ノード装置が利用するだけであり、転送されないからである。
 ハローフレーム311のGSフィールドには、LSフィールドと同じく、ハローフレーム311を送信するノード装置自身のノードIDが指定される。よって、ハローフレーム312のGSフィールドには、ノード装置NのノードIDであるNが指定される。
 ハローフレーム311のFIDフィールドには、ハローフレーム311を送信するノード装置が生成してハローフレーム311に割り当てたFIDが指定される。同様に、ハローフレーム312のFIDフィールドには、ハローフレーム312を送信するノード装置Nが生成してハローフレーム312に割り当てたFID(以下Fとする)が指定される。
 ハローフレーム311のタイプフィールドには、「ハローフレーム」というタイプを示す所定の定数が指定される。具体的には、「ハローフレーム」というタイプは、ハローフレーム312に例示するように所定の定数Hにより表され、例えばH=(10)でもよい。
 また、本実施形態におけるACKフレームは、図10のACKフレーム321のように、LD、LS、GD、GS、FID、タイプの各フィールドを含むヘッダを有するが、ペイロードを持たない。ACKフレーム321の具体例はACKフレーム322である。また、ACKフレーム322は、図9のステップS102でノード装置Nがノード装置Nにデータフレーム303を送信したとき、ノード装置Nがノード装置Nに返信するACKフレームである。後述の図31では、このノード装置Nからノード装置NへのACKフレーム322の返信をステップS102aとして表している。
 ACKフレーム321のLDフィールドには、ACKフレーム321の送信の契機となったデータフレームを送信した隣接ノード装置のノードIDが指定される。よって、例えばACKフレーム322のLDフィールドには、ACKフレーム322をノード装置Nが送信する契機となったデータフレーム303を送信した、ノード装置Nの隣接ノード装置NのノードIDであるNが指定される。
 ACKフレーム321のLSフィールドには、ACKフレーム321を送信するノード装置自身のノードIDが指定される。よって、ノード装置Nが送信するACKフレーム322のLSフィールドには、ノード装置NのノードIDであるNが指定される。
 また、ハローフレームと同様にACKフレームも転送されないので、本実施形態におけるすべてのACKフレームでは、GDフィールドに、ヌルを表す特殊な値0x000000が指定される。
 ACKフレーム321のGSフィールドとFIDフィールドには、ACKフレーム321の送信の契機となったデータフレームのGSフィールドとFIDフィールドの値がコピーされる。上記のように、GSフィールドとFIDフィールドの値の組み合わせにより、データフレームがネットワーク内で一意に識別される。よって、ACKフレーム321を送信するノード装置が、受信したデータフレームから値をコピーすることで、ACKフレーム321がどのデータフレームに対するものなのかを、ACKフレーム321を受信したノード装置において識別することが可能となる。
 よって、例えばデータフレーム303の受信を契機として送信されるACKフレーム322では、GSフィールドとFIDフィールドの値は、データフレーム303と同じく、それぞれNとFである。
 ACKフレーム321のタイプフィールドには、「ACKフレーム」というタイプを示す所定の定数が指定される。具体的には、「ACKフレーム」というタイプは、ACKフレーム322に例示するように所定の定数Aにより表され、例えばA=(11)でもよい。
 なお、図10に示したフレームの形式は一例にすぎず、実施形態に応じて、フレームに含まれるフィールドの並び順は適宜決めることができ、また、不図示の他のフィールドをフレームが含んでいてもよい。また、フレームがFCS(Frame Check Sequence)などのトレイラをさらに含んでいてもよい。
 また、以下では記載の簡単化のため、混乱のおそれがない場合は、例えば「LDフィールド」を単に「LD」と称することもある。他のフィールドについても同様である。
 図11は、図6のバッファ部109に格納されるデータの例を示す図である。
 バッファ部109は、受信部101が受信した個々のデータフレームにそれぞれ対応する複数のエントリを含む。そして、各エントリは、タイムアウト時刻と受信したデータフレームを含む。
 図11は、ノード装置Nのバッファ部109-N内のあるエントリを例示している。具体的には、図9のステップS102において、ノード装置Nからノード装置Nが図10のデータフレーム303を受信すると、バッファ部109-Nには、タイムアウト時刻TI3,jとデータフレーム303とを含むエントリが作成される。バッファ部109におけるエントリの作成の詳細は、図19とともに後述する。また、タイムアウト時刻TI3,jの意味は次のとおりである。
 ノード装置Nは、ステップS102で受信したデータフレーム303のヘッダを、ステップS103で図10のデータフレーム304のように書き換える。そしてノード装置Nは、ステップS103でデータフレーム304を送信する。
 なお、データフレームは、図10の到達保証ヘッダ333も含む。 図11のタイムアウト時刻TI3,jは、ノード装置Nが、データフレーム304を送信した後、データフレーム304に対するACKフレームの受信をいつまで待つのかを示す。つまり、ノード装置Nは、タイムアウト時刻TI3,jまでにデータフレーム304に対するACKフレームをノード装置Nから受信することができなければ、タイムアウトして、ノード装置Nへのデータフレーム304の送信に失敗したと判断する。
 なお、詳しくは図27、図33、および図35に示すように、バッファ部109に設定されるタイムアウト時刻は、上書きされることもある。
 例えば、図9のステップS104でノード装置Nへのデータフレームの送信に失敗したノード装置Nは、ステップS105において、ノード装置Nから受信したデータフレームに対応するバッファ部109-N内のタイムアウト時刻を更新する。更新後のタイムアウト時刻は、具体的には、ステップS105でノード装置Nに送信したデータフレームへのACKフレームの受信をいつまでノード装置Nが待つかを表す。
 図12は、図6の隣接ノード管理テーブル103の例を示す図である。隣接ノード管理テーブル103には、ノードIDフィールドと最終更新時刻フィールドがある。
 例えば、図4のネットワーク1では、ノード装置Nにはノード装置N、N、およびNが隣接している。したがって、ノード装置Nの隣接ノード管理テーブル103-Nは、これら3つの隣接ノード装置N、N、およびNにそれぞれ対応する3つのエントリがある。そして、隣接ノード装置N(i=1,3,6)に対応する各エントリにおいて、ノードIDフィールドには隣接ノード装置NのノードIDであるNが格納されており、最終更新時刻フィールドには、当該エントリが最後に更新された時刻TA2,iが格納されている。
 また、図4のネットワーク1では、ノード装置Nにはノード装置N、N、およびNが隣接している。したがって、ノード装置Nの隣接ノード管理テーブル103-Nは、これら3つの隣接ノード装置N、N、およびNにそれぞれ対応する3つのエントリがある。そして、隣接ノード装置N(i=2,4,5)に対応する各エントリにおいて、ノードIDフィールドには隣接ノード装置NのノードIDであるNが格納されており、最終更新時刻フィールドには、当該エントリが最後に更新された時刻TA3,iが格納されている。
 図13は、図6の重み付けテーブル104の例を示す図である。図13は、具体例として、図4のノード装置Nの重み付けテーブル104-Nを示している。
 図6に示すとおり、「重み付けテーブル104」とは、GDごとに管理される複数の重み付けテーブル104-1~104-Mの総称である。各重み付けテーブル104-i(1≦i≦M)は、対応するGDを記憶している。
 そして、各重み付けテーブル104-i(1≦i≦M)は1つ以上のエントリを有し、各エントリは、最終更新時刻フィールドとLDフィールドと重みフィールドを有する。最終更新時刻フィールドには重みの学習のためにエントリが最後に更新された時刻が格納され、LDフィールドには隣接ノード装置のノードIDが格納され、重みフィールドには当該隣接ノード装置に対応付けられた重みの値が格納される。
 図13の例では、1枚目の重み付けテーブル104-1-Nは、ノード装置NがGDとして指定されているデータフレームの送信用のテーブルなので、GDとしてノード装置NのノードIDであるNを記憶している。
 また、図4のネットワーク1では、ノード装置Nにはノード装置N、N、およびNが隣接している。したがって、重み付けテーブル104-1-Nは、これら3つの隣接ノード装置N、N、およびNにそれぞれ対応する3つのエントリを有する。重み付けテーブル104-1-Nにおいて隣接ノード装置N(i=2,4,5)に対応する各エントリの内容は、次のとおりである。
  ・最終更新時刻フィールドには、エントリの最終更新時刻TW3,7,iが格納されている。
  ・LDフィールドには、隣接ノード装置NのノードIDであるNが格納されている。
  ・重みフィールドには、隣接ノード装置Nに対応付けられる重みW3,7,iが格納されている。
 すなわち、重みW3,7,iは、ノード装置N(つまり重み付けテーブル104-1-Nに対応するGD)をGDとして指定するデータフレームをノード装置Nが送信する場合に参照される、隣接ノード装置Nに対応する重みである。
 同様に、図13の例では、2枚目の重み付けテーブル104-2-N3は、ノード装置NがGDとして指定されているデータフレームの送信用のテーブルなので、GDとしてノード装置NのノードIDであるNを記憶している。
 そして、図4のネットワーク1では、ノード装置Nにはノード装置N、N、およびNが隣接しているので、重み付けテーブル104-2-Nも、これら3つの隣接ノード装置N、N、およびNにそれぞれ対応する3つのエントリを有する。重み付けテーブル104-1-Nにおいて隣接ノード装置N(i=2,4,5)に対応する各エントリの内容は、次のとおりである。
  ・最終更新時刻フィールドには、エントリの最終更新時刻TW3,4,iが格納されている。
  ・LDフィールドには、隣接ノード装置NのノードIDであるNが格納されている。
  ・重みフィールドには、隣接ノード装置Nに対応付けられる重みW3,4,iが格納されている。
 もちろん、重み付けテーブル104-Nには、さらに別のGDと対応づけられた重み付けテーブル104-j-N(j>2)が含まれていてもよい。
 なお、次の点は注意すべきである。すなわち、重み付けテーブル104は、同一のGDであれば、たとえFIDとGSの組み合わせが異なるデータフレームを送信したとしても、送信の度に、送信先となったLDの重みが更新される。例えば、あるデータフレームの送信時に、リンク障害のため特定のLDの重みが大きくなっても(優先度が低くなっても)、すぐに別データフレーム(GDとLDは同一)の送信で、リンク障害が解消されていて送信成功となれば、該LDの重みは小さくなる(優先度は高くなる)。逆に、複数の異なるデータフレーム(GDとLDは同一)が立て続けに、リンク障害のため送信失敗となれば、たとえ同一のFIDとGSの組み合わせのデータフレームは1度しか送信を試していなくても、該当のLDの重みが最大値になってしまうこともありうる。
 図14は、図13の重み付けテーブル104-1-Nの変化を説明する図である。図14の例では、T<T<T<T<Tである。
 例えば、図9のステップS102でノード装置Nからデータフレームを受信した時点では、ノード装置Nの重み付けテーブル104-Nには、ノード装置Nに対応する重み付けテーブル104-1-Nが存在しなかったとする。そして、ステップS102の受信を契機として、以下のような内容の新たな重み付けテーブル104-1-Nが重み付けテーブル104-Nに作成されたとする。
  ・3つのエントリの最終更新時刻はいずれも時刻Tである。
  ・3つのエントリにおいて、隣接ノード装置N(i=2,4,5)に対応付けられる重みW3,7,iは、いずれも0.5である。
 なお、図9に関しては説明の簡単化のため、「2つの隣接ノード装置NとNのうちでノード装置Nの方が、重み付けテーブル104-h-Nにおいて、より軽い重みと対応付けられているとする」と説明した。つまり、図13と図14はh=1の例であり、図9の説明ではW3,7,4<W3,7,5と仮定している。
 しかし、例えば図14に示すように、W3,7,2=W3,7,4=W3,7,5=0.5という場合もありうる。図14の例では、ノード装置NとNが同じ重み0.5に対応付けられているので、ノード装置NはステップS103での送信のLDとしてノード装置NとNのいずれを選ぶこともできるが、仮に、図9の例と同様に、ノード装置NをLDとして選んだとする。
 すると、ステップS103でノード装置Nがノード装置Nにデータフレームを送信する。その後、図31においてステップS103aとして示すようにノード装置Nがノード装置NにACKフレームを送信すると、ノード装置Nは、ノード装置Nへのデータフレームの送信が成功したと認識する。
 そして、図8の例と同様にして、ノード装置Nは、ノード装置Nに対応付けられた重みW3,7,4の値を小さくする。図14の例では、具体的には、ノード装置NはW3,7,4の値を0.5から0.4に更新する。また、ノード装置Nは、ノード装置Nに対応するエントリの最終更新時刻フィールドに、現在時刻Tを設定する。
 その後、図9に示すように、ノード装置NはステップS106で再び同一のデータフレームを受信する。その結果、ノード装置Nは、図9に関して説明したように、重み付けテーブル104-1-Nにおいてノード装置Nと対応付けられている重みW3,7,4の値を、0.4から最大値である1.0に更新する。また、ノード装置Nは、ノード装置Nに対応するエントリの最終更新時刻フィールドに、現在時刻Tを設定する。
 続いて、図9のステップS107に示すように、ノード装置Nはノード装置NをLDとして選択してデータフレームを送信する。その後、図31においてステップS107aとして示すようにノード装置Nがノード装置NにACKフレームを送信すると、ノード装置Nは、ノード装置Nへのデータフレームの送信が成功したと認識する。
 そして、図8の例と同様にして、ノード装置Nは、ノード装置Nに対応付けられた重みW3,7,5の値を小さくする。図14の例では、具体的には、ノード装置NはW3,7,5の値を0.5から0.4に更新する。また、ノード装置Nは、ノード装置Nに対応するエントリの最終更新時刻フィールドに、現在時刻Tを設定する。
 その後、図9に示すように、ノード装置NはステップS109で再び同一のデータフレームを受信する。その結果、図9に関して説明したように、重み付けテーブル104-1-Nにおいてノード装置Nと対応付けられている重みW3,7,5の値を、0.4から最大値である1.0に更新する。また、ノード装置Nは、ノード装置Nに対応するエントリの最終更新時刻フィールドに、現在時刻Tを設定する。
 以上のように、重み付けテーブル104-1-Nは、ACKフレームの受信を契機として、あるいは、送信済みのデータフレームと同一のデータフレームの受信を契機として、更新される。
 図15と図16は、図6のFID管理テーブル105の例を示す図である。図15と図16に示すように、FID管理テーブル105には、FID、GS、LD、OLS、最終更新時刻の各フィールドがある。
 FID管理テーブル105におけるFIDフィールドとGSフィールドは、データフレームを一意に識別するためのフィールドであり、受信したデータフレームのFIDフィールドとGSフィールドから値がそれぞれコピーされる。
 FID管理テーブル105のLDフィールドには、FIDフィールドとGSフィールドの値により識別されるデータフレームを送信するために、最後にLDとして選択した隣接ノード装置のノードIDが格納される。
 また、FID管理テーブル105のOLSフィールドには、FIDフィールドとGSフィールドの値により識別されるデータフレームを最初に受信したときに当該データフレームのLSフィールドに指定されていた隣接ノード装置のノードIDが格納される。OLSフィールドは、データフレームの転送のためにLDを選択するにあたって、LDの候補の中からOLSを除くためにも利用され、バックトラック動作のときのLDを決定するためにも利用される。
 そして、FID管理テーブル105の最終更新時刻フィールドには、エントリが最後に更新された時刻が格納される。
 さて、図15と図16は、図9のステップS101~S112での各ノード装置のFID管理テーブル105を具体例として示している。以下、ステップS101~S112がそれぞれ実行される時刻をTF101~TF112と表す。
 ステップS101でノード装置Nがノード装置Nにデータフレームを送信するとき、ノード装置NはFID管理テーブル105-Nに新たなエントリEを作成する。
 そして、ノード装置Nは、エントリEのFIDフィールドとGSフィールドに、送信したデータフレームのFIDとGSの値を設定する。
 ここで、データフレームのGSとFIDの値は、前述のとおり、データフレームがネットワーク1内を転送されても書き換えられない。したがって、図9でネットワーク1内をステップS101~S112で送信されるデータフレームのFIDとGSの値は、図10のデータフレーム303および304と同じく、それぞれFとNである。よって、ステップS101でノード装置Nは、エントリEのFIDフィールドとGSフィールドに、それぞれFとNという値を設定する。
 なお、以下の各ステップS102~S112で他のノード装置がそれぞれのFID管理テーブル105のエントリのFIDフィールドとGSフィールドに設定する値も、同じくFとNである。よって、以下ではFIDフィールドとGSフィールドに関する説明を省略する。
 また、ステップS101でノード装置Nは、LDとして選択したノード装置NのノードIDであるNを、エントリEのLDフィールドに設定する。
 ところで、GSとFIDの値の組により一意に識別される、ある特定のデータフレームに関して、OLSとは、当該特定のデータフレームを最初に受信したときの当該特定のデータフレームのLSに指定されたノードIDで識別される隣接ノード装置のことである。
 しかしこのようにOLSを定義すると、例えばノード装置NがGSとなってデータフレームを送信する場合に、ノード装置N自身にとっては、送信したデータフレームに関してOLSが未定義となってしまう。そこで、以下ではOLSの定義を拡張する。具体的には、「ノード装置N自身がGSとなってデータフレームを送信する場合には、当該データフレームに関するノード装置N自身にとってのOLSとは、ノード装置N自身である」と定義する。
 換言すれば、OLSとは、ノード装置N自身が直接認識しているネットワークの範囲内において、ノード装置Nにとってデータフレームの起源として認識されるノード装置である。なおここで、「ノード装置N自身が直接認識しているネットワークの範囲」とは、ノード装置Nから見てホップ数1以下の範囲であり、具体的にはノード装置N自身と、ノード装置Nの隣接ノード装置のみが含まれる。例えば、図5の例では、ノード装置N105自身が直接認識しているネットワークの範囲のみが実線で示されている。
 以上の拡張されたOLSの定義より、ステップS101でノード装置NがエントリEのOLSフィールドに設定する値は、ノード装置N自身のノードID(すなわちN)である。ノード装置Nは、もし今後GSの値がNでFIDの値がFのデータフレームを受信することがあれば、以上のようにして作成したエントリEに基づいて、「かつてノード装置N自身が送信したデータフレームを受信した」と認識することができる。
 また、ステップS101でノード装置Nは、現在時刻TF101をエントリEの最終更新時刻フィールドに設定する。なお、以下の各ステップS102~S112で他のノード装置がそれぞれのFID管理テーブル105のエントリの最終更新時刻フィールドに設定する値は、同様に、各ステップS102~S112が実行される時刻TF102~TF112である。よって、以下では最終更新時刻フィールドに関する説明も省略する。
 そして、ステップS101でノード装置Nからデータフレームを受信したノード装置Nは、ステップS102でノード装置Nにデータフレームを送信するときにFID管理テーブル105-Nに新たなエントリEを作成する。そして、ノード装置NはエントリEにおいて、OLSフィールドにはNと設定し、LDフィールドにはNと設定する。
 続いて、ステップS102でノード装置Nからデータフレームを受信したノード装置Nは、ステップS103でノード装置Nにデータフレームを送信するときにFID管理テーブル105-Nに新たなエントリEを作成する。そして、ノード装置NはエントリEにおいて、OLSフィールドにはNと設定し、LDフィールドにはNと設定する。
 続いて、ステップS103でノード装置Nからデータフレームを受信したノード装置Nは、ステップS104でノード装置Nにデータフレームを送信するときにFID管理テーブル105-Nに新たなエントリEを作成する。そして、ノード装置NはエントリEにおいて、OLSフィールドにはNと設定し、LDフィールドにはNと設定する。
 ところが、ステップS104での送信は、ノード装置NとNの間のリンクの障害のために失敗する。すなわち、ノード装置Nは、ノード装置NからACKフレームを受信することができないため、タイムアウトする。その結果、ノード装置Nは、ステップS105のように、他の隣接ノード装置Nを次のLDとして再選択し、ノード装置Nにデータフレームを送信する。
 ここで、ステップS104とS105でそれぞれ送信されるデータフレームは、FIDの値がFでありGSの値がNであるから、同一のデータフレームである。したがって、ステップS105でノード装置Nは、新たなエントリを作成するのではなく、既存のエントリEを更新する。
 具体的には、ステップS105でノード装置Nは、エントリEにおいて、LDフィールドの値をNに上書きする。なお、GSの値がNでFIDの値がFである同じデータフレームをノード装置Nが何度送信しようとも、「ノード装置Nが当該データフレームを最初に受信したのはノード装置Nからである」という事実は変わらない。よって、エントリEのOLSフィールドの値は、書き換えられることはなく、Nのままである。
 続いて、ステップS105でノード装置Nからデータフレームを受信したノード装置Nは、ステップS106でノード装置Nにデータフレームを送信するときにFID管理テーブル105-Nに新たなエントリEを作成する。そして、ノード装置NはエントリEにおいて、OLSフィールドにはNと設定し、LDフィールドにはNと設定する。
 そして、ステップS106でノード装置Nからデータフレームを受信したノード装置Nは、受信したデータフレームのGSとFIDの値をキーにしてFID管理テーブル105-Nを検索し、エントリEを見つける。エントリEが見つかったことから、ノード装置Nは、「ノード装置N自身がかつてステップS103で送信したのと同一のデータフレームをステップS106で受信した」と認識することができる。
 したがって、ノード装置Nは、次のステップS107でデータフレームをノード装置Nに送信するに際して、FID管理テーブル105-Nに新たなエントリを作成するのではなく、既存のエントリEを更新する。具体的には、ステップS107でノード装置Nは、エントリEにおいて、LDフィールドの値をNに上書きする。なお、エントリEのOLSフィールドの値は書き換えられることはなく、Nのままである。
 すると、ステップS107でノード装置Nからデータフレームを受信したノード装置Nは、受信したデータフレームのGSとFIDの値をキーにしてFID管理テーブル105-Nを検索し、エントリEを見つける。エントリEが見つかったことから、ノード装置Nは、「ノード装置N自身がかつてステップS106で送信したのと同一のデータフレームをステップS107で受信した」と認識することができる。
 したがって、ノード装置Nは、次のステップS108でデータフレームをノード装置Nに送信するに際して、FID管理テーブル105-Nに新たなエントリを作成するのではなく、既存のエントリEを更新する。具体的には、ステップS108でノード装置Nは、エントリEにおいて、LDフィールドの値をNに上書きする。なお、エントリEのOLSフィールドの値は書き換えられることはなく、Nのままである。
 すると、ステップS108でノード装置Nからデータフレームを受信したノード装置Nは、受信したデータフレームのGSとFIDの値をキーにしてFID管理テーブル105-Nを検索し、エントリEを見つける。エントリEが見つかったことから、ノード装置Nは、「ノード装置N自身がかつてステップS105で送信したのと同一のデータフレームをステップS108で受信した」と認識することができる。
 したがって、ノード装置Nは、次のステップS109でデータフレームをノード装置Nに送信するに際して、FID管理テーブル105-Nに新たなエントリを作成するのではなく、既存のエントリEを更新する。具体的には、ステップS109でノード装置Nは、エントリEにおいて、LDフィールドの値をNに上書きする。なお、エントリEのOLSフィールドの値は書き換えられることはなく、Nのままである。
 すると、ステップS109でノード装置Nからデータフレームを受信したノード装置Nは、受信したデータフレームのGSとFIDの値をキーにしてFID管理テーブル105-Nを検索し、エントリEを見つける。エントリEが見つかったことから、ノード装置Nは、「ノード装置N自身がかつてステップS103で送信したのと同一のデータフレームをステップS109で受信した」と認識することができる。
 したがって、ノード装置Nは、次のステップS110でデータフレームをノード装置Nに送信するに際して、FID管理テーブル105-Nに新たなエントリを作成するのではなく、既存のエントリEを更新する。具体的には、ステップS110でノード装置Nは、エントリEにおいて、LDフィールドの値をNに上書きする。なお、エントリEのOLSフィールドの値は書き換えられることはなく、Nのままである。
 すると、ステップS110でノード装置Nからデータフレームを受信したノード装置Nは、受信したデータフレームのGSとFIDの値をキーにしてFID管理テーブル105-Nを検索し、エントリEを見つける。エントリEが見つかったことから、ノード装置Nは、「ノード装置N自身がかつてステップS102で送信したのと同一のデータフレームをステップS110で受信した」と認識することができる。
 したがって、ノード装置Nは、次のステップS111でデータフレームをノード装置Nに送信するに際して、FID管理テーブル105-Nに新たなエントリを作成するのではなく、既存のエントリEを更新する。具体的には、ステップS111でノード装置Nは、エントリEにおいて、LDフィールドの値をNに上書きする。なお、エントリEのOLSフィールドの値は書き換えられることはなく、Nのままである。
 そして、ステップS111でノード装置Nからデータフレームを受信したノード装置Nは、ステップS112でノード装置Nにデータフレームを送信するときにFID管理テーブル105-Nに新たなエントリEを作成する。そして、ノード装置NはエントリEにおいて、OLSフィールドにはNと設定し、LDフィールドにはNと設定する。
 図17は、図6の再送信バッファ117の例を示す図である。再送信バッファ117には、GDフィールド、ポート番号フィールド、到達保証IDフィールド、到達保証ACK待ち時間フィールド、再送回数フィールド、及びデータフレームフィールドがある。
 前述したように、自ノードが到達保証データフレームのGSであった場合には、図6の到達保証ACK処理部114は、送信した到達保証データフレームを再送信バッファ117に一時保持する。そして、到達保証ACK処理部114は、到達保証ACKフレームの受信状況に応じて、到達保証データフレームを再送する処理を実行する。
 データフレームフィールドには、再送される可能性のある到達保証データフレームが格納される。
 GDフィールド、ポート番号フィールド、到達保証IDフィールドには、データフレームフィールドに格納された到達保証データフレーム内の各値がコピーされる。この値組は、到達保証データフレームを一意に特定することができるものである。GDから到達保証ACKフレームが受信されたときに、そのフレームから抽出されるGD、ポート番号、および到達保証IDの組をキーとして再送信バッファ117が検索され、送信に成功したバッファエントリが削除される。
 到達保証ACK待ち時間フィールドには、再送を含む送信毎に、所定の待ち時間TR、TR、TR、・・・が設定され、一定時間毎にデクリメントされてゆく。そして、この待ち時間が0になったエントリについて、再送処理が実行される。
 また、再送回数フィールドの値は、再送毎に+1ずつインクリメントされてゆき、再送回数が所定値を超えたエントリは、再送があきらめられた再送信バッファ117から削除される。
 図18は、図6の組立バッファ116の例を示す図である。組立バッファ116には、GSフィールド、ポート番号フィールド、タイマ値、到達保証IDフィールド、内容フィールド、スタートフラグフィールド、および終了フラグフィールドがある。
 前述したように、自ノードが到達保証データフレームのGDであった場合には、図6の到達保証ACK処理部114は、組立バッファ116を使いながら、複数に分割された到達保証データフレームから元の送信データを組み立てるための処理を実行する。
 到達保証ACK処理部114は、自ノード宛ての到達保証データフレームを受信する毎に、受信フレームからGS、ポート番号、到達保証ID、ペイロード、スタートフラグ、および終了フラグの各値を抽出する。そして、組立バッファ116上で、GSおよびポート番号ごとにまとめながら、スタートフラグが1であるものから到達保証ID順に終了フラグが1であるものまで、ペイロードを含むデータ組を並び替えて格納する。このとき、GSおよびポート番号ごとに、タイマ値TB、TB、・・・、TB、・・・が設定され、一定時間毎にデクリメントされてゆく。そして、このタイマ値が0になるまでの間に、スタートフラグが1のデータから終了フラグが1のデータまでが揃うと、送信されたデータが復元できることになる。復元されたデータは、例えば図6の上位層処理部111で実行されるアプリケーション等によって組立バッファ116から読み出される。上記タイマ値が0になったグループについては、組立バッファ116から削除される。
 続いて、図19~図38のフローチャートを参照して、ノード装置100の動作の詳細を説明する。
 図19は、フレーム受信処理のフローチャートである。フレーム受信処理は、ノード装置100に電源が入れられると開始される。
 ステップS201で受信部101は、フレームを受信するまで待機する。つまり、受信部101は、フレームを受信していなければステップS201を繰り返す。フレームを受信すると、受信部101は受信したフレームをフレーム分岐処理部106に出力し、処理はステップS202に移行する。
 ステップS202では、フレーム分岐処理部106が、ステップS201で受信部101が受信したフレームのタイプフィールドの値を参照し、フレームのタイプを判定する。受信したフレームのタイプがハローフレームの場合、処理はステップS203に移行し、データフレームの場合、処理はステップS204に移行し、ACKフレームの場合、処理はステップS206に移行する。
 ステップS203では、受信されたハローフレームをフレーム分岐処理部106がリンク管理部108へ出力し、リンク管理部108が図20のハローフレーム受信処理を行う。そして処理はステップS201に戻る。もちろん、図7のMPU201が図6の各部に対応する複数のタスクを並行して実行するマルチタスク環境では、フレーム分岐処理部106がハローフレームを出力したら、ハローフレーム受信処理の終了を待たずに処理がステップS201に移行してもよい。
 また、ステップS204では、フレーム分岐処理部106が、ステップS201で受信されたデータフレームをバッファ部109に格納する。つまり、フレーム分岐処理部106は、バッファ部109内に新たなエントリの領域を確保し、確保した領域にステップS201で受信されたデータフレームを格納する。また、フレーム分岐処理部106は、次のステップS205のためにデータフレームからGSとFIDの値を取り出して記憶しておく。
 なお、図11のとおりバッファ部109はタイムアウト時刻フィールドを有するが、ステップS204の時点では、タイムアウト時刻はまだ設定されない。
 そして、ステップS205でフレーム分岐処理部106は、データフレーム処理部110にデータフレーム受信処理を行うよう指示する。指示に際してフレーム分岐処理部106は、ステップS204で記憶しておいたデータフレームのGSとFIDの値をデータフレーム処理部110に通知する。
 なお、ノード装置100がGSとならないタイプの装置である場合(すなわち、ノード装置100が中継専門の装置である場合)、データフレーム受信処理は図25~図29A~Hのとおりである。他方、ノード装置100がGSにもなりうるタイプの装置である場合、データフレーム受信処理は、図25~図27、図38のとおりである。
 データフレーム処理部110が指示にしたがってデータフレーム受信処理を行うと、処理はステップS201に戻る。もちろん、マルチタスク環境では、フレーム分岐処理部106がデータフレーム処理部110にデータフレーム受信処理を行うよう指示したら、データフレーム受信処理の終了を待たずに処理がステップS201に移行してもよい。
 また、ステップS206では、受信されたACKフレームをフレーム分岐処理部106がACK処理部107へ出力し、ACK処理部107が図32のACKフレーム受信処理を行う。そして処理はステップS201に戻る。もちろん、マルチタスク環境では、フレーム分岐処理部106がACKフレームを出力したら、ACKフレーム受信処理の終了を待たずに処理がステップS201に移行してもよい。
 図20は、図19のステップS203におけるハローフレーム受信処理のフローチャートである。図20の処理は、フレーム分岐処理部106からハローフレームがリンク管理部108に出力されると開始される。
 ステップS301でリンク管理部108は、受信したハローフレームのLSと同じ値をノードIDとして持つエントリが、隣接ノード管理テーブル103(図12参照)に存在するか否かを判断する。エントリが見つかれば処理はステップS302に移行し、エントリが見つからなければ処理はステップS303に移行する。
 なお、図20の説明における「受信したハローフレーム」とは、図19のステップS201で受信部101が受信したハローフレームである。つまり、図20の説明における「受信したハローフレーム」とは、ステップS202でフレーム分岐処理部106がリンク管理部108に出力して図20の処理の開始の契機となったハローフレームである。
 ステップS302でリンク管理部108は、ステップS301で見つかったエントリの最終更新時刻として、現在時刻を設定する。そして、図20の処理は終了する。
 例えば、ノード装置NにおいてステップS302が実行された結果として、図12のように隣接ノード管理テーブル103-Nにおいて、NというノードIDに対応する最終更新時刻フィールドの値がTA2,1と更新される。その結果、ノード装置Nは「時刻TA2,1にはノード装置Nがノード装置Nを隣接ノード装置として認識可能な状況であった」と記憶しておくことができる。
 他方、ステップS301でエントリが見つからない場合は、今まで隣接ノード装置として認識していなかった新たなノード装置からハローフレームが受信されたということである。よって、続くステップS303~S308において、当該新たなノード装置を隣接ノード装置として登録するための処理が行われる。
 ステップS303でリンク管理部108は、隣接ノード管理テーブル103に新規エントリを追加する。
 そして、ステップS304でリンク管理部108は、ステップS303で追加した新規エントリに、受信したハローフレームのLSの値と現在時刻を設定する。例えば、図10のハローフレーム312を初めて受信したとき、ノード装置Nは、新規エントリのノードIDフィールドに、ハローフレーム312のLSの値であるNを設定し、新規エントリの最終更新時刻フィールドに現在時刻を設定する。
 続いて、ステップS305でリンク管理部108は、重み付けテーブル104-1~104-M(図13と図14を参照)の中に、まだ注目していない重み付けテーブル104-i(1≦i≦M)があるか否かを判断する。既にすべての重み付けテーブル104-1~104-Mに注目し終わっていれば、図20の処理は終了し、まだ注目していない重み付けテーブル104-iがあれば、処理はステップS306に移行する。
 ステップS306でリンク管理部108は、重み付けテーブル104-1~104-Mのうちでまだ注目していないものの中から、次の重み付けテーブルに注目する。以下では説明の便宜上、ステップS306では重み付けテーブル104-iが注目されたとする。
 そして、ステップS307でリンク管理部108は、注目している重み付けテーブル104-iに新規エントリを追加する。
 さらに、ステップS308でリンク管理部108は、ステップS307で追加した新規エントリのLD、重み、最終更新時刻の各フィールドに、受信したハローフレームのLSの値と、初期重み付け値と、現在時刻を、それぞれ設定する。初期重み付け値は、実施形態に応じて任意に決められる定数である。
 本実施形態では、上記のとおり重みの値は0以上1以下であり、1はLDとして選択不能なことを示す特別な値であるから、初期重み付け値は、0以上1未満の任意の値でよい。より具体的には、初期重み付け値は、例えば0.5でもよい。例えば、図14の1番上に示した重み付けテーブル104-1-Nの最初のエントリは、次のようにして作成されたものであってもよい(ただし、正確にはその場合、最初のエントリの最終更新時刻には、他の2つのエントリの最終更新時刻Tとは異なる値が設定され、図14とまったく同じとはならない)。
  ・GDとしてノード装置Nに対応付けられた重み付けテーブル104-1-Nが既に存在している。
  ・しかし、ノード装置Nは、ノード装置Nを隣接ノード装置として今まで認識していなかった。
  ・ノード装置Nは、ノード装置Nから初めてハローフレームを受信した。
  ・以上の状況において、ステップS306では重み付けテーブル104-1-Nが注目された。
  ・よって、ステップS308では、新規エントリのLDフィールドに、受信したハローフレームのLSの値であるNが設定され、新規エントリの重みフィールドに、初期重み付け値である0.5が設定された。
 ステップS308の実行後、処理はステップS305に戻る。
 図21は、ハローフレーム送信処理のフローチャートである。図21の処理は、図19の処理とは独立して並行に、ハローフレーム生成部112により実行される。具体的には、ノード装置100に電源が入れられると、ハローフレーム生成部112が図21の処理を開始する。
 ステップS401でハローフレーム生成部112は、現在時刻が送信予定時刻であるか否かを判断する。現在時刻が送信予定時刻であれば処理はステップS402に移行し、現在時刻が送信予定時刻でなければ処理はステップS401に戻る。つまり、ハローフレーム生成部112は送信予定時刻まで待機する。
 例えば、基準時刻Trefとハローフレームの送信間隔ΔThelloが予め決められていてもよい。また、ハローフレーム生成部112は、例えば図7のMPU201のクロックに基づいて現在時刻Tnowを参照することができる。ハローフレーム生成部112は、式(4)のZが整数のときのみ、「現在時刻は送信予定時刻である」と判断してもよい。
   Z=(Tref-Tnow)/ΔThello    (4)
 例えば、基準時刻Trefは予め決められた定数でもよいし、ノード装置100に電源が入れられた時刻でもよい。また、送信間隔ΔThelloは実施形態に応じて適宜決めることができ、例えば10秒などの比較的長い時間でもよい。
 ステップS402では、ハローフレーム生成部112がFID生成部113に新たなFIDの生成を要求し、FID生成部113が新たなFIDを生成する。例えば、FIDはシーケンス番号でもよく、FID生成部113はカウンタ回路を使って実現されてもよい。もちろん、FID生成部113はMPU201がプログラムを実行することで実現されてもよい。
 ステップS402ではさらに、FID生成部113が生成したFIDを用いてハローフレーム生成部112がハローフレームを生成する。
 例えば、図10のハローフレーム312は、次のようにして生成される。すなわち、ノード装置NのFID生成部113-Nが、新たなFIDとしてFという値を生成する。すると、ノード装置Nのハローフレーム生成部112-Nは、新たなハローフレーム312を生成する。
 その際、ハローフレーム生成部112-Nは、ハローフレーム312において、LDに0xFFFFFFという所定の値を設定し、LSとGSに自ノードIDであるNを設定し、GDに0x000000という所定の値を設定する。また、ハローフレーム生成部112-Nは、ハローフレーム312において、FIDにはFID生成部113-Nにより生成された値Fを設定し、タイプには所定の値Hを設定する。
 以上のようにしてステップS402でハローフレームが生成されると、続いて、ステップS403においてハローフレーム生成部112は、生成したハローフレームの送信を送信部102に依頼し、送信部102がハローフレームを送信する。そして、処理はステップS401に戻る。
 続いて、各種テーブルのエージング処理について図22~図24を参照して説明する。各エージング処理は、例えば、図7のタイマIC203からの割り込み信号を契機として開始されてもよい。
 図22は、隣接ノード管理テーブル103のエージング処理のフローチャートである。例えば、タイマIC203が所定の間隔Iで割り込み信号をリンク管理部108に出力し、割り込み信号を契機としてリンク管理部108が所定の間隔Iで図22の処理を行ってもよい。
 ステップS501でリンク管理部108は、隣接ノード管理テーブル103(図12を参照)の1つ目のエントリに注目する。以下、図22に関する説明においては、リンク管理部108が注目している隣接ノード管理テーブル103のエントリを「注目エントリ」という。
 続いてステップS502でリンク管理部108は、現在時刻と、注目エントリの最終更新時刻との差が、所定の値G以上か否かを判断する。なお、実施形態によって、G=Iでもよいし、G<Iでもよいし、G>Iでもよい。
 現在時刻と、注目エントリの最終更新時刻との差が、所定の値G以上であれば、処理はステップS503に移行する。他方、現在時刻と、注目エントリの最終更新時刻との差が、所定の値G未満であれば、処理はステップS505に移行する。
 ステップS503でリンク管理部108は、注目エントリのノードIDと同じ値をLDとして有するエントリを、重み付けテーブル104から削除する。
 例えば、注目エントリが、図12の隣接ノード管理テーブル103-Nの3番目のエントリである場合、注目エントリのノードIDの値はNである。したがって、ステップS503でリンク管理部108は、重み付けテーブル104-1-N~104-M-Nのそれぞれから、LDの値がNであるエントリを削除する。例えば、ステップS503では、図13の重み付けテーブル104-1-Nの3つ目のエントリと、重み付けテーブル104-2-Nの3つ目のエントリが削除される。
 そして、ステップS504でリンク管理部108は。注目エントリを隣接ノード管理テーブル103から削除する。そして処理はステップS505に移行する。
 ステップS505でリンク管理部108は、まだ注目していないエントリが隣接ノード管理テーブル103に残っているか否かを判断する。リンク管理部108が、隣接ノード管理テーブル103のすべてのエントリに注目し終わっていれば、図22の処理は終了する。他方、まだリンク管理部108が注目していないエントリが隣接ノード管理テーブル103に残っていれば、処理はステップS506に移行する。
 ステップS506でリンク管理部108は、隣接ノード管理テーブル103のまだ注目していないエントリの中で、次のエントリに注目する。そして処理はステップS502に戻る。
 以上の図22のエージング処理により、ノード装置100は、今まで隣接ノード装置として認識していたノード装置からのハローフレームの受信が途絶えると、「当該ノード装置は、もはやノード装置100に隣接していない」と認識することができるようになる。つまり、図22の処理により、ノード装置100は、潜在的なLDの候補としての隣接ノード装置を、環境の変化に追従して適切に管理することができるようになる。
 なお、上記の所定の間隔Iおよび所定の値Gは、環境の変化しやすさなどに応じて、実施形態によって適宜決められることが望ましい。なお、本実施形態では、ネットワーク内のすべてのノード装置に同じハローフレームの送信間隔ΔThelloが設定されており、隣接ノード管理テーブル103のエージング時間である上記の所定の値Gは、G>ΔThelloを満たす。
 図23は、重み付けテーブル104のエージング処理のフローチャートである。例えば、タイマIC203が所定の間隔Iで割り込み信号をデータフレーム処理部110に出力し、割り込み信号を契機としてデータフレーム処理部110が所定の間隔Iで図23の処理を行ってもよい。
 ステップS601でデータフレーム処理部110は、重み付けテーブル104(図13と図14を参照)のうち1枚目の重み付けテーブル104-1に注目する。以下、図23に関する説明においては、データフレーム処理部110が注目している重み付けテーブルを、「104-i」という参照符号で表し(1≦i≦M)、「注目テーブル」という。ステップS601の実行直後はi=1である。
 続いてステップS602でデータフレーム処理部110は、注目テーブル104-iの1つ目のエントリに注目する。以下、注目テーブルのうちでデータフレーム処理部110が注目しているエントリを「注目エントリ」という。
 続いてステップS603でデータフレーム処理部110は、現在時刻と、注目エントリの最終更新時刻との差が、所定の値G以上か否かを判断する。なお、実施形態によって、G=Iでもよいし、G<Iでもよいし、G>Iでもよい。
 現在時刻と、注目エントリの最終更新時刻との差が、所定の値G以上であれば、処理はステップS604に移行する。他方、現在時刻と、注目エントリの最終更新時刻との差が、所定の値G未満であれば、処理はステップS605に移行する。
 ステップS604でデータフレーム処理部110は、注目テーブル104-iから注目エントリを削除する。そして処理はステップS605に移行する。
 ステップS605でデータフレーム処理部110は、注目テーブル104-iにまだ注目していないエントリが残っているか否かを判断する。データフレーム処理部110が注目テーブル104-iのすべてのエントリに注目し終わっていれば、処理はステップS607に移行する。他方、まだデータフレーム処理部110が注目していないエントリが注目テーブル104-iに残っていれば、処理はステップS606に移行する。
 ステップS606でデータフレーム処理部110は、注目テーブル104-i内のまだ注目していないエントリの中で、次のエントリに注目する。そして処理はステップS603に戻る。
 ステップS607でデータフレーム処理部110は、注目テーブル104-iにエントリが存在するか否かを判断する。ステップS603~S606の繰り返しの結果、注目テーブル104-iにエントリがなくなった場合は、処理はステップS608に移行する。他方、注目テーブル104-iに1つ以上エントリが存在すれば、処理はステップS609に移行する。
 ステップS608でデータフレーム処理部110は、エントリの存在しない注目テーブル104-iを削除する。そして、処理はステップS609に移行する。
 ステップS609でデータフレーム処理部110は、まだ注目していない重み付けテーブルが重み付けテーブル104の中に残っているか否かを判断する。データフレーム処理部110が、すべての重み付けテーブル104-1~104-Mに注目し終わっていれば、図23の処理は終了する。他方、まだデータフレーム処理部110が注目していない重み付けテーブル104-j(1≦j≦M)が重み付けテーブル104の中に残っていれば、処理はステップS610に移行する。
 ステップS610でデータフレーム処理部110は、重み付けテーブル104の中でまだ注目していない次の重み付けテーブル104-jに注目する(すなわち、重み付けテーブル104-jを注目テーブル104-iとして選ぶ)。そして処理はステップS602に戻る。
 以上の図23のエージング処理により、ノード装置100は、「過去の障害の影響が累積されて、どの隣接ノード装置もLDとして選択することが不能となる」といった事態に陥らずに済む。
 例えば、図9の例において、ステップS112の後、ノード装置NとNの間のリンクに障害が発生し、ノード装置NとNの間のリンクが障害から復旧したという状況を想定する。もし図23のエージング処理が行われないと、実際には障害からの復旧により、例えば経路〈N,N,N,N,N〉でのデータフレームの送信が可能になっていても、自律分散協調の結果としてこの経路が選択されることがなくなってしまう。しかし、図23のエージング処理が行われれば、上記で想定した状況において、経路〈N,N,N,N,N〉が選択されうるようになる。
 なお、上記の所定の間隔Iおよび所定の値Gは、環境の変化しやすさなどに応じて、実施形態によって適宜決められることが望ましい。
 図24は、FID管理テーブル105のエージング処理のフローチャートである。例えば、タイマIC203が所定の間隔Iで割り込み信号をデータフレーム処理部110に出力し、割り込み信号を契機としてデータフレーム処理部110が所定の間隔Iで図24の処理を行ってもよい。
 ステップS701でデータフレーム処理部110は、FID管理テーブル105(図15と図16を参照)のうち1つ目のエントリに注目する。以下、図24に関する説明においては、データフレーム処理部110が注目しているエントリを「注目エントリ」という。
 続いてステップS702でデータフレーム処理部110は、現在時刻と、注目エントリの最終更新時刻との差が、所定の値G以上か否かを判断する。なお、実施形態によって、G=Iでもよいし、G<Iでもよいし、G>Iでもよい。
 また、図26のステップS807に関して後述する理由から、本実施形態では、重み付けテーブル104のエージング時間である所定の値Gと、FID管理テーブル105のエージング時間である所定の値Gは、G<Gを満たす。
 現在時刻と、注目エントリの最終更新時刻との差が、所定の値G以上であれば、処理はステップS703に移行する。他方、現在時刻と、注目エントリの最終更新時刻との差が、所定の値G未満であれば、処理はステップS704に移行する。
 ステップS703でデータフレーム処理部110は、注目エントリをFID管理テーブル105から削除する。そして処理はステップS704に移行する。
 そして、ステップS704でデータフレーム処理部110は、まだ注目していないエントリがFID管理テーブル105に残っているか否かを判断する。データフレーム処理部110がFID管理テーブル105のすべてのエントリに注目し終わっていれば、図24の処理は終了する。他方、まだデータフレーム処理部110が注目していないエントリがFID管理テーブル105に残っていれば、処理はステップS705に移行する。
 ステップS705でデータフレーム処理部110は、FID管理テーブル105のまだ注目していないエントリの中で、次のエントリに注目する。そして処理はステップS702に戻る。
 以上の図24のエージング処理により、「FID管理テーブル105のエントリが増え続けて記憶領域を使い尽くしてしまう」といった事態を防ぐことができる。
 なお、上記の所定の値Gは、例えば、何度もバックトラックが生じる最悪ケースにおいてデータフレームがGSからGDに到達するのにかかると予測される時間の長さ以上になるよう、決められていてもよい。なお、「最悪ケース」とは、詳しくは図39とともに後述するが、探索空間において、刈り込まれていない全探索ノードをバックトラックしながら深さ優先探索順にたどる場合を意味する。一般には、ネットワークの規模が大きいほど、所定の値Gも大きく設定しておくことが望ましい。
 図25~図29A~Hは、図19のステップS205におけるデータフレーム受信処理のフローチャートである。なお、説明の便宜上、まず、ノード装置100がGSとはならず中継専門のタイプである場合のデータフレーム受信処理について、図25~図29A~Hを参照して説明する。ノード装置100がGSにもなりうるタイプの場合については、図28の部分が後述の図38の処理に置き換わる。
 図19のステップS205でフレーム分岐処理部106からデータフレーム受信処理を行うよう指示されると、データフレーム処理部110は図25の処理を開始する。なお、前述のとおり、フレーム分岐処理部106からの指示は、受信したデータフレームのGSとFIDの値の通知をともなっている。
 ステップS801でデータフレーム処理部110は、受信したデータフレームのLDの値が自ノードIDであるか否かを判断する。受信したデータフレームのLDの値が自ノードIDでなければ、処理はステップS802に移行し、受信したデータフレームのLDの値が自ノードIDであれば、処理はステップS803に移行する。
 なお、データフレーム受信処理の説明において、「受信したデータフレーム」とは、図19のステップS201で受信部101が受信し、ステップS204でバッファ部109に格納され、図25の処理の開始の契機となったデータフレームのことである。
 また、フレーム分岐処理部106は、データフレーム受信処理の開始をデータフレーム処理部110に指示するとき、受信したデータフレームのGSとFIDの値をデータフレーム処理部110に通知している。よって、データフレーム処理部110は、通知されたGSとFIDの値をキーにしてバッファ部109を検索することで、受信したデータフレームを含むエントリを見つけることができる。したがって、データフレーム処理部110は、見つけたエントリから、受信したデータフレームのヘッダに含まれる各フィールドの値を読み出すことができる。
 正確には、ステップS801では、データフレーム処理部110はまず、以上のようにして、受信したデータフレームのヘッダに含まれる各フィールドの値をバッファ部109から読み出して記憶する。そして、記憶したLDの値(すなわち受信したデータフレームのLDの値)を自ノードIDと比較する。なお、ノード装置100自身のノードIDである自ノードIDは、例えば、図7のフラッシュメモリ205に予め記録されているので、データフレーム処理部110は自ノードIDを参照することができる。
 受信したデータフレームのLDの値が自ノードIDと異なるとき、ノード装置100はノード装置100自身には無関係なデータフレームを偶然受信したということである。よって、ステップS802でデータフレーム処理部110は、受信したデータフレームを破棄する。つまり、データフレーム処理部110は、ステップS801で見つけたバッファ部109のエントリを削除する。そして、データフレーム受信処理は終了する。
 他方、受信したデータフレームのLDの値が自ノードIDと等しい場合は、ステップS803でデータフレーム処理部110は、ACKフレームを生成し、ACKフレームの送信を送信部102に依頼する。そして、送信部102がACKフレームを送信する。なお、このACKフレームは、到達保証ACKフレームとは異なり、隣接ノード間でのみローカルに送受信されるものである。
 例えば、図10のデータフレーム303をノード装置Nが受信すると、ノード装置Nのデータフレーム処理部110-Nは、ステップS803において図10のACKフレーム322を生成する。そして、送信部102-NがACKフレーム322を送信する。
 具体的には、データフレーム処理部110-Nは、受信したデータフレーム303のLSの値であるNをACKフレーム322のLDに設定し、自ノードID(すなわちノード装置N自身のノードIDであるN)をACKフレーム322のLSに設定する。また、ACKフレーム322は、対応するデータフレーム303のLSであるノード装置N以外には無関係なので、データフレーム処理部110-Nは、ACKフレーム322のGDには、ヌルを表す特殊な値0x000000を設定する。
 また、データフレーム処理部110-Nは、ACKフレーム322を受信したノード装置Nが「ACKフレーム322はデータフレーム303に対するACKフレームである」と認識することができるように、ACKフレーム322のGSとFIDを設定する。すなわち、データフレーム処理部110-Nは、ACKフレーム322のGSとFIDに、それぞれ、受信したデータフレーム303のGSとFIDの値NとFを設定する。
 そして、データフレーム処理部110-Nは、ACKフレーム322のタイプとして、「ACKフレーム」を示す所定の値Aを設定する。ステップS803では、以上のようにしてデータフレーム処理部110-NがACKフレーム322を生成し、送信部102-NがACKフレーム322を送信する。
 次に、ステップS803aでデータフレーム処理部110は、受信したデータフレームの到達保証ヘッダ333(図10参照)を抽出する。
 次に、ステップS803bでデータフレーム処理部110は、到達保証ヘッダ333から到達保証フラグと到達保証ACKフラグを読み取る。
 続いて、ステップS803cで、データフレーム処理部110は、(到達保証フラグ,到達保証ACKフラグ)の組の値が(1,0)または(0,1)であるか否かを判定する。図10の説明において前述したように、受信されたデータフレームは、上記値組が(1,0)のときには到達保証データフレームであり、(0,1)のときには到達保証ACKフレームであり、それ以外の値組のときには通常のデータフレームである。従って、受信されたデータフレームが通常の場合には、ステップS803cの判定がNoとなって、ステップS804に移行する。一方、受信されたデータフレームが到達保証フラグまたは到達保証ACKフレームの場合には、ステップS803cの判定がYesとなって、図29AのステップS1301に移行する。
 まず、受信されたデータフレームが通常の場合の処理について、以下に説明する。
 始めに、ステップS804でデータフレーム処理部110は、受信したデータフレームのGDの値が自ノードIDであるか否かを判断する。受信したデータフレームのGDの値が自ノードIDであれば、処理はステップS805に移行する。他方、受信したデータフレームのGDの値が自ノードIDと異なれば、処理は図26のステップS806に移行する。
 ステップS805でデータフレーム処理部110は、上位層処理部111に、受信したデータフレームのペイロードを渡し、データフレーム受信処理を終了する。具体的には、データフレーム処理部110は、ステップS801で見つけたバッファ部109のエントリからペイロードを取り出して上位層処理部111に出力し、当該エントリをバッファ部109から削除する。そしてデータフレーム受信処理は終了する。
 例えば、図9のステップS112でデータフレームをノード装置Nから受信したノード装置Nでは、受信したデータフレームのペイロードは上位層処理部111-Nに出力され、上位層処理部111-Nにおいて処理される。
 図26のステップS806以降の処理は、受信したデータフレームのLDの値が自ノードIDと等しく、かつ受信したデータフレームのGDの値が自ノードIDと異なる場合に実行される。
 ステップS806でデータフレーム処理部110は、受信したデータフレームのFIDとGSの値を検索キーとして用いて、FID管理テーブル105を検索する。なお、上記のように、受信したデータフレームのFIDとGSの値は、図25の処理の開始時にフレーム分岐処理部106から通知されている。
 続いて、ステップS807でデータフレーム処理部110は、ステップS806の検索の結果エントリがヒットしたか否かを判断する。エントリがヒットした場合、ノード装置100が以前送信したことのあるデータフレームと同じデータフレームが受信されたということなので、処理はステップS808に移行する。他方、エントリがヒットしなかった場合、ノード装置100が送信したことのないデータフレームが受信されたということなので、処理はステップS810に移行する。
 なお、正確には、「ノード装置100が以前送信したことのあるデータフレームと同じデータフレームが受信されたが、検索対象のエントリは既にエージングにより消滅してしまった」という場合も、エントリはヒットしない。このような場合が生じないように、ネットワーク内でバックトラックが繰り返される最悪の時間の見積もりなどに基づいて、適切にFID管理テーブル105のエージング時間Gが定められることが望ましい。
 ステップS808でデータフレーム処理部110は、ステップS806の検索でヒットしたFID管理テーブル105のエントリのLDとOLSの値を取り出し、例えば図7のDRAM204などの記憶領域に記憶する。
 続いてステップS809でデータフレーム処理部110は、受信したデータフレームのGDの値に対応する重み付けテーブル(以下、図26~図28の説明においては「104-i」という参照符号で参照する)を次のように更新する。すなわち、データフレーム処理部110は、重み付けテーブル104-iにおいて、ステップS808で取り出したLDに対応する重みを、最大値に変更する。なお、本実施形態では重みの最大値は1である。重みの変更後、処理はステップS817に移行する。
 なお、ステップS807、S808、S809と処理が進む場合、ステップS808で取り出したLDに対応するエントリが、受信したデータフレームのGDの値に対応する重み付けテーブル104-iに存在することが、ステップS809では保証されている。その理由は以下のとおりである。
 図15と図16に関して説明したように、FID管理テーブル105のエントリにおいて最終更新時刻は、データフレームの送信時に設定される。また、図24に関して説明したように、FID管理テーブル105のエージング時間Gfは、例えば、最悪ケースで予測される時間以上に設定される。よって、ノード装置100が過去に送信したデータフレームがネットワーク内を巡ってノード装置100で受信されるとき、当該データフレームに対応するエントリは、まだFID管理テーブル105に残っていることが保証される。
 そして、図14に関して説明したように、データフレームが送信されてACKフレームが返信されると、重みが更新され、重み付けテーブル104-1~101-M内の各エントリにおいては、重みが更新されるときに最終更新時刻も設定される。
 したがって、時系列を追うと下記(E1)~(E5)の順となる。
  (E1)GDの値がNGDで、GSの値がNGSで、LDの値がNLDで、FIDの値がFのデータフレームがノード装置100から送信される。このとき、FID管理テーブル105において最終更新時刻が設定される。例えば、図9のノード装置Nにおいて、ステップS103で図15のエントリEに最終更新時刻T103が設定される。
  (E2)上記データフレームに対するACKフレームが受信されると、ノード装置NGDに対応する重み付けテーブル104-iにおいて、LDフィールドの値がNLDであるエントリの重みが更新される。このとき、当該エントリの最終更新時刻が設定される。例えば、ノード装置Nにおいて、図14に示すようにステップS103aで重み付けテーブル104-1-Nの、LDフィールドの値がNであるエントリの最終更新時刻がTに設定される。
  (E3)GSの値がNGSで、FIDの値がFの同じデータフレームが、ノード装置100で受信される。例えば、図9のステップS106でノード装置Nがデータフレームを受信する。なお、データフレームのGDの値は中継に際して書きかえられることはないので、(E3)で受信されるデータフレームのGDの値は、上記(E1)より当然、NGDである。
  (E4)上記(E1)の時点から、FID管理テーブル105のエージング時間Gが経過する。
  (E5)上記(E2)の時点から、重み付けテーブル104のエージング時間Gが経過する。
 以上のとおり、(E3)の時点は(E5)の時点より前である。よって、(E3)の時点では、ノード装置NGDに対応する重み付けテーブル104-iにおいて、LDフィールドの値がNLDであるエントリの存在が保証される。
 例えば、上記の例では、重み付けテーブル104-1-Nの、LDフィールドの値がNであるエントリの存在が、図9のステップS106の時点保証されている。なお、ここでの「ステップS106の時点」とは、より詳しくは、ステップS106での受信を契機とするデータフレーム受信処理に含まれるステップS809の処理を、ノード装置Nが実行する時点のことである。
 したがって、図26のステップS806の検索でFID管理テーブル105にエントリが見つかった場合、ステップS809では必ず、ステップS808で取り出したLDに対応するエントリが、重み付けテーブル104-iに存在する。よって、ステップS809でデータフレーム処理部110は、存在が保証されているエントリにおいて、重みの値を最大値に設定している。
 逆に、ステップS806の検索でエントリが見つからなかった場合、ステップS810でデータフレーム処理部110は、受信したデータフレームのLSの値を、例えば図7のDRAM204などの記憶領域に、OLSとして記憶する。
 そして、ステップS811でデータフレーム処理部110は、受信したデータフレームのGDの値を検索キーとして用いて、重み付けテーブル104を検索する。
 続いて、ステップS812でデータフレーム処理部110は、ステップS811の検索の結果、テーブルがヒットしたか否かを判断する。
 受信したデータフレームのGDの値に対応する重み付けテーブルが重み付けテーブル104の中に存在すれば、処理はステップS812aに移行する。なお、ステップS809で導入した「104-i」という参照符号は、受信したデータフレームのGDの値に対応する重み付けテーブルを指すので、ステップS811の検索の結果ヒットしたテーブルも、「重み付けテーブル104-i」である。
 他方、受信したデータフレームのGDの値に対応する重み付けテーブルが重み付けテーブル104の中に存在しなければ、処理はステップS813に移行する。
 ステップS812aでデータフレーム処理部110は、ステップS811の検索でヒットした重み付けテーブル104-iを調整する。ステップS812aの重み付けテーブル調整処理は、詳しくは図31とともに後述するが、エージング処理の副作用を中和する処理である。
 ステップS812aの結果、隣接ノード管理テーブル103で管理されているすべての隣接ノード装置に対応するエントリが重み付けテーブル104-iに存在することが保証される。そして、処理はステップS817に移行する。
 ステップS813でデータフレーム処理部110は、受信したデータフレームのGDの値に対応する新規重み付けテーブルを追加する。なお、ステップS813で追加されるテーブルも、「重み付けテーブル104-i」である。
 そして、ステップS814でデータフレーム処理部110は、新規重み付けテーブル104-iにおいて、受信したデータフレームのGDの値を、重み付けテーブル104-iのGDとして設定する。
 さらに、ステップS815でデータフレーム処理部110は、隣接ノード管理テーブル103のエントリ数と同数の新規エントリを、新規重み付けテーブル104-iに作成する。
 そして、ステップS816でデータフレーム処理部110は、ステップS815で作成した各エントリに、それぞれ、隣接ノード管理テーブル103の各エントリのノードIDと、初期重み付け値と、現在時刻を設定する。
 なお、以上のステップS811~S816の具体例を挙げれば、以下のとおりである。
 例えば、図9のステップS102でノード装置Nから図10のデータフレーム303を受信したとき、ノード装置Nの重み付けテーブル104-Nには、図14の重み付けテーブル104-1-Nが存在しなかったとする。すると、ノード装置Nが受信したデータフレーム303のGDの値であるNを検索キーにしてノード装置Nのデータフレーム処理部110-NがステップS811で重み付けテーブル104-Nを検索しても、テーブルはヒットしない。
 そこで、データフレーム処理部110-Nは、ステップS813で新たに重み付けテーブル104-1-Nを作成し、ステップS814で重み付けテーブル104-1-NのGDにNを設定する。そして、データフレーム処理部110-Nは、ステップS815で、図12の隣接ノード管理テーブル103-Nと同数の(すなわち3つの)新規エントリを重み付けテーブル104-1-Nに作成する。
 ここで、隣接ノード管理テーブル103-Nの各エントリのノードIDは、図13のとおり、NとNとNである。よって、ステップS816でデータフレーム処理部110-Nは、ステップS815で作成した3つのエントリそれぞれに、LDとしてNとNとNを設定する。また、データフレーム処理部110-Nは、これら3つのエントリの重みフィールドに、いずれも0.5という初期重み付け値を設定し、これら3つのエントリの最終更新時刻フィールドに、いずれも現在時刻を設定する。
 以上のステップS813~S816の結果として、図14の1段目のような重み付けテーブル104-1-Nが重み付けテーブル104-Nの中に追加される。
 ここで、具体例の説明から図26の処理一般の説明に戻る。ステップS817が実行されるのは、ステップS809の実行後、ステップS816の実行後、またはステップS811の検索においてテーブルがヒットしたとステップS812で判断された後である。よって、ステップS817の実行時には、受信したデータフレームのGDの値に対応する重み付けテーブル104-iの存在が保証されている。
 そこで、ステップS817においてデータフレーム処理部110は、受信したデータフレームのGDの値に対応する重み付けテーブル104-iにおいて、OLSとは異なるLDのうちで最小の重みと対応付けられているLDの値を取得する。
 つまり、データフレーム処理部110は、重み付けテーブル104-iにおいて、ステップS808またはS810で記憶したOLSの値とは異なる値をLDとして有するエントリの中から、重みの値が最小のものを選択する。そして、データフレーム処理部110は、選択したエントリのLDと重みの値を、例えば図7のDRAM204などの記憶領域に記憶する。
 続いて、図27のステップS818でデータフレーム処理部110は、下記の2つの条件(F1)と(F2)のいずれかが成立するか否かを判断する。
  (F1)ステップS817(または後述のS829)で取得したLDの値に対応する重みが、重みの最大値(本実施形態では1.0)である。
  (F2)ステップS808またはS810で記憶したOLSの値とは異なるLDへのデータフレームの転送がすべて失敗した(ただし、重み付けテーブル104-iにおけるLDが、もともとOLSしか存在しなかった場合も含む)。
 条件(F1)または(F2)が成立する場合、もはやLDとして選択可能な隣接ノード装置は残っていないので、処理は図28のステップS830に移行する。
 他方、条件(F1)と(F2)のいずれも成立しない場合、まだLDとして選択可能な隣接ノード装置が残っている。換言すれば、(G1)~(G4)のいずれにも該当しない隣接ノード装置が、少なくとも1つは存在する。そして、LDとして選択可能な隣接ノード装置のノードIDが、ステップS817(または後述のS829)で取得されている。
  (G1)当該隣接ノード装置から先の経路が袋小路またはループになっている、と判断されたため、当該隣接ノード装置は最大値の重みと対応付けられている。
  (G2)過去に当該隣接ノード装置への同一GD宛てのデータフレームの送信に失敗した結果が累積したため、当該隣接ノード装置は最大値の重みと対応付けられている。
  (G3)今回のデータフレーム受信処理において当該隣接ノード装置へのデータフレームの送信を試した結果として、「送信失敗」と判明した。すなわち、データフレームを送信した隣接ノード装置から、所定時間が経っても、ACKフレームを受信することができなかった。
  (G4)当該隣接ノード装置はOLSである。
 そこで、ステップS818で条件(F1)と(F2)のいずれも成立しないと判断されると、処理はステップS819に移行する。ステップS819以降の処理は、取得済みのLDの値で識別される隣接ノード装置へのデータフレームの転送を試みる処理である。
 ステップS819でデータフレーム処理部110は、以下のようにして新たなデータフレームを作成して送信部102に出力し、作成されたデータフレームを送信部102が送信する。
 具体的には、データフレーム処理部110は、ステップS817(または後述のS829)で取得したLDの値を新たなデータフレームのLDに指定し、自ノードIDを新たなデータフレームのLSに指定する。また、データフレーム処理部110は、受信したデータフレームからGD、GS、FID、タイプ、長さの各フィールドの値と、ペイロードを、新たなデータフレームにコピーする。なお、「受信したデータフレーム」とは、上記のとおり、ステップS801で見つかったバッファ部109内のエントリに格納されているデータフレームである。
 ステップS819での送信後、処理はステップS820に移行し、データフレーム処理部110がバッファ部109のタイムアウト時刻を更新する。すなわち、データフレーム処理部110は、バッファ部109において、受信したデータフレームを格納しているエントリのタイムアウト時刻に、式(5)の時刻Ttimeoutを設定する。
   Ttimeout=Tnow+Twait     (5)
 なお、式(5)において時刻Tnowは現在時刻であり、時間TwaitはACKフレーム待ち時間である。
 そして、ステップS821でデータフレーム処理部110は、ステップS806のFID管理テーブル105の検索においてエントリがヒットしているか、または、後述するステップS823、および、ステップS824で、FID管理テーブル105に新規エントリを追加して値を設定しているか否かを確認する。つまり、受信したデータフレームのGSとFIDの値に等しい値を、GSおよびFIDとして有するエントリが、FID管理テーブル105に存在するか否かを、データフレーム処理部110は確認する。
 ステップS806の検索でエントリがヒットしているか、ステップS823およびステップS824でFID管理テーブル105に新規エントリを追加して値を設定していれば、今回のデータフレーム受信処理は、過去にノード装置100自身が送信したのと同じデータフレームの受信を契機とする処理である。よって、データフレーム処理部110は続いてステップS822を実行する。他方、ステップS806の検索でエントリがヒットしておらず、かつ、ステップS823およびステップS824でFID管理テーブル105に新規エントリを追加して値を設定していなければ、ノード装置100は、初めて受信するデータフレームの初めての転送を試みているところである。よって、処理はステップS823に移行する。
 ステップS822でデータフレーム処理部110は、ステップS806の検索でヒットしたエントリを更新する。具体的には、データフレーム処理部110は、ステップS806の検索でヒットしたエントリにおいて、LDフィールドには、ステップS819で送信したデータフレームのLDの値を設定し、最終更新時刻フィールドには、現在時刻を設定する。そして、処理はステップS825に移行する。
 また、ステップS823でデータフレーム処理部110は、FID管理テーブル105に新規エントリを追加する。
 そして、次のステップS824でデータフレーム処理部110は、新規エントリに値を設定する。具体的には、データフレーム処理部110は、新規エントリにおいて、FIDとGSとLDの各フィールドには、それぞれステップS819で送信したデータフレームの値をコピーする。また、データフレーム処理部110は、新規エントリにおいて、最終更新時刻フィールドには現在時刻を設定し、OLSフィールドには、ステップS810で記憶したOLSの値をコピーする。そして、処理はステップS825に移行する。
 ステップS825でデータフレーム処理部110は、ステップS819における送信の成否の通知を待つ。
 例えば、データフレーム処理部110が、所定のプログラムのスレッドを実行する図7のMPU201により実現される場合、ステップS825ではスレッドがスリープしてもよい。その場合、「送信成功」または「送信失敗」の通知は、スレッドを起こす処理である。
 ステップS819における送信が成功した場合は、ステップS819で送信したデータフレームにおいてLDとして指定されている隣接ノード装置からACKフレームが返信される。そして、ACK処理部107が後述の図32の処理を行い、データフレーム処理部110に「送信成功」を通知する。
 また、ステップS819における送信の失敗とは、ステップS819で送信したデータフレームにおいてLDとして指定されている隣接ノード装置からのACKフレームが、式(5)の時刻Ttimeoutになってもノード装置100で受信されないことである。ACKフレームの受信は、ACK処理部107による後述の図33の処理により監視されており、ACKフレームがタイムアウト時刻Ttimeoutになっても受信されないと、ACK処理部107がデータフレーム処理部110に「送信失敗」を通知する。
 データフレーム処理部110が、ステップS825での待機の後、ACK処理部107から「送信成功」または「送信失敗」の通知を受けると、処理はステップS826に移行する。
 ステップS826でデータフレーム処理部110は、ACK処理部107から受けた通知に基づいて、ステップS819の送信が成功したか否かを判断する。送信が成功した場合、処理はステップS827に移行し、送信が失敗した場合、処理はステップS828に移行する。
 送信が成功した場合、ステップS827でデータフレーム処理部110は、重み付けテーブル104において、ステップS819で送信したデータフレームのGDとLDの組に対応する重みを小さくする。ここで、データフレームのGDは転送によって書き換えられないことに注意して換言すれば、ステップS827でデータフレーム処理部110は、受信したデータフレームのGDに対応する重み付けテーブル104-iにおいて、重みの更新を行う。
 つまり、データフレーム処理部110は、ステップS817(または後述のステップS829)で取得したLDの値をLDとして有するエントリを重み付けテーブル104-iで探し、見つかったエントリの重みの値を小さくする。重みの値を小さくすることは、対応するLDの優先度を上げることである。
 ここで、見つかったエントリの現在の重みの値をWcurrentとすると、ステップS827でデータフレーム処理部110は、見つかったエントリの重みの値を例えば式(6)のWrevisedに更新してもよい。
   Wrevised=max(Wmin,Wcurrent-ΔWsuccess
 
                     (6)
 なお、式(6)において、Wminは重みの最小値であり、本実施形態ではWmin=0である。また、ΔWsuccessは、送信が成功したときに重みを減らす所定の量であり、実施形態に応じて適宜値を決めることができる。例えば、ΔWsuccess=0.1でもよい。
 さらに、データフレーム処理部110はステップS827で、ステップS817(または後述のステップS829)で取得したLDの値をLDとして有する重み付けテーブル104-iのエントリにおいて、最終更新時刻に現在時刻を設定する。そして、データフレーム受信処理は終了する。
 他方、送信が失敗した場合、ステップS828でデータフレーム処理部110は、重み付けテーブル104において、ステップS819で送信したデータフレームのGDとLDの組に対応する重みを大きくする。つまり、ステップS828でデータフレーム処理部110は、ステップS817(または後述のステップS829)で取得したLDの値をLDとして有するエントリを重み付けテーブル104-iで探し、見つかったエントリの重みの値を大きくする。重みの値を大きくすることは、対応するLDの優先度を下げることである。
 例えば、ステップS828でデータフレーム処理部110は、見つかったエントリの重みの値を式(7)のWrevisedに更新してもよい。
   Wrevised=min(Wmax,Wcurrent+ΔWfailure
                      (7)
 なお、式(7)において、Wmaxは重みの最大値であり、本実施形態ではWmax=1である。また、ΔWfailureは、送信が失敗したときに重みを増やす所定の量であり、実施形態に応じて適宜値を決めることができる。例えば、ΔWfailure=0.1でもよい。もちろん、ΔWfailure≠ΔWsuccessでもよい。
 なお、データフレーム処理部110はステップS828で、ステップS817(または後述のステップS829)で取得したLDの値を、例えば図7のDRAM204などのワークエリアに「転送に失敗したLD」として記憶する。例えば、データフレーム処理部110は、DRAM204上の線形リストをステップS817で空に初期化し、ステップS828の実行のたびに、ステップS817(または後述のステップS829)で取得したLDの値を保持する要素を線形リストに追加してもよい。もちろん、「転送に失敗したLD」の記憶のために配列など他のデータ構造が使われてもよい。
 さらに、データフレーム処理部110はステップS828で、ステップS817(または後述のステップS829)で取得したLDの値をLDとして有する重み付けテーブル104-iのエントリにおいて、最終更新時刻に現在時刻を設定する。そして処理はステップS829に移行する。
 ステップS829でデータフレーム処理部110は、今までにLDとして試していない他の選択可能な隣接ノード装置を探す。具体的には、データフレーム処理部110は、受信したデータフレームのGDの値に対応する重み付けテーブル104-iにおいて、転送に失敗したLD以外で、かつOLSとは異なるLDのうちで、最小の重みと対応付けられているLDの値を取得する。なお、転送に失敗したLDは、ステップS828において例えば図7のDRAM204などのワークエリアに、例えば線形リストなどの形で、記憶されている。
 つまり、データフレーム処理部110は、重み付けテーブル104-iにおいて、(H1)かつ(H2)である値をLDとして有するエントリの中から、重みの値が最小のものを選択する。そして、データフレーム処理部110は、選択したエントリのLDと重みの値を、例えば図7のDRAM204などの記憶領域に記憶する。
  (H1)過去にステップS817またはS829で取得したLDの値とは異なる値
  (H2)ステップS808またはS810で記憶したOLSの値とは異なる値
 したがって、例えば、ステップS828で0.2に更新された重みと対応付けられた隣接ノード装置は、ステップS829でLDとして選択されず、ステップS829では0.2より大きな、0.8などの重みの隣接ノード装置が選択されることもありうる。
 以上のステップS817~S829の具体例を挙げれば、以下のとおりである。例えば、図9のノード装置Nには、ノード装置N、N、およびNが隣接している。そして、図15のとおり、ノード装置NのFID管理テーブル105-NのエントリE4のOLSの値は、Nである。
 図9の例では、ノード装置Nのデータフレーム処理部110-Nが、最初にステップS817でLDの値Nを取得するので、ステップS104のようにノード装置Nへのデータフレームの送信が行われる。しかし、図9に示すとおりステップS104の送信は失敗するので、データフレーム処理部110-NはステップS826で「送信失敗」と判断する。
 すると、データフレーム処理部110-NがステップS829を実行する時点で、転送に失敗したLD(すなわちN)以外で、かつOLS(すなわちN)とは異なるLDの値は、Nのみである。よって、ステップS829ではLDの値Nが取得される。
 こうしてステップS829でLDの値が取得されると、処理はステップS829からステップS818へ戻る。
 よって、上記のノード装置Nの例では、ステップS829の後、再度ステップS818~S826が実行される。そして、図9にステップS105として示すように、今度はステップS826で「送信成功」と判断され、ステップS827が実行されて、データフレーム受信処理が終了する。
 なお、ステップS828で、例えば式(7)のように重みを更新することの影響について具体例を挙げて説明すれば、以下のとおりである。
 例えば、図5のネットワーク2において、ノード装置N106が隣接ノード装置N108から、ノード装置N118をGDとして指定する第1のデータフレームを時刻Trcv1に受信したとする。そして、時刻Trcv1にノード装置N106には、ノード装置N118に対応する重み付けテーブル104-g106-N106が存在したとする。また、時刻Trcv1の重み付けテーブル104-g106-N106においては、ノード装置N102には重み0.4が、ノード装置N103には重み0.7が、ノード装置N107には重み0.1が、ノード装置N108には重み0.5が、それぞれ対応付けられていたとする。
 すると、ステップS817では、最小の重み0.1と対応付けられているノード装置N107がLDとして選択される。ところが、ステップS819でデータフレームが送信されるとき、偶然、ノード装置N106とN107の間に遮蔽物が置かれるなどの理由で、一時的に、ノード装置N106とN107の無線リンクが通信不能になったとする。
 すると、ACKフレームが返信されないので、ステップS828では、ノード装置N107の重みが0.1から0.2に更新される。そして、ステップS829では、重み0.4と対応付けられているノード装置N102がLDとして選択される。ここで、ステップS819におけるデータフレームの送信が成功し、ノード装置N102からACKフレームが返信されたとする。すると、ステップS827でノード装置N102の重みが0.4から0.3に更新され、データフレーム受信処理が終了する。
 ここで、ノード装置N106からノード装置N102へ送信された第1のデータフレームは、ノード装置N106にバックトラックすることなく、ノード装置N118に到達したとする。つまり、重み付けテーブル104-g106-N106においては、第1のデータフレームの転送にともなって重みが1に更新されるエントリはなかったとする。
 すると、ノード装置N106が、その後の時刻Trcv2に、同じくノード装置N118をGDとして指定する第2のデータフレームを今度はノード装置N103から受信したとき、重み付けテーブル104-g106-N106の内容は次のとおりである。すなわち、ノード装置N102には重み0.3が、ノード装置N103には重み0.7が、ノード装置N107には重み0.2が、ノード装置N108には重み0.5が、それぞれ対応付けられている。
 よって、ステップS817では、第1のデータフレームの転送に失敗したとはいえ、なお最小の重みと対応付けられているノード装置N107が、LDとして選択される。そして、もし時刻Trcv2にノード装置N106とN107の間の無線リンクの通信品質が好転しており、ステップS819での第2のデータフレームの送信が成功すれば、ステップS827でノード装置N107の重みは再度0.1に戻る。
 ここで、第2のデータフレームのノード装置N107への転送の結果、バックトラックが生じないものとすると、ノード装置N107の重みは0.1のままである。よって、さらにその後の時刻Trcv3に、同じくノード装置N118をGDとして指定する第3のデータフレームを、ノード装置N107以外の隣接ノード装置からノード装置N106が受信すれば、LDとして最も優先的に選択されるのは、やはりノード装置N107である。
 このように、ステップS829で重みを急激に最大値に設定するのではなく少しだけ大きくすると、重み付けテーブル104が通信環境の変化に過剰に反応することはない。よって、同じノード装置をGDとして指定する複数のデータフレームを次々とノード装置N106が受信しているうちに、一時的に障害の生じていたリンクが障害から回復すれば、環境の好転に追従して、過去の学習結果が再びLDの選択に活かされるようになる。つまり、上記の例では、LDとして適切だと過去に学習済みのノード装置N107が、再びLDとして優先的に選択されるようになる。
 あるいは、時刻Trcv2においてノード装置N106とN107の間の無線リンクが障害から復旧していない場合もありうる。その場合、第2のデータフレームの送信時のLDとして、一旦は重み0.2のノード装置N107が選択されるが、ACKフレームが受信されないために、ノード装置N107の重みは0.3に更新される。そして、最終的には重み0.3と対応付けられたノード装置N102がLDとして選択され、送信が成功して重みが0,2に更新されることもありうる。
 すると、時刻Trcv3に、例えばノード装置N103から、ノード装置N106が第3のデータフレームを受信すると、重み0.2に対応付けられたノード装置N102がLDとして選択され、また送信が成功し、ノード装置N102の重みが0.1になるかもしれない。そして、その後しばらくは、ノード装置N118をGDとして指定するデータフレームのLDとして、ノード装置N106はノード装置N102を選択し続けるかもしれない。
 しかし、さらにその後、ノード装置N106とN102の間の無線リンクに障害が生じたとすると、ノード装置N102からはACKフレームが返信されてこない。するとステップS829でLDの再選択が行われる。
 その場合、時刻Trcv1以前にLDとして好適であると学習されていたノード装置N107が、重み0.5や0.7と対応付けられており相対的にLDとしてあまり適切ではないノード装置N108やN103よりも、優先的にLDとして選ばれる。その理由は、第1と第2のデータフレームの送信時の重みの学習は、ステップS828に示すように重みをなだらかに変化させるものであり、ノード装置N107の重みは、なおノード装置N108やN103の重みよりも小さいからである。
 そして、この時点でノード装置N106とN107の間の無線リンクが障害から復旧していれば、再度、ノード装置N107の重み0.2に減らされる。このように、多少復旧に時間がかかっても、一時的な環境の変化が過剰に重み付けテーブル104に反映されないため、過去の学習の成果が緩やかに反映される。したがって、適切なLDが選択される蓋然性も高まる。
 以上のとおり、一時的な障害の影響を過剰に受けないようにするため、ステップS828では、少しだけ重みが調整されるのである。
 さてここで、ステップS818の分岐の説明に戻る。ステップS818で2つの条件(F1)と(F2)のいずれかが成立すると判断されると、もはやLDとして選択可能な隣接ノード装置は残っていないので、処理は図28のステップS830に移行する。
 ステップS830でデータフレーム処理部110は、以下のようにして新たなデータフレームを作成して送信部102に出力し、作成されたデータフレームを送信部102が送信する。
 具体的には、データフレーム処理部110は、ステップS808またはS810で記憶したOLSの値を新たなデータフレームのLDに指定し、自ノードIDを新たなデータフレームのLSに指定する。また、データフレーム処理部110は、受信したデータフレームからGD、GS、FID、タイプ、長さの各フィールドの値と、ペイロードを、新たなデータフレームにコピーする。なお、「受信したデータフレーム」とは、上記のとおり、ステップS801で見つかったバッファ部109内のエントリに格納されているデータフレームである。ステップS830で行われる送信処理が、すなわち、バックトラック動作である。
 なお、ステップS830の送信の具体例は、図9のステップS110である。
 ステップS830での送信後、処理はステップS831に移行する。ステップS831でデータフレーム処理部110は、受信したデータフレームのFIDとGSの値を検索キーとして用いてFID管理テーブル105を検索する。
 そして、ステップS832でデータフレーム処理部110は、ステップS831の検索の結果、エントリがヒットしたか否かを判断する。エントリがヒットしていれば処理はステップS833に移行し、エントリがヒットしていなければ処理はステップS834に移行する。
 なお、ステップS807で「エントリがヒットした」と判断されている場合に、ステップS831の検索の結果見つかるエントリは、ステップS806の検索の結果見つかったエントリである。また、ステップS807で「エントリがヒットしなかった」と判定され、かつステップS823において新規エントリが作成された場合は、ステップS831の検索の結果、ステップS823で作成された新規エントリが見つかる。
 ステップS832で「エントリがヒットしなかった」と判断されるのは、(I1)かつ(I2)の場合であり、換言すれば、(J1)かつ(J2)の場合である。
  (I1)ステップS807で「エントリがヒットしなかった」と判断された。
  (I2)1回目にステップS818が実行された直後に、ステップS830に処理が移行した。
  (J1)ノード装置100が今までに受信したことのないデータフレームが受信された。
  (J2)受信したデータフレームのGSの値に対応する重み付けテーブル104-iでは、すべてのLDに最大値の重みが対応付けられている。
 ステップS833でデータフレーム処理部110は、ステップS831の検索の結果ヒットしたエントリを更新する。具体的には、データフレーム処理部110は、ヒットしたエントリにおいて、LDには、ヒットしたエントリ自身のOLSの値をコピーし、最終更新時刻には、現在時刻を設定する。そして処理はステップS836に移行する。
 他方、ステップS834では、データフレーム処理部110はFID管理テーブル105に新規エントリを追加する。
 そして、次のステップS835でデータフレーム処理部110は、ステップS834で追加した新規エントリに値を設定する。具体的には、データフレーム処理部110は、新規エントリにおいて、FIDとGSには、受信したデータフレームの値をそれぞれコピーし、最終更新時刻には、現在時刻を設定し、OLSとLDには、受信したデータフレームのLSの値をコピーする。そして処理はステップS836に移行する。
 ステップS836でデータフレーム処理部110は、ステップS830で送信したデータフレームに関する送信成否の通知を待つ。そして、「送信成功」または「送信失敗」の通知をデータフレーム処理部110がACK処理部107から受けると、処理はステップS837に移行する。ステップS836はステップS825と類似しているので、詳しい説明は省略する。
 そして、ステップS837でデータフレーム処理部110は、ステップS830におけるデータフレームの送信が成功したか否かを判断する。送信が失敗した場合、処理はステップS838に移行し、送信が成功した場合、処理はステップS839に移行する。
 ステップS838が実行されるのは、(K1)かつ(K2)という、例外的な場合である。
  (K1)OLS以外のすべての隣接ノード装置が、(K1-1)または(K1-2)である。
    (K1-1)最大値の重みと対応付けられている。
    (K1-2)LDとして指定してデータフレームを送信すると、送信に失敗する。
  (K2)OLSへのデータフレームの送信(つまりバックトラック動作)は失敗した。
 この場合、データフレーム処理部110はステップS838で、受信したデータフレームを破棄する。すなわち、データフレーム処理部110は、ステップS801で見つけたエントリをバッファ部109から削除する。そして、データフレーム受信処理は終了する。
 なお、ステップS838の影響について、具体例とともに説明すれば以下のとおりである。
 例えば、図9のステップS110は、ノード装置NがステップS830で行う送信である。図9の例では、ステップS110でのノード装置Nからノード装置Nへのデータフレームの送信に対して、ノード装置NがACKフレームをノード装置Nに返信する。
 ここで、逆に、ステップS110の時点でノード装置NとNの間のリンクに障害が発生し、ステップS110(すなわちステップS830)でノード装置Nが送信したデータフレームが、ノード装置Nには届かなかったと仮定する。すると、当然ノード装置Nがノード装置NからACKフレームを受信することもないので、ノード装置Nは、ステップS837で「送信失敗」と判断し、ステップS838を実行する。つまり、ステップS101でノード装置Nが送信したデータフレームは、GDであるノード装置Nに到達する前に、ネットワーク1内で消滅してしまう。
 しかも、ノード装置Nにとっては、「ステップS102で送信が成功した後、どの隣接ノード装置からも同じデータフレームは受信されていない」という状態である。したがって、ノード装置Nには、「GDとしてノード装置Nが指定されているとき、ノード装置NがLDとしてノード装置Nを選択することは不適切である」とは認識されない。つまり、図9の例のように、ノード装置Nが「GDとしてノード装置Nが指定されているとき、ノード装置NはLDとしてノード装置Nを選択するのが適切である」と学習することはできない。
 その結果、GDとしてノード装置Nが指定されている新たな別のデータフレームをノード装置Nが受信した場合(またはそのようなデータフレームをノード装置NがGSとなって送信する場合)、ノード装置Nは、LDとしてノード装置Nを選択する。
 仮に、その時点でもまだノード装置NとNの間のリンクが障害から復旧していなければ(例えば、悪い電波状況が続いていれば)、ノード装置Nから送信されたデータフレームがノード装置Nには届かない。したがって、ノード装置NはACKフレームを受信することができず、図27のステップS826で「送信失敗」と判断する。
 その結果、ノード装置NはステップS828で、GDであるノード装置Nに対応する重み付けテーブル104-h-N(この参照符号は図9の説明と同様)においてノード装置Nに対応する重みを大きくする。そして、ノード装置Nは、続くステップS829で、LDとしてノード装置Nを再選択する。
 このように、データフレームがネットワーク1内のノード装置NにおいてステップS838で破棄されると、破棄されたデータフレームに関するOLSである他のノード装置Nにおける重み付けテーブル104-h-Nの学習が、遅れることがある。
 しかしながら、上記の例示から明らかなとおり、ノード装置Nにおける学習は単に少し遅れるだけである。ノード装置Nは、先のデータフレームと同じくノード装置NをGDとする次のデータフレームを受信した後、その受信を契機とする一連の処理により、適切な重みを学習することができる。つまり、複数のデータフレームが次々に流通するネットワーク1全体の動作として見れば、OLSへのバックトラックのためのデータフレームの送信失敗により局所的に重みの学習が遅れるノード装置があっても、学習の遅れはすぐに挽回することができる。
 ここで、図28のフローチャートの説明に戻る。ステップS839は、OLSへのデータフレームの送信に成功した場合に実行される。
 ステップS839でデータフレーム処理部110は、重み付けテーブル104において、ステップS830で送信したデータフレームのGDとLDの組に対応する重みを小さくする。換言すれば、データフレーム処理部110は、受信したデータフレームのGDに対応する重み付けテーブル104-iにおいて、送信したデータフレームのLD(つまりステップS808またはS810で記憶したOLS)に対応する重みを更新する。
 ステップS839の詳細はステップS827と同様なので詳しい説明は省略するが、データフレーム処理部110は、例えば式(6)を使って重みを更新してもよい。データフレーム処理部110はさらに、重み付けテーブル104-iの、重みを更新したエントリにおいて、最終更新時刻に現在時刻を設定する。そして、データフレーム受信処理は終了する。
 次に、受信されたデータフレームが到達保証データフレームまたは到達保証ACKフレームである場合の処理について、以下に説明する。この場合には、図25のステップS803cの判定がYesとなって図29AのステップS1301が実行される。これ以降の到達保証関連の処理は、図6の到達保証ACK処理部114によって実行される。
 まず、到達保証ACK処理部114は、受信されているデータフレームのデータヘッダ332および到達保証ヘッダ333(図10参照)から、GS、到達保証ID、およびポート番号を抽出する。到達保証ACK処理部114は、GS、到達保証ID、およびポート番号の組をキーとして、到達保証転送記録テーブル115を検索する。
 ステップS1302で到達保証ACK処理部114は、この検索でいずれかのエントリがヒットしたか否かを判定する。
 エントリがヒットすると、到達保証ACK処理部114は、ステップS1303に移行する。ステップS1303で到達保証ACK処理部114は、ヒットしたエントリの中でイベント時刻が最新のエントリに注目する。例えば、図2Bの例において、到達保証ACK処理部114がノードBにあるとすれば、イベント時刻T15にGS=ノードA、到達保証ID=1、ポート番号=15で到達保証転送記録テーブル115Bを検索した場合、最新のイベント時刻=T12のエントリが注目される。なお、時刻T15のエントリはまだ存在しない。
 次に、ステップS1304で到達保証ACK処理部114は、注目したエントリの到達保証転送情報の内容を判定する。例えば、図2Bの例において、到達保証転送記録テーブル115Bの最新のイベント時刻=T12のエントリの到達保証転送情報の内容は、「あり」である。このように、到達保証転送情報の内容が「あり」または「送信元」である場合、言い換えれば、そのノードで既に到達保証データフレームが受信されている状態で、新たな到達保証フレームが受信された場合には、ステップS1305に移行する。
 一方、到達保証転送情報の内容が「なし」である場合、言い換えれば、そのノードで既に到達保証ACKフレームが受信されている状態で、新たな到達保証フレームが受信された場合には、図29CのステップS1316に移行する。
 ステップS1305で到達保証ACK処理部114は、受信したデータフレームの到達保証フラグと到達保証ACKフレームを読み取る。
 続くステップS1306で到達保証ACK処理部114は、到達保証フラグの値が1であるか0であるか、すなわち受信フレームが到達保証データフレームであるか到達保証ACKフレームであるかを判定する。
 到達保証フラグの値が1、すなわち受信フレームが到達保証データフレームである場合には、ステップS1307で到達保証ACK処理部114は、受信した到達保証データフレームのGDの値が自ノードIDであるか否かを判定する。
 ステップS1307の判定がYesの場合には、ステップS1309に移行する。この移行状態は、受信フレームに関連するGS、到達保証ID、およびポート番号の組合せについて、下記の条件が成立している状態である。
 <状態1>
  ・GDとして到達保証データフレームを既に受信している。
  ・自ノード宛ての同じ到達保証データフレームが新たに受信された。
 この状態1において、まずステップS1309で到達保証ACK処理部114は、到達保証転送記録テーブル115への登録を、次のようにして実行する。すなわち、到達保証ACK処理部114は、
  ・到達保証転送記録情報=なし
  ・到達保証ACK受信情報=ACK送信元
とした上で、受信したデータフレームのGS、到達保証ID、ポート番号、スタートフラグ、終了フラグ、LS、イベント時刻=現在時刻を、到達保証転送記録テーブル115上に追加したエントリに登録する。
 次に状態1において、ステップS1310で到達保証ACK処理部114は、到達保証ACKフレームの送信処理を実行する。この場合、到達保証ACK処理部114は、送信される到達保証ACKフレームにおいて、
  ・GD:受信した到達保証データフレームのGS
  ・LD:ステップS1303で注目したエントリのLS
を設定する。なお、状態1は、自ノードIDがGSとして指定された到達保証ACKフレームが送信済みであることを含意するので、ステップS1310の処理は、何らかの不測のエラーが生じた場合の例外処理である。
 また、例外処理としてのステップS1310において到達保証ACK処理部114が上記のように到達保証ACKフレームのLDフィールドを設定する理由は、一時的な経路の揺らぎの影響を受けないようにするためである。すなわち、到達保証ACK処理部114は、正常な処理が行われたときの経路への到達保証ACKフレームの送信を企図して、今回の例外処理の契機となった受信におけるLSのノードではなく、以前行われた処理で作成されたエントリ(ステップS1303で注目したエントリ)のLSのノードを、到達保証ACKフレームのLDフィールドに指定する。
 なお、後述のS1336、S1351、S1355の処理は、このステップS1310のような例外処理ではなく、自ノードIDがGDとして指定された到達保証データフレームを初めて受信したときの正常な処理である。そのため、後述のS1336、S1351、S1355では、送信される到達保証ACKフレームのLDフィールドには、到達保証転送記録テーブル115の既存のエントリのLSフィールドの値ではなく、受信した到達保証データフレームのLSフィールドの値が設定される。
 また、到達保証ACK処理部114は、送信される到達保証ACKフレームにおいて、
  ・GS:受信した到達保証データフレームのGD
  ・LS:自ノードID
を設定する。更に、送信される到達保証ACKフレームに、到達保証IDとポート番号、スタートフラグと終了フラグを付加し、その到達保証ACKフレームを送信する。
 最後に状態1において、ステップS1311で到達保証ACK処理部114は、受信した到達保証データフレームを廃棄して、データフレームの受信処理を終了する。
 以上の状態1は、既にGDである自ノードにおいて到達保証データフレームが受信されている状態において、自ノード宛ての同じ到達保証データフレームが新たに受信された状態である。本来は、既にGDである自ノードにおいて到達保証データフレームが受信された段階で到達保証ACKフレームが送信済みであってステップS1304の判定がYesとならないはずである。しかし、タイミングの問題でこの状態1が発生する可能性があるため、その場合には、到達保証ACKフレームの返信処理のみが行われる。
 ステップS1307の判定がNoの場合には、ステップS1308に移行する。この移行状態は、受信フレームに関連するGS、到達保証ID、およびポート番号の組合せについて、下記の条件が成立している状態である。
 <状態2>
  ・中継ノードとして到達保証データフレームを既に受信し転送している。
  ・同じ到達保証データフレームが新たに受信された。
 この状態2において、まずステップS1308で到達保証ACK処理部114は、到達保証転送記録テーブル115への登録を、次のようにして実行する。すなわち、到達保証ACK処理部114は、
  ・到達保証転送記録情報=あり
  ・到達保証ACK受信情報=なし
とした上で、受信したデータフレームのGS、到達保証ID、ポート番号、スタートフラグ、終了フラグ、LS、イベント時刻=現在時刻を、到達保証転送記録テーブル115上に追加したエントリに登録する。
 その後、図6において、到達保証ACK処理部114は、受信したフレームの処理をデータフレーム処理部110に戻し、前述の図26のステップS806以降のデータフレームの転送処理を実行させる。
 このようにして、受信したデータフレームについて、既に転送された記録があり、かつ到達保証ACKフレームがまだ受信されていなければ、そのデータフレームはGDに向けてさらに転送されることになる。
 具体的には、状態2は例えば、図2A又は図2Bの時刻T15でのノードBの処理が該当する。すなわち、ノードBは、受信された到達保証データフレームD111から、GSとポート番号と到達保証IDを抽出し、これらの値の組をキーとして図2Bの到達保証転送記録テーブル115Bを検索する。この結果、イベント時刻=T12のエントリ(時刻T15のエントリはまだ生成されていない)が参照される。そして、このエントリから、到達保証転送情報=「あり」で、かつ到達保証ACK受信情報=「なし」が検出される。これにより、すでに到達保証データフレームD111が転送されているが、それに対応する到達保証ACKフレームが未だ受信されていないことがわかる。これを受けてノードBは、今回の時刻T15に受信した到達保証データフレームD111の再送フレームを、再度次のノードCに転送する。この結果、到達保証データフレームの再送フレームがノードBからノードCに転送され、時刻T16にノードCで受信される。
 ステップS1306の判定で、到達保証フラグの値が0、すなわち受信フレームが到達保証ACKフレームであると判定された場合には、図29BのステップS1312に移行する。
 ステップS1312で到達保証ACK処理部114は、受信した到達保証ACKフレームのGDの値が自ノードIDであるか否かを判定する。
 ステップS1312の判定がYesの場合には、ステップS1313aに移行する。この移行状態は、受信フレームに関連するGS、到達保証ID、およびポート番号の組合せについて、下記の条件が成立している状態である。
 <状態3>
  ・自ノードがGSとして到達保証データフレームを既に送信している。
  ・そのフレームに対する自ノード宛ての到達保証ACKフレームが受信された。
 この状態3において、まずステップS1313aで到達保証ACK処理部114は、図6の再送信バッファ117から、受信した到達保証ACKフレームに該当するエントリを削除する。より具体的には、到達保証ACK処理部114は、到達保証ACKフレームから、GD(自ノード)、ポート番号、および到達保証IDを抽出し、それらの値組をキーとして例えば図17の例の再送信バッファ117のエントリ(到達保証データフレーム)を検索し削除する。
 その後、ステップS1313bで到達保証ACK処理部114は、受信した到達保証ACKフレームを削除する。特には図示しないが、到達保証ACK処理部114は、図6の上位層処理部111に対して、該当する到達保証データフレームの送信が成功したことを通知して、データフレームの受信処理を終了する。
 具体的には、状態3は例えば、図1A又は図1Bの時刻T5でのノードAの処理が該当する。すなわち、ノードAは、時刻T5でノードBから到達保証ACKフレームG101を受信する。このとき、到達保証転送記録テーブル115A上でのイベント時刻=T1のエントリの存在により、状態3の条件が成立する。この結果、図6の再送信バッファ117から、GD=ノードA、ポート番号=1、到達保証ID=1のエントリ(到達保証データフレーム)が削除される。受信された到達保証ACKフレームG101も、不要なので削除される。
 ステップS1312の判定がNoの場合には、ステップS1314に移行する。この移行状態は、受信フレームに関連するGS、到達保証ID、およびポート番号の組合せについて、下記の条件が成立している状態である。
 <状態4>
  ・自ノードが中継ノードとして到達保証データフレームを既に受信・転送している。
  ・そのフレームに対する他ノード宛ての到達保証ACKフレームが受信された。
 この状態4において、まずステップS1314で到達保証ACK処理部114は、到達保証転送記録テーブル115への登録を、次のようにして実行する。すなわち、到達保証ACK処理部114は、
  ・到達保証転送記録情報=なし
  ・到達保証ACK受信情報=あり
とした上で、受信したデータフレームのGS、到達保証ID、ポート番号、スタートフラグ、終了フラグ、LS、イベント時刻=現在時刻を、到達保証転送記録テーブル115上に追加したエントリに登録する。
 次に状態4において、ステップS1315で到達保証ACK処理部114は、受信した到達保証ACKフレームの転送(送信)処理を実行する。この場合、到達保証ACK処理部114は、転送される到達保証ACKフレームにおいて、
  ・LD:ステップS1303で注目したエントリのLS
  ・LS:自ノードID
の変更を実施した上で、次のノードに転送し、データフレームの受信処理を終了する。
 なお、このステップS1315において到達保証ACK処理部114が上記のように到達保証ACKフレームのLDフィールドを設定する理由は、次のとおりである。すなわち、ステップS1303で注目したエントリは、到達保証データフレームの正常な転送時に作成されたと推定される。よって、当該エントリのLSフィールドの値は、到達保証データフレームの送信経路を遡るようにして到達保証ACKフレームを送信するという目的のためにLDとして選択すべきノードのノードIDそのものである。そのため、ステップS1315では、到達保証ACK処理部114は、上記のように到達保証ACKフレームのLDフィールドを設定する。
 図29Aに戻り、ステップS1304で、到達保証転送記録テーブル115で注目したエントリの到達保証転送情報の内容が「なし」である場合、図29CのステップS1316に移行する。この場合は言い換えれば、そのノードで既に到達保証ACKフレームが受信または送信されている状態で、新たな到達保証フレームが受信された場合である。
 ステップS1316で到達保証ACK処理部114は、受信したデータフレームの到達保証フラグと到達保証ACKフレームを読み取る。
 続くステップS1317で到達保証ACK処理部114は、到達保証フラグの値が1であるか0であるか、すなわち受信フレームが到達保証データフレームであるか到達保証ACKフレームであるかを判定する。
 到達保証フラグの値が1、すなわち受信フレームが到達保証データフレームである場合には、ステップS1318で到達保証ACK処理部114は、受信した到達保証データフレームのGDの値が自ノードIDであるか否かを判定する。
 ステップS1318の判定がYesの場合には、ステップS1321に移行する。この移行状態は、受信フレームに関連するGS、到達保証ID、およびポート番号の組合せについて、下記の条件が成立している状態である。
 <状態5>
  ・GDとして到達保証ACKフレームを既に送信している。
  ・自ノード宛ての同じ到達保証データフレームが新たに受信された。
 この状態5において、まずステップS1321で到達保証ACK処理部114は、到達保証転送記録テーブル115への登録を、次のようにして実行する。すなわち、到達保証ACK処理部114は、
  ・到達保証転送記録情報=なし
  ・到達保証ACK受信情報=ACK送信元
とした上で、受信したデータフレームのGS、到達保証ID、ポート番号、スタートフラグ、終了フラグ、LS、イベント時刻=現在時刻を、到達保証転送記録テーブル115上に追加したエントリに登録する。
 次に状態5において、ステップS1322で到達保証ACK処理部114は、到達保証ACKフレームの送信処理を実行する。この場合、到達保証ACK処理部114は、送信される到達保証ACKフレームにおいて、
  ・GD:受信した到達保証データフレームのGS
  ・LD:ステップS1303で注目したエントリのLS
を設定する。なお、本実施形態の到達保証ACK処理部114が上記のように到達保証ACKフレームのLDフィールドを設定する理由は、一時的な経路の揺らぎの影響を受けないようにするためである。詳しく理由を説明すると、次のとおりである。
 ステップS1322の処理が行われるのは、例えば、以下のような状況下においてである。
  ・今回受信したのと同じ到達保証データフレームを以前に受信したときに、既に到達保証ACKフレームを送信した。
  ・しかし、到達保証ACKフレームは、フェージングによる無線リンクの品質悪化などの何らかの理由で、到達保証データフレームのGSであるノードには届かなかった。
  ・そのせいで、到達保証データフレームが再送され、今回、以前受信したのと同じ到達保証データフレームが受信された。
 よって、本実施形態の到達保証ACK処理部114は、一時的な経路の揺らぎの影響を避けるために、ステップS1322では、上記のとおり、以前行われた処理で作成されたエントリ(ステップS1303で注目したエントリ)のLSの値を、到達保証ACKフレームのLDフィールドに指定する。
 また、到達保証ACK処理部114は、送信される到達保証ACKフレームにおいて、
  ・GS:受信した到達保証データフレームのGD
  ・LS:自ノードID
を設定する。更に、送信される到達保証ACKフレームに、到達保証IDとポート番号、スタートフラグと終了フラグを付加し、その到達保証ACKフレームを送信する。
 最後に状態5において、ステップS1323で到達保証ACK処理部114は、受信した到達保証データフレームを廃棄して、データフレームの受信処理を終了する。
 以上の状態5は、既にGDである自ノードにおいて到達保証データフレームが受信されてそれに対応する到達保証ACKフレームが送信されたにもかかわらず、自ノード宛ての同じ到達保証データフレームが新たに受信された状態である。可能性としては、自ノードが送信した到達保証ACKフレームが、何らかのネットワーク障害によりGSまで到達せず、再送タイムアウトによりGSが到達保証ACKフレームを再送した場合が考えられる。
 具体的には、状態5は例えば、図2A又は図2Bの時刻T16でのノードCの処理が該当する。すなわち、ノードCは、時刻T13以後、到達保証データフレームD111に対応する到達保証ACKフレームG111を返送するが、フェージング等の影響によりノードCからノードBに向かう無線リンクの品質が悪化し、到達保証ACKフレームG111がノードBに到達しなかったとする。これにより、ノードAは、到達保証データフレームD111を再送する。この到達保証データフレームの再送フレームは、ノードBからノードCに転送され、時刻T16にノードCで受信される。この時点で、状態5の条件が成立する。ノードCは、時刻T16以後、再送フレームD111に対応する到達保証ACKフレームG111を再度返送するが、今度はノードCからノードBに向かう無線リンクの品質が回復し、到達保証ACKフレームG111がノードBを介してノードAまで到達する。
 ステップS1318の判定がNoの場合には、ステップS1319に移行する。この移行状態は、受信フレームに関連するGS、到達保証ID、およびポート番号の組合せについて、下記の条件が成立している状態である。
 <状態6>
  ・中継ノードとして到達保証ACKフレームを既に受信し転送している。
  ・同じ到達保証データフレームが新たに受信された。
 この状態6において、まずステップS1319で到達保証ACK処理部114は、到達保証転送記録テーブル115への登録を、次のようにして実行する。すなわち、到達保証ACK処理部114は、
  ・到達保証転送記録情報=なし
  ・到達保証ACK受信情報=ACK切替応答
とした上で、受信したデータフレームのGS、到達保証ID、ポート番号、スタートフラグ、終了フラグ、LS、イベント時刻=現在時刻を、到達保証転送記録テーブル115上に追加したエントリに登録する。
 次に状態6において、ステップS1320で到達保証ACK処理部114は、到達保証ACKフレームの送信処理を実行する。この場合、到達保証ACK処理部114は、送信される到達保証ACKフレームにおいて、
  ・GD:受信した到達保証データフレームのGS
  ・LD:ステップS1303で注目したエントリのLS
を設定する。このステップS1320でも、到達保証ACK処理部114は、一時的な経路の揺らぎの影響を受けないようにするために、上記のとおり、以前行われた処理で作成されたエントリ(ステップS1303で注目したエントリ)のLSの値を、到達保証ACKフレームのLDフィールドに指定する。
 また、到達保証ACK処理部114は、送信される到達保証ACKフレームにおいて、
  ・GS:受信した到達保証データフレームのGD
  ・LS:自ノードID
を設定する。更に、送信される到達保証ACKフレームに、到達保証IDとポート番号、スタートフラグと終了フラグを付加し、その到達保証ACKフレームを送信する。
 最後に状態6において、ステップS1323で到達保証ACK処理部114は、受信した到達保証データフレームを廃棄して、データフレームの受信処理を終了する。
 以上の状態6は、既に中継ノードである自ノードにおいて、到達保証データフレームが受信されて転送され、それに対応する到達保証ACKフレームが受信されて転送されているにもかかわらず、同じ到達保証データフレームが新たに受信された状態である。可能性としては、自ノードが送信した到達保証ACKフレームが、何らかのネットワーク障害によりGSまで到達せず、再送タイムアウトによりGSが到達保証ACKフレームを再送した場合が考えられる。
 具体的には、状態6は例えば、図3A又は図3Bの時刻T16でのノードCの処理が該当する。すなわち、時刻T24において、フェージング等の影響によりノードBからノードAに向かう無線リンクの品質が悪化し、到達保証ACKフレームG121がノードAに到達しなかったとする。これにより、ノードAにおいて、時刻T25で、再送のためのタイムアウトが発生し、ノードAは、到達保証データフレームD121を再送する。ノードBは、再送された到達保証データフレームD121から、GSとポート番号と到達保証IDを抽出し、これらの値の組をキーとして図3Bの到達保証転送記録テーブル115B上で最新のエントリを検索する。この結果、イベント時刻=T24のエントリ(時刻T22はT24より古く、時刻T26のエントリはまだ生成されていない)が参照される。そして、このエントリから、到達保証転送情報=「なし」で、かつ到達保証ACK受信情報=「あり」が検出される。これにより、状態6の条件が成立する。その結果、ノードBは、今回の時刻T26に受信した到達保証データフレームD121の再送フレームは、ノードCには転送せず、代わりに、到達保証ACKフレームG121を、ノードAに再送する。
 このようにして、到達保証ACKフレーム自体の転送が途中で失敗した場合でも、再送によるトラフィック増加の影響を、到達保証ACKフレームの転送が失敗したノードまでに留めることが可能となる。
 ステップS1317の判定で、到達保証フラグの値が0、すなわち受信フレームが到達保証ACKフレームであると判定された場合には、図29DのステップS1324に移行する。
 ステップS1324で到達保証ACK処理部114は、受信した到達保証ACKフレームのGDの値が自ノードIDであるか否かを判定する。
 ステップS1324の判定がYesの場合には、ステップS1325に移行する。この移行状態は、受信フレームに関連するGS、到達保証ID、およびポート番号の組合せについて、下記の条件が成立している状態である。
 <状態7>
  ・自ノードがGSとして到達保証ACKフレームを既に送信している。
  ・そのフレームに対する自ノード宛ての到達保証ACKフレームが再度受信された。
 この状態7において、ステップS1325で到達保証ACK処理部114は、受信した到達保証ACKフレームを廃棄し、データフレームの受信処理を終了する。
 ステップS1324の判定がNoの場合には、ステップS1326に移行する。この移行状態は、受信フレームに関連するGS、到達保証ID、およびポート番号の組合せについて、下記の条件が成立している状態である。
 <状態8>
  ・自ノードが中継ノードとして到達保証ACKフレームを既に受信・転送している。
  ・そのフレームに対する他ノード宛ての到達保証ACKフレームが再度受信された。
 この状態8において、まずステップS1326で到達保証ACK処理部114は、到達保証転送記録テーブル115への登録を、次のようにして実行する。すなわち、到達保証ACK処理部114は、
  ・到達保証転送記録情報=なし
  ・到達保証ACK受信情報=あり
とした上で、受信したデータフレームのGS、到達保証ID、ポート番号、スタートフラグ、終了フラグ、LS、イベント時刻=現在時刻を、到達保証転送記録テーブル115上に追加したエントリに登録する。
 次に状態8において、ステップS1327で到達保証ACK処理部114は、受信した到達保証ACKフレームの転送(送信)処理を実行する。この場合、到達保証ACK処理部114は、転送される到達保証ACKフレームにおいて、
  ・LD:ステップS1303で注目したエントリのLS
  ・LS:自ノードID
の変更を実施した上で、次のノードに転送し、データフレームの受信処理を終了する。
 図29Aに戻り、ステップS1302でエントリがヒットしないと判定されると、図29EのステップS1328に移行する。
 ステップS1328で到達保証ACK処理部114は、受信したデータフレームの到達保証フラグと到達保証ACKフレームを読み取る。
 続くステップS1329で到達保証ACK処理部114は、到達保証フラグの値が1であるか0であるか、すなわち受信フレームが到達保証データフレームであるか到達保証ACKフレームであるかを判定する。
 到達保証フラグの値が1、すなわち受信フレームが到達保証データフレームである場合には、ステップS1331で到達保証ACK処理部114は、受信した到達保証データフレームのGDの値が自ノードIDであるか否かを判定する。
 ステップS1331の判定がYesの場合には、図29FのステップS1333に移行する。この処理については後述する。
 ステップS1331の判定がNoの場合には、ステップS1332に移行する。この移行状態は、受信フレームに関連するGS、到達保証ID、およびポート番号の組合せについて、下記の条件が成立している状態である。
 <状態9>
  ・中継ノードとして到達保証データフレームをまだ受信していない。
  ・到達保証データフレームが初めて受信された。
 この状態9において、まずステップS1332で到達保証ACK処理部114は、到達保証転送記録テーブル115への登録を、次のようにして実行する。すなわち、到達保証ACK処理部114は、
  ・到達保証転送記録情報=あり
  ・到達保証ACK受信情報=なし
とした上で、受信したデータフレームのGS、到達保証ID、ポート番号、スタートフラグ、終了フラグ、LS、イベント時刻=現在時刻を、到達保証転送記録テーブル115上に追加したエントリに登録する。
 その後、図6において、到達保証ACK処理部114は、受信したフレームの処理をデータフレーム処理部110に戻し、前述の図26のステップS806以降のデータフレームの転送処理を実行させる。
 具体的には、状態9は例えば、図1A又は図1Bの時刻T2でのノードBの処理に該当する。
 ステップS1329で到達保証ACK処理部114は、到達保証フラグの値が0、すなわち受信フレームが到達保証ACKフレームである場合には、ステップS1330に移行する。この場合、到達保証転送記録テーブル115にエントリの無い(他の経路の)到達保証IDを持つ到達保証データフレームに対応する到達保証ACKフレームを受け取ったことになる。この場合には、ステップS1330で到達保証ACK処理部114は、受信した到達保証ACKフレームを廃棄して、データフレームの受信処理を終了する。
 ステップS1331の判定がYesの場合には、図29FのステップS1333に移行する。この移行状態は、受信フレームに関連するGS、到達保証ID、およびポート番号の組合せについて、下記の条件が成立している状態である。
 <状態10>
  ・GDとして到達保証データフレームをまだ受信していない。
  ・自ノード宛ての到達保証データフレームが初めて受信された。
 この状態10においては、受信された到達保証データフレームを順次図6の組立バッファ116に展開して送信されたデータを組み立ててゆく処理が実行される。
 まず、ステップS1333で到達保証ACK処理部114は、受信した到達保証データフレームに格納されている到達保証ヘッダ333中のスタートフラグと終了フラグを読み取る。
 次に、ステップS1334で到達保証ACK処理部114は、スタートフラグが1であるか0であるかを判定する。
 スタートフラグが1である場合、すなわち受信した到達保証データフレームが複数に分割されたデータフレーム群の先頭フレームであった場合には、ステップS1335に移行する。この移行状態は、受信フレームに関連するGS、到達保証ID、およびポート番号の組合せについて、下記の条件が成立している状態である。
 <状態11>
  ・GDとして到達保証データフレームは今まで受信していない。
  ・自ノード宛ての到達保証データフレームが初めて受信された。
 この状態11において、まずステップS1335で到達保証ACK処理部114は、到達保証転送記録テーブル115への登録を、次のようにして実行する。すなわち、到達保証ACK処理部114は、
  ・到達保証転送記録情報=なし
  ・到達保証ACK受信情報=ACK送信元
とした上で、受信したデータフレームのGS、到達保証ID、ポート番号、スタートフラグ、終了フラグ、LS、イベント時刻=現在時刻を、到達保証転送記録テーブル115上に追加したエントリに登録する。
 次に状態11において、ステップS1336で到達保証ACK処理部114は、到達保証ACKフレームの送信処理を実行する。この場合、到達保証ACK処理部114は、送信される到達保証ACKフレームにおいて、
  ・GD:受信した到達保証データフレームのGS
  ・LD:ステップS1303で注目したエントリのLS
を設定する。また、到達保証ACK処理部114は、送信される到達保証ACKフレームにおいて、
  ・GS:受信した到達保証データフレームのGD
  ・LS:自ノードID
を設定する。更に、送信される到達保証ACKフレームに、到達保証IDとポート番号、スタートフラグと終了フラグを付加し、その到達保証ACKフレームを送信する。
 次に、ステップS1337で到達保証ACK処理部114は、終了フラグが1であるか0であるかを判定する。
 終了フラグが1である場合、すなわち受信した到達保証データフレームが先頭フレームであると同時に末尾フレームである、つまり分割数が1の単一フレームであった場合には、図25のステップS805に移行する。ここでは、受信された単一フレームのペイロードの内容が取り出され、図6の上位層処理部111に引き渡されて、データフレームの受信処理を終了する。
 一方、終了フラグが0である場合、すなわち受信した到達保証データフレームが先頭フレームである場合には、ステップS1338に移行する。
 ステップS1338で到達保証ACK処理部114は、到達保証データフレームにおける到達保証ヘッダ333からポート番号を読み取る。
 次に、ステップS1339で到達保証ACK処理部114は、到達保証データフレームにおける到達保証ヘッダ333に格納されているGSと上述のポート番号とで識別可能な組立バッファ116のエントリを作成する。すなわち、例えば図18に示される組立バッファ116において、GSとポート番号とで決まる、複数のペイロードを格納可能なエントリが作成される。
 最後に、ステップS1340で到達保証ACK処理部114は、組立バッファ116に作成したエントリに、受信した到達保証データフレームのペイロードを保存し、タイムアウト時刻に対応するタイマ値を設定し、データフレームの受信処理を終了する。
 ステップS1334の判定がNo、すなわち受信された到達保証データフレームが複数に分割されたデータフレーム群の先頭フレームではない場合には、図29GのステップS1341に移行する。
 ステップS1341で到達保証ACK処理部114は、まず到達保証データフレームにおける到達保証ヘッダ333からポート番号を読み取る。
 次に、ステップS1342で到達保証ACK処理部114は、受信された到達保証データフレームのデータヘッダ332(図10)から取り出されるGSと、ステップS1341で得られたポート番号を用いて、組立バッファ116を検索する。組立バッファ116は、例えば前述したように、図18に示されるような構成例を有する。
 ステップS1343で到達保証ACK処理部114は、ステップS1342での検索の結果、組立バッファ116に該当するエントリが存在するか否かを判定する。
 組立バッファ116に該当するエントリが存在しなければステップS1344に移行して、到達保証ACK処理部114は、受信した到達保証データフレームを破棄し、データフレームの受信処理を終了する。
 この状態は、先頭でも末尾でもない分割フレームを受信したが、追加すべき組立バッファ116のエントリが見つからないエラー状態である。
 組立バッファ116に該当するエントリが存在しステップS1343の判定がYESならば、ステップS1345で到達保証ACK処理部114は、図29FのステップS1333で取得した終了フラグが1であるか0であるかを判定する。
 終了フラグが1である、すなわち受信された到達保証データフレームが分割されたデータフレーム群の末尾のフレームであった場合には、ステップS1346に移行する。ステップS1346で到達保証ACK処理部114は、組立バッファ116に保存されているフレームを、図18の例として示される、スタートフラグが1のフレームから、終了フラグが1のフレームまで、到達保証ID順に連番で組み立てることを試みる。
 ステップS1347で到達保証ACK処理部114は、連番での組立に成功したか否かを判定する。
 連番での組立に成功した場合、ステップS1350に移行する。まずステップS1350で到達保証ACK処理部114は、到達保証転送記録テーブル115への登録を、次のようにして実行する。すなわち、到達保証ACK処理部114は、
  ・到達保証転送記録情報=なし
  ・到達保証ACK受信情報=ACK送信元
とした上で、受信したデータフレームのGS、到達保証ID、ポート番号、スタートフラグ、終了フラグ、LS、イベント時刻=現在時刻を、到達保証転送記録テーブル115上に追加したエントリに登録する。
 次に、ステップS1351で到達保証ACK処理部114は、到達保証ACKフレームの送信処理を実行する。この場合、到達保証ACK処理部114は、送信される到達保証ACKフレームにおいて、
  ・GD:受信した到達保証データフレームのGS
  ・LD:ステップS1303で注目したエントリのLS
を設定する。また、到達保証ACK処理部114は、送信される到達保証ACKフレームにおいて、
  ・GS:受信した到達保証データフレームのGD
  ・LS:自ノードID
を設定する。更に、送信される到達保証ACKフレームに、到達保証IDとポート番号、スタートフラグと終了フラグを付加し、その到達保証ACKフレームを送信する。
 続いて、ステップS1352で到達保証ACK処理部114は、組立バッファ116において、ステップS1342で見つかったエントリを削除する。
 その後、図25のステップS805に移行する。ここでは、ステップS1346で組み立てられたデータが、図6の上位層処理部111に引き渡されて、データフレームの受信処理を終了する。
 ステップS1347での連番での組立に成功した場合、ステップS1348に移行する。まずステップS1348で到達保証ACK処理部114は、受信した到達保証データフレームを破棄する。
 そして、ステップS1349で到達保証ACK処理部114は、組立バッファ116において、ステップS1342で見つかったエントリを削除して、データフレームの受信処理を終了する。
 この場合、分割フレームの組立に失敗したことになるが、送信元の再送回数以内であれば最初から各到達保証データフレームが再送し直されてやり直されることになる。
 ステップS1345の判定で終了フラグが0である、すなわち受信された到達保証データフレームが分割されたデータフレーム群の途中のフレームであった場合には、図29HのステップS1353に移行する。
 ステップS1353で到達保証ACK処理部114は、図10の例の組立バッファ116に、受信した到達保証データフレームのペイロードを含むエントリを追加し、タイマ値を初期値に戻す。
 次にステップS1354で到達保証ACK処理部114は、到達保証転送記録テーブル115への登録を、次のようにして実行する。すなわち、到達保証ACK処理部114は、
  ・到達保証転送記録情報=なし
  ・到達保証ACK受信情報=ACK送信元
とした上で、受信したデータフレームのGS、到達保証ID、ポート番号、スタートフラグ、終了フラグ、LS、イベント時刻=現在時刻を、到達保証転送記録テーブル115上に追加したエントリに登録する。
 次に、ステップS1355で到達保証ACK処理部114は、到達保証ACKフレームの送信処理を実行する。この場合、到達保証ACK処理部114は、送信される到達保証ACKフレームにおいて、
  ・GD:受信した到達保証データフレームのGS
  ・LD:ステップS1303で注目したエントリのLS
を設定する。また、到達保証ACK処理部114は、送信される到達保証ACKフレームにおいて、
  ・GS:受信した到達保証データフレームのGD
  ・LS:自ノードID
を設定する。更に、送信される到達保証ACKフレームに、到達保証IDとポート番号、スタートフラグと終了フラグを付加し、その到達保証ACKフレームを送信してデータフレームの受信処理を終了する。
 図30Aは、図29A~Hのフローチャートにおける下記の各ステップで実行される到達保証転送記録テーブルへの記録処理の詳細を示すフローチャートである。
  図29A S1308、S1309
  図29B S1314
  図29C S1319、S1321
  図29D S1326
  図29E S1332
  図29F S1335
  図29G S1350
  図29H S1354
 この処理が到達保証ACK処理部114によって実行されるときには、到達保証転送記録情報の値と、到達保証ACK受信情報の値が上記各ステップの処理において指定されている。
 まず、ステップS1401で到達保証ACK処理部114は、新規エントリを、到達保証転送記録テーブル115に追加する。
 次に、ステップS1402で到達保証ACK処理部114は、追加したエントリにおいて、到達保証ID、ポート番号、スタートフラグ、終了フラグ、GS、LSの各フィールドに、受信した到達保証データフレームにおけるそれぞれの値を設定する。
 続いて、ステップS1403で到達保証ACK処理部114は、追加したエントリの到達保証転送記録情報に、指定された値を設定する。
 また、ステップS1404で到達保証ACK処理部114は、追加したエントリの到達保証ACK受信情報に、指定された値を設定する。
 さらに、ステップS1405で到達保証ACK処理部114は、追加したエントリのイベント時刻に、現在時刻を設定する。
 なお、到達保証転送記録テーブル115の例は、図1B、図2B、図3B等で示した。
 図30Bは、図29A~Hのフローチャートにおける下記の各ステップで実行される到達保証ACK送信処理の詳細を示すフローチャートである。
  図29A S1310
  図29C S1320、S1322
  図29F S1336
  図29G S1351
  図29H S1355
 まず、ステップS1501で到達保証ACK処理部114は、到達保証ACKフレーム用にメモリ領域を確保する。
 次に、ステップS1502で到達保証ACK処理部114は、指定されたGD設定値を、到達保証ACKフレームのGDに設定する。
 次に、ステップS1503で到達保証ACK処理部114は、自ノードIDを、到達保証ACKフレームのGSとLSに設定する。
 また、ステップS1504で到達保証ACK処理部114は、指定されたLD設定値を、到達保証ACKフレームのLDに設定する。
 次に、ステップS1505で到達保証ACK処理部114は、新たなFIDを生成し、到達保証ACKフレームに設定する。
 次に、ステップS1506で到達保証ACK処理部114は、「データフレーム」を示す値を、到達保証ACKフレームのタイプとして設定する。
 また、ステップS1507で到達保証ACK処理部114は、到達保証ACKフレームの長さ、到達保証フラグ、到達保証ACKフラグに、それぞれ0、0、1を設定する。
 さらに、ステップS1508で到達保証ACK処理部114は、受信したデータフレームの到達保証ID、ポート番号、スタートフラグ、終了フラグを、到達保証ACKフレームにそれぞれコピーする。
 そして、ステップS1509で到達保証ACK処理部114は、生成した到達保証ACKフレームを送信する。
 続いて、図31を参照して、図26のステップS812aの重み付けテーブル調整処理の詳細を説明する。なお、図31の重み付けテーブル調整処理は、後述の図34BのステップS1108aでも呼び出される。図31の説明において「ヒットした重み付けテーブル104-i」とは、図26のステップS811の検索または図34BのステップS1107の検索でヒットしたテーブルを意味する。
 ステップS851でデータフレーム処理部110は、隣接ノード管理テーブル103(図12参照)の1つ目のエントリに注目する。なお、以下の図31の説明において、データフレーム処理部110が注目している隣接ノード管理テーブル103のエントリを「注目エントリ」という。
 次に、ステップS852では、ヒットした重み付けテーブル104-iに注目エントリのノードIDの値をLDとして含むエントリがあるか否かを、データフレーム処理部110が判断する。ヒットした重み付けテーブル104-iに、注目エントリのノードIDの値をLDとして含むエントリがあれば、処理はステップS855に移行する。逆に、ヒットした重み付けテーブル104-iに、注目エントリのノードIDの値をLDとして含むエントリがなければ、処理はステップS853に移行する。
 ステップS853でデータフレーム処理部110は、ヒットした重み付けテーブル104-iに新規エントリを追加する。
 続いてステップS854でデータフレーム処理部110は、ステップS853で重み付けテーブル104-iに追加した新規エントリに値を設定する。つまり、データフレーム処理部110は、新規エントリにおいて、隣接ノード管理テーブル103の注目エントリのノードIDの値をLDフィールドに、初期重み付け値を重みフィールドに、現在時刻を最終更新時刻フィールドに、それぞれ設定する。
 なお、ステップS854における初期重み付け値は、図20のステップS308における初期重み付け値とは異なる。具体的には、ステップS854での初期重み付け値は、ヒットした重み付けテーブル104-iの重みフィールドにおいて、1未満の重みのうちの最大値である。
 例えば、ヒットした重み付けテーブル104-iの重みフィールドに4つのエントリが存在し、それぞれの重みフィールドの値が0.4、0.7、1、および0.5であれば、ステップS854での初期重み付け値は、0.7である。なお、ヒットした重み付けテーブル104-iの重みフィールドの値が、全エントリで1の場合は、ステップS854での初期重み付け値は、1未満の任意の値であり、例えば図20のステップS308での初期重み付け値と同様に0.5でもよい。
 以上のような初期重み付け値をステップS854で用いることにより、重み付けテーブル104-iの既存のエントリに反映されている学習結果が優先的に考慮される。その結果、経路が必要以上に変動することがなくなり、換言すれば、経路が安定する。
 例えば、4つのエントリの重みフィールドの値がそれぞれ0.4、0.7、1、および0.5である上記の例において、ステップS854で初期重み付け値として図20のステップS308と同様に0.5が使われるとする。すると、重みが何も学習されていない隣接ノード装置(すなわちステップS853で追加された新規エントリにLDとしてノードIDが記録されている隣接ノード装置)が、重みが0.7の隣接ノード装置よりも優先的にLDとして選択されてしまう。つまり、今までの学習の蓄積としての重み0.7が無視されてしまう。
 そこで、本実施形態では、重みが何も学習されていない隣接ノード装置が、重みが学習済みの隣接ノード装置よりも優先的にLDとして選択されることを防ぎ、今までの学習結果を優先的に考慮するために、上記のように定義される初期重み付け値が利用される。
 ステップS855でデータフレーム処理部110は、隣接ノード管理テーブル103にまだ注目していないエントリが残っているか否かを判断する。データフレーム処理部110が隣接ノード管理テーブル103のすべてのエントリに注目し終えていれば、図31の処理は終了する。他方、まだデータフレーム処理部110が注目していないエントリが隣接ノード管理テーブル103に残っていれば、処理はステップS856に移行する。
 そして、ステップS856でデータフレーム処理部110は、隣接ノード管理テーブル103のまだ注目していないエントリのうち、次のエントリに注目する。そして処理はステップS852に戻る。
 なお、図31の処理の意義は以下のとおりである。
 重み付けテーブル104-iにおけるエントリごとのエージング処理の副作用として、図31の処理の直前には、次のような状況の可能性もある。すなわち、隣接ノード管理テーブル103に登録されているある隣接ノード装置のノードIDを、LDとして有するエントリが、重み付けテーブル104-iに存在しない可能性がある。
 ここで、ノード装置100の隣接ノード装置は、データフレームを送信する際にデータフレーム処理部110が選択するLDの潜在的な候補である。よって、ヒットした重み付けテーブル104-iのLDフィールドにおいて全隣接ノード装置が網羅されるようにすることが、ノード装置100の適切な動作のためには望ましい。
 以上の図31の重み付けテーブル調整処理によれば、エージング処理の副作用として生じる可能性のある上記のような状況が解消される。つまり、隣接ノード管理テーブル103に登録されているすべてのノードIDが、ヒットした重み付けテーブル104-iにLDとして登録されていることが、保証される。
 以上、図25~図31を参照して、図19のステップS205におけるデータフレーム受信処理について詳しく説明した。続いて、データフレーム受信処理のステップS826およびS837における送信成否の通知に関連する処理について、図32と図33を参照して説明する。
 図32は、図19のステップS206におけるACKフレーム受信処理のフローチャートである。図32の処理は、フレーム分岐処理部106からACKフレームがACK処理部107に出力されると開始される。
 ステップS901でACK処理部107は、フレーム分岐処理部106から受け取ったACKフレームのLDの値が自ノードIDと等しいか否かを判断する。ACKフレームのLDの値が自ノードIDと等しければ、処理はステップS902に移行し、ACKフレームのLDの値が自ノードIDと異なれば、図32の処理は終了する。ACK処理部107も、例えばフラッシュメモリ205などに予め格納された自ノードIDを参照することができる。
 例えば、図9のステップS105でノード装置Nが送信したデータフレームに対するACKフレームを、図40にステップS105aとして示すようにノード装置Nが送信すると、無関係なノード装置NもACKフレームを受信する。なぜなら、ノード装置Nはノード装置Nに隣接しているからである。
 しかし、ノード装置NのACK処理部107-Nは、ステップS901の判断の結果、直ちに図32の処理を終了するので、ノード装置Nは、ノード装置Nと無関係なACKフレームによる副作用を受けることはない。
 ステップS902でACK処理部107は、ACKフレームのGSとFIDの値から、ACKフレームに対応する送信済みのデータフレームを特定する。
 例えば、図9のステップS102でノード装置Nがノード装置Nへ送信する図10のデータフレーム303に対して、ノード装置Nは図10のACKフレーム322をノード装置Nに返信する。ここで、ACKフレーム322の受信を契機にノード装置NのACK処理部107-Nが図32の処理を行う場合について詳しく説明すると、以下のとおりである。
 ACK処理部107-Nは、ステップS902において、ACKフレーム322のGSとFIDの値(すなわちNとF)を取り出す。また、バッファ部109-Nは、図11と同様の形式であるから、バッファ部109-Nには、ノード装置Nから送信済みのデータフレーム303が格納されている。よって、ACK処理部107-Nは、取り出したGSとFIDの値(すなわちNとF)をキーにしてバッファ部109-Nのエントリを検索し、データフレーム303を含むエントリを特定する。
 続いて、ステップS903でACK処理部107は、ステップS902で特定した送信済みのデータフレームをバッファ部109から削除する。つまり、ステップS902の検索で見つかったエントリを、ACK処理部107はバッファ部109から削除する。
 また、ステップS904でACK処理部107は、ステップS902で特定した送信済みのデータフレームに関して、データフレーム処理部110に「送信成功」を通知する。そして、図32の処理は終了する。
 例えば、データフレーム処理部110は、図7のMPU201がプログラムを実行することにより実現されていてもよい。その場合、MPU201をデータフレーム処理部110として機能させるスレッドは、データフレームの送信後、ACKフレームを受信するまでスリープしていてもよい。ステップS904における「送信成功」の通知は、スリープしているスレッドを起こす処理である。
 なお、ステップS904の通知は、ステップS902で特定したデータフレームのGSとFIDの値の通知をともなう。例えば上記の例においては、ACK処理部107-Nは、データフレーム303を識別するためのGSとFIDの値(すなわちNとF)も、データフレーム処理部110に通知する。
 図33は、ACKフレームがタイムアウト時刻までに受信されない場合の処理を示すフローチャートである。図33の処理は、例えば、図7のタイマIC203が所定の間隔で発生させる割り込み信号を契機として、定期的に行われる。
 ステップS1001でACK処理部107は、バッファ部109(図11を参照)の1つ目のエントリに注目する。以下、図33に関する説明においては、ACK処理部107が注目しているバッファ部109のエントリを「注目エントリ」という。
 続いてステップS1002でACK処理部107は、現在時刻と注目エントリのタイムアウト時刻フィールドの値を比較する。そして、現在時刻がタイムアウト時刻以降であれば、処理はステップS1003に移行する。他方、現在時刻がまだタイムアウト時刻に達していなければ、処理はステップS1005に移行する。
 ステップS1003でACK処理部107は、バッファ部109の注目エントリに格納されているデータフレームに関して、「送信失敗」をデータフレーム処理部110に通知する。ステップS1003の通知は、図32のステップS904の通知と同様に、具体的には、例えばスリープしているスレッドを起こす処理であってもよい。
 また、ステップS904の通知と同様に、ステップS1003の通知も、データフレームのGSとFIDの値の通知をともなう。具体的には、ACK処理部107は、注目エントリに格納されているデータフレームのGSとFIDの値を読み取り、読み取ったGSとFIDの値によりデータフレームを特定して、特定したデータフレームの「送信失敗」をデータフレーム処理部110に通知する。
 なお、送信失敗の場合、データフレーム処理部110が今までLDとして試していない隣接ノード装置を新たなLDとして選択してデータフレームの再送を試みることがある。よって、ステップS1003の時点では、注目エントリはバッファ部109から削除されない。
 続いてステップS1004でACK処理部107は、注目エントリのタイムアウト時刻に、式(5)の時刻Ttimeoutを設定する。そして、処理はステップS1005に移行する。
 ステップS1005では、まだ注目していないエントリがバッファ部109に残っているか否かをACK処理部107が判断する。ACK処理部107が、バッファ部109のすべてのエントリに注目し終わっていれば、図33の処理は終了する。他方、まだACK処理部107が注目していないエントリがバッファ部109に残っていれば、処理はステップS1006に移行する。
 ステップS1006でACK処理部107は、バッファ部109の中でまだ注目していない次のエントリに注目する。そして処理はステップS1002に戻る。
 ところで、図25~図28を参照して説明したデータフレーム受信処理は、上記のとおり、ノード装置100がGSとならないタイプのノード装置である場合の例である。以下では、図34A~図38を参照して、GSとなりうるタイプのノード装置に特有の処理について説明する。
 図34A,34Bと図35は、ノード装置100がGSとなってデータフレームを送信する場合の送信処理のフローチャートである。図34Aの処理は、上位層処理部111からデータフレーム処理部110への要求を契機として開始される。
 ステップS1101でデータフレーム処理部110は、上位層処理部111から、上位層処理部111における上位層のプロトコルの処理の結果として、データフレームのGDの値、ペイロードと、到達保証の有無を示す情報を取得する。
 例えば、「上位層のプロトコル」がイーサネットプロトコルであってもよい。その場合、上位層処理部111は、本実施形態で定義されるデータフレームのペイロードとして、イーサネットフレームをデータフレーム処理部110に出力する。また、上位層処理部111は、本実施形態におけるデータフレームのGDに設定する値を、データフレーム処理部110に通知する。
 そして、データフレーム処理部110は、上位層処理部111から取得したペイロードを含む新たなデータフレームを作成し、作成したデータフレームのGDに、上位層処理部111から取得した値を設定する。例えば、図9の例では、ノード装置Nのデータフレーム処理部110-Nは、上位層処理部111-NからGDの値としてNを取得し、データフレームのGDにNと設定する。
 まず、ステップS1101aでデータフレーム処理部110は、到達保証が指定されているか否かを判定する。
 到達保証が指定されていなければ、ステップS1101fで、ブランクまたは無効データを含む到達保証ヘッダ333を生成する。その後、図34BのステップS1102に移行する。
 到達保証が指定されていれば、まず、ステップS1101bでデータフレーム処理部110は、到達保証IDを作成する。
 次に、ステップS1101cでデータフレーム処理部110は、到達保証ヘッダを生成する。具体的には、図10の到達保証ヘッダ333の各値が設定される。
 続いて、ステップS1101dでデータフレーム処理部110は、到達保証ID、GS、LS、到達保証転送情報、到達保証ACK情報、イベント時刻を、到達保証転送記録テーブル115に設定する。
 そして、ステップS1101eでデータフレーム処理部110は、図17に示されるように、データフレーム(ペイロード)、GD、ポート番号、到達保証ID、到達保証ACK待ち時間、再送回数を、再送信バッファ117に設定する。その後、図34BのステップS1102に移行する。
 続いて、図34BのステップS1102でデータフレーム処理部110は、ステップS1101で取得したペイロードの長さを求め、作成したデータフレームの長さフィールドに設定する。例えば、図9の例では、図10のデータフレーム302と303に例示するように、ペイロードの長さはPであるから、ノード装置Nのデータフレーム処理部110-Nは、作成したデータフレームの長さフィールドにPと設定する。
 そして、ステップS1103でデータフレーム処理部110は、作成したデータフレームのGSとLSに自ノードIDを設定する。例えば、図9の例では、ノード装置Nのデータフレーム処理部110-Nは、作成したデータフレームのGSとLSにそれぞれNと設定する。
 そして、ステップS1104でデータフレーム処理部110は、FID生成部113に新たなFIDの生成を要求する。するとFID生成部113が新たなFIDを生成してデータフレーム処理部110に出力するので、データフレーム処理部110は、生成されたFIDを作成したデータフレームのFIDフィールドに設定する。
 さらに、ステップS1105でデータフレーム処理部110は、「データフレーム」を示す所定の値D(図10を参照)を、作成したデータフレームのタイプフィールドに設定する。なお、以上のステップS1102~S1105の実行順序は順不同である。
 以上のようにして、送信するデータフレームを作成し終わると、ステップS1106でデータフレーム処理部110は、作成したデータフレームをバッファ部109に格納する。すなわち、データフレーム処理部110は、バッファ部109内に新たなエントリの領域を確保し、確保した領域に、作成したデータフレームを格納する。なお、図11に示すようにバッファ部109にはタイムアウト時刻フィールドがあるが、この時点ではタイムアウト時刻は設定されない。
 続いてステップS1107でデータフレーム処理部110は、ステップS1101で上位層処理部111から指定されたGDの値を用いて重み付けテーブル104を検索する。
 そしてステップS1108でデータフレーム処理部110は、指定されたGDの値に対応する重み付けテーブルが、ステップS1107の検索の結果としてヒットしたか否かを判断する。指定されたGDの値に対応する重み付けテーブルがヒットした場合、処理はステップS1108aに移行し、指定されたGDの値に対応する重み付けテーブルが存在しない場合、処理はステップS1009に移行する。
 ステップS1108aでデータフレーム処理部110は、図31の重み付けテーブル調整処理を行い、エージング処理の副作用を中和する。そして、処理はステップS1110に移行する。
 ステップS1109でデータフレーム処理部110は、ステップS1101で指定されたGDの値に対応する新規重み付けテーブルを重み付けテーブル104の中に追加する。具体的には、図26のステップS813~S816と類似の処理をデータフレーム処理部110はステップS1109で行う。
 すなわち、データフレーム処理部110はステップS1109で、上位層処理部111から指定されたGDの値に対応する新規重み付けテーブルを追加し、新規重み付けテーブルにおいて、上位層処理部111から指定されたGDの値をGDとして設定する。さらに、データフレーム処理部110は、隣接ノード管理テーブル103と同数の新規エントリを新規重み付けテーブル内に作成する。そして、データフレーム処理部110は、作成した各エントリに、それぞれ、隣接ノード管理テーブル103の各エントリのノードIDと初期重み付け値と現在時刻を設定する。
 なお、以下では説明の便宜上、ステップS1101で指定されたGDの値に対応する重み付けテーブルを、「104-i」という参照符号で参照する。すなわち、重み付けテーブル104-iは、ステップS1107の検索でヒットしたテーブルまたはステップS1109で追加されたテーブルである。
 以上のようにして、重み付けテーブル104-iがヒットしたとステップS1108で判断された後、またはステップS1109で重み付けテーブル104-iが作成された後、処理はステップS1110に移行する。
 そして、ステップS1110でデータフレーム処理部110は、上位層処理部111から指定されたGDの値に対応する重み付けテーブル104-iにおいて、最小の重みと対応付けられているLDの値を取得する。なお、図14に例示するように、重み付けテーブル104-iにおいて複数のエントリが同じ最小の重みを有する場合もありうる。その場合、データフレーム処理部110は、最小の重みと対応付けられている複数のLDの値のうち任意の1つをステップS1110で選択して取得する。データフレーム処理部110は、取得したLDの値および対応する重みの値を、例えば図7のDRAM204などの記憶領域に記憶する。
 続いて、処理は図35のステップS1111に移行し、ステップS1111でデータフレーム処理部110は、下記の2つの条件(L1)と(L2)のいずれかが成立するか否かを判断する。
  (L1)ステップS1110で取得したLDの値に対応する重みが、重みの最大値(本実施形態では、具体的には1.0)である。
  (L2)重み付けテーブル104-iに登録されているすべてのLDへの送信が、いずれも失敗した。
 条件(L1)または(L2)が成立する場合、もはやLDとして選択可能な隣接ノード装置は残っていないので、処理はステップS1112に移行する。
 他方、条件(L1)と(L2)のいずれも成立しない場合、まだLDとして選択可能な隣接ノード装置が残っている。換言すれば、データフレーム受信処理のステップS818に関して説明した(G1)~(G3)のいずれにも該当しない隣接ノード装置が、少なくとも1つは存在する。そして、LDとして選択可能な隣接ノード装置のノードIDが、ステップS1110(または後述のステップS1125)で取得されている。そこで、ステップS1111で条件(L1)と(L2)のいずれも成立しないと判断されると、処理はステップS1114に移行する。
 条件(L1)または(L2)が成立する場合、ステップS1112でデータフレーム処理部110は、データフレームを破棄する。つまり、データフレーム処理部110は、ステップS1106で新たに作成してデータフレームを格納したエントリを、バッファ部109から削除する。
 そして、続くステップS1113でデータフレーム処理部110は、上位層処理部111に「送信失敗」を通知する。つまり、データフレーム処理部110は、どの隣接ノード装置にもデータフレームを成功裡に送信することはできなかったことを、上位層処理部111に通知する。そして図34A,34B~図35の処理が終了する。
 他方、ステップS1111において、条件(L1)と(L2)のいずれも成立しないと判断されると、取得済みのLDの値で識別される隣接ノード装置へのデータフレームの転送を試みる処理が、ステップS1114~S1125で行われる。
 ステップS1114では、データフレーム処理部110が、ステップS1106でバッファ部109に格納したデータフレームのLDに、ステップS1110または後述のステップS1125で取得したLDの値を設定する。そして、データフレーム処理部110は、LDの値を設定したデータフレームの送信を、送信部102に依頼する。すると、送信部102がデータフレームを送信する。
 続いてステップS1115でデータフレーム処理部110は、ステップS1106でデータフレームを格納したバッファ部109内のエントリのタイムアウト時刻に、式(5)の時刻Ttimeoutを設定する。
 そして、ステップS1116でデータフレーム処理部110は、自ノードIDと、ステップS1104でFID生成部113が生成したFIDを使ってFID管理テーブル105を検索する。
 次にステップS1117でデータフレーム処理部110は、ステップS1116のFID管理テーブル105の検索においてエントリがヒットしたか否かを判断する。なお、ステップS1117が1回目に実行される場合には「エントリがヒットしなかった」と判断され、ステップS1117が2回目以降に実行されるときは「エントリがヒットした」と判断される。
 ステップS1116の検索でエントリがヒットしていれば、処理はステップS1118に移行する。他方、ステップS1116の検索でエントリがヒットしていなければ、処理はステップS1119に移行する。
 ステップS1118でデータフレーム処理部110は、ステップS1116の検索でヒットしたエントリを更新する。具体的には、データフレーム処理部110は、ステップS1116の検索でヒットしたエントリにおいて、LDフィールドには、ステップS1114で送信したデータフレームのLDの値を設定し、最終更新時刻フィールドには、現在時刻を設定する。そして、処理はステップS1121に移行する。
 また、ステップS1119でデータフレーム処理部110は、FID管理テーブル105に新規エントリを追加する。
 そして、次のステップS1120でデータフレーム処理部110は、新規エントリに値を設定する。具体的には、データフレーム処理部110は、新規エントリにおいて、FIDとGSとLDの各フィールドには、それぞれステップS1114で送信したデータフレームの値をコピーする。また、データフレーム処理部110は、新規エントリにおいて、最終更新時刻フィールドには現在時刻を設定し、OLSフィールドには、自ノードIDをコピーする。
 例えば、図15に示した、ノード装置NのFID管理テーブル105-NのエントリE1は、ノード装置Nのデータフレーム処理部110-Nが以上の処理により作成したものである。
 ステップS1121でデータフレーム処理部110は、ステップS1114における送信の成否の通知を待つ。ステップS1121の詳細は、図27のステップS825と同様である。データフレーム処理部110が、ステップS1121での待機の後、ACK処理部107から「送信成功」または「送信失敗」の通知を受けると、処理はステップS1122に移行する。
 ステップS1122でデータフレーム処理部110は、ACK処理部107から受けた通知に基づいて、ステップS1114の送信が成功したか否かを判断する。送信が成功した場合、処理はステップS1123に移行し、送信が失敗した場合、処理はステップS1124に移行する。
 送信が成功した場合、ステップS1123でデータフレーム処理部110は、重み付けテーブル104において、ステップS1114で送信したデータフレームのGDとLDの組に対応する重みを小さくする。
 つまり、データフレーム処理部110は、上位層処理部111から指定されたGDの値に対応する重み付けテーブル104-iにおいて、送信したデータフレームのLDに対応する重みを、例えば式(6)を使って更新する。データフレーム処理部110はさらに、重み付けテーブル104-iの、重みを更新したエントリにおいて、最終更新時刻に現在時刻を設定する。そして、図34A,34B~図35の処理は終了する。
 逆に、送信が失敗した場合、ステップS1124でデータフレーム処理部110は、重み付けテーブル104において、ステップS1114で送信したデータフレームのGDとLDの組に対応する重みを大きくする。
 つまり、データフレーム処理部110は、上位層処理部111から指定されたGDの値に対応する重み付けテーブル104-iにおいて、送信したデータフレームのLDに対応する重みを、例えば式(7)を使って更新する。
 なお、データフレーム処理部110はステップS1124でさらに、送信したデータフレームのLDの値を、例えば図7のDRAM204などのワークエリアに「送信に失敗したLD」として記憶する。図27のステップS828と同様に、「送信に失敗したLD」の記憶のためには、線形リストや配列などのデータ構造が利用されてもよい。
 また、データフレーム処理部110はステップS1124でさらに、重み付けテーブル104-iの、重みを更新したエントリにおいて、最終更新時刻に現在時刻を設定する。そして、処理はステップS1125に移行する。
 ステップS1125でデータフレーム処理部110は、今までにLDとして試していない他の選択可能な隣接ノード装置を探す。具体的には、データフレーム処理部110は、上位層処理部111から指定されたGDの値に対応する重み付けテーブル104-iにおいて、送信に失敗したLD以外のLDのうちで、最小の重みと対応付けられているLDの値を取得する。ここで、送信に失敗したLDは、ステップS1124において例えば図7のDRAM204などのワークエリアに、例えば線形リストや配列の形で記憶されている。
 つまり、データフレーム処理部110は、重み付けテーブル104-iにおいて、過去にステップS1110またはS1125で取得されていないLDの値のうちで、最小の重みと対応付けられているものを取得する。データフレーム処理部110は、取得したLDの値および対応する重みの値を、例えば図7のDRAM204などの記憶領域に記憶する。そして、処理はステップS1111に戻る。
 図36は、再送信バッファ117のエージング処理のフローチャートである。例えば、図7のタイマIC203が所定の間隔Iで割り込み信号を到達保証ACK処理部114に出力し、割り込み信号を契機として到達保証ACK処理部114が所定の間隔Iで図36の処理を行ってもよい。
 ステップS1601で到達保証ACK処理部114は、再送信バッファ117の未注目のエントリがあるかないか判定する。
 未注目のエントリがなくなれば処理を終了する。
 未注目のエントリがあれば、ステップS1602で到達保証ACK処理部114は、再送信バッファ117の未注目のエントリの1つに注目する。例えば、図17の例の横1行である。
 ステップS1603で到達保証ACK処理部114は、注目エントリの到達保証ACK待ち時間(図17参照)をデクリメントする。
 ステップS1604で到達保証ACK処理部114は、到達保証ACK待ち時間=0となったか否かを判定する。
 到達保証ACK待ち時間=0となっていなければ、到達保証ACK処理部114は、ステップS1601に移行して、次のエントリの処理を実行する。
 到達保証ACK待ち時間=0となれば、ステップS1605で到達保証ACK処理部114は、再送回数(図17)が満了したか否か、すなわち所定値に達したか否かを判定する。
 再送回数が満了していなければ、ステップS1608で到達保証ACK処理部114は、到達保証ACK待ち時間(図17)を初期値に再設定する。
 ステップS1609で到達保証ACK処理部114は、再送回数(図17)をインクリメントする。
 ステップS1610で到達保証ACK処理部114は、注目エントリから、データフレームのペイロードと到達保証ヘッダを取り出す。
 そして、ステップS1611で到達保証ACK処理部114は、図34BのステップS1102以降の処理を呼び出して、再送信処理を実行させる。
 その後、到達保証ACK処理部114は、ステップS1601に移行して、次のエントリの処理を実行する。
 一方、ステップS1605で再送回数が満了したと判定されれば、ステップS1606で到達保証ACK処理部114は、もはや再送信は行わないとして、再送信バッファから注目エントリを削除する。
 そして、ステップS1607で到達保証ACK処理部114は、図6の上位層処理部111へ、結果(到達保証送信回数満了)を通知する。
 その後、到達保証ACK処理部114は、ステップS1601に移行して、次のエントリの処理を実行する。
 図37は、組立バッファ116のエージング処理のフローチャートである。例えば、図7のタイマIC203が所定の間隔Iで割り込み信号を到達保証ACK処理部114に出力し、割り込み信号を契機として到達保証ACK処理部114が所定の間隔Iで図37の処理を行ってもよい。
 ステップS1701で到達保証ACK処理部114は、例えば図17に示される組立バッファ116において、GSとポート番号の組で未注目のものがあるか否かを判定する。
 未注目のものがなくなれば処理を終了する。
 未注目のものがあれば、ステップS1702で到達保証ACK処理部114は、未注目の、GSとポート番号の組のうちの1つに注目する。
 ステップS1703で到達保証ACK処理部114は、注目している組に対応するタイマ値(図17参照)をデクリメントする。
 ステップS1704で到達保証ACK処理部114は、注目している組に対応するタイマ値が0になったか否かを判定する。
 タイマ値が0になっていなければ、到達保証ACK処理部114は、ステップS1701に移行して、次の組の処理を実行する。
 タイマ値が0になると、ステップS1705で到達保証ACK処理部114は、注目している組に対応するすべてのエントリを削除する。
 その後、到達保証ACK処理部114は、ステップS1701に移行して、次の組の処理を実行する。
 さて、図38は、GSにもなりうるノード装置100が、データフレーム受信処理の一部として図28の処理の代わりに行う処理のフローチャートである。
 ノード装置100がGSにもなりうるタイプの装置である場合、データフレーム受信処理におけるステップS801~S829は、ノード装置100が中継専用の場合と同様であり、図25~図27に示したとおりである。しかし、ノード装置100がGSにもなりうるタイプの装置の場合は、図27のステップS818においてデータフレーム処理部110が「条件(F1)と(F2)のいずれかが成立する」と判断すると、処理は図38のステップS830aに移行する。
 ステップS830aでデータフレーム処理部110は、受信したデータフレームのGSの値が自ノードIDであるか否かを判断する。受信したデータフレームのGSの値が自ノードIDと異なれば、処理はステップS830bに移行し、受信したデータフレームのGSの値が自ノードIDであれば、処理はステップS830cに移行する。
 ステップS830bでデータフレーム処理部110は、以下のようにして新たなデータフレームを作成して送信部102に出力し、作成されたデータフレームを送信部102が送信する。
 具体的には、データフレーム処理部110は、ステップS808またはS810で記憶したOLSの値を新たなデータフレームのLDに指定し、自ノードIDを新たなデータフレームのLSに指定する。また、データフレーム処理部110は、受信したデータフレームからGD、GS、FID、タイプ、長さの各フィールドの値と、ペイロードを、新たなデータフレームにコピーする。データフレームの送信後、処理はステップS831aに移行する。
 また、ステップS830cでは、データフレーム処理部110は、上位層処理部111に「送信失敗」を通知する。通知にあたって、データフレーム処理部110は、例えば受信したデータフレームからペイロードを取り出し、ペイロードまたはペイロードの一部を上位層処理部111に出力してもよい。すると、上位層処理部111はどのデータの送信に失敗したのかを、データフレーム処理部110から受け取ったペイロードの内容に基づいて認識することができる。送信失敗の通知の後、処理はステップS838aに移行する。
 さて、ステップS831aでは、データフレーム処理部110が、受信したデータフレームのFIDとGSの値を検索キーとして用いてFID管理テーブル105を検索する。なお、以下のステップS831a~S839aは、それぞれ図28のステップS831~S839と類似のステップである。
 次のステップS832aでデータフレーム処理部110は、ステップS831aの検索の結果、エントリがヒットしたか否かを判断する。エントリがヒットしていれば処理はステップS833aに移行し、エントリがヒットしていなければ処理はステップS834aに移行する。
 なお、ステップS807で「エントリがヒットした」と判断されている場合に、ステップS831aの検索の結果見つかるエントリは、ステップS806の検索の結果見つかったエントリである。また、ステップS807で「エントリがヒットしなかった」と判定され、かつステップS823において新規エントリが作成された場合は、ステップS831aの検索の結果、ステップS823で作成された新規エントリが見つかる。
 ステップS832aで「エントリがヒットしなかった」と判断されるのは、(M1)かつ(M2)の場合である。
  (M1)ステップS807で「エントリがヒットしなかった」と判断された。
  (M2)1回目にステップS818が実行された直後に、ステップS830aに処理が移行した。
 ステップS833aでデータフレーム処理部110は、ステップS831aの検索の結果ヒットしたエントリを更新する。具体的には、データフレーム処理部110は、ヒットしたエントリにおいて、LDには、ヒットしたエントリ自身のOLSの値をコピーし、最終更新時刻には、現在時刻を設定する。そして処理はステップS836aに移行する。
 他方、ステップS834aでは、データフレーム処理部110はFID管理テーブル105に新規エントリを追加する。
 そして、次のステップS835aでデータフレーム処理部110は、ステップS834aで追加した新規エントリに値を設定する。具体的には、データフレーム処理部110は、新規エントリにおいて、FIDとGSには、受信したデータフレームの値をそれぞれコピーし、最終更新時刻には、現在時刻を設定し、OLSとLDには、受信したデータフレームのLSの値をコピーする。そして処理はステップS836aに移行する。
 ステップS836aでデータフレーム処理部110は、ステップS830bで送信したデータフレームに関する送信成否の通知を待つ。そして、「送信成功」または「送信失敗」の通知をデータフレーム処理部110がACK処理部107から受けると、処理はステップS837aに移行する。
 ステップS837aでデータフレーム処理部110は、ステップS830bにおけるデータフレームの送信が成功したか否かを判断する。送信が失敗した場合、処理はステップS838aに移行し、送信が成功した場合、処理はステップS839aに移行する。
 ステップS838aが実行されるのは、(N1)または(N2)の場合である。
  (N1)ノード装置100自身がGSとなって送信したデータフレームがバックトラックによりノード装置100に戻ってきて受信されたのであり、かつ、ノード装置100の隣接ノード装置はすべて(N1-1)または(N1-2)である。
    (N1-1)最大値の重みと対応付けられている。
    (N1-2)LDとして指定してデータフレームを送信すると、送信に失敗する。
  (N2)受信したデータフレームのGSは、ノード装置100以外の他のノード装置であり、かつ、OLS以外のすべての隣接ノード装置が(N2-1)または(N2-2)であり、かつ、OLSへのデータフレームの送信は失敗した。
    (N2-1)最大値の重みと対応付けられている。
    (N2-2)LDとして指定してデータフレームを送信すると、送信に失敗する。
 この場合、データフレーム処理部110はステップS838aで、受信したデータフレームを破棄する。すなわち、データフレーム処理部110は、ステップS801で見つけたエントリをバッファ部109から削除する。そして、データフレーム受信処理は終了する。
 他方、ステップS839aは、ノード装置100ではない別のノード装置がGSであるデータフレームに関して、ノード装置100からノード装置100のOLSへの送信が成功した場合に実行される。ステップS839aでデータフレーム処理部110は、重み付けテーブル104において、ステップS830bで送信したデータフレームのGDとLDの組に対応する重みを小さくする。換言すれば、データフレーム処理部110は、受信したデータフレームのGDに対応する重み付けテーブル104-iにおいて、送信したデータフレームのLD(つまりステップS808またはS810で記憶したOLS)に対応する重みを更新する。
 例えば、ステップS829やS839と同様に、データフレーム処理部110は、式(6)を使って重みを更新してもよい。データフレーム処理部110はさらに、重み付けテーブル104-iの、重みを更新したエントリにおいて、最終更新時刻に現在時刻を設定する。そして、データフレーム受信処理は終了する。
 続いて、以上の詳細な説明を踏まえて、再度、図9の例について説明する。
 図39は、経路を探索するための探索空間を表す探索木の形式で、図9における経路選択を説明する図である。人工知能の分野では、探索空間はしばしば探索木の形式で表現される。図39は、本実施形態におけるデータフレームの転送を、ネットワーク内で動的に行われる経路探索という観点から見て、探索空間を探索木400として表現した図である。なお、探索木400は、ノード装置内に作成されるデータ構造ではなく、ネットワークトポロジそのものでもない。
 探索木400に含まれる各探索ノードには、ネットワーク1内のノード装置のノードIDのラベルが付けられる。なお、図39では、各探索ノードを、円、正方形、六画形の3種類の図形で表しているが、円、正方形、六画形の意味の違いについては後述する。
 また、図9の例では、データフレームのGSとGDは、それぞれノード装置NとNなので、探索木400のルートノードは、Nというラベルが付けられた探索ノード401である。そして、経路探索のゴールは、探索木400においてNというラベルが付けられた探索ノード409を発見することである。
 ここで、図9のネットワーク1においてノード装置NとNが隣接していれば、(1≦i,j≦7)、ノード装置Nにとって隣接ノード装置Nは潜在的なLDの候補であり、ノード装置Nにとっても隣接ノード装置Nは潜在的なLDの候補である。よって、探索木400内において、Nというラベルが付けられた探索ノードは、Nというラベルが付けられた探索ノードを子ノードとして有する。
 したがって、探索木400では、Nというラベルが付けられた第1の探索ノードが、Nというラベルが付けられた第2の探索ノードを子ノードとして有し、第2の探索ノードが、Nというラベルが付けられた第3の探索ノードを子ノードとして有する。以下同様であるから、探索木400は、潜在的には無限の探索ノードを有する。
 潜在的には無限に大きい探索木400の探索においては、探索空間の刈り込み(pruning)が行われつつ、深さ優先探索が行われる。「探索空間の刈り込み」とは、探索効率を上げるために探索木の1つ以上の枝を無視するという技法であり、探索アルゴリズムの研究分野においては、応用分野に応じて種々の刈り込み手法が提案されている。
 本実施形態のノード装置100の自律分散協調の結果としての刈り込みには2種類ある。以下、便宜的に「第1種の刈り込み」と「第2種の刈り込み」と称する。
 第1種の刈り込みは、親ノードと同じラベルを有する子ノードの刈り込みである。例えば、上記の第1~第3の探索ノードの例では、第2の探索ノードの子ノードである第3の探索ノードのラベルは、第2の探索ノードの親ノードである第1の探索ノードのラベルと等しい。そこで、第2の探索ノードから先の探索においては、第3の探索ノードが刈り込まれる。第1種の刈り込みによって刈り込まれる探索ノードは、図39において正方形で表されている。
 第2種の刈り込みは、祖先ノードと同じラベルを有する子ノードの刈り込みである。第2種の刈り込みは、本実施形態のFID管理テーブル105によって可能となっている。第2種の刈り込みによって刈り込まれる探索ノードは、図39において六画形で表されている。
 なお、図39において円は、刈り込まれずに探索された探索ノードを表す。
 以下、具体的に図9の例と探索木400との関係について説明する。
 上記のように、探索木400のルートノードである探索ノード401のラベルは、データフレームのGSであるノード装置NのノードID・Nである。そして、ネットワーク1においてノード装置Nにはノード装置Nのみが隣接するので、探索ノード401は1つの探索ノード402のみを子ノードとして有し、探索ノード402のラベルはNである。
 また、ノード装置Nにはノード装置Nのみが隣接するので、図9のステップS101のように、データフレームがノード装置Nからノード装置Nへと送信される。ステップS101の送信は、図39では、探索ノード401から探索ノード402へと探索が進むことに対応する。
 そして、ネットワーク1においてノード装置Nには、ノード装置NとNとNが隣接している。よって、探索ノード402は、3つの探索ノード403と404と405を子ノードとして有し、探索ノード403と404と405それぞれのラベルはNとNとNである。
 図9においてノード装置Nが、最初にノード装置NをLDとして選択して、ステップS102でノード装置Nへデータフレームを送信することは、図39では、探索ノード402から探索ノード403へ探索が進むことに対応する。
 そして、ネットワーク1においてノード装置Nには、ノード装置NとNとNが隣接している。よって、探索ノード403は、3つの探索ノード406、407および408を子ノードとして有し、探索ノード406、407、および408それぞれのラベルは、NとNとNである。
 図9においてノード装置Nが、最初にノード装置NをLDとして選択して、ステップS103でノード装置Nへデータフレームを送信することは、図39では、探索ノード403から探索ノード406へ探索が進むことに対応する。
 そして、ネットワーク1においてノード装置Nには、ノード装置NとNとNが隣接する。よって、探索ノード406は、3つの探索ノード411、412、および413を子ノードとして有し、探索ノード411、412、および413それぞれのラベルは、NとNとNである。
 図9においてノード装置Nが、最初にノード装置NをLDとして選択して、ステップS104でノード装置Nへデータフレームを送信することは、図39では、探索ノード406から探索ノード411へ探索が進むことに対応する。
 ところが、図9に示すように、ステップS104ではノード装置NとNの間のリンクの障害により、送信が失敗する。つまり、探索木400においては、探索ノード411で探索が失敗してバックトラックが生じる。なお、探索ノード411から探索ノード406への、探索木400上でのバックトラックは、実際のネットワーク1上では、ACKフレームが受信されずにノード装置Nがタイムアウトするという現象である。
 図9においては、ステップS104の送信失敗の後、ノード装置Nは、次にノード装置NをLDとして選択してステップS105でノード装置Nへデータフレームを送信する。このステップS105での送信は、図39では、探索ノード406から探索ノード412へ探索が進むことに対応する。
 そして、ネットワーク1においてノード装置Nにはノード装置NとNが隣接するので、探索ノード412は、2つの探索ノード414と415を子ノードとして有し、探索ノード414と415それぞれのラベルは、NとNである。
 図9においてノード装置Nが最初にノード装置NをLDとして選択してステップS106でノード装置Nへデータフレームを送信することは、図39では、探索ノード412から探索ノード414へと探索が進むことに対応する。
 なお、探索木400において、探索ノード414は、祖先ノードである探索ノード403と同じラベルを持つ。しかし、探索ノード403と414の間には、2つの探索ノード406と412がはさまっているため、この時点では探索ノード414は刈り込まれない。
 そして、ネットワーク1においてノード装置Nにはノード装置NとNとNが隣接するので、探索ノード414は、3つの探索ノード416、417、および418を子ノードとして有し、探索ノード416、417、および418それぞれのラベルは、NとNとNである。
 ところで、ステップS106でデータフレームを受信した時点で、ノード装置NのFID管理テーブル105-Nには、図15のとおりエントリEが既に存在している。このことは、次の(O1)と(O2)を意味する。
  (O1)探索木400において、探索ノード414から見た祖先ノードとして、探索ノード414自身と同じラベルNを有する探索ノード403が存在している。
  (O2)したがって、探索ノード414の子ノードである探索ノード416、417、および418は、刈り込み対象である。
 そして、刈り込みは次のようにして実現される。
 ラベルNを有する探索ノード414の祖先ノードにラベルNを有する探索ノード406があることは、ノード装置NのFID管理テーブル105-NのエントリEにおいて、ステップS106の時点でLDの値がNであることに対応する(図15参照)。そして、ステップS106でデータフレームを受信すると、ノード装置Nは、ステップS103でLDとして選択したノード装置Nに対応する重みを、図14に示すように最大値に設定している。
 換言すれば、ステップS106でのデータフレームの受信を契機として、ノード装置Nは、ノード装置Nを潜在的なLDの候補から除外している。そして、潜在的なLDの候補からの除外とは、探索木400における刈り込みであるから、ラベルNを持つ探索ノード417は刈り込まれる。
 また、探索ノード414の祖先ノードにラベルNを有する探索ノード402があることは、ノード装置NのFID管理テーブル105-NのエントリEにおいて、OLSの値がNであることに対応する(図15参照)。
 そして、ステップS106でデータフレームを受信した時点では、OLS以外で潜在的にLDとして選択可能なノード装置Nが存在しているので、ノード装置Nは、OLSであるノード装置NをLDとして選択しない。つまり、ラベルNを持つ探索ノード416は刈り込まれる。
 また、ステップS106の受信を契機に、ノード装置NはLDとしてノード装置Nを選択する。ここで、探索木400において探索ノード414の子ノードである探索ノード418は、探索ノード414の親ノードである探索ノード412と同じラベルNを有することに注目すると、探索ノード418は第1種の刈り込みの対象である。
 実際、ステップS107でのノード装置Nからノード装置Nへのデータフレームの送信は、図39に示すように、探索木400上での探索ノード414から親ノードである探索ノード412へのバックトラックとして表すことができる。換言すれば、探索ノード414の子ノードであり、親ノードの探索ノード412と同じラベルNを有する探索ノード418は、刈り込まれる。
 次のステップS108では、図9に示すように、ノード装置NはOLSであるノード装置Nへとデータフレームをバックトラックさせている。このステップS108の動作は、図39では、探索木400においてラベルNを有する探索ノード412からラベルNを有する探索ノード406へのバックトラックとして表現される。換言すれば、探索ノード412の子ノードであり、探索ノード412の親ノードの探索ノード406と同じラベルNを有する探索ノード415は、刈り込まれる。
 そして、次のステップS109でも、図9に示すように、ノード装置NがOLSであるノード装置Nへとデータフレームをバックトラックさせている。このステップS109の動作も、図39では、探索木400においてラベルNを有する探索ノード406からラベルNを有する探索ノード403へのバックトラックとして表現される。換言すれば、探索ノード406の子ノードであり、探索ノード406の親ノードの探索ノード403と同じラベルNを有する探索ノード413は、刈り込まれる。
 この段階で、ラベルNを有する探索ノード403の子ノードのうち未探索なのは、ラベルNを有する探索ノード407と、ラベルNを有する探索ノード408である。
 しかし、ノード装置NはステップS107でノード装置Nにデータフレームを送信済みであり、ステップS109でのデータフレームの受信を契機として、図14に示すように、ノード装置Nに対応する重みは最大値に設定されている。よって、ノード装置NはLDの候補から除外され、ラベルNを有する探索ノード408は刈り込まれる。
 結局、ステップS110では、図9に示すように、ノード装置NはOLSであるノード装置Nへとデータフレームをバックトラックさせている。このステップS110の動作は、図39では、探索木400においてラベルNを有する探索ノード403からラベルNを有する探索ノード402へのバックトラックとして表現される。換言すれば、探索ノード403の子ノードであり、探索ノード403の親ノードの探索ノード402と同じラベルNを有する探索ノード407は、刈り込まれる。
 続いて、ステップS111で、ノード装置NはLDとして新たにノード装置Nを選択し、ノード装置Nにデータフレームを送信する。ステップS111の送信は、図39では、ラベルNを有する探索ノード402からラベルNを有する探索ノード404へ探索が進むことに対応する。
 そして、ネットワーク1においてノード装置Nにはノード装置NとNが隣接するので、探索ノード404は、2つの探索ノード409と410を子ノードとして有し、探索ノード409と410それぞれのラベルは、NとNである。
 図9においてノード装置Nは、OLSであるノード装置Nではなく、まずノード装置NをLDとして選択してデータフレームをステップS112で送信する。つまり、ラベルNを有する探索ノード410は刈り込まれる。そして、ステップS112の送信により、GDであるノード装置NのノードID・Nをラベルとして有する探索ノード409へと探索が進み、探索が終了する。なお、ステップS112で探索が終了するので、探索ノード402の子ノードである探索ノード405は探索されないが、探索ノード405は、第1種の刈り込みの対象でもあるから、図39では便宜的に正方形で表現してある。
 なお、探索木400において、ルートノードである探索ノード401から、以上のようにして探索により見つかったリーフノードである探索ノード409に至る、経路上の各探索ノードのラベルを順に並べてタプルで表すと、〈N,N,N,N〉となる。そして、このタプルは、図9のネットワーク1において学習された経路〈N,N,N,N〉である。
 本実施形態によれば、データフレームが転送されながら動的に経路が探索されるが、その探索順を探索木400で表すと、図39のとおり深さ優先探索順である。幅優先探索ではなく深さ優先探索が行われることは、データフレームがマルチキャストされず常にユニキャストされることからも理解される。
 そして、以上の説明から明らかなとおり、FID管理テーブル105のエントリのエージング時間Gが適切に設定されていれば、ネットワーク1内でGSからGDに至る経路が見つかるまで、潜在的に可能な経路が深さ優先探索により調べつくされる。すなわち、エージング時間Gが短すぎなければ、GSからGDに至る経路が存在さえすれば、経路は必ず見つかる。なお、図24に関して述べた「最悪ケース」とは、探索木400の深さ優先探索順でのトラバース(traverse)において、GDのノード装置のノードIDをラベルとして有する探索ノードが、最後に見つかる場合のことである。
 続いて、さらに別の観点から本実施形態について説明する。
 図40は、ハローフレームの送受信による隣接ノードの認識と図9の経路選択とを示すタイミングチャートである。
 図4のネットワーク1において、各ノード装置N~Nは、独立してそれぞれ図21のハローフレーム送信処理を行う。どのノード装置が先にハローフレームを送信するかは任意であるが、図40の例では、まずステップS1201でノード装置Nが図21のステップS403を実行し、ハローフレームを送信する。すると、ハローフレームはノード装置Nに隣接するノード装置N、N、およびNでそれぞれ受信される。そして、ノード装置N、N、およびNは、それぞれ図19のステップS203で図20のハローフレーム受信処理を呼び出して実行し、ノード装置Nを隣接ノード装置として認識する。
 また、図40の例では、続いてステップS1202で、ノード装置Nが図21のステップS403を実行し、ハローフレームを送信する。すると、ハローフレームはノード装置Nに隣接するノード装置N、N、およびNでそれぞれ受信される。そして、ノード装置N、N、およびNは、それぞれ図19のステップS203で図20のハローフレーム受信処理を呼び出して実行し、ノード装置Nを隣接ノード装置として認識する。
 さらに、ステップS1203では、ノード装置Nが図21のステップS403を実行し、図10のハローフレーム312を送信する。すると、ハローフレーム312はノード装置Nに隣接するノード装置N、N、およびNでそれぞれ受信される。そして、ノード装置N、N、およびNは、それぞれ図19のステップS203で図20のハローフレーム受信処理を呼び出して実行し、ノード装置Nを隣接ノード装置として認識する。
 また、ステップS1204では、ノード装置Nが図21のステップS403を実行し、ハローフレームを送信する。なお、ステップS1204の時点では、ノード装置NとNの間のリンクには障害がまだ生じていないものとする。よって、ハローフレームはノード装置Nに隣接するノード装置NとNでそれぞれ受信される。そして、ノード装置NとNは、それぞれ図19のステップS203で図20のハローフレーム受信処理を呼び出して実行し、ノード装置Nを隣接ノード装置として認識する。
 また、ステップS1205では、ノード装置Nが図21のステップS403を実行し、ハローフレームを送信する。すると、ハローフレームはノード装置Nに隣接するノード装置Nで受信される。そして、ノード装置Nは、図19のステップS203で図20のハローフレーム受信処理を呼び出して実行し、ノード装置Nを隣接ノード装置として認識する。
 さらに、ステップS1206では、ノード装置Nが図21のステップS403を実行し、ハローフレームを送信する。すると、ハローフレームはノード装置Nに隣接するノード装置NとNでそれぞれ受信される。そして、ノード装置NとNは、それぞれ図19のステップS203で図20のハローフレーム受信処理を呼び出して実行し、ノード装置Nを隣接ノード装置として認識する。
 そして、ステップS1207では、ノード装置Nが図21のステップS403を実行し、ハローフレームを送信する。すると、ハローフレームはノード装置Nに隣接するノード装置NとNでそれぞれ受信される。そして、ノード装置NとNは、それぞれ図19のステップS203で図20のハローフレーム受信処理を呼び出して実行し、ノード装置Nを隣接ノード装置として認識する。
 以上のステップS1201~S1207により、図1および図9に示すネットワーク1内のノード装置N~Nは、それぞれ隣接ノード装置を認識し、隣接ノード管理テーブル103-N~103-Nを更新する。また、図20に示すように、ノード装置N~Nは、ハローフレームの受信を契機として、場合によっては重み付けテーブル104-N~104-N)を更新することもある。
 その後、ステップS1208でノード装置NとNの間のリンクに障害が発生する。
 また、障害の発生とは関係なく、ステップS101でノード装置Nが、ノード装置NをGDとして指定するデータフレームを、ノード装置NをLDとして指定して送信する。つまり、ステップS101でノード装置Nは、図34A,34B~35の処理を行う。
 すると、データフレームを受信したノード装置Nは、図19のステップS205から図25~29Hの処理を呼び出して実行する。図25のステップS803でノード装置NがACKフレームを送信することが、図40ではステップS101aとして表現されている。
 他方、ノード装置Nは、図35のステップS1121でACKフレームの受信を待っている。そして、ノード装置Nは、ステップS101aで送信されるACKフレームを受信すると、図19のステップS206から図32の処理を呼び出して実行し、その結果、ステップS1121の待機を終え、ステップS1122とS1123を実行し、図35の処理を終える。
 また、ステップS101aに示すように図25のステップS803でACKフレームを送信したノード装置Nは、ステップS804以降の処理を続行し、図27のステップS819で、LDとしてノード装置Nを指定してデータフレームを送信する。ステップS819での送信が、図40のステップS102に相当する。なお、図10には、ステップS102で送信されるデータフレーム303が例示されている。
 すると、データフレームを受信したノード装置Nは、図19のステップS205から図25~29Hの処理を呼び出して実行する。図25のステップS803でノード装置NがACKフレームを送信することが、図40ではステップS102aとして表現されている。なお、図10には、ステップS102aで送信されるACKフレーム322が例示されている。
 他方、ノード装置Nは、図27のステップS825でACKフレームの受信を待っている。そして、ノード装置Nは、ステップS102aで送信されるACKフレームを受信すると、図19のステップS206から図32の処理を呼び出して実行し、その結果、ステップS825の待機を終え、ステップS826とS827を実行し、図27の処理を終える。
 また、ステップS102aに示すように図25のステップS803でACKフレームを送信したノード装置Nは、ステップS804以降の処理を続行し、図27のステップS819で、LDとしてノード装置Nを指定してデータフレームを送信する。ステップS819での送信が、図40のステップS103に相当する。なお、図10には、ステップS103で送信されるデータフレーム304が例示されている。
 すると、データフレームを受信したノード装置Nは、図19のステップS205から図25~図29A~Hの処理を呼び出して実行する。図25のステップS803でノード装置NがACKフレームを送信することが、図40ではステップS103aとして表現されている。
 他方、ノード装置Nは、図27のステップS825でACKフレームの受信を待っている。そして、ノード装置Nは、ステップS103aで送信されるACKフレームを受信すると、図19のステップS206から図32の処理を呼び出して実行し、その結果、ステップS825の待機を終え、ステップS826とS827を実行し、図27の処理を終える。
 また、ステップS103aに示すように図25のステップS803でACKフレームを送信したノード装置Nは、ステップS804以降の処理を続行し、図27のステップS819で、LDとしてノード装置Nを指定してデータフレームを送信する。ステップS819での送信が、図40のステップS104に相当する。
 しかし、ステップS1208でノード装置NとNの間のリンクには障害が発生しており、データフレームはノード装置Nに到達しない。そのため、図40ではステップS104の矢印は、途中から破線になっている。
 ノード装置Nは、図27のステップS825でACKフレームの受信を待っている。しかし、ノード装置NからACKフレームが受信されないため、ノード装置Nは、定期的に実行している図33の処理のステップS1003において、ノード装置Nへのデータフレームの送信が失敗したと認識する。
 その結果、ノード装置Nは、ステップS825の待機を終え、ステップS826、S828、S829、S818の処理を順に実行する。そして、ノード装置Nは、続くステップS819において、LDとしてノード装置Nを指定してデータフレームを送信する。ステップS819での送信が、図31のステップS105に相当する。
 すると、データフレームを受信したノード装置Nは、図19のステップS205から図25~図29A~Hの処理を呼び出して実行する。図25のステップS803でノード装置NがACKフレームを送信することが、図40ではステップS105aとして表現されている。
 他方、ノード装置Nは、図27のステップS825でACKフレームの受信を待っている。そして、ノード装置Nは、ステップS105aで送信されるACKフレームを受信すると、図19のステップS206から図32の処理を呼び出して実行し、その結果、ステップS825の待機を終え、ステップS826とS827を実行し、図27の処理を終える。
 また、ステップS105aに示すように図25のステップS803でACKフレームを送信したノード装置Nは、ステップS804以降の処理を続行し、図27のステップS819で、LDとしてノード装置Nを指定してデータフレームを送信する。ステップS819での送信が、図40のステップS106に相当する。
 すると、データフレームを受信したノード装置Nは、図19のステップS205から図25~図29A~Hの処理を呼び出して実行する。図25のステップS803でノード装置NがACKフレームを送信することが、図40ではステップS106aとして表現されている。
 他方、ノード装置Nは、図27のステップS825でACKフレームの受信を待っている。そして、ノード装置Nは、ステップS106aで送信されるACKフレームを受信すると、図19のステップS206から図32の処理を呼び出して実行し、その結果、ステップS825の待機を終え、ステップS826とS827を実行し、図27の処理を終える。
 また、ステップS106aに示すように図25のステップS803でACKフレームを送信したノード装置Nは、ステップS804以降の処理を続行し、図27のステップS819で、LDとしてノード装置Nを指定してデータフレームを送信する。ステップS819での送信が、図40のステップS107に相当する。
 すると、データフレームを受信したノード装置Nは、図19のステップS205から図25~図29A~Hの処理を呼び出して実行する。図25のステップS803でノード装置NがACKフレームを送信することが、図40ではステップS107aとして表現されている。
 他方、ノード装置Nは、図27のステップS825でACKフレームの受信を待っている。そして、ノード装置Nは、ステップS107aで送信されるACKフレームを受信すると、図19のステップS206から図32の処理を呼び出して実行し、その結果、ステップS825の待機を終え、ステップS826とS827を実行し、図27の処理を終える。
 また、ステップS107aに示すように図25のステップS803でACKフレームを送信したノード装置Nは、ステップS804以降の処理を続行する。具体的には、処理が図27のステップS818から図28のステップS830へと進み、ノード装置NはステップS830で、OLSであるノード装置NをLDとして指定してデータフレームを送信する。ステップS830での送信が、図40のステップS108に相当する。
 すると、データフレームを受信したノード装置Nは、図19のステップS205から図25~図29A~Hの処理を呼び出して実行する。図25のステップS803でノード装置NがACKフレームを送信することが、図40ではステップS108aとして表現されている。
 他方、ノード装置Nは、図28のステップS836でACKフレームの受信を待っている。そして、ノード装置Nは、ステップS108aで送信されるACKフレームを受信すると、図19のステップS206から図32の処理を呼び出して実行し、その結果、ステップS836の待機を終え、ステップS837とS839を実行し、図28の処理を終える。
 また、ステップS108aに示すように図25のステップS803でACKフレームを送信したノード装置Nは、ステップS804以降の処理を続行する。具体的には、処理が図27のステップS818から図28のステップS830へと進み、ノード装置NはステップS830で、OLSであるノード装置NをLDとして指定してデータフレームを送信する。ステップS830での送信が、図40のステップS109に相当する。
 すると、データフレームを受信したノード装置Nは、図19のステップS205から図25~図29A~Hの処理を呼び出して実行する。図25のステップS803でノード装置NがACKフレームを送信することが、図40ではステップS109aとして表現されている。
 他方、ノード装置Nは、図28のステップS836でACKフレームの受信を待っている。そして、ノード装置Nは、ステップS109aで送信されるACKフレームを受信すると、図19のステップS206から図32の処理を呼び出して実行し、その結果、ステップS836の待機を終え、ステップS837とS839を実行し、図28の処理を終える。
 また、ステップS109aに示すように図25のステップS803でACKフレームを送信したノード装置Nは、ステップS804以降の処理を続行する。具体的には、処理が図27のステップS818から図28のステップS830へと進み、ノード装置NはステップS830で、OLSであるノード装置NをLDとして指定してデータフレームを送信する。ステップS830での送信が、図40のステップS110に相当する。
 すると、データフレームを受信したノード装置Nは、図19のステップS205から図25~図29A~Hの処理を呼び出して実行する。図25のステップS803でノード装置NがACKフレームを送信することが、図40ではステップS110aとして表現されている。
 他方、ノード装置Nは、図28のステップS836でACKフレームの受信を待っている。そして、ノード装置Nは、ステップS110aで送信されるACKフレームを受信すると、図19のステップS206から図32の処理を呼び出して実行し、その結果、ステップS836の待機を終え、ステップS837とS839を実行し、図28の処理を終える。
 また、ステップS110aに示すように図25のステップS803でACKフレームを送信したノード装置Nは、ステップS804以降の処理を続行し、図27のステップS819で、LDとしてノード装置Nを指定してデータフレームを送信する。ステップS819での送信が、図40のステップS111に相当する。
 すると、データフレームを受信したノード装置Nは、図19のステップS205から図25~図29A~Hの処理を呼び出して実行する。図25のステップS803でノード装置NがACKフレームを送信することが、図40ではステップS111aとして表現されている。
 他方、ノード装置Nは、図27のステップS825でACKフレームの受信を待っている。そして、ノード装置Nは、ステップS111aで送信されるACKフレームを受信すると、図19のステップS206から図32の処理を呼び出して実行し、その結果、ステップS825の待機を終え、ステップS826とS827を実行し、図27の処理を終える。
 また、ステップS111aに示すように図25のステップS803でACKフレームを送信したノード装置Nは、ステップS804以降の処理を続行し、図27のステップS819で、LDとしてノード装置Nを指定してデータフレームを送信する。ステップS819での送信が、図40のステップS112に相当する。
 すると、データフレームを受信したノード装置Nは、図19のステップS205から図25~図29A~Hの処理を呼び出して実行する。図25のステップS803でノード装置NがACKフレームを送信することが、図40ではステップS112aとして表現されている。
 以上説明した一連の処理により、ネットワーク1全体では、たとえステップS1208で障害が発生しようとも、ノード装置N~Nの自律分散協調の結果として、動的に経路〈N,N,N,N〉が選択され、学習される。すなわち、以上の一連の処理によりノード装置N~Nでは重み付けテーブル104-N~104-Nが更新されている。
 したがって、ステップS112aの後には、学習の結果として、ノード装置NをGDとして指定するデータフレームは、図9のようにネットワーク1内で試行錯誤的にバックトラックしながら転送される代わりに、初めから効率よく転送される。具体例をいくつか挙げれば、下記のとおりである。
  (P1)ノード装置NがGSとなって、ノード装置NをGDとして指定するデータフレームを隣接するノード装置Nに送信すると、ノード装置Nは、学習された重み付けテーブル104-Nに基づき、最初からLDとしてノード装置Nを選択する。そして、データフレームはノード装置NからGDであるノード装置Nへと送信される。
  (P2)同様に、ノード装置NがGSとなって、ノード装置NをGDとして指定するデータフレームを送信するときも、ノード装置Nは、学習された重み付けテーブル104-Nに基づき、最初からLDとしてノード装置Nを選択する。そして、データフレームはノード装置NからGDであるノード装置Nへと送信される。
  (P3)ノード装置NがGSとなって、ノード装置NをGDとして指定するデータフレームを送信するとき、ノード装置Nは、学習された重み付けテーブル104-Nに基づき、バックトラックの生じたノード装置Nではなく、ノード装置Nを最初にLDとして選択する。以下同様にして、ノード装置NはLDとしてノード装置Nを選択し、ノード装置NはLDとしてノード装置Nを選択し、ノード装置NはLDとしてノード装置Nを選択し、ノード装置NはLDとしてノード装置Nを選択する。
  (P4)ノード装置NがGSとなって、ノード装置NをGDとして指定するデータフレームを送信するとき、ノード装置Nは、学習された重み付けテーブル104-Nに基づき、ノード装置NをLDとして選択する。したがって、データフレームは、最初から効率よく経路〈N,N,N,N〉に沿って転送される。
 以上のように本実施形態によれば、図9のようにバックトラックによってネットワーク1内で試行錯誤的かつ動的に経路が選択されると、バックトラックの過程で経由した各ノード装置において、重み付けテーブル104の重みという形で、適切な経路が学習される。よって、GDとして同じくノード装置Nが指定されたデータフレームが今後送信される場合には、上記(P1)~(P4)の例のように、学習の結果にしたがって、経路選択が効率化される。
 図41Aは、本実施形態の効果の説明図(その1)である。
 図41Aは、図9の場合と同様にして、図4のネットワーク1において動的かつ自律分散的に経路が選択される様子を説明する図である。具体的には、図41Aは、ノード装置NがGSとなって、ノード装置NをGDとして指定したデータフレームを送信する場合の、ネットワーク1内での経路選択の様子を示す。
 いま、ノード装置Nから送信された到達保証データフレームが、図41AのS1801、S1802、S1803、S1804の順で、各ノード装置間を転送され、最終的にノード装置Nに到達する。この結果今度は、ノード装置NをGSとして、図41AのS1811、S1812、S1813、S1814の順で、到達保証データフレームに対する到達保証ACKフレームが返送され、最終的に到達保証データフレームのGSであったノード装置Nに戻る。この場合、到達保証データフレームがS1801、S1802、S1803、S1804の順で転送されるに従って、各ノード装置に到達保証転送記録テーブル115が作成される。そして、到達保証ACKフレームが返送される復路の経路S1811、S1812、S1813、S1814は、往路の経路S1801、S1802、S1803、S1804を逆にたどるようにリレーされる。この結果、到達保証データフレームに対するグローバルなACKである到達保証ACKフレームを、確実にGDからGSに返すことが可能となる。ひいては、GSとGD間で、無線アドホックネットワークを前提としつつ、非常に安定性の高い通信を実現することができる。
 図41Bは、本実施形態の効果の説明図(その2)である。
 この図では、到達保証データフレームの転送経路はS1901、S1902、S1903、S1904である。また、その到達保証データフレームに対応する到達保証ACKフレームの転送経路はS1911、S1912、S1913、となる。ところが、S1913の経路において、ノード装置N3をN2の間で通信障害が発生し、その部分で到達保証ACKフレームが消失してしまった。この結果、ノード装置N1は到達保証ACKフレームを受信することができず、再送タイムアウトにより、到達保証データフレームの再送が発生する。再送フレームの経路は、S1921S1922となる。ここで、再送された到達保証データフレームを受信したノード装置N3は、それより前にその到達保証データに対応する到達保証ACKフレームを受信したことを、到達保証転送記録テーブル115によって知っている。このような場合には、再送された到達保証データフレームをそれ以上転送させることをストップさせる。その代わりに、到達保証データフレームがGDのノード装置Nで正常に受信されたことを示す到達保証ACKフレームを、S1931、S1932という経路でノード装置N1に返す。これにより、無駄なトラフィックが抑制される。
 図41Cは、本実施形態の効果の説明図(その3)である。
 この図では、ノード装置N1からノード装置N7に到達保証データフレームが転送されるときに、かなり経路を迷いながら到達している様子が示されている。すなわち、S101、S102、S103と経路がたどられたあと、S104においてバックトラックが発生している。その後、S105、S106、S107でノード装置N3に戻ってしまい、その後、S107、S108、S109、S110、S111、S112とたどって、到達保証データフレームがノード装置N7にたどりついている。本実施例では、何回かの試行錯誤により、無線アドホックネットワークが自律的に適切な経路を選ぶように動作し、最終的に、ノード装置N1から、N、N6を通ってノード装置Nに至る経路が選択されるようになる。ここで、本実施形態において図1B、図2B、図3B等の到達保証転送記録テーブル115に記憶されるLSは、最初は効率の悪い場所のノードIDが選択されたり、また、バックトラックが発生しているノード装置N4のノードIDが選択されたりしている。しかし、最終的には、ノード装置N1から、N、N6を通ってノード装置Nに至る最新のLSが、到達保証転送記録テーブル115に記憶されるようになる。なお、効率の悪い経路のエントリは、到達保証転送記録テーブル115上ではエージング処理によって自然に淘汰されてゆく。この結果、ノード装置Nからノード装置N1に返送される到達保証ACKフレームの経路は、S2001、S2002,S2003という適切な経路が選ばれるようになる。このようにして、本実施形態による動的経路選択アルゴリズムに同期するようにして、到達保証ACKフレームの転送経路が決定されてゆく。この場合、到達保証ACKフレームは、経路上の各ノード装置が保持する到達保証転送記録テーブル115によって管理される。このため、無線品質の低下などによる経路上での到達保証ACKフレームの消失などに対して、各ノードが自律的に判断することによって、適切な再送制御を実施することが可能となる。
 図41Dは、本実施形態の効果の説明図(その4)である。
 この図も図41Cと同様である。トラックバックこそないが、最初は、到達保証データフレームは、S2101、S2102、S2103、S2104、S2105、S2106、S2107という非効率な経路をたどっていた。しかし、そのうちに適切な経路が選択されるようになり、到達保証ACKフレームの経路も、S2111、S2112、S2113、S2114というように効率的な経路が選択されるようになる。この場合も、到達保証転送記録テーブル115に常に最新のLSが記憶されるように制御される結果、無線品質の変動を吸収しながら、効率のよい再送制御を実現することが可能となる。
 なお、本実施形態の変形として、ローカルなACKと到達保証ACKとが組み合わせられて運用されてもよい。

Claims (8)

  1.  第1のノード装置が送信元として設定され、第2のノード装置が最終宛先として設定された、第1のデータを自装置に隣接する第1の隣接ノードから受信する受信手段と、
     前記第1の隣接ノード装置以外の自装置に隣接する第2の隣接ノード装置に、前記第1のデータを送信し、前記第1のデータを識別する第1のデータ識別情報と前記第1の隣接ノード装置を識別するノード識別情報を対応付けて記憶部に記憶し、前記受信手段により受信された、前記第1のデータ識別情報を含み、前記第2のノード装置が送信元として設定され、前記第1のノード装置が宛先として設定された第2のデータに基づき、前記記憶部に、前記第1のデータが前記第2のノード装置により受信済みであることを示す情報を記憶し、前記記憶部に前記第1のデータ識別情報に対応付けて記憶された前記ノード識別情報により識別される前記第1の隣接ノード装置に、前記第2のデータを転送する通信制御部と、
     を備えるノード装置。
  2.  前記通信制御部は、前記記憶部に、前記受信手段により受信された前記第1のデータが前記第1のデータの最終宛先として設定された前記第2のノード装置で受信済みであることを示す情報が記憶されているときに、前記第1のデータを送信せずに廃棄し、前記第1のデータに含まれるデータ識別情報に対応付けて記憶された前記ノード識別情報により識別される第1の隣接ノード装置に、前記第2のデータを送信する、
     ことを特徴とする請求項1に記載のノード装置。
  3.  前記通信制御部は、前記第1の隣接ノード装置の他に前記第1のデータを送信可能な自装置に隣接する隣接ノード装置がないときには、前記第1のデータを前記第1の隣接ノード装置へ返送する、
     ことを特徴とする請求項1または2に記載のデータ通信装置。
  4.  第1のノード装置が送信元として設定され、自ノード装置が最終宛先として設定された、第1のデータを自装置に隣接する第1の隣接ノードから受信する受信手段と、
     前記第1のデータを識別するデータ識別情報を含み、前記第1のノード装置を宛先として設定した第2のデータを前記第1の隣接ノードに送信する送信手段と、
     を備えるノード装置。
  5.  ノード装置が、
     第1のノード装置が送信元として設定され、第2のノード装置が最終宛先として設定された、第1のデータを、自装置に隣接する第1の隣接ノードから受信し、
     前記第1の隣接ノード装置以外の自装置に隣接する第2の隣接ノード装置に、前記第1のデータを送信し、
     前記第1のデータを識別する第1のデータ識別情報と前記第1の隣接ノード装置を識別するノード識別情報を対応付けて記憶し、
     前記第1のデータ識別情報を含み、前記第2のノード装置が送信元として設定され、前記第1のノード装置が宛先として設定された第2のデータを受信し、
     前記第2のデータに基づき、前記第1のデータが前記第2のノード装置により受信済みであることを示す情報を記憶し、
     前記第1のデータ識別情報に対応付けて記憶された前記ノード識別情報により識別される前記第1の隣接ノード装置に、前記第2のデータを転送する
     ことを特徴とするデータ通信方法。
  6.  前記第1のデータが前記第1のデータの最終宛先として設定された前記第2のノード装置で受信済みであることを示す情報が記憶されているときに、前記第1のデータを受信した場合、
      受信した前記第1のデータを送信せずに廃棄し、
      前記第1のデータに含まれるデータ識別情報に対応付けて記憶された前記ノード識別情報により識別される前記第1の隣接ノード装置に、前記第2のデータを送信する、
     ことを特徴とする請求項5に記載のデータ通信方法。
  7.  前記第1の隣接ノード装置の他に前記第1のデータを送信可能な自装置に隣接する隣接ノード装置がないときには、前記第1のデータを前記第1の隣接ノード装置へ返送する、
     ことを特徴とする請求項5に記載のデータ通信方法。
  8.  ノード装置が、
     第1のノード装置が送信元として設定され、自ノード装置が最終宛先として設定された、第1のデータを自装置に隣接する第1の隣接ノードから受信し、
     前記第1のデータを識別するデータ識別情報を含み、前記第1のノード装置を宛先として設定した第2のデータを前記第1の隣接ノードに送信する
     ことを特徴とするデータ通信方法。
PCT/JP2010/002401 2010-03-31 2010-03-31 データ通信装置および方法 WO2011121675A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/JP2010/002401 WO2011121675A1 (ja) 2010-03-31 2010-03-31 データ通信装置および方法
JP2012507918A JP5500246B2 (ja) 2010-03-31 2010-03-31 データ通信装置および方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/002401 WO2011121675A1 (ja) 2010-03-31 2010-03-31 データ通信装置および方法

Publications (1)

Publication Number Publication Date
WO2011121675A1 true WO2011121675A1 (ja) 2011-10-06

Family

ID=44711472

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/002401 WO2011121675A1 (ja) 2010-03-31 2010-03-31 データ通信装置および方法

Country Status (2)

Country Link
JP (1) JP5500246B2 (ja)
WO (1) WO2011121675A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5839136B1 (ja) * 2015-06-10 2016-01-06 株式会社アイピー・フロント 通信装置、通信システム、および通信方法
JP2021027473A (ja) * 2019-08-06 2021-02-22 矢崎総業株式会社 無線通信ノードおよび無線通信システム

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020065222A (ja) * 2018-10-19 2020-04-23 矢崎総業株式会社 通信システム、中継装置および通信方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006287331A (ja) * 2005-03-31 2006-10-19 Fujitsu Ltd 輻輳制御ネットワーク中継装置、および輻輳制御ネットワーク中継方法
JP2007208830A (ja) * 2006-02-03 2007-08-16 Matsushita Electric Ind Co Ltd 無線中継方法
JP2010114853A (ja) * 2008-11-10 2010-05-20 Futaba Corp 無線メッシュネットワークシステムおよびその制御方法ならびに無線装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000151708A (ja) * 1998-11-18 2000-05-30 Nec Corp 同報通信方法および同報通信装置
JP4927658B2 (ja) * 2007-07-31 2012-05-09 パナソニック株式会社 ルーチング方法及びノード装置
JP4888598B2 (ja) * 2008-04-25 2012-02-29 富士通株式会社 ノード装置及びプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006287331A (ja) * 2005-03-31 2006-10-19 Fujitsu Ltd 輻輳制御ネットワーク中継装置、および輻輳制御ネットワーク中継方法
JP2007208830A (ja) * 2006-02-03 2007-08-16 Matsushita Electric Ind Co Ltd 無線中継方法
JP2010114853A (ja) * 2008-11-10 2010-05-20 Futaba Corp 無線メッシュネットワークシステムおよびその制御方法ならびに無線装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5839136B1 (ja) * 2015-06-10 2016-01-06 株式会社アイピー・フロント 通信装置、通信システム、および通信方法
JP2021027473A (ja) * 2019-08-06 2021-02-22 矢崎総業株式会社 無線通信ノードおよび無線通信システム
JP7287859B2 (ja) 2019-08-06 2023-06-06 矢崎総業株式会社 無線通信ノードおよび無線通信システム

Also Published As

Publication number Publication date
JP5500246B2 (ja) 2014-05-21
JPWO2011121675A1 (ja) 2013-07-04

Similar Documents

Publication Publication Date Title
JP4820464B2 (ja) ノード装置、記憶媒体およびフレーム送信方法
JP5408337B2 (ja) ノード装置および迂回経路調査方法
JP4807701B2 (ja) 移動端末装置、制御方法及び移動通信システム
JP5500246B2 (ja) データ通信装置および方法
JP2013005043A (ja) アドホックネットワークシステム
Godha et al. Architecture, an efficient routing, applications, and challenges in delay tolerant network
JP4276207B2 (ja) データリンク伝送制御方法、移動通信システム、及び基地局
JP4344341B2 (ja) データリンク伝送制御方法、移動通信システム及びデータリンク伝送制御装置
JP5287759B2 (ja) ネットワークシステム及び経路検索方法
JP5477462B2 (ja) ノード装置およびデータ送信方法
KR20140142138A (ko) 무선 네트워크에서 멀티캐스트 그룹을 관리하는 장치 및 방법
KR20190097979A (ko) 이동 애드 혹 네트워크 및 지연 감내 네트워크에서 메시지 전달 방법 및 그 시스템
Meghanathan A MANET multicast routing protocol for stable trees based on the inverse of Link Expiration Times
WO2014141439A1 (ja) 無線通信装置及び無線マルチホップネットワークシステム
Jamal et al. Disaster Management through Delay Tolerant Networks
JP5851338B2 (ja) 端末装置
KR101209888B1 (ko) 이동 애드호크 네트워크에서의 경로 복구 시스템 및 방법
Bennis et al. Enhanced AntNet protocol for wireless multimedia sensor networks
JP4687292B2 (ja) 通信装置及びネットワーク内で不要な無線リンクの切断方法
KR101784902B1 (ko) Pdp/pdn 콘텍스트 활성화 방법, 장치 및 시스템
KR20090069960A (ko) 애드 혹 네트워크에서 효율적인 경로 복구를 위한 통신시스템 및 통신 방법
KR20190049599A (ko) 트리 토폴로지를 사용하는 분산망에서 인접한 노드 전송을 통한 전송 신뢰성 향상 방법 및 장치
Kumaran Geographic information based Replication and Drop Routing (GeoRaDR): A Hybrid Message Transmission Approach for DTNs
CN107612828A (zh) 一种dsr路由协议的改进方法
SE A Temporary Path Recovery Mechanism to recover the Midway Link-Failure in Ad-hoc network

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

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2012507918

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 10848857

Country of ref document: EP

Kind code of ref document: A1