Redundancy control device, redundancy control method, and redundancy control program
The redundancy control device in communication systems dynamically sets redundancy based on predicted bandwidth, addressing the trade-off between availability and bandwidth, and optimizing network performance by balancing these factors.
Patent Information
- Application Number
- JP2023199138
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2023-11-24
- Publication Date
- 2025-06-05
AI Technical Summary
In communication systems, setting redundancy to avoid abnormal events in shared networks often results in a trade-off between availability and maximum usable bandwidth, making it challenging to determine the optimal redundancy level.
A redundancy control device that sets redundancy based on predicted communication bandwidth, determining an upper limit value of redundancy by considering available and predicted bandwidth, and adjusting redundancy accordingly to balance availability and bandwidth utilization.
This approach allows for appropriate setting of communication redundancy, effectively balancing availability and bandwidth utilization, thereby optimizing network performance.
Smart Images

Figure 2025085333000001_ABST
Abstract
Description
[Technical field]
[0001] The present invention relates to a redundancy control device and the like that sets redundancy for a communication system capable of communicating via a network in accordance with a set redundancy. [Background technology]
[0002] In a public cloud, data center resources are divided and allocated to various users, so the resources are shared. By using hardware virtualization functions for the CPU and memory installed in the server, it is possible to isolate the impact between users.
[0003] On the other hand, complete separation of networks is difficult because fixed separation leads to reduced utilization efficiency. Therefore, although multiple network switches are connected with redundant routes to provide sufficient bandwidth, packet loss may occur if communication is concentrated on a specific route. In addition, platform operators who operate data centers may perform network maintenance without notifying users, and packet loss may occur when faulty or worn-out network switches are replaced at any time.
[0004] An effective countermeasure against abnormal events on such a shared network is to set up a multipath system so that communication can be carried out via multiple routes, and to duplicate and send communication data redundantly. When an abnormal event occurs, communication can be continued without waiting for automatic recovery from the abnormal event by receiving data that has passed through an unaffected route.
[0005] In recent years, as shown in Non-Patent Document 1, standards for multipath communication have been established, and the introduction of multipath TCP communication functions as standard functions of operating systems is progressing. However, when this function is simply used, a trade-off occurs between availability and maximum usable bandwidth.
[0006] As a technique for providing redundancy in communication, for example, Patent Document 1 discloses a technique for providing redundancy in the time direction by increasing the number of transmissions in accordance with the communication situation.
[0007] Furthermore, Patent Document 2 discloses that redundancy is determined based on communication speed so that the time until transmission is completed falls within a certain delay time according to the communication conditions, and that redundant data is added and transmitted using a technique such as forward correction coding according to the determined redundancy.
[0008] Furthermore, Patent Document 3 discloses a method for maintaining the order of data when time-series data is redundantly transmitted over multiple routes while changing the communication route. [Prior art documents] [Patent documents]
[0009] [Patent Document 1] JP 2023-039257 A [Patent Document 2] JP 2023-006210 A [Patent Document 3] JP 2015-122697 A [Non-patent literature]
[0010] [Non-Patent Document 1] RFC8684 “TCP Extensions for Multipath Operation with Multiple Addresses” Summary of the Invention [Problem to be solved by the invention]
[0011] A method of avoiding abnormal events in a shared network by constructing a multi-path and redundantly transferring replicated data involves a trade-off with the maximum available bandwidth. Assume that the probability of an abnormal event occurring is P (0 < P < 1), and each abnormal event occurs independently. Let the redundancy of communication be N, that is, by replicating the data N times and redundantly transmitting it over separate paths, the probability that an abnormal event affects the communication is expected to be reduced to P N However, since the bandwidth used also increases by N times, the maximum available bandwidth will decrease to 1 / N. Therefore, if the redundancy is fixed, the maximum bandwidth will also be fixed and limited. Thus, it is important to determine how to set the redundancy of communication.
[0012] The present invention has been made in view of the above circumstances, and an object thereof is to provide a technique capable of appropriately setting the redundancy of communication in a communication system.
Means for Solving the Problems
[0013] To achieve the above object, a redundancy control device according to one aspect is a redundancy control device that sets the redundancy for a communication system capable of communicating via a network according to a set redundancy, has a processor, and the processor receives a predicted communication bandwidth, which is the communication bandwidth predicted to be used in the network from an application, and based on the available communication bandwidth in the network and the predicted communication bandwidth, determines an upper limit value of the redundancy in communication by the application, which is the redundancy upper limit value, and sets a redundancy equal to or less than the determined redundancy upper limit value as the redundancy of communication by the application in the communication system.
Effects of the Invention
[0014] According to the present invention, the redundancy of communication in a communication system can be appropriately set.
Brief Description of the Drawings
[0015] [Figure 1]FIG. 1 is a hardware configuration diagram of a computer system according to an embodiment. [Diagram 2] FIG. 2 is a diagram illustrating the detection of packet loss and the retransmission of data. [Diagram 3] FIG. 3 is a diagram for explaining a preferable communication method when communication frequency is low. [Figure 4] FIG. 4 is a diagram for explaining a preferable communication method when communication frequency is high. [Diagram 5] FIG. 5 is a configuration diagram of a computer system related to the first embodiment. [Figure 6] FIG. 6 is a functional configuration diagram of the redundancy controller according to the first embodiment. [Figure 7] FIG. 7 is a flowchart of a redundancy control process according to the first embodiment. [Figure 8] FIG. 8 is a functional configuration diagram of the bandwidth-based redundancy upper limit calculator according to the first embodiment. [Figure 9] FIG. 9 is a flowchart of the redundancy upper limit calculation process according to the first embodiment. [Figure 10] FIG. 10 is a functional configuration diagram of the redundancy recommended value calculator according to the first embodiment. [Figure 11] FIG. 11 is a flowchart of the redundancy recommended value calculation process according to the first embodiment. [Figure 12] FIG. 12 is a functional configuration diagram of the additional redundancy setting table processing unit according to the first embodiment. [Figure 13] FIG. 13 is a flowchart of the additional redundancy setting table process according to the first embodiment. [Figure 14] FIG. 14 is a diagram illustrating a setting screen according to the first embodiment. [Figure 15] FIG. 15 is a configuration diagram of a computer system related to the second embodiment. [Figure 16] FIG. 16 is a functional configuration diagram of a redundancy controller according to the second embodiment. [Figure 17] FIG. 17 is a flowchart of a redundancy control process according to the second embodiment. [Figure 18]FIG. 18 is a functional configuration diagram of a bandwidth-based redundancy upper limit calculator according to the second embodiment. [Figure 19] FIG. 19 is a flowchart of a redundancy upper limit calculation process according to the second embodiment. [Figure 20] FIG. 20 is a functional configuration diagram of a redundancy recommended value calculator according to the second embodiment. [Figure 21] FIG. 21 is a flowchart of a recommended redundancy value calculation process according to the second embodiment. [Figure 22] FIG. 22 is a functional configuration diagram of the application-specific setting table processing unit according to the second embodiment. [Diagram 23] FIG. 23 is a flowchart of the application-specific setting table process according to the second embodiment. [Figure 24] FIG. 24 is a diagram illustrating a setting screen according to the second embodiment. [Diagram 25] FIG. 25 is a functional configuration diagram of a redundancy controller according to the third embodiment. [Figure 26] FIG. 26 is a flowchart of a redundancy control process according to the third embodiment. [Figure 27] FIG. 27 is a functional configuration diagram of a redundancy arbitrator according to the third embodiment. [Figure 28] FIG. 28 is a flowchart of a redundancy arbitration process according to the third embodiment. [Figure 29] FIG. 29 is a diagram illustrating an arbiter setting screen according to the third embodiment. [Diagram 30] FIG. 30 is a functional configuration diagram of the application-specific setting table processing unit according to the third embodiment. [Diagram 31] FIG. 31 is a flowchart of the application-specific setting table process according to the third embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0016] The following embodiments will be described with reference to the drawings. Note that the following embodiments do not limit the scope of the invention, and not all of the elements and combinations thereof described in the embodiments are necessarily essential to the solution of the invention.
[0017] In the following description, information may be described using the expression "AAA table", but the information may be expressed in any data structure. In other words, to show that the information does not depend on the data structure, the "AAA table" may be called "AAA information".
[0018] FIG. 1 is a hardware configuration diagram of a computer system according to an embodiment.
[0019] The computer system 1 includes a plurality of servers 500 and a network 400 that connects the plurality of servers 500 together.
[0020] Server 500 is composed of a computer such as a general-purpose server or a PC (Personal Computer), and includes a CPU (Central Processing Unit) 510 as an example of a processor, memory 520 as an example of a storage unit, and one or more network I / Fs (network interfaces) 530.
[0021] The network I / F 530 is, for example, an interface such as a wired LAN card or a wireless LAN card, and communicates with other devices (for example, the server 500) via the network 400. When there are multiple network I / Fs 530, they may be connected to the same network switch 410 of the network 400, or may be connected to different network switches 410.
[0022] The CPU 510 executes various processes according to programs stored in the memory 520 .
[0023] The memory 520 is, for example, a RAM (RANDOM ACCESS MEMORY), and stores the program executed by the CPU 510 (redundancy control program) and other necessary information.
[0024] The network 400 has a plurality of network switches 410. The network 400 has redundant connection paths between the network switches 410 so that a plurality of redundant communication paths can be set for a pair of communicating servers 500, and has a function of automatically recovering communication between the servers 500 by automatically setting an alternative connection path even if the network switch 410 fails or is replaced due to planned maintenance or the like. Therefore, even if packets cannot pass through some of the network switches 410 due to a failure or replacement, it is possible to prevent the state in which communication between the servers 500 is disabled from continuing.
[0025] In this computer system 1, if any problem actually occurs within the network 400, communication packets will be lost (packet loss will occur), and the server 500 (e.g., software running within the server 500) will perform a packet retransmission process to restore communication.
[0026] In the server 500, retransmission processing in generally used TCP / IP communication is mainly performed by two types of triggers as shown below.
[0027] Fig. 2 is a diagram for explaining packet loss detection and data retransmission. Fig. 2(A) shows packet loss detection and data retransmission processing in the case where communication frequency is sparse, and Fig. 2(B) shows packet loss detection and data retransmission processing in the case where communication frequency is high.
[0028] When communication between node A and node B is infrequent, as shown in FIG. 2(A), the transmitting node transmits a packet, and if the transmitting node does not receive an acknowledgement (ACK) signal from the receiving node for a certain period of time, and the retransmission timeout time set at the time of transmission has elapsed, the transmitting node retransmits the packet. The retransmission timeout time is set longer than the general communication delay time, and is set to, for example, 200 milliseconds as the minimum time. If the transmitting node does not receive an acknowledgement signal in one retransmission, the transmitting node repeats waiting and retransmission while increasing the timeout time until communication is successful. In this case, it takes a relatively long time before the packet can be transmitted normally.
[0029] On the other hand, when communication is frequent, as shown in Fig. 2(B), if some packets are lost but the subsequent packets arrive at the receiving node first, the receiving node will respond with a special reception response, allowing the transmitting node to detect the packet loss early. In this case, the transmitting node will perform retransmission operations early, so the time to recovery will be relatively short.
[0030] Next, a preferred communication method for each communication frequency will be described.
[0031] FIG. 3 is a diagram for explaining a preferred communication method when communication frequency is sparse, and FIG. 4 is a diagram for explaining a preferred communication method when communication frequency is frequent.
[0032] When communication is infrequent, it is desirable to shorten the time to recovery by sending duplicated data over multiple communication paths as shown in Figure 3. Even if a packet loss occurs on one of the communication paths, communication can be continued by using packets that arrive on other paths. However, with this communication method, the communication volume becomes N times the amount of data to be sent, so the available communication bandwidth is reduced to 1 / N of the maximum bandwidth. On the other hand, when communication is dense, it is desirable to maximize bandwidth utilization by transmitting data over multiple communication paths without duplicating the data, in the hope that early retransmission will be applied, as shown in Figure 4.
[0033] Thus, in an application, a trade-off exists between realizing availability and maximizing available bandwidth, and the optimal degree of redundancy changes dynamically depending on the frequency of communication.
[0034] In addition, when multiple applications are running on one server, it is not necessarily necessary to provide high availability with the same redundancy for all applications. For example, among applications that operate a storage system, there are applications that perform communication that requires particularly high availability, such as alive-or-dead monitoring communication performed to maintain the operational health of the system. In such applications, although the amount of data transferred is small, a communication failure may cause the system health to be unable to be maintained, so it is desirable to prioritize high availability over the maximum available bandwidth and maintain high redundancy. On the other hand, for example, there are applications that handle user data, which can perform retries by requesting the user to retry, and which require high maximum performance, so that the maximum available bandwidth should be prioritized over communication availability, and in such applications, the redundancy may be low.
[0035] In this way, when there are multiple applications, such as when multiple applications communicate in cooperation with each other to realize a single service, it is possible to balance available bandwidth and high availability by adjusting the operation to determine whether or not it is necessary to increase redundancy for each application.
[0036] In addition, in an environment where a pay-per-use system is used for communication traffic, it may not be appropriate to incur excessive communication costs for the sake of high availability communication. In cases where multiple applications exist, it may be preferable to appropriately adjust the allocation of redundancy so as to suppress communication costs.
[0037] In the following description of the embodiments, it is assumed that, for example, the application 200 (200a, 200b) is deployed in a memory 520 mounted on a server 500 and executed by a CPU 510. For example, if the server 500 is virtualized, the application 200 may be executed on a virtual machine called an instance. EXAMPLES
[0038] Next, a description will be given of a computer system according to embodiment 1. In embodiment 1, an example is given in which there is one application for which redundancy is dynamically adjusted.
[0039] FIG. 5 is a configuration diagram of a computer system related to the first embodiment.
[0040] The computer system 1A includes a plurality of servers 500 (500a, 500b), and the servers 500a and 500b are connected via a network 400.
[0041] The server 500a is an example of a redundancy control device, and includes a redundancy controller 100, an application 200a, and a communication system 300a. The server 500a may execute one or more applications (non-target applications) that are not targets for dynamically adjusting redundancy, and the communication system 300a may perform communication processing for the non-target applications. The redundancy controller 100, the application 200a, and the communication system 300a are mainly configured by the CPU 510 executing programs. The server 500b includes an application 200b and a communication system 300b.
[0042] The application 200a receives a data I / O request (input / output request) for the server 500b from, for example, a terminal not shown, and exchanges (input / output) the target data with the application 200b of the server 500b. Fig. 5 shows an example in which the application 200a transmits data to the application 200b.
[0043] In addition, when transmitting data, the application 200a calculates the communication bandwidth predicted to be used in the communication (predicted bandwidth: predicted communication bandwidth to be used) based on the data size of the data that is the subject of the data I / O request, and passes it to the redundancy controller 100.
[0044] The redundancy controller 100 determines an appropriate redundancy for the transmission of data of the application 200a by the communication system 300a based on the predicted bandwidth, and sets the redundancy in the communication system 300a.
[0045] The communication system 300a communicates with another communication system 300 (for example, the communication system 300b) according to, for example, MPTCP (MultiPath TCP) / IP, using multiple paths on the network 400, regarding data transmitted and received by the application 200a. At this time, the communication system 300a performs communication in which data to be transmitted is made redundant according to a set redundancy, that is, communication in which the data to be transmitted is copied according to the redundancy and transmitted via different paths.
[0046] The communication system 300b communicates data transmitted and received by the application 200a with another communication system 300 (for example, the communication system 300a) according to, for example, MPTCP (MultiPath TCP) / IP, using multiple paths on the network 400. For example, when the data to be received is made redundant, the communication system 300b extracts necessary data from the redundant data and passes it to the application 200b.
[0047] The application 200b receives data from the application 200a via the communication system 300b, and executes a predetermined process, such as storing the data in a predetermined storage.
[0048] In the computer system 1A, when an application 200a running on a server 500a transmits data to an application 200b running on a server 500b, the application 200a transmits a predicted bandwidth to the redundancy controller 100 and passes the data to be transmitted to the communication system 300a. The redundancy controller 100 determines a redundancy to be used when transmitting the data of the application 200a based on the predicted bandwidth, and sets the redundancy in the communication system 300a. The communication system 300a makes the data redundant according to the redundancy set by the redundancy controller 100, and transmits the data to the communication system 300b of the server 500b using multiple paths in the network 400.
[0049] The communication system 300b of the server 500b receives the redundantly transmitted data via the network, extracts necessary data from the redundant data, and passes the necessary data to the application 200b. The application 200b executes a predetermined process using the data received from the communication system 300b.
[0050] According to this computer system 1A, the transmission target data of the application 200a can be dynamically transmitted between the servers 500a and 500b with an appropriate degree of redundancy.
[0051] Next, the redundancy controller 100 will be described in detail.
[0052] FIG. 6 is a functional configuration diagram of the redundancy controller according to the first embodiment.
[0053] The redundancy controller 100 includes a process controller 101 , a bandwidth-based redundancy upper limit calculator 1100 , a redundancy recommendation value calculator 1200 , a register 1010 , a register 1020 , a minimum calculator 1030 , and a maximum calculator 1040 .
[0054] The process controller 101 controls the exchange of various information between the application 200 and the communication system 300, and the processes and exchange of information by each unit in the redundancy controller 100. Here, the communication system 300 includes an MPTCP / IP driver 310 and a NIC (Network Interface Card) driver 320. The MPTCP / IP driver 310 executes communication according to MPTCP / IP. Specifically, the MPTCP / IP driver 310 copies the data to be communicated N times according to the set redundancy N, and transmits each copy to the sending side via a different route. The NIC driver 320 executes communication according to the NIC.
[0055] The bandwidth-based redundancy upper limit calculator 1100 calculates and outputs an upper limit value of redundancy (redundancy upper limit value) for an application in consideration of the bandwidth available to the communication system 300. Details of the bandwidth-based redundancy upper limit calculator 1100 will be described later.
[0056] The recommended redundancy value calculator 1200 calculates and outputs a recommended value of redundancy (recommended redundancy value) when transmitting data of the application 200. The recommended redundancy value calculator 1200 will be described in detail later.
[0057] The register 1010 stores the minimum value of redundancy (minimum redundancy value) in the communication of the application 200. The register 1020 stores the setting value of the redundancy value in the communication of the application 200 (redundancy setting value: current redundancy).
[0058] The minimum calculator 1030 outputs the smaller of the redundancy upper limit value output from the bandwidth-based redundancy upper limit calculator 1100 and the recommended redundancy value output from the recommended redundancy value calculator 1200. Therefore, the value output from the minimum calculator 1030 is always equal to or less than the redundancy upper limit value.
[0059] The maximum calculator 1040 outputs the larger of the output value from the minimum calculator 1030 and the minimum redundancy value in the register 1010. The output value is stored as a redundancy setting value in the register 1020 by the process controller 101, and the redundancy setting value is set in the MPTCP / IP driver 310 of the communication system 300 by the process controller 101.
[0060] Next, the redundancy control process performed by the redundancy controller 100 will be described.
[0061] FIG. 7 is a flowchart of a redundancy control process according to the first embodiment.
[0062] The redundancy control process is executed, for example, when the redundancy controller 100 receives a predicted bandwidth from the application 200. Note that the redundancy control process is not limited to this, and may be executed when there is a change in the packet loss rate or when the total bandwidth used changes by a certain amount or more.
[0063] First, the process controller 101 obtains from the NIC driver 320 the maximum bandwidth (maximum bandwidth) that can be used on the network 400 by the communication system 300, the overall bandwidth (total bandwidth used) that is actually being used by the communication system 300, and the packet loss rate (an example of a communication quality index) in communication on the network 400 (10000).
[0064] Next, the processing controller 101 passes the predicted bandwidth, the maximum bandwidth, and the total bandwidth used to a bandwidth-based redundancy upper limit calculator 1100, obtains the redundancy setting value (current redundancy) from the register 1020, passes it to the bandwidth-based redundancy upper limit calculator 1100, and receives the output (redundancy upper limit value) from the bandwidth-based redundancy upper limit calculator 1100 (10010).
[0065] Next, the process controller 101 passes the packet loss rate to the redundancy recommendation value calculator 1200 and receives an output (redundancy recommendation value) from the redundancy recommendation value calculator 1200 (10020).
[0066] Next, the process controller 101 inputs the redundancy upper limit value and the redundancy recommended value to the minimum calculator 1030. The minimum calculator 1030 determines the smaller value of the redundancy upper limit value and the redundancy recommended value as the redundancy candidate value and outputs it to the process controller 101 (10030).
[0067] Next, the process controller 101 inputs the redundancy candidate value to a maximum calculator 1040, and obtains the minimum redundancy value from the register 1010 and inputs it to the maximum calculator 1040. The maximum calculator 1040 determines the larger of the redundancy candidate value and the minimum redundancy value as the redundancy setting value and outputs it to the process controller 101 (10040).
[0068] The process controller 101 sets the redundancy setting value in the register 1020, sets it in the MPTCP / IP driver 310 of the communication system 300 as the redundancy to be used (10050), and puts the redundancy controller 100 into a standby state. As a result, in the communication system 300, redundancy is performed according to the redundancy setting value and communication is performed.
[0069] Next, the bandwidth-based redundancy upper limit calculator 1100 will be described in detail.
[0070] FIG. 8 is a functional configuration diagram of the bandwidth-based redundancy upper limit calculator according to the first embodiment.
[0071] The bandwidth-based redundancy upper limit calculator 1100 includes a process controller 1101 , a delay unit 1110 , a multiplier 1120 , a subtractor 1130 , a subtractor 1131 , and an integer divider 1140 .
[0072] The process controller 1101 receives various information (maximum bandwidth, total bandwidth in use, predicted bandwidth, current redundancy) input by the process controller 101, and controls the processing and information exchange by each part in the bandwidth-based redundancy upper limit calculator 1100.
[0073] The delay unit 1110 holds and outputs the previous predicted bandwidth (previous predicted bandwidth).
[0074] The multiplier 1120 multiplies the input current redundancy by the previous predicted bandwidth to calculate the current bandwidth used by the application 200 (target application) (current bandwidth used), and outputs the result.
[0075] The subtractor 1130 subtracts the currently used bandwidth from the input total used bandwidth to calculate the used bandwidth used by applications other than the target application (other used bandwidth), and outputs the calculated bandwidth.
[0076] The subtractor 1131 subtracts the other available bandwidth from the input maximum bandwidth to calculate the currently available bandwidth (available bandwidth), and outputs the result.
[0077] An integer divider 1140 divides the available bandwidth by the predicted bandwidth, rounds down the quotient to an integer value, and outputs the integer value as the redundancy upper limit value.
[0078] Next, the redundancy upper limit calculation process performed by the bandwidth-based redundancy upper limit calculator 1100 will be described.
[0079] FIG. 9 is a flowchart of the redundancy upper limit calculation process according to the first embodiment.
[0080] The redundancy upper limit calculation process is executed when the bandwidth-based redundancy upper limit calculator 1100 receives a calculation instruction (maximum bandwidth, total bandwidth in use, predicted bandwidth, current redundancy) from the process controller 101, for example.
[0081] First, the process controller 1101 obtains the previous predicted bandwidth from the delay unit 1110, and sets the input predicted bandwidth in the delay unit 1110 (11000).
[0082] Next, the process controller 1101 inputs the previous predicted bandwidth and the input current redundancy to the multiplier 1120. The multiplier 1120 multiplies the current redundancy by the previous predicted bandwidth to calculate the currently used bandwidth, and outputs it to the process controller 1101 (11010).
[0083] Next, the process controller 1101 inputs the current bandwidth in use and the total bandwidth in use to the subtractor 1130. The subtractor 1130 subtracts the current bandwidth in use from the total bandwidth in use to calculate the other bandwidth in use, and outputs the calculated other bandwidth in use to the process controller 1101 (11020).
[0084] Next, the process controller 1101 inputs the input maximum bandwidth and other available bandwidth to the subtractor 1131. The subtractor 1131 subtracts the other available bandwidth from the maximum bandwidth to calculate the available bandwidth, and outputs the calculated bandwidth to the process controller 1101 (11030).
[0085] Next, the process controller 1101 inputs the available bandwidth and the input predicted bandwidth to an integer divider 1140. The integer divider 1140 divides the available bandwidth by the predicted bandwidth, rounds down the quotient to an integer value, and outputs the integer value to the process controller 1101 as a redundancy upper limit value (11040).
[0086] Next, the process controller 1101 outputs the redundancy upper limit value to the process controller 101 (11050), and puts the bandwidth-based redundancy upper limit value calculator 1100 into a standby state. According to this redundancy upper limit value calculation process, it is possible to appropriately calculate the redundancy upper limit value, which is the upper limit of the redundancy possible when transmitting data of the predicted bandwidth in the communication state at that time.
[0087] Next, the redundancy recommendation value calculator 1200 will be described in detail.
[0088] FIG. 10 is a functional configuration diagram of the redundancy recommended value calculator according to the first embodiment.
[0089] The redundancy recommended value calculator 1200 includes a process controller 1201 , an additional redundancy setting table processor 1210 , a register 1220 , a register 1230 , an adder 1240 , and a minimum calculator 1250 .
[0090] The process controller 1201 receives the packet loss rate input from the process controller 101 , and controls the processes and information exchanges of each unit in the redundancy recommended value calculator 1200 .
[0091] The additional redundancy setting table processing unit 1210 receives the packet loss rate and outputs the corresponding additional redundancy, including the additional redundancy setting table 1211 indicating the correspondence between the packet loss rate and the redundancy to be added (additional redundancy: an example of redundancy specifying information). The additional redundancy setting table processing unit 1210 will be described in detail later.
[0092] The register 1220 stores a basic value of redundancy (basic redundancy value) in communication of the application 200. The register 1230 stores a maximum value of redundancy (maximum redundancy value) in communication of the application 200.
[0093] The adder 1240 adds the redundancy basic value and the additional redundancy to calculate and output a candidate redundancy recommended value.
[0094] The minimum calculator 1250 outputs the smaller of the maximum redundancy value and the candidate redundancy recommended value as the redundancy recommended value.
[0095] Next, the recommended redundancy value calculation process performed by the recommended redundancy value calculator 1200 will be described.
[0096] FIG. 11 is a flowchart of the redundancy recommended value calculation process according to the first embodiment.
[0097] The redundancy recommended value calculation process is executed when the redundancy recommended value calculator 1200 receives a calculation instruction (packet loss rate) from the process controller 101, for example.
[0098] First, the process controller 1201 sends the acquired packet loss rate to the additional redundancy setting table processor 1210, and acquires an additional redundancy value from the additional redundancy setting table processor 1210 (12000).
[0099] Next, the process controller 1201 inputs the additional redundancy value to the adder 1240, and obtains the redundancy basic value from the register 1220 and inputs it to the adder 1240. The adder 1240 adds the redundancy basic value and the additional redundancy value to calculate a candidate redundancy recommended value, and outputs it to the process controller 1201 (12010).
[0100] Next, the process controller 1201 inputs the candidate redundancy recommended value to the minimum calculator 1250, and obtains the maximum redundancy value from the register 1230 and inputs it to the minimum calculator 1250. The minimum calculator 1250 outputs the smaller of the maximum redundancy value and the candidate redundancy recommended value to the process controller 1201 as the redundancy recommended value (12020).
[0101] Next, the process controller 1201 outputs the recommended redundancy value to the process controller 101 (12030), and puts the recommended redundancy value calculator 1200 into a standby state. According to this recommended redundancy value calculation process, it is possible to appropriately calculate the recommended redundancy value, which is an appropriate redundancy value taking into account the packet loss rate, and it is possible to reduce the network load and power consumption.
[0102] Next, the additional redundancy setting table processing unit 1210 will be described in detail.
[0103] FIG. 12 is a functional configuration diagram of the additional redundancy setting table processing unit according to the first embodiment.
[0104] The additional redundancy setting table processing unit 1210 performs processing for managing the additional redundancy setting table 1211 .
[0105] The additional redundancy setting table 1211 is a table that stores the correspondence between the packet loss rate and an appropriate additional redundancy value, and stores an entry for each threshold value of the packet loss rate. The entry of the additional redundancy setting table 1211 includes items of a packet loss rate threshold value 1211a and an additional redundancy value 1211b. The packet loss rate threshold value 1211a stores the threshold value of the packet loss rate (packet loss rate threshold value) corresponding to the entry. The additional redundancy value 1211b stores the additional redundancy value when the packet loss rate exceeds the packet loss rate threshold value corresponding to the entry (when the packet loss rate is equal to or less than the next largest packet loss rate threshold value of other entries). Therefore, in the example of FIG. 12, when the packet loss rate is 0.01 or less, the additional redundancy value is 0, when the packet loss rate is greater than 0.01 and less than 0.1, the additional redundancy value is 1, and when the packet loss rate is greater than 0.1 and less than 0.5, the additional redundancy value is 2. In this embodiment, the information indicates the relationship between the packet loss rate and the added redundancy value, but the present invention is not limited to this, and the information may indicate the relationship between the packet loss rate and the redundancy.
[0106] FIG. 13 is a flowchart of the additional redundancy setting table process according to the first embodiment.
[0107] The additional redundancy setting table process is executed when a packet loss rate is received.
[0108] The additional redundancy setting table processing unit 1210 compares the received packet loss rate with the packet loss rate threshold value in the additional redundancy setting table 1211, and searches for an entry having a threshold value smaller than the received packet loss rate (13000). If there are multiple entries having threshold values smaller than the received packet loss rate, the entry with the largest threshold value among those entries is selected.
[0109] Next, the additional redundancy setting table processing unit 1210 judges whether or not an entry has been found by the search (13010).
[0110] As a result, if an entry is found by the search (13010: Yes), the additional redundancy setting table processing unit 1210 outputs the additional redundancy value of the found entry to the process controller 1201 (13020) and returns to the standby state.
[0111] On the other hand, if no entry is found by the search (13010: No), the additional redundancy setting table processing unit 1210 outputs a default additional redundancy value (for example, 0) (13100) and returns to the standby state.
[0112] Next, a setting screen for setting the additional redundancy setting table 1211 etc. will be described.
[0113] FIG. 14 is a diagram illustrating a setting screen according to the first embodiment.
[0114] The setting screen 5000 includes an additional redundancy setting table setting interface 5010 , a maximum redundancy value setting interface 5020 , a basic redundancy value setting interface 5030 , a minimum redundancy value setting interface 5040 , a Save button 5050 , and a Close button 5060 .
[0115] The additional redundancy setting table setting interface 5010 has an input area for inputting values corresponding to each item (packet loss rate threshold 1211a, additional redundancy value 1211b) of the additional redundancy setting table 1211. The maximum redundancy setting interface 5020 has an area for inputting the maximum redundancy value to be set in the register 1230. The basic redundancy value setting interface 5030 has an area for inputting the basic redundancy value to be set in the register 1220. The minimum redundancy value setting interface 5040 has an area for inputting the minimum redundancy value to be set in the register 1010.
[0116] The Save button 5050 is a button that accepts an instruction to set each value set on the setting screen 5000 in the respective setting destination (storage destination). When the Save button 5050 is pressed, the additional redundancy setting table processing unit 1210 stores the values of each item inputted to the additional redundancy setting table setting interface 5010 in the additional redundancy setting table 1211. The Close button 5060 is a button that accepts an instruction to close the setting screen 5000, and when pressed, the setting screen 5000 is closed.
[0117] In this embodiment, values are set in the additional redundancy setting table 1211 etc. using a setting screen 5000 similar to a graphical user interface (GUI). However, the method of setting values in the additional redundancy setting table 1211 etc. is not limited to this, and may be set using, for example, a command line interface (CLI). EXAMPLES
[0118] Next, a description will be given of a computer system according to Example 2. Example 2 is an example of a computer system that can handle a case where there are a plurality of applications (target applications) for which redundancy is dynamically adjusted.
[0119] When there are multiple applications for which redundancy is to be dynamically adjusted, the multiple applications share the same communication system 300, and therefore it is necessary to mediate the increase in redundancy among the multiple applications so as not to exceed the maximum bandwidth available in the communication system 300. Therefore, the computer system 1B according to the second embodiment is provided with a function for mediating the increase in redundancy among the multiple applications in comparison with the computer system 1A according to the first embodiment.
[0120] Fig. 15 is a configuration diagram of a computer system according to Example 2. Note that the same reference numerals are used to designate the same functional parts as those in the computer system 1A according to Example 1.
[0121] The computer system 1B has a plurality of servers 501 (501a, 501b), and the servers 501a and 501b are connected via the network 400. The hardware configuration of the server 501 is similar to that of the server 500 shown in FIG. 1, and in the following description, the same reference numerals as those of the server 500 are used for the hardware configuration.
[0122] The server 501a executes a plurality of applications 200 (200a, 200c, 200e) for which redundancy is to be dynamically adjusted. The server 501a includes a redundancy controller 110 instead of the redundancy controller 100 in the server 500a. The server 501a may execute one or more applications (non-target applications) for which redundancy is not to be dynamically adjusted, and the communication system 300a may perform communication processing for the non-target applications. The redundancy controller 110 is mainly configured by the CPU 510 executing a program. The server 501b includes a plurality of applications 200 (200b, 200d, 200f) and a communication system 300b.
[0123] The application 200a (200c, 200e), for example, accepts a data I / O request to the server 501b from a terminal not shown, and exchanges the target data with the application 200b (200d, 200f) of the server 501b. Fig. 15 shows an example in which the application 200a transmits data to the application 200b, the application 200c transmits data to the application 200d, and the application 200e transmits data to the application 200f.
[0124] The redundancy controller 110 dynamically adjusts the redundancy in communication for each application.
[0125] Next, the redundancy controller 110 will be described in detail.
[0126] Fig. 16 is a functional configuration diagram of a redundancy controller according to Example 2. In Fig. 16, the same components as those in the redundancy controller 100 according to Example 1 are denoted by the same reference numerals.
[0127] The redundancy controller 110 does not include the registers 1010 and 1020 of the redundancy controller 100, but newly includes an application-specific setting table processing unit 2000, a processing controller 111 instead of the processing controller 101, a bandwidth-based redundancy upper limit calculator 2100 instead of the bandwidth-based redundancy upper limit calculator 1100, and a redundancy recommended value calculator 2200 instead of the redundancy recommended value calculator 1200.
[0128] In this embodiment, the application 200 is configured to output an application identifier (application ID) in addition to the predicted bandwidth, and the redundancy controller 110 receives the application identifier and the predicted bandwidth from the application 200 .
[0129] The bandwidth-based redundancy upper limit calculator 2100 calculates and outputs a redundancy upper limit value in the bandwidth available to the communication system 300. The bandwidth-based redundancy upper limit calculator 2100 will be described later in detail.
[0130] The recommended redundancy value calculator 2200 calculates and outputs a recommended redundancy value at the time of transmitting data of the application 200. The recommended redundancy value calculator 2200 will be described in detail later.
[0131] The application-specific setting table processing unit 2000 manages an application-specific setting table 2001 that stores setting information specific to each application 200. The application-specific setting table processing unit 2000 will be described in detail later.
[0132] Next, the redundancy control process performed by the redundancy controller 110 will be described.
[0133] FIG. 17 is a flowchart of a redundancy control process according to the second embodiment.
[0134] The redundancy control process is executed, for example, when the redundancy controller 110 receives an application identifier and a predicted bandwidth from the application 200. Note that the redundancy control process is not limited to this, and may be executed when there is a change in the packet loss rate or when the total bandwidth in use has changed by a certain amount or more.
[0135] First, the process controller 111 obtains the maximum bandwidth, the total bandwidth in use, and the packet loss rate from the NIC driver 320 (10000).
[0136] Next, the processing controller 111 passes the acquired application identifier and predicted bandwidth to the application-specific setting table processing unit 2000, and receives output (previous predicted bandwidth, priority coefficient, current redundancy, basic redundancy value, maximum redundancy value) from the application-specific setting table processing unit 2000 (20010).
[0137] Next, the processing controller 111 passes the obtained predicted bandwidth, maximum bandwidth, total bandwidth in use, current redundancy, priority coefficient, and previous predicted bandwidth to the bandwidth-based redundancy upper limit calculator 2100, and receives the output (redundancy upper limit value) from the bandwidth-based redundancy upper limit calculator 2100 (20015).
[0138] Next, the process controller 111 passes the packet loss rate, the redundancy basic value, and the redundancy maximum value to the redundancy recommended value calculator 2200, and receives the output (the redundancy recommended value) from the redundancy recommended value calculator 2200 (20020).
[0139] Next, the process controller 111 inputs the redundancy upper limit value and the redundancy recommended value to the minimum calculator 1030. The minimum calculator 1030 determines the smaller value of the redundancy upper limit value and the redundancy recommended value as the redundancy candidate value and outputs it to the process controller 111 (20030).
[0140] Next, the process controller 111 inputs the redundancy candidate value and the redundancy minimum value to the maximum calculator 1040. The maximum calculator 1040 determines the larger of the redundancy candidate value and the redundancy minimum value as the redundancy setting value and outputs it to the process controller 111 (20040).
[0141] Next, the process controller 111 sets the redundancy setting value as the redundancy to be used in the MPTCP / IP driver 310 of the communication system 300, passes the redundancy setting value to the application-specific setting table processor 2000, updates the current redundancy (20050), and sets the redundancy controller 110 to a standby state. As a result, in the communication system 300, redundancy is provided according to the setting value and communication is performed.
[0142] Next, the bandwidth-based redundancy upper limit calculator 2100 will be described in detail.
[0143] 18 is a functional configuration diagram of a bandwidth-based redundancy upper limit calculator according to the embodiment 2. Note that the same components as those of the bandwidth-based redundancy upper limit calculator 1100 according to the embodiment 1 are denoted by the same reference numerals.
[0144] The bandwidth-based redundancy upper limit calculator 2100 does not include the delay unit 1110 but further includes a multiplier 2110 , includes a process controller 2101 instead of the process controller 1101 , and includes an integer divider 2130 instead of the integer divider 1140 .
[0145] The process controller 2101 receives various information (maximum bandwidth, total bandwidth in use, current redundancy, predicted bandwidth, priority coefficient, previous predicted bandwidth) input by the process controller 111, and controls the processing and information exchange by each part in the bandwidth-based redundancy upper limit calculator 2100.
[0146] The multiplier 2110 multiplies the input predicted bandwidth by the priority coefficient to calculate and output a priority-considered bandwidth, which is a bandwidth for the application 200 (target application) taking into consideration the priority of the application.
[0147] The integer divider 2130 divides the available bandwidth by the priority consideration bandwidth, rounds down the quotient to an integer value, and outputs the integer value as the redundancy upper limit value.
[0148] Next, the redundancy upper limit calculation process performed by the bandwidth-based redundancy upper limit calculator 2100 will be described.
[0149] Fig. 19 is a flowchart of the redundancy upper limit value calculation process according to the embodiment 2. In Fig. 19, the same process steps as those in the redundancy upper limit value calculation process according to the embodiment 1 are denoted by the same reference numerals.
[0150] The redundancy upper limit calculation process is executed, for example, when the bandwidth-based redundancy upper limit calculator 2100 receives a calculation instruction (maximum bandwidth, total bandwidth in use, current redundancy, predicted bandwidth, priority coefficient, previous predicted bandwidth) from the process controller 111.
[0151] First, the process controller 2101 executes steps 11010, 11020, and 11030 in the same manner as the process controller 1101.
[0152] Next, the process controller 2101 inputs the predicted bandwidth and the priority coefficient to the multiplier 2110. The multiplier 2110 multiplies the predicted bandwidth and the priority coefficient to calculate a priority-considered bandwidth, and outputs the result to the process controller 2101 (21030).
[0153] Next, the process controller 2101 inputs the available bandwidth and the priority considered bandwidth to an integer divider 2130. The integer divider 2130 divides the available bandwidth by the priority considered bandwidth, rounds down the quotient to an integer value, and outputs the integer value to the process controller 2101 as a redundancy upper limit value (21040).
[0154] Next, the process controller 2101 outputs the redundancy upper limit value to the process controller 111 (21050), and puts the bandwidth-based redundancy upper limit value calculator 2100 into a standby state. This redundancy upper limit value calculation process makes it possible to properly calculate the redundancy upper limit value, which is the upper limit of the redundancy possible when transmitting data of the predicted bandwidth in the communication state at that time, taking into account the priority of the application.
[0155] Next, the redundancy recommendation value calculator 2200 will be described in detail.
[0156] 20 is a functional configuration diagram of a recommended redundancy value calculator according to the embodiment 2. Note that the same components as those in the recommended redundancy value calculator 1200 according to the embodiment 1 are denoted by the same reference numerals.
[0157] The redundancy recommendation value calculator 2200 does not include the registers 1220 and 1230 , and includes a process controller 2201 instead of the process controller 1201 .
[0158] The process controller 2201 receives various information (packet loss rate, maximum redundancy value, basic redundancy value) input by the process controller 111, and controls the processing and information exchange by each unit in the recommended redundancy value calculator 2200 in an integrated manner.
[0159] Next, the recommended redundancy value calculation process performed by the recommended redundancy value calculator 2200 will be described.
[0160] Fig. 21 is a flowchart of the recommended redundancy value calculation process according to the embodiment 2. In Fig. 21, the same process steps as those in the recommended redundancy value calculation process according to the embodiment 1 are denoted by the same reference numerals.
[0161] The recommended redundancy value calculation process is executed when the recommended redundancy value calculator 2200 receives a calculation instruction (packet loss rate, basic redundancy value, maximum redundancy value) from the process controller 111, for example.
[0162] First, the process controller 2201 executes step 12000 in the same manner as the process controller 1201 .
[0163] Next, the process controller 2201 inputs the redundancy basic value and the additional redundancy value to the adder 1240. The adder 1240 adds the redundancy basic value and the additional redundancy value to calculate a candidate redundancy recommended value, and outputs it to the process controller 2201 (22010).
[0164] Next, the process controller 2201 inputs the maximum redundancy value and the candidate redundancy recommended value to the minimum calculator 1250. The minimum calculator 1250 outputs the smaller of the maximum redundancy value and the candidate redundancy recommended value as the redundancy recommended value to the process controller 2201 (22020).
[0165] Next, the process controller 2201 outputs the recommended redundancy value to the process controller 111 (22030), and puts the recommended redundancy value calculator 2200 into a standby state. According to this recommended redundancy value calculation process, it is possible to calculate a recommended redundancy value that is an appropriate redundancy value when the packet loss rate is taken into consideration, and it is possible to reduce the network load and power consumption.
[0166] Next, the application-specific setting table processing unit 2000 will be described in detail.
[0167] FIG. 22 is a functional configuration diagram of the application-specific setting table processing unit according to the second embodiment.
[0168] The application-specific setting table processing unit 2000 performs processing for managing the application-specific setting table 2001 .
[0169] The application-specific setting table 2001 is a table for managing various information for each application, and stores an entry for each application. The entry of the application-specific setting table 2001 includes items of an application ID 2001a, a priority coefficient 2001b, a maximum redundancy value 2001c, a basic redundancy value 2001d, a minimum redundancy value 2001e, a current redundancy value 2001f, and a predicted bandwidth (previous) 2001g.
[0170] The application ID 2001a stores application identification information of the application corresponding to the entry. The priority coefficient 2001b stores a priority coefficient (priority coefficient: communication priority) for the bandwidth used by the application corresponding to the entry. The priority coefficient is, for example, 1.0 for an application with the highest priority (which can use the bandwidth preferentially), and the priority coefficient increases as the priority decreases. The maximum redundancy value 2001c stores a maximum value of redundancy (maximum redundancy value) for the application corresponding to the entry. The basic redundancy value 2001d stores a basic value of redundancy (basic redundancy value) for the application corresponding to the entry. The minimum redundancy value 2001e stores a minimum value of redundancy (minimum redundancy value) for the application corresponding to the entry. The current redundancy 2001f stores a current redundancy (current redundancy) set for the application corresponding to the entry. The predicted bandwidth (previous) 2001g stores a previous predicted bandwidth for the application corresponding to the entry.
[0171] FIG. 23 is a flowchart of the application-specific setting table process according to the second embodiment.
[0172] The application-specific setting table processing is executed by the application-specific setting table processing unit 2000 when an application identifier and a predicted bandwidth are received, or when an application identifier and a current redundancy are received. When the application-specific setting table processing unit 2000 receives an application identifier and a predicted bandwidth, it executes steps 23000 to 23120, and when it receives an application identifier and a current redundancy, it executes steps 23200 to 23220.
[0173] When the application-specific setting table processing unit 2000 receives an application identifier and a predicted bandwidth, it searches for an entry in the application-specific setting table 2001 that matches the application identifier (23000), and determines whether or not an entry that matches the application identifier is found (23010).
[0174] As a result, if an entry matching the application identifier is found (23010: Yes), the application-specific setting table processing unit 2000 outputs the priority coefficient, maximum redundancy value, base redundancy value, minimum redundancy value, current bandwidth, and predicted bandwidth of the found entry to the processing controller 111 (23020), updates the predicted bandwidth of the predicted bandwidth (previous) 2001g of this entry to the received predicted bandwidth (23030), and enters a standby state.
[0175] On the other hand, if no entry matching the application identifier is found (23010: No), the application-specific setting table processing unit 2000 outputs a default priority coefficient (e.g., 1.0), maximum redundancy value (e.g., 1), base redundancy value (e.g., 1), minimum redundancy value (e.g., 1), and predicted bandwidth (e.g., 0) to the processing controller 111 (23120) and goes into standby mode.
[0176] On the other hand, when the application-specific setting table processing unit 2000 receives an application identifier and a current redundancy, it searches the application-specific setting table 2001 for an entry that matches the application identifier (23200), and determines whether or not an entry that matches the application identifier is found (23210).
[0177] As a result, if an entry matching the application identifier is found (23210: Yes), the application-specific setting table processing unit 2000 updates the current redundancy of the current redundancy 2001f of the found entry to the received current redundancy width (23220) and goes into a standby state. On the other hand, if an entry matching the application identifier is not found (23210: No), the application-specific setting table processing unit 2000 goes into a standby state.
[0178] Next, a setting screen for setting the application-specific setting table 2001 will be described.
[0179] FIG. 24 is a diagram illustrating a setting screen according to the second embodiment.
[0180] The settings screen 5100 includes an application-specific settings table setting interface 5110 , a Save button 5120 , and a Close button 5130 .
[0181] The application-specific setting table setting interface 5110 has an input area for inputting values corresponding to a plurality of items (application ID 2001a, priority coefficient 2001b, redundancy maximum value 2001c, redundancy basic value 2001d, redundancy minimum value 2001e) set by the user in the application-specific setting table 2001. The Save button 5120 is a button for accepting an instruction to set each value set in the application-specific setting table setting interface 5110 in the application-specific setting table 2001. When the Save button 5120 is pressed, the application-specific setting table processing unit 2000 stores the value of each item input in the application-specific setting table setting interface 5110 in the application-specific setting table 2001. The Close button 5130 is a button for accepting an instruction to close the setting screen 5100, and when pressed, the setting screen 5100 is closed.
[0182] In this embodiment, values are set in the application-specific setting table 2001 using a setting screen 5100 similar to a graphical user interface (GUI), but the method of setting values in the application-specific setting table 2001 is not limited to this, and the values may be set using, for example, a command line interface (CLI). EXAMPLES
[0183] Next, a computer system according to a third embodiment will be described. The third embodiment is an example of a computer system in which there are a plurality of applications for which redundancy is dynamically adjusted, and redundancy can be adjusted in consideration of other constraints (for example, constraints on communication costs when communication costs are metered) other than the bandwidth available to the applications.
[0184] The computer system according to the third embodiment includes a redundancy controller 120 (see FIG. 25) instead of the redundancy controller 110 in the computer system 1B according to the second embodiment.
[0185] Next, the redundancy controller 120 will be described in detail.
[0186] Fig. 25 is a functional configuration diagram of a redundancy controller according to Example 3. In Fig. 25, the same components as those in the redundancy controller 110 according to Example 2 are denoted by the same reference numerals.
[0187] The redundancy controller 120 includes a redundancy arbitrator 3300 , a process controller 121 instead of the process controller 111 , and an application-specific setting table processor 3000 instead of the application-specific setting table processor 2000 , in addition to the redundancy controller 110 .
[0188] The redundancy arbitrator 3300 adjusts the maximum redundancy value based on constraints other than the bandwidth constraints. The redundancy arbitrator 3300 will be described in detail later.
[0189] The application-specific setting table processing unit 3000 manages an application-specific setting table 2001 that stores setting information specific to each application 200. The application-specific setting table processing unit 3000 will be described in detail later.
[0190] Next, the redundancy control process performed by the redundancy controller 120 will be described.
[0191] Fig. 26 is a flowchart of the redundancy control process according to the embodiment 3. Note that the same process steps as those in the redundancy control process (see Fig. 17) according to the embodiment 2 are denoted by the same reference numerals.
[0192] The redundancy control process is executed, for example, when the redundancy controller 120 receives an application identifier and a predicted bandwidth from the application 200. Note that the redundancy control process is not limited to this, and may be executed when there is a change in the packet loss rate or when the total bandwidth in use has changed by a certain amount or more.
[0193] First, the process controller 121 executes the process of step 20000 in the same manner as the process controller 111 .
[0194] Next, the processing controller 121 passes the obtained application identifier and predicted bandwidth to the application-specific setting table processing unit 3000, and receives output (previous predicted bandwidth, priority coefficient, current redundancy, and redundancy base value) from the application-specific setting table processing unit 3000 (30010).
[0195] Next, the process controller 121 executes the process of step 20015 in the same manner as the process controller 111 .
[0196] Next, the process controller 121 sends the application identifier to the redundancy arbitrator 3300 and receives the output (maximum redundancy value after arbitration) from the redundancy arbitrator 3300 (30020).
[0197] Next, the process controller 121 passes the packet loss rate, the redundancy basic value, and the post-arbitration maximum redundancy value to the redundancy recommended value calculator 2200, and receives the output (redundancy recommended value) from the redundancy recommended value calculator 2200 (30025).
[0198] Next, the process controller 121 executes the processes of steps 20030 and 20040 in the same manner as the process controller 111 .
[0199] Next, the process controller 121 sets the redundancy setting value as the redundancy to be used in the MPTCP / IP driver 310 of the communication system 300, passes the redundancy setting value to the application-specific setting table processor 3000, updates the current redundancy (30050), and sets the redundancy controller 120 to a standby state. As a result, in the communication system 300, redundancy is provided according to the setting value and communication is performed.
[0200] Next, the redundancy arbiter 3300 will be described in detail.
[0201] FIG. 27 is a functional configuration diagram of a redundancy arbitrator according to the third embodiment.
[0202] The redundancy arbitrator 3300 includes a process controller 3301 , a parameter requester 3310 , a parameter requester 3320 , a product-accumulator 3330 , a multiplier 3340 , a comparator 3350 , a switch 3360 , a register 3370 , and a register 3380 .
[0203] The process controller 3301 receives the application identifier input by the process controller 101 , and controls the processes performed by each unit in the redundancy arbitrator 3300 .
[0204] The register 3370 stores an arbitration coefficient for calculating a value (arbitration evaluation value) corresponding to a constraint condition (additional constraint condition) used for arbitration based on the bandwidth. In this embodiment, for example, if the constraint condition is a communication charge, the arbitration coefficient is a coefficient for converting the bandwidth into a communication charge per unit time. The register 3380 stores a threshold value (arbitration threshold) of the arbitration evaluation value corresponding to the constraint condition. In this embodiment, if the constraint condition is a communication charge, the arbitration threshold is a threshold value of the communication charge per unit time (metered charge threshold).
[0205] The parameter requester 3310 passes the application identifier to the application-specific setting table processing unit 3000, and receives output from the application-specific setting table processing unit 3000 (priority coefficient, maximum redundancy value, minimum redundancy value).
[0206] The parameter requester 3320 passes the priority coefficient to the application-specific setting table processing unit 3000, receives output from the application-specific setting table processing unit 3000 (a list of current redundancy and previous predicted bandwidth of applications that have a priority coefficient less than the passed priority coefficient), and outputs it.
[0207] The multiply-and-accumulate calculator 3330 receives a list of current redundancy and predicted bandwidth of applications, calculates and outputs the bandwidth used by multiple applications corresponding to the list. The multiplier 3340 multiplies the bandwidth used by an arbitration coefficient to calculate and output an arbitration evaluation value used for comparison with the constraints. The comparator 3350 compares the arbitration evaluation value and an arbitration threshold value to determine which is larger, and outputs the comparison result. The switch 3360 determines either the maximum redundancy value or the minimum redundancy value as the maximum post-arbitration redundancy value according to the settings, and outputs the result.
[0208] Next, the redundancy arbitration process performed by the redundancy arbitrator 3300 will be described.
[0209] FIG. 28 is a flowchart of a redundancy arbitration process according to the third embodiment.
[0210] The redundancy arbitration process is executed when the redundancy arbitrator 3300 receives a calculation instruction (application identifier) from the process controller 121, for example.
[0211] First, the process controller 3301 sends the acquired application identifier to the parameter requester 3310. The parameter requester 3310 sends the application identifier to the application-specific setting table processor 3000, and acquires the output (priority coefficient, maximum redundancy value, minimum redundancy value) from the application-specific setting table processor 3000 (33000).
[0212] Next, the process controller 3301 sends the priority coefficient obtained by the parameter requester 3310 to the parameter requester 3320. The parameter requester 3320 sends the priority coefficient to the application-specific setting table processor 3000, and obtains an output (a list of pairs of current redundancy and previous predicted bandwidth of applications whose priority coefficient is less than the passed priority coefficient (i.e., applications with high priority)) from the application-specific setting table processor 3000 (33010).
[0213] Next, the process controller 3301 passes the list acquired by the parameter requester 3310 to the product-sum calculator 3330. The product-sum calculator 3330 multiplies the current redundancy by the previous predicted bandwidth for each pair in the list, and calculates the total predicted bandwidth to be used by summing up the results obtained for each pair (33020). Note that if the list is empty, the product-sum calculator 3330 sets the total predicted bandwidth to 0.
[0214] Next, the process controller 3301 inputs the total expected bandwidth to the multiplier 3340, and obtains the arbitration coefficient from the register 3370 and inputs it to the multiplier 3340. The multiplier 3340 multiplies the total expected bandwidth by the arbitration coefficient to calculate an arbitration evaluation value (33030).
[0215] Next, the process controller 3301 inputs the arbitration evaluation value to the comparator 3350, and obtains the arbitration threshold value from the register 3380 and inputs it to the comparator 3350. The comparator 3350 determines whether or not the arbitration evaluation value exceeds the arbitration threshold value, and notifies the process controller 3301 of the determination result (33040).
[0216] As a result, if it is determined that the arbitration evaluation value is equal to or less than the arbitration threshold (33040: Yes), the process controller 3301 causes the switch 3360 to output the maximum redundancy value input thereto as the maximum post-arbitration redundancy value (33050), and places the redundancy arbitrator 3300 in a standby state. On the other hand, if it is determined that the arbitration evaluation value exceeds the arbitration threshold (33040: No), the process controller 3301 causes the switch 3360 to output the minimum redundancy value input thereto as the maximum post-arbitration redundancy value (33100), and places the redundancy arbitrator 3300 in a standby state.
[0217] According to this redundancy arbitrator 3300, when the arbitration evaluation value of an application with a high priority exceeds the arbitration threshold, the maximum post-arbitration redundancy value can be set to the minimum redundancy value. In this way, when the redundancy arbitrator 3300 sets the maximum post-arbitration redundancy value to the minimum redundancy value, the redundancy setting value output from the maximum calculator 1040 of the redundancy controller 120 becomes the minimum redundancy value, and the minimum redundancy value is set as the redundancy of the target application in the communication system 300. Therefore, it is possible to appropriately suppress the use of bandwidth based on the conditions of the arbitration evaluation value, thereby reducing the network load and power consumption.
[0218] Next, the setting screen for setting the registers 3370 and 3380 will be described.
[0219] FIG. 29 is a diagram illustrating an arbiter setting screen according to the third embodiment.
[0220] The arbiter setting screen 5200 includes an arbitration coefficient setting interface 5210, an arbitration threshold setting interface 5220, a Save button 5230, and a Close button 5240.
[0221] The arbitration coefficient setting interface 5210 has an input area for inputting the arbitration coefficient to be set in the register 3370. The arbitration threshold setting interface 5220 has an area for inputting the arbitration threshold to be set in the register 3380.
[0222] The Save button 5230 is a button that accepts an instruction to set each value set in the arbitrator setting screen 5200 to the respective setting destination (storage destination). When the Save button 5230 is pressed, the process controller 3301 stores the value inputted in the arbitration coefficient setting interface 5210 in the register 3370, and stores the value inputted in the arbitration threshold setting interface 5220 in the register 3380. The Close button 5240 is a button that accepts an instruction to close the arbitrator setting screen 5200, and when pressed, the arbitrator setting screen 5200 is closed. In this embodiment, the values are set in the register 3370 and the register 3380 using the setting screen 5200 similar to a graphical user interface (GUI), but the method of setting the values in the register 3370 and the register 3380 is not limited to this, and may be set using, for example, a command line interface (CLI).
[0223] Next, the application-specific setting table processing unit 3000 will be described in detail.
[0224] FIG. 30 is a functional configuration diagram of the application-specific setting table processing unit according to the third embodiment.
[0225] The application-specific setting table processing unit 3000 performs processing for managing the application-specific setting table 2001 .
[0226] For example, when application identifier “20” is input, the application-specific setting table processing unit 3000 identifies an entry in the application-specific setting table 2001 that corresponds to the application identifier “20”, and outputs the priority coefficient of that entry in priority coefficient 2001b, the maximum redundancy value in maximum redundancy value 2001c, and the minimum redundancy value in minimum redundancy value 2001e.
[0227] Also, for example, when a priority coefficient of "1.5" is input, the application-specific setting table processing unit 3000 identifies entries in the application-specific setting table 2001 having a priority coefficient smaller than "1.5", and outputs a list of pairs (tuples) of the current redundancy in the current redundancy 2001f of each entry and the previous predicted bandwidth in the predicted bandwidth (previous) 2001g.
[0228] FIG. 31 is a flowchart of the application-specific setting table process according to the third embodiment.
[0229] The application-specific setting table processing is executed by the application-specific setting table processing unit 3000 when an application identifier or a priority coefficient is received. When an application identifier is received, the application-specific setting table processing unit 3000 executes steps 33300 to 33400, and when a priority coefficient is received, the application-specific setting table processing unit 3000 executes steps 33500 to 33600.
[0230] When the application specific setting table processing unit 3000 receives an application identifier, it searches the application specific setting table 2001 for an entry matching the application identifier (33300), and determines whether or not an entry matching the application identifier is found (33310).
[0231] As a result, if an entry matching the application identifier is found (33310: Yes), the application-specific setting table processing unit 3000 outputs the priority coefficient, maximum redundancy value, and minimum redundancy value of the found entry to the processing controller 121 (33320) and goes into a standby state.
[0232] On the other hand, if no entry matching the application identifier is found (33310: No), the application-specific setting table processing unit 3000 outputs a default priority coefficient (e.g., 1.0), maximum redundancy value (e.g., 1), and minimum redundancy value (e.g., 1) to the processing controller 121 (33400) and goes into a standby state.
[0233] On the other hand, when the application-specific setting table processing unit 3000 receives a priority coefficient, it searches (33500) for an entry in the application-specific setting table 2001 having a priority coefficient less than the received priority coefficient, and determines whether or not an entry matching this condition is found (33510).
[0234] As a result, if an entry matching the conditions is found (33510: Yes), the application-specific setting table processing unit 3000 extracts pairs of current redundancy and previous predicted bandwidth for each entry in the search result list, outputs them as a list (33520), and goes into a standby state. On the other hand, if no entry matching the conditions is found (33510: No), the application-specific setting table processing unit 3000 outputs an empty list (33600) and goes into a standby state.
[0235] The present invention is not limited to the above-described embodiment, and can be modified as appropriate without departing from the spirit of the present invention.
[0236] For example, in the above-described embodiments, a part or all of the processing performed by the processor may be performed by a hardware circuit. Also, the programs in the above-described embodiments may be installed from a program source. The program source may be a program distribution server or a recording medium (e.g., a portable recording medium). [Explanation of symbols]
[0237] 1, 1A, 1B... computer system, 100, 110, 120... redundancy controller, 200, 200a to 200f... application, 300, 300a, 300b... communication system information management program, 400... network, 410... network switch, 500, 500a, 500b... server, 510... CPU, 520... memory, 530... network interface
Claims
1. A redundancy control device that sets a redundancy for a communication system that can communicate via a network in accordance with a set redundancy, A processor is included. The processor, receiving, from an application, a predicted communication bandwidth to be used, which is a communication bandwidth predicted to be used in the network; determining a redundancy upper limit value that is an upper limit value of redundancy in communication by the application based on the available communication bandwidth in the network and the predicted use communication bandwidth; A redundancy level equal to or lower than the determined redundancy level upper limit is set in the communication system as a redundancy level for communication by the application. Redundancy controller.
2. The processor, Obtaining a communication quality index in the network; determining a recommended redundancy value, which is a recommended redundancy value for communication by the application, based on the communication quality index; The redundancy of the communication by the application is determined to be the smaller of the upper limit value of the redundancy and the recommended value of the redundancy. The redundancy control device according to claim 1 .
3. a storage unit that stores a correspondence relationship between the communication quality index and redundancy specification information that specifies a redundancy to be set, The processor, Identifying redundancy specifying information corresponding to the acquired communication quality indicator; The redundancy recommendation value is determined based on the redundancy specification information. The redundancy control device according to claim 2 .
4. the application is an application for receiving an input / output request for a predetermined storage device connected via the network and executing input / output of data to the storage device, The processor, Executing the application and calculating the predicted communication bandwidth based on the input / output requests. The redundancy control device according to claim 1 .
5. storing a communication priority level for each of the plurality of applications; The processor determines the redundancy upper limit value for the application based on the communication priority. The redundancy control device according to claim 1 .
6. storing a minimum redundancy value that is a minimum value of redundancy in communication for the application; The processor, The redundancy in the communication of the application is set to be equal to or greater than the minimum redundancy value. The redundancy control device according to claim 1 .
7. storing a maximum redundancy value that is a maximum value of redundancy in communication for the application; The processor, The redundancy in the communication of the application is set to a value equal to or less than the maximum redundancy value. The redundancy control device according to claim 1 .
8. storing a minimum redundancy value that is a minimum value of redundancy in communication for each of the plurality of applications; The processor, determining whether a predetermined additional constraint on communication of the plurality of applications is exceeded; If the additional constraint is exceeded, the redundancy is set to the minimum redundancy value. The redundancy control device according to claim 1 .
9. the additional constraint condition is a usage-based charge threshold that is a threshold of a usage-based charge per unit time for communication of the plurality of applications; The processor, Calculating a pay-per-unit-time charge for communications of the plurality of applications; If the calculated pay-per-use amount exceeds the pay-per-use amount threshold, the redundancy level is set to the minimum redundancy level. The redundancy control device according to claim 8 .
10. The communication quality index is a packet loss rate in the network. The redundancy control device according to claim 1 .
11. A redundancy control method by a redundancy control device that sets a redundancy for a communication system capable of communicating via a network in accordance with a set redundancy, the method comprising: The redundancy control device includes: receiving, from an application, a predicted communication bandwidth to be used, which is a communication bandwidth predicted to be used in the network; determining a redundancy upper limit value that is an upper limit value of redundancy in communication by the application based on the available communication bandwidth in the network and the predicted use communication bandwidth; A redundancy level equal to or lower than the determined upper limit value of redundancy level is set for the communication system. Redundancy control method.
12. A redundancy control program for causing a computer to execute the program to set a redundancy for a communication system capable of communicating via a network in accordance with a set redundancy, the program comprising: The computer includes: receiving, from an application, a predicted communication bandwidth to be used, which is a communication bandwidth predicted to be used in the network; determining a redundancy upper limit value that is an upper limit value of redundancy in communication by the application based on the available communication bandwidth in the network and the predicted use communication bandwidth; Setting a redundancy level equal to or lower than the determined upper limit value of redundancy level in the communication system. Redundancy control program.
Citation Information
Patent Citations
Redundant transmission system
JP2015122697A
Redundant communication device, method, and program
JP2023006210A
Control system
JP2023039257A