Information processing program, information processing method, and information processing device
By duplicating data link layer frames and transmitting them over two independent paths, the system addresses the challenge of high real-time and reliable communication in process control systems, ensuring minimal interruption times and reduced CPU load, thus enhancing communication reliability and availability.
Patent Information
- Application Number
- JP2023113851
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2023-07-11
- Publication Date
- 2025-01-24
- Estimated Expiration
- 2043-07-11
AI Technical Summary
Conventional control systems fail to meet the requirements of high real-time communication with high reliability and availability necessary for process control, particularly in industrial settings, due to inefficiencies in communication interruption times and route switching processes.
The system duplicates data link layer frames and transmits them over two physically independent communication paths, utilizing a dual-route output mechanism to ensure high reliability and availability, minimizing communication interruption times by eliminating the need for route switching and state recovery processes.
This approach enables high real-time communication with highly reliable and available communication for process control, reducing communication path switching time to zero and minimizing CPU load on receiving nodes, while supporting various communication protocols, including those without duplicate detection functions.
Smart Images

Figure 2025011627000001_ABST
Abstract
Description
[Technical field]
[0001] The present invention relates to an information processing program, an information processing method, and an information processing device. [Background technology]
[0002] Process control systems such as DCS (Distributed Control System), which is equipment for running plants and factories, are systems in which a controller collects various state quantities of the industrial process (e.g., pressure, temperature, flow rate, etc.) from sensors (such as thermometers and flow meters) at regular intervals (e.g., one second intervals), executes control logic created by the user, and operates actuators (such as valves) based on the results, thereby automatically operating the plant or factory.
[0003] When the control logic executed by such a control system runs on multiple controllers, it is executed in cooperation with the controllers through communication between them. The periodic control processing by the control logic is realized by communication between the controllers and input / output devices such as sensors and actuators, called C2D communication, or communication between multiple controllers, called C2C communication.
[0004] Since such periodic control processing is required to continue stably for a long period of time, the control system is required to have both high availability and high real-time performance. Therefore, the control communication called and executed from the periodic control processing is also required to have not only high reliability but also high availability and high real-time communication.
[0005] Here, highly reliable communication is, for example, communication in which transmitted data is not lost, the data arrives reliably and accurately to the communication partner in the order of transmission, and without data bit garbling. Highly available communication is, for example, communication in which two physically independent communication paths are prepared in advance, and if a communication abnormality occurs along the current path, such as a single failure such as a failure of a NIC or relay device or a disconnection of a communication cable, the control system uses an alternative path to restore communication. Highly real-time communication is, for example, communication in which data exchange with the communication partner is completed within a required time.
[0006] The devices controlled by the control system are not limited to DCS, but also include SCADA (Supervisory Control And Data Acquisition) and PLC (Programmable Logic Controller), for example, devices with their own controllers (rotating machines, etc.) and devices such as barcode readers and weighing machines in the batch plant area. Devices controlled by the control system can also be applied to computer network systems such as PCs (Personal Computers) and general-purpose embedded devices, and systems that require high-speed switching.
[0007] Furthermore, the plants and factories are examples of various plants and factories that use petroleum, petrochemicals, chemicals, gas, etc., and include plants and factories equipped with various facilities for obtaining products. Furthermore, products include, for example, LNG (Liquefied Natural Gas), resins (plastics, nylon, etc.), chemical products, etc. Furthermore, facilities include, for example, factory facilities, machine facilities, production facilities, power generation facilities, storage facilities, and facilities at wellheads where petroleum, natural gas, etc. are extracted. [Prior art documents] [Non-patent literature]
[0008] [Non-Patent Document 1] Koji Demachi and 3 others, "Real-time Plant Network System Vnet / IP", Yokogawa Technical Report, Vol. 49, No. 2, 2005 Summary of the Invention [Problem to be solved by the invention]
[0009] However, in high-real-time communication, it is required that the communication interruption time from the occurrence of a communication abnormality to the recovery of communication be within a control scan period (e.g., 1 second), but conventional control methods cannot be said to adequately meet the requirements for high-real-time communication.
[0010] An object of the present invention is to provide highly reliable and available process control communications while providing highly real-time communications. [Means for solving the problem]
[0011] An information processing program according to one aspect causes an information processing device to execute a process of duplicating a transmission frame of a data link layer to generate a first transmission frame and a second transmission frame, transmitting the first transmission frame to a first NIC (Network Interface Card), transmitting the second transmission frame to a second NIC, transmitting the first transmission frame in the first NIC to a network, and transmitting the second transmission frame in the second NIC to the network, in response to receiving a request to transmit data for process control.
[0012] In one aspect of the information processing method, in response to receiving a request to send data for process control, an information processing device executes a process of duplicating a transmission frame of a data link layer to generate a first transmission frame and a second transmission frame, transmitting the first transmission frame to a first NIC, transmitting the second transmission frame to a second NIC, transmitting the first transmission frame in the first NIC to a network, and transmitting the second transmission frame in the second NIC to the network.
[0013] According to one aspect, an information processing device includes a dual output unit that, in response to receiving a request to transmit data for process control, replicates a transmission frame of a data link layer to generate a first transmission frame and a second transmission frame, transmits the first transmission frame to a first NIC, transmits the second transmission frame to a second NIC, transmits the first transmission frame in the first NIC to a network, and transmits the second transmission frame in the second NIC to the network. Effect of the Invention
[0014] According to one embodiment, highly real-time communication can be achieved while ensuring reliable and highly available communication for process control communications. [Brief description of the drawings]
[0015] [Figure 1] FIG. 1 is a diagram illustrating an example of the configuration of a control system according to a conventional technique. [Diagram 2] FIG. 1 is a diagram showing an example of the configuration of an information processing device 10 according to a conventional technique. [Diagram 3] FIG. 2 is a diagram showing an example of highly reliable communication information 50. [Figure 4] FIG. 2 is a diagram illustrating an example of a format of a transport layer packet. [Diagram 5] FIG. 2 is a diagram illustrating an example of a format of a data link layer frame. [Figure 6] 13 is a flowchart showing the flow of a delivery confirmation process performed by a delivery confirmation transmitting unit 26. [Figure 7] 13 is a flowchart showing the flow of a delivery confirmation process by a delivery confirmation receiving unit 27. [Figure 8] 13 is a flowchart showing the flow of a confirmation response receiving process performed by a delivery confirmation receiving unit 27. [Figure 9] FIG. 1 is a diagram showing an example of the configuration of a control system according to the present invention. [Figure 10] FIG. 1 is a diagram showing an example of the configuration of an information processing device 10 according to the present invention. [Figure 11] 13 is a flowchart showing a flow of a both-path output process by a both-path output unit 45. [Figure 12] FIG. 1 is a diagram showing an example of the configuration of an information processing device 10 of an applied invention. [Figure 13] FIG. 2 is a diagram showing an example of route redundancy information 51. [Figure 14] 13 is a flowchart showing the flow of a simplified sequence number issuing process performed by a simplified sequence number issuing unit 46. [Figure 15] 13 is a flowchart showing the flow of simple duplication detection processing by simple duplication detection unit 47. [Figure 16] 1 is a diagram illustrating an example of a hardware configuration of an information processing device 10 according to an embodiment of the present invention. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0016] Hereinafter, examples of the information processing program, information processing method, and information processing device disclosed in the present application will be described in detail with reference to the drawings. Note that the present invention is not limited to these examples. In addition, the same elements are given the same reference numerals, duplicated descriptions are omitted as appropriate, and each embodiment can be appropriately combined within a range that does not cause inconsistency.
[0017] This embodiment is intended to solve the problems of the process control system of the prior art. Therefore, this embodiment may be configured based on the configuration of the control system of the prior art. Therefore, first, the control system of the prior art will be described.
[0018] (Configuration of a control system of the prior art) Fig. 1 is a diagram showing an example of the configuration of a control system of the prior art. As shown in Fig. 1, the control system of the prior art is a system in which a communication node 1 and a communication node 2 are connected to each other so as to be able to communicate with each other via a network interface card (NIC) and a layer 2 switch (L2SW). The NIC is, for example, a communication unit that controls communication with other devices or equipment and transmits and receives data from a network cable, and is a communication interface such as a network interface card. The L2SW is, for example, a network device that has a data transfer capability and a bridge function at the data link layer of the OSI (Open System Interconnection) reference model.
[0019] Moreover, the network between the communication node 1 and the communication node 2 may be a wired or wireless network, and may be, for example, any of various communication networks such as an intranet or the Internet. Moreover, the network may not be a single network, but may be configured such that, for example, an intranet and the Internet are connected via a network device such as a gateway or other device (not shown).
[0020] The communication node 1 and the communication node 2 are, for example, components of a control system, such as a controller or an input / output device. Hereinafter, the communication node 1 and the communication node 2 may be collectively referred to as an "information processing device 10." The information processing device 10 may be, for example, an information processing device such as a desktop PC or a notebook PC or a server computer managed by an administrator of a plant or a factory. Alternatively, the information processing device 10 may be, for example, a cloud computer device managed by a service provider that provides a cloud computing service.
[0021] 1, each of the communication nodes 1 and 2 includes, for example, an application. The application is, for example, a control processing unit that performs control communication with other devices or equipment.
[0022] (Functional configuration of information processing device 10 of the prior art) Next, the functional configuration of the information processing device 10 that is the executing subject of the conventional technology will be described. Fig. 2 is a diagram showing an example of the configuration of the information processing device 10 of the conventional technology. As shown in Fig. 2, the information processing device 10 includes, for example, a CPU module 20 that is a control unit, and a NIC 40 that is a communication unit. The information processing device 10 also includes a storage unit that has a function of storing various data such as highly reliable communication information 50 and various programs, and that realizes the function using a storage device such as a memory or a hard disk.
[0023] First, a description will be given of each processing unit of the information processing device 10 on the data transmission side, that is, the communication node 1. The control processing unit 21 of the CPU module 20 is, for example, an application that executes control processing, and issues a transmission request to the CPU transmission unit 22 to execute control processing for C2C communication and C2D communication.
[0024] The CPU transmitting unit 22 includes, for example, a highly reliable communication transmitting unit 24, a network layer transmitting unit 34, and a data link layer transmitting unit 36, and performs highly reliable communication upon receiving a transmission request from the control processing unit 21. Note that highly reliable communication refers to, for example, communication processing in which the reliability of communication data is high. Highly reliable communication includes, for example, communication data delivery confirmation processing, flow control processing, error detection processing, and the like. An example of a communication protocol that realizes highly reliable communication is TCP (Transmission Control Protocol).
[0025] Here, the delivery confirmation process, flow control process, and error detection process will be described in more detail. The delivery confirmation process is, for example, a process in which a transmitting node performs delivery confirmation to ensure that transmitted data is delivered to a receiving node, and if delivery confirmation is not received within a certain period of time, the data is resent. Delivery confirmation is also a process in which a receiving node returns an acknowledgment response to the received data to the transmitting node, and is realized, for example, by TCP.
[0026] Flow control processing is, for example, processing in which a transmitting node adjusts the amount of packet transmission according to the receiving node's receiving processing capability in order to prevent the receiving node from failing to receive transmitted data, and is realized by, for example, TCP.
[0027] The error detection process is, for example, a process to check whether the receiving node has received corrupted data with bit errors. For example, there is a CRC (Cyclic Redundancy Check) that detects errors in Ethernet (registered trademark) frames in the data link layer of the OSI reference model, and a checksum that detects header errors in IP in the network layer and TCP in the transport layer. The CRC value of Ethernet is added to the end of the frame called FCS (Frame Check Sequence), and the checksum value of IP and TCP is added to the header. The CRC value and the checksum value are both calculated according to the respective algorithms at the sending node, the result is added to the header, and compared with the result recalculated at the receiving node. If they match, the data is not corrupted, and if they do not match, the data is determined to be corrupted. Therefore, when the amount of communication data is large, the processing load of the CPU module becomes high.
[0028] The reliable communication transmitter 24 has a role of, for example, a layer above the transport layer to the application layer in the OSI reference model. The reliable communication transmitter 24 includes, for example, a delivery confirmation transmitter 26, a flow control transmitter 30, and an error detection transmitter 32, and functions equivalent to these functions are implemented in the TCP of the transport layer.
[0029] The transmission confirmation sending unit 26 includes, for example, a sequence number issuing unit 28, and when transmitting data, it calls the sequence number issuing unit 28 and processes the data before transmitting the data. For example, the sequence number issuing unit 28 assigns a transmission sequence number managed and stored in the highly reliable communication information 50 to a packet header in order to uniquely identify the transmission data, and updates the transmission sequence number stored in the highly reliable communication information 50 for the next data transmission. In addition, the transmission confirmation sending unit 26 retransmits data when it does not receive an acknowledgement for the transmission data within a certain period of time from the transmission confirmation receiving unit 27 on the data receiving side. Note that when an acknowledgement is transmitted, for example, an acknowledgement number stored in the highly reliable communication information 50 is assigned to the packet header and the acknowledgement is transmitted.
[0030] Here, the highly reliable communication information 50 will be described in more detail. The highly reliable communication information 50 is, for example, stored in a storage unit of the information processing device 10, and is information that the CPU transmission unit 22 and the CPU reception unit 23 refer to and update each other. Fig. 3 is a diagram showing an example of the highly reliable communication information 50. As shown in Fig. 3, the highly reliable communication information 50 stores, for example, information such as a communication flow ID, a sequence number, a timeout period of a retransmission timer, an acknowledgement number, an available receive buffer size, and an available receive buffer size on the other side, in association with each other, as management information for each communication flow.
[0031] The communication flow ID of the management information for each communication flow is, for example, an identifier for identifying the communication flow of the control communication. More specifically, in the case of TCP / IP, for example, as shown in Fig. 3, it is the IP addresses and TCP port numbers of the communication source and destination. These make it possible to uniquely identify the communication flow.
[0032] The sequence number of the management information for each communication flow is, for example, a sequence number indicating the data to be transmitted next by the transmission confirmation transmission unit 26, and indicates the position of the transmitted data in the entire transmission data. FIG. 4 is a diagram showing an example of a format of a transport layer packet. As shown in FIG. 4, the sequence number is, for example, given to the header portion of the transport layer packet. In addition, in the case of TCP, the transmission confirmation transmission unit 26 adds 1 (+1) to the sequence number for each byte of data each time data is transmitted, and thus the sequence number is updated by adding the transmission data size when data is transmitted. In addition, the initial value of the sequence number is notified to the communication partner, for example, when a TCP connection is established.
[0033] The timeout time of the retransmission timer of the management information for each communication flow is, for example, a waiting time from when a packet is transmitted until the packet is retransmitted. When the timeout time of the retransmission timer elapses and a timeout occurs, for example, the delivery confirmation sending unit 26 retransmits the packet, and cancels the retransmission timer if an acknowledgment response is received before the timeout. Furthermore, in the case of TCP, for example, the delivery confirmation sending unit 26 increases the timeout value of the retransmission timer at the time of retransmission. Furthermore, the delivery confirmation sending unit 26 forcibly disconnects communication if no acknowledgment response is received even after repeating retransmission a specific number of times, for example.
[0034] The acknowledgment number of the management information for each communication flow is, for example, a number indicating data that has already been received by the delivery acknowledgment receiver 27 on the data receiving side. For example, the sequence number of the transmission data to be received next is used as the acknowledgment number in order to indicate up to which position in the entire transmission data the data has been received. The sequence number is added, for example, to the header of a transport layer packet as shown in FIG. 4. For example, when receiving a packet, if the transmission sequence number of the reception header is equal to or greater than the acknowledgment number stored in the highly reliable communication information 50, the delivery acknowledgment receiver 27 determines that the received data is new and transmits a transmission request for an acknowledgment packet to the delivery acknowledgment transmitter 26 on the data transmitting side, thereby updating the acknowledgment number.
[0035] The free receive buffer size and the free receive buffer size of the other party in the management information for each communication flow are, for example, the amount of data that can be sent at one time without waiting for an acknowledgment response. In the case of TCP, this is called the window size.
[0036] As shown in FIG. 3, the highly reliable communication information 50 stores, as retransmission packet information, information such as a retransmission timer ID and a retransmission packet in association with each other.
[0037] The retransmission timer ID of the retransmission packet information is, for example, an identifier for identifying which retransmission packet is to be retransmitted when a retransmission timeout occurs.
[0038] The retransmission packet in the retransmission packet information is information about a packet that is extracted by the delivery confirmation transmitting unit 26 upon a retransmission timeout, for example, and is to be retransmitted, and includes the packet storage address and packet size.
[0039] 2, the flow control transmitter 30 transmits a packet when there is free space in the other party's free receive buffer, and waits until there is free space when there is no free space in the other party's free receive buffer. Also, when transmitting a packet, the flow control transmitter 30 subtracts the size of the other party's free receive buffer in the highly reliable communication information 50 by the size of the transmission data, and adds the size of its own free receive buffer in the highly reliable communication information 50 to the transmission packet header.
[0040] The error detection transmission unit 32 calculates the result of error detection for the packet according to, for example, an existing algorithm, and adds it to the header.
[0041] The network layer transmission unit 34 has a role of, for example, the network layer in the OSI reference model.
[0042] The data link layer transmitter 36 has a role of, for example, the data link layer in the OSI reference model. The data link layer transmitter 36 is divided into a data link layer transmitter (1) 38 and a data link layer transmitter (2) 41 for the CPU module 20 and the NIC 40, respectively.
[0043] The data link layer transmitter (1) 38 has a role of, for example, an upper layer, specifically, a role of an LLC (Logical Link Control) sublayer or the like.
[0044] The data link layer transmitting unit (2) 41 has a role of, for example, a lower layer of the data link layer, such as a MAC (Media Access Control) sublayer. The data link layer transmitting unit (2) 41 calculates a result for error detection of the data link layer frame according to, for example, an existing algorithm, and adds the result to the FCS field of the data link layer frame. The data link layer frame is, for example, an Ethernet frame. FIG. 5 is a diagram showing an example of a format of the data link layer frame. The calculation result for error detection of the data link layer frame is, for example, added to the FCS field shown in FIG. 5. The data link layer transmitting unit (2) 41 also transmits the data link layer frame to, for example, the information processing device 10 on the data receiving side, i.e., the communication node 2.
[0045] Returning to the explanation of Fig. 2, next, each processing unit of the information processing device 10 on the data receiving side, i.e., the communication node 2 will be explained. The processing units will be explained in order according to the data flow, starting from the upper layer when transmitting data and starting from the lower layer when receiving data. The CPU receiving unit 23 includes, for example, a highly reliable communication receiving unit 25, a network layer receiving unit 35, and a data link layer receiving unit 37, and receives data transmitted from the communication node 1 and performs highly reliable communication processing.
[0046] The highly reliable communication receiver 25 has a role of, for example, a layer above the transport layer to the application layer in the OSI reference model. The highly reliable communication receiver 25 includes, for example, a delivery confirmation receiver 27, a flow control receiver 31, and an error detection receiver 33, and functions equivalent to these functions are implemented in the TCP of the transport layer.
[0047] The delivery confirmation receiving unit 27 includes, for example, a duplication detecting unit 29, and when receiving data, it calls the duplication detecting unit 29 and processes the data before receiving the data. The duplication detecting unit 29 performs duplication detection by, for example, comparing the sequence number of the packet header with the acknowledgment number of the highly reliable communication information 50, and receives the received packet if it is data that has not been received, and discards the received packet if it is data that has already been received. When receiving a received packet, for example, the delivery confirmation receiving unit 27 passes a transmission request of an acknowledgment response to the received data to the delivery confirmation transmitting unit 26 of the data transmitting side. When receiving an acknowledgment response from the delivery confirmation transmitting unit 26 of the data transmitting side, for example, the delivery confirmation receiving unit 27 cancels the retransmission timer and deletes the entry of the highly reliable communication information 50 that is the target of the retransmission packet.
[0048] The flow control receiving unit 31 updates, for example, the highly reliable communication information 50 used by the flow control transmitting unit 30. The highly reliable communication information 50 is decremented by the received data size, and the remote side free receive buffer size of the highly reliable communication information 50 is updated to the value of the free receive buffer size in the received packet header.
[0049] The error detection receiver 33 compares, for example, the result of the header calculation calculated and added by the error detection transmitter 32 on the data sending side with the result recalculated by the error detection receiver 33, and if the results match, it determines that the data is not corrupted, and if they do not match, it determines that the data is corrupted. For example, in the case of TCP, errors in the packet header are detected using a checksum.
[0050] The network layer receiver 35 has a role of, for example, the network layer in the OSI reference model. The network layer receiver 35 performs error detection of the datagram in the same manner as the error detection of the error detection receiver 33. For example, in the case of IP, an error in the IP datagram header is detected using a checksum.
[0051] The data link layer receiver 37 has a role of, for example, the data link layer in the OSI reference model. The data link layer receiver 37 is divided into a data link layer receiver (1) 39 and a data link layer receiver (2) 42 for the CPU module 20 and the NIC 40, respectively.
[0052] The data link layer receiver (1) 39 has a role of, for example, an upper layer, specifically, a role of an LLC (Logical Link Control) sublayer or the like.
[0053] The data link layer receiver (2) 42 has a role of, for example, a lower layer of the data link layer, such as a MAC (Media Access Control) sublayer. The data link layer receiver (2) 42 compares, for example, the calculation result of the FCS field of the data link layer frame calculated and added by the data link layer transmitter (2) 41 with the result recalculated by the data link layer receiver (2) 42, and determines that the data is not corrupted if the results match, and that the data is corrupted if they do not match. Note that, for example, if the data link layer frame is an Ethernet frame, an error in the packet header is detected using CRC.
[0054] Next, a description will be given of the exchange between the processing units shown in Fig. 2. First, the control processing unit 21 passes a data transmission request to the transmission confirmation unit 26, for example, at regular intervals.
[0055] Next, when receiving a transmission request from the control processing unit 21, the delivery confirmation transmitting unit 26 executes, for example, a delivery confirmation process. Fig. 6 is a flowchart showing the flow of the delivery confirmation process by the delivery confirmation transmitting unit 26. The delivery confirmation process shown in Fig. 6 will be described.
[0056] First, the delivery confirmation transmitting unit 26 determines, for example, whether or not there is an end request (step S101). If there is an end request (step S101: Yes), the delivery confirmation process shown in FIG.
[0057] On the other hand, if there is no end request (step S101: No), the delivery confirmation transmitter 26 waits for a transmission request from, for example, the control processor 21 or the delivery confirmation receiver 27 on the data receiving side (step S102).
[0058] When a transmission request is received, the delivery confirmation transmitter 26 judges whether the transmission request is, for example, a request from the control processor 21 (step S103). If the transmission request is not a request from the control processor 21, that is, if the transmission request is a request from the delivery confirmation receiver 27 on the data receiving side (step S103: No), the request is a request to transmit an acknowledgment response to the received data, so the acknowledgment response number of the highly reliable communication information 50 is set in the header of the transmission packet (step S111), and the process proceeds to step S110.
[0059] On the other hand, if the transmission request is a request from the control processing unit 21 (step S103: Yes), the delivery confirmation transmitting unit 26 stores the transmission data received from the control processing unit 21 in a transmission packet (step S104).
[0060] Next, the delivery confirmation sending unit 26 calls, for example, the sequence number issuing unit 28, and the sequence number issuing unit 28 assigns the sequence number of the reliable communication information 50 to the transmission packet header (step S105).
[0061] Next, the sequence number issuing unit 28 advances the sequence number by, for example, the transmission data size, and stores the sequence number in the highly reliable communication information 50 (step S106).
[0062] Next, the delivery confirmation sending unit 26 generates, for example, a retransmission timer (step S107).
[0063] Next, the delivery confirmation transmitter 26 stores, for example, the retransmission timer ID and the retransmission packet in the reliable communication information 50 (step S108).
[0064] Next, the delivery confirmation sending unit 26 starts, for example, a retransmission timer (step S109).
[0065] Next, the delivery confirmation sending unit 26 passes the transmission packet to the flow control sending unit 30 (step S110), for example. If the timeout time of the retransmission timer has elapsed since the transmission of the transmission packet and a timeout occurs, the delivery confirmation sending unit 26 extracts, for example, a retransmission packet associated with the timed-out retransmission timer ID from the highly reliable communication information 50 (step S112). Then, the delivery confirmation sending unit 26 recalculates, for example, the timeout time of the retransmission timer and stores it in the highly reliable communication information 50 (step S113), and starts the retransmission timer (step S109).
[0066] Next, when the flow control transmitter 30 receives a transmission request from the delivery confirmation transmitter 26, it performs flow control processing such as checking the free receive buffer on the other side and adding the free receive buffer size to the transmission packet header, as described above, and passes the transmission packet to the error detection transmitter 32.
[0067] Next, when the error detection transmitter 32 receives a transmission request from the flow control transmitter 30, it performs error detection processing, such as adding the calculation result for error detection to the transmission packet header as described above, and passes the transmission packet to the network layer transmitter 34.
[0068] Next, when the network layer transmitting unit 34 receives a transmission request from the error detection transmitting unit 32, it performs, for example, network layer processing and passes the transmission datagram to the data link layer transmitting unit (1) 38.
[0069] Next, when the data link layer transmitter (1) 38 receives a transmission request from the network layer transmitter 34, it performs, for example, data link layer processing in the CPU module 20 and passes the data link layer frame, which is the transmission frame, to the data link layer transmitter (2) 41.
[0070] Next, when the data link layer transmitter (2) 41 receives a transmission request from the data link layer transmitter (1) 38, it performs, for example, data link layer processing in the NIC 40 and transmits the transmission frame to the network via the physical layer.
[0071] Next, when the data link layer receiver (2) 42 receives a data reception request from the network via the physical layer, it performs data link layer processing in the NIC 40, for example, and passes the received data link layer frame to the data link layer receiver (1) 39.
[0072] Next, when the data link layer receiver (1) 39 receives a receive request from the data link layer receiver (2) 42, it performs data link layer processing, for example, in the CPU module 20 and passes the data portion of the data link layer frame excluding the header to the network layer receiver 35.
[0073] Next, when the network layer receiving unit 35 receives a receiving request from the data link layer receiving unit (1) 39, it performs network layer processing, such as error detection of the network layer datagram, and passes the data portion of the network layer datagram excluding the header to the error detection receiving unit 33.
[0074] Next, when the error detection receiver 33 receives a receive request from the network layer receiver 35, it performs error detection processing by, for example, comparing the calculation result added to the header of the received packet with the recalculated result, as described above, and passes the received packet to the flow control receiver 31.
[0075] Next, when the flow control receiver 31 receives a receive request from the error detection receiver 33, it performs flow control processing such as updating the highly reliable communication information 50 as described above, and if the received packet contains received data, it passes the received packet to the delivery confirmation receiver 27.
[0076] Next, when the delivery confirmation receiving unit 27 receives a reception request from the flow control receiving unit 31, it executes, for example, a delivery confirmation process. Fig. 7 is a flowchart showing the flow of the delivery confirmation process by the delivery confirmation receiving unit 27. The delivery confirmation process shown in Fig. 7 will be described.
[0077] First, the delivery confirmation receiving unit 27 determines, for example, whether or not there is an end request (step S201). If there is an end request (step S201: Yes), the delivery confirmation process shown in FIG.
[0078] On the other hand, if there is no end request (step S201: No), the delivery confirmation receiver 27 waits for a reception request from, for example, the flow control receiver 31 (step S202).
[0079] When the reception request is received, the delivery confirmation receiving unit 27 extracts, for example, a received packet (step S203).
[0080] Next, the delivery confirmation receiving unit 27 determines, for example, whether or not an acknowledgment number is included in the header of the extracted received packet (step S204). If an acknowledgment number is not included (step S204: No), the process proceeds to step S206.
[0081] On the other hand, if the confirmation response number is included (step S204: Yes), the delivery confirmation receiving unit 27 executes, for example, a confirmation response receiving process (step S205). The confirmation response receiving process will be described in more detail with reference to FIG.
[0082] 8 is a flowchart showing a flow of an acknowledgment reception process by the delivery confirmation reception unit 27. First, the delivery confirmation reception unit 27 extracts, one by one, pieces of acknowledgment-waiting packet information from retransmission packet information as shown in FIG.
[0083] Next, the delivery confirmation receiving unit 27 determines whether or not the acknowledgement number in the header of the received packet is greater than the acknowledgement number stored in the highly reliable communication information 50 (step S302). If the acknowledgement number in the header is equal to or less than the acknowledgement number stored in the highly reliable communication information 50 (step S302: No), the process returns to step S301, and the delivery confirmation receiving unit 27 extracts, for example, the next packet information waiting for acknowledgement.
[0084] On the other hand, if the acknowledgment response number in the header is greater than the acknowledgment response number stored in the highly reliable communication information 50 (step S302: Yes), the delivery confirmation receiver 27, for example, extracts a retransmission timer ID corresponding to the packet waiting for an acknowledgment response from the retransmission packet information, and deletes the entry that is the target of the retransmission packet in the retransmission packet information (step S303).
[0085] Next, the delivery confirmation receiving unit 27, for example, cancels the timer of the extracted retransmission timer ID (step S304).
[0086] Next, the delivery confirmation receiving unit 27 judges whether or not all packets waiting for acknowledgment in the retransmission packet information have been checked (step S305). If there are packets waiting for acknowledgment that have not been checked (step S305: No), the delivery confirmation receiving unit 27 returns to step S301 and extracts, for example, the next packet information waiting for acknowledgment.
[0087] On the other hand, if all packets waiting for an acknowledgment response have been checked (step S305: Yes), the reception process shown in FIG. 8 ends, and the process proceeds to step S206 of the delivery confirmation process shown in FIG.
[0088] Next, the delivery confirmation receiving unit 27 determines whether or not the received packet contains data (step S206). If the received packet does not contain data (step S206: No), the process returns to step S201, and the delivery confirmation receiving unit 27 waits for a receiving request from the flow control receiving unit 31, for example, until there is an end request.
[0089] On the other hand, if the received packet contains data (step S206: Yes), the delivery confirmation receiving unit 27, for example, calls the duplication detection unit 29, and the duplication detection unit 29 determines whether the sequence number of the header of the received packet is equal to or greater than the confirmation response number of the highly reliable communication information 50 (step S207).
[0090] If the sequence number of the header is less than the acknowledgement number of the highly reliable communication information 50 (step S207: No), the received data in question is data that has already been received, so the duplication detection unit 29, for example, discards the received data (step S208) and returns to step S201.
[0091] On the other hand, if the sequence number of the header is equal to or greater than the acknowledgment number of the highly reliable communication information 50 (step S207: Yes), the delivery confirmation receiving unit 27, for example, determines whether or not the sequence number of the header of the received packet is equal to the acknowledgment number of the highly reliable communication information 50 (step S209). If the sequence number of the header is not equal to the acknowledgment number of the highly reliable communication information 50 (step S209: No), the data reception order is different from the transmission order, so the delivery confirmation receiving unit 27, for example, discards the received data (step S210) and returns to step S201.
[0092] On the other hand, if the sequence number of the header is equal to the acknowledgment number of the reliable communication information 50 (step S209: Yes), the delivery confirmation receiver 27 subtracts the data offset (header length) from the packet size to calculate the data size (step S211).
[0093] Next, the delivery confirmation receiving unit 27 updates, for example, the confirmation response number of the highly reliable communication information 50 to a value obtained by adding the calculated data size to the sequence number of the header (step S212).
[0094] Next, the delivery confirmation receiving unit 27 requests, for example, the delivery confirmation transmitting unit 26 on the data transmitting side to transmit an acknowledgement response to the received data (step S213).
[0095] Next, the delivery confirmation receiving unit 27 passes, for example, the data of the received packet to the control processing unit 21 (step S214), and the process returns to step S201.
[0096] The above describes a control system of the prior art. However, since periodic control processing is required to continue stably for a long period of time, the control system is required to have both highly available communication and high real-time communication in addition to highly reliable communication.
[0097] High-availability communication requires, for example, two physically independent communication paths to be prepared in advance, so that if a communication abnormality such as a single failure occurs on the current path, the control system itself is able to restore communications using the alternative path.
[0098] In addition, in high real-time communication, for example, it is required that the communication interruption time from the occurrence of a communication abnormality to the recovery of communication is within a control scan period (for example, 1 second). Here, the communication interruption time is, for example, the sum of three processing times: the time to detect the communication abnormality, the time to switch the communication path, and the time to restore the communication state, and it is required that these times be minimized. The time to detect the communication abnormality is, for example, the time from the occurrence of the communication abnormality to the time to detect the communication abnormality by a communication diagnosis performed at regular intervals. Furthermore, the time to switch the communication path is, for example, the time to stop using the path where the abnormality occurred and change to using an alternative path. Furthermore, the time to restore the communication state is, for example, the time required to return to the communication state immediately before the occurrence of the abnormality and continue the communication.
[0099] Therefore, one of the objectives of this embodiment is to perform high-real-time communication while ensuring highly reliable and highly available communication for process control communication. Note that this embodiment will be described below as a basic invention and an applied invention. The basic invention solves the problems of the conventional technology, and the applied invention solves the problems of the basic invention in addition to the conventional technology.
[0100] (Configuration of the control system of the basic invention) FIG. 9 is a diagram showing an example of the configuration of the control system of the basic invention. As shown in FIG. 9, the control system of the basic invention further has a physically independent communication path indicated by a thick frame in addition to the communication path of the control system of the conventional technology shown in FIG. 1. In the control system of the basic invention, in order to realize highly available communication, the communication node 1, which is a sending node, copies the transmission data and transmits each data to the communication node 2, which is a receiving node, via each of two physically independent communication paths (hereinafter, sometimes collectively referred to as "both paths") as shown in FIG. 9. As a result, compared with the control system of the conventional technology that transmits data only through a single communication path, there is no need for periodic diagnosis of the path, detection of communication anomalies, path switching, and communication state recovery processing, so that the switching time of the communication path is almost zero and the communication interruption time can be minimized. In other words, it is possible to perform highly real-time communication while ensuring highly reliable and highly available communication for process control communication.
[0101] (Functional configuration of information processing device 10 according to the basic invention) Next, the functional configuration of the information processing device 10 which is the execution subject of the basic invention will be described. FIG. 10 is a diagram showing an example of the configuration of the information processing device 10 of the basic invention. The information processing device 10 of the basic invention, for example, copies a data link layer frame and transmits it to both paths. Therefore, the information processing device 10 of the basic invention has physically independent communication paths compared to the information processing device 10 of the conventional art shown in FIG. 2, and is provided with a plurality of NICs 40-1 and 40-2, a plurality of data link layer transmission units (2) 41-1 and 41-2, and a plurality of data link layer reception units (2) 42-1 and 42-2 for each communication path. Furthermore, in order to transmit the same data link layer frame from both paths, the information processing device 10 of the basic invention is provided with a both-path dual output unit 45 shown in a thick frame between the data link layer transmission unit (1) 38 and the data link layer transmission units (2) 41-1 and 41-2 as shown in FIG. 10.
[0102] Next, regarding each processing unit of the information processing device 10 of the basic invention, differences from the information processing device 10 of the prior art will be described. The differences are mainly in the processing of the processing units of the sequence number issuing unit 28, the double-route dual output unit 45, and the duplication detection unit 29, and the information stored in the highly reliable communication information 50. However, the sequence number issuing unit 28 and the duplication detection unit 29, which are indicated by double frames, can be used as they are in the information processing device 10 of the prior art, so there is no need to add or change the processing.
[0103] The sequence number issuing unit 28 of the basic invention assigns a transmission sequence number, which is managed and stored in the highly reliable communication information 50, to the packet header in order to uniquely identify the transmission data, and updates the transmission sequence number stored in the highly reliable communication information 50 for the next data transmission. In the basic invention, since the same packet is transmitted to both routes, the information processing device 10 on the data receiving side, i.e., the communication node 2, discards duplicate packets using the sequence number assigned to the packet header. The process by the sequence number issuing unit 28 of the basic invention is similar to steps S105 and S106 of the delivery confirmation process shown in FIG. 6.
[0104] The both-route dual output unit 45 operates, for example, when it receives a transmission request for a transmission frame from the data link layer transmitter (1) 38. In addition, in order to transmit the transmission frame via both routes, the both-route dual output unit 45 uses, for example, a bonding function in Linux (registered trademark) or a teaming function in Windows (registered trademark).
[0105] The duplication detection unit 29 of the basic invention performs duplication detection, for example, by comparing the sequence number of the packet header with the acknowledgement number of the highly reliable communication information 50, and receives the received packet if it is unreceived data, and discards it if it is already received data. In the basic invention, the same packet is transmitted to both routes, so that the duplicate packet is discarded by the duplication detection unit 29 of the information processing device 10 on the data receiving side, i.e., the communication node 2. The process by the duplication detection unit 29 of the basic invention is similar to steps S207 and S208 of the delivery confirmation process shown in FIG. 7.
[0106] Next, regarding the exchanges between the processing units shown in Fig. 10, differences from the exchanges between the processing units of the information processing device 10 of the prior art shown in Fig. 2 will be described. In the basic invention, unlike the prior art, the both-path output unit 45 duplicates the data link layer frame and transmits the frame to both paths. Then, the duplication detection unit 29 on the data receiving side detects and discards duplicate frames received later.
[0107] The processing up to the network layer transmitting unit 34 of the information processing device 10 on the data transmitting side, that is, the communication node 1, is the same as that of the prior art shown in FIG.
[0108] Next, upon receiving a transmission request from the network layer transmitter 34, the data link layer transmitter (1) 38 performs, for example, data link layer processing in the CPU module 20 and passes the data link layer frame, which is the transmission frame, to the both path dual output unit 45.
[0109] Next, when a transmission request is received from the data link layer transmitting unit (1) 38, the both-route dual-output unit 45 executes, for example, a both-route dual-output process. Fig. 11 is a flowchart showing the flow of the both-route dual-output process by the both-route dual-output unit 45. The both-route dual-output process shown in Fig. 11 will be described.
[0110] First, the both-path output unit 45 determines, for example, whether or not there is an end request (step S401). If there is an end request (step S401: Yes), the both-path output process shown in FIG.
[0111] On the other hand, if there is no end request (step S401: No), the both-path output unit 45 waits for a transmission request from, for example, the data link layer transmission unit (1) 38 (step S402).
[0112] When a transmission request is received, the both-route output unit 45 receives, for example, a data link layer frame, which is a transmission frame, from the data link layer transmission unit (1) 38 (step S403).
[0113] Next, the both-path output unit 45, for example, copies the received transmission frame (step S404).
[0114] Next, the both-path dual output unit 45 passes the respective transmission frames to the data link layer transmission unit (2) 41-1 of the NIC (1) 40-1 and the data link layer transmission unit (2) 41-2 of the NIC (2) 40-2 (step S405). That is, in response to receiving a transmission request for data for process control, the information processing device 10 on the data transmission side copies the transmission frame of the data link layer to generate a first transmission frame and a second transmission frame, transmits the first transmission frame to the first NIC, and transmits the second transmission frame to the second NIC. After executing step S405, the process returns to step S401, and the both-path dual output unit 45 waits for a transmission request from the data link layer transmission unit (1) 38, for example, until there is an end request.
[0115] Next, upon receiving a transmission request from both route output unit 45, each of data link layer transmission units (2) 41-1 and 41-2 calculates the result of error detection for the data link layer frame according to, for example, an existing algorithm, and adds it to the FCS field of the data link layer frame.
[0116] Then, each of the data link layer transmitters (2) 41-1 and 41-2 transmits a data link layer frame via each communication path, for example, to the information processing device 10 on the data receiving side, i.e., the communication node 2. That is, the information processing device 10 on the data transmitting side transmits, for example, a first transmission frame in the first NIC to the network, and transmits a second transmission frame in the second NIC to the network.
[0117] Also, the duplication detection unit 29 on the data receiving side performs duplication detection, for example, by comparing the sequence number of the packet header with the acknowledgement number of the highly reliable communication information 50, and receives the received packet if it is unreceived data, and discards it if it is already received data. That is, in response to receiving the first transmission frame or the second transmission frame, for example, the information processing device 10 on the data receiving side performs duplication detection between the first transmission frame and the second transmission frame based on the sequence number of the packet header, and discards the first transmission frame or the second transmission frame received later if duplication between the first transmission frame and the second transmission frame is detected.
[0118] In this way, the information processing device 10 of the basic invention performs high real-time communication while ensuring highly reliable and highly available communication for process control communication by transmitting frames to both physically independent paths. More specifically, for example, as in the conventional technology, since it is not necessary to detect a communication abnormality in order to switch from the current path to the alternative path, the detection time of the communication abnormality is zero. Furthermore, since it is not necessary to switch the communication path in order to switch from the current path to the alternative path, the switching time of the communication path is also zero. Furthermore, since it is not necessary to restore the communication state in order to switch from the current path to the alternative path, the restoration time of the communication state is also zero. Note that the respective processing units that transmit frames to both physically independent paths may be collectively referred to as a dual output unit.
[0119] The control system of the basic invention has been described above, in which the same packet is sent to both physically independent routes, and duplicate packets are detected and discarded by the duplication detection unit 29 of the delivery confirmation receiving unit 27. However, such a control system of the basic invention has problems in that the CPU load increases in the sending and receiving nodes, and it cannot handle transport layer communication protocols that do not have a duplication detection function.
[0120] Regarding the problem of increased CPU load at the transmitting and receiving nodes, for example, when transmitting data, the data link layer protocol duplicates the frame and transmits doubled transmission data. On the other hand, when receiving data, the doubled received data is subjected to reception processing including the data link layer and the network layer until the transport layer protocol discards the duplicated packet. As a result, the amount of reception processing up to the transport layer is doubled at the receiving node, so the CPU load due to reception processing is almost twice that of the control system of the prior art. In particular, when the control system of the basic invention is applied to an embedded device such as a controller of a control system, the CPU performance is nearly two orders of magnitude poorer than that of a PC, so the adverse effect of the increase in the CPU load of the reception processing becomes greater. Regarding the adverse effect, for example, the maximum reception bandwidth that the controller of the control system can receive decreases in inverse proportion to the increase in the amount of reception processing when the CPU load reaches the upper limit. In addition, since the control processing time in a control scan cycle is required to be completed within the cycle, if the communication processing time increases, the control processing time must be reduced by the amount of increase. Therefore, when the control system of the basic invention is applied to a controller or the like, it is required to minimize the increase in the amount of reception processing caused by sending the same packet to both routes, and to keep it at the same level as the amount of reception processing by the control system of the prior art.
[0121] Regarding the problem of being unable to handle transport layer communication protocols that do not have a duplicate detection function, for example, the control system of the basic invention is premised on communication using a communication protocol that has a duplicate detection function for the same packet. Therefore, if the communication protocol does not have a duplicate detection function, an additional function is required. Also, if the transport layer protocol does not have a duplicate detection function, such as publisher / subscriber communication, which is considered to be a promising future control communication, a separate additional function is required for the communication protocol.
[0122] Therefore, one of the objectives of the applied invention is to solve the above-mentioned problems of the basic invention in addition to the problems of the conventional technology, and to perform high-real-time communication while ensuring highly reliable and highly available communication for process control communication.
[0123] (Configuration of control system of applied invention) The configuration of the control system of the applied invention is similar to the configuration of the control system of the basic invention shown in FIG.
[0124] (Functional configuration of the information processing device 10 of the applied invention) Next, the functional configuration of the information processing device 10 which is the subject of the application invention will be described. FIG. 12 is a diagram showing an example of the configuration of the information processing device 10 of the application invention. For example, the information processing device 10 of the application invention performs duplication detection of received packets in the data link layer, which was performed in the transport layer or higher in the information processing device 10 of the basic invention. Therefore, the information processing device 10 of the application invention includes a simplified sequence number issuing unit 46 shown in a thick frame between the data link layer transmitting unit (1) 38 and the both-path output unit 45 as shown in FIG. 12, compared to the information processing device 10 of the basic invention shown in FIG. 10. Also, the information processing device 10 of the application invention includes a simplified duplication detecting unit 47 shown in a thick frame between the data link layer receiving unit (1) 39 and the data link layer receiving units (2) 42-1 and 42-2 as shown in FIG. 12. Also, the information processing device 10 of the application invention stores route redundancy information 51 shown in a thick frame in a storage unit as shown in FIG. 12. For the sake of simplicity, FIG. 12 omits details of the highly reliable communication transmitting unit 24 and the highly reliable communication receiving unit 25, as well as the data link layer transmitting unit 36 and the data link layer receiving unit 37 shown in FIG.
[0125] Next, the parts of the information processing device 10 of the applied invention that differ from the information processing device 10 of the basic invention will be described. The parts that differ are mainly the simplified sequence number issuing unit 46, the simplified duplication detecting unit 47, and the route redundancy information 51.
[0126] The simple sequence number issuing unit 46 is added, for example, between the data link layer transmitting unit (1) 38 of the data link layer transmitting unit 36 and the both-path output unit 45. The simple sequence number issuing unit 46 issues, for example, a sequence number for uniquely identifying a data link layer frame and assigns it to the header. The sequence number is assigned, for example, to an option area of the data link layer frame header. That is, the information processing device 10 on the data transmitting side assigns, for example, an identifier for uniquely identifying a transmission frame to an option area of the header of the transmission frame.
[0127] Also, some protocols do not have an option field depending on the data link layer, so in that case, the option field is added to the option field of the datagram header of the network layer, for example. That is, the information processing device 10 on the data transmission side adds an identifier for uniquely identifying a transmission frame to the option field of the datagram header of the network layer, for example. In the case of TCP / IP, since the IP header has a variable-length option field, it is easy to add an option field. Also, while the sequence number of the basic invention is incremented by 1 (+1) every time 1 byte of data is transmitted for each communication flow, the sequence number by the simplified sequence number issuing unit 46 is incremented by 1 every time 1 frame is transmitted for each destination, for example, so that the management of the sequence number is easy. That is, the information processing device 10 on the data transmission side issues an identifier for uniquely identifying a transmission frame for each destination and transmission frame.
[0128] In addition, the sequence number issued by the simplified sequence number issuing unit 46 may be referred to as a "simple sequence number" hereinafter to distinguish it from the sequence number issued by the sequence number issuing unit 28. To add a simplified sequence number to a data link layer frame, for example, the stream function of Unix (registered trademark) System V, the filtering function of BSD Unix, or the driver layering function of Windows may be used. By using these functions, processing can be easily added without adversely affecting existing protocol processing.
[0129] The simple duplication detection unit 47 is added, for example, between the data link layer receiving unit (1) 39 of the data link layer receiving unit 37 and the data link layer receiving units (2) 42-1 and 42-2. The simple duplication detection unit 47 stores the simple sequence number of the first received frame for each data source in order to determine whether the received frame is the first or second received frame. When a frame with the same simple sequence number as the stored simple sequence number is received, the simple duplication detection unit 47 detects and discards the duplicated received frame, for example. That is, for example, the detection of duplication between the first and second transmission frames and the discarding of the first or second transmission frame are performed in the data link layer. The duplication detection in the basic invention is performed in the transport layer, whereas the application invention is performed in the data link layer, so that it is not necessary to process the duplicate frames in the reception processing in the network layer and the transport layer. Also, while the duplication detection in the basic invention detects and discards for each communication flow, the application invention detects and discards for each frame, so that the processing is easier than that of the basic invention.
[0130] The route redundancy information 51 stores, for example, information for detecting duplicate frames at the data link layer. Fig. 13 is a diagram showing an example of the route redundancy information 51. As shown in Fig. 13, the route redundancy information 51 stores, for example, the sequence number of the next frame as sequence number management information. The sequence number of the next frame is, for example, a simplified sequence number that is assigned to the next transmission frame by the simplified sequence number issuing unit 46. In addition, the sequence number of the next frame is incremented (+1) every time a frame is transmitted, and when it reaches the maximum sequence number, it returns to an initial value (for example, 1).
[0131] 13, for example, information such as a source MAC address, a simple sequence number, and a time stamp are associated and stored as record information of a ring buffer in the route redundancy information 51. Here, the ring buffer is, for example, a logical ring-shaped buffer in which the end of the buffer is linked to the beginning, and data is stored in order from the beginning, and when the end is stored, data is returned to the beginning and stored.
[0132] In the record information of the ring buffer, for example, information for uniquely identifying each received frame is stored in sequence, and a frame can be uniquely identified using the source MAC address, simple sequence number, and timestamp. The size of the records that can be stored in the record information of the ring buffer is, for example, a size that allows all frames transmitted during the frame lifetime TTL (Time To Live; the period during which a frame is valid from when it is transmitted to the network until it is received; it should be at least 10 times the maximum communication delay; for example, 10 seconds) of the transmitted frame to be stored in the ring buffer. This ensures that all reception records of valid transmitted frames can be stored. For example, if the sequence number starts from 1 and increases by +1 for each frame, the record size is equal to the maximum sequence number.
[0133] The source MAC address of the record information of the ring buffer is, for example, an address for uniquely identifying the source of the received frame. The source MAC address is used, for example, to identify the source without referring to the transport layer header. In addition, the source MAC address is, for example, the source MAC address of the frame header when the received frame is received.
[0134] The simple sequence number in the record information of the ring buffer is, for example, a number for uniquely identifying a received frame. The simple sequence number is used, for example, to identify data without referring to the transport layer header. In addition, the simple sequence number is, for example, the simple sequence number of the frame header stored when a received frame is received.
[0135] The timestamp of the record information in the ring buffer is, for example, the time when a simple sequence number, which is approximately equivalent to the time when the frame was received, was stored. If the elapsed storage time of the record calculated from the timestamp is shorter than the frame survival time, i.e., the storage validity period, the record is determined to be valid, and if it is longer, it is determined to be invalid. This makes it possible to eliminate unnecessary detection of frames.
[0136] 13, for example, information such as a read pointer and a write pointer is associated and stored as management information of a ring buffer in the route redundancy information 51. The management information of the ring buffer represents, for example, information on the ring buffer itself, and stores information for updating record information of the ring buffer.
[0137] The read pointer for the management information of the ring buffer is, for example, a pointer to a record to be used for the next duplicate detection among the records storing the information of the received frame, and is used to determine which record row to read from. For example, when comparing with the simple sequence number assigned to the received frame, the simple sequence number of the record row pointed to by the read pointer is extracted and duplicate detection is performed.
[0138] The write pointer of the management information of the ring buffer is, for example, a pointer to a record that will store information about a newly received frame next. For example, when a frame is received that has a simple sequence number that is not stored in the route redundancy information 51, the source MAC address, the simple sequence number, and the timestamp are stored in the record row pointed to by the write pointer.
[0139] Next, regarding the exchanges between the processing units shown in Fig. 12, differences from the exchanges between the processing units of the information processing device 10 of the basic invention shown in Fig. 10 will be described. Unlike the basic invention, the applied invention provides the data link layer with a duplication detection function, which eliminates the need for processing from the data link layer receiving unit (1) 39 to the highly reliable communication receiving unit 25, such as the error detection receiving unit 33, for duplicately received data link layer frames.
[0140] The processing of the information processing device 10 on the data transmission side, that is, up to the data link layer transmitting unit (1) 38 of the communication node 1, is the same as that of the basic invention shown in FIG.
[0141] Next, upon receiving a transmission request from the data link layer transmitter (1) 38, the simple sequence number issuing unit 46 executes, for example, a simple sequence number issuing process. Figure 14 is a flowchart showing the flow of the simple sequence number issuing process by the simple sequence number issuing unit 46. The simple sequence number issuing process shown in Figure 14 will be explained.
[0142] First, the simple sequence number issuing unit 46 determines, for example, whether or not there is an end request (step S501). If there is an end request (step S501: Yes), the simple sequence number issuing process shown in FIG.
[0143] On the other hand, if there is no end request (step S501: No), the simplified sequence number issuing unit 46 waits for a transmission frame from, for example, the data link layer transmitting unit (1) 38 (step S502).
[0144] When a transmission frame is received, the simple sequence number issuing unit 46 receives, for example, a data link layer frame, which is the transmission frame, from the data link layer transmitting unit (1) 38 (step S503).
[0145] Next, the simple sequence number issuing unit 46 assigns, for example, the sequence number of the next frame stored in the route redundancy information 51 to the header (step S504). That is, the information processing device 10 on the data transmitting side issues, for example, an identifier for uniquely identifying the transmission frame, and assigns the identifier to the transmission frame.
[0146] Next, the simple sequence number issuing unit 46 updates the sequence number of the next frame of the route redundancy information 51 by adding (+1) to it (step S505). If the sequence number has reached the maximum sequence number, it is updated to an initial value (for example, 1).
[0147] Next, the simplified sequence number issuing unit 46 passes the transmission frame to the both-path output unit 45 (step S506). After executing step S506, the process returns to step S501, and the simplified sequence number issuing unit 46 waits for a transmission frame from the data link layer transmitting unit (1) 38, for example, until a termination request is received.
[0148] Next, upon receiving a transmission request from the simple sequence number issuing unit 46, the both-route dual output unit 45, for example, duplicates the received transmission frame. Then, the both-route dual output unit 45 passes each transmission frame to the data link layer transmitting unit (2) 41-1 of the NIC (1) 40-1 and the data link layer transmitting unit (2) 41-2 of the NIC (2) 40-2, for example.
[0149] Next, the exchange between each processing unit of the information processing device 10 on the data receiving side, i.e., the communication node 2, will be described. When receiving requests from the data link layer receiving units (2) 42-1 and 42-2, the simple duplication detection unit 47 executes, for example, simple duplication detection processing. Fig. 15 is a flowchart showing the flow of the simple duplication detection processing by the simple duplication detection unit 47. The simple duplication detection processing shown in Fig. 15 will be described.
[0150] First, the simple duplicate detection unit 47 determines, for example, whether or not there is an end request (step S601). If there is an end request (step S601: Yes), the simple duplicate detection process shown in FIG.
[0151] On the other hand, if there is no end request (step S601: No), simple duplication detection unit 47 waits for a received frame from, for example, data link layer receiving unit (2) 42-1 or 42-2 (step S602).
[0152] When a received frame is received, simple duplication detection unit 47 receives, for example, a data link layer frame, which is the received frame, from data link layer receiving unit (2) 42-1 or 42-2 (step S603).
[0153] Next, the simple duplication detection unit 47 extracts, for example, the simple sequence number and the time stamp stored in the record row pointed to by the read pointer of the route redundancy information 51 (step S604).
[0154] Next, the simple duplicate detection unit 47 judges, for example, whether the extracted simple sequence number is blank (step S605). If the simple sequence number is blank (step S605: Yes), the process proceeds to step S613.
[0155] On the other hand, if the simple sequence number is not empty (step S605: No), simple duplicate detection unit 47 calculates the storage elapsed time of the simple sequence number, for example, from the extracted time stamp (step S606).
[0156] Next, the simple duplicate detection unit 47 determines (step S607) whether the calculated storage elapsed time is older than the storage validity period of the route redundancy information 51. If the storage elapsed time is older than the storage validity period (step S607: Yes), all timestamps and simple sequence numbers of the route redundancy information 51 are cleared (step S608).
[0157] Next, the simple duplication detection unit 47 updates the read pointer of the route redundancy information 51 by adding (+1) to it (step S609), and returns to step S604.
[0158] On the other hand, if the storage elapsed time is not older than the storage validity period (step S607: No), the simple duplicate detection unit 47 judges, for example, whether the simple sequence number in the header matches the extracted simple sequence number (step S610). If the simple sequence number in the header does not match the extracted simple sequence number (step S610: No), the process proceeds to step S613.
[0159] On the other hand, if the simple sequence number in the header matches the extracted simple sequence number (step S610: Yes), the simple duplication detection unit 47, for example, discards the received frame (step S611). That is, in response to receiving the first transmission frame or the second transmission frame, the information processing device 10 on the data receiving side performs duplication detection between the first transmission frame and the second transmission frame based on the identifier assigned to the transmission frame by the information processing device 10 on the data transmitting side, and if duplication between the first transmission frame and the second transmission frame is detected, discards the first transmission frame or the second transmission frame received later.
[0160] Next, the simple duplication detection unit 47 updates the read pointer of the route redundancy information 51 by adding (+1) to it (step S612), and returns to step S601.
[0161] Furthermore, when the process proceeds to step S613, the simple duplication detection unit 47 stores, for example, the simple sequence number of the received frame and the current time (time stamp) in the record row pointed to by the write pointer of the route redundancy information 51 (step S613).
[0162] Next, the simple duplication detection unit 47 updates the write pointer of the route redundancy information 51 by adding (+1) to it (step S614).
[0163] Next, the simple duplication detection unit 47 passes the received frame to, for example, the data link layer receiving unit (1) 39 (step S615), and the process returns to step S601.
[0164] Note that the simple duplicate detection process shown in FIG. 15 omits the process for when frames are received in an order different from the order in which they were sent, and the process for returning the read pointer and write pointer to the beginning when they reach the end of the ring buffer.
[0165] In this way, the information processing device 10 of the application invention can be applied to control communication that requires real-time communication by adding a simple sequence number to the header option area of the data link layer frame and detecting duplication by recording the simple sequence number in the receiving section, and can pass the first received frame to the receiving section of the upper layer without waiting. Some frame duplication detection functions wait until two duplicate frames are received, and after confirming that the frames are identical, one frame is passed to the receiving section of the upper layer and the other frame is discarded in order to discard the duplicate frame without expanding the frame. In the application invention, the data link layer receiving section 37 discards the duplicate frame, so the receiving section of the network layer or the transport layer does not need to perform error detection processing on the duplicate frame. In addition, the error detection processing of the data link layer receiving section 37 is performed on the duplicate frame before the frame is discarded, but since the NIC coprocessor performs the error detection processing, it does not affect the CPU load of the CPU module 20.
[0166] As an applied invention (2), the information processing device 10 can detect duplicate frames without performing unnecessary protocol processing for discarded packets in the network layer and transport layer by performing a function in the data link layer that is the same as the duplicate detection function of a higher layer, such as the transport layer, based on the sequence number of a packet header such as TCP.
[0167] In the applied invention (2), the functional configuration of the information processing device 10 on the data transmission side is the same as that of the basic invention shown in Fig. 10, and utilizes the sequence number issuing unit 28 of the transmission unit 26 of the delivery confirmation prepared in the transport layer such as TCP. In addition, a dual-path output unit 45 is prepared separately.
[0168] Also, in the applied invention (2), the functional configuration of the information processing device 10 on the data receiving side does not add a new duplication detection function by a simple duplication detection unit 47 as in the applied invention shown in Fig. 12, but utilizes an existing duplication detection unit in the transport layer. Also, for example, a duplication detection unit such as TCP is called from the data link layer as in the applied invention shown in Fig. 12. Also, for example, when the duplication detection unit is called, it is required to pass header information of the transport layer such as TCP. Also, for example, it is required that the transport layer header extracts the data portion of the Ethernet frame, maps it to an IP datagram, extracts the data portion, and further maps it to a packet such as TCP to extract the header.
[0169] In this way, in the applied invention (2), protocol processing in the network layer and data link layer is not performed on duplicate frames, so the CPU load is reduced compared to the basic invention. Also, compared to the applied invention shown in Fig. 12, it can be implemented simply by calling an existing duplicate detection unit such as TCP from the data link layer, so there is no need for the simple sequence number issuing unit 46 and the simple duplicate detection unit 47.
[0170] (Other Examples) In the applied invention, the duplication detection of received packets is performed in the data link layer, but the duplication detection function may be added between the physical layer and the data link layer. The duplication detection function may be added, for example, on the NIC of the communication node. That is, for example, the duplication detection between the first transmission frame and the second transmission frame and the discarding of the first transmission frame or the second transmission frame are performed between the physical layer and the data link layer. Therefore, the load on the CPU module 20 is the same as in the case of the prior art, since the coprocessor on the NIC processes the duplication detection function and discards the duplicate frames.
[0171] Also, the duplicate detection of received packets may be performed by adding a duplicate detection function between the data link layer and the network layer. In this way, the process is performed by other free cores on the CPU cards of the transmitting and receiving nodes. Therefore, the CPU load of the CPU module 20 is the same as that of the conventional technology, since the coprocessor on the NIC processes the duplicate detection function and discards duplicate frames. That is, for example, the duplicate detection between the first transmission frame and the second transmission frame, and the discarding of the first transmission frame or the second transmission frame are performed between the data link layer and the network layer.
[0172] (effect) As described above, in response to receiving a request to send data for process control, the information processing device 10 on the data sending side replicates a transmission frame of the data link layer to generate a first transmission frame and a second transmission frame, transmits the first transmission frame to the first NIC, transmits the second transmission frame to the second NIC, transmits the first transmission frame in the first NIC to the network, and transmits the second transmission frame in the second NIC to the network.
[0173] As a result, compared to conventional technology control systems that transmit data only through a single communication path, the information processing device 10 does not require periodic diagnosis of the path, detection of communication anomalies, path switching, and communication status recovery, so that the communication path switching time is almost zero and communication interruption time can be minimized, enabling high real-time communication to be performed while ensuring highly reliable and highly available communication for process control communication.
[0174] In addition, in response to receiving the first transmission frame or the second transmission frame, the information processing device 10 on the data receiving side detects duplication between the first transmission frame and the second transmission frame based on the sequence number in the packet header, and if duplication between the first transmission frame and the second transmission frame is detected, discards the first transmission frame or the second transmission frame received later.
[0175] As a result, the information processing device 10 can utilize the conventional technique of detecting and discarding duplicate packets for detecting and discarding frames transmitted on both paths.
[0176] In addition, the information processing device 10 on the data transmitting side issues an identifier for uniquely identifying a transmission frame and assigns the identifier to the transmission frame, and the information processing device 10 on the data receiving side, in response to receiving the first transmission frame or the second transmission frame, detects overlap between the first transmission frame and the second transmission frame based on the identifier, and if overlap between the first transmission frame and the second transmission frame is detected, discards the first transmission frame or the second transmission frame received later.
[0177] As a result, the information processing device 10 detects and discards for each frame, for example, which makes the processing easier than detecting and discarding for each communication flow, and can also handle transport layer communication protocols that do not have a duplicate detection function.
[0178] Furthermore, the process of issuing an identifier for uniquely identifying a transmission frame, which is executed by the information processing device 10 on the data transmission side, includes a process of issuing an identifier for the destination of the transmission frame and for each transmission frame.
[0179] As a result, the information processing device 10 adds 1 to the sequence number every time it transmits a frame to a destination, which makes it easier to manage the sequence number.
[0180] Furthermore, the process of assigning an identifier to a transmission frame, which is executed by the information processing device 10 on the data transmission side, includes a process of assigning an identifier to an option area in the header of the transmission frame.
[0181] As a result, the information processing device 10 can perform highly real-time communication while ensuring highly reliable and highly available communication, without adding a new data area to assign an identifier to a transmission frame.
[0182] Furthermore, the process of assigning an identifier to a transmission frame, which is executed by the information processing device 10 on the data transmission side, includes a process of assigning an identifier to an option area of a datagram header in the network layer.
[0183] As a result, the information processing device 10 can perform highly real-time communication while ensuring highly reliable and highly available communication, without adding a new data area to assign an identifier to a transmission frame.
[0184] Moreover, the duplication detection and discarding of the first transmission frame or the second transmission frame executed by the information processing device 10 on the data receiving side are performed by a data link layer receiving unit (1) 39 implemented in the CPU module 20.
[0185] As a result, the information processing device 10 does not need to process duplicate frames in the reception processing at the network layer and the transport layer, and the processing load can be reduced.
[0186] Furthermore, the duplication detection and the discarding of the first transmission frame or the second transmission frame, which are executed by the information processing device 10 on the data receiving side, are performed between the physical layer and the data link layer.
[0187] As a result, the information processing device 10 can perform highly real-time communication while ensuring highly reliable and available communication without increasing the load on the CPU module, because the coprocessor on the NIC processes the duplicate detection function and discards duplicate frames.
[0188] Furthermore, the duplication detection and discarding of the first transmission frame or the second transmission frame, which are executed by the information processing device 10 on the data receiving side, are performed between the data link layer and the network layer.
[0189] As a result, the information processing device 10 does not need to process duplicate frames in the reception processing at the network layer and the transport layer, and the processing load can be reduced.
[0190] (Other embodiments) Although the embodiment of the present invention has been described above, the present invention may be embodied in various different forms other than the above-described embodiment.
[0191] (system) The information including the processing procedures, control procedures, specific names, various data and parameters shown in the above documents and drawings can be changed arbitrarily unless otherwise specified.
[0192] In addition, each component of each device shown in the figure is a functional concept, and does not necessarily have to be physically configured as shown in the figure. In other words, the specific form of distribution and integration of each device is not limited to that shown in the figure. In other words, all or part of them can be functionally or physically distributed and integrated in any unit according to various loads, usage conditions, etc.
[0193] Furthermore, each processing function performed by each device may be realized, in whole or in part, by a CPU (Central Processing Unit) and a program analyzed and executed by the CPU, or may be realized as hardware using wired logic.
[0194] (Hardware) Next, a hardware configuration of the information processing device 10 which is the communication node 1 or the communication node 2 will be described. Fig. 16 is a diagram showing an example of a hardware configuration of the information processing device 10 according to this embodiment. As shown in Fig. 16, the information processing device 10 has a communication terminal 10a, a non-volatile memory 10b, a RAM (Random-Access Memory) 10c, and a processor 10d. Moreover, each unit shown in Fig. 16 is connected to each other via a bus or the like.
[0195] The communication terminal 10a is an Ethernet port or the like, and communicates with other information processing devices. The non-volatile memory 10b is a flash memory or the like, and stores programs and data that operate the functions of the processing units shown in Figs. 10 and 12.
[0196] The processor 10d is a CPU, a micro processing unit (MPU), a graphics processing unit (GPU), or the like. The processor 10d may be realized by an integrated circuit such as an application specific integrated circuit (ASIC) or a field programmable gate array (FPGA). The processor 10d reads a program that executes the same processes as the processing units shown in FIG. 10 or FIG. 12 from the non-volatile memory 10b or the like and expands the program in the RAM 10c, thereby operating a thread that executes the functions of the processing units shown in FIG. 10 or FIG. 12. For example, the thread executes the same functions as the processing units of the information processing device 10. Specifically, the processor 10d reads a program having the same functions as the processing units shown in FIG. 10 or FIG. 12 from the non-volatile memory 10b or the like. The processor 10d then executes a thread that executes the same processes as the processing units shown in FIG. 10 or FIG. 12.
[0197] In this way, the information processing device 10 operates as an information processing device that executes various processing methods by reading and executing the program. The program may be distributed via a network such as the Internet. The program may be recorded in a computer-readable storage medium such as a hard disk, a flexible disk (FD), a CD-ROM, a magneto-optical disk (MO), or a digital versatile disk (DVD). The program may be executed by being read from the computer-readable storage medium by the information processing device 10 or the like.
[0198] (others) Some examples of combinations of the disclosed technical features are set out below.
[0199] (1) in response to receiving a request to transmit data for process control, replicating a transmission frame of the data link layer to generate a first transmission frame and a second transmission frame; Transmitting the first transmission frame to a first NIC (Network Interface Card); Transmitting the second transmission frame to a second NIC; Transmitting the first transmission frame at the first NIC to a network; Transmitting the second transmission frame at the second NIC to the network. An information processing program that causes an information processing device to execute processing.
[0200] (2) in response to receiving the first transmission frame or the second transmission frame, detecting duplication between the first transmission frame and the second transmission frame based on a sequence number of a packet header; When an overlap between the first transmission frame and the second transmission frame is detected, the first transmission frame or the second transmission frame received later is discarded. The information processing program according to (1), which causes a second information processing device to execute the processing.
[0201] (3) issuing an identifier for uniquely identifying the transmission frame, and assigning the identifier to the transmission frame; causing the information processing device to execute processing; in response to receiving the first transmission frame or the second transmission frame, detecting whether the first transmission frame and the second transmission frame overlap based on the identifier; When an overlap between the first transmission frame and the second transmission frame is detected, the first transmission frame or the second transmission frame received later is discarded. The information processing program according to (1), which causes a second information processing device to execute the processing.
[0202] (4) the process of issuing an identifier for uniquely identifying the transmission frame includes: The identifier is issued to a destination of the transmission frame and for each of the transmission frames. The information processing program according to (3), which includes processing.
[0203] (5) The process of assigning the identifier to the transmission frame includes: Adding the identifier to an option area of the header of the transmission frame The information processing program according to (3) or (4), which includes processing.
[0204] (6) The process of assigning the identifier to the transmission frame includes: Adding the identifier to an optional field in a network layer datagram header The information processing program according to (3) or (4), which includes processing.
[0205] (7) The information processing program according to any one of (3) to (6), wherein the duplication detection and the discarding of the first transmission frame or the second transmission frame are performed in a data link layer implemented in a CPU module.
[0206] (8) The information processing program according to any one of (3) to (6), wherein the duplication detection and the discarding of the first transmission frame or the second transmission frame are performed between a physical layer and a data link layer.
[0207] (9) The information processing program according to any one of (3) to (6), wherein the duplication detection and the discarding of the first transmission frame or the second transmission frame are performed between a data link layer and a network layer.
[0208] (10) in response to receiving a request to transmit data for process control, replicating a transmission frame of the data link layer to generate a first transmission frame and a second transmission frame; Transmitting the first transmission frame to a first NIC (Network Interface Card); Transmitting the second transmission frame to a second NIC; Transmitting the first transmission frame at the first NIC to a network; Transmitting the second transmission frame at the second NIC to the network. An information processing method in which processing is executed by an information processing device.
[0209] (11) in response to receiving a request to transmit data for process control, replicating a transmission frame of the data link layer to generate a first transmission frame and a second transmission frame; Transmitting the first transmission frame to a first NIC (Network Interface Card); Transmitting the second transmission frame to a second NIC; Transmitting the first transmission frame at the first NIC to a network; Transmitting the second transmission frame at the second NIC to the network. An information processing device equipped with double output sections. [Explanation of symbols]
[0210] 1 Communication Node 2. Communication Node 10. Information processing device 10a Communication terminal 10b Non-volatile memory 10c RAM 10d Processor 20 CPU Module 21 Control processing section 22 CPU transmitter 23 CPU receiver 24 Highly reliable communication transmitter 25 Highly reliable communication receiver 26. Transmission of delivery confirmation 27 Receiving confirmation of delivery 28 Sequence Number Issuer 29 Duplicate detection unit 30 Flow control sender 31 Flow control receiver 32 Error detection transmitter 33 Error detection receiver 34 Network Layer Transmitter 35 Network Layer Receiver 36 Data Link Layer Transmitter 37 Data Link Layer Receiver 38 Data Link Layer Transmitter (1) 39 Data Link Layer Receiver (1) 40 NIC 41 Data link layer transmitter (2) 42 Data link layer receiver (2) 45 Both routes, both exits 46 Simple sequence number issuing unit 47 Simple Duplicate Detection Unit 50 Highly reliable communication information 51 Route redundancy information
Claims
1. In response to receiving a request to transmit data for process control, a transmission frame of the data link layer is replicated to generate a first transmission frame and a second transmission frame; Transmitting the first transmission frame to a first network interface card (NIC); Transmitting the second transmission frame to a second NIC; Transmitting the first transmission frame at the first NIC to a network; Transmitting the second transmission frame in the second NIC to the network. An information processing program that causes an information processing device to execute processing.
2. in response to receiving the first transmission frame or the second transmission frame, detecting duplication between the first transmission frame and the second transmission frame based on a sequence number of a packet header; When an overlap between the first transmission frame and the second transmission frame is detected, the first transmission frame or the second transmission frame received later is discarded.
2. The information processing program according to claim 1, further comprising: a second information processing device for executing the processing.
3. An identifier for uniquely identifying the transmission frame is issued, and the identifier is assigned to the transmission frame. causing the information processing device to execute processing; in response to receiving the first transmission frame or the second transmission frame, detecting whether the first transmission frame and the second transmission frame overlap each other based on the identifier; When an overlap between the first transmission frame and the second transmission frame is detected, the first transmission frame or the second transmission frame received later is discarded.
2. The information processing program according to claim 1, further comprising: a second information processing device for executing the processing.
4. The process of issuing an identifier for uniquely identifying the transmission frame includes: The identifier is issued to a destination of the transmission frame and for each of the transmission frames.
4. The information processing program according to claim 3, further comprising:
5. The process of assigning the identifier to the transmission frame includes: Adding the identifier to an option area of the header of the transmission frame 5. The information processing program according to claim 3, further comprising a process for:
6. The process of assigning the identifier to the transmission frame includes: Adding the identifier to an optional field in a network layer datagram header 5. The information processing program according to claim 3, further comprising a process for:
7. 5. The information processing program according to claim 3, wherein the duplication detection and the discarding of the first transmission frame or the second transmission frame are performed in a data link layer implemented in a CPU module.
8. 5. The information processing program according to claim 3, wherein the duplication detection and the discarding of the first transmission frame or the second transmission frame are performed between a physical layer and a data link layer.
9. 5. The information processing program according to claim 3, wherein the duplicate detection and the discarding of the first transmission frame or the second transmission frame are performed between a data link layer and a network layer.
10. In response to receiving a request to transmit data for process control, a transmission frame of the data link layer is replicated to generate a first transmission frame and a second transmission frame; Transmitting the first transmission frame to a first network interface card (NIC); Transmitting the second transmission frame to a second NIC; Transmitting the first transmission frame at the first NIC to a network; Transmitting the second transmission frame in the second NIC to the network. An information processing method in which processing is executed by an information processing device.
11. In response to receiving a request to transmit data for process control, a transmission frame of the data link layer is replicated to generate a first transmission frame and a second transmission frame; Transmitting the first transmission frame to a first network interface card (NIC); Transmitting the second transmission frame to a second NIC; Transmitting the first transmission frame at the first NIC to a network; Transmitting the second transmission frame in the second NIC to the network. An information processing device equipped with double output sections.
Citation Information
Patent Citations
Method and system for parallel redundancy protocol in connected networks
EP4072104A1
Transmission packet compensation system and transmission packet compensation method
JP2005286432A
Network system and relay device
JP2015103978A