Information processing device, information processing method, and information processing program

JP7838682B2Active Publication Date: 2026-04-01NIPPON TELEGRAPH & TELEPHONE CORP
View PDF 4 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Filing Date
2023-01-26
Publication Date
2026-04-01

Smart Images

  • Figure 0007838682000001
    Figure 0007838682000001
  • Figure 0007838682000002
    Figure 0007838682000002
  • Figure 0007838682000003
    Figure 0007838682000003
Patent Text Reader

Abstract

This information processing device divides packets into predetermined groups on the basis of contents of packet transfer processes and a predetermined hash value, counts the number of packets per unit time in each of the predetermined groups, calculates CPU load amounts on the basis of the numbers of packets and ratios of loads each imposed on the CPU by each transfer process performed by the CPU, and determines the CPUs that perform the packet transfer processes on the basis of the CPU load amounts.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to an information processing apparatus, an information processing method, and an information processing program.

Background Art

[0002] With the development of virtualization technology, the virtualization of network (NW) functions has been progressing. Each process performed by the virtualized NW function is performed by a CPU (Central Processing Unit) included in an information processing apparatus (for example, a server or the like) in which the NW function is deployed.

[0003] Conventionally, as a technique for load distribution of a CPU, RSS (Receive-Side Scaling), which is a technique for grouping packets based on a hash value calculated from header information of a packet and setting a CPU that performs transfer processing for each group, is known (for example, see Non-Patent Document 1). However, in RSS, there is a bias in the number of packets per unit time in each group, and in some cases, the transfer processing performance deteriorates due to a high load on some CPUs. Therefore, as a conventional technique for improving the above problems of RSS, a technique called RSS++ that equalizes the number of packets per unit time processed by each CPU has been proposed (for example, see Non-Patent Document 2).

Prior Art Documents

Non-Patent Documents

[0004]

Non-Patent Document 1

Non-Patent Document 2

[0005] However, conventional technologies had the challenge of sometimes making it difficult to achieve optimal load balancing according to the content of packet forwarding processing.

[0006] Specifically, CPU usage can differ for each packet forwarding process (e.g., NAT (Network Address Translation), mirroring, tunneling, etc.). Therefore, with the conventional RSS++ technology, even if the number of packets is leveled out, high-load forwarding processes can concentrate on a few CPUs, leading to increased load on those CPUs and potentially degrading packet forwarding performance. [Means for solving the problem]

[0007] Therefore, in order to solve the above problems and achieve the objective, the information processing device of the present invention is characterized by comprising: a division unit that divides a packet into predetermined groups based on the contents of the packet transfer process and a predetermined hash value; a counting unit that counts the number of packets per unit time for the predetermined group; a calculation unit that calculates the load on the CPU based on the ratio of the number of packets and the load that each transfer process performed by the CPU places on the CPU; and a determination unit that determines the CPU that performs the packet transfer process based on the CPU load. [Effects of the Invention]

[0008] This invention has the effect of enabling optimal load balancing according to the content of packet forwarding processing. [Brief explanation of the drawing]

[0009] [Figure 1] Figure 1 is a diagram illustrating the overview of the packet forwarding process according to this embodiment. [Figure 2] Figure 2 shows an overview of CPU load balancing according to this embodiment. [Figure 3] Figure 3 shows an example of a functional block diagram of an information processing device according to the embodiment. [Figure 4] Figure 4 shows an example of the device configuration of the information processing device according to the present invention. [Figure 5] Figure 5 shows an example of CPU determination according to the embodiment. [Figure 6] Figure 6 shows an example of a CPU allocation method according to the embodiment. [Figure 7] Figure 7 shows an example of CPU allocation for each transfer process according to the embodiment. [Figure 8] Figure 8 shows an example of a flowchart of the information processing method according to the embodiment. [Figure 9] Figure 9 shows an example of the problems of the conventional technology according to this embodiment. [Figure 10] Figure 10 shows an example of a computer in which the information processing device according to this embodiment is implemented. [Modes for carrying out the invention]

[0010] Hereinafter, embodiments for carrying out the present invention (hereinafter referred to as "embodiments") will be described with reference to the drawings. However, each embodiment is not limited to those described below.

[0011] [1. Overview] The information processing apparatus 100 according to the present embodiment provides a technique related to load distribution of a CPU that performs packet transfer processing. The information processing apparatus 100 groups packets to be processed for each service, weights them for each service, and then determines the destination CPU so that the load of each CPU is leveled. Therefore, when the information processing apparatus 100 virtualizes a virtual gateway (GW: Gate Way) that provides connectivity from a user base to various bases and applies transfer processing according to the connection destination, it is possible to suppress performance degradation of the transfer processing by efficiently using the CPU.

[0012] [1-1. Background Art] First, the background art according to the present embodiment will be described using FIG. 1. FIG. 1 is a diagram showing an outline of packet transfer processing according to the embodiment. Note that the transfer processing and the transfer destination described in FIG. 1 are merely examples, and the present embodiment is not limited thereto.

[0013] FIG. 1 shows packet transfer processing realized by the virtual GW20. First, a predetermined packet is transmitted from the user base 10. This predetermined packet contains a plurality of packets, and the transfer processing performed for each packet is different ((1) in FIG. 1).

[0014] The predetermined packet transmitted from the user base 10 is subjected to transfer processing by the virtual GW20 based on the header information of the packet and the like. For example, in the virtual GW20 shown in FIG. 1, the transfer processing includes NAT21 (Network Address Translation), mirroring 22, tunneling 23, and forwarding 24. These processes are performed by the virtual GW20 and are all processed by the CPU included in the virtual GW20.

[0015] Predetermined packets for which transfer processing has been performed are transferred to the designated destinations for each packet. For example, packets for which the NAT21 processing has been performed are transferred (forwarded 24) to the MEC (Multi-access Edge Computing) site 31. Also, packets for which the mirroring 22 processing has been performed are transferred (forwarded 24) to the public cloud 32 or the security system 33. Also, packets for which the tunneling 23 processing has been performed are transferred (forwarded 24) to another user site 34.

[0016] On the other hand, there are cases where direct transfer is performed without the above-described transfer processing. For example, in an example shown in FIG. 1, predetermined packets transmitted from the user site 10 are transferred (forwarded 24) directly to the Internet 35 without individual transfer processing.

[0017] 〔1-2. Overview of Load Distribution〕 Next, an overview of the CPU load distribution realized by the information processing apparatus 100 of the present embodiment will be described with reference to FIG. 2. FIG. 2 is a diagram showing an overview of the CPU load distribution according to the embodiment.

[0018] In an example of FIG. 2, as predetermined packets 40, packet 41, packet 42, packet 43, and packet 44 are shown. And the content of the target transfer processing is different for each packet. For example, assume that packet 41 is a NAT target (NAT + forwarding). Also, assume that packet 42 is a mirroring target (mirroring + forwarding). Also, assume that packet 43 is a tunneling target (tunneling + forwarding). Also, assume that packet 44 is a forwarding target. Note that the forwarding target of packet 44 means a transfer process of only forwarding.

[0019] The aforementioned packet 40 is received by the information processing device 100 via a NIC (Network Interface Card), etc. The following processing will be described assuming that the information processing device 100 of this embodiment performs these operations. Furthermore, although the information processing device 100 in this embodiment is described as an independent device, it may also be a single function (program, etc.) incorporated into the virtual GW20.

[0020] The information processing device 100 divides the received packets into predetermined groups 50 based on the contents of the forwarding process performed by the CPU (e.g., NAT, mirroring, tunneling, forwarding, etc.) and the hash value calculated using the packet header information (Figure 2(1)).

[0021] The information processing device 100 counts the number of packets per unit time for group 50. Furthermore, based on the counting result of the number of packets and the ratio of the CPU load that each transfer process places on the CPU, the information processing device 100 determines which CPU will perform the transfer processing for the packets included in group 50 and distributes the processing (Figure 2(2)).

[0022] Specifically, the information processing device 100 determines which CPU will handle the forwarding of packets for each group based on the measurement results, so that the utilization rate of each CPU is equalized. For example, the dashed box 51 shows CPU0, CPU1, CPU2, and CPU3, and each CPU is allocated a different number of packets. However, the packets are allocated considering that the load differs for each packet forwarding process, and the utilization rate of each CPU is equalized.

[0023] The information processing device 100 then determines and updates the CPU that will perform the forwarding process for each group of packets at predetermined intervals. After the distribution process, forwarding is performed by each CPU (Figure 2(3)).

[0024] [1-3. Overview of the process] Next, an overview of the CPU allocation process related to the information processing device 100 of this embodiment will be explained using Figure 3. Figure 3 is a diagram showing an example of a functional block diagram of the information processing device 100 according to this embodiment. Note that in Figure 3, the detailed functions of each functional unit will be described later, and this section will only explain the flow of information processing.

[0025] First, the receiving unit 131 receives a packet (Figure 3(1)). In this embodiment, a packet may be a packet containing multiple single packets. Next, the splitting unit 132 splits the packet received by the receiving unit 131 into predetermined groups (Figure 3(2)).

[0026] The counting unit 133 counts the number of packets per unit time for each divided group and notifies the calculation unit 134 (Figure 3 (3)). Subsequently, the calculation unit 134 calculates the CPU load based on the number of packets counted by the counting unit 133 and the pre-configured ratio of the load assigned to the CPU for each transfer process, and notifies the determination unit 136 (Figure 3 (4)). On the other hand, the acquisition unit 135 acquires information on CPU usage from the CPUs performing the transfer processes (CPU0, CPU1, CPU2, CPU3 in Figure 3) and notifies the determination unit 136 (Figure 3 (5)).

[0027] The determination unit 136 determines which CPUs will be assigned to perform packet forwarding processing based on the CPU load calculated by the calculation unit 134 and the CPU usage information acquired by the acquisition unit 135, and notifies the distribution unit 137 (Figure 3 (6)). The distribution unit 137 then assigns predetermined groups to the assigned CPUs based on the determination result of the determination unit 136 (Figure 3 (7)). After the distribution process, forwarding processing is performed by each CPU (Figure 3 (8)).

[0028] [2. Configuration of the Information Processing Device] From here, an example of the configuration of the information processing device 100 according to this embodiment will be described using Figure 4. Figure 4 is a diagram showing an example of the device configuration of the information processing device 100 according to this embodiment. As shown in Figure 4, the information processing device 100 has a communication unit 110, a storage unit 120, and a control unit 130.

[0029] (Communications Department 110) The communication unit 110 is implemented using a NIC (Network Interface Card) or the like, and controls communication via telecommunication lines such as a LAN (Local Area Network) or the Internet. The communication unit 110 is connected to the network by wired or wireless connection as needed, and can send and receive information bidirectionally. In this embodiment, the incoming packets are assumed to be received by the receiving unit 131, which will be described later, via the communication unit 110.

[0030] (Storage unit 120) The storage unit 120 stores data and programs used for various processes performed by the control unit 130. The storage unit 120 is implemented using semiconductor memory elements such as RAM (Random Access Memory) and flash memory, or storage devices such as hard disks and optical discs. As shown in Figure 4, the storage unit 120 includes a transfer processing content storage unit 121, a packet information storage unit 122, a hash value storage unit 123, a packet count storage unit 124, and a CPU load ratio storage unit 125.

[0031] (Transfer processing content storage unit 121) The forwarding process content storage unit 121 stores information related to the content of packet forwarding processes performed by the CPU. For example, the forwarding process content storage unit 121 can store information identifying forwarding processes such as NAT, mirroring, tunneling, and forwarding, as well as the content of those forwarding processes. The forwarding process content storage unit 121 is not limited to the forwarding processes mentioned above, but may store any information that falls within the scope of packet forwarding processes.

[0032] (Packet information storage unit 122) The packet information storage unit 122 stores header information and other data contained in packets received by the receiving unit 131, which will be described later. For example, the packet information storage unit 122 can store the source (Src) and destination (Dst) information contained in the header information of each packet. In addition to the header information and other data mentioned above, the packet information storage unit 122 can store any other information contained in a packet without limitation.

[0033] (Hash value storage unit 123) The hash value storage unit 123 stores the hash value calculated using the header information of the packet received by the receiving unit 131. In this embodiment, the method for calculating the hash value (for example, hash functions such as MD5 (Message Digest 5), SHA-1 (Secure Hash Algorithm 1), SHA-2 (Secure Hash Algorithm 2), SHA-3 (Secure Hash Algorithm 3), etc.) and the number of digits or bits in the calculated hash value are not limited and can be used.

[0034] (Packet count storage unit 124) The packet count storage unit 124 stores information regarding the number of packets per unit time for each predetermined group, which has been counted by the counting unit 133 described later. The packet count storage unit 124 may store the aforementioned packet count information as a numerical value, a string, or in a table format.

[0035] (CPU load ratio storage unit 125) The CPU load ratio storage unit 125 stores the ratio of the load applied to the CPU during packet forwarding, which is used by the calculation unit 134 (described later) to calculate the CPU load.

[0036] The ratio of CPU load, as used here, may be determined by measuring the throughput of each transfer process beforehand and setting it based on the measurement results. For example, the ratio of CPU load is the ratio of the load on the CPU from other transfer processes (e.g., NAT, mirroring, tunneling, etc.) to a transfer process that uses forwarding alone, with forwarding alone being set as "1 (baseline)". As a specific example, if the load on the NAT + forwarding transfer process is twice that of the forwarding-only transfer process, the ratio of CPU load may be "2".

[0037] (Control unit 130) The control unit 130 has an internal memory for temporarily storing programs and processing data that define various processing procedures, and is implemented by electronic circuits such as a CPU (Central Processing Unit) and an MPU (Micro Processing Unit), and integrated circuits such as an ASIC (Application Specific Integrated Circuit) and an FPGA (Field Programmable Gate Array). As shown in Figure 4, the control unit 130 also includes a reception unit 131, a division unit 132, a counting unit 133, a calculation unit 134, an acquisition unit 135, a determination unit 136, and a distribution unit 137.

[0038] (Reception desk 131) The receiving unit 131 receives packets transmitted from user sites, etc. The receiving unit 131 then stores the information contained in the received packets in the packet information storage unit 122. In this embodiment, the receiving unit 131 may receive a single packet or a packet containing multiple packets.

[0039] Alternatively, the receiving unit 131 may calculate a predetermined hash value using the header information of the received packet and store it in the hash value storage unit 123.

[0040] (Divided part 132) The splitting unit 132 divides packets into predetermined groups based on the contents of the packet forwarding process and a predetermined hash value. Specifically, the splitting unit 132 divides the received packets at the same granularity as the method for determining the contents of the forwarding process to be applied to each packet, and then further divides them into predetermined groups based on a hash value calculated using the packet header information. The splitting unit 132 has a first splitting unit 1321 and a second splitting unit 1322, and the above-described processes are performed by each of these functional units.

[0041] (1st division 1321) The first splitting unit 1321 determines the content of the forwarding process using the packet header information, which includes the source or destination IP address of the packet, and then splits the packet. For example, the first splitting unit 1321 may determine the content of the forwarding process for each packet based on packet header information such as the source (Src) and destination (Dst) IP addresses, using the same information as the method used to determine the forwarding process to be applied to the packet.

[0042] (Second division part 1322) The second division unit 1322 divides packets into predetermined groups based on predetermined hash values ​​calculated using the packet header information. For example, the second division unit 1322 may divide the received packets into predetermined groups using the calculated hash values. Specifically, the second division unit 1322 may divide them into predetermined groups in which all or part of the hash values ​​are identified by the same value.

[0043] (Counting section 133) The counting unit 133 counts the number of packets per unit time for a predetermined group. For example, the counting unit 133 can count the number of packets per unit time (e.g., a 1-second cycle) for each predetermined group divided by the division unit 132 (first division unit 1321 and second division unit 1322). The counting unit 133 may also notify the calculation unit 134 of the counted number of packets per unit time for each predetermined group and identification information (e.g., a group ID) that identifies the predetermined group.

[0044] (Calculation section 134) The calculation unit 134 calculates the CPU load based on the number of packets and the ratio of the load each forwarding process performed by the CPU places on the CPU. Specifically, the calculation unit 134 calculates the CPU load from the number of packets counted by the counting unit 133 and the load ratio (e.g., "2") corresponding to the content of the forwarding process, with the load related to packet forwarding processing as the base (e.g., "1").

[0045] For example, the calculation unit 134 may calculate the CPU load by multiplying the number of packets and the ratio of the load on the CPU. As mentioned above, the ratio of the load on the CPU may be set based on the throughput measured in advance when each transfer process is applied.

[0046] (Acquisition part 135) The acquisition unit 135 acquires information regarding CPU usage from the CPUs that perform packet forwarding processing. For example, in the example shown in Figure 3, the acquisition unit 135 can acquire information regarding the usage of each CPU (e.g., usage rate XX%) from CPU0, CPU1, CPU2, and CPU3. Although four CPUs are shown in the example in Figure 3, the acquisition unit 135 can acquire information regarding CPU usage without limiting the number of CPUs being targeted.

[0047] (Decision Section 136) Now, let's return to Figure 4 and continue the explanation. The determination unit 136 determines which CPU will perform the packet forwarding process based on the CPU load. For example, the determination unit 136 determines which CPU will perform the packet forwarding process for each predetermined group based on the CPU load calculated by the calculation unit 134, and can notify the distribution unit 137 (described later) of identification information (e.g., group ID) indicating the determined CPU and group.

[0048] Here, using Figure 5, we will explain how the determination unit 136 determines the CPU to which the data will be distributed. Figure 5 is a diagram showing an example of the determination of the target CPU according to the embodiment. Figure 5 shows packets 41, 42, 43, and 44. Since each of the aforementioned packets is the same as the packets described in Figure 2, the explanation of the content of the target forwarding process for each packet will be omitted. Frame 60 shows a variable representing the number of packets per unit time for each predetermined group. Also, frame 61 shows a variable representing the ratio of the load placed on the CPU for each forwarding process, with forwarding-only processing set to 1.

[0049] For example, packet 41 contains packets "A1", "A2", and "A3", and each has a load ratio of "α". Similarly, packet 42 contains packets "B1", "B2", and "B3", and each has a load ratio of "β". Packet 43 contains packets "C1", "C2", and "C3", and each has a load ratio of "γ". Packet 44 contains packets "D1", "D2", and "D3", and has a load ratio of "1". Note that packet 44 is a forwarding-only transfer process that serves as the baseline for the load ratio on the CPU (load ratio of "1"), so the load ratio is not shown in Figure 5.

[0050] The decision unit 136 determines which CPUs will process packets belonging to a predetermined group using a predetermined optimization method (for example, in Figure 5, a greedy method is assumed) in order to equalize the load on each CPU (Figure 5(1)).

[0051] For example, the load of CPU0, CPU0t, is "A3×α" and "B1×β". The load of CPU1, CPU1t, is "A1×α", "C3×γ", and "D3". The load of CPU2, CPU2t, is "A2×α", "B3×β", "D1", and "D2". The load of CPU3, CPU3t, is "C1×γ", "C2×γ", and "B2×β". In this way, the determination unit 136 can equalize the load of each CPU and determine the distribution destination.

[0052] Here, we will describe a predetermined optimization method used by the decision unit 136 to determine the allocation destination of the CPUs. The decision unit 136 uses at least one of the following predetermined optimization methods: a greedy method, a brute-force method, and a static allocation method, to determine the CPUs such that the utilization rates of multiple CPUs satisfy predetermined conditions (for example, equalizing the CPU load for each CPU). The aforementioned greedy method, brute-force method, and static allocation method can be set by an administrator or the like, and their application areas are not particularly limited.

[0053] The aforementioned "greedy algorithm" sorts packets in descending order of CPU load and determines which CPU to allocate them to in descending order of load. The CPU to which the packets are allocated is determined by the smallest total load of the CPUs already allocated to it.

[0054] The aforementioned "brute-force method" is a technique that enumerates all possible distributions of CPUs for each given group, and then selects a CPU with the least bias (variance) in the total CPU load for each CPU.

[0055] The aforementioned "static allocation method" does not dynamically change the allocation destination when the communication volume demand for each given group is approximately constant. Instead, it calculates the CPU load for each given group based on the communication volume demand in advance and determines the optimal combination (for example, by using a brute-force method). The static allocation method then sets the CPU destination for each given group based on the result of that determination.

[0056] Here, we will explain the determination of CPU allocation based on the greedy method described above using Figure 6. Figure 6 is a diagram showing an example of the CPU allocation method according to the embodiment. In Figure 6, the unallocated packets in frame 62 are shown as "B3×β", "C3×γ", "B1×β", "B2×β", "D1", "D2", and "D3". On the other hand, for each CPU, the allocated load amounts are shown as follows: load amount CPU0t is "A3×α", load amount CPU1t is "A1×α", load amount CPU2t is "A2×α", and load amount CPU3t is "C1×γ" and "C2×γ".

[0057] Here, the unallocated packets shown in frame 62 are sorted in descending order (from highest to lowest) in terms of CPU load. The decision unit 136 can then determine that CPU2, which has the smallest total load of the allocated CPUs, is the destination for the packets (Figure 6(1)).

[0058] Now, let's return to Figure 4 and continue the explanation. The decision unit 136 may perform the processes described above at a predetermined interval. Note that the decision period for determining the destination by the decision unit 136 does not have to coincide with the period for counting and notifying the number of packets by the counting unit 133. For example, the decision unit 136 may determine the destination CPU based on the latest information at the time the predetermined period arrives.

[0059] Furthermore, the determination unit 136 determines which CPU will perform packet forwarding processing if the CPU utilization rate exceeds a predetermined threshold. Specifically, if a CPU's utilization rate exceeds a certain threshold based on the CPU utilization rate acquired by the acquisition unit 135, the determination unit 136 can determine and notify the CPU's allocation destination even if the predetermined cycle mentioned above has not yet arrived.

[0060] (Distribution section 137) The distribution unit 137 distributes packets to the CPU based on either the decision result of the decision unit 136 or at least one of the pre-set distribution conditions. Specifically, the distribution unit 137 distributes packets for each predetermined group to the designated CPU based on the notification from the decision unit 136. In the absence of notification from the decision unit 136 (for example, immediately after the virtual gateway is started), the distribution unit 137 can randomly distribute packets of a predetermined group based on pre-set distribution conditions, or distribute them to a predetermined destination (for example, a forwarding-only transfer process).

[0061] [3. Examples of CPU allocation] From here, an example of CPU allocation considering the load, as realized by the information processing device 100 of this embodiment, will be described using Figure 7. Figure 7 is a diagram showing an example of CPU allocation for each transfer process according to the embodiment.

[0062] Figure 7 shows an embodiment that performs four types of forwarding processing: forwarding only, and forwarding plus NAT, mirroring, and tunneling. In this embodiment, the received packets are divided by the division unit 132 at the same granularity as the method used to determine the content of the forwarding processing to be applied to each packet, and then divided into groups based on the hash value calculated using the packet header information. Therefore, in this embodiment, packets are divided into three groups for each of the four types of forwarding processing, for a total of 12 groups.

[0063] Figure 7 shows Table 70, which includes the following items: "Transfer Processing," "Group ID," "Number of Packets per Unit Time," "Ratio of Load on the CPU," and "CPU Load per Group ID."

[0064] First, the counting unit 133 counts the number of packets per unit time (for example, a 1-second cycle) for each predetermined group divided by the division unit 132. The counting unit 133 then notifies the calculation unit 134 of the counting result and the ID identifying the group (in Figure 7, "Group ID"). Subsequently, the calculation unit 134 calculates the CPU load for each Group ID using the ratio of the number of packets to the load on the CPU.

[0065] For example, in the case of group ID "1-1" where the forwarding process is "NAT + forwarding", the calculation unit 134 calculates the CPU load for each group ID as "986" based on the number of packets per unit time being "493" and the CPU load ratio being "2". Similarly, the calculation unit 134 calculates the CPU load for each group ID for other groups as well.

[0066] The decision unit 136 determines and notifies the CPUs to be allocated based on a predetermined optimization method (e.g., greedy algorithm, brute-force algorithm, static allocation method, etc.). For example, the decision unit 136 may determine the allocation destinations for CPU0, CPU1, CPU2, and CPU3 shown in Figure 7 based on a greedy algorithm. Specifically, the decision unit 136 determines that CPU0 will be allocated to groups with IDs "1-3" and "3-1". The decision unit 136 also determines that CPU1 will be allocated to groups with IDs "1-1" and "1-2". The decision unit 136 also determines that CPU2 will be allocated to groups with IDs "2-3", "3-3", "4-2", and "4-3". Furthermore, the decision unit 136 determines that the CPU3 will be assigned to groups with group IDs "2-1", "2-2", "3-2", and "4-1".

[0067] The distribution unit 137 distributes the CPUs based on the decision result of the determination unit 136, resulting in a state where the CPU load is equalized, as shown in the CPU load amount 71: CPU0 is "1248", CPU1 is "1256", CPU2 is "1300", and CPU3 is "1267".

[0068] The information processing device 100 performs the aforementioned processing at predetermined intervals. Furthermore, if a CPU's usage rate, as acquired by the acquisition unit 135, exceeds a certain threshold, the determination unit 136 determines and notifies the CPU's allocation destination even before the predetermined cycle has arrived, thereby enabling a rapid response to the surge in CPU usage.

[0069] [4. Processing Procedure] From here, the processing procedure of the information processing device 100 will be explained using Figure 8. Figure 8 is a diagram showing an example of a flowchart of the information processing method according to the embodiment. Note that each step may be performed in any order, and there may be steps that are not performed.

[0070] The receiving unit 131 receives the input packet (step S101). The splitting unit 132 divides the packet received by the receiving unit 131 into predetermined groups. Specifically, the first splitting unit 1321 splits the packet based on the content of the forwarding process for each packet (step S102). Subsequently, the second splitting unit 1322 splits the packet into predetermined groups based on the hash value calculated using the packet header information (step S103).

[0071] The counting unit 133 counts the number of packets per unit time for a predetermined group (step S104). If the processing cycle is predetermined (Yes in step S105), the calculation unit 134 calculates the CPU load (step S106). The predetermined processing cycle is not particularly limited and may be, for example, a 1-second cycle or a 1-minute cycle.

[0072] The determination unit 136 determines the target CPU to which the packets will be distributed based on the number of packets counted by the counting unit 133 and the CPU load calculated by the calculation unit 134 (step S107). Subsequently, the distribution unit 137 distributes the predetermined group of packets to the target CPU determined by the determination unit 136 (step S108), and the process ends.

[0073] On the other hand, if it is not within the predetermined processing cycle (No. of step S105), the acquisition unit 135 acquires the CPU usage rate of the target CPU (step S109). If the CPU usage rate does not exceed a predetermined threshold (No. of step S110), the information processing device 100 returns to the previous step and continues processing.

[0074] On the other hand, if the CPU usage exceeds a predetermined threshold (Yes in step S110), the calculation unit 134 calculates the CPU load (step S106). The determination unit 136 determines the target CPU for distribution based on the number of packets counted by the counting unit 133 and the CPU load calculated by the calculation unit 134 (step S107). Subsequently, the distribution unit 137 distributes the predetermined group of packets to the target CPU determined by the determination unit 136 (step S108), and the process ends.

[0075] [5. Effects] The following describes the problems provided by the information processing device 100 of this embodiment. The CPU usage may differ for each packet forwarding process (e.g., NAT, mirroring, tunneling, etc.). Therefore, in conventional RSS++, even if the number of packets is leveled out, high-load forwarding processes may be concentrated on some CPUs, and the increased load on those CPUs may cause a deterioration in packet forwarding performance.

[0076] Here, we will explain the problems of the conventional technology using Figure 9. Figure 9 is a diagram showing an example of the problems of the conventional technology according to the embodiment. The conventional packet distribution device divides packets (for example, packets 410, 420, 430, and 440 in Figure 9) into 500 groups based on the hash value of the header. Next, the packet distribution device measures the number of packets per group per unit time. Then, based on the measurement results, the packet distribution device determines which CPU will process the packets of each group so that the number of packets processed by each CPU is equalized. However, simply equalizing the number of packets may cause some high-load packets to be concentrated on some CPUs, potentially degrading the forwarding processing performance of the packets processed by those CPUs.

[0077] Therefore, the division unit 132 of the information processing device 100 according to this embodiment divides packets into predetermined groups based on the contents of the packet forwarding process and a predetermined hash value. The counting unit 133 of the information processing device 100 counts the number of packets per unit time for the predetermined group. The calculation unit 134 of the information processing device 100 calculates the CPU load based on the ratio of the number of packets and the load that each forwarding process performed by the CPU places on the CPU. The determination unit 136 of the information processing device 100 determines which CPU will perform the packet forwarding process based on the CPU load, and is characterized in that.

[0078] Therefore, according to this embodiment, the information processing device 100 has the effect of enabling optimal load balancing according to the content of packet forwarding processing.

[0079] Specifically, the information processing device 100 distributes packets in a way that equalizes CPU usage, taking into account the content of each packet's transfer process, when there are differences in throughput and CPU load depending on the transfer process. This prevents high-load transfer processes from concentrating on a few CPUs, and as a result, suppresses the degradation of packet transfer performance.

[0080] As a result, the information processing device 100 provides connectivity from user sites to various sites, and when a virtual gateway is implemented using virtualization, it is possible to suppress performance degradation of the transfer process by efficiently utilizing the CPU.

[0081] [6. Hardware Configuration] Each component of the illustrated device is a functional concept and does not necessarily have to be physically configured as shown. In other words, the specific forms of distribution and integration of each device are not limited to those shown, and all or part of them can be functionally or physically distributed and integrated in any unit according to various loads and usage conditions. Furthermore, each processing function performed by each device can be implemented, all or any part of it, by a CPU and the program that is analyzed and executed by that CPU, or by hardware using wired logic.

[0082] Furthermore, among the processes described in this embodiment, all or part of those described as being performed automatically can be performed manually using known methods. In addition, the processing procedures, control procedures, specific names, and information including various data and parameters shown in the drawings can be arbitrarily changed unless otherwise specified.

[0083] [program] In one embodiment, the various devices constituting the information processing device 100 can be implemented by installing the aforementioned information processing program as packaged software or online software on a desired computer. For example, by having the information processing device execute the above information processing program, the various devices constituting the information processing device 100 can be made to function. The information processing device referred to here includes desktop or notebook personal computers. In addition, the category of information processing device also includes mobile communication terminals such as smartphones and mobile phones, and slate terminals such as PDAs (Personal Digital Assistants).

[0084] Figure 10 shows an example of a computer in which the information processing device 100 according to this embodiment is implemented. The computer 1000 has, for example, memory 1010 and CPU 1020. The computer 1000 also has a hard disk drive interface 1030, a disk drive interface 1040, a serial port interface 1050, a video adapter 1060, and a network interface 1070. These components are connected by a bus 1080.

[0085] Memory 1010 includes ROM (Read Only Memory) 1011 and RAM 1012. ROM 1011 stores, for example, a boot program such as BIOS (Basic Input Output System). The hard disk drive interface 1030 is connected to the hard disk drive 1090. The disk drive interface 1040 is connected to the disk drive 1100. For example, a removable storage medium such as a magnetic disk or optical disk is inserted into the disk drive 1100. The serial port interface 1050 is connected to, for example, a mouse 1110 and a keyboard 1120. The video adapter 1060 is connected to, for example, a display 1130.

[0086] The hard disk drive 1090 stores, for example, the OS 1091, application programs 1092, program modules 1093, and program data 1094. That is, the programs that define the various processes of the various devices constituting the information processing device 100 are implemented as program modules 1093 in which executable code for a computer is written. The program modules 1093 are stored, for example, in the hard disk drive 1090. For example, a program module 1093 for performing processes similar to the functional configurations of the various devices constituting the information processing device 100 is stored in the hard disk drive 1090. Note that the hard disk drive 1090 may be replaced by an SSD (Solid State Drive).

[0087] Furthermore, the configuration data used in the processing of the embodiment described above is stored as program data 1094 in, for example, memory 1010 or hard disk drive 1090. The CPU 1020 then reads the program module 1093 and program data 1094 stored in memory 1010 or hard disk drive 1090 into RAM 1012 as needed and executes the processing of the embodiment described above.

[0088] Furthermore, the program module 1093 and program data 1094 are not limited to being stored in the hard disk drive 1090; for example, they may be stored in a removable storage medium and read by the CPU 1020 via a disk drive 1100 or the like. Alternatively, the program module 1093 and program data 1094 may be stored in another computer connected via a network (LAN, WAN (Wide Area Network), etc.). The program module 1093 and program data 1094 may then be read from the other computer by the CPU 1020 via a network interface 1070.

[0089] [7. Other] Although this embodiment has been described above, this embodiment is not limited by the description and drawings that constitute part of the disclosure. That is, all other embodiments, examples, and operational techniques made by those skilled in the art based on this embodiment are included in the scope of this embodiment. [Explanation of symbols]

[0090] 10 user sites 20 Virtual Gateway 21 NAT 22 Mirroring 23 Tunneling 24 Forwarding 31 MEC locations 32 Public Cloud 33 Security Systems 34. Other user locations 35 Internet 40, 41, 42, 43, 44 packets 410, 420, 430, 440 packets 50,500 groups 51 Dashed line frame Frames 60, 61, 62 70 List 71 CPU load per CPU CPU load CPU1t load amount CPU2t load amount CPU3t load amount 100 Information Processing Devices 110 Communications Department 120 Storage section 121 Transfer processing content storage unit 122 Packet Information Storage Unit 123 Hash value storage unit 124 Packet Count Storage Unit 125 CPU load ratio storage section 130 Control Unit 131 Reception Department 132 Division 1321 1st division 1322 Second division 133 Counting Section 134 Calculation Section 135 Acquisition Department 136 Decision Section 137 Sorting section 1000 computers 1010 memory 1011 ROM 1012 RAM 1020 CPU 1030 Hard Disk Drive Interface 1040 Disk Drive Interface 1050 Serial Port Interface 1060 Video Adapter 1070 Network Interface 1080 Bus 1090 Hard Disk Drive 1091 OS 1092 Application Programs 1093 Program Modules 1094 Program Data 1100 Disk Drive 1110 Mouse 1120 keyboard

Claims

1. A splitting unit that divides the packet into predetermined groups based on the contents of the packet forwarding process and a predetermined hash value, A counting unit that counts the number of packets per unit time for the predetermined group, A calculation unit calculates the CPU load for packet forwarding in each group based on the ratio of the number of packets and the load that each forwarding process performed by the CPU places on the CPU, A determination unit that determines which CPU will perform the packet forwarding processing for each group based on the load on the CPU, An information processing device characterized by having the following features.

2. The system further includes a distribution unit that distributes the packets to the CPU based on at least one of the determination result of the determination unit or a preset distribution condition. The information processing apparatus according to feature 1.

3. The division unit determines the content of the forwarding process using the packet header information which includes the source or destination IP address of the packet, and divides the packet. Furthermore, based on the predetermined hash value calculated using the header information of the packet, the packet is divided into the predetermined group. The information processing apparatus according to claim 1 or 2.

4. The calculation unit calculates the CPU load from the number of packets counted by the counting unit and the load ratio according to the content of the forwarding process, based on the load related to the packet forwarding process. The information processing apparatus according to claim 1 or 2.

5. The determination unit determines the CPUs using at least one of a greedy algorithm, a brute-force algorithm, and a static allocation method such that the utilization of multiple CPUs satisfies predetermined conditions. The information processing apparatus according to feature 1.

6. The determination unit determines which CPU to perform the packet forwarding process if the CPU usage rate exceeds a predetermined threshold. The information processing apparatus according to claim 1 or 5.

7. An information processing method performed by an information processing device, A splitting step that divides the packet into predetermined groups based on the contents of the packet forwarding process and a predetermined hash value, A counting step of counting the number of packets per unit time for the predetermined group, A calculation step is performed to calculate the CPU load for packet forwarding in each group, based on the ratio of the number of packets and the load that each forwarding process performed by the CPU places on the CPU. A determination step in which, based on the load on the CPU, the CPU to perform the packet forwarding process for each group is determined, An information processing method characterized by including

8. A splitting step that divides the packet into predetermined groups based on the contents of the packet forwarding process and a predetermined hash value, A counting step of counting the number of packets per unit time for the predetermined group, A calculation step to calculate the CPU load for packet forwarding in each group, based on the ratio of the number of packets and the load that each forwarding process performed by the CPU places on the CPU, A decision step in which the CPU to perform packet forwarding processing for each group is determined based on the load on the CPU, An information processing program characterized by causing a computer to execute it.

Citation Information

Patent Citations

  • Network apparatus

    JP2008129767A

  • Communication device and processor allocation method of the same

    JP2016162266A

  • System and method for data processing

    JP2017011423A

  • Reception packet distribution method, queue selector, packet processing device, and recording medium

    WO2015141337A1