WO2015199366A1 - Method for scheduling in multiprocessing environment and device therefor - Google Patents

Method for scheduling in multiprocessing environment and device therefor Download PDF

Info

Publication number
WO2015199366A1
WO2015199366A1 PCT/KR2015/005914 KR2015005914W WO2015199366A1 WO 2015199366 A1 WO2015199366 A1 WO 2015199366A1 KR 2015005914 W KR2015005914 W KR 2015005914W WO 2015199366 A1 WO2015199366 A1 WO 2015199366A1
Authority
WO
WIPO (PCT)
Prior art keywords
packet
processor
flow
deep
queue
Prior art date
Application number
PCT/KR2015/005914
Other languages
French (fr)
Korean (ko)
Inventor
정기웅
Original Assignee
정기웅
(주) 구버넷
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from KR1020140079129A external-priority patent/KR101764811B1/en
Priority claimed from KR1020140112071A external-priority patent/KR101583325B1/en
Priority claimed from KR1020150046740A external-priority patent/KR20150114911A/en
Application filed by 정기웅, (주) 구버넷 filed Critical 정기웅
Priority to JP2017520838A priority Critical patent/JP2017521806A/en
Priority to EP15811135.1A priority patent/EP3163442A4/en
Priority to CN201580003775.7A priority patent/CN105900063B/en
Priority to US14/760,374 priority patent/US10530846B2/en
Publication of WO2015199366A1 publication Critical patent/WO2015199366A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]

Definitions

  • the present invention relates to a multiple scheduling method and apparatus, and more particularly, to a method and apparatus for scheduling in a multiple processing environment for parallel processing a packet.
  • the multiple processing system parallelizes a plurality of processes using a plurality of central processing unit (CPU) cores.
  • CPU central processing unit
  • problems such as load distribution among CPU cores, resource sharing among CPU cores, and cache efficiency degradation.
  • processor allocation for parallel processing of received data packets and redistribution of queues are performed in units of virtual machines.
  • processor affinity which is one of the most important factors to increase the processing efficiency in parallel processing, cannot be considered, and processor allocation and redistribution of queues take place only in consideration of processor usage load. This may act as a factor to reduce the efficiency of parallel processing.
  • the present invention provides a scheduling method for mitigating a trade-off between flow affinity and load balancing in a multi-processing environment that performs packet parallel processing and increasing the efficiency of use of all processors. To provide a device.
  • a scheduling method comprising: grouping all or some of a plurality of processors into at least one processor group; And if there is a processor group or processor specified for the flow of the received packet, assigning the flow to the predetermined processor group or processor; And if a predetermined processor group or processor does not exist for the flow of the received packet, generating and assigning a new processor group for the flow or allocating the flow to a processor that does not belong to any processor group.
  • An example of the scheduling method according to the present invention for achieving the above technical problem in the scheduling method in a multi-processing apparatus, single scheduling or based on the load status or processing capacity of the plurality of processors or the nature of the received packet Determining multiple scheduling; In the case of the single scheduling, designating one of the plurality of processors as a scheduler; And in the case of the multiple scheduling, grouping a plurality of processors into at least two processor groups and designating one of the processors in each processor group as a scheduler of each processor group.
  • an example of a scheduling method is to obtain a deep packet including virtualization environment network layer information encapsulated in a physical network frame from a packet received through a physical network. step; Identifying the deep packet as a deep flow based on the virtualized environment network layer information included in the deep packet; And dividing the deep packet into the identified deep flow unit and assigning the deep packet to a corresponding queue.
  • One example of a network interface device for achieving the above technical problem is to obtain a deep packet including virtualization environment network layer information, encapsulated in a physical network frame from a packet received through a physical network.
  • a packet receiver configured to identify the deep packet as a deep flow based on the virtualized environment network layer information included in the deep packet; And a scheduler for dividing the deep packet into the identified deep flow unit and assigning the deep packet to a corresponding queue.
  • the tradeoff between flow affinity and load balancing can be alleviated to improve the performance of parallel processing.
  • latency due to packet scheduling and queuing may be reduced.
  • various scheduling algorithms according to traffic attributes may be easily applied through a plurality of schedulers.
  • the load of a server having a virtualized environment including a plurality of virtual machines is reduced.
  • the affinity between the deep packet and the processor increases, increasing the efficiency of parallel processing.
  • the load on the virtual switch can be distributed among the network interface cards to increase the efficiency of virtual network processing.
  • scalable communication processing that guarantees QoS of virtual machine end-to-end deep flow unit can be implemented.
  • FIG. 1 illustrates an example of a multiple processing apparatus for performing a single scheduling according to the present invention
  • FIG. 2 illustrates an example of a multiple processing method for performing a single scheduling according to the present invention
  • FIG. 3 is a diagram illustrating an example of a classification policy for multiple scheduling according to the present invention.
  • FIG. 4 is a diagram illustrating an example configuration of a multiple processing apparatus to which a multiple scheduling method is applied according to the present invention
  • FIG. 5 is a view showing an example of a detailed configuration of a multi-scheduling unit according to the present invention
  • FIG. 6 is a flowchart illustrating an example of a multiple scheduling method in a multiple processing environment according to the present invention
  • FIG. 7 is a flowchart illustrating another example of a multiple scheduling method in a multiple processing environment according to the present invention.
  • FIG. 8 is a flowchart illustrating an example of a scheduling method of a processor designated as a scheduler in a processor group in a multiple processing environment according to the present invention
  • FIG. 9 illustrates an example of processor grouping for multiple scheduling according to the present invention.
  • FIG. 10 illustrates an example of a method for dynamically grouping processors for multiple scheduling according to the present invention
  • FIG. 11 illustrates an example of a schematic structure of a system including a network interface device for multiple processing according to the present invention
  • FIG. 12 illustrates an example of a method for dynamically setting resources of a NIC according to the present invention
  • FIG. 13 illustrates a configuration of an embodiment of a NIC according to the present invention
  • FIG. 15 illustrates another example of a deepflow-based queue allocation of a NIC according to the present invention
  • 16 is a view showing an example of a deep packet used in the present invention.
  • FIG. 17 is a flowchart illustrating an example of a packet processing method for a virtual machine environment according to the present invention.
  • FIG. 1 is a diagram illustrating an example of a multiple processing apparatus for performing a single scheduling according to the present invention.
  • the multiprocessor device 100 may include a packet identification unit 105, a packet transfer unit 140, a packet allocation table 130, a memory 104, a plurality of queues 110, 112, and 114, and a plurality of processors ( 120, 122, 124 and the controller 150.
  • the packet identification unit 105 receives a packet from a wired or wireless network or another device, and identifies a flow of the received packet. In addition, the packet identification unit 105 determines whether there is a processor allocated to the received packet flow with reference to the packet allocation table 130.
  • the packet allocation table 130 includes information of processors allocated to each packet flow.
  • the packet allocation table 130 may include information indicating that a first processor is allocated as a processor for processing the first flow and a second flow, and a second processor is allocated as a processor for processing the third flow. Include.
  • the information stored in the packet allocation table 130 is then generated and updated by the review scheduler.
  • the memory 104 stores the packet received by the packet identification unit 105.
  • the memory 104 may store the flow information of the packet identified by the packet identification unit 105, the processor information obtained by referring to the packet allocation table 130, and the like.
  • the packet transmitter 140 transfers the packets stored in the memory 104 to the queue of the corresponding processor.
  • the packet delivery unit 140 may deliver the packets stored in the memory to the processor queue in order, or deliver the packets out of order to the processor queue in consideration of various conditions such as quality of service (QoS), priority, or the like. have.
  • QoS quality of service
  • the queues 110, 112, and 114 receive and store packets to be processed by each processor from the memory 104.
  • one queue 110, 112, and 114 are present for each of the processors 120, 122, and 124, but the present invention is not limited thereto, and two or more queues exist in one processor, or two or more queues exist in one queue.
  • the queues 110, 112, 114 may be grouped through the method disclosed in FIGS. 11 through 17.
  • queues 110, 112, and 114 have a first-in first-out (FIFO) structure, but are not necessarily limited thereto, and may be implemented in various types of structures such as last-in-first-out (LIFO) or priority-based output. It can be a form that can store packets.
  • FIFO first-in first-out
  • LIFO last-in-first-out
  • LIFO priority-based output
  • the controller 150 designates one of the plurality of processors as a scheduler and transmits an interrupt request signal. Upon receiving the interrupt request signal, the processor selects a processor to process a packet and stores related information in a packet allocation table.
  • the plurality of processors 120, 122, and 124 process packets, respectively.
  • one of the plurality of processors (for example, processor 1 120) may be used as a scheduler without having a separate scheduler for packet scheduling.
  • a method of using one of the plurality of processors as a scheduler will be described with reference to FIG. 2.
  • a separate scheduler may be provided in addition to the plurality of processors.
  • FIG. 2 is a diagram illustrating an example of a multiple processing method for performing a single scheduling according to the present invention.
  • the packet identification unit 105 analyzes the received packet to identify the packet flow (S200, S210).
  • the flow identification method analyzes traffic attributes of all layers of the received packet and classifies the packet according to a predetermined network communication policy. For example, one flow may be distinguished by a communication policy that is set by using attributes such as a transmission node address, a destination address, a session, and an application layer of the received packet.
  • the packet identifying unit 105 refers to the packet allocation table 130 to determine whether there is information of a processor to process the flow (S220).
  • the packet, flow information of the packet, processor information, and the like are stored in the memory 104.
  • the packet transfer unit 140 delivers the packet to the queue of the processor (S260). For example, if the received packet is identified as the first flow by the packet identification unit 105, and the second processor is assigned to the processor to process the first flow in the packet allocation table 130, the packet delivery unit 140. Transmits the packet to the queue 112 of the second processor 122.
  • the controller 150 sends an interrupt request signal to a processor designated as a scheduler among a plurality of processors. It passes (S240).
  • the controller 150 may designate a processor having the least current load among a plurality of processors as a scheduler, a scheduler through a preset scheduler determination algorithm, or designate a preset processor as a scheduler.
  • processor 1 120 is designated as a scheduler.
  • the processor 120 stops the previously performed work and performs a scheduling operation (S250). For example, the processor 120 designated as a scheduler selects a processor to process a new flow (S250), and stores information on the selected processor in the packet allocation table 130 (S260). If an interrupt request is delivered to the processor designated by the scheduler, the interrupt request for newly input packet processing is not allowed until the interrupt is released.
  • a scheduling operation For example, the processor 120 designated as a scheduler selects a processor to process a new flow (S250), and stores information on the selected processor in the packet allocation table 130 (S260). If an interrupt request is delivered to the processor designated by the scheduler, the interrupt request for newly input packet processing is not allowed until the interrupt is released.
  • the processor 120 designated as the scheduler may perform load rebalancing between each processor by applying various conventional load balancing algorithms or when a specific event occurs, such as when the load imbalance is more than a predetermined level or periodically. re-balancing).
  • FIG. 3 is a diagram illustrating an example of a classification policy for multiple scheduling according to the present invention.
  • the classification policy includes a policy for dividing a plurality of processors into groups.
  • a plurality of processors are divided into at least two groups to perform scheduling for each group. This requires a policy for dividing a plurality of processors into groups.
  • An example of a classification policy is a packet flow based policy, as shown in FIG. 3.
  • the flow can be divided into two groups A and B based on attributes that can divide the packet flow hierarchically.
  • the plurality of processors may be divided into two groups according to which group the flow currently being processed belongs to.
  • Another example is a classification policy based on the load of each processor.
  • Processors can be divided according to a predetermined number of groups so that the load distribution of each group can be even.
  • the classification policy for dividing the plurality of processors into groups may be a plurality.
  • the first policy is a policy for dividing a plurality of processors into two groups based on a flow
  • the second policy is a policy for dividing a plurality of processors into three groups based on a flow
  • the third policy is a plurality of policies. It may be a policy to divide the processors into at least two groups according to the load level.
  • the present invention is not limited to the embodiment of FIG. 3, and various classification policies for dividing the processors may be applied.
  • the classification policy is set in advance, and the user may update the classification policy through a separate input / output interface.
  • FIG. 4 it is assumed that a criterion for dividing a plurality of processors, that is, a classification policy, is set in advance for multiple scheduling.
  • FIG. 4 is a diagram illustrating an example of a configuration of a multiple processing apparatus to which a multiple scheduling method according to the present invention is applied.
  • the multiprocessing apparatus 400 includes a packet identification unit 410, a packet transfer unit 480, a packet allocation table 420, a multischeduling unit 430, a memory 440, and a plurality of queues ( 450) and a plurality of processors (460, 462, 464, 466, 470, 472, 474).
  • the packet identification unit 410, the packet transfer unit 480, the packet allocation table 420, the memory 440, the plurality of queues 450, the processors 460, 462, 464, 466, 470, 472, and 474 include all the configurations and functions described with reference to FIG. 1. . Therefore, the present embodiment will not be repeated descriptions of the same configuration and function as in FIG. 1 and will be described based on the configuration and function necessary for multischeduling according to the present embodiment.
  • the multi-scheduling unit 430 determines whether to perform a single scheduling or multiple scheduling based on the state information of the multiple processing system such as load distribution status, traffic attributes, traffic processing capacity, and the like. For example, the multi-scheduling unit 430 may change to multi-scheduling while performing a single scheduling, or vice versa.
  • the multi-scheduling unit 430 may determine which classification policy to apply based on the state information.
  • the multi-scheduling unit 430 classifies the plurality of processors into at least two groups according to the classification policy, and designates a scheduler to perform the scheduling for each group.
  • Detailed configuration of the multi-scheduling unit is shown in FIG.
  • the multi-scheduling unit 430 divides seven processors into two processor groups (first group: processors 1 to 4 and second group: processors 5 to 7).
  • One processor (466, 474) in the group is designated as a scheduler by a predetermined scheduler determination algorithm.
  • information about the processor group may be stored in the packet allocation table 420.
  • the multi-scheduling unit 430 stores information on which group the flow belongs to in the packet allocation table 420.
  • the packet identification unit 410 determines which group the new flow belongs to and stores the packet and identification information on the packet in memory ( 440).
  • the multi-scheduling unit 430 designates a scheduler to process the packet in the group according to the load level or a predetermined scheduler determination algorithm, and transmits an interrupt request signal to process the packet to the specified scheduler.
  • the processor designated as the scheduler performs a scheduling operation such as selecting a processor in a group to process the flow.
  • the first group 490 including the processors 1 to 4 is allocated to the flow group A 300 according to the grouping policy of FIG. 3, and the processors 5 to 7 are assigned to the flow group B 310.
  • a second group of processors 495 including n is allocated. If the flow of the received packet belongs to the flow group A (300), the multi-scheduling unit 430 designates one of the processors belonging to the processor first group 490 as a scheduler to perform the scheduling operation in the group 490. To be performed. In this case, the processor second group 495 may perform new packet processing or scheduling regardless of whether the first group 490 is scheduled or not, thereby improving processing efficiency of the entire processor. In other words, scheduling operations of the first processor group 490 and the second processor group 495 may be performed in parallel.
  • the grouping of processors may be changed at any time according to the processor load or various policies, and the ungrouped processors may be newly grouped into a processor group for a flow of a new received packet. This will be described again with reference to FIGS. 9 and 10.
  • FIG. 5 is a diagram illustrating an example of a detailed configuration of a multi-scheduling unit according to the present invention.
  • the multi-scheduling unit 430 includes a policy decision unit 500, a group divider 510, and a scheduler unit 520.
  • the policy decision unit 500 determines a single scheduling or multiple scheduling using various state information of a multiprocessing environment, for example, load distribution state, traffic attributes, traffic processing capacity, and the like. In addition, the policy decision unit 500 determines how to divide a plurality of processors when performing multiple scheduling, or which policy for each divided group to apply.
  • the policy determiner 500 may determine to perform multi-scheduling when the total traffic processing capacity of the multi-processing apparatus is less than or equal to a predetermined level, and select the flow-based policy as shown in FIG. 3 as the classification policy.
  • the group divider 510 divides the plurality of processors into at least two groups according to the classification policy determined by the policy determiner 500.
  • the scheduler unit 520 designates one of the processors in each group as a scheduler according to a load level or a preset scheduler selection algorithm. For example, the scheduler 520 may designate a processor having the least load for each group as a scheduler. In addition, you can pin a specific processor as a scheduler, or specify a scheduler dynamically with several other choices.
  • FIG. 6 is a flowchart illustrating an example of a multiple scheduling method in a multiple processing environment according to the present invention.
  • the multi-scheduling unit 430 grasps various state information such as traffic capacity, flow attribute, load distribution state (S600). Based on the state information, the multi-scheduling unit 430 determines whether to perform a single scheduling or multi-scheduling (S610). When performing a single scheduling, the multiple scheduling unit 430 designates one of the plurality of processors as a scheduler. When performing multi-scheduling, the multi-scheduling unit 430 divides the plurality of processors into at least two groups according to the classification policy (S620), and designates a processor to operate as a scheduler for each group (S630). The processor designated for each group performs scheduling on the corresponding packet according to the interrupt request signal as shown in FIG.
  • S620 classification policy
  • S630 designates a processor to operate as a scheduler for each group
  • each group divided into two or more may be independently scheduled simultaneously by a scheduler designated for each group.
  • each group scheduler receives an interrupt signal from the multi-scheduling unit 430, and may perform a scheduling operation such as selection of a processor for packet processing regardless of whether interrupts to other schedulers are released. have.
  • Each divided group may be independently applied with different policies or algorithms as necessary.
  • FIG. 7 is a flowchart illustrating another example of a multiple scheduling method in a multiple processing environment according to the present invention.
  • FIG. 7 assumes that a plurality of processors are grouped by the salping multi-scheduling unit.
  • the packet identification unit 410 when receiving a packet (S700), the packet identification unit 410 analyzes the packet to identify a flow (S710). When the information on the flow exists in the packet allocation table 420 (S730), the packet identification unit 410 determines which group the new flow belongs to, and identifies the packet and identification information about the packet. Stored in the memory 440. The multi-scheduling unit 430 transmits an interrupt request signal to the scheduler to process the packet.
  • the multi-scheduling unit 430 refers to the classification policy to determine the group to which the flow belongs (S740). For example, when the processor group is divided based on the flow as shown in FIG. 3, the multi-scheduling unit 430 determines which group the newly recognized flow belongs to based on an upper attribute that classifies the flow hierarchically. As another example, when processor groups are divided according to load distribution, the multischeduling unit 430 may select a group having a relatively low load as a group to which a newly recognized flow belongs.
  • the multi-scheduling unit 430 designates a scheduler to process the packet in the group by using a load level or a predetermined scheduler determination algorithm, and processes the packet to the specified scheduler. Send the interrupt request signal.
  • the processor Upon receiving the interrupt signal, the processor operates as a scheduler, selects a processor to process a new flow, and stores related information in the packet allocation table 420 (S750 and S760).
  • the multischeduling unit 430 transmits an interrupt signal to the processor 4 466 designated as a scheduler.
  • Processor 4 466 selects processor 1 460 as a processor to process the packet according to a predetermined processor determination algorithm and stores the corresponding information in packet allocation table 420. Then, when a packet of the same flow is received, the packet transfer unit 480 allocates the packet to processor 1 (460).
  • FIG. 8 is a flowchart illustrating an example of a scheduling method of a processor designated as a scheduler in a processor group in a multiple processing environment according to the present invention.
  • a plurality of processors perform a general flow process or the like before receiving an interrupt signal (S800). If there is a processor group or processor allocated to the newly received packet flow, the multi-scheduling unit 430 allocates the flow to the predetermined processor group or processor. If there is no processor group or processor allocated to the newly received packet flow, the multi-scheduling unit 430 generates a processor group for the flow of the new packet and then interrupts any one processor in the newly created processor group. The signal is transmitted (S810).
  • the processor After receiving the interrupt signal, the processor stops an operation previously performed (S820), performs a scheduling operation for determining which processor to allocate a new packet flow to (S830), and resumes the operation performed before the interrupt signal is received. (S840).
  • the multischeduling unit 430 may transmit the interrupt signal for each processor group, and thus, each processor group may simultaneously perform the scheduling operation.
  • FIG 9 illustrates an example of processor grouping for multiple scheduling according to the present invention.
  • the multi-scheduling unit 430 designates any one of the processors 900 as a scheduler in the case of single scheduling, and in the case of multi-scheduling, all or some of the processors may be at least one group. Group at (910,920) and specify a scheduler for each group.
  • the multi-scheduling unit 430 may create a new processor group or update an existing processor group according to the load state of the processors or various preset policies.
  • the multi-scheduling unit 430 groups a plurality of processors into two groups, a first group 910 of processors 1 to 3 and a second group 920 of processors 4 to 5, and the rest of the plurality of processors.
  • the processors may not be grouped.
  • the multi-scheduling unit 430 groups all or some of the processors that are not currently grouped to create a new processor group or change existing processor groups to create a new processor group. Can be generated.
  • the multi-scheduling unit 430 may be added to a group that is already grouped during the multi-scheduling operation, for example, the first group 910 of the processors 1 to 3 and the second group 920 of the processors 4 to 5.
  • the update operation may be performed such as adding a processor or removing some of the processors in the group.
  • FIG. 10 illustrates an example of a method for dynamically grouping processors for multiple scheduling according to the present invention.
  • the multischeduling unit 430 generates a new processor group or updates an existing processor group when a new processor group for a flow of a received packet is needed or when a previous processor group needs to be changed (S1000). ). For example, when there is no processor group or processor allocated to a newly received packet flow, the multi-scheduling unit 430 creates all or part of the ungrouped processors among the processors as a new processor group. . As another example, the load level within the processor group or the total processor load reaches a certain level or according to a preset policy, the multi-scheduling unit 430 reconfigures the entire processor group or adds a new processor to a specific processor group. Or remove at least one of the existing processors in the group.
  • the multi-scheduling unit 430 designates any one processor in the generated or updated processor group as a scheduler (S1010).
  • One processor in each group does not always operate as a scheduler, but operates as a scheduler only when an interrupt signal is received as described with reference to FIG. 8, and performs the same operation as other general processors when the scheduling operation is completed.
  • FIGS. 1 to 10 may be added to the technical configuration of FIGS. 11 to 17, or conversely, the configuration of FIGS. 11 to 17 may be added to the configuration of FIGS. 1 to 10.
  • the multiple processing device may be implemented as a network interface device.
  • FIG. 11 is a diagram illustrating an example of a schematic structure of a system including a network interface device for multiple processing according to the present invention.
  • a network interface device is implemented with a network interface card (NIC) 1100.
  • NIC network interface card
  • the network interface device is not necessarily limited to the network interface card 1100, and may be implemented in various forms such as hardware or software within and outside the server.
  • a network interface device is referred to as a NIC.
  • the server 1120 includes a plurality of virtual machines 1150, 1152, and 1154, a virtual switch 1140, and a connection slot 1130.
  • the virtual switch 1140 forwards the packet received through the NIC 1100 to the destination virtual machine.
  • the connection slot 1130 is an interface connecting the NIC 1100 and the server 1120 and may be implemented as, for example, a Peripheral Component Interconnect Express (PCIe). In this case, the NIC 1100 may be attached to or detached from the PCIe slot.
  • PCIe Peripheral Component Interconnect Express
  • the NIC 1100 analyzes traffic characteristics of upper layers of packets received from the network 1110 to identify flows, and processes the identified flows in parallel through multiple processors.
  • the packet refers to a packet that encapsulates virtualization environment network layer information using various techniques such as conventional tunneling so as to be delivered to a plurality of virtual machines.
  • the virtual environment network layer refers to a network layer formed of a virtual machine
  • the virtual environment network layer information refers to network layer information formed of a virtual machine encapsulated in a physical network frame for packet transmission in a network layer formed of a virtual machine. do.
  • a packet identified based on the virtualization environment network layer information used in the present embodiment is referred to as a deep packet.
  • the deep packet is encapsulated in a physical network frame to be recognized by a general communication protocol in the physical network so that a smooth transmission can be made.
  • a flow classified using the DIP packet virtualization network layer information is called a deep flow. Deep flow is described as the flow of service end created in virtual machine in communication service structure.
  • Deepflow can be defined as specific traffic in the virtualized environment network classified according to the upper layer (vL3 or higher) traffic attribute in the virtualized environment network frame from which the deep packet's physical network frame is removed. Deepflows can be classified and identified according to a number of preset policies. For example, the packet analyzer 1310 may identify a TCP flow of a virtual machine as a deep flow. The structure of the deep packet will be described with reference to FIG. 16.
  • the NIC 1100 includes a plurality of queues and a plurality of processors for parallel processing of the received deep packets, and the size and number of the queues are fixed, or information about the deep flow, information on the virtualization environment of the server, load of the processors, and the like. Can be changed dynamically.
  • FIG. 12 is a diagram illustrating an example of a method for dynamically setting resources of a NIC according to the present invention.
  • the NIC 1100 when the NIC 1100 is attached to the connection slot 1130 of the server 1120 and connected to the server 1120 (S1200), the NIC 1100 is connected to the server 1120.
  • the virtual environment information including the number of virtual machines is received (S1210).
  • the NIC 1100 dynamically sets resources such as size and number of queues and creation of a queue group according to the information on the deep flow, the received virtualization environment information, or the load distribution of the processor (S1220).
  • the NIC 1100 may allocate three queues three for each virtual machine.
  • the NIC 1100 may divide the deepflow into two groups based on the information on the deepflow, and allocate six queues to each group. The number of queues allocated to each virtual machine or the size of each queue may be variously set according to a preset rule.
  • FIG. 13 is a diagram illustrating a configuration of an embodiment of a NIC according to the present invention.
  • the NIC 1100 includes a packet receiver 1300, a packet analyzer 1310, a memory 1320, a plurality of queues 1330, a plurality of processors 1340, a scheduler 1350, and a monitoring unit. 1360 and the queue manager 1370.
  • the connection line between each component including the packet receiver 1300 is just one example to help understanding of the present invention, and the connection between the queue manager 1370 and the monitoring unit 1360, the scheduler 1350 and the plurality of queues. Of course, various connection relationships, such as the connection between (1330) can be set.
  • the packet receiver 1300 When the packet receiver 1300 receives a packet in which the deep packet is encapsulated by various tunneling methods such as conventional tunneling so as to be recognized as a general Ethernet frame in an external network, the packet receiver 1300 removes the header part corresponding to the physical network. Restore data packet frames in a virtualized environment.
  • the packet analyzer 1310 identifies a deep flow of the restored deep packet.
  • the packet analyzer 1310 analyzes a virtual packet from a virtual data link layer (vL2 layer) to a virtual application layer (vL7 layer) of the decapsulated deep packet through a DPI (Deep Packet Insepection) process to identify a deep flow.
  • DPI Deep Packet Insepection
  • the analysis of the deep packet for deep flow identification is not limited to analyzing both the virtual data link layer and the virtual application layer, and the scope of the analysis may vary according to the deep flow identification policy.
  • the memory 1320 stores the deep packet and the deep flow information identified by the packet analyzer 1310, and stores and manages a flow table indicating a mapping relationship between the deep flow and the queue.
  • the packet receiver 1300 stores the decapsulated deep packet in the memory 1320, and notifies the packet analyzer 1310 of the fact that the deep packet is stored.
  • the packet analyzer 1310 then performs deep flow identification for the corresponding deep packet stored in the memory 1320. That is, the packet analysis unit 1310 that has learned that the new deep packet has been received, identifies the deep flow characteristic of the corresponding deep packet according to a preset policy, stores the information, and informs the scheduler 1350 of the deep packet.
  • the scheduler 1350 assigns the identified deep flows to corresponding queues, respectively, and assigns each queue in parallel to the multiprocessor 1340. More specifically, the scheduler 1350 searches for a queue to which a deep packet deep flow is mapped by referring to a flow table stored in the memory 1320, and delivers the deep packet stored in the memory 1320 to the retrieved queue. If there is no mapping information of the deep packet received in the table, the scheduler 1350 allocates the deep flow to a specific queue through various conventional methods, and stores the mapping relationship between the deep flow and the queue in the flow table. .
  • the scheduler 1350 may queue a deep packet for each virtual machine in a deep flow unit. For example, when establishing a mapping relationship between a deepflow and a queue, a first flow and a second flow of the same nature (eg, the same QoS priority) facing the first virtual machine and the second virtual machine are in the same queue. Can be assigned. Although the present invention does not exclude such a case, in order to increase the efficiency of parallel processing, it is preferable to allocate a deep flow to different groups of queues for each virtual machine. In other words, when the scheduler 1350 groups the queues for each virtual machine as shown in FIG. 14, the first flow for the first virtual machine is allocated to the queues of the first group 1400 on a deep flow basis, and the second virtual The second flow for the machine is assigned to the queue of the second group 1410 in deepflow units.
  • the scheduler 1350 upon receiving the fact that a new deep packet has been loaded into the memory 1320 and the deep flow information of the deep packet, the scheduler 1350 searches the flow table to find out which queue the deep flow is allocated to, and the memory. The deep packet loaded in 1320 can be loaded into the found queue. If the information on the identified deep flow cannot be found in the flow table, the scheduler 1350 may allocate the deep packet to one of the queues belonging to the corresponding virtual machine according to a preset policy.
  • the preset policy may vary according to embodiments.
  • a policy for selecting a queue in consideration of flow affinity For example, a policy for selecting a queue in consideration of flow affinity, a policy for selecting a queue with the least load among queues in a virtual machine to which a deep packet is sent, and a utilization rate There is a policy for selecting the queue assigned to the lowest processor.
  • Each of the plurality of queues 1330 is mapped to at least one deep flow. Queuing on a deep-flow basis increases processor affinity, which increases the efficiency of parallel processing.
  • the plurality of queues 1330 may be divided into groups including at least one queue for each virtual machine. In addition, the plurality of queues 1330 may be divided into at least two partitions as shown in FIG. 15.
  • the scheduler 1350 may be a processor selected from a plurality of processors. For example, a specific processor 1350 of all the processors 1380 may be designated as a scheduler, or the load of each processor may be determined through the monitoring unit 1360, and then the processor having the least load may be selected as the scheduler 1350. have. In addition, various methods for selecting a scheduler may be applied. When a scheduler is designated among the processors, the controller (not shown) generates an interrupt signal whenever the scheduling is needed and transmits the interrupt signal to the processor designated as the scheduler as shown in FIG. Stop, finish the action as a scheduler, and perform the previous task again.
  • the plurality of processors 1340 processes the deep packets stored in each queue in parallel and transmits them to the virtual machine of the server.
  • a salping single scheduling or multiple scheduling method may be applied to the plurality of processors in FIGS. 1 to 10. That is, a plurality of processors may be grouped and scheduled for each group.
  • the plurality of processors 1340 are connected with at least one queue.
  • the plurality of processors 1340 are connected to the queue in consideration of flow affinity.
  • queues that store deep packets with the same or similar deep flow attributes are tied to the processor.
  • the plurality of processors 1340 may be connected to a queue for each virtual machine.
  • a first processor is connected to first to third queues 1400 allocated to a first virtual machine
  • a second processor is fourth to sixth queues 1410 assigned to a second virtual machine.
  • the third processor may be connected to the seventh and eighth queues 1420 allocated to the third virtual machine.
  • the first processor is connected with a fourth queue assigned to the second virtual machine together with the first to third queues assigned to the first virtual machine, in which case the second processor is assigned to the second virtual machine. Connected to the fifth and sixth queues.
  • the processor may be connected to all or part of a queue allocated to at least two virtual machines.
  • the monitoring unit 1360 monitors various states including loads of the processor 1340 and the queue 1330.
  • the queue manager 1370 divides the queues into a plurality of partitions according to the monitoring result and processes the scheduler for each partition as shown in FIG. 15, combines or splits the plurality of queues into one, or the number of queues allocated to the virtual machine. Adjust the size and number of queues, such as increasing or decreasing them.
  • the queue manager may dynamically set the number and size of queues for each virtual machine according to the virtualization environment of the server identified through the process of FIG. 12.
  • FIG. 14 illustrates an example of deepflow-based queue allocation of a NIC according to the present invention.
  • the queues 1330 are classified by virtual machines.
  • the first to third queues 1400 are assigned to the first virtual machine
  • the fourth to sixth queues 1410 are assigned to the second virtual machine
  • the seventh and eighth queues 1420 are assigned to the first virtual machine. It is assigned to the third virtual machine.
  • the scheduler performs queuing by referring to a deep flow for each virtual machine.
  • the scheduler 1350 may assign the deep packet based on the priority to the first to third queues 1400 assigned to the first virtual machine. Classify and save. That is, among the deep flows destined for the first virtual machine, the highest priority deepflow is stored in the first queue, the next priority deepflow is stored in the second queue, and the remaining priority deepflows are stored in the third queue.
  • 15 is a diagram illustrating another example of deep flow based queue allocation of a NIC according to the present invention.
  • the queues 1330 are divided into at least two partitions 1520 and 1530.
  • the schedulers 1500 and 1510 are allocated to each partition 1520 and 1530.
  • the first scheduler 1500 is assigned to the first partition 1520
  • the second scheduler 1510 is assigned to the second partition 1530.
  • Each scheduler 1500 and 1510 independently performs scheduling tasks in parallel with the assigned partitions.
  • an example of grouping the queues 1330 into two groups 1520 and 1530 may be grouped into three or more groups, and scheduling of each group may be performed according to an embodiment.
  • the multiple scheduling method described above may be applied.
  • the scheduler may be a processor selected by a predetermined method among the plurality of processors 1380.
  • redistribution of the queue or processor reallocation may be determined if the processor load is below a certain threshold by calculating the statistical amount of deep packets received from the network and the processor capabilities performed by the total processor in the NIC.
  • redistribution of queues or processor reallocation may be determined if the processor load is below a certain threshold by calculating the statistical amount of deep packets received from the network and the processor capabilities performed by the total processor in the NIC.
  • Queues belonging to each partition may be grouped 1540 on a virtual machine basis, and the queues in the group 1540 may be classified on a deep flow basis. In this case, a hierarchical structure of a partition-group by virtual machine-flow unit queue by group is generated.
  • 16 illustrates an example of a deep packet used in the present invention.
  • a deep packet includes a physical network frame 1610, a tunneling field 1620, a network frame 1630 between virtual machines, and a data field 1600.
  • the physical network frame 1610 includes information representing a layer of a conventional physical network such as L2, IP, TCP, and the like.
  • the tunneling field 1620 represents tunneling information and the like.
  • the virtual machine network frame 1630 includes information on each layer (vL2 to vL7, etc.) in the network environment between virtual machines.
  • the data field 1600 contains data.
  • the structure of the deep packet of FIG. 16 is just one example to help the understanding of the present invention, and the present invention is not limited thereto.
  • the structure of the deep packet may be defined and used in various forms for the virtual machine environment.
  • the structure of the deep packet stored in the memory and the structure of the deep packet stored in the queue may be the same or different according to the embodiment.
  • the deep packet restored by decapsulating the packet of FIG. 16 received from the network may be changed to an optimal structure that can be processed in the virtual machine environment, or some or all of the fields of the deep packet are unnecessary in the virtual machine environment.
  • Various design changes, such as deleting, can be stored in the queue.
  • FIG. 17 is a flowchart illustrating an example of a packet processing method for a virtual machine environment according to the present invention.
  • the network interface device when receiving a deep packet (S1700), the network interface device analyzes the deep packet through a DPI process to identify a destination virtual machine and a deep flow to which the deep packet is to be delivered (S1710).
  • the network interface device stores deep packets in deep flow units for at least one queue allocated to each virtual machine (S1720).
  • the network interface device processes a deep packet stored in each queue through a plurality of processors and transmits the deep packet to the virtual machine.
  • the invention can also be embodied as computer readable code on a computer readable recording medium.
  • the computer-readable recording medium includes all kinds of recording devices in which data that can be read by a computer system is stored. Examples of computer-readable recording media include various types of ROM, RAM, CD-ROM, magnetic tape, floppy disk, optical data storage device, and the like.
  • the computer readable recording medium can also be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Disclosed are a network interface device for processing a packet, and a method therefor. The network interface device comprises multiple queues. Upon receiving a packet through a physical network, the network interface device identifies the flow of the packet, stores the packet to the multiple queues in units of flow, and then executes parallel processing of the packet through a multiprocessor.

Description

다중 프로세싱 환경에서의 스케줄링 방법 및 그 장치Scheduling method and apparatus therefor in multiprocessing environment
본 발명은 다중 스케줄링 방법 및 그 장치에 관한 것으로서, 보다 상세하게는 패킷을 병렬처리하는 다중 프로세싱 환경에서 스케줄링하는 방법 및 그 장치에 관한 것이다.The present invention relates to a multiple scheduling method and apparatus, and more particularly, to a method and apparatus for scheduling in a multiple processing environment for parallel processing a packet.
다중 프로세싱 시스템은 복수 개의 CPU(Central Processing Unit) 코어(core)를 이용하여 복수 개의 프로세스를 병렬처리한다. 그러나 다중 프로세싱의 경우, CPU 코어간에 부하를 균등하게 분포시키는 문제, CPU 코어들간 공유하는 자원의 충돌, 캐시 효율성 저하 등의 문제점이 있다.The multiple processing system parallelizes a plurality of processes using a plurality of central processing unit (CPU) cores. However, in the case of multiprocessing, there are problems such as load distribution among CPU cores, resource sharing among CPU cores, and cache efficiency degradation.
특히 패킷을 병렬처리하는 다중 프로세싱 시스템의 경우, 패킷 처리 효율을 높이기 위해서는 동일한 플로우에 속한 패킷을 동일한 CPU에서 처리하도록 하며 CPU에 대한 플로우 친화도(flow affinity)를 유지하는 것이 바람직하나, 이 경우 특정 CPU에 부하가 과중 되어 전체 CPU간에 부하 분포의 불균형이 발생할 수 있으며, 이로 인하여 다중 프로세싱 시스템의 전체 처리 효율이 낮아질 수 있는 문제점이 있다.In particular, in a multi-processing system that parallelizes packets, it is desirable to process packets belonging to the same flow in the same CPU and maintain the flow affinity for the CPU in order to improve packet processing efficiency. Due to the heavy load on the CPU, an imbalance in load distribution may occur between the entire CPUs, which may lower the overall processing efficiency of the multiprocessing system.
이를 해결하기 위해서는 CPU 사이의 부하분산(load balancing)을 주기적으로 수행하여야 하나, 이 경우 플로우를 처리하는 CPU가 부하분산 과정에서 바뀌어 플로우 친화도가 낮아지며, 패킷의 처리 순서가 뒤바뀌어 패킷 순위 재처리(Packet re-ordering)의 과정이 필요한 이유 등으로 다중 프로세싱 시스템의 패킷 처리 효율이 낮아지는 문제점이 있다.In order to solve this problem, load balancing between CPUs should be performed periodically, but in this case, the CPU that processes the flow is changed during the load balancing process, which lowers the flow affinity. There is a problem in that packet processing efficiency of a multiprocessing system is lowered due to the need for a packet re-ordering process.
이와 같이, 다중 프로세싱 시스템의 처리 효율을 높이기 위하여 플로우 친화도를 높이고 적절한 부하분산이 필요하나 양자는 서로 상충하므로 이를 적절히 보완할 필요가 있다. As such, in order to increase the processing efficiency of the multiprocessing system, the flow affinity and the appropriate load balancing are required, but the two conflict with each other, and thus, it is necessary to appropriately compensate for this.
또한 최근 인터넷을 통하는 통신량이 급증하고, 이에 따라 서버의 대용량화, 고속화가 빠르게 진행되고 있다. 서버의 대용량화에 따르는 물리적 부피 증가를 해소하고 비용 절감 등을 꾀하기 위하여 서버의 가상화가 가속되고 있다. 서버의 대용량화, 고속화, 가상화에 따라 물리적 네트워크로부터 수신되는 가상화 환경에서 생성된 데이터 패킷을 포함하는 대용량 데이터에 대한 병렬처리의 고효율화가 필수적으로 요구되고 있으며, 가상화 서버에서 가상스위치 기능이 수행될 때 서버의 부하 증가에 기인하는 성능 저하가 야기됨에 따라 가상스위치 기능에 따르는 서버의 부하를 물리적 네트워크 인터페이스 장치로 이전하는 기술 개념 실현이 요구되고 있다.In addition, recently, the amount of communication through the Internet is rapidly increasing, and accordingly, the capacity and speed of the server are rapidly increasing. Server virtualization is accelerating in order to solve the physical volume increase and cost savings caused by the large capacity of the server. Due to the large capacity, high speed, and virtualization of servers, it is essential to increase the efficiency of parallel processing for large data including data packets generated in the virtual environment received from the physical network. As the performance degradation caused by the increase of the load is caused, the technical concept of transferring the load of the server according to the virtual switch function to the physical network interface device is required.
종래의 가상화 환경을 지원하는 NIC의 경우, 물리적 네트워크 인터페이스 장치에서 가상화 환경을 지원하는 방법으로 가상 머신 단위로 큐를 생성 관리하여 네트워크 인터페이스 장치와 서버의 가상 스위치 사이의 병목 현상을 감소시키는 시도가 있다. 그러나 종래의 경우에는 수신된 데이터 패킷의 병렬처리를 위한 프로세서 할당 및 큐의 재분배 시 가상 머신 단위로만 이루어진다. 즉 가상화 환경의 물리적 계층만이 고려된 프로세서 할당이 이루어진다. 따라서 병렬처리에서 프로세싱 효율을 높이는데 아주 중요한 요소 중 하나인 프로세서 친화도가 고려될 수 없고, 프로세서의 사용 부하만을 고려하여 프로세서 할당 및 큐의 재분배가 일어난다. 이는 병렬 처리의 효율을 감소시키는 요인으로 작용될 수 있다.In the case of a NIC supporting a conventional virtualization environment, there is an attempt to reduce the bottleneck between the network interface device and the virtual switch of the server by creating and managing queues in units of virtual machines as a method of supporting the virtualization environment in the physical network interface device. . In the conventional case, however, processor allocation for parallel processing of received data packets and redistribution of queues are performed in units of virtual machines. In other words, processor allocation takes into account only the physical layer of the virtualization environment. Therefore, processor affinity, which is one of the most important factors to increase the processing efficiency in parallel processing, cannot be considered, and processor allocation and redistribution of queues take place only in consideration of processor usage load. This may act as a factor to reduce the efficiency of parallel processing.
본 발명이 이루고자 하는 기술적 과제는, 패킷 병렬 처리를 수행하는 다중 프로세싱 환경에서 플로우 친화도(flow affinity)와 부하분산(load balancing)의 상충성을 완화시키고 전체 프로세서들의 사용 효율을 증가시키는 스케줄링 방법 및 그 장치를 제공하는 데 있다.SUMMARY OF THE INVENTION The present invention provides a scheduling method for mitigating a trade-off between flow affinity and load balancing in a multi-processing environment that performs packet parallel processing and increasing the efficiency of use of all processors. To provide a device.
상기의 기술적 과제를 달성하기 위한, 본 발명에 따른 스케줄링 방법의 일 예는, 다중 프로세싱 장치에서의 스케줄링 방법에 있어서, 복수의 프로세서들 전체 또는 그 일부를 적어도 하나 이상의 프로세서 그룹으로 그룹핑하는 단계; 및 수신한 패킷의 플로우에 대해 기 지정된 프로세서 그룹 또는 프로세서가 존재하면, 상기 플로우를 기 지정된 프로세서 그룹 또는 프로세서에 할당하는 단계; 및 수신한 패킷의 플로우에 대해 기 지정된 프로세서 그룹 또는 프로세서가 존재하지 않으면, 상기 플로우를 위한 새로운 프로세서 그룹을 생성하여 할당하거나 어느 프로세서 그룹에도 속하지 않은 프로세서에 상기 플로우를 할당하는 단계;를 포함한다.In accordance with an aspect of the present invention, there is provided a scheduling method according to the present invention, comprising: grouping all or some of a plurality of processors into at least one processor group; And if there is a processor group or processor specified for the flow of the received packet, assigning the flow to the predetermined processor group or processor; And if a predetermined processor group or processor does not exist for the flow of the received packet, generating and assigning a new processor group for the flow or allocating the flow to a processor that does not belong to any processor group.
상기의 기술적 과제를 달성하기 위한, 본 발명에 따른 스케줄링 방법의 일 예는, 다중 프로세싱 장치에서의 스케줄링 방법에 있어서, 복수의 프로세서들의 부하상태나 처리용량 또는 수신 패킷의 속성을 기초로 단일 스케줄링 또는 다중 스케줄링을 결정하는 단계; 상기 단일 스케줄링의 경우에, 복수의 프로세서들 중 하나를 스케줄러로 지정하는 단계; 및 상기 다중 스케줄링의 경우에, 복수의 프로세서들을 적어도 둘 이상의 프로세서 그룹으로 그룹핑하고, 각각의 프로세서 그룹 내 프로세서들 중 하나를 각각의 프로세서 그룹의 스케줄러로 지정하는 단계;를 포함한다.An example of the scheduling method according to the present invention for achieving the above technical problem, in the scheduling method in a multi-processing apparatus, single scheduling or based on the load status or processing capacity of the plurality of processors or the nature of the received packet Determining multiple scheduling; In the case of the single scheduling, designating one of the plurality of processors as a scheduler; And in the case of the multiple scheduling, grouping a plurality of processors into at least two processor groups and designating one of the processors in each processor group as a scheduler of each processor group.
상기의 기술적 과제를 달성하기 위한, 본 발명에 따른 스케줄링 방법의 일 예는, 물리적 망을 통해 수신된 패킷으로부터 물리적 네트워크 프레임에 인캡슐레이션된, 가상화 환경 네크워크 계층 정보를 포함하는 딥패킷을 획득하는 단계; 상기 딥패킷에 포함된 상기 가상화 환경 네트워크 계층 정보를 기초로 상기 딥패킷을 딥플로우로 식별하는 단계; 및 상기 딥패킷을 상기 식별된 딥플로우 단위로 구분하여 해당하는 큐에 할당하는 단계;를 포함한다.In order to achieve the above technical problem, an example of a scheduling method according to the present invention is to obtain a deep packet including virtualization environment network layer information encapsulated in a physical network frame from a packet received through a physical network. step; Identifying the deep packet as a deep flow based on the virtualized environment network layer information included in the deep packet; And dividing the deep packet into the identified deep flow unit and assigning the deep packet to a corresponding queue.
상기의 기술적 과제를 달성하기 위한, 본 발명에 따른 네트워크 인터페이스 장치의 일 예는, 물리적 망을 통해 수신된 패킷으로부터 물리적 네트워크 프레임에 인캡슐레이션된, 가상화 환경 네크워크 계층 정보를 포함하는 딥패킷을 획득하는 패킷수신부; 상기 딥패킷에 포함된 상기 가상화 환경 네트워크 계층 정보를 기초로 상기 딥패킷을 딥플로우로 식별하는 패킷분석부; 및 상기 딥패킷을 상기 식별된 딥플로우 단위로 구분하여 해당하는 큐에 할당하는 스케줄러;를 포함한다.One example of a network interface device according to the present invention for achieving the above technical problem is to obtain a deep packet including virtualization environment network layer information, encapsulated in a physical network frame from a packet received through a physical network. A packet receiver; A packet analyzer configured to identify the deep packet as a deep flow based on the virtualized environment network layer information included in the deep packet; And a scheduler for dividing the deep packet into the identified deep flow unit and assigning the deep packet to a corresponding queue.
본 발명에 따르면, 플로우 친화도와 부하 분산의 상충성을 완화하여 병렬 처리의 성능을 향상시킬 수 있다. 또한 동적으로 지정되는 복수 개의 스케줄러를 이용함으로써 패킷 스케줄링과 큐잉에 따른 대기시간(latency)을 감소할 수 있다. 또한 복수 개의 스케줄러를 통해 트래픽 속성에 따른 다양한 스케줄링 알고리즘을 용이하게 적용할 수 있다. 또한 복수의 가상 머신을 포함하는 가상화 환경을 구비한 서버의 부하가 감소 된다. 딥플로우 단위로 패킷을 처리함으로써 딥패킷과 프로세서 사이의 친화도를 높여 병렬 프로세싱의 효율을 높인다. 또한 가상 스위치의 부하를 네트워크 인터페이스 카드로 분산시켜 가상 네트워크 프로세싱의 효율을 높일 수 있다. 또한 딥플로우 단위로 큐잉하여 처리함으로써 가상 머신 종단간 딥플로우 단위의 QoS가 보장되는 스케일러블한 통신 처리를 구현할 수 있다. According to the present invention, the tradeoff between flow affinity and load balancing can be alleviated to improve the performance of parallel processing. In addition, by using a plurality of dynamically assigned schedulers, latency due to packet scheduling and queuing may be reduced. In addition, various scheduling algorithms according to traffic attributes may be easily applied through a plurality of schedulers. In addition, the load of a server having a virtualized environment including a plurality of virtual machines is reduced. By processing packets on a deep-flow basis, the affinity between the deep packet and the processor increases, increasing the efficiency of parallel processing. In addition, the load on the virtual switch can be distributed among the network interface cards to increase the efficiency of virtual network processing. In addition, by processing queued by deep flow unit, scalable communication processing that guarantees QoS of virtual machine end-to-end deep flow unit can be implemented.
도 1은 본 발명에 따른, 단일 스케줄링을 수행하는 다중 프로세싱 장치의 일 예를 도시한 도면,1 illustrates an example of a multiple processing apparatus for performing a single scheduling according to the present invention;
도 2는 본 발명에 따른, 단일 스케줄링을 수행하는 다중 프로세싱 방법의 일 예를 도시한 도면,2 illustrates an example of a multiple processing method for performing a single scheduling according to the present invention;
도 3은 본 발명에 따른 다중 스케줄링을 위한 분류 정책의 일 예를 도시한 도면,3 is a diagram illustrating an example of a classification policy for multiple scheduling according to the present invention;
도 4는 본 발명에 따른 다중 스케줄링 방법이 적용된 다중 프로세싱 장치의 일 예의 구성을 도시한 도면,4 is a diagram illustrating an example configuration of a multiple processing apparatus to which a multiple scheduling method is applied according to the present invention;
도 5는 본 발명에 따른 다중스케줄링부의 상세 구성의 일 예를 도시한 도면,5 is a view showing an example of a detailed configuration of a multi-scheduling unit according to the present invention,
도 6은 본 발명에 따른 다중 프로세싱 환경에서의 다중 스케줄링 방법의 일 예를 도시한 흐름도,6 is a flowchart illustrating an example of a multiple scheduling method in a multiple processing environment according to the present invention;
도 7은 본 발명에 따른 다중 프로세싱 환경에서의 다중 스케줄링 방법의 다른 일 예를 도시한 흐름도,7 is a flowchart illustrating another example of a multiple scheduling method in a multiple processing environment according to the present invention;
도 8은 본 발명에 따른 다중 프로세싱 환경에서 프로세서 그룹 내 스케줄러로 지정된 프로세서의 스케줄링 방법의 일 예를 도시한 흐름도,8 is a flowchart illustrating an example of a scheduling method of a processor designated as a scheduler in a processor group in a multiple processing environment according to the present invention;
도 9는 본 발명에 따른 다중 스케줄링을 위한 프로세서 그룹핑의 일 예를 도시한 도면,9 illustrates an example of processor grouping for multiple scheduling according to the present invention;
도 10은 본 발명에 따른 다중 스케줄링을 위하여 프로세서를 동적으로 그룹핑하는 방법의 일 예를 도시한 도면,10 illustrates an example of a method for dynamically grouping processors for multiple scheduling according to the present invention;
도 11은 본 발명에 따른 다중 프로세싱을 위한 네트워크 인터페이스 장치를 포함한 시스템의 개략적인 구조의 일 예를 도시한 도면,11 illustrates an example of a schematic structure of a system including a network interface device for multiple processing according to the present invention;
도 12는 본 발명에 따른 NIC의 자원을 동적으로 설정하는 방법의 일 예를 도시한 도면,12 illustrates an example of a method for dynamically setting resources of a NIC according to the present invention;
도 13은 본 발명에 따른 NIC의 일 실시예의 구성을 도시한 도면,13 illustrates a configuration of an embodiment of a NIC according to the present invention;
도 14는 본 발명에 따른 NIC의 딥플로우 기반 큐 할당의 일 예를 도시한 도면,14 illustrates an example of deepflow-based queue allocation of a NIC according to the present invention;
도 15는 본 발명에 따른 NIC의 딥플로우 기반 큐 할당의 다른 일 예를 도시한 도면,15 illustrates another example of a deepflow-based queue allocation of a NIC according to the present invention;
도 16은 본 발명에 사용되는 딥패킷의 일 예를 도시한 도면, 그리고,16 is a view showing an example of a deep packet used in the present invention, and
도 17은 본 발명에 따른 가상 머신 환경을 위한 패킷 처리 방법의 일 예를 도시한 흐름도이다.17 is a flowchart illustrating an example of a packet processing method for a virtual machine environment according to the present invention.
이하에서, 첨부된 도면들을 참조하여 본 발명에 따른 다중 프로세싱 환경에서의 다중 스케줄링 방법 및 그 장치에 대해 상세히 살펴본다. Hereinafter, a multi-scheduling method and a device in a multi-processing environment according to the present invention will be described in detail with reference to the accompanying drawings.
도 1은 본 발명에 따른, 단일 스케줄링을 수행하는 다중 프로세싱 장치의 일 예를 도시한 도면이다.1 is a diagram illustrating an example of a multiple processing apparatus for performing a single scheduling according to the present invention.
도 1을 참조하면, 다중 프로세서 장치(100)는 패킷 식별부(105), 패킷전달부(140), 패킷할당테이블(130), 메모리(104), 복수 개의 큐(110,112,114), 복수 개의 프로세서(120,122,124) 및 제어부(150)를 포함한다.Referring to FIG. 1, the multiprocessor device 100 may include a packet identification unit 105, a packet transfer unit 140, a packet allocation table 130, a memory 104, a plurality of queues 110, 112, and 114, and a plurality of processors ( 120, 122, 124 and the controller 150.
패킷식별부(105)는 유무선 네트워크 또는 다른 기기로부터 패킷을 수신하고, 수신한 패킷의 플로우(flow)를 식별한다. 또한 패킷식별부(105)는 수신한 패킷 플로우에 할당된 프로세서가 존재하는지 패킷할당테이블(130)을 참조하여 파악한다.The packet identification unit 105 receives a packet from a wired or wireless network or another device, and identifies a flow of the received packet. In addition, the packet identification unit 105 determines whether there is a processor allocated to the received packet flow with reference to the packet allocation table 130.
패킷할당테이블(130)은 패킷 플로우별로 각각 할당된 프로세서의 정보를 포함한다. 예를 들어, 패킷할당테이블(130)은 제1플로우와 제2플로우를 처리하기 위한 프로세서로 제1프로세서가 할당되어 있고, 제3플로우를 처리하기 위한 프로세서로 제2프로세서가 할당되어 있다는 정보를 포함한다. 패킷할당테이블(130)에 저장되는 정보는 이후 살필 스케줄러에 의해 생성되고 갱신된다.The packet allocation table 130 includes information of processors allocated to each packet flow. For example, the packet allocation table 130 may include information indicating that a first processor is allocated as a processor for processing the first flow and a second flow, and a second processor is allocated as a processor for processing the third flow. Include. The information stored in the packet allocation table 130 is then generated and updated by the review scheduler.
메모리(104)는 패킷식별부(105)가 수신한 패킷을 저장한다. 이때 메모리(104)는 패킷식별부(105)에 의해 파악된 패킷의 플로우 정보, 패킷할당테이블(130)을 참조하여 파악한 프로세서 정보 등을 함께 저장할 수 있다. The memory 104 stores the packet received by the packet identification unit 105. In this case, the memory 104 may store the flow information of the packet identified by the packet identification unit 105, the processor information obtained by referring to the packet allocation table 130, and the like.
패킷전달부(140)는 메모리(104)에 저장된 패킷들을 해당 프로세서의 큐에 전달한다. 패킷전달부(140)는 메모리에 저장된 패킷을 순서대로 프로세서 큐에 전달하거나, QoS(Quality of Service), 우선순위(prioirty) 등 다양한 조건 등을 고려하여 비순차적으로 패킷을 프로세서의 큐에 전달할 수도 있다. The packet transmitter 140 transfers the packets stored in the memory 104 to the queue of the corresponding processor. The packet delivery unit 140 may deliver the packets stored in the memory to the processor queue in order, or deliver the packets out of order to the processor queue in consideration of various conditions such as quality of service (QoS), priority, or the like. have.
큐(110,112,114)는 각 프로세서가 처리할 패킷을 메모리(104)로부터 전달받아 저장한다. 본 실시 예에서 큐(110,112,114)는 프로세서(120,122,124)마다 각각 하나씩 존재하는 것으로 도시하였으나, 반드시 이에 한정되는 것은 아니며 하나의 프로세서에 두 개 이상의 큐가 존재하거나, 또는 하나의 큐를 두 개 이상의 프로세서가 공유할 수 있다. 또는 큐(110,112,114)는 도 11 내지 도 17에 개시된 방법을 통해 그룹핑될 수 있다. The queues 110, 112, and 114 receive and store packets to be processed by each processor from the memory 104. In the present exemplary embodiment, one queue 110, 112, and 114 are present for each of the processors 120, 122, and 124, but the present invention is not limited thereto, and two or more queues exist in one processor, or two or more queues exist in one queue. Can share Alternatively, the queues 110, 112, 114 may be grouped through the method disclosed in FIGS. 11 through 17.
또한 큐(110,112,114)는 선입선출(FIFO) 구조이나, 반드시 이에 한정되는 것은 아니며, 후입선출(LIFO) 또는 우선순위(priority) 기반 출력 등 다양한 형태의 구조로 구현될 수 있는 등 각 프로세서에서 처리할 패킷을 저장할 수 있는 형태이면 된다. In addition, the queues 110, 112, and 114 have a first-in first-out (FIFO) structure, but are not necessarily limited thereto, and may be implemented in various types of structures such as last-in-first-out (LIFO) or priority-based output. It can be a form that can store packets.
패킷할당테이블(130)에 패킷 플로우 정보가 존재하지 아니한 경우에, 제어부(150)는 복수 개의 프로세서들 중 하나를 스케줄러로 지정한 후 인터럽트 요청 신호를 전송한다. 인터럽트 요청 신호를 수신한 프로세서는 패킷을 처리할 프로세서를 선택하고 패킷할당테이블에 관련 정보를 저장한다. When packet flow information does not exist in the packet allocation table 130, the controller 150 designates one of the plurality of processors as a scheduler and transmits an interrupt request signal. Upon receiving the interrupt request signal, the processor selects a processor to process a packet and stores related information in a packet allocation table.
복수 개의 프로세서(120,122,124)는 각각 패킷을 처리한다. 또한 다중 프로세싱 시스템의 효율과 제조비용의 절감 등을 고려하여 패킷 스케줄링을 위한 별도의 스케줄러를 구비하지 아니하고, 복수 개의 프로세서 중 하나(예를 들어, 프로세서1(120))를 스케줄러로 활용할 수 있다. 복수 개의 프로세서 중 하나를 스케줄러로 활용하는 방법에 대해서는 도 2를 참조하여 살펴본다. 물론 본 실시 예에서 복수 개의 프로세서 외에 별도의 스케줄러를 구비하여 구현할 수도 있다.The plurality of processors 120, 122, and 124 process packets, respectively. In addition, in consideration of the efficiency of the multi-processing system and the reduction in manufacturing cost, one of the plurality of processors (for example, processor 1 120) may be used as a scheduler without having a separate scheduler for packet scheduling. A method of using one of the plurality of processors as a scheduler will be described with reference to FIG. 2. Of course, in this embodiment, a separate scheduler may be provided in addition to the plurality of processors.
도 2는 본 발명에 따른, 단일 스케줄링을 수행하는 다중 프로세싱 방법의 일 예를 도시한 도면이다.2 is a diagram illustrating an example of a multiple processing method for performing a single scheduling according to the present invention.
도 1 및 도 2를 함께 참조하면, 패킷식별부(105)는 수신한 패킷을 분석하여 패킷 플로우를 식별한다(S200, S210). 여기서 플로우 식별 방법은 수신한 패킷의 네트워크 전 계층의 트래픽 속성을 분석하여 기 설정된 네트워크 통신 정책에 따라 분류한다. 일 예로, 수신한 패킷의 송신 노드 주소, 목적지 주소, 세션 및 응용 계층 등의 속성을 요소로 기 설정된 통신 정책에 의하여 하나의 플로우를 구분할 수 있다. 패킷식별부(105)는 패킷할당테이블(130)을 참조하여, 플로우를 처리할 프로세서의 정보가 존재하는지 파악한다(S220). 패킷과 해당 패킷의 플로우 정보, 프로세서 정보 등은 메모리(104)에 저장된다. 1 and 2 together, the packet identification unit 105 analyzes the received packet to identify the packet flow (S200, S210). Here, the flow identification method analyzes traffic attributes of all layers of the received packet and classifies the packet according to a predetermined network communication policy. For example, one flow may be distinguished by a communication policy that is set by using attributes such as a transmission node address, a destination address, a session, and an application layer of the received packet. The packet identifying unit 105 refers to the packet allocation table 130 to determine whether there is information of a processor to process the flow (S220). The packet, flow information of the packet, processor information, and the like are stored in the memory 104.
패킷할당테이블(130)에 플로우를 처리할 프로세서의 정보가 존재하는 경우(S230), 패킷전달부(140)는 패킷을 해당 프로세서의 큐에 전달한다(S260). 예를 들어, 패킷식별부(105)에 의해 수신 패킷이 제1플로우로 식별되고, 패킷할당테이블(130)에 제1플로우를 처리할 프로세서로 제2프로세서가 할당되어 있다면, 패킷전달부(140)는 패킷을 제2프로세서(122)의 큐(112)로 전달한다.If information on the processor to process the flow exists in the packet allocation table 130 (S230), the packet transfer unit 140 delivers the packet to the queue of the processor (S260). For example, if the received packet is identified as the first flow by the packet identification unit 105, and the second processor is assigned to the processor to process the first flow in the packet allocation table 130, the packet delivery unit 140. Transmits the packet to the queue 112 of the second processor 122.
반면, 패킷할당테이블(130)에 플로우를 처리할 프로세서의 정보가 존재하지 아니하면(즉, 새로운 플로우인 경우)(S230), 제어부(150)는 복수 개의 프로세서 중 스케줄러로 지정된 프로세서에게 인터럽트 요청신호를 전달한다(S240). 제어부(150)는 복수 개의 프로세서들 중 현재 부하가 가장 적은 프로세서를 스케줄러로 지정하거나, 기 설정된 스케줄러 결정 알고리즘을 통하여 스케줄러를 지정하거나, 기 설정된 프로세서를 스케줄러로 지정할 수 있다. 본 실시 예의 경우 프로세서1(120)이 스케줄러로 지정되어 있다.On the other hand, if there is no information on the processor to process the flow in the packet allocation table 130 (that is, a new flow) (S230), the controller 150 sends an interrupt request signal to a processor designated as a scheduler among a plurality of processors. It passes (S240). The controller 150 may designate a processor having the least current load among a plurality of processors as a scheduler, a scheduler through a preset scheduler determination algorithm, or designate a preset processor as a scheduler. In the present embodiment, processor 1 120 is designated as a scheduler.
인터럽트 요청신호를 수신한 프로세서(120)는 이전 수행하던 작업을 중단하고, 스케줄링 동작을 수행한다(S250). 예를 들어, 스케줄러로 지정된 프로세서(120)는 새로운 플로우를 처리할 프로세서를 선택하고(S250), 선택한 프로세서에 대한 정보를 패킷할당테이블(130)에 저장한다(S260). 스케줄러로 지정된 프로세서에 인터럽트 요청이 전달되어 있는 경우, 그 인터럽트가 해제될 때까지 새로 입력되는 패킷 처리를 위한 인터럽트 요청은 불허된다.Receiving the interrupt request signal, the processor 120 stops the previously performed work and performs a scheduling operation (S250). For example, the processor 120 designated as a scheduler selects a processor to process a new flow (S250), and stores information on the selected processor in the packet allocation table 130 (S260). If an interrupt request is delivered to the processor designated by the scheduler, the interrupt request for newly input packet processing is not allowed until the interrupt is released.
또한, 스케줄러로 지정된 프로세서(120)는 프로세서들의 부하 불균형이 일정 수준 이상인 경우 등의 특정 이벤트가 발생하는 경우 또는 주기적으로 종래의 여러 부하분산(load balancing) 알고리즘을 적용하여 각 프로세서간의 부하재분산(re-balancing)을 시도할 수 있다. In addition, the processor 120 designated as the scheduler may perform load rebalancing between each processor by applying various conventional load balancing algorithms or when a specific event occurs, such as when the load imbalance is more than a predetermined level or periodically. re-balancing).
도 1,2의 경우, 하나의 스케줄러(120)가 선택되어 해당 작업을 수행하는 동안 시스템으로부터 새로운 인터럽트가 허용되지 않으며, 요청되어 있는 인터럽트가 해제될 때까지 다른 새로운 플로우에 대한 처리가 지연된다. 또한 부하 불균형을 해소하기 위한 부하재분산을 복수 개의 프로세서들 전체에 대해 수행하므로, 플로우 친화도와 부하분포간의 상충성이 더 심화되는 문제점이 있다. 이는 도 4의 다중 스케줄링을 통해 완화될 수 있다.In the case of FIGS. 1 and 2, a new interrupt is not allowed from the system while one scheduler 120 is selected to perform the task, and processing for another new flow is delayed until the requested interrupt is released. In addition, since load redistribution is performed for all the processors to solve the load imbalance, there is a problem in that the conflict between the flow affinity and the load distribution becomes more severe. This can be mitigated through the multiple scheduling of FIG.
도 3은 본 발명에 따른 다중 스케줄링을 위한 분류 정책의 일 예를 도시한 도면이다.3 is a diagram illustrating an example of a classification policy for multiple scheduling according to the present invention.
도 3을 참조하면, 분류 정책은 복수 개의 프로세서들을 그룹으로 분할하기 위한 정책을 포함한다. 도 4에서 살펴보겠지만, 다중 스케줄링의 경우 복수 개의 프로세서들을 적어도 둘 이상의 그룹으로 나누어 각 그룹별로 스케줄링을 수행한다. 이를 위해서는 복수 개의 프로세서들을 그룹으로 나누기 위한 정책이 필요하다.Referring to FIG. 3, the classification policy includes a policy for dividing a plurality of processors into groups. As shown in FIG. 4, in the case of multiple scheduling, a plurality of processors are divided into at least two groups to perform scheduling for each group. This requires a policy for dividing a plurality of processors into groups.
분류 정책의 일 예로, 도 3에 도시된 바와 같이 패킷 플로우 기반의 정책이 있다. 패킷 플로우를 계층적으로 나눌 수 있는 속성을 기반으로 플로우를 두 그룹 A,B로 분할할 수 있다. 이 경우, 복수 개의 프로세서들은 현재 처리하고 있는 플로우가 어떤 그룹에 속하는지에 따라 두 그룹으로 분할될 수 있다.An example of a classification policy is a packet flow based policy, as shown in FIG. 3. The flow can be divided into two groups A and B based on attributes that can divide the packet flow hierarchically. In this case, the plurality of processors may be divided into two groups according to which group the flow currently being processed belongs to.
또 다른 예로, 각 프로세서들의 부하를 기반으로 하는 분류 정책이 있다. 각 그룹별 부하 분포가 고르게 될 수 있도록 프로세서들을 기 설정된 그룹 수에 따라 분할할 수 있다.Another example is a classification policy based on the load of each processor. Processors can be divided according to a predetermined number of groups so that the load distribution of each group can be even.
복수 개의 프로세서들을 그룹으로 분할하기 위한 분류 정책은 복수일 수 있다. 예를 들어, 제1 정책은 복수 개의 프로세서들을 플로우 기반으로 두 개의 그룹으로 분할하는 정책이고, 제2 정책은 복수 개의 프로세서들을 플로우 기반으로 세 개의 그룹으로 분할하는 정책이고, 제3 정책은 복수 개의 프로세서들을 부하정도에 따라 적어도 둘 이상의 그룹으로 분할하는 정책일 수 있다.The classification policy for dividing the plurality of processors into groups may be a plurality. For example, the first policy is a policy for dividing a plurality of processors into two groups based on a flow, the second policy is a policy for dividing a plurality of processors into three groups based on a flow, and the third policy is a plurality of policies. It may be a policy to divide the processors into at least two groups according to the load level.
본 발명은 도 3의 실시 예에 한정되는 것은 아니며, 이 외 각 프로세서들을 분할하기 위한 다양한 분류 정책을 적용할 수 있다. 분류 정책은 미리 설정되어 있으며, 사용자가 별도의 입출력 인터페이스를 통해 분류 정책을 갱신할 수 있다. 도 4에서는 다중 스케줄링을 위하여 복수 개의 프로세서들을 나누는 기준, 즉 분류 정책이 기 설정되어 있다고 가정한다.The present invention is not limited to the embodiment of FIG. 3, and various classification policies for dividing the processors may be applied. The classification policy is set in advance, and the user may update the classification policy through a separate input / output interface. In FIG. 4, it is assumed that a criterion for dividing a plurality of processors, that is, a classification policy, is set in advance for multiple scheduling.
도 4는 본 발명에 따른 다중 스케줄링 방법이 적용된 다중 프로세싱 장치의 일 예의 구성을 도시한 도면이다.4 is a diagram illustrating an example of a configuration of a multiple processing apparatus to which a multiple scheduling method according to the present invention is applied.
도 4를 참조하면, 다중 프로세싱 장치(400)는 패킷식별부(410), 패킷전달부(480), 패킷할당테이블(420), 다중스케줄링부(430), 메모리(440), 복수 개의 큐(450) 및 복수 개의 프로세서(460,462,464,466,470,472,474)를 포함한다.Referring to FIG. 4, the multiprocessing apparatus 400 includes a packet identification unit 410, a packet transfer unit 480, a packet allocation table 420, a multischeduling unit 430, a memory 440, and a plurality of queues ( 450) and a plurality of processors (460, 462, 464, 466, 470, 472, 474).
패킷식별부(410), 패킷전달부(480), 패킷할당테이블(420), 메모리(440), 복수 개의 큐(450)와 프로세서(460,462,464,466,470,472,474) 등은 도 1에서 설명한 구성과 기능을 모두 포함한다. 따라서 본 실시 예는 도 1과 동일한 구성과 기능에 대한 중복 설명은 생략하고, 본 실시예에 따른 다중스케줄링을 위하여 필요한 구성과 기능 위주로 설명한다. The packet identification unit 410, the packet transfer unit 480, the packet allocation table 420, the memory 440, the plurality of queues 450, the processors 460, 462, 464, 466, 470, 472, and 474 include all the configurations and functions described with reference to FIG. 1. . Therefore, the present embodiment will not be repeated descriptions of the same configuration and function as in FIG. 1 and will be described based on the configuration and function necessary for multischeduling according to the present embodiment.
다중스케줄링부(430)는 부하분포 상태, 트래픽 속성, 트래픽 처리 용량 등 다중 프로세싱 시스템의 상태 정보를 기초로 단일 스케줄링을 수행할지 다중 스케줄링을 수행할지를 결정한다. 예를 들어, 다중스케줄링부(430)는 단일 스케줄링을 수행하다가 다중 스케줄링으로 변경하거나, 그 반대로 다중 스케줄링을 수행하다가 단일 스케줄링으로 변경할 수 있다. The multi-scheduling unit 430 determines whether to perform a single scheduling or multiple scheduling based on the state information of the multiple processing system such as load distribution status, traffic attributes, traffic processing capacity, and the like. For example, the multi-scheduling unit 430 may change to multi-scheduling while performing a single scheduling, or vice versa.
다중스케줄링부(430)는 도 3과 같은 분류 정책이 다수 개 존재하는 경우, 상태 정보를 기초로 어떤 분류 정책을 적용할지 결정할 수 있다. 다중스케줄링부(430)는 다중 스케줄링을 수행할 것으로 결정하면, 분류 정책에 따라 복수 개의 프로세서들을 적어도 둘 이상의 그룹으로 분류하고, 각 그룹별로 스케줄링을 수행할 스케줄러를 지정한다. 다중스케줄링부의 상세 구성은 도 5에 도시되어 있다.When there are a plurality of classification policies as shown in FIG. 3, the multi-scheduling unit 430 may determine which classification policy to apply based on the state information. When the multi-scheduling unit 430 determines to perform the multi-scheduling, the multi-scheduling unit 430 classifies the plurality of processors into at least two groups according to the classification policy, and designates a scheduler to perform the scheduling for each group. Detailed configuration of the multi-scheduling unit is shown in FIG.
예를 들어, 도 4의 예와 같이, 다중스케줄링부(430)는 7개의 프로세서들을 두 개의 프로세서 그룹(제1그룹:프로세서1~4, 제2그룹:프로세서5~7)으로 분할하고, 각 그룹 내 하나의 프로세서(466,474)를 기 설정된 스케줄러 결정 알고리즘에 의하여 스케줄러로 지정한다. 다중스케줄링부(430)에서 프로세서들을 그룹별로 분할하게 되면 패킷할당테이블(420)에 프로세서 그룹에 대한 정보를 저장할 수 있다.For example, as shown in the example of FIG. 4, the multi-scheduling unit 430 divides seven processors into two processor groups (first group: processors 1 to 4 and second group: processors 5 to 7). One processor (466, 474) in the group is designated as a scheduler by a predetermined scheduler determination algorithm. When the multi-scheduling unit 430 divides the processors into groups, information about the processor group may be stored in the packet allocation table 420.
예를 들어, 도 3과 같이 플로우 기반으로 프로세서들을 그룹핑하는 경우에, 다중스케줄링부(430)는 플로우가 어느 그룹에 속하는지에 대한 정보를 패킷할당테이블(420)에 저장한다. 새로 수신한 패킷 플로우에 대한 정보가 패킷할당테이블(420)에 존재하지 아니한 경우, 패킷식별부(410)는 새로운 플로우가 어떤 그룹에 속하는지 파악하고 해당 패킷과 해당 패킷에 대한 식별정보를 메모리(440)에 저장한다. 다중스케줄링부(430)는 부하 정도 또는 기 설정된 스케줄러 결정 알고리즘에 의하여 해당 그룹 내에 해당 패킷을 처리할 스케줄러를 지정하고, 지정된 스케줄러에게 해당 패킷을 처리하도록 인터럽트 요청신호를 전송한다. 스케줄러로 지정된 프로세서는, 도 1에서 설명한 바와 같이, 해당 플로우를 처리할 그룹 내 프로세서를 선택하는 등의 스케줄링 동작을 수행한다.For example, when grouping processors on a flow basis as shown in FIG. 3, the multi-scheduling unit 430 stores information on which group the flow belongs to in the packet allocation table 420. When the information on the newly received packet flow does not exist in the packet allocation table 420, the packet identification unit 410 determines which group the new flow belongs to and stores the packet and identification information on the packet in memory ( 440). The multi-scheduling unit 430 designates a scheduler to process the packet in the group according to the load level or a predetermined scheduler determination algorithm, and transmits an interrupt request signal to process the packet to the specified scheduler. As described with reference to FIG. 1, the processor designated as the scheduler performs a scheduling operation such as selecting a processor in a group to process the flow.
예를 들어, 도 3의 그룹핑 정책에 의해 플로우 그룹 A(300)에 대해 프로세서1~4를 포함하는 프로세서 제1그룹(490)이 할당되어 있고, 플로우 그룹 B(310)에 대해 프로세서5~7을 포함하는 프로세서 제2그룹(495)이 할당되어 있다고 하자. 수신한 패킷의 플로우가 플로우 그룹 A(300)에 속하면, 다중스케줄링부(430)는 프로세서 제1그룹(490)에 속한 프로세서들 중 하나를 스케줄러로 지정하여 해당 그룹(490) 내 스케줄링 동작이 수행될 수 있도록 한다. 이때 프로세서 제2그룹(495)은 제1그룹(490)의 스케줄링 동작 여부와 무관하게 새로운 패킷의 처리 또는 스케줄링 동작을 수행할 수 있어 전체 프로세서의 처리 효율이 향상된다. 다시 말해, 프로세서 제1그룹(490)과 프로세서 제2그룹(495)의 스케줄링 동작이 병렬로 수행될 수 있다. For example, the first group 490 including the processors 1 to 4 is allocated to the flow group A 300 according to the grouping policy of FIG. 3, and the processors 5 to 7 are assigned to the flow group B 310. Assume that a second group of processors 495 including n is allocated. If the flow of the received packet belongs to the flow group A (300), the multi-scheduling unit 430 designates one of the processors belonging to the processor first group 490 as a scheduler to perform the scheduling operation in the group 490. To be performed. In this case, the processor second group 495 may perform new packet processing or scheduling regardless of whether the first group 490 is scheduled or not, thereby improving processing efficiency of the entire processor. In other words, scheduling operations of the first processor group 490 and the second processor group 495 may be performed in parallel.
또 다른 예로, 다중 스케줄링에 있어서, 프로세서들의 그룹핑은 프로세서의 부하나 여러 정책 등에 따라 수시로 변경될 수 있으며, 그룹핑되지 아니한 프로세서들을 새로운 수신 패킷의 플로우를 위한 프로세서 그룹으로 새롭게 그룹핑할 수 있다. 이에 대해서는 도 9 및 도 10에서 다시 설명한다. As another example, in multi-scheduling, the grouping of processors may be changed at any time according to the processor load or various policies, and the ungrouped processors may be newly grouped into a processor group for a flow of a new received packet. This will be described again with reference to FIGS. 9 and 10.
도 5는 본 발명에 따른 다중스케줄링부의 상세 구성의 일 예를 도시한 도면이다.5 is a diagram illustrating an example of a detailed configuration of a multi-scheduling unit according to the present invention.
도 5를 참조하면, 다중스케줄링부(430)는 정책판단부(500), 그룹분할부(510), 스케줄러지정부(520)를 포함한다.Referring to FIG. 5, the multi-scheduling unit 430 includes a policy decision unit 500, a group divider 510, and a scheduler unit 520.
정책판단부(500)는 다중 프로세싱 환경의 여러 상태 정보, 예를 들어, 부하분포상태, 트래픽 속성, 트래픽 처리 용량 등의 정보를 이용하여 단일 스케줄링 또는 다중 스케줄링을 결정한다. 또한 정책판단부(500)는 다중 스케줄링을 수행하는 경우 복수 개의 프로세서들을 어떻게 분할할지, 또는 분할된 그룹별 어떤 정책을 적용할지를 결정한다. The policy decision unit 500 determines a single scheduling or multiple scheduling using various state information of a multiprocessing environment, for example, load distribution state, traffic attributes, traffic processing capacity, and the like. In addition, the policy decision unit 500 determines how to divide a plurality of processors when performing multiple scheduling, or which policy for each divided group to apply.
예를 들어, 정책 판단부(500)는 다중 프로세싱 장치의 전체 트래픽 처리 용량이 일정 수준 이하인 경우에 다중 스케줄링을 수행할 것으로 결정하고, 분류 정책으로 도 3과 같은 플로우 기반의 정책을 선택할 수 있다.For example, the policy determiner 500 may determine to perform multi-scheduling when the total traffic processing capacity of the multi-processing apparatus is less than or equal to a predetermined level, and select the flow-based policy as shown in FIG. 3 as the classification policy.
그룹분할부(510)는 정책판단부(500)에 의해 결정된 분류 정책에 따라 복수 개의 프로세서들을 적어도 둘 이상의 그룹으로 분할한다. The group divider 510 divides the plurality of processors into at least two groups according to the classification policy determined by the policy determiner 500.
스케줄러지정부(520)는 부하 정도 또는 기 설정된 스케줄러 선택 알고리즘에 의하여 각 그룹 내 프로세서들 중 하나를 스케줄러로 지정한다. 예를 들어, 스케줄러지정부(520)는 각 그룹별로 부하가 가장 적은 프로세서를 스케줄러로 지정할 수 있다. 이외 특정 프로세서를 스케줄러로 고정하거나 다른 여러 선택 방법을 적용하여 동적으로 스케줄러를 지정할 수 있다.The scheduler unit 520 designates one of the processors in each group as a scheduler according to a load level or a preset scheduler selection algorithm. For example, the scheduler 520 may designate a processor having the least load for each group as a scheduler. In addition, you can pin a specific processor as a scheduler, or specify a scheduler dynamically with several other choices.
도 6은 본 발명에 따른 다중 프로세싱 환경에서의 다중 스케줄링 방법의 일 예를 도시한 흐름도이다.6 is a flowchart illustrating an example of a multiple scheduling method in a multiple processing environment according to the present invention.
도 4 및 도 6을 함께 참조하면, 다중스케줄링부(430)는 트래픽 용량이나, 플로우 속성, 부하 분포 상태 등 여러 상태 정보를 파악한다(S600). 이러한 상태 정보를 기초로 다중스케줄링부(430)는 단일 스케줄링을 수행할지 아니면 다중스케줄링을 수행할지 여부를 판단한다(S610). 단일 스케줄링을 수행하는 경우, 다중 스케줄링부(430)는 복수 개의 프로세서들 중 하나를 스케줄러로 지정한다. 다중 스케줄링을 수행하는 경우, 다중스케줄링부(430)는 분류 정책에 따라 복수 개의 프로세서들을 적어도 둘 이상의 그룹으로 분할하고(S620), 각 그룹별로 스케줄러로 동작할 프로세서를 지정한다(S630). 각 그룹별로 지정된 프로세서는 도 1과 같이, 인터럽트 요청 신호에 따라 해당 패킷에 대한 스케줄링 작업을 하되, 전체 프로세서들을 대상으로 스케줄링을 수행하는 것이 아니라 자신이 속한 그룹 내 프로세서들에 대해서만 스케줄링을 수행한다. 따라서, 둘 이상으로 분할된 각 그룹은 그룹별로 지정된 스케줄러에 의하여 독립적으로 동시에 스케쥴링 작업이 수행 가능하다. 다시 말해, 각 그룹별 스케줄러는 다중스케줄링부(430)로부터 각각 인터럽트 신호를 수신하며, 다른 그룹의 스케줄러에 대한 인터럽트의 해제 여부와 관계없이 패킷 처리를 위한 프로세서의 선택 등과 같은 스케줄링 작업을 수행할 수 있다. 그리고 분할된 각 그룹은 필요에 따라 독립적으로 서로 다른 정책 또는 알고리즘이 적용될 수 있다. 4 and 6 together, the multi-scheduling unit 430 grasps various state information such as traffic capacity, flow attribute, load distribution state (S600). Based on the state information, the multi-scheduling unit 430 determines whether to perform a single scheduling or multi-scheduling (S610). When performing a single scheduling, the multiple scheduling unit 430 designates one of the plurality of processors as a scheduler. When performing multi-scheduling, the multi-scheduling unit 430 divides the plurality of processors into at least two groups according to the classification policy (S620), and designates a processor to operate as a scheduler for each group (S630). The processor designated for each group performs scheduling on the corresponding packet according to the interrupt request signal as shown in FIG. 1, but does not perform scheduling for all processors, but only for processors in the group to which the processor belongs. Therefore, each group divided into two or more may be independently scheduled simultaneously by a scheduler designated for each group. In other words, each group scheduler receives an interrupt signal from the multi-scheduling unit 430, and may perform a scheduling operation such as selection of a processor for packet processing regardless of whether interrupts to other schedulers are released. have. Each divided group may be independently applied with different policies or algorithms as necessary.
도 7은 본 발명에 따른 다중 프로세싱 환경에서의 다중 스케줄링 방법의 다른 일 예를 도시한 흐름도이다. 도 7은 앞서 살핀 다중스케줄링부에 의해 복수 개의 프로세서들이 그룹핑되어 있는 경우를 가정한다.7 is a flowchart illustrating another example of a multiple scheduling method in a multiple processing environment according to the present invention. FIG. 7 assumes that a plurality of processors are grouped by the salping multi-scheduling unit.
도 4 및 도 7을 참조하면, 패킷식별부(410)는 패킷을 수신하면(S700), 패킷을 분석하여 플로우를 식별한다(S710). 패킷할당테이블(420)에 해당 플로우에 대한 정보가 존재하는 경우에(S730), 패킷식별부(410)는 새로운 플로우가 어떤 그룹에 속하는지 등을 파악하고 해당 패킷과 해당 패킷에 대한 식별정보를 메모리(440)에 저장한다. 다중스케줄링부(430)는 해당 스케줄러에게 해당 패킷을 처리하도록 인터럽트 요청신호를 전송한다. 4 and 7, when receiving a packet (S700), the packet identification unit 410 analyzes the packet to identify a flow (S710). When the information on the flow exists in the packet allocation table 420 (S730), the packet identification unit 410 determines which group the new flow belongs to, and identifies the packet and identification information about the packet. Stored in the memory 440. The multi-scheduling unit 430 transmits an interrupt request signal to the scheduler to process the packet.
패킷할당테이블(420)에 해당 플로우에 대한 정보가 존재하지 아니한 경우에(S730), 다중스케줄링부(430)는 분류 정책을 참조하여 플로우가 속한 그룹을 파악한다(S740). 예를 들어, 프로세서 그룹이 도 3과 같은 플로우 기반으로 나뉘어지는 경우, 다중스케줄링부(430)는 플로우를 계층적으로 구분하는 상위 속성을 기준으로 새롭게 인식한 플로우가 어느 그룹에 속하는지 파악한다. 또 다른 예로서, 프로세서 그룹이 부하 분포에 따라 나뉘어지는 경우, 다중스케줄링부(430)는 부하가 상대적으로 낮은 그룹을 새롭게 인식한 플로우가 속하는 그룹으로 선택할 수 있다.If the information on the flow does not exist in the packet allocation table 420 (S730), the multi-scheduling unit 430 refers to the classification policy to determine the group to which the flow belongs (S740). For example, when the processor group is divided based on the flow as shown in FIG. 3, the multi-scheduling unit 430 determines which group the newly recognized flow belongs to based on an upper attribute that classifies the flow hierarchically. As another example, when processor groups are divided according to load distribution, the multischeduling unit 430 may select a group having a relatively low load as a group to which a newly recognized flow belongs.
다중스케쥴링부(430)는 새로운 플로우가 어떤 그룹에 속하는지 파악한 후, 부하 정도 또는 기 설정된 스케줄러 결정 알고리즘을 이용하여 해당 그룹 내에 해당 패킷을 처리할 스케줄러를 지정하고, 지정된 스케쥴러에게 해당 패킷을 처리하도록 인터럽트 요청신호를 전송한다. After determining which group the new flow belongs to, the multi-scheduling unit 430 designates a scheduler to process the packet in the group by using a load level or a predetermined scheduler determination algorithm, and processes the packet to the specified scheduler. Send the interrupt request signal.
인터럽트 신호를 수신한 프로세서는 스케줄러로 동작하며, 새로운 플로우를 처리할 프로세서를 선택하고, 관련 정보를 패킷할당테이블(420)에 저장한다(S750, S760).Upon receiving the interrupt signal, the processor operates as a scheduler, selects a processor to process a new flow, and stores related information in the packet allocation table 420 (S750 and S760).
예를 들어, 도 4를 다시 참조하면, 새로운 플로우가 프로세서1~4로 구성된 그룹에 할당되는 경우, 다중스케줄링부(430)는 스케줄러로 지정된 프로세서4(466)에게 인터럽트 신호를 전송한다. 프로세서4(466)는 기 지정된 프로세서 결정 알고리즘에 의하여 해당 패킷을 처리할 프로세서로 프로세서1(460)을 선택하고 해당 정보를 패킷할당테이블(420)에 저장한다. 이후 동일 플로우의 패킷이 수신된 경우에 패킷전달부(480)는 해당 패킷을 프로세서1(460)에 할당한다. For example, referring back to FIG. 4, when a new flow is allocated to a group consisting of processors 1 to 4, the multischeduling unit 430 transmits an interrupt signal to the processor 4 466 designated as a scheduler. Processor 4 466 selects processor 1 460 as a processor to process the packet according to a predetermined processor determination algorithm and stores the corresponding information in packet allocation table 420. Then, when a packet of the same flow is received, the packet transfer unit 480 allocates the packet to processor 1 (460).
도 8은 본 발명에 따른 다중 프로세싱 환경에서 프로세서 그룹 내 스케줄러로 지정된 프로세서의 스케줄링 방법의 일 예를 도시한 흐름도이다.8 is a flowchart illustrating an example of a scheduling method of a processor designated as a scheduler in a processor group in a multiple processing environment according to the present invention.
도 8을 참조하면, 복수의 프로세서는 인터럽트 신호를 수신하기 이전에는 일반적인 플로우 처리 과정 등을 수행한다(S800). 새롭게 수신한 패킷의 플로우에 할당된 프로세서 그룹 또는 프로세서가 존재하면, 다중스케줄링부(430)는 기 지정된 프로세서 그룹 또는 프로세서에 플로우를 할당한다. 새롭게 수신한 패킷의 플로우에 할당된 프로세서 그룹 또는 프로세서가 존재하지 아니하면, 다중스케줄링부(430)는 새로운 패킷의 플로우를 위한 프로세서 그룹을 생성한 후 새롭게 생성한 프로세서 그룹 내 어느 하나의 프로세서에게 인터럽트 신호를 전송한다(S810). Referring to FIG. 8, a plurality of processors perform a general flow process or the like before receiving an interrupt signal (S800). If there is a processor group or processor allocated to the newly received packet flow, the multi-scheduling unit 430 allocates the flow to the predetermined processor group or processor. If there is no processor group or processor allocated to the newly received packet flow, the multi-scheduling unit 430 generates a processor group for the flow of the new packet and then interrupts any one processor in the newly created processor group. The signal is transmitted (S810).
인터럽트 신호를 수신한 프로세서는 이전에 수행하던 동작을 멈추고(S820), 새로운 패킷 플로우를 어떤 프로세서에게 할당할지를 결정하는 스케줄링 동작을 수행한 후(S830), 인터럽트 신호 수신 전에 수행하던 동작을 다시 재개한다(S840). 다중스케줄링부(430)는 인터럽트 신호를 프로세서 그룹별로 각각 전송할 수 있으며, 따라서 각 프로세서 그룹은 동시에 각각 스케줄링 동작을 수행할 수 있다. After receiving the interrupt signal, the processor stops an operation previously performed (S820), performs a scheduling operation for determining which processor to allocate a new packet flow to (S830), and resumes the operation performed before the interrupt signal is received. (S840). The multischeduling unit 430 may transmit the interrupt signal for each processor group, and thus, each processor group may simultaneously perform the scheduling operation.
도 9는 본 발명에 따른 다중 스케줄링을 위한 프로세서 그룹핑의 일 예를 도시한 도면이다.9 illustrates an example of processor grouping for multiple scheduling according to the present invention.
도 9를 참조하면, 다중스케줄링부(430)는 단일 스케줄링의 경우에는 복수의 프로세서들(900) 중 어느 하나를 스케줄러로 지정하며, 다중 스케줄링의 경우에는 프로세서들 전체 또는 그 일부를 적어도 하나 이상의 그룹(910,920)으로 그룹핑하고 각 그룹별 스케줄러를 지정한다. Referring to FIG. 9, the multi-scheduling unit 430 designates any one of the processors 900 as a scheduler in the case of single scheduling, and in the case of multi-scheduling, all or some of the processors may be at least one group. Group at (910,920) and specify a scheduler for each group.
다중스케줄링부(430)는 프로세서들의 부하 상태나 기 설정된 여러 가지 정책에 따라 새로운 프로세서 그룹을 생성하거나 기존 프로세서 그룹을 갱신할 수 있다. The multi-scheduling unit 430 may create a new processor group or update an existing processor group according to the load state of the processors or various preset policies.
예를 들어, 다중 스케줄링의 경우, 다중스케줄링부(430)는 복수의 프로세서들을 프로세서1~3의 제1그룹(910), 프로세서4~5의 제2그룹(920)의 두 그룹으로 그룹핑되고 나머지 프로세서들을 그룹핑하지 아니할 수 있다.For example, in the case of multi-scheduling, the multi-scheduling unit 430 groups a plurality of processors into two groups, a first group 910 of processors 1 to 3 and a second group 920 of processors 4 to 5, and the rest of the plurality of processors. The processors may not be grouped.
다중 스케줄링 동작 중에, 새로운 프로세서 그룹의 생성이 필요한 경우에, 다중스케줄링부(430)는 현재 그룹핑되지 아니한 프로세서들 전체 또는 그 일부를 그룹핑하여 새로운 프로세서 그룹을 생성하거나 기존 프로세서 그룹들을 변경하여 새로운 프로세서 그룹을 생성할 수 있다. If a new processor group is needed during the multi-scheduling operation, the multi-scheduling unit 430 groups all or some of the processors that are not currently grouped to create a new processor group or change existing processor groups to create a new processor group. Can be generated.
또 다른 예로, 다중스케줄링부(430)는 다중 스케줄링 동작 중에 이미 그룹핑되어 있는 그룹, 예를 들어, 프로세서1~3의 제1그룹(910)과 프로세서4~5의 제2그룹(920)에 새로운 프로세서를 추가하거나 그룹 내 프로세서 중 일부를 그룹에서 제외하는 등의 갱신 동작을 수행할 수 있다. As another example, the multi-scheduling unit 430 may be added to a group that is already grouped during the multi-scheduling operation, for example, the first group 910 of the processors 1 to 3 and the second group 920 of the processors 4 to 5. The update operation may be performed such as adding a processor or removing some of the processors in the group.
도 10은 본 발명에 따른 다중 스케줄링을 위하여 프로세서를 동적으로 그룹핑하는 방법의 일 예를 도시한 도면이다.10 illustrates an example of a method for dynamically grouping processors for multiple scheduling according to the present invention.
도 10을 참조하면, 다중스케줄링부(430)는 수신한 패킷의 플로우를 위한 새로운 프로세서 그룹이 필요하거나, 이전 프로세서 그룹의 변경이 필요하면, 프로세서 그룹을 새롭게 생성하거나 기존 프로세서 그룹을 갱신한다(S1000). 예를 들어, 새롭게 수신한 패킷의 플로우에 할당된 프로세서 그룹이나 프로세서가 존재하지 아니한 경우에, 다중스케줄링부(430)는 프로세서들 중 그룹핑되지 아니한 프로세서들 전체나 그 일부를 새로운 프로세서 그룹으로 생성한다. 또 다른 예로, 프로세서 그룹 내 부하 정도 또는 전체 프로세서 부하 정도가 일정 수준에 이르거나 기 설정된 정책에 따라, 다중스케줄링부(430)는 프로세서 그룹 전체를 다시 새롭게 구성하거나, 특정 프로세서 그룹에 새로운 프로세서를 추가하거나 그룹 내 기존 프로세서 중 적어도 하나를 그룹에서 제외할 수 있다.Referring to FIG. 10, the multischeduling unit 430 generates a new processor group or updates an existing processor group when a new processor group for a flow of a received packet is needed or when a previous processor group needs to be changed (S1000). ). For example, when there is no processor group or processor allocated to a newly received packet flow, the multi-scheduling unit 430 creates all or part of the ungrouped processors among the processors as a new processor group. . As another example, the load level within the processor group or the total processor load reaches a certain level or according to a preset policy, the multi-scheduling unit 430 reconfigures the entire processor group or adds a new processor to a specific processor group. Or remove at least one of the existing processors in the group.
다중스케줄링부(430)는 생성 또는 갱신된 프로세서 그룹 내 어느 하나의 프로세서를 스케줄러로 지정한다(S1010). 각 그룹 내 어느 하나의 프로세서는 항상 스케줄러로 동작하는 것이 아니라 도 8에서 설명한 바와 같이 인터럽트 신호를 수신한 경우에만 스케줄러로 동작하고, 스케줄링 동작이 완료되면 다른 일반적인 프로세서와 동일한 동작을 수행한다. The multi-scheduling unit 430 designates any one processor in the generated or updated processor group as a scheduler (S1010). One processor in each group does not always operate as a scheduler, but operates as a scheduler only when an interrupt signal is received as described with reference to FIG. 8, and performs the same operation as other general processors when the scheduling operation is completed.
지금까지는 주로 복수 개의 프로세서들을 그룹핑하여 스케줄링하는 방법에 대해 살펴보았으나, 이하에서는 주로 복수 개의 프로세서와 연결된 큐들을 그룹핑하여 스케줄링하는 방법에 대해 살펴본다. 도 1~10의 기술적 구성이 도 11~17의 기술적 구성에 부가되거나 반대로 도 11~17의 구성이 도 1~10의 구성에 부가될 수 있다. 다시 말해, 도 1~10에서 설명한 복수 개의 프로세서의 그룹핑과 도 11~17에서 설명할 복수 개의 큐의 그룹핑이 동시에 수행될 수도 있다. 다중 프로세싱 장치는 네트워크 인터페이스 장치로 구현될 수 있다.Up to now, a method of scheduling by grouping a plurality of processors has been described. Hereinafter, a method of grouping and scheduling queues connected to a plurality of processors will be described. The technical configuration of FIGS. 1 to 10 may be added to the technical configuration of FIGS. 11 to 17, or conversely, the configuration of FIGS. 11 to 17 may be added to the configuration of FIGS. 1 to 10. In other words, the grouping of the plurality of processors described with reference to FIGS. 1 to 10 and the grouping of the plurality of queues described with reference to FIGS. 11 to 17 may be simultaneously performed. The multiple processing device may be implemented as a network interface device.
도 11은 본 발명에 따른 다중 프로세싱을 위한 네트워크 인터페이스 장치를 포함한 시스템의 개략적인 구조의 일 예를 도시한 도면이다.11 is a diagram illustrating an example of a schematic structure of a system including a network interface device for multiple processing according to the present invention.
도 11을 참조하면, 네트워크 인터페이스 장치는 네트워크 인터페이스 카드(Network Interface Card, NIC)(1100)로 구현된다. 다만 네트워크 인터페이스 장치는 네트워크 인터페이스 카드(1100)에 반드시 한정되는 것은 아니며, 서버 내외에서 하드웨어 또는 소프트웨어 등의 다양한 형태로 구현될 수 있다. 설명의 편의를 위하여 이하, 네트워크 인터페이스 장치를 NIC로 표현한다. Referring to FIG. 11, a network interface device is implemented with a network interface card (NIC) 1100. However, the network interface device is not necessarily limited to the network interface card 1100, and may be implemented in various forms such as hardware or software within and outside the server. For convenience of explanation, hereinafter, a network interface device is referred to as a NIC.
서버(1120)는 복수 개의 가상 머신(1150,1152,1154)과, 가상 스위치(1140) 및 연결슬롯(1130)을 포함한다. 가상 스위치(1140)는 NIC(1100)를 통해 수신한 패킷을 목적지 가상 머신으로 전달한다. 연결슬롯(1130)은 NIC(1100)와 서버(1120)를 연결하는 인터페이스이며, 일 예로 PCIe(Peripheral Component Interconnect Express)로 구현될 수 있다. 이 경우, NIC(1100)는 PCIe 슬롯에 탈부착될 수 있다.The server 1120 includes a plurality of virtual machines 1150, 1152, and 1154, a virtual switch 1140, and a connection slot 1130. The virtual switch 1140 forwards the packet received through the NIC 1100 to the destination virtual machine. The connection slot 1130 is an interface connecting the NIC 1100 and the server 1120 and may be implemented as, for example, a Peripheral Component Interconnect Express (PCIe). In this case, the NIC 1100 may be attached to or detached from the PCIe slot.
NIC(1100)는 네트워크(1110)로부터 수신한 패킷의 상위 계층의 트래픽 특성을 분석하여 플로우를 식별하고, 식별한 플로우를 다중 프로세서를 통해 병렬 처리한다. 여기서 패킷은 복수의 가상 머신에 전달될 수 있도록 종래의 다양한 터널링과 같은 기법 등을 이용하여 가상화 환경 네트워크 계층(Layer) 정보를 인캡슐레이션(encapsulation)한 패킷을 의미한다. 가상화 환경 네트워크 계층이란 가상머신으로 형성된 네트워크 계층을 의미하며, 가상화 환경 네트워크 계층 정보는 가상머신으로 형성된 네트워크 계층 내 패킷 전송을 위하여 물리적 네트워크 프레임에 인캡슐레이션된, 가상머신으로 형성된 네트워크 계층 정보를 의미한다. 이하에서는 본 실시 예에서 사용되는 가상화 환경 네트워크 계층 정보에 기초하여 식별된 패킷을 딥패킷(deep packet)이라고 한다. 딥패킷은 물리적 네트워크에서 일반 통신 프로토콜에 의하여 인식되어 원할한 전송이 이루어질 수 있도록 물리적 네트워크 프레임에 인캡슐레이션된다. 또한 댑패킷의 가상화 환경 네트워크 계층정보를 이용하여 분류한 플로우를 딥플로우(deep flow)라고 명칭한다. 딥플로우는 통신 서비스 구조 상 가상머신에서 생성된 서비스 종단의 플로우로 설명된다. The NIC 1100 analyzes traffic characteristics of upper layers of packets received from the network 1110 to identify flows, and processes the identified flows in parallel through multiple processors. Here, the packet refers to a packet that encapsulates virtualization environment network layer information using various techniques such as conventional tunneling so as to be delivered to a plurality of virtual machines. The virtual environment network layer refers to a network layer formed of a virtual machine, and the virtual environment network layer information refers to network layer information formed of a virtual machine encapsulated in a physical network frame for packet transmission in a network layer formed of a virtual machine. do. Hereinafter, a packet identified based on the virtualization environment network layer information used in the present embodiment is referred to as a deep packet. The deep packet is encapsulated in a physical network frame to be recognized by a general communication protocol in the physical network so that a smooth transmission can be made. In addition, a flow classified using the DIP packet virtualization network layer information is called a deep flow. Deep flow is described as the flow of service end created in virtual machine in communication service structure.
딥플로우는 딥패킷의 물리적 네트워크 프레임을 제거한 가상화 환경 네트워크 프레임에서의 상위 계층(vL3 이상) 트래픽 속성에 따라 분류된 가상화 환경 네트워크에서의 특정 트래픽으로 정의할 수 있다. 딥플로우는 기 설정된 여러 정책에 따라 분류되고 식별될 수 있다. 예를 들어, 패킷분석부(1310)는 가상 머신의 TCP 플로우를 딥플로우로 식별할 수 있다. 딥패킷의 구조에 대해서는 도 16을 참조하여 설명한다. Deepflow can be defined as specific traffic in the virtualized environment network classified according to the upper layer (vL3 or higher) traffic attribute in the virtualized environment network frame from which the deep packet's physical network frame is removed. Deepflows can be classified and identified according to a number of preset policies. For example, the packet analyzer 1310 may identify a TCP flow of a virtual machine as a deep flow. The structure of the deep packet will be described with reference to FIG. 16.
NIC(1100)는 수신한 딥패킷을 병렬 처리하기 위한 복수 개의 큐와 복수 개의 프로세서들을 포함하며, 큐의 크기와 개수 등은 고정되거나, 딥플로우에 관한 정보, 서버의 가상화 환경 정보, 프로세서들의 부하 등에 따라 동적으로 변경될 수 있다. The NIC 1100 includes a plurality of queues and a plurality of processors for parallel processing of the received deep packets, and the size and number of the queues are fixed, or information about the deep flow, information on the virtualization environment of the server, load of the processors, and the like. Can be changed dynamically.
도 12는 본 발명에 따른 NIC의 자원을 동적으로 설정하는 방법의 일 예를 도시한 도면이다.12 is a diagram illustrating an example of a method for dynamically setting resources of a NIC according to the present invention.
도 11 및 도 12를 함께 참조하면, NIC(1100)가 서버(1120)의 연결슬롯(1130)에 부착되어 서버(1120)와 연결되는 경우(S1200), NIC(1100)는 서버(1120)로부터 가상 머신의 수를 포함한 가상화 환경 정보를 수신한다(S1210). NIC(1100)는 딥플로우에 관한 정보, 수신한 가상화 환경 정보 또는 프로세서의 부하분포 등에 따라 큐의 크기와 개수, 큐 그룹의 생성 등 자원을 동적으로 설정한다(S1220).11 and 12, when the NIC 1100 is attached to the connection slot 1130 of the server 1120 and connected to the server 1120 (S1200), the NIC 1100 is connected to the server 1120. The virtual environment information including the number of virtual machines is received (S1210). The NIC 1100 dynamically sets resources such as size and number of queues and creation of a queue group according to the information on the deep flow, the received virtualization environment information, or the load distribution of the processor (S1220).
예를 들어, NIC(1100)가 서버(1120)로부터 가상 머신이 4개라는 가상화 환경 정보를 수신하는 경우, NIC(1100)는 12개의 큐를 각 가상 머신별로 3개씩 할당할 수 있다. 또 다른 예로, NIC(1100)는 딥플로우에 관한 정보를 기초로 딥플로우를 두 개의 그룹으로 분할하고 각 그룹에 6개의 큐를 할당할 수 있다. 가상 머신별 할당되는 큐의 개수나 각 큐의 크기 등은 기 설정된 규칙에 따라 다양하게 설정될 수 있다. For example, when the NIC 1100 receives virtualization environment information that there are four virtual machines from the server 1120, the NIC 1100 may allocate three queues three for each virtual machine. As another example, the NIC 1100 may divide the deepflow into two groups based on the information on the deepflow, and allocate six queues to each group. The number of queues allocated to each virtual machine or the size of each queue may be variously set according to a preset rule.
도 13은 본 발명에 따른 NIC의 일 실시예의 구성을 도시한 도면이다.13 is a diagram illustrating a configuration of an embodiment of a NIC according to the present invention.
도 13을 참조하면, NIC(1100)는 패킷수신부(1300), 패킷분석부(1310), 메모리(1320), 복수 개의 큐(1330), 복수 개의 프로세서(1340), 스케줄러(1350), 모니터링부(1360) 및 큐 관리부(1370)를 포함한다. 패킷수신부(1300) 등을 포함한 각 구성요소 사이의 연결선은 본 발명의 이해를 돕기 위한 하나의 예일 뿐이며, 큐 관리부(1370)와 모니터링부(1360) 사이의 연결, 스케줄러(1350)와 복수 개의 큐(1330) 사이의 연결 등 다양한 연결 관계가 설정될 수 있음은 물론이다.Referring to FIG. 13, the NIC 1100 includes a packet receiver 1300, a packet analyzer 1310, a memory 1320, a plurality of queues 1330, a plurality of processors 1340, a scheduler 1350, and a monitoring unit. 1360 and the queue manager 1370. The connection line between each component including the packet receiver 1300 is just one example to help understanding of the present invention, and the connection between the queue manager 1370 and the monitoring unit 1360, the scheduler 1350 and the plurality of queues. Of course, various connection relationships, such as the connection between (1330) can be set.
패킷수신부(1300)는 외부 네트워크에서 일반적인 이더넷 프레임으로 인식되도록 종래의 다양한 터널링과 같은 방법 등에 의해 딥패킷이 인캡슐레이션된 패킷을 수신하면 이를 디캡슐레이션하여 물리적 네트워크에 해당하는 헤더 부분을 제거하고 가상화 환경에서의 데이터 패킷 프레임을 복원한다. When the packet receiver 1300 receives a packet in which the deep packet is encapsulated by various tunneling methods such as conventional tunneling so as to be recognized as a general Ethernet frame in an external network, the packet receiver 1300 removes the header part corresponding to the physical network. Restore data packet frames in a virtualized environment.
패킷분석부(1310)는 복원된 딥패킷의 딥플로우를 식별한다. 딥플로우를 식별하기 위해서는 가상화 환경에서의 데이터링크계층(vL2 레이어)만이 아니라 네트워크계층(vL3 레이어) 이상의 상위 계층까지 해석되어야 한다. 이를 위해, 패킷분석부(1310)는 DPI(Deep Packet Insepection) 과정을 통해 디캡슐레이션된 딥패킷의 가상 데이터링크계층(vL2 레이어)부터 가상 애플리케이션계층(vL7 레이어)까지 분석하여, 딥플로우를 식별한다. 딥플로우 식별을 위한 딥패킷에 대한 분석은 가상 데이터링크계층부터 가상 애플리케이션계층 모두를 분석하는 것으로 한정되는 것은 아니며, 딥플로우 식별 정책에 따라 분석의 범위는 달라질 수 있다. The packet analyzer 1310 identifies a deep flow of the restored deep packet. In order to identify the deep flow, not only the data link layer (vL2 layer) but also the upper layer of the network layer (vL3 layer) in the virtualization environment should be interpreted. To this end, the packet analyzer 1310 analyzes a virtual packet from a virtual data link layer (vL2 layer) to a virtual application layer (vL7 layer) of the decapsulated deep packet through a DPI (Deep Packet Insepection) process to identify a deep flow. . The analysis of the deep packet for deep flow identification is not limited to analyzing both the virtual data link layer and the virtual application layer, and the scope of the analysis may vary according to the deep flow identification policy.
메모리(1320)는 딥패킷과 패킷분석부(1310)에 의해 식별된 딥플로우 정보 등을 저장하고, 또한 딥플로우와 큐 사이의 맵핑관계를 나타내는 플로우 테이블을 저장하고 관리한다. The memory 1320 stores the deep packet and the deep flow information identified by the packet analyzer 1310, and stores and manages a flow table indicating a mapping relationship between the deep flow and the queue.
일 실시 예로, 패킷수신부(1300)은 디캡슐레이션된 딥패킷을 메모리(1320)에 저장하고, 딥패킷의 저장 사실을 패킷분석부(1310)에 통보한다. 그러면 패킷분석부(1310)는 메모리(1320)에 저장된 해당 딥패킷에 대한 딥플로우 식별을 수행한다. 즉, 새로운 딥패킷의 수신 사실을 알게 된 패킷분석부(1310)는 기 설정된 정책에 따라 해당 딥패킷의 딥플로우 특성을 식별하여 그 정보를 저장하고 저장 사실을 스케줄러(1350)에 알려준다. According to an embodiment, the packet receiver 1300 stores the decapsulated deep packet in the memory 1320, and notifies the packet analyzer 1310 of the fact that the deep packet is stored. The packet analyzer 1310 then performs deep flow identification for the corresponding deep packet stored in the memory 1320. That is, the packet analysis unit 1310 that has learned that the new deep packet has been received, identifies the deep flow characteristic of the corresponding deep packet according to a preset policy, stores the information, and informs the scheduler 1350 of the deep packet.
스케줄러(1350)는 식별된 딥플로우들을 각각 해당하는 큐에 할당하며, 각 큐를 다중 프로세서(1340)에 병렬 할당한다. 보다 구체적으로, 스케줄러(1350)는 메모리(1320)에 저장된 플로우 테이블을 참조하여 딥패킷의 딥플로우가 맵핑된 큐를 검색하고, 메모리(1320)에 저장된 딥패킷을 검색된 큐에 전달한다. 만약 테이블에 수신한 딥패킷의 딥플로우에 대한 맵핑정보가 존재하지 않는다면, 스케줄러(1350)는 종래의 다양한 방법을 통해 딥플로우를 특정 큐에 할당하고, 딥플로우와 큐사이의 맵핑관계를 플로우 테이블에 저장한다. The scheduler 1350 assigns the identified deep flows to corresponding queues, respectively, and assigns each queue in parallel to the multiprocessor 1340. More specifically, the scheduler 1350 searches for a queue to which a deep packet deep flow is mapped by referring to a flow table stored in the memory 1320, and delivers the deep packet stored in the memory 1320 to the retrieved queue. If there is no mapping information of the deep packet received in the table, the scheduler 1350 allocates the deep flow to a specific queue through various conventional methods, and stores the mapping relationship between the deep flow and the queue in the flow table. .
스케줄러(1350)는 가상 머신별 딥패킷을 딥플로우 단위로 큐잉할 수 있다. 예를 들어, 딥플로우와 큐 사이의 맵핑 관계를 설정할 때, 제1 가상머신과 제2 가상머신을 향하는 동일한 성격(예를 들어, 동일한 QoS 우선순위)의 제1 플로우와 제2 플로우가 동일한 큐에 할당될 수 있다. 본 발명이 이러한 경우를 배제하는 것은 아니나 병렬 처리의 효율을 보다 높이기 위하여, 딥플로우를 가상 머신별로 서로 다른 그룹의 큐에 할당하는 것이 바람직하다. 다시 말해, 스케줄러(1350)는 도 14와 같은 가상머신별로 큐들을 그룹핑하는 경우에, 제1 가상머신에 대한 제1 플로우는 제1 그룹(1400)의 큐에 딥플로우 단위로 할당하고, 제2 가상머신에 대한 제2 플로우는 제2 그룹(1410)의 큐에 딥플로우 단위로 할당한다. The scheduler 1350 may queue a deep packet for each virtual machine in a deep flow unit. For example, when establishing a mapping relationship between a deepflow and a queue, a first flow and a second flow of the same nature (eg, the same QoS priority) facing the first virtual machine and the second virtual machine are in the same queue. Can be assigned. Although the present invention does not exclude such a case, in order to increase the efficiency of parallel processing, it is preferable to allocate a deep flow to different groups of queues for each virtual machine. In other words, when the scheduler 1350 groups the queues for each virtual machine as shown in FIG. 14, the first flow for the first virtual machine is allocated to the queues of the first group 1400 on a deep flow basis, and the second virtual The second flow for the machine is assigned to the queue of the second group 1410 in deepflow units.
예를 들어, 새로운 딥패킷이 메모리(1320)에 적재되었다는 사실과 해당 딥패킷의 딥플로우 정보를 수신하면, 스케줄러(1350)는 플로우 테이블을 참조하여 딥플로우가 어떤 큐에 할당되어 있는지를 검색하고, 메모리(1320)에 적재되어 있는 딥패킷을 검색된 해당 큐에 적재할 수 있도록 한다. 만약 식별된 딥플로우에 대한 정보를 플로우 테이블에서 찾을 수 없는 경우, 스케줄러(1350)는 해당 딥패킷을 기 설정된 정책에 따라 해당 가상 머신에 속한 큐 중 하나에 할당할 수 있다. 여기서 기 설정된 정책은 실시 예에 따라 다양할 수 있으며, 일 예로 플로우 친화도를 고려하여 큐를 선택하는 정책, 딥패킷이 전송될 가상 머신 내 큐 중 가장 부하가 적은 큐를 선택하는 정책, 사용율이 가장 낮은 프로세서에 할당되어 있는 큐를 선택하는 정책 등이 있다.For example, upon receiving the fact that a new deep packet has been loaded into the memory 1320 and the deep flow information of the deep packet, the scheduler 1350 searches the flow table to find out which queue the deep flow is allocated to, and the memory. The deep packet loaded in 1320 can be loaded into the found queue. If the information on the identified deep flow cannot be found in the flow table, the scheduler 1350 may allocate the deep packet to one of the queues belonging to the corresponding virtual machine according to a preset policy. Here, the preset policy may vary according to embodiments. For example, a policy for selecting a queue in consideration of flow affinity, a policy for selecting a queue with the least load among queues in a virtual machine to which a deep packet is sent, and a utilization rate There is a policy for selecting the queue assigned to the lowest processor.
복수 개의 큐(1330)는 각각 적어도 하나 이상의 딥플로우와 맵핑된다. 딥플로우 단위로 큐잉하는 경우 프로세서 친화도가 높아지며, 이에 따라 병렬 처리의 효율도 증가한다. 복수 개의 큐(1330)는 가상 머신별로 적어도 하나 이상의 큐를 포함하는 그룹으로 분할될 수 있다. 또한 복수 개의 큐(1330)는 도 15와 같이 적어도 두 개 이상의 파티션으로 분할될 수 있다. Each of the plurality of queues 1330 is mapped to at least one deep flow. Queuing on a deep-flow basis increases processor affinity, which increases the efficiency of parallel processing. The plurality of queues 1330 may be divided into groups including at least one queue for each virtual machine. In addition, the plurality of queues 1330 may be divided into at least two partitions as shown in FIG. 15.
스케줄러(1350)는 복수 개의 프로세서 중에서 선택된 프로세서일 수 있다. 예를 들어, 전체 프로세서들(1380) 중 특정 프로세서(1350)를 스케줄러로 지정하거나, 각 프로세서들의 부하 정도를 모니터링부(1360)를 통해 파악한 후 부하가 가장 적은 프로세서를 스케줄러(1350)로 선택할 수 있다. 이 외에도 스케줄러를 선택하기 위한 다양한 방법이 적용될 수 있다. 프로세서 중 스케줄러가 지정되는 경우, 제어부(미도시)는 도 8에 도시된 방법과 같이, 스케줄링이 필요할 때마다 인터럽트 신호를 발생하여 스케줄러로 지정된 프로세서에 전송하고, 인터럽트 신호를 수신한 프로세서는 하던 작업을 중지하고 스케줄러로서 동작을 완료한 후 다시 이전 작업을 수행한다. The scheduler 1350 may be a processor selected from a plurality of processors. For example, a specific processor 1350 of all the processors 1380 may be designated as a scheduler, or the load of each processor may be determined through the monitoring unit 1360, and then the processor having the least load may be selected as the scheduler 1350. have. In addition, various methods for selecting a scheduler may be applied. When a scheduler is designated among the processors, the controller (not shown) generates an interrupt signal whenever the scheduling is needed and transmits the interrupt signal to the processor designated as the scheduler as shown in FIG. Stop, finish the action as a scheduler, and perform the previous task again.
복수 개의 프로세서들(1340)은 각 큐에 저장된 딥패킷을 병렬 처리하여 서버의 가상 머신으로 전송한다. 복수 개의 프로세서들에 대해 도 1 내지 도 10에서 살핀 단일 스케줄링 또는 다중 스케줄링 방법이 적용될 수 있다. 즉 복수 개의 프로세서들은 그룹핑되어 각 그룹마다 스케줄링될 수 있다. 복수 개의 프로세서들(1340)은 적어도 하나 이상의 큐와 연결된다. The plurality of processors 1340 processes the deep packets stored in each queue in parallel and transmits them to the virtual machine of the server. A salping single scheduling or multiple scheduling method may be applied to the plurality of processors in FIGS. 1 to 10. That is, a plurality of processors may be grouped and scheduled for each group. The plurality of processors 1340 are connected with at least one queue.
예를 들어, 복수 개의 프로세서들(1340)은 플로우 친화도를 고려하여 큐와 연결된다. 다시 말해, 동일하거나 유사한 딥플로우 속성을 갖는 딥패킷을 저장하는 큐들을 묶어 프로세서와 연결한다. For example, the plurality of processors 1340 are connected to the queue in consideration of flow affinity. In other words, queues that store deep packets with the same or similar deep flow attributes are tied to the processor.
또 다른 예로서, 복수 개의 프로세서들(1340)은 가상 머신별로 큐와 연결될 수 있다. 도 14를 참조하면, 제1 프로세서는 제1 가상머신에 할당된 제1 내지 제3 큐(1400)와 연결되고, 제2 프로세서는 제2 가상머신에 할당된 제4 내지 제6 큐(1410)와 연결되고, 제3 프로세서는 제3 가상머신에 할당된 제7 및 제8 큐(1420)에 연결될 수 있다.As another example, the plurality of processors 1340 may be connected to a queue for each virtual machine. Referring to FIG. 14, a first processor is connected to first to third queues 1400 allocated to a first virtual machine, and a second processor is fourth to sixth queues 1410 assigned to a second virtual machine. The third processor may be connected to the seventh and eighth queues 1420 allocated to the third virtual machine.
또 다른 예로서, 제1 프로세서는 제1 가상머신에 할당된 제1 내지 제3 큐와 함께 제2 가상머신에 할당된 제4 큐와 연결되고, 이 경우 제2 프로세서는 제2 가상머신에 할당된 제5 및 제6큐와 연결될 수 있다. 즉, 프로세서는 적어도 둘 이상의 가상머신에 할당된 큐의 전부 또는 일부와 연결될 수도 있다.As another example, the first processor is connected with a fourth queue assigned to the second virtual machine together with the first to third queues assigned to the first virtual machine, in which case the second processor is assigned to the second virtual machine. Connected to the fifth and sixth queues. In other words, the processor may be connected to all or part of a queue allocated to at least two virtual machines.
모니터링부(1360)는 프로세서(1340)와 큐(1330)의 부하 등을 포함한 각종 상태를 모니터링한다. The monitoring unit 1360 monitors various states including loads of the processor 1340 and the queue 1330.
큐 관리부(1370)는 모니터링 결과에 따라 큐들을 도 15와 같이 복수의 파티션으로 분할하고 각 파티션마다 스케줄러를 두어 처리하거나, 복수의 큐를 하나로 합치거나 분할하고, 또는 가상머신에 할당된 큐의 수를 늘리거나 줄이는 등 큐의 크기와 개수 등을 조정한다. 큐 관리부는 앞서 살핀 도 12의 과정을 통해 파악된 서버의 가상화 환경 등에 따라서도 가상머신별 큐의 개수나 크기 등을 동적으로 설정할 수 있다.The queue manager 1370 divides the queues into a plurality of partitions according to the monitoring result and processes the scheduler for each partition as shown in FIG. 15, combines or splits the plurality of queues into one, or the number of queues allocated to the virtual machine. Adjust the size and number of queues, such as increasing or decreasing them. The queue manager may dynamically set the number and size of queues for each virtual machine according to the virtualization environment of the server identified through the process of FIG. 12.
도 14는 본 발명에 따른 NIC의 딥플로우 기반 큐 할당의 일 예를 도시한 도면이다.14 illustrates an example of deepflow-based queue allocation of a NIC according to the present invention.
도 14를 참조하면, 큐들(1330)은 가상 머신별로 구분된다. 예를 들어, 제1 내지 제3 큐(1400)는 제1 가상머신에 할당되고, 제4 내지 제6 큐(1410)는 제2 가상머신에 할당되고, 제7 및 제8 큐(1420)는 제3 가상머신에 할당된다. 스케줄러는 가상 머신별로 딥플로우를 참조하여 큐잉을 수행한다. Referring to FIG. 14, the queues 1330 are classified by virtual machines. For example, the first to third queues 1400 are assigned to the first virtual machine, the fourth to sixth queues 1410 are assigned to the second virtual machine, and the seventh and eighth queues 1420 are assigned to the first virtual machine. It is assigned to the third virtual machine. The scheduler performs queuing by referring to a deep flow for each virtual machine.
예를 들어, 제1 가상머신으로 향하는 딥플로우를 우선순위에 따라 식별하는 경우에, 스케줄러(1350)는 제1 가상머신에 할당된 제1 내지 제3 큐(1400)에 우선순위를 기반으로 딥패킷을 분류하여 저장한다. 즉 제1 가상머신으로 향하는 딥플로우 중에서 우선순위가 가장 높은 딥플로우는 제1 큐에 저장하고, 그 다음 우선순위의 딥플로우는 제2 큐에 저장하고, 나머지 우선순위의 딥플로우는 제3 큐에 저장한다.For example, in the case of identifying a deep flow directed to the first virtual machine according to the priority, the scheduler 1350 may assign the deep packet based on the priority to the first to third queues 1400 assigned to the first virtual machine. Classify and save. That is, among the deep flows destined for the first virtual machine, the highest priority deepflow is stored in the first queue, the next priority deepflow is stored in the second queue, and the remaining priority deepflows are stored in the third queue.
도 15는 본 발명에 따른 NIC의 딥플로우 기반 큐 할당의 다른 일 예를 도시한 도면이다. 15 is a diagram illustrating another example of deep flow based queue allocation of a NIC according to the present invention.
도 15를 참조하면, 큐들(1330)은 적어도 둘 이상의 파티션(1520,1530)으로 구분된다. 각 파티션(1520,1530)마다 스케줄러(1500,1510)가 할당된다. 예를 들어, 제1 파티션(1520)에 제1 스케줄러(1500)가 할당되고, 제2 파티션(1530)에 제2 스케줄러(1510)가 할당된다. 각 스케줄러(1500,1510)는 할당된 파티션에 대하여 독립적으로 스케줄링 작업을 병렬 수행한다. 본 실시 예는 큐들(1330)을 두 개의 그룹(1520,1530)으로 그룹핑하는 예를 도시하고 있으나, 실시 예에 따라 세 개 이상의 그룹으로 그룹핑될 수 있으며, 각 그룹의 스케줄링은 도 1 내지 도 10에서 설명한 다중 스케줄링 방법이 적용될 수 있다. 스케줄러는 앞서 설명한 바와 같이 복수 개의 프로세서들(1380) 중 소정의 방법에 의해 선택된 프로세서일 수 있다. Referring to FIG. 15, the queues 1330 are divided into at least two partitions 1520 and 1530. The schedulers 1500 and 1510 are allocated to each partition 1520 and 1530. For example, the first scheduler 1500 is assigned to the first partition 1520, and the second scheduler 1510 is assigned to the second partition 1530. Each scheduler 1500 and 1510 independently performs scheduling tasks in parallel with the assigned partitions. According to the present embodiment, an example of grouping the queues 1330 into two groups 1520 and 1530 may be grouped into three or more groups, and scheduling of each group may be performed according to an embodiment. The multiple scheduling method described above may be applied. As described above, the scheduler may be a processor selected by a predetermined method among the plurality of processors 1380.
예를 들어, 도 13과 같이 하나의 스케줄러에 의한 스케줄링 수행 중에, 모니터링부에서 측정한 큐의 부하분포가 기 설정된 임계치 이하로 떨어지면, 큐의 재분배 또는 프로세서 재할당이 결정될 수 있다. 또는 네트워크로부터 수신되는 딥패킷의 통계적 양과 NIC 내의 총 프로세서에 의해 수행되는 프로세서 능력을 계산하여 프로세서의 부하가 어느 임계치 이하이면 큐의 재분배 또는 프로세서 재할당이 결정될 수 있다. 큐의 재분배 또는 프로세서 재할당시, 도 15와 같이 큐가 복수 개의 파티션으로 구분되고 추가적인 스케줄러의 지정이 필요한 경우, 가장 부하가 적은 프로세서를 추가 스케줄러로 지정할 수 있다. For example, if the load distribution of the queue measured by the monitoring unit falls below a preset threshold during scheduling by one scheduler as shown in FIG. 13, redistribution of the queue or processor reallocation may be determined. Alternatively, redistribution of queues or processor reallocation may be determined if the processor load is below a certain threshold by calculating the statistical amount of deep packets received from the network and the processor capabilities performed by the total processor in the NIC. When redistributing a queue or reallocating processors, as shown in FIG. 15, when a queue is divided into a plurality of partitions and additional scheduler designation is required, the processor having the least load may be designated as an additional scheduler.
각 파티션에 속한 큐들은 가상머신 기반으로 그룹핑(1540)될 수 있으며, 그룹(1540) 내 큐들은 딥플로우 기반으로 분류될 수 있다. 이 경우, 파티션 - 가상머신별 그룹 - 각 그룹별 플로우 단위 큐의 계층적 구조가 생성된다.Queues belonging to each partition may be grouped 1540 on a virtual machine basis, and the queues in the group 1540 may be classified on a deep flow basis. In this case, a hierarchical structure of a partition-group by virtual machine-flow unit queue by group is generated.
도 16은 본 발명에 사용되는 딥패킷의 일 예를 도시한 도면이다.16 illustrates an example of a deep packet used in the present invention.
도 16을 참조하면, 딥패킷은 물리적 네트워크 프레임(1610), 터널링 필드(1620), 가상머신간 네트워크 프레임(1630), 데이터 필드(1600)를 포함한다. Referring to FIG. 16, a deep packet includes a physical network frame 1610, a tunneling field 1620, a network frame 1630 between virtual machines, and a data field 1600.
물리적 네트워크 프레임(1610)은 L2, IP, TCP 등 종래의 물리적 네트워크의 계층을 나타내는 정보를 포함한다. 터널링 필드(1620)는 터널링 정보 등을 나타낸다. 가상머신간 네트워크 프레임(1630)은 가상머신간 네트워크 환경에서의 각 계층(vL2 ~ vL7 등)에 대한 정보를 포함한다. 데이터 필드(1600)는 데이터를 포함한다.The physical network frame 1610 includes information representing a layer of a conventional physical network such as L2, IP, TCP, and the like. The tunneling field 1620 represents tunneling information and the like. The virtual machine network frame 1630 includes information on each layer (vL2 to vL7, etc.) in the network environment between virtual machines. The data field 1600 contains data.
도 16의 딥패킷의 구조는 본 발명의 이해를 돕기 위한 하나의 예일 뿐, 본 발명이 이에 한정되는 것은 아니며 가상 머신 환경을 위한 다양한 형태의 딥패킷의 구조를 정의하여 사용할 수 있다. The structure of the deep packet of FIG. 16 is just one example to help the understanding of the present invention, and the present invention is not limited thereto. The structure of the deep packet may be defined and used in various forms for the virtual machine environment.
또한 메모리에 저장된 딥패킷의 구조와 큐에 저장된 딥패킷의 구조는 실시 예에 따라 동일하거나 다를 수 있다. 예를 들어, 네트워크로부터 수신한 도 16의 패킷을 디캡슐레이션하여 복원한 딥패킷을 가상 머신 환경에서 처리 가능한 최적의 구조로 변경하거나 딥패킷의 필드 중 가상 머신 환경에서 불필요한 필드의 일부 또는 전부를 삭제하는 등 다양하게 설계 변경하여 큐에 저장할 수 있다. In addition, the structure of the deep packet stored in the memory and the structure of the deep packet stored in the queue may be the same or different according to the embodiment. For example, the deep packet restored by decapsulating the packet of FIG. 16 received from the network may be changed to an optimal structure that can be processed in the virtual machine environment, or some or all of the fields of the deep packet are unnecessary in the virtual machine environment. Various design changes, such as deleting, can be stored in the queue.
도 17은 본 발명에 따른 가상 머신 환경을 위한 패킷 처리 방법의 일 예를 도시한 흐름도이다.17 is a flowchart illustrating an example of a packet processing method for a virtual machine environment according to the present invention.
도 17을 참조하면, 네트워크 인터페이스 장치는 딥패킷을 수신하면(S1700), DPI 과정 등을 통해 딥패킷을 분석하여 딥패킷이 전달되어야 할 목적지 가상 머신과 딥플로우를 식별한다(S1710). 네트워크 인터페이스 장치는 가상 머신별로 할당된 적어도 한 개 이상의 큐에 대해 딥플로우 단위로 딥패킷을 저장한다(S1720). 그리고 네트워크 인터페이스 장치는 복수 개의 프로세서들을 통해 각 큐에 저장된 딥패킷을 처리하여 가상 머신으로 전송한다(S1730).Referring to FIG. 17, when receiving a deep packet (S1700), the network interface device analyzes the deep packet through a DPI process to identify a destination virtual machine and a deep flow to which the deep packet is to be delivered (S1710). The network interface device stores deep packets in deep flow units for at least one queue allocated to each virtual machine (S1720). In operation S1730, the network interface device processes a deep packet stored in each queue through a plurality of processors and transmits the deep packet to the virtual machine.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 다양한 형태의 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광데이터 저장장치 등이 있다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.The invention can also be embodied as computer readable code on a computer readable recording medium. The computer-readable recording medium includes all kinds of recording devices in which data that can be read by a computer system is stored. Examples of computer-readable recording media include various types of ROM, RAM, CD-ROM, magnetic tape, floppy disk, optical data storage device, and the like. The computer readable recording medium can also be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.So far I looked at the center of the preferred embodiment for the present invention. Those skilled in the art will appreciate that the present invention can be implemented in a modified form without departing from the essential features of the present invention. Therefore, the disclosed embodiments should be considered in descriptive sense only and not for purposes of limitation. The scope of the present invention is shown in the claims rather than the foregoing description, and all differences within the scope will be construed as being included in the present invention.

Claims (15)

  1. 다중 프로세싱 장치에서의 스케줄링 방법에 있어서,In the scheduling method in a multiple processing apparatus,
    복수의 프로세서들 전체 또는 그 일부를 적어도 하나 이상의 프로세서 그룹으로 그룹핑하는 단계; Grouping all or some of the plurality of processors into at least one processor group;
    수신한 패킷의 플로우에 대해 기 지정된 프로세서 그룹 또는 프로세서가 존재하면, 상기 플로우를 기 지정된 프로세서 그룹 또는 프로세서에 할당하는 단계; 및Allocating the flow to a predetermined processor group or processor if a predetermined processor group or processor exists for the received packet flow; And
    수신한 패킷의 플로우에 대해 기 지정된 프로세서 그룹 또는 프로세서가 존재하지 않으면, 상기 플로우를 위한 새로운 프로세서 그룹을 생성하여 할당하거나 어느 프로세서 그룹에도 속하지 않은 프로세서에 상기 플로우를 할당하는 단계;를 포함하는 것을 특징으로 하는 스케줄링 방법.If a predetermined processor group or processor does not exist for the flow of the received packet, creating and assigning a new processor group for the flow or assigning the flow to a processor that does not belong to any processor group; Scheduling method.
  2. 제 1항에 있어서, 상기 새로운 프로세서 그룹을 생성하는 할당하는 단계는,The method of claim 1, wherein the assigning to create the new processor group comprises:
    복수의 프로세서들 중 그룹핑되지 아니한 프로세서들 전체 또는 그 일부를 새로운 프로세서 그룹으로 그룹핑하는 단계; 및Grouping all or some of the ungrouped processors among the plurality of processors into a new processor group; And
    새로운 프로세서 그룹에 수신한 패킷의 플로우를 할당하는 단계;를 포함하는 것을 특징으로 하는 스케줄링 방법.Allocating a flow of the received packet to a new processor group.
  3. 제 1항에 있어서, The method of claim 1,
    프로세서 그룹별로 프로세서 그룹 내 프로세서들 중 하나에 인터럽트 신호를 전송하는 단계; 및Transmitting an interrupt signal to one of the processors in the processor group for each processor group; And
    인터럽트 신호를 수신한 프로세서는 이전 수행하던 작업을 중단하고, 스케줄링 동작을 수행한 후 다시 이전 수행하던 작업을 재개하는 단계;를 더 포함하는 것을 특징으로 하는 스케줄링 방법.Receiving the interrupt signal, the processor stops the previous task, and after performing the scheduling operation resumes the previous task; further comprising the scheduling method.
  4. 다중 프로세싱 장치에서의 스케줄링 방법에 있어서,In the scheduling method in a multiple processing apparatus,
    복수의 프로세서들의 부하상태나 처리용량 또는 수신 패킷의 속성을 기초로 단일 스케줄링 또는 다중 스케줄링을 결정하는 단계;Determining a single scheduling or multiple scheduling based on the load status or processing capacity of the plurality of processors or the nature of the received packet;
    상기 단일 스케줄링의 경우에, 복수의 프로세서들 중 하나를 스케줄러로 지정하는 단계; 및In the case of the single scheduling, designating one of the plurality of processors as a scheduler; And
    상기 다중 스케줄링의 경우에, 복수의 프로세서들을 적어도 둘 이상의 프로세서 그룹으로 그룹핑하고, 각각의 프로세서 그룹 내 프로세서들 중 하나를 각각의 프로세서 그룹의 스케줄러로 지정하는 단계;를 포함하는 것을 특징으로 하는 스케줄링 방법.In the case of the multi-scheduling, grouping a plurality of processors into at least two processor groups and designating one of the processors in each processor group as a scheduler of each processor group. .
  5. 제 4항에 있어서, The method of claim 4, wherein
    상기 다중 스케줄링의 경우에, 수신한 패킷의 플로우에 대해 기 지정된 프로세서 그룹 또는 프로세서가 존재하지 아니하면, 상기 플로우를 위한 새로운 프로세서 그룹을 생성하는 단계;를 더 포함하는 것을 특징으로 하는 스케줄링 방법.In the case of the multi-scheduling, if there is no processor group or processor specified for the flow of the received packet, generating a new processor group for the flow; scheduling method further comprising.
  6. 제 5항에 있어서, 상기 새로운 프로세서 그룹을 생성하는 단계는,The method of claim 5, wherein creating the new processor group comprises:
    복수의 프로세서들 중 그룹핑되지 아니한 프로세서들 전체 또는 그 일부를 새로운 프로세서 그룹으로 생성하는 단계;를 포함하는 것을 특징으로 하는 스케줄링 방법.Generating all or some of the ungrouped processors among the plurality of processors into a new processor group.
  7. 물리적 망을 통해 수신된 패킷으로부터 물리적 네트워크 프레임에 인캡슐레이션된, 가상화 환경 네크워크 계층 정보를 포함하는 딥패킷을 획득하는 단계; Obtaining a deep packet including virtualization environment network layer information encapsulated in a physical network frame from a packet received through the physical network;
    상기 딥패킷에 포함된 상기 가상화 환경 네트워크 계층 정보를 기초로 상기 딥패킷을 딥플로우로 식별하는 단계; 및Identifying the deep packet as a deep flow based on the virtualized environment network layer information included in the deep packet; And
    상기 딥패킷을 상기 식별된 딥플로우 단위로 구분하여 해당하는 큐에 할당하는 단계;를 포함하는 것을 특징으로 하는 스케줄링 방법.And dividing the deep packet into the identified deep flow unit and assigning the deep packet to a corresponding queue.
  8. 제 7항에 있어서, The method of claim 7, wherein
    하나 이상의 큐를 가상머신별로 그룹핑하는 단계;를 더 포함하는 것을 특징으로 하는 스케줄링 방법.Grouping one or more queues by virtual machine; scheduling method further comprising.
  9. 제 7항에 있어서, The method of claim 7, wherein
    상기 식별하는 단계는, 상기 딥패킷의 목적지 가상머신을 식별하는 단계를 포함하고,The identifying may include identifying a destination virtual machine of the deep packet,
    상기 할당하는 단계는, 상기 목적지 가상머신과 상기 딥플로우를 기초로 상기 딥패킷을 해당하는 큐에 할당하는 단계;를 포함하는 것을 특징으로 하는 스케줄링 방법.The allocating may include allocating the deep packet to a corresponding queue based on the destination virtual machine and the deep flow.
  10. 제 7항에 있어서, The method of claim 7, wherein
    상기 가상화 환경 네트워크 계층 정보는 가상머신으로 형성된 네트워크 계층 내 패킷 전송을 위하여 물리적 네트워크 프레임에 인캡슐레이션된, 가상머신으로 형성된 네트워크 계층 정보를 의미하고,The virtual environment network layer information refers to network layer information formed of a virtual machine encapsulated in a physical network frame for packet transmission in a network layer formed of a virtual machine,
    상기 딥패킷은 물리적 네트워크에서 일반 통신 프로토콜에 의하여 인식되어 원할한 전송이 이루어질 수 있도록 물리적 네트워크 프레임에 인캡슐레이션된 것을 특징으로 하는 스케줄링 방법.The deep packet is a scheduling method, characterized in that the physical network is encapsulated in a physical network frame to be recognized by a common communication protocol to achieve a smooth transmission.
  11. 제 7항에 있어서, 상기 할당하는 단계는,The method of claim 7, wherein the assigning step,
    적어도 하나 이상의 큐를 포함하는 복수 개의 큐 그룹 중 목적지 가상 머신을 기초로 큐 그룹을 선택하는 단계; 및Selecting a queue group based on a destination virtual machine among a plurality of queue groups including at least one queue; And
    상기 딥플로우를 기초로 상기 선택된 큐 그룹 내 패킷을 저장할 큐를 선택하는 단계;를 포함하는 것을 특징으로 하는 스케줄링 방법.Selecting a queue to store a packet in the selected queue group based on the deep flow.
  12. 제 7항에 있어서,The method of claim 7, wherein
    각 가상 머신에 할당되는 큐의 개수는 가상 머신에 관한 정보를 포함하는 가상화 환경 정보 또는 부하분포를 기초로 동적으로 결정되는 것을 특징으로 하는 스케줄링 방법.The number of queues allocated to each virtual machine is dynamically determined based on the load distribution or virtualization environment information including the information about the virtual machine.
  13. 제 7항에 있어서,The method of claim 7, wherein
    적어도 하나 이상의 큐를 포함하는 가상 머신별로 할당된 복수 개의 큐 그룹을 포함하고,Includes a plurality of queue groups allocated for each virtual machine including at least one queue,
    스케줄러는 상기 딥패킷에 대해, 딥패킷의 목적지 가상 머신을 기초로 상기 복수 개의 큐 그룹 중 하나를 할당하고, 상기 딥플로우를 기초로 선택된 큐 그룹 내 큐를 할당하는 것을 특징으로 하는 스케줄링 방법.The scheduler allocates one of the plurality of queue groups to the deep packet based on a destination virtual machine of the deep packet, and allocates a queue in the selected queue group based on the deep flow.
  14. 물리적 망을 통해 수신된 패킷으로부터 물리적 네트워크 프레임에 인캡슐레이션된, 가상화 환경 네크워크 계층 정보를 포함하는 딥패킷을 획득하는 패킷수신부;A packet receiver configured to obtain a deep packet including virtualization environment network layer information encapsulated in a physical network frame from a packet received through a physical network;
    상기 딥패킷에 포함된 상기 가상화 환경 네트워크 계층 정보를 기초로 상기 딥패킷을 딥플로우로 식별하는 패킷분석부; 및A packet analyzer configured to identify the deep packet as a deep flow based on the virtualized environment network layer information included in the deep packet; And
    상기 딥패킷을 상기 식별된 딥플로우 단위로 구분하여 해당하는 큐에 할당하는 스케줄러;를 포함하는 것을 특징으로 하는 네트워크 인터페이스 장치.And a scheduler for dividing the deep packet into the identified deep flow unit and assigning the deep packet to a corresponding queue.
  15. 제 14항에 있어서, 상기 스케줄러는,The method of claim 14, wherein the scheduler,
    적어도 하나 이상의 큐를 포함하는 복수 개의 큐 그룹 중 목적지 가상 머신을 기초로 큐 그룹을 선택하고, 상기 딥플로우를 기초로 상기 선택된 큐 그룹 내 패킷을 저장할 큐를 선택하는 것을 특징으로 하는 네트워크 인터페이스 장치.Selecting a queue group based on a destination virtual machine among a plurality of queue groups including at least one queue, and selecting a queue to store a packet in the selected queue group based on the deep flow.
PCT/KR2015/005914 2014-06-26 2015-06-12 Method for scheduling in multiprocessing environment and device therefor WO2015199366A1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2017520838A JP2017521806A (en) 2014-06-26 2015-06-12 Scheduling method and apparatus in a multiprocessing environment
EP15811135.1A EP3163442A4 (en) 2014-06-26 2015-06-12 Method for scheduling in multiprocessing environment and device therefor
CN201580003775.7A CN105900063B (en) 2014-06-26 2015-06-12 Scheduling method and device in multiprocessing environment
US14/760,374 US10530846B2 (en) 2014-06-26 2015-06-12 Scheduling packets to destination virtual machines based on identified deep flow

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
KR1020140079129A KR101764811B1 (en) 2014-04-02 2014-06-26 Muti-scheduling method and apparatus in multi-processing environment
KR10-2014-0079129 2014-06-26
KR10-2014-0104319 2014-08-12
KR20140104319 2014-08-12
KR1020140112071A KR101583325B1 (en) 2014-08-12 2014-08-27 Network interface apparatus and method for processing virtual packets
KR10-2014-0112071 2014-08-27
KR10-2015-0046740 2015-04-02
KR1020150046740A KR20150114911A (en) 2014-04-02 2015-04-02 Scheduling method and apparatus in multi-processing environment

Publications (1)

Publication Number Publication Date
WO2015199366A1 true WO2015199366A1 (en) 2015-12-30

Family

ID=54938400

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2015/005914 WO2015199366A1 (en) 2014-06-26 2015-06-12 Method for scheduling in multiprocessing environment and device therefor

Country Status (1)

Country Link
WO (1) WO2015199366A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017117448A (en) * 2015-12-26 2017-06-29 インテル コーポレイション Application-level network queueing
CN115208844A (en) * 2021-04-06 2022-10-18 欧温星球控股股份有限公司 Communication device, computer-readable recording medium, and communication system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08152903A (en) * 1994-11-28 1996-06-11 Fujitsu Ltd Multiprocessor system
JP2002344503A (en) * 2001-05-14 2002-11-29 Fujitsu Ltd Qos resource allocation system in packet transfer device
KR20040005824A (en) * 2000-09-25 2004-01-16 크로스빔 시스템즈, 인크. Flow scheduling and architecture for network application apparatus
US20080059555A1 (en) * 2006-08-31 2008-03-06 Archer Charles J Parallel application load balancing and distributed work management
KR20110065942A (en) * 2009-12-10 2011-06-16 한국전자통신연구원 Apparatus and method for scheduling of packet in network based on flow

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08152903A (en) * 1994-11-28 1996-06-11 Fujitsu Ltd Multiprocessor system
KR20040005824A (en) * 2000-09-25 2004-01-16 크로스빔 시스템즈, 인크. Flow scheduling and architecture for network application apparatus
JP2002344503A (en) * 2001-05-14 2002-11-29 Fujitsu Ltd Qos resource allocation system in packet transfer device
US20080059555A1 (en) * 2006-08-31 2008-03-06 Archer Charles J Parallel application load balancing and distributed work management
KR20110065942A (en) * 2009-12-10 2011-06-16 한국전자통신연구원 Apparatus and method for scheduling of packet in network based on flow

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP3163442A4 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017117448A (en) * 2015-12-26 2017-06-29 インテル コーポレイション Application-level network queueing
CN115208844A (en) * 2021-04-06 2022-10-18 欧温星球控股股份有限公司 Communication device, computer-readable recording medium, and communication system

Similar Documents

Publication Publication Date Title
CN105900063B (en) Scheduling method and device in multiprocessing environment
CN111522653B (en) Container-based network function virtualization platform
US9146768B2 (en) Automatic adjustment of logical channels in a fibre channel network
CN108337188B (en) Traffic and load aware dynamic queue management
US8644194B2 (en) Virtual switching ports on high-bandwidth links
WO2014104634A1 (en) System and method for dynamically expanding virtual cluster and recording medium on which program for executing the method is recorded
US10999209B2 (en) Technologies for scalable network packet processing with lock-free rings
KR101639797B1 (en) Network interface apparatus and method for processing virtual machine packets
CN110162378B (en) Resource scheduling method, device, equipment and system
US11689470B2 (en) Allocation of processors for processing packets
WO2018013443A1 (en) Multiple core software forwarding
WO2013176431A1 (en) System and method for allocating server to server and for efficient messaging
WO2015199366A1 (en) Method for scheduling in multiprocessing environment and device therefor
JP2011203810A (en) Server, computer system, and virtual computer management method
JP2008181387A (en) I/o bus system and its management method
Fan et al. Adding network bandwidth resource management to Hadoop YARN
KR20180134219A (en) The method for processing virtual packets and apparatus therefore
KR101773528B1 (en) Network interface apparatus and method for processing virtual machine packets
KR20010038486A (en) Structure of Buffer and Queues for Suppling Ethernet QoS and Operating Method thereof
KR102091152B1 (en) Method and apparatus for processing packet using multi-core in hierarchical networks
KR20150114911A (en) Scheduling method and apparatus in multi-processing environment
US10992601B2 (en) Packet processing method and apparatus in multi-layered network environment
CN115378885B (en) Virtual machine service network bandwidth management method and device under super fusion architecture
TWI816593B (en) Method and computer program product and apparatus for load-balance of network processing unit
WO2023132414A1 (en) Thread allocation method, thread allocation device, and computer readable recording medium

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 14760374

Country of ref document: US

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15811135

Country of ref document: EP

Kind code of ref document: A1

REEP Request for entry into the european phase

Ref document number: 2015811135

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2015811135

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 2017520838

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE