WO2016056210A1 - サーバ、フロー制御方法および仮想スイッチ用プログラム - Google Patents

サーバ、フロー制御方法および仮想スイッチ用プログラム Download PDF

Info

Publication number
WO2016056210A1
WO2016056210A1 PCT/JP2015/005015 JP2015005015W WO2016056210A1 WO 2016056210 A1 WO2016056210 A1 WO 2016056210A1 JP 2015005015 W JP2015005015 W JP 2015005015W WO 2016056210 A1 WO2016056210 A1 WO 2016056210A1
Authority
WO
WIPO (PCT)
Prior art keywords
flow
packet
virtual machine
instruction information
network interface
Prior art date
Application number
PCT/JP2015/005015
Other languages
English (en)
French (fr)
Inventor
秀一 狩野
Original Assignee
日本電気株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日本電気株式会社 filed Critical 日本電気株式会社
Publication of WO2016056210A1 publication Critical patent/WO2016056210A1/ja

Links

Images

Definitions

  • the present invention relates to a server including a virtual machine, a virtual switch, and a network interface card, a flow control method applied to the server, a virtual switch program, and a network interface card.
  • a network interface card hereinafter referred to as NIC
  • a virtual switch In some cases, a network interface card (hereinafter referred to as NIC), a virtual switch, and a virtual machine are provided in the server.
  • the NIC is hardware. There may be a plurality of virtual machines. In such a server, it is conceivable that the NIC and the virtual machine exchange packets via the virtual switch. However, since the virtual switch is a software switch, the processing is slow, and the virtual switch tends to become a packet processing bottleneck.
  • VF Virtual Function
  • SR-IOV Single-Root I / O Virtualization
  • the server described in Patent Literature 1 includes a virtual machine, a virtual switch, and a NIC.
  • a flow entry is set in the NIC.
  • the flow entry is information defining flow identification information (hereinafter referred to as a key) and an operation for a packet of the flow specified by the key. If there is a flow entry that matches the flow of the packet, the NIC executes an operation defined by the flow entry (for example, “send the packet to the designated virtual machine”). In addition, if there is no flow entry that matches the flow of the packet, the NIC sends the packet to the virtual switch, and the virtual switch processes the packet (for example, sends it to an appropriate virtual machine). In addition, the virtual switch sets the flow entry to the NIC.
  • the virtual switch sets a flow entry corresponding to that flow in the NIC. For example, when the virtual switch receives a predetermined packet (for example, the first packet of the flow) from the NIC, the virtual switch sets a flow entry corresponding to the flow of the packet in the NIC.
  • a predetermined packet for example, the first packet of the flow
  • NFV Network Functions Virtualization
  • NFV Network Functions Virtualization
  • NFV is a technology for implementing functions of various communication devices on general-purpose hardware by software.
  • NFV has the advantage that functions can be easily replaced, and that there is no need to provide a dedicated communication device for each function.
  • NFV may be realized using a general-purpose server in a data center or a general-purpose server on a communication network.
  • a general-purpose server to which NFV is applied executes processing for completely different types of communication.
  • Communication for accessing a Web server and reading / writing a database has a relatively short lifetime.
  • communication for backup of a large amount of data has a long flow survival time.
  • the time from the start to the completion of communication is important as the communication quality.
  • throughput is important as communication quality.
  • the magnitude of the communication delay differs depending on whether the communication is between servers in the data center or between the server in the data center and a server outside the data center.
  • an object of the present invention is to provide a server, a flow control method, a virtual switch program, and a network interface card that can send a packet of a flow having a short lifetime to a virtual machine from the NIC at high speed.
  • the server includes a virtual machine, a virtual switch, and a network interface card, and the virtual switch detects a short-lived flow whose lifetime is less than or equal to a predetermined time, and a packet related to the short-lived flow Instructing means for sending instruction information for instructing to send to the virtual machine to the network interface card.
  • the network interface card is a network interface card installed in a server including a virtual machine and a virtual switch, and a packet related to a short-lived flow whose lifetime is less than a predetermined time is transmitted to the virtual machine. It is characterized by comprising acquisition means for acquiring instruction information instructed to be transmitted from a virtual switch, and transmission means for transmitting a packet to and from a virtual machine based on the instruction information.
  • the flow control method according to the present invention is a flow control method applied to a server including a virtual machine, a virtual switch, and a network interface card, and the virtual switch has a flow survival time of a predetermined time or less.
  • the short-lived flow is detected, and instruction information instructing to send a packet related to the short-lived flow to the virtual machine is sent to the network interface card.
  • the virtual switch program according to the present invention is a virtual switch program that causes a computer including a virtual machine and a network interface card to operate as a virtual switch. It is characterized by executing a detection process for detecting a flow and an instruction process for sending instruction information for instructing sending a packet related to a short-lived flow to a virtual machine to a network interface card.
  • a packet having a short survival time can be sent from the NIC to the virtual machine at high speed.
  • FIG. 1 is a block diagram illustrating an example of a server according to the first embodiment of this invention.
  • the server 1 includes a network interface card (hereinafter referred to as NIC) 2, a memory 3, and an arithmetic device 4.
  • NIC network interface card
  • the NIC 2 is an interface for the server 1 to receive a packet from the outside and transmit a packet to the outside.
  • the memory 3 stores a virtual switch program 5, virtual switch data 6, various virtual machine programs 7, various virtual machine execution data 8, and a Hypervisor program 9.
  • the program stored in the memory 3 may be an expanded version of the program stored in the program recording medium.
  • the virtual machine program 7 corresponding to the individual virtual machine A, virtual machine B, or the like may be referred to as a virtual machine A program 7 or a virtual machine B program 7 in some cases.
  • virtual machine execution data 8 corresponding to individual virtual machine A, virtual machine B, and the like may be referred to as virtual machine A execution data 8 and virtual machine B execution data 8.
  • the arithmetic unit 4 is a CPU (Central Processing Unit) that operates according to a program stored in the memory 3. That is, for example, the arithmetic device 4 operates as the virtual machine A according to the virtual machine A program 7 and operates as the virtual machine B according to the virtual machine B program 7. The arithmetic device 4 operates as a virtual switch according to the virtual switch program 5.
  • the hypervisor program 9 is a program for controlling execution of the programs 7 and 5 by the arithmetic device 4.
  • the arithmetic device 4 operating as the virtual machines A, B, etc. according to the individual virtual machine A program 7, the virtual machine B program 7, etc. will be referred to as virtual machine A, virtual machine B, etc.
  • the arithmetic device 4 that operates as a virtual switch according to the virtual switch program 5 is referred to as a virtual switch.
  • the NIC 2 includes a reception filter 21 and a transmission filter 22. Furthermore, the NIC 2 includes a reception queue 23 and a transmission queue 24 corresponding to individual virtual machines and virtual switches. Hereinafter, the reception queue 23 and the transmission queue 24 corresponding to the virtual switch are referred to as a reception queue 23a and a transmission queue 24a.
  • a flow entry is set by a virtual switch.
  • the reception filter 21 searches for a flow entry that matches the flow of the packet. If the search is successful, the virtual machine defined by the flow entry is determined according to the flow entry. Is stored in the reception queue 23 corresponding to. If the search fails, the reception filter 21 stores the packet received from the outside in the reception queue 23a.
  • the NIC 2 has a function (data direct transmission function 26) for directly transmitting packets between the virtual machine and the reception queue 23 and transmission queue 24 corresponding to the virtual machine. With this function, a packet stored in the reception queue 23 corresponding to the virtual machine is directly transmitted to the virtual machine.
  • the NIC 2 includes a packet transfer unit 27 that writes a packet into a packet buffer 61 described later and reads a packet from the packet buffer 61.
  • the reception queue 23a sends the packet stored by the reception filter 21 to the virtual switch. Specifically, the reception queue 23a sends the stored packet to the packet transfer unit 27, and the packet transfer unit 27 stores the packet in the packet buffer 61 (more specifically, the NIC reception buffer 612 described later). To do.
  • Each transmission queue 24 stores a packet sent from the corresponding virtual machine, and each transmission queue 24 sends the stored packet to the transmission filter 22.
  • the transmission queue 24 a stores packets from the virtual switch and sends the packets to the transmission filter 22.
  • the transmission filter 22 transmits the packets received from the transmission queues 24 and 24a to the outside of the server 1. Note that a flow entry may also be set for the transmission filter 22. In the transmission filter 22, for example, a flow entry for storing the packet sent to the transmission filter 22 in the reception queue again is set.
  • the NIC 2 includes a registration instruction detection unit 25.
  • instruction information including a flow entry registration instruction may be attached to a packet sent from the virtual switch to the NIC 2.
  • the registration instruction detection unit 25 sends the instruction information to the reception filter 21 and the transmission filter 22 and sends the instruction information to the reception filter 21 and the transmission filter 22 based on the instruction information.
  • the registration instruction detection unit 25 removes the instruction information from the packet and sends the packet to the transmission queue 24a. If the instruction information is not attached to the packet from the virtual switch, the registration instruction detection unit 25 sends the packet to the transmission queue 24a as it is. Note that the packet read from the packet buffer 61 by the packet transfer unit 27 is sent to the registration instruction detection unit 25.
  • the setting of the flow entry in the reception filter 21 and the transmission filter 22 is not performed only by the instruction information attached to the packet from the virtual switch.
  • the NIC setting function 56 of the virtual switch may set the flow entry to the reception filter 21 and the transmission filter 22.
  • the virtual switch program 5 includes a packet switch function 51, a flow identification function 52, a time measurement function 53, a registration target determination function 54, a setting trigger determination function 55, and a NIC setting function 56.
  • a packet switch function 51 a packet switch function 51
  • a flow identification function 52 a flow identification function 52
  • a time measurement function 53 a registration target determination function 54
  • a setting trigger determination function 55 a NIC setting function 56.
  • the virtual switch data 6 includes data stored in the packet buffer 61, a flow table 62, and a threshold 63.
  • the flow table 62 is a set of flow entries used by the virtual switch. This flow entry may be set in accordance with the OpenFlow protocol, for example, by a control device (not shown) that controls the virtual switch.
  • the threshold value 63 is a threshold value to be compared with the time measured by the time measurement function 53 (in this embodiment, RTT (Round Trip Time)).
  • FIG. 2 is a schematic diagram showing an example of the packet buffer 61.
  • the packet buffer 61 includes a NIC transmission buffer 611, a NIC reception buffer 612, various virtual machine transmission buffers 613, various virtual machine reception buffers 614, and an instruction information buffer 615.
  • the instruction information buffer 615 may be provided separately from the packet buffer 61.
  • the NIC transmission buffer 611 is a buffer for storing a packet to be sent to the NIC 2.
  • the packet stored in the NIC transmission buffer 611 is read by the packet transfer means 27. Therefore, the virtual switch (specifically, the packet switch function 51) stores the packet in the NIC transmission buffer 611 and instructs the packet transfer means 27 to read the packet from the NIC transmission buffer 611. , Send a packet to NIC2.
  • the NIC reception buffer 612 is a buffer for storing a packet received from the NIC 2.
  • the transmission queue 24a of the NIC 2 sends the packet to the packet transfer unit 27, and the packet transfer unit 27 stores the packet in the NIC reception buffer 612, thereby sending the packet to the virtual switch.
  • the virtual machine transmission buffer 613 and the virtual machine reception buffer 614 correspond to individual virtual machines A, B,.
  • the virtual machine transmission buffer 613 is a buffer that stores packets to be sent to the corresponding virtual machine.
  • the packet stored in the virtual machine transmission buffer 613 is received by the corresponding virtual machine.
  • the virtual switch (specifically, the packet switch function 51) sends the packet to the virtual machine by storing the packet in the virtual machine transmission buffer 613 corresponding to the virtual machine to which the packet is sent.
  • the virtual machine reception buffer 614 is a buffer for storing packets received from the corresponding virtual machine. Each virtual machine sends the packet to the virtual switch by storing the packet in the corresponding virtual machine reception buffer 614.
  • the flow identification function 52 When a packet is stored in the virtual machine reception buffer 614 and the NIC reception buffer 612 (in other words, when a packet is received from the virtual machine or NIC2), the flow identification function 52 reads the packet and erases it from the buffer. To do. Then, the flow identification function 52 searches the flow table 62 for a flow entry that matches the flow of the packet. When the flow identification function 52 succeeds in the search of the flow entry, the flow identification function 52 sends the read packet to the packet switch function 51 and notifies the packet switch function 51 of the operation defined by the flow entry.
  • the flow identification function 52 converts the read packet into the packet The packet is sent to the switch function 51 and the packet switch function 51 is notified that the packet is to be sent to the NIC 2.
  • the flow identification function 52 fails to search for a flow entry that matches the flow of a packet read from the virtual machine reception buffer 614 (hereinafter referred to as a packet received from a virtual machine), for example, A flow entry that matches the flow of the packet is sent from the control device (not shown) that controls the switch, and a flow entry that matches the flow whose source and destination are reversed. Receive.
  • the protocol between the flow identification function 52 and the control device may be, for example, the OpenFlow protocol.
  • the flow identification function 52 adds the flow entry received from the control device to the flow table 62.
  • the flow identification function 52 sends the packet received from the virtual machine to the packet switch function 51, and notifies the packet switch function 51 of the operation defined by the flow entry that matches the flow of the packet.
  • the packet switch function 51 receives a packet from the flow identification function 52 and, when notified of an operation on the packet, executes the notified operation on the packet.
  • the time measurement function 53 Is written in the flow entry.
  • the flow identification function 52 not only detects the flow entry (hereinafter referred to as flow entry P) that matches the flow of the packet received from the virtual machine, but also A flow entry (hereinafter referred to as a flow entry Q) that matches a flow in which the transmission source and the transmission destination are reversed from the flow is also received from the control device.
  • the time measurement function 53 writes the current time at that time in the flow entry P.
  • the time measurement function 53 succeeds in retrieving a flow entry that matches the flow of a packet read from the NIC reception buffer 612 (hereinafter referred to as a packet received from the NIC 2), information on the current time at that time is obtained. To get. Then, the time measurement function 53 calculates the RTT by calculating the difference between the current time and the time written in the flow entry that matches the flow whose transmission source and transmission destination are opposite to the flow. calculate.
  • the registration target determination function 54 compares the RTT calculated by the time measurement function 53 with the threshold 63, and if the RTT is equal to or less than the threshold 63, specifies the flow of the packet received from the NIC 2 (in other words, the RTT Is detected below), and instruction information for instructing registration of a flow entry that matches the flow is created.
  • the instruction information the flow key of the packet received from NIC2, the information that specifies sending the packet to the virtual machine that is the destination of the packet, and the instruction to create and register the flow entry from the information Information to be included.
  • the registration target determination function 54 stores this instruction information in the instruction information buffer 615.
  • a flow whose RTT is equal to or less than a threshold is highly likely to be a short-lived flow whose lifetime is less than a predetermined time.
  • the reason for this is that the communication that has been started in a short time with the opposite device (the device that is the communication partner) is likely to have a short-lived flow. Therefore, it can be said that the registration target determination function 54 detects a short-lived flow.
  • the packet switching function 51 When the packet switch function 51 receives from the flow identification function 52 a packet corresponding to a flow whose transmission source and transmission destination are opposite to the flow key included in the instruction information, the packet switching function 51 adds the instruction information to the packet. Attach it to NIC2. The packet switch function 51 deletes the instruction information attached to the packet and sent to the NIC 2 from the instruction information buffer 615.
  • the instruction information is attached to a predetermined packet and sent to the NIC 2 together with the packet. However, if the virtual switch does not receive such a predetermined packet from the virtual machine, the instruction information remains in the instruction information buffer 615.
  • the setting opportunity determination function 55 determines that a flow entry setting opportunity occurs at regular intervals. When the setting trigger determination function 55 determines that the NIC setting function 56 has triggered the flow entry setting, the NIC setting function 56 receives all the instruction information existing in the instruction information buffer 615 from the reception filter 21 and the transmission filter 22. To the reception filter 21 and the transmission filter 22 to set the flow entry based on the instruction information.
  • the NIC setting function 56 directly writes the instruction information to the reception filter 21 or the like in the NIC 2 by using, for example, a memory mapped IO.
  • a flow entry is mainly set in the reception filter 21 based on the instruction information, but a flow entry may be set in the transmission filter 22.
  • FIG. 3 is a flowchart illustrating an example of processing progress when the virtual switch receives a packet from the virtual machine.
  • a case where the virtual machine A sends a packet to the virtual switch (in other words, a case where the packet is stored in the virtual machine reception buffer 614 corresponding to the virtual machine A) will be described as an example.
  • the flow identification function 52 When the flow identification function 52 reads a packet from the virtual machine reception buffer 614 corresponding to the virtual machine A, the flow identification function 52 searches the flow table 62 for a flow entry that matches the flow of the packet (step S1).
  • step S2 the flow identification function 52 processes the packet according to a predetermined procedure (step S2).
  • the flow identification function 52 may perform the following operation, for example.
  • the flow identification function 52 sends the packet received from the virtual machine A to a control device (not shown) that controls the virtual switch, and the flow entry P that matches the flow of the packet from the control device, A flow entry Q that matches a flow whose transmission source and transmission destination are reversed is received. Then, the flow identification function 52 adds the flow entries P and Q to the flow table 62.
  • the flow identification function 52 searches for a flow entry P that matches the flow of the packet received from the virtual machine A (step S3). If the flow entry P exists (Yes in step S3), the time measuring function 53 acquires the current time at that time (step S4) and writes the current time in the flow entry P (step S5).
  • step S2 the flow identification function 52 may not be able to acquire the flow entry P from the control device. In that case, the search for the flow entry fails in step S3. In that case (No in step S3), since there is no flow entry and the operation for the packet is not defined, the packet is discarded, for example, and the processing ends.
  • the flow identification function 52 sends the packet received from the virtual machine A to the packet switch function 51 and performs the operation specified by the flow entry P in the packet switch function. 51 is notified.
  • the packet transmission destination is another server, and the flow entry P defines an operation of transmitting a packet to the outside.
  • the packet switch function 51 sends the packet to the NIC 2 (step S9). Specifically, the packet switch function 51 stores the packet in the NIC transmission buffer 611 and instructs the packet transfer unit 27 to read the packet from the NIC transmission buffer 611.
  • the packet transfer means 27 reads the packet from the NIC transmission buffer 611 and sends it to the transmission queue 24 a via the registration instruction detection means 25. Since the instruction information is not attached to this packet, the registration instruction detecting unit 25 does not perform processing.
  • the transmission filter 22 transmits the packet stored in the transmission queue 24a to the outside, and as a result, the packet is sent to another server as a transmission destination.
  • the flow identification function 52 uses the packet switch function 51 to receive the packet received from the virtual machine A. And the packet switch function 51 is notified of the operation defined by the flow entry P. As described above, it is assumed that the destination of the packet is another server, and the flow entry P defines an operation for transmitting the packet to the outside.
  • step S1 if a flow entry matching the flow of the packet from the virtual machine A can be searched (Yes in step S1), the packet switch function 51 has the transmission source and the transmission destination reversed from that flow.
  • instruction information including a key of a current flow, information that specifies sending a packet to the virtual machine A that is the destination of the flow, and information that instructs to create and register a flow entry from the information Existence is checked (step S6).
  • the packet switch function 51 may inspect whether or not the instruction information is stored in the instruction information buffer 615.
  • the packet switch function 51 attaches the instruction information to the packet (step S8).
  • the packet switch function 51 stores the packet in the NIC transmission buffer 611 and instructs the packet transfer means 27 to read the packet from the NIC transmission buffer 611 in accordance with the operation specified by the flow entry P. (Step S9).
  • the packet switch function 51 stores the packet in the NIC transmission buffer 611 according to the operation defined by the flow entry P without performing the process in step S8. At the same time, the packet transfer means 27 is instructed to read the packet from the NIC transmission buffer 611 (step S9).
  • step S9 the packet transfer means 27 reads the packet from the NIC transmission buffer 611 and sends it to the transmission queue 24a via the registration instruction detection means 25.
  • the transmission filter 22 transmits the packet stored in the transmission queue 24a to the outside, and as a result, the packet is sent to another server as a transmission destination.
  • the operation of the NIC 2 when instruction information is attached to the packet will be described later with reference to FIG.
  • FIG. 4 is a flowchart showing an example of processing progress when the virtual switch receives a packet from the NIC 2. It is assumed that the flow entry corresponding to the flow of the packet received from the outside is not yet set in the reception filter 21 of NIC2. In this case, the reception filter 21 sends a packet received from the outside to the reception queue 23 a, and the packet transfer means 27 stores the packet in the NIC reception buffer 612.
  • the flow identification function 52 When the flow identification function 52 reads the packet from the NIC reception buffer 612, the flow identification function 52 searches the flow table 62 for a flow entry that matches the flow of the packet (step S11).
  • the packet received from the outside by the NIC 2 is transmitted as a response to the packet in which the virtual machine A is the transmission source and the other server is the transmission destination exemplified in the description of the flowchart shown in FIG. It is assumed that the packet is sent with A as the destination.
  • step S2 the flow entry P that matches the flow in which the virtual machine A is the transmission source and the other server is the transmission destination, and the flow and the transmission destination are reversed. Is added to the flow table 62.
  • the flow entry Q matches the flow in which the other server is the transmission source and the virtual machine A is the transmission destination.
  • the flow identification function 52 succeeds in retrieving the flow entry Q as a flow that matches the packet (Yes in step S11). Then, the flow identification function 52 sends the packet received from the NIC 2 to the packet switch function 51 and notifies the packet switch function 51 of the operation defined by the flow entry Q.
  • the flow entry Q defines an operation for sending a packet to the virtual machine A.
  • the time measuring function 53 acquires the current time at that time (step S12). Then, the time measurement function 53 reads the time written in the flow entry P that matches the flow whose transmission source and transmission destination are opposite to the flow of the packet. This time is the current time at the time of the aforementioned step S4 (see FIG. 3), and is written in the flow entry P in step S5.
  • the time measurement function 53 calculates the RTT by calculating the difference between the current time acquired in step S12 and the time read from the flow entry P (step S13). This RTT is the time from when the virtual machine A is the transmission source and the other server is the transmission destination packet to when the response packet is received.
  • the registration target determination function 54 determines whether or not the RTT calculated in step S13 is less than or equal to the threshold 63 (step S14).
  • the registration target determination function 54 detects the flow of the packet received from the NIC 2 as a short-lived flow (a flow whose lifetime is less than or equal to a predetermined time), Instruction information for instructing registration of a flow entry that matches the flow is created. At this time, the registration target determination function 54 creates a flow entry from the key of the flow of the packet received from the NIC 2, information that specifies that the packet is sent to the virtual machine A that is the destination of the packet, and the information. Instruction information including information for instructing registration is created (step S15). The registration target determination function 54 stores the created instruction information in the instruction information buffer 615.
  • the registration target determination function 54 uses a flow in which the transmission source and the transmission destination are opposite to the flow of the packet received from the NIC 2 (in this example, the virtual machine A is the transmission source and other servers are The destination flow) is also detected as a short-lived flow. Then, the registration target determination function 54 also creates information for transmitting the packet directly from the virtual machine (virtual machine A in this example) to the NIC 2. Hereinafter, this information is referred to as “packet transmission instruction information from the virtual machine”. The packet transmission instruction information from the virtual machine will be described later.
  • step S15 After step S15 or when it is determined in step S14 that the RTT is greater than the threshold 63 (No in step S14), the packet switch function 51 performs the flow identification function 52 on the packet received from the flow identification function 52. The operation notified from is executed (step S16). In this example, the packet switch function 51 sends the packet to the virtual machine A (in other words, stores the packet in the virtual machine transmission buffer 613 corresponding to the virtual machine A).
  • step S11 the packet received from the outside by the NIC 2 is a response to the packet illustrated in the description of the flowchart illustrated in FIG. 3 and in which the virtual machine A is the transmission source and the other server is the transmission destination.
  • step S11 the packet received from the outside by the NIC 2 is another packet, if there is a flow entry that matches the flow of the packet (Yes in step S11), the processing from step S12 onward may be performed. . If there is no flow entry that matches the flow of the packet (No in step S12), the packet is processed according to a predetermined procedure (step S17).
  • the flow identification function 52 may perform the following operations, for example.
  • step S17 the flow identification function 52 sends the packet received from the NIC 2 to a control device (not shown) that controls the virtual switch, and acquires a flow entry that matches the flow of the packet from the control device.
  • the flow entry defines an operation for sending a packet to a destination virtual machine.
  • the flow identification function 52 sends the packet to the packet switch function 51 and notifies the packet switch function 51 of the operation defined by the flow entry.
  • the packet switch function 51 sends a packet to the designated virtual machine according to the notification (step S16).
  • the flow identification function 52 adds the acquired flow entry to the flow table 62.
  • step S15 when step S15 is executed, the newly created instruction information is stored in the instruction information buffer 615.
  • the packet switch function 51 From the instruction information created in step S15 (in this example, the flow key with the server as the transmission source and the virtual machine A as the transmission destination, the information defining that the packet is sent to the virtual machine A, and the information Instruction information including information instructing to create and register a flow entry is attached to the packet. Then, the packet switch function 51 sends the packet to the NIC 2. That is, the packet switch function 51 stores the packet in the NIC transmission buffer 611 and instructs the packet transfer unit 27 to read the packet from the NIC transmission buffer 611.
  • FIG. 5 is a flowchart showing an example of processing progress of the NIC 2 that receives a packet from the packet switch function 51.
  • the packet transfer means 27 reads the packet from the NIC transmission buffer 611 according to the instruction from the packet switch function 51, and sends the packet to the registration instruction detection means 25 (step S21).
  • the registration instruction detection unit 25 determines whether or not instruction information is attached to the packet (step S22).
  • the registration instruction detecting unit 25 detects the instruction information (in this example, a flow key having a predetermined server as a transmission source and a virtual machine A as a transmission destination, virtual Information specifying that the packet is to be sent to the machine A and instruction information including information instructing to create and register a flow entry from the information is sent to the reception filter 21, and the reception filter 21
  • the registration instruction detection unit 25 removes the instruction information from the packet.
  • the registration instruction detection means 25 sends a packet to the transmission queue 24a (step S24). Then, the transmission filter 22 sends the packet to the outside (step S25).
  • step S15 when the virtual machine A does not send a packet destined for the same server to the virtual switch again, the processes of steps S1, S6, S7, S8, and S9 described above are not executed.
  • the instruction information created in step S15 remains in the instruction information buffer 615.
  • FIG. 6 is a flowchart showing an example of the progress of processing for setting a flow entry in the NIC 2 based on the instruction information remaining in the instruction information buffer 615.
  • a flow entry is created and registered from the key of the flow with the predetermined server as the transmission source and the virtual machine A as the transmission destination, information specifying that the packet is sent to the virtual machine A, and the information.
  • the instruction information including the information for instructing this will be described as an example. In order to simplify the description, a case where only the instruction information remains in the instruction information buffer 615 will be described as an example.
  • the setting trigger determination function 55 determines whether or not a predetermined time has elapsed since the previous flow entry setting trigger (step S31). If the predetermined time has not elapsed (No in step S31), the process waits until the predetermined time elapses from the previous flow entry setting opportunity.
  • step S31 When a predetermined time has elapsed since the previous flow entry setting trigger (Yes in step S31), the setting trigger determination function 55 determines that the flow entry setting trigger has been reached (step S32).
  • the NIC setting function 56 reads the instruction information from the instruction information buffer 615 and sends the instruction information to the reception filter 21, and the reception filter 21 determines the key in the instruction information and the virtual machine according to the instruction information.
  • a flow entry is registered in association with information defining that a packet is to be sent to A (step S33).
  • the NIC setting function 56 directly writes the instruction information to the reception filter 21 by, for example, memory mapped IO.
  • step S33 the NIC setting function 56 deletes the read instruction information from the instruction information buffer 615.
  • the NIC setting function 56 executes step S33 for each instruction information.
  • step S33 When the process of step S33 is completed for all instruction information, the process proceeds to step S31.
  • step S23 or step S33 As a result of setting the flow entry in step S23 or step S33, in this example, when the reception filter 21 receives a packet of a flow having a predetermined server as a transmission source and the virtual machine A as a transmission destination, the reception filter 21 The search for the flow entry is successful, and the packet is stored in the reception queue 23 corresponding to the virtual machine A. As a result, the packet is directly transmitted from the NIC 2 to the virtual machine A without going through the virtual switch. Therefore, a packet with a short-lived flow can be sent from the NIC 2 to the virtual machine at a high speed.
  • the packet switch function 51 attaches instruction information to the packet and sends the packet to the NIC 2.
  • the instruction information cannot be sent to the NIC 2 by this method unless the packet to which the instruction information is attached is sent from the virtual machine. Therefore, by executing the processing of steps S31 to S33, the instruction information can be sent to the NIC 2 without omission.
  • the part that realizes the packet switch function 51 and the NIC setting function 56 is an instruction unit that sends an instruction to the NIC 2.
  • the virtual switch program 5 includes a virtual machine flow entry setting function 57 as shown in FIG.
  • the virtual machine flow entry setting function 57 causes the virtual machine to set a flow entry.
  • the registration target determination function 54 detects a flow with the virtual machine A as a transmission source and a predetermined server as a destination as a short-lived flow. Then, the registration target determination function 54 creates a flow entry that defines the key of the short-lived flow and an operation of sending a packet to the transmission queue corresponding to the virtual machine A as packet transmission instruction information from the virtual machine.
  • the virtual machine flow entry setting function 57 sets the flow entry in the virtual machine A. Then, the virtual machine A sends the packet of the short-lived flow to the transmission queue corresponding to the virtual machine A according to the instruction defined in the flow entry.
  • the transmission filter 22 outputs the packet to the outside, and the packet reaches a predetermined server.
  • the virtual machine A since the virtual machine A directly transmits a packet to the NIC 2 without going through the virtual switch, a packet with a short life flow can be sent from the virtual machine to the NIC 2 at a high speed.
  • the virtual machine A has been described as an example, but the same applies to other virtual machines.
  • the above operation is an example, and the virtual machine may realize an operation of directly sending a packet with a short-lived flow to the NIC 2 by another method.
  • FIG. 8 is a schematic diagram illustrating an example of a flow entry including a key including a wild card, which is applied to the second embodiment.
  • a wild card flow entry A flow that matches a key including a wild card is referred to as a wild card flow.
  • the wildcard flow entry includes a key including a wildcard, an action (operation for a packet of a flow that matches the key), statistical information, and active flow information.
  • the active flow is a surviving flow (in other words, a flow for which it is determined that communication is ongoing at this time), and the key of the active flow is described without using a wild card.
  • the active flow information includes a key, an active flow generation time, and a final processing time of an active flow packet. Further, as shown in FIG. 8, one wildcard flow entry may include information on a plurality of active flows. Hereinafter, information of each active flow is referred to as an active flow entry.
  • each wild card flow entry corresponds to the key of the wild card flow, and includes the statistical value of the survival time of each active flow that existed in the past as statistical information.
  • a case where an average value is used as a statistical value will be described as an example.
  • the statistical value is not limited to the average value.
  • a median value, a mode value, a maximum value, or the like may be used as a statistical value.
  • FIG. 9 is a schematic diagram illustrating an example of a virtual switch program according to the second embodiment.
  • the virtual switch program 5 according to the second embodiment includes a wild card flow management function 70 instead of the time measurement function 53 according to the first embodiment.
  • the wild card flow management function 70 manages wild card flow entries.
  • the wild card flow management function 70 includes a current time acquisition function 71, an active flow monitoring function 72, and a statistical value management function 73.
  • the current time acquisition function 71 acquires the current time.
  • the active flow monitoring function 72 adds or deletes an active flow entry to / from a wildcard flow entry, updates the final processing time, and determines whether or not the active flow has disappeared.
  • the statistical value management function 73 updates the statistical information of the wild card flow entry (the average value of the survival time of each active flow that has existed in the wild card flow entry in the past).
  • the threshold 63 in the present invention is a threshold compared with the statistical information of the wild card flow entry.
  • the registration target determination function 54 detects the wildcard flow as a short-lived flow, and indicates instruction information for instructing registration of a flow entry that matches the flow. create.
  • the NIC 2, the virtual machine program 7, the virtual machine execution data 8, the hypervisor program 9, the arithmetic unit 4, and the packet buffer 61 are the same as those elements in the first embodiment, and the description thereof is omitted.
  • FIG. 10 is a flowchart showing an example of processing progress when the virtual switch receives a packet in the second embodiment. In the present embodiment, whether the virtual switch receives a packet from the virtual machine or whether the virtual switch receives a packet from the NIC 2, the processing progress of the virtual switch is the same.
  • the flow identification function 52 When the flow identification function 52 receives a packet from the virtual machine or the NIC 2, the flow identification function 52 searches the flow table 62 for a wild card flow entry that matches the packet (step S41).
  • the flow identification function 52 sends the received packet to the packet switch function 51, and the action of the wild card flow entry is changed to the packet switch function 51.
  • the active flow monitoring function 72 determines whether or not there is an active flow entry that matches the packet in the wildcard flow entry. (Step S42). As already described, the key of the active flow is described without using a wild card. The active flow monitoring function 72 may compare the key of each active flow described in the wildcard flow entry with the packet to determine whether there is an active flow entry that matches the packet.
  • step S42 If there is an active flow entry that matches the packet in the wildcard flow entry (Yes in step S42), the current time acquisition function 71 acquires the current time at that time (step S43). Then, the active flow monitoring function 72 updates the last processing time in the active flow entry that matches the packet with the current time (step S44).
  • the packet switch function 51 sends a packet to the packet received from the flow identification function 52 by executing the operation defined by the action (step S45). For example, if the action specifies that a packet be sent to the virtual machine A, the packet switch function 51 stores the packet in the virtual machine transmission buffer 613 corresponding to the virtual machine A. Further, for example, when it is specified that the packet is sent to the outside by an action, the packet switch function 51 stores the packet in the NIC transmission buffer 611 and also transfers the packet from the NIC transmission buffer 611 to the packet transfer means 27. Instructs to read a packet.
  • step S42 if there is no active flow entry matching the packet in the wildcard flow entry (No in step S42), the active flow monitoring function 72 searches for an active flow entry matching the packet in step S41. It is added in the wild card flow entry made (step S46). However, in step S46, the active flow monitoring function 72 may identify the key of the active flow based on the packet, add the information of the key to the wildcard flow entry, and generate the generation time and the final corresponding to the key. The processing time may not be specified in step S46.
  • the current time acquisition function 71 acquires the current time at that time (step S47). Then, the active flow monitoring function 72 adds the current time information as the active flow generation time information to the active flow entry added in step S46 (step S48).
  • the packet switch function 51 sends a packet to the packet received from the flow identification function 52 by executing the operation defined by the action (step S45).
  • step S41 if there is no wildcard flow entry that matches the packet (No in step S41), the flow identification function 52 processes the packet according to a predetermined procedure (step S49).
  • the flow identification function 52 may perform the following operations, for example.
  • the flow identification function 52 sends the packet received from the virtual machine or NIC 2 to a control device (not shown) that controls the virtual switch, and from the control device, the wild card flow entry that matches the flow of the packet is sent. Receive. Since this wildcard flow entry is in the initial state, it does not include statistical information or active flow entries. However, wildcard flow keys and actions are included.
  • the flow identification function 52 adds the wild card flow entry to the flow table 62.
  • the flow identification function 52 searches again for a wild card flow entry that matches the packet received from the virtual machine or the NIC 2 (step S50).
  • the flow identification function 52 sends the packet to the packet switch function 51 and notifies the packet switch function 51 of the action in the wild card flow entry. .
  • the active flow monitoring function 72 adds an active flow entry that matches the packet to the wild card flow entry searched in step S50 (step S51). However, in step S51, the active flow monitoring function 72 may identify the key of the active flow based on the packet and add information on the key to the wild card flow entry.
  • the current time acquisition function 71 acquires the current time at that time (step S52). Then, the active flow monitoring function 72 adds the current time information as the active flow generation time information to the active flow entry added in step S52 (step S53).
  • steps S51 to S53 is the same as the processing of steps S46 to S48.
  • the packet switch function 51 sends the packet by executing the operation defined by the action on the packet received from the flow identification function 52 (step S45).
  • step S49 the flow identification function 52 may not be able to acquire a wild card flow entry from the control device. In that case, the search for the flow entry fails in step S50. In that case (No in step S50), since there is no wild card flow entry and no action is defined, the packet is discarded, for example, and the process ends.
  • FIG. 11 is a flowchart illustrating an example of processing progress in which the virtual switch instructs the NIC 2 to set a flow entry.
  • the setting trigger determination function 55 waits for a fixed time to elapse from the previous flow entry setting trigger, and determines that the flow entry setting trigger has been reached when the fixed time has elapsed (step S61).
  • step S62 is shown for one active flow entry (referred to as “e”). However, when the flow entry is triggered, the virtual switch The operation after step S62 is performed for each active flow entry in the table 62.
  • the processing after step S62 will be described using the active flow entry e as an example.
  • the active flow monitoring function 72 acquires the last processing time in the active flow entry e (step S62). This final processing time is represented by reference numeral t1.
  • the current time acquisition function 71 acquires the current time at that time (step S63). This current time is represented by reference sign t2.
  • the active flow monitoring function 72 calculates a time (no communication time) during which no active flow communication corresponding to the active flow entry e is performed (step S64).
  • the active flow monitoring function 72 determines whether or not the no-communication time t3 is equal to or greater than a predetermined threshold (step S65). That the no-communication time t3 is less than the threshold means that the active flow corresponding to the active flow entry e of interest is alive. On the other hand, the fact that the no-communication time t3 is equal to or greater than the threshold means that the active flow has disappeared. That is, step S65 is processing for determining whether the active flow is alive or extinguished. Note that the threshold value used in step S65 is determined separately from the threshold value 63 to be compared with the statistical information.
  • step S65 If the no-communication time t3 is less than the threshold (No in step S65), the process for the active flow entry e is terminated.
  • Step S65 If the no-communication time t3 is equal to or greater than the threshold (Yes in Step S65), the statistical value management function 73 reads the generation time in the active flow entry e (Step S66). This generation time is represented by a symbol t0.
  • the statistical value management function 73 calculates the lifetime of the active flow corresponding to the active flow entry e (step S67).
  • the statistical value management function 73 acquires a wild card flow entry (referred to as w) including the active flow entry e of interest (step S68).
  • the statistical value management function 73 deletes the active flow entry e included in the wild card flow entry w (step S69).
  • the statistical value management function 73 uses the lifetime t4 of the active flow corresponding to the active flow entry e, corresponds to the statistical information of the wild card flow entry w (corresponds to the key of the wild card flow entry w, and exists in the past).
  • the average value of the survival time of each active flow that has been performed) is recalculated, and the statistical information of the wild card flow entry w is updated with the average value (step S70).
  • the average value of this survival time is represented by a symbol t5.
  • the registration target determination function 54 compares the average survival time t5 with the threshold 63, and determines whether t5 is equal to or less than the threshold 63 (step S71).
  • the registration target determination function 54 identifies a flow corresponding to the key of the wild card flow entry w (a key including the wild card) as a short-lived flow. Then, instruction information for instructing registration of a flow entry that matches the flow is created.
  • the NIC setting function 56 sends the instruction information to the reception filter 21, and the reception filter 21 sets a flow entry based on the instruction information (step S72).
  • the virtual switch performs the processing from step S62 onward for each active flow entry.
  • the process proceeds to step S61.
  • the operation in which the NIC setting function 56 sends the instruction information to the reception filter 21 in step 72 is that each wild card corresponding to each wild card flow entry whose average value t5 of the active flow survival time is equal to or less than the threshold value 63 is used.
  • step S72 when the action of the wild card flow entry w stipulates that, for example, a packet is sent to a specific virtual machine, the registration target determination function 54 may create instruction information.
  • the registration target determining function 54 may create instruction information including the key of the wild card flow entry w and its action.
  • the flow filter that associates the key (including the wild card) with the action is held in the reception filter 21.
  • the reception filter 21 receives a packet that matches the key, the reception filter 21 stores the packet in a reception queue corresponding to a specific virtual machine according to the action.
  • the packet is directly transmitted from the NIC 2 to the virtual machine. Therefore, a packet with a short-lived flow can be sent from the NIC 2 to the virtual machine at a high speed.
  • step S72 when the action of the wild card flow entry w defines that, for example, the packet is to be sent to the outside, the registration target determination function 54 sends the source of the short-lived flow from the wild card flow entry w.
  • the virtual machine to be used is identified, and packet transmission instruction information from the virtual machine is created. Specifically, a flow entry that defines the key of the wild card flow entry w and the operation of sending a packet to the transmission queue corresponding to the virtual machine is created.
  • the virtual machine flow entry setting function 57 (not shown in FIG. 9, refer to FIG. 7) sets the flow entry in the virtual machine.
  • the virtual machine in which the flow entry is set transmits the short-lived flow packet directly to the transmission queue (that is, the NIC 2) according to the flow entry. Therefore, a packet with a short-lived flow can be sent from the virtual machine to the NIC 2 at a high speed.
  • the operation in which the virtual machine directly sends the short-lived flow packet to the NIC 2 may be realized by another method.
  • the processing after step S61 is performed at regular time intervals, and the NIC setting function 56 sends the instruction information to the reception filter 21 in step S72.
  • the packet switch function 51 may attach the instruction information to the packet and send the packet to the NIC 2. That is, between the time when the instruction information of the wild card flow entry w whose average value t5 of the active flow survival time is equal to or less than the threshold 63 is created and before the NIC setting function 56 sends the instruction information to the NIC 2, When the packet corresponding to the wild card flow entry w is received from the virtual machine, the packet switch function 51 may attach the instruction information to the packet and send it to the NIC 2.
  • FIG. 12 is a block diagram showing an outline of the server of the present invention.
  • the server 90 (for example, the server 1) of the present invention includes a virtual machine 91 (for example, the arithmetic device 4 that operates as a virtual machine), a virtual switch 92 (for example, the arithmetic device 4 that operates as a virtual switch), and a network interface card. 93 (for example, NIC2).
  • the virtual switch 92 includes detection means 94 and instruction means 95.
  • the detection means 94 detects a short-lived flow whose lifetime is less than or equal to a predetermined time.
  • the instruction means 95 (for example, the arithmetic device 4 that implements the packet switch function 51 and the NIC setting function 56) sends to the network interface card 93 instruction information instructed to send a packet related to the short-lived flow to the virtual machine 91.
  • the detection means 94 uses the packet transmission time of the flow whose source is the virtual machine 91 (for example, the time acquired in step S4) and the packet of the flow whose transmission source and destination are opposite to that flow.
  • the difference for example, RTT
  • the flow having the virtual machine 91 as the transmission source and the flow are the transmission source and transmission
  • a flow in which the destination is reversed is detected as a short-lived flow
  • the instruction unit 95 detects a packet corresponding to a flow in which the transmission source and the transmission destination are reversed from the flow having the virtual machine 91 as the transmission source.
  • the configuration may be such that the instruction information instructed to be sent to 91 is sent to the network interface card 93.
  • the instruction sending means attaches instruction information to the packet and sends the packet to the network interface card 93.
  • a configuration including for example, the arithmetic device 4 realizing the packet switch function 51) may be employed.
  • instruction information sending means for example, the arithmetic device 4 that realizes the NIC setting function 56
  • each flow that matches the flow identification information is short-lived.
  • the configuration may be such that the instruction means 95 detects the flow and sends the instruction information instructing the virtual machine 91 to send a packet corresponding to each flow that matches the flow identification information to the network interface card 93.
  • the detection means 94 determines the presence or absence of a short-lived flow at regular intervals, and the instruction means 95 sends instruction information to the network interface card 93 when a short-lived flow is detected (for example, a NIC setting function) 56 may be included.
  • FIG. 13 is a block diagram showing an outline of the network interface card of the present invention.
  • the network interface card 93 of the present invention is installed in a server that includes a virtual machine and a virtual switch.
  • the network interface card 93 includes an acquisition unit 96 and a transmission unit 97.
  • the acquisition unit 96 acquires, from the virtual switch, instruction information instructed to send a packet related to a short-lived flow whose lifetime is less than or equal to a predetermined time to the virtual machine. .
  • the transmission means 97 (for example, the reception queue 23) transmits the packet to and from the virtual machine based on the instruction information.
  • the present invention is preferably applied to a server including a virtual machine, a virtual switch, and a network interface card.

Abstract

 生存時間の短いフローのパケットをNICから仮想マシンに高速に送ることができるサーバを提供する。サーバ90は、仮想マシン91と、仮想スイッチ92と、ネットワークインタフェースカード93とを備える。仮想スイッチ92は、検出手段94と、指示手段95とを含む。検出手段94は、フローの生存時間が所定時間以下である短命フローを検出する。指示手段95は、短命フローに関連するパケットを仮想マシン91に送ることを指示した指示情報をネットワークインタフェースカード93に送る。

Description

サーバ、フロー制御方法および仮想スイッチ用プログラム
 本発明は、仮想マシンと仮想スイッチとネットワークインタフェースカードとを含むサーバ、そのサーバに適用されるフロー制御方法、仮想スイッチ用プログラムおよびネットワークインタフェースカードに関する。
 サーバ内に、ネットワークインタフェースカード(以下、NICと記す。)と、仮想スイッチと、仮想マシンとが設けられる場合がある。NICは、ハードウェアである。仮想マシンは複数設けられる場合もある。このようなサーバにおいて、NICおよび仮想マシンが仮想スイッチを介してパケットを授受することが考えられる。しかし、仮想スイッチは、ソフトウェアスイッチなので処理が遅く、仮想スイッチはパケット処理のボトルネックになりやすい。
 また、NIC内に、個々の仮想マシンに対応する仮想NICを設け、各仮想NICが、対応する仮想マシンと直接パケットを授受することが考えられる。しかし、この場合には、パケットが全く仮想スイッチを経由しないので、仮想スイッチは、パケットの中継を制御できない。なお、仮想NICの一例として、SR-IOV(Single Root I/O Virtualization)におけるVirtual Function(VF)が挙げられる。
 これらの問題を解決するための技術が、特許文献1に開示されている。特許文献1に記載されたサーバは、仮想マシンと、仮想スイッチと、NICとを備える。そして、NICには、フローエントリが設定される。フローエントリとは、フローの識別情報(以下、キーと記す。)と、そのキーによって特定されるフローのパケットに対する動作とを規定した情報である。NICは、パケットのフローに合致するフローエントリが存在していれば、そのフローエントリで規定された動作(例えば、「そのパケットを、指定された仮想マシンに送る。」等)を実行する。また、NICは、パケットのフローに合致するフローエントリが存在していなければ、そのパケットを仮想スイッチに送り、仮想スイッチが、そのパケットを処理する(例えば、適切な仮想マシンに送る)。また、仮想スイッチが、NICへのフローエントリの設定を行う。例えば、仮想スイッチは、あるフローに対する負荷が閾値を超えた場合に、そのフローに対応するフローエントリをNICに設定する。また、例えば、仮想スイッチは、NICから所定のパケット(例えば、フローの最初のパケット)を受信した場合に、そのパケットのフローに対応するフローエントリをNICに設定する。
 また、近年、NFV(Network Functions Virtualization)が注目されることが多くなった。NFVは、種々の通信機器の機能をソフトウェアによって汎用ハードウェア上に実装する技術である。NFVには、機能の載せ替えが簡易であるという利点や、機能別に専用通信機器を設ける必要がないという利点がある。データセンタ内の汎用サーバや、通信ネットワーク上の汎用サーバを用いて、NFVが実現されることがある。
国際公開第WO2011/068091号
 NFVが適用された汎用サーバは、全く異なる種類の通信について、それぞれ処理を実行する。
 Webサーバへのアクセスやデータベースの読み書きのための通信等は、比較的、フローの生存時間が短い。また、大量のデータのバックアップのための通信等は、フローの生存時間が長い。前者の通信では、通信品質として通信の開始から完了までの時間が重要である。後者の通信では、通信品質としてスループットが重要である。
 また、前者の通信であっても、データセンタ内のサーバ同士の通信であるか、データセンタ内のサーバとデータセンタ外のサーバとの通信であるかによって、通信遅延の大きさが異なる。
 このように特性の異なる種々の通信に対して、汎用サーバが共通の処理を行うことは好ましくない。データセンタ内のサーバ同士の通信の場合には、通信の開始から完了までの時間を特に短く抑える必要がある。
 そこで、本発明は、生存時間の短いフローのパケットをNICから仮想マシンに高速に送ることができるサーバ、フロー制御方法、仮想スイッチ用プログラムおよびネットワークインタフェースカードを提供することを目的とする。
 本発明によるサーバは、仮想マシンと、仮想スイッチと、ネットワークインタフェースカードとを備え、仮想スイッチが、フローの生存時間が所定時間以下である短命フローを検出する検出手段と、短命フローに関連するパケットを仮想マシンに送ることを指示した指示情報をネットワークインタフェースカードに送る指示手段とを含むことを特徴とする。
 また、本発明によるネットワークインタフェースカードは、仮想マシンと仮想スイッチとを備えるサーバに設置されるネットワークインタフェースカードであって、フローの生存時間が所定時間以下である短命フローに関連するパケットを仮想マシンに送ることを指示した指示情報を、仮想スイッチから取得する取得手段と、指示情報に基づいてパケットを仮想マシンとの間で伝送する伝送手段とを備えることを特徴とする。
 また、本発明によるフロー制御方法は、仮想マシンと、仮想スイッチと、ネットワークインタフェースカードとを備えるサーバに適用されるフロー制御方法であって、仮想スイッチが、フローの生存時間が所定時間以下である短命フローを検出し、短命フローに関連するパケットを仮想マシンに送ることを指示した指示情報をネットワークインタフェースカードに送ることを特徴とする。
 また、本発明による仮想スイッチ用プログラムは、仮想マシンと、ネットワークインタフェースカードとを備えるコンピュータを仮想スイッチとして動作させる仮想スイッチ用プログラムであって、コンピュータに、フローの生存時間が所定時間以下である短命フローを検出する検出処理、および、短命フローに関連するパケットを仮想マシンに送ることを指示した指示情報をネットワークインタフェースカードに送る指示処理を実行させることを特徴とする。
 本発明によれば、生存時間の短いフローのパケットをNICから仮想マシンに高速に送ることができる。
本発明の第1の実施形態のサーバの例を示すブロック図である。 パケットバッファの例を示す模式図である。 仮想スイッチが仮想マシンからパケットを受け取った場合の処理経過の例を示すフローチャートである。 仮想スイッチがNICからパケットを受け取った場合の処理経過の例を示すフローチャートである。 パケットスイッチ機能からパケットを受け取るNICの処理経過の例を示すフローチャートである。 指示情報用バッファに残っている指示情報に基づいてNICにフローエントリを設定する処理経過の例を示すフローチャートである。 仮想スイッチ用プログラムの例を示す模式図である。 第2の実施形態に適用される、ワイルドカードを含むキーを含むフローエントリの例を示す模式図である。 第2の実施形態の仮想スイッチ用プログラムの例を示す模式図である。 第2の実施形態において仮想スイッチがパケットを受け取った場合の処理経過の例を示すフローチャートである。 仮想スイッチがNICに対してフローエントリの設定を指示する処理経過の例を示すフローチャートである。 本発明のサーバの概要を示すブロック図である。 本発明のネットワークインタフェースカードの概要を示すブロック図である。
 以下、本発明の実施形態を図面を参照して説明する。
実施形態1.
 図1は、本発明の第1の実施形態のサーバの例を示すブロック図である。サーバ1は、ネットワークインタフェースカード(以下、NICと記す。)2と、メモリ3と、演算装置4とを備える。
 NIC2は、サーバ1が外部からパケットを受信したり、外部にパケットを送信したりするためのインタフェースである。
 メモリ3は、仮想スイッチ用プログラム5と、仮想スイッチのデータ6と、種々の仮想マシン用プログラム7と、種々の仮想マシンの実行データ8と、Hypervisorプログラム9とを記憶する。メモリ3に記憶されたプログラムは、プログラム記録媒体に記憶されたプログラムを展開したものであってもよい。なお、個別の仮想マシンA、仮想マシンB等に対応する仮想マシン用プログラム7を、仮想マシンA用プログラム7、仮想マシンB用プログラム7と記す場合がある。同様に、個別の仮想マシンA、仮想マシンB等に対応する仮想マシンの実行データ8を、仮想マシンAの実行データ8、仮想マシンBの実行データ8と記す場合がある。
 演算装置4は、メモリ3に記憶されたプログラムに従って動作するCPU(Central Processing Unit )である。すなわち、例えば、演算装置4は、仮想マシンA用プログラム7に従い、仮想マシンAとして動作し、仮想マシンB用プログラム7に従い、仮想マシンBとして動作する。また、演算装置4は、仮想スイッチ用プログラム5に従い、仮想スイッチとして動作する。なお、Hypervisorプログラム9は、演算装置4によるプログラム7,5の実行を制御するためのプログラムである。
 以下、個々の仮想マシンA用プログラム7、仮想マシンB用プログラム7等に従って仮想マシンA,B等として動作する演算装置4を、仮想マシンA、仮想マシンB等と記す。また、仮想スイッチ用プログラム5に従って仮想スイッチとして動作する演算装置4を仮想スイッチと記す。
 NIC2は、受信フィルタ21と、送信フィルタ22とを備える。さらに、NIC2は、個々の仮想マシンおよび仮想スイッチに対応する受信キュー23および送信キュー24を備える。以下、仮想スイッチに対応する受信キュー23および送信キュー24については、受信キュー23a、送信キュー24aと記す。
 受信フィルタ21には、仮想スイッチによってフローエントリが設定されている。受信フィルタ21は、サーバ1の外部からパケットを受信したときに、そのパケットのフローに合致するフローエントリを検索し、検索に成功した場合、そのフローエントリに従って、そのフローエントリで規定された仮想マシンに対応する受信キュー23に格納する。受信フィルタ21は、検索に失敗した場合、外部から受信したパケットを、受信キュー23aに格納する。
 NIC2は、仮想マシンと、その仮想マシンに対応する受信キュー23、送信キュー24との間でパケットを直接伝送する機能(データ直接伝送機能26)を有する。この機能によって、仮想マシンに対応する受信キュー23に格納されたパケットは、その仮想マシンに直接伝送される。
 また、NIC2は、後述のパケットバッファ61へのパケットの書き込みや、パケットバッファ61からのパケットの読み込みを行うパケット転送手段27を備える。受信キュー23aは、受信フィルタ21によって格納されたパケットを仮想スイッチに送る。具体的には、受信キュー23aは、格納されたパケットをパケット転送手段27に送り、パケット転送手段27がそのパケットをパケットバッファ61(より具体的には、後述のNIC受信用バッファ612)に格納する。
 各送信キュー24には、対応する仮想マシンから送られたパケットが格納され、各送信キュー24は、格納済みのパケットを送信フィルタ22に送る。また、送信キュー24aは、仮想スイッチからのパケットを格納し、そのパケットを送信フィルタ22に送る。
 送信フィルタ22は、各送信キュー24,24aから受け取ったパケットをサーバ1の外部に送出する。なお、送信フィルタ22にもフローエントリが設定される場合があってもよい。送信フィルタ22には、例えば、送信フィルタ22に送られたパケットを再度受信キューに格納するためのフローエントリが設定される。
 また、NIC2は、登録指示検出手段25を備える。後述するように、仮想スイッチからNIC2に送られるパケットには、フローエントリの登録指示を含む指示情報が添付されている場合がある。登録指示検出手段25は、仮想スイッチからのパケットに指示情報が添付されている場合、その指示情報を受信フィルタ21や送信フィルタ22に送り、受信フィルタ21や送信フィルタ22にそれらの指示情報に基づいてフローエントリを設定させる。そして、登録指示検出手段25は、パケットから指示情報を取り除いて、パケットを送信キュー24aに送る。なお、登録指示検出手段25は、仮想スイッチからのパケットに指示情報が添付されていない場合、そのパケットをそのまま送信キュー24aに送る。なお、登録指示検出手段25には、パケット転送手段27がパケットバッファ61から読み込んだパケットが送られる。
 なお、受信フィルタ21や送信フィルタ22へのフローエントリの設定は、仮想スイッチからのパケットに添付された指示情報によってのみ行われるわけではない。仮想スイッチのNIC設定機能56によって受信フィルタ21や送信フィルタ22へのフローエントリの設定が行われる場合もある。
 仮想スイッチ用プログラム5は、パケットスイッチ機能51と、フロー識別機能52と、時間計測機能53と、登録対象判定機能54と、設定契機判定機能55と、NIC設定機能56とを有する。仮想スイッチ用プログラム5に従って仮想スイッチとして動作するのは演算装置4であるが、説明を分かりやすくするために、仮想スイッチ用プログラム5の各機能51~56等を動作の主体として記載する場合がある。
 また、仮想スイッチのデータ6は、パケットバッファ61に格納されるデータと、フローテーブル62と、閾値63とを含む。
 フローテーブル62は、仮想スイッチが使用するフローエントリの集合である。このフローエントリは、例えば、仮想スイッチを制御する制御装置(図示略)によってOpenFlowプロトコルに従って設定されていてもよい。
 閾値63は、時間計測機能53によって計測される時間(本実施形態では、RTT(Round Trip Time ))と比較される閾値である。
 図2は、パケットバッファ61の例を示す模式図である。パケットバッファ61は、NIC送信用バッファ611と、NIC受信用バッファ612と、種々の仮想マシン送信用バッファ613と、種々の仮想マシン受信用バッファ614と、指示情報用バッファ615とを含む。なお、指示情報用バッファ615は、パケットバッファ61とは別に設けられていてもよい。
 NIC送信用バッファ611は、NIC2に対して送るパケットを格納するバッファである。NIC送信用バッファ611に格納されたパケットは、パケット転送手段27によって読み込まれる。従って、仮想スイッチ(具体的には、パケットスイッチ機能51)は、NIC送信用バッファ611にパケットを格納するとともに、パケット転送手段27にNIC送信用バッファ611からそのパケットを読み込むことを指示することによって、NIC2にパケットを送る。
 NIC受信用バッファ612は、NIC2から受け取るパケットを格納するバッファである。NIC2の送信キュー24aがパケットをパケット転送手段27に送り、パケット転送手段27がそのパケットをNIC受信用バッファ612に格納することによって、仮想スイッチにパケットを送る。
 仮想マシン送信用バッファ613および仮想マシン受信用バッファ614は、それぞれ、個々の仮想マシンA,B,・・・に対応している。仮想マシン送信用バッファ613は、対応する仮想マシンに対して送るパケットを格納するバッファである。仮想マシン送信用バッファ613に格納されたパケットは、対応する仮想マシンが受け取る。従って、仮想スイッチ(具体的には、パケットスイッチ機能51)は、パケットの送り先となる仮想マシンに対応する仮想マシン送信用バッファ613にパケットを格納することによって、仮想マシンにパケットを送る。
 仮想マシン受信用バッファ614は、対応する仮想マシンから受け取るパケットを格納するバッファである。それぞれの仮想マシンは、対応する仮想マシン受信用バッファ614にパケットを格納することによって、仮想スイッチにパケットを送る。
 フロー識別機能52は、仮想マシン受信用バッファ614およびNIC受信用バッファ612にパケットが格納された場合(換言すれば、仮想マシンやNIC2からパケットを受信した場合)、そのパケットを読み取り、バッファから消去する。そして、フロー識別機能52は、そのパケットのフローに合致するフローエントリをフローテーブル62内から検索する。フロー識別機能52は、フローエントリの検索に成功した場合、読み取ったパケットをパケットスイッチ機能51に送るとともに、そのフローエントリで規定されている動作をパケットスイッチ機能51に伝える。例えば、仮想マシンAから受け取ったパケットのフローに合致するフローエントリを検索でき、そのフローエントリでパケットをNIC2に送る動作が規定されている場合には、フロー識別機能52は、読み取ったパケットをパケットスイッチ機能51に送るとともに、そのパケットをNIC2に送る旨をパケットスイッチ機能51に通知する。
 フロー識別機能52は、仮想マシン受信用バッファ614から読み取ったパケット(以下、仮想マシンから受け取ったパケットと記す。)のフローに合致するフローエントリの検索に失敗した場合、例えば、そのパケットを、仮想スイッチを制御する制御装置(図示略)に送り、その制御装置からそのパケットのフローに合致するフローエントリと、そのフローとは送信元および送信先が逆になっているフローに合致するフローエントリを受信する。フロー識別機能52と制御装置との間のプロトコルは、例えば、OpenFlowプロトコルであってもよい。フロー識別機能52は、制御装置から受け取ったフローエントリをフローテーブル62に追加する。また、フロー識別機能52は、仮想マシンから受け取ったパケットをパケットスイッチ機能51に送るとともに、そのパケットのフローに合致するフローエントリで規定されている動作をパケットスイッチ機能51に伝える。
 パケットスイッチ機能51は、フロー識別機能52からパケットを受け取るとともに、そのパケットに対する動作を通知されると、そのパケットに対して、通知された動作を実行する。
 また、フロー識別機能52が、仮想マシンから受け取ったパケットのフローに合致するフローエントリの検索に失敗し、制御装置からそのフローに対応するフローエントリを受信した場合、時間計測機能53は、その時点における現在時刻をそのフローエントリに書き込む。なお、前述のように、フローエントリの検索に失敗した場合、フロー識別機能52は、仮想マシンから受け取ったパケットのフローに合致するフローエントリ(以下、フローエントリPと記す。)だけでなく、そのフローとは送信元および送信先が逆になっているフローに合致するフローエントリ(以下、フローエントリQと記す。)も制御装置から受信する。時間計測機能53は、フローエントリPに、その時点における現在時刻を書き込む。
 また、時間計測機能53は、NIC受信用バッファ612から読み取ったパケット(以下、NIC2から受け取ったパケットと記す。)のフローに合致するフローエントリの検索に成功した場合、その時点における現在時刻の情報を取得する。そして、時間計測機能53は、そのフローとは送信元および送信先が逆になっているフローに合致するフローエントリに書き込まれている時刻と、現在時刻との差分を計算することによって、RTTを算出する。
 登録対象判定機能54は、時間計測機能53によって算出されたRTTと、閾値63とを比較し、RTTが閾値63以下であれば、NIC2から受け取ったパケットのフローを特定し(換言すれば、RTTが閾値以下であるフローを検出し)、そのフローに合致するフローエントリの登録を指示する指示情報を作成する。指示情報には、NIC2から受け取ったパケットのフローのキー、そのパケットの宛先となる仮想マシンにパケットを送ることを規定した情報、および、それらの情報からフローエントリを作成し、登録することを指示する情報が含まれる。登録対象判定機能54は、この指示情報を、指示情報用バッファ615に格納する。
 RTTが閾値以下であるフローは、フローの生存時間が所定時間以下である短命フローである可能性が高い。その理由は、対向装置(通信相手となる装置)との間で短時間に通信が開始された通信は、短命フローの可能性が高いためである。従って、登録対象判定機能54は、短命フローを検出しているということができる。
 また、パケットスイッチ機能51は、指示情報に含まれるフローのキーとは送信元および送信先が逆になっているフローに該当するパケットをフロー識別機能52から受け取った場合、そのパケットに指示情報を添付してNIC2に送る。パケットスイッチ機能51は、パケットに添付してNIC2に送った指示情報を、指示情報用バッファ615から消去する。
 上記のように、指示情報は所定のパケットに添付され、そのパケットとともにNIC2に送られる。しかし、そのような所定のパケットを仮想スイッチが仮想マシンから受け取らなければ、指示情報は指示情報用バッファ615に残った状態となる。設定契機判定機能55は、一定時間毎にフローエントリの設定契機になったと判定する。そして、NIC設定機能56は、設定契機判定機能55によってフローエントリの設定契機となったと判定されると、指示情報用バッファ615に存在している全ての指示情報を、受信フィルタ21や送信フィルタ22に送り、受信フィルタ21や送信フィルタ22にそれらの指示情報に基づいてフローエントリの設定を行わせる。NIC設定機能56は、例えば、メモリマップドIOによって指示情報をNIC2内の受信フィルタ21等に直接書き込む。
 なお、本発明では、指示情報に基づいて受信フィルタ21にフローエントリが設定されることが主であるが、送信フィルタ22にフローエントリが設定される場合があってもよい。
 次に、本実施形態の処理経過の例について説明する。図3は、仮想スイッチが仮想マシンからパケットを受け取った場合の処理経過の例を示すフローチャートである。ここでは、仮想マシンAが、仮想スイッチにパケットを送った場合(換言すれば、仮想マシンAに対応する仮想マシン受信用バッファ614にパケットが格納された場合)を例にして説明する。
 フロー識別機能52は、仮想マシンAに対応する仮想マシン受信用バッファ614からパケットを読み込むと、そのパケットのフローに合致するフローエントリをフローテーブル62の中から検索する(ステップS1)。
 そのパケットのフローに合致するフローエントリが存在しない場合(ステップS1のNo)、フロー識別機能52は、所定の手順に従ってそのパケットを処理する(ステップS2)。ステップS2では、フロー識別機能52は、例えば、以下の動作を行えばよい。ステップS2において、フロー識別機能52は、仮想マシンAから受け取ったパケットを、仮想スイッチを制御する制御装置(図示略)に送り、その制御装置からそのパケットのフローに合致するフローエントリPと、そのフローとは送信元および送信先が逆になっているフローに合致するフローエントリQとを受信する。そして、フロー識別機能52は、フローエントリP,Qをフローテーブル62に追加する。
 フロー識別機能52は、仮想マシンAから受け取ったパケットのフローに合致するフローエントリPを検索する(ステップS3)。フローエントリPが存在していれば(ステップS3のYes)、時間計測機能53は、その時点における現在時刻を取得し(ステップS4)、その現在時刻をフローエントリPに書き込む(ステップS5)。
 なお、ステップS2で、フロー識別機能52が制御装置からフローエントリPを取得できない場合もあり得る。その場合、ステップS3でフローエントリの検索に失敗する。その場合(ステップS3のNo)、フローエントリがなく、パケットに対する動作が規定されていないので、パケットは、例えば、破棄され、処理が終了する。
 また、ステップS3でフローエントリPの検索に成功した場合、フロー識別機能52は、仮想マシンAから受け取ったパケットをパケットスイッチ機能51に送るとともに、フローエントリPで規定されている動作をパケットスイッチ機能51に通知する。ここでは、パケットの送信先は他のサーバであり、フローエントリPにおいて外部にパケットを送信する動作が規定されているものとする。この場合、パケットスイッチ機能51は、そのパケットをNIC2に送る(ステップS9)。具体的には、パケットスイッチ機能51は、そのパケットをNIC送信用バッファ611に格納するとともに、パケット転送手段27にNIC送信用バッファ611からそのパケットを読み込むことを指示する。
 この結果、パケット転送手段27は、NIC送信用バッファ611からそのパケットを読み込み、登録指示検出手段25を介して、送信キュー24aに送る。なお、このパケットには指示情報が添付されてないので、登録指示検出手段25では、処理は行われない。送信フィルタ22は、送信キュー24aに格納されたパケットを外部に送信し、その結果、そのパケットは、送信先となる他のサーバに送られる。
 また、ステップS1において、仮想マシンAからのパケットのフローに合致するフローエントリPを検索できた場合(ステップS1のYes)、フロー識別機能52は、仮想マシンAから受け取ったパケットをパケットスイッチ機能51に送るとともに、フローエントリPで規定されている動作をパケットスイッチ機能51に通知する。前述のように、パケットの送信先は他のサーバであり、フローエントリPにおいて外部にパケットを送信する動作が規定されているものとする。
 また、ステップS1において、仮想マシンAからのパケットのフローに合致するフローエントリを検索できた場合(ステップS1のYes)、パケットスイッチ機能51は、そのフローとは送信元および送信先が逆になっているフローのキー、そのフローの宛先となる仮想マシンAにパケットを送ることを規定した情報、および、それらの情報からフローエントリを作成し、登録することを指示する情報とを含む指示情報の有無を検査する(ステップS6)。パケットスイッチ機能51は、指示情報用バッファ615に、その指示情報が格納されているか否かを検査すればよい。
 その指示情報があれば(ステップS7のYes)、パケットスイッチ機能51は、その指示情報をパケットに添付する(ステップS8)。そして、パケットスイッチ機能51は、フローエントリPで規定された動作に従い、そのパケットをNIC送信用バッファ611に格納するとともに、パケット転送手段27にNIC送信用バッファ611からそのパケットを読み込むことを指示する(ステップS9)。
 また、その指示情報がなければ(ステップS7のNo)、パケットスイッチ機能51は、ステップS8の処理を行わずに、フローエントリPで規定された動作に従い、そのパケットをNIC送信用バッファ611に格納するとともに、パケット転送手段27にNIC送信用バッファ611からそのパケットを読み込むことを指示する(ステップS9)。
 ステップS9の結果、パケット転送手段27は、NIC送信用バッファ611からそのパケットを読み込み、登録指示検出手段25を介して、送信キュー24aに送る。送信フィルタ22は、送信キュー24aに格納されたパケットを外部に送信し、その結果、そのパケットは、送信先となる他のサーバに送られる。パケットに指示情報が添付されている場合のNIC2の動作については、図5を参照して後述する。
 図4は、仮想スイッチがNIC2からパケットを受け取った場合の処理経過の例を示すフローチャートである。なお、NIC2の受信フィルタ21には、外部から受信したパケットのフローに対応するフローエントリがまだ設定されていないものとする。この場合、受信フィルタ21は、外部から受信したパケットを受信キュー23aに送り、パケット転送手段27がそのパケットをNIC受信用バッファ612に格納する。
 フロー識別機能52は、NIC受信用バッファ612からそのパケットを読み込むと、そのパケットのフローに合致するフローエントリをフローテーブル62の中から検索する(ステップS11)。
 ここでは、NIC2が外部から受信したパケットは、図3に示すフローチャートの説明で例示した、仮想マシンAが送信元であり他のサーバが送信先であるパケットに対する応答として、他のサーバが仮想マシンAを送信先として送ったパケットであるものとする。この場合、前述のステップS2(図3参照)において、仮想マシンAが送信元であり他のサーバが送信先であるフローに合致するフローエントリPと、そのフローとは送信元および送信先が逆になっているフロー(他のサーバが送信元であり仮想マシンAが送信先であるフロー)に合致するフローエントリQとが、フローテーブル62に追加されている。
 すると、フロー識別機能52は、パケットに合致するフローとしてフローエントリQの検索に成功する(ステップS11のYes)。すると、フロー識別機能52は、NIC2から受け取ったパケットをパケットスイッチ機能51に送るとともに、フローエントリQで規定されている動作をパケットスイッチ機能51に通知する。フローエントリQには、パケットを仮想マシンAに送る動作が規定されている。また、時間計測機能53は、その時点における現在時刻を取得する(ステップS12)。そして、時間計測機能53は、そのパケットのフローとは送信元および送信先が逆になっているフローに合致するフローエントリPに書き込まれた時刻を読み込む。この時刻は、前述のステップS4(図3参照)の時点の現在時刻であり、ステップS5でフローエントリPに書き込まれたものである。時間計測機能53は、ステップS12で取得した現在時刻と、フローエントリPから読み込んだ時刻との差分を計算することによって、RTTを算出する(ステップS13)。このRTTは、仮想マシンAが送信元であり他のサーバが送信先であるパケットを送信した時から、その応答となるパケットを受信した時までの時間である。
 次に、登録対象判定機能54は、ステップS13で算出されたRTTが閾値63以下であるか否かを判定する(ステップS14)。
 RTTが閾値63以下である場合(ステップS14のYes)、登録対象判定機能54は、NIC2から受け取ったパケットのフローを、短命フロー(フローの生存時間が所定時間以下であるフロー)として検出し、そのフローに合致するフローエントリの登録を指示する指示情報を作成する。このとき、登録対象判定機能54は、NIC2から受け取ったパケットのフローのキー、そのパケットの宛先となる仮想マシンAにパケットを送ることを規定した情報、および、それらの情報からフローエントリを作成し、登録することを指示する情報を含む指示情報を作成する(ステップS15)。登録対象判定機能54は、作成した指示情報を指示情報用バッファ615に格納する。
 また、登録対象判定機能54は、ステップS15において、NIC2から受け取ったパケットのフローとは送信元および送信先が逆になっているフロー(本例では、仮想マシンAを送信元とし他のサーバを宛先とするフロー)も、短命フローとして検出する。そして、登録対象判定機能54は、そのパケットを仮想マシン(本例では仮想マシンA)から直接NIC2に伝送させるための情報も作成する。以下、この情報を、「仮想マシンからのパケット伝送指示情報」と記す。仮想マシンからのパケット伝送指示情報については、後述する。
 ステップS15の後、あるいは、ステップS14においてRTTが閾値63より大きいと判定された場合(ステップS14のNo)、パケットスイッチ機能51は、フロー識別機能52から受け取ったパケットに対して、フロー識別機能52から通知された動作を実行する(ステップS16)。本例では、パケットスイッチ機能51は、そのパケットを仮想マシンAに送る(換言すれば、パケットを仮想マシンAに対応する仮想マシン送信用バッファ613に格納する)。
 上記の説明では、NIC2が外部から受信したパケットが、図3に示すフローチャートの説明で例示した、仮想マシンAが送信元であり他のサーバが送信先であるパケットに対する応答である場合を例にして説明した。NIC2が外部から受信したパケットがその他のパケットである場合にも、そのパケットのフローに合致するフローエントリが存在する場合には(ステップS11のYes)、上記のステップS12以降の処理を行えばよい。また、そのパケットのフローに合致するフローエントリが存在しない場合(ステップS12のNo)、所定の手順に従ってそのパケットを処理する(ステップS17)。ステップS17では、フロー識別機能52は、例えば、以下の動作を行えばよい。ステップS17において、フロー識別機能52は、NIC2から受け取ったパケットを、仮想スイッチを制御する制御装置(図示略)に送り、その制御装置からそのパケットのフローに合致するフローエントリを取得する。このフローエントリには、宛先となる仮想マシンにパケットを送る動作が規定されている。フロー識別機能52は、そのパケットを、パケットスイッチ機能51に送るとともに、そのフローエントリで規定されている動作をパケットスイッチ機能51に通知する。パケットスイッチ機能51は、その通知に従い、指定された仮想マシンにパケットを送る(ステップS16)。なお、フロー識別機能52は、取得したフローエントリをフローテーブル62に追加する。
 以上の処理において、ステップS15が実行された場合、新たに作成された指示情報が指示情報用バッファ615に格納される。そして、例えば、仮想マシンAが再度、同じサーバを送信先とするパケットを仮想スイッチに送り、前述のステップS1,S6,S7,S8の順に処理が行われる場合、パケットスイッチ機能51は、上記のステップS15で作成された指示情報(本例では、そのサーバを送信元とし仮想マシンAを送信先とするフローのキー、仮想マシンAにパケットを送ることを規定した情報、および、それらの情報からフローエントリを作成し、登録することを指示する情報を含む指示情報)をパケットに添付する。そして、パケットスイッチ機能51は、そのパケットをNIC2に送る。すなわち、パケットスイッチ機能51は、そのパケットをNIC送信用バッファ611に格納するとともに、パケット転送手段27にNIC送信用バッファ611からそのパケットを読み込むことを指示する。
 図5は、パケットスイッチ機能51からパケットを受け取るNIC2の処理経過の例を示すフローチャートである。パケット転送手段27は、パケットスイッチ機能51からの指示に従い、NIC送信用バッファ611からパケットを読み込み、そのパケットを登録指示検出手段25に送る(ステップS21)。
 登録指示検出手段25は、パケットに指示情報が添付されているか否かを判定する(ステップS22)。指示情報が添付されている場合(ステップS22のYes)、登録指示検出手段25は、その指示情報(本例では、所定のサーバを送信元とし仮想マシンAを送信先とするフローのキー、仮想マシンAにパケットを送ることを規定した情報、および、それらの情報からフローエントリを作成し、登録することを指示する情報を含む指示情報)を受信フィルタ21に送り、受信フィルタ21は、その指示情報に従って、指示情報内のキーと、仮想マシンAにパケットを送ることを規定した情報とを対応付けたフローエントリを登録する(ステップS23)。また、登録指示検出手段25は、パケットからその指示情報を取り除く。
 次に、登録指示検出手段25は、送信キュー24aにパケットを送る(ステップS24)。そして、送信フィルタ22は、そのパケットを外部に送出する(ステップS25)。
 また、ステップS15の後、仮想マシンAが再度、同じサーバを送信先とするパケットを仮想スイッチに送らなかった場合には、前述のステップS1,S6,S7,S8,S9の処理は実行されず、ステップS15で作成された指示情報は、指示情報用バッファ615に残ることになる。図6は、指示情報用バッファ615に残っている指示情報に基づいてNIC2にフローエントリを設定する処理経過の例を示すフローチャートである。本例でも、所定のサーバを送信元とし仮想マシンAを送信先とするフローのキー、仮想マシンAにパケットを送ることを規定した情報、および、それらの情報からフローエントリを作成し、登録することを指示する情報を含む指示情報を例にして説明する。そして、説明を簡単にするため、この指示情報のみが指示情報用バッファ615に残っている場合を例にして説明する。
 設定契機判定機能55は、前回のフローエントリの設定契機から一定時間が経過したか否かを判定する(ステップS31)。一定時間が経過していない場合(ステップS31のNo)、前回のフローエントリの設定契機から一定時間が経過するまで待機する。
 前回のフローエントリの設定契機から一定時間が経過した場合(ステップS31のYes)、設定契機判定機能55は、フローエントリの設定契機になったと判定する(ステップS32)。
 すると、NIC設定機能56は、上記の指示情報を指示情報用バッファ615から読み込み、その指示情報を受信フィルタ21に送り、受信フィルタ21は、その指示情報に従って、指示情報内のキーと、仮想マシンAにパケットを送ることを規定した情報とを対応付けたフローエントリを登録する(ステップS33)。NIC設定機能56は、例えば、メモリマップドIOによって指示情報を受信フィルタ21に直接書き込む。
 なお、ステップS33において、NIC設定機能56は、読み込んだ指示情報を指示情報用バッファ615から消去する。また、指示情報用バッファ615に複数の指示情報が存在する場合、NIC設定機能56は、指示情報毎にステップS33を実行する。
 全ての指示情報についてステップS33の処理が完了した場合、ステップS31に移行する。
 ステップS23またはステップS33でフローエントリが設定された結果、本例では、所定のサーバを送信元とし仮想マシンAを送信先とするフローのパケットを受信フィルタ21が受信した場合、受信フィルタ21は、そのフローエントリの検索に成功し、そのパケットを仮想マシンAに対応する受信キュー23に格納する。その結果、そのパケットは、仮想スイッチを経由せずに、NIC2から仮想マシンAに直接伝送される。従って、短命フローのパケットをNIC2から仮想マシンに高速に送ることができる。
 メモリマップドIO等によるNIC2への指示情報の書き込みは、パケット毎に行うとオーバーヘッドが大きくなる。よって、パケットスイッチ機能51がパケットに指示情報を添付して、そのパケットをNIC2に送ることが好ましい。ただし、指示情報を添付すべきパケットが仮想マシンから送られてこなければ、この方法で指示情報をNIC2に送ることができない。そこで、ステップS31~S33の処理を実行することによって、指示情報を漏れなくNIC2に送ることができる。
 本実施形態では、パケットスイッチ機能51およびNIC設定機能56を実現する部分が、NIC2に対して指示を送る指示手段であるということができる。
 また、仮想マシンからNIC2に対しても、直接パケットを送信できるようにすることが好ましい。この場合の動作の例を説明する。この場合、例えば、仮想スイッチ用プログラム5は、図7に示すように、仮想マシンフローエントリ設定機能57を含む。仮想マシンフローエントリ設定機能57は、仮想マシンにフローエントリを設定させる。
 例えば、登録対象判定機能54が、仮想マシンAを送信元とし所定のサーバを宛先とするフローを短命フローとして検出したとする。すると、登録対象判定機能54は、その短命フローのキーと、仮想マシンAに対応する送信キューにパケットを送る動作を規定したフローエントリを、仮想マシンからのパケット伝送指示情報として作成する。仮想マシンフローエントリ設定機能57は、そのフローエントリを仮想マシンAに設定する。すると、仮想マシンAは、その短命フローのパケットに関しては、フローエントリに規定された指示に従って、仮想マシンAに対応する送信キューに送る。送信フィルタ22は、そのパケットを外部に出力し、そのパケットは所定のサーバに到達する。この場合、仮想マシンAは、仮想スイッチを経由せずに、NIC2に直接、パケットを送信するので、短命フローのパケットを仮想マシンからNIC2に高速に送ることができる。ここでは、仮想マシンAを例にして説明したが、他の仮想マシンに関しても同様である。
 また、上記の動作は、一例であり、他の方法によって、仮想マシンが短命フローのパケットをNIC2に直接送る動作を実現させてもよい。
実施形態2.
 第2の実施形態では、フローテーブル62(図1参照)に含まれるフローエントリは、フローのキーとして、ワイルドカードを含むキーを許容する。図8は、第2の実施形態に適用される、ワイルドカードを含むキーを含むフローエントリの例を示す模式図である。以下、このようなフローエントリを、ワイルドカードフローエントリと記す。また、ワイルドカードを含むキーに合致するフローをワイルドカードフローと記す。図8に示すように、ワイルドカードフローエントリは、ワイルドカードを含むキーと、アクション(キーに合致するフローのパケットに対する動作)と、統計情報と、アクティブフローの情報とを含む。
 アクティブフローは、生存しているフロー(換言すれば、通信が現時点で継続していると判断すべきフロー)であり、アクティブフローのキーは、ワイルドカードを用いずに記述される。また、アクティブフローの情報には、キー、アクティブフローの生成時刻、およびアクティブフローのパケットの最終処理時刻が含まれる。また、図8に示すように、1つのワイルドカードフローエントリには、複数のアクティブフローの情報が含まれていてよい。以下、個々のアクティブフローの情報をアクティブフローエントリと記す。
 また、個々のワイルドカードフローエントリは、そのワイルドカードフローのキーに該当し、過去に存在していた各アクティブフローの生存時間の統計値を、統計情報として含む。本実施形態では、統計値として平均値を用いる場合を例にして説明するが、統計値は、平均値に限られない。例えば、統計値として、中央値や最頻値、最大値等を用いてもよい。また、統計値として、それらの複数種類の値の組み合わせに基づく値を用いてもよい。
 図9は、第2の実施形態の仮想スイッチ用プログラムの例を示す模式図である。第2の実施形態の仮想スイッチ用プログラム5は、第1の実施形態における時間計測機能53に代えて、ワイルドカードフロー管理機能70を含む。ワイルドカードフロー管理機能70は、ワイルドカードフローエントリを管理する。
 ワイルドカードフロー管理機能70は、現在時刻取得機能71と、アクティブフロー監視機能72と、統計値管理機能73とを含む。
 現在時刻取得機能71は、現在時刻を取得する。
 アクティブフロー監視機能72は、ワイルドカードフローエントリにアクティブフローエントリを追加したり、削除したり、最終処理時刻を更新したり、アクティブフローが消滅したか否かを判定したりする。
 統計値管理機能73は、ワイルドカードフローエントリの統計情報(そのワイルドカードフローエントリに過去に存在していた各アクティブフローの生存時間の平均値)を更新する。
 なお、本発明における閾値63は、ワイルドカードフローエントリの統計情報と比較される閾値である。
 登録対象判定機能54は、ワイルドカードフローエントリの統計情報の値が閾値63以下である場合、そのワイルドカードフローを短命フローとして検出し、そのフローに合致するフローエントリの登録を指示する指示情報を作成する。
 NIC2、仮想マシン用プログラム7、仮想マシンの実行データ8、Hypervisorプログラム9、演算装置4、パケットバッファ61は、第1の実施形態におけるそれらの要素と同様であり、説明を省略する。
 図10は、第2の実施形態において仮想スイッチがパケットを受け取った場合の処理経過の例を示すフローチャートである。なお、本実施形態では、仮想スイッチが仮想マシンからパケットを受け取った場合でも、NIC2からパケットを受け取った場合でも、仮想スイッチの処理経過は同様である。
 フロー識別機能52は、仮想マシンまたはNIC2からパケットを受け取ると、そのパケットに合致するワイルドカードフローエントリを、フローテーブル62の中から検索する(ステップS41)。
 パケットに合致するワイルドカードフローエントリを検索できた場合(ステップS41のYes)、フロー識別機能52は、受け取ったパケットをパケットスイッチ機能51に送るとともに、そのワイルドカードフローエントリのアクションをパケットスイッチ機能51に通知する。
 さらに、パケットに合致するワイルドカードフローエントリがある場合(ステップS41のYes)、アクティブフロー監視機能72は、そのパケットに合致するアクティブフローエントリがそのワイルドカードフローエントリ内にあるか否かを判定する(ステップS42)。既に説明したように、アクティブフローのキーは、ワイルドカードを用いずに記述される。アクティブフロー監視機能72は、ワイルドカードフローエントリ内に記述された各アクティブフローのキーとパケットとを比較して、パケットに合致するアクティブフローエントリの有無を判定すればよい。
 パケットに合致するアクティブフローエントリがワイルドカードフローエントリ内にある場合(ステップS42のYes)、現在時刻取得機能71は、その時点における現在時刻を取得する(ステップS43)。そして、アクティブフロー監視機能72は、パケットに合致するアクティブフローエントリ内の最終処理時刻を、その現在時刻で更新する(ステップS44)。
 次に、パケットスイッチ機能51は、フロー識別機能52から受け取ったパケットに対し、アクションで定められている動作を実行することによって、パケットを送る(ステップS45)。例えば、アクションで、仮想マシンAにパケットを送ることが規定されている場合、パケットスイッチ機能51は、仮想マシンAに対応する仮想マシン送信用バッファ613にパケットを格納する。また、例えば、アクションで外部にパケットを送出することが規定されている場合、パケットスイッチ機能51は、NIC送信用バッファ611にパケットを格納するとともに、パケット転送手段27にNIC送信用バッファ611からそのパケットを読み込むことを指示する。
 また、ステップS42において、パケットに合致するアクティブフローエントリがワイルドカードフローエントリ内にない場合(ステップS42のNo)、アクティブフロー監視機能72は、そのパケットに合致するアクティブフローエントリを、ステップS41で検索されたワイルドカードフローエントリ内に追加する(ステップS46)。ただし、ステップS46では、アクティブフロー監視機能72は、アクティブフローのキーをパケットに基づいて特定し、そのキーの情報をワイルドカードフローエントリ内に追加すればよく、そのキーに対応する生成時刻および最終処理時刻は、ステップS46では特定されなくてよい。
 次に、現在時刻取得機能71は、その時点における現在時刻を取得する(ステップS47)。そして、アクティブフロー監視機能72は、その現在時刻の情報を、アクティブフローの生成時刻の情報として、ステップS46で追加されたアクティブフローエントリに加える(ステップS48)。
 次に、パケットスイッチ機能51は、フロー識別機能52から受け取ったパケットに対し、アクションで定められている動作を実行することによって、パケットを送る(ステップS45)。
 また、ステップS41で、パケットに合致するワイルドカードフローエントリが存在しなかった場合(ステップS41のNo)、フロー識別機能52は、所定の手順に従ってそのパケットを処理する(ステップS49)。ステップS49では、フロー識別機能52は、例えば、以下の動作を行えばよい。ステップS49において、フロー識別機能52は、仮想マシンまたはNIC2から受け取ったパケットを、仮想スイッチを制御する制御装置(図示略)に送り、その制御装置からそのパケットのフローに合致するワイルドカードフローエントリを受信する。このワイルドカードフローエントリは、初期状態であるので、統計情報やアクティブフローエントリは含まれてない。ただし、ワイルドカードフローのキーおよびアクションは含まれている。フロー識別機能52は、そのワイルドカードフローエントリをフローテーブル62に追加する。
 フロー識別機能52は、仮想マシンまたはNIC2から受け取ったパケットに合致するワイルドカードフローエントリを再度検索する(ステップS50)。ワイルドカードフローエントリの検索に成功した場合(ステップS50のYes)、フロー識別機能52は、そのパケットをパケットスイッチ機能51に送るとともに、そのワイルドカードフローエントリ内のアクションをパケットスイッチ機能51に通知する。
 そして、アクティブフロー監視機能72は、そのパケットに合致するアクティブフローエントリを、ステップS50で検索されたワイルドカードフローエントリ内に追加する(ステップS51)。ただし、ステップS51では、アクティブフロー監視機能72は、アクティブフローのキーをパケットに基づいて特定し、そのキーの情報をワイルドカードフローエントリ内に追加すればよい。
 次に、現在時刻取得機能71は、その時点における現在時刻を取得する(ステップS52)。そして、アクティブフロー監視機能72は、その現在時刻の情報を、アクティブフローの生成時刻の情報として、ステップS52で追加されたアクティブフローエントリに加える(ステップS53)。
 ステップS51~S53の処理は、ステップS46~S48の処理と同様である。
 ステップS53の後、パケットスイッチ機能51は、フロー識別機能52から受け取ったパケットに対し、アクションで定められている動作を実行することによって、パケットを送る(ステップS45)。
 なお、ステップS49で、フロー識別機能52が制御装置からワイルドカードフローエントリを取得できない場合もあり得る。その場合、ステップS50でフローエントリの検索に失敗する。その場合(ステップS50のNo)、ワイルドカードフローエントリがなく、アクションが規定されていないので、パケットは、例えば、破棄され、処理が終了する。
 図11は、仮想スイッチがNIC2に対してフローエントリの設定を指示する処理経過の例を示すフローチャートである。
 設定契機判定機能55は、前回のフローエントリの設定契機から一定時間が経過するのを待ち、一定時間経過したときに、フローエントリの設定契機になったと判定する(ステップS61)。
 図11では、説明を簡単にするため、1つのアクティブフローエントリ(eとする。)に関して、ステップS62以降の動作を示しているが、フローエントリの設定契機になった場合、仮想スイッチは、フローテーブル62内のアクティブフローエントリ毎にステップS62以降の動作を行う。以下、アクティブフローエントリeを例にして、ステップS62以降の処理を説明する。
 アクティブフロー監視機能72は、アクティブフローエントリe内の最終処理時刻を取得する(ステップS62)。この最終処理時刻を符号t1で表す。
 次に、現在時刻取得機能71は、その時点における現在時刻を取得する(ステップS63)。この現在時刻を符号t2で表す。
 次に、アクティブフロー監視機能72は、アクティブフローエントリeに対応するアクティブフローの通信が行われていない時間(無通信時間)を計算する(ステップS64)。無通信時間は、最終処理時刻t1から現在時刻t2までの時間である。従って、無通信時間をt3とすると、アクティブフロー監視機能72は、t3=t2-t1の計算によって、無通信時間t3を求める。
 アクティブフロー監視機能72は、無通信時間t3が、予め定められた閾値以上であるか否かを判定する(ステップS65)。無通信時間t3が閾値未満であるということは、着目しているアクティブフローエントリeに対応するアクティブフローが生存していることを意味する。一方、無通信時間t3が閾値以上であるということは、そのアクティブフローが消滅したことを意味する。すなわち、ステップS65は、アクティブフローが生存しているか消滅しているかを判定する処理である。なお、ステップS65で用いられる閾値は、統計情報と比較される閾値63とは別に定められている。
 無通信時間t3が閾値未満である場合(ステップS65のNo)、アクティブフローエントリeに対する処理を終了する。
 無通信時間t3が閾値以上である場合(ステップS65のYes)、統計値管理機能73は、アクティブフローエントリe内の生成時刻を読み込む(ステップS66)。この生成時刻を符号t0で表す。
 次に、統計値管理機能73は、アクティブフローエントリeに対応するアクティブフローの生存時間を計算する(ステップS67)。生成時刻t0から現在時刻t2までの時間を、生存時間とみなすことができる。従って、アクティブフローの生存時間をt4とすると、統計値管理機能73は、t4=t2-t0を計算することによって、アクティブフローの生存時間を求める。
 次に、統計値管理機能73は、着目しているアクティブフローエントリeを含むワイルドカードフローエントリ(wとする。)を取得する(ステップS68)。統計値管理機能73は、そのワイルドカードフローエントリwに含まれるアクティブフローエントリeを削除する(ステップS69)。
 続いて、統計値管理機能73は、アクティブフローエントリeに対応するアクティブフローの生存時間t4を用いて、ワイルドカードフローエントリwの統計情報(ワイルドカードフローエントリwのキーに該当し、過去に存在していた各アクティブフローの生存時間の平均値)を再計算し、その平均値で、ワイルドカードフローエントリwの統計情報を更新する(ステップS70)。この生存時間の平均値を符号t5で表す。
 登録対象判定機能54は、生存時間の平均値t5と、閾値63とを比較し、t5が閾値63以下であるか否かを判定する(ステップS71)。
 t5が閾値63より大きい場合(ステップS71のNo)、アクティブフローエントリeに対する処理を終了する。
 t5が閾値63以下である場合(ステップS71のYes)、登録対象判定機能54は、ワイルドカードフローエントリwのキー(ワイルドカードを含むキー)に該当するフローを、短命フローとして特定する。そして、フローに合致するフローエントリの登録を指示する指示情報を作成する。NIC設定機能56は、その指示情報を、受信フィルタ21に送り、受信フィルタ21は、その指示情報に基づいてフローエントリを設定する(ステップS72)。
 既に説明したように、仮想スイッチは、上記のステップS62以降の処理をアクティブフローエントリ毎に行う。アクティブフローエントリ毎にステップS62以降の処理を完了した場合、ステップS61に移行する。ただし、ステップ72において、NIC設定機能56が指示情報を受信フィルタ21に送る動作は、アクティブフローの生存時間の平均値t5が閾値63以下となっている各ワイルドカードフローエントリに対応する各ワイルドカードフローに関してまとめて行う。
 ステップS72において、ワイルドカードフローエントリwのアクションが、例えば、特定の仮想マシンにパケットを送ることを規定している場合に、登録対象判定機能54は、指示情報を作成してもよい。このとき、登録対象判定機能54は、ワイルドカードフローエントリwのキーと、そのアクションを含む指示情報を作成すればよい。その結果、そのキー(ワイルドカードを含むキー)とそのアクションとを対応付けたフローエントリが受信フィルタ21に保持される。そして、そのキーに合致するパケットを受信フィルタ21が受信した場合、受信フィルタ21は、そのアクションに従って、特定の仮想マシンに対応する受信キューにそのパケットを格納する。そのパケットは、NIC2からその仮想マシンに直接伝送される。従って、短命フローのパケットをNIC2から仮想マシンに高速に送ることができる。
 また、ステップS72において、ワイルドカードフローエントリwのアクションが、例えば、外部にパケットを送出することを規定している場合、登録対象判定機能54は、ワイルドカードフローエントリwから、短命フローの送信元となる仮想マシンを特定し、仮想マシンからのパケット伝送指示情報を作成する。具体的には、ワイルドカードフローエントリwのキーと、仮想マシンに対応する送信キューにパケットを送る動作を規定したフローエントリを作成する。仮想マシンフローエントリ設定機能57(図9において図示略。図7参照。)は、そのフローエントリを仮想マシンに設定する。そのフローエントリが設定された仮想マシンは、短命フローのパケットに関しては、そのフローエントリに従って、直接、送信キュー(すなわち、NIC2)に送信する。よって、短命フローのパケットを仮想マシンからNIC2に高速に送ることができる。ただし、仮想マシンが短命フローのパケットをNIC2に直接送る動作は、別の方法で実現されてもよい。
 上記の第2の実施形態の例では、一定時間毎にステップS61以降の処理を行い、ステップS72において、NIC設定機能56が指示情報を受信フィルタ21に送る。ただし、第1の実施形態と同様に、パケットスイッチ機能51が、パケットに指示情報を添付してそのパケットをNIC2に送ってもよい。すなわち、アクティブフローの生存時間の平均値t5が閾値63以下となっているワイルドカードフローエントリwの指示情報が作成されてからNIC設定機能56がその指示情報をNIC2に送るまでの間に、そのワイルドカードフローエントリwに対応するパケットを仮想マシンから受信したときには、パケットスイッチ機能51が、そのパケットに指示情報を添付してNIC2に送ってもよい。
 次に、本発明の概要について説明する。図12は、本発明のサーバの概要を示すブロック図である。本発明のサーバ90(例えば、サーバ1)は、仮想マシン91(例えば、仮想マシンとして動作する演算装置4)と、仮想スイッチ92(例えば、仮想スイッチとして動作する演算装置4)と、ネットワークインタフェースカード93(例えば、NIC2)とを備える。仮想スイッチ92は、検出手段94と、指示手段95とを含む。
 検出手段94(例えば、登録対象判定機能54を実現する演算装置4)は、フローの生存時間が所定時間以下である短命フローを検出する。
 指示手段95(例えば、パケットスイッチ機能51およびNIC設定機能56を実現する演算装置4)は、短命フローに関連するパケットを仮想マシン91に送ることを指示した指示情報をネットワークインタフェースカード93に送る。
 そのような構成により、生存時間の短いフローのパケットをネットワークインタフェースカードから仮想マシンに高速に送ることができる。
 検出手段94が、仮想マシン91を送信元とするフローのパケット送信時刻(例えば、ステップS4で取得される時刻)と、そのフローとは送信元および送信先が逆になっているフローのパケットを受信したときの時刻(例えば、ステップS12で取得される時刻)との差(例えば、RTT)が閾値以下であるときに、仮想マシン91を送信元とするフローおよび当該フローとは送信元および送信先が逆になっているフローを短命フローとして検出し、指示手段95が、仮想マシン91を送信元とするフローとは送信元および送信先が逆になっているフローに該当するパケットを仮想マシン91に送ることを指示した指示情報をネットワークインタフェースカード93に送る構成であってもよい。
 指示手段95が、仮想マシン91を送信元とする短命フローに該当するパケットを仮想マシン91から受け取ったときに、指示情報をそのパケットに添付し、そのパケットをネットワークインタフェースカード93に送るパケット送出手段(例えば、パケットスイッチ機能51を実現する演算装置4)を含む構成であってもよい。
 指示手段95が、仮想マシン91を送信元とする短命フローに該当するパケットを仮想マシン91から受け取っていないことに起因して、ネットワークインタフェースカード93に送られていない状態になっている指示情報を、一定時間毎にネットワークインタフェースカード93に送る指示情報送出手段(例えば、NIC設定機能56を実現する演算装置4)を含む構成であってもよい。
 検出手段94が、ワイルドカードを含むフロー識別情報に合致する、過去に生存していた個々のフローの生存時間の統計値が閾値以下であるときに、そのフロー識別情報に合致する各フローを短命フローとして検出し、指示手段95が、そのフロー識別情報に合致する各フローに該当するパケットを仮想マシン91に送ることを指示した指示情報をネットワークインタフェースカード93に送る構成であってもよい。
 検出手段94が、一定時間毎に短命フローの有無を判定し、指示手段95が、短命フローが検出されたときに、指示情報をネットワークインタフェースカード93に送る指示情報送出手段(例えば、NIC設定機能56を実現する演算装置4)を含む構成であってもよい。
 図13は、本発明のネットワークインタフェースカードの概要を示すブロック図である。本発明のネットワークインタフェースカード93は、仮想マシンと仮想スイッチとを備えるサーバに設置される。そして、ネットワークインタフェースカード93は、取得手段96と、伝送手段97とを備える。
 取得手段96(例えば、受信フィルタ21および送信フィルタ22)は、フローの生存時間が所定時間以下である短命フローに関連するパケットを仮想マシンに送ることを指示した指示情報を、仮想スイッチから取得する。
 伝送手段97(例えば、受信キュー23)は、指示情報に基づいてパケットを仮想マシンとの間で伝送する。
 以上、実施形態を参照して本願発明を説明したが、本願発明は上記の実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
 この出願は、2014年10月10日に出願された日本特許出願2014-208533を基礎とする優先権を主張し、その開示の全てをここに取り込む。
産業上の利用の可能性
 本発明は、仮想マシンと仮想スイッチとネットワークインタフェースカードとを含むサーバに好適に適用される。
 1 サーバ
 2 NIC(ネットワークインタフェースカード)
 3 メモリ
 4 演算装置
 5 仮想スイッチ用プログラム
 7 仮想マシン用プログラム(仮想マシンA用プログラム、仮想マシンB用プログラム)
 21 受信フィルタ
 22 送信フィルタ
 23,23a 受信キュー
 24,24a 送信キュー
 25 登録指示検出手段
 26 データ直接伝送機能
 27 パケット転送手段
 51 パケットスイッチ機能
 52 フロー識別機能
 53 時間計測機能
 54 登録対象判定機能
 55 設定契機判定機能
 56 NIC設定機能
 61 パケットバッファ
 70 ワイルドカードフロー管理機能
 71 現在時刻取得機能
 72 アクティブフロー監視機能
 73 統計値管理機能

Claims (13)

  1.  仮想マシンと、
     仮想スイッチと、
     ネットワークインタフェースカードとを備え、
     仮想スイッチは、フローの生存時間が所定時間以下である短命フローを検出する検出手段と、
     前記短命フローに関連するパケットを仮想マシンに送ることを指示した指示情報を前記ネットワークインタフェースカードに送る指示手段とを含む
     ことを特徴とするサーバ。
  2.  検出手段は、仮想マシンを送信元とするフローのパケット送信時刻と、前記フローとは送信元および送信先が逆になっているフローのパケットを受信したときの時刻との差が閾値以下であるときに、前記仮想マシンを送信元とするフローおよび当該フローとは送信元および送信先が逆になっているフローを短命フローとして検出し、
     指示手段は、前記仮想マシンを送信元とするフローとは送信元および送信先が逆になっているフローに該当するパケットを前記仮想マシンに送ることを指示した指示情報をネットワークインタフェースカードに送る
     請求項1に記載のサーバ。
  3.  指示手段は、仮想マシンを送信元とする短命フローに該当するパケットを前記仮想マシンから受け取ったときに、指示情報を前記パケットに添付し、前記パケットをネットワークインタフェースカードに送るパケット送出手段を含む
     請求項2に記載のサーバ。
  4.  指示手段は、仮想マシンを送信元とする短命フローに該当するパケットを前記仮想マシンから受け取っていないことに起因して、ネットワークインタフェースカードに送られていない状態になっている指示情報を、一定時間毎に前記ネットワークインタフェースカードに送る指示情報送出手段を含む
     請求項3に記載のサーバ。
  5.  検出手段は、ワイルドカードを含むフロー識別情報に合致する、過去に生存していた個々のフローの生存時間の統計値が閾値以下であるときに、前記フロー識別情報に合致する各フローを短命フローとして検出し、
     指示手段は、前記フロー識別情報に合致する各フローに該当するパケットを仮想マシンに送ることを指示した指示情報をネットワークインタフェースカードに送る
     請求項1に記載のサーバ。
  6.  検出手段は、一定時間毎に短命フローの有無を判定し、
     指示手段は、短命フローが検出されたときに、指示情報をネットワークインタフェースカードに送る指示情報送出手段を含む
     請求項5に記載のサーバ。
  7.  仮想マシンと仮想スイッチとを備えるサーバに設置されるネットワークインタフェースカードであって、
     フローの生存時間が所定時間以下である短命フローに関連するパケットを前記仮想マシンに送ることを指示した指示情報を、前記仮想スイッチから取得する取得手段と、
     前記指示情報に基づいて前記パケットを前記仮想マシンとの間で伝送する伝送手段とを
     備えることを特徴とするネットワークインタフェースカード。
  8.  仮想マシンと、仮想スイッチと、ネットワークインタフェースカードとを備えるサーバに適用されるフロー制御方法であって、
     仮想スイッチが、
     フローの生存時間が所定時間以下である短命フローを検出し、
     前記短命フローに関連するパケットを仮想マシンに送ることを指示した指示情報を前記ネットワークインタフェースカードに送る
     ことを特徴とするフロー制御方法。
  9.  仮想スイッチが、
     仮想マシンを送信元とするフローのパケット送信時刻と、前記フローとは送信元および送信先が逆になっているフローのパケットを受信したときの時刻との差が閾値以下であるときに、前記仮想マシンを送信元とするフローおよび当該フローとは送信元および送信先が逆になっているフローを短命フローとして検出し、
     前記仮想マシンを送信元とするフローとは送信元および送信先が逆になっているフローに該当するパケットを前記仮想マシンに送ることを指示した指示情報をネットワークインタフェースカードに送る
     請求項8に記載のフロー制御方法。
  10.  仮想スイッチが、
     ワイルドカードを含むフロー識別情報に合致する、過去に生存していた個々のフローの生存時間の統計値が閾値以下であるときに、前記フロー識別情報に合致する各フローを短命フローとして検出し、
     前記フロー識別情報に合致する各フローに該当するパケットを仮想マシンに送ることを指示した指示情報をネットワークインタフェースカードに送る
     請求項8に記載のフロー制御方法。
  11.  仮想マシンと、ネットワークインタフェースカードとを備えるコンピュータを仮想スイッチとして動作させる仮想スイッチ用プログラムであって、
     前記コンピュータに、
     フローの生存時間が所定時間以下である短命フローを検出する検出処理、および、
     前記短命フローに関連するパケットを仮想マシンに送ることを指示した指示情報を前記ネットワークインタフェースカードに送る指示処理
     を実行させるための仮想スイッチ用プログラム。
  12.  コンピュータに、
     検出処理で、仮想マシンを送信元とするフローのパケット送信時刻と、前記フローとは送信元および送信先が逆になっているフローのパケットを受信したときの時刻との差が閾値以下であるときに、前記仮想マシンを送信元とするフローおよび当該フローとは送信元および送信先が逆になっているフローを短命フローとして検出させ、
     指示処理で、前記仮想マシンを送信元とするフローとは送信元および送信先が逆になっているフローに該当するパケットを前記仮想マシンに送ることを指示した指示情報をネットワークインタフェースカードに送らせる
     請求項11に記載の仮想スイッチ用プログラム。
  13.  コンピュータに、
     検出処理で、ワイルドカードを含むフロー識別情報に合致する、過去に生存していた個々のフローの生存時間の統計値が閾値以下であるときに、前記フロー識別情報に合致する各フローを短命フローとして検出させ、
     指示処理で、前記フロー識別情報に合致する各フローに該当するパケットを仮想マシンに送ることを指示した指示情報をネットワークインタフェースカードに送らせる
     請求項11に記載の仮想スイッチ用プログラム。
PCT/JP2015/005015 2014-10-10 2015-10-01 サーバ、フロー制御方法および仮想スイッチ用プログラム WO2016056210A1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2014-208533 2014-10-10
JP2014208533 2014-10-10

Publications (1)

Publication Number Publication Date
WO2016056210A1 true WO2016056210A1 (ja) 2016-04-14

Family

ID=55652846

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/005015 WO2016056210A1 (ja) 2014-10-10 2015-10-01 サーバ、フロー制御方法および仮想スイッチ用プログラム

Country Status (1)

Country Link
WO (1) WO2016056210A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112769597A (zh) * 2020-12-23 2021-05-07 杭州谐云科技有限公司 一种云边协同虚拟化场景的容器网络限流方法和系统
WO2022113332A1 (ja) * 2020-11-30 2022-06-02 日本電信電話株式会社 Nfvシステム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011068091A1 (ja) * 2009-12-04 2011-06-09 日本電気株式会社 サーバ及びフロー制御プログラム
JP2013197919A (ja) * 2012-03-21 2013-09-30 Nec Corp 通信制御装置、通信制御方法および通信制御プログラム
JP2014506739A (ja) * 2011-02-24 2014-03-17 日本電気株式会社 ネットワークシステム、コントローラ、及びフロー制御方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011068091A1 (ja) * 2009-12-04 2011-06-09 日本電気株式会社 サーバ及びフロー制御プログラム
JP2014506739A (ja) * 2011-02-24 2014-03-17 日本電気株式会社 ネットワークシステム、コントローラ、及びフロー制御方法
JP2013197919A (ja) * 2012-03-21 2013-09-30 Nec Corp 通信制御装置、通信制御方法および通信制御プログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
AKIRA TSUJI ET AL.: "Implementation and Evaluation of Dynamic Offloading of vswitch Tasks", IEICE TECHNICAL REPORT, NS2011-29, vol. 111, no. 43, 12 May 2011 (2011-05-12), pages 69 - 74 *
SHUICHI KARINO: "A Proposal of Dynamic Offloading of vswitch Tasks", IEICE GENERAL CONFERENCE 2010, 2 March 2010 (2010-03-02), pages 45 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022113332A1 (ja) * 2020-11-30 2022-06-02 日本電信電話株式会社 Nfvシステム
JP7392875B2 (ja) 2020-11-30 2023-12-06 日本電信電話株式会社 Nfvシステム
CN112769597A (zh) * 2020-12-23 2021-05-07 杭州谐云科技有限公司 一种云边协同虚拟化场景的容器网络限流方法和系统

Similar Documents

Publication Publication Date Title
US11902124B2 (en) Round trip time (RTT) measurement based upon sequence number
KR101862273B1 (ko) 가상화된 네트워킹 스택의 라이브 이주를 위한 시스템 및 방법
US10044830B2 (en) Information system, control apparatus, method of providing virtual network, and program
US20160080266A1 (en) Control method, information processing device, and communication system
US20170078222A1 (en) Control device and method of controlling a plurality of network switches
US20150071091A1 (en) Apparatus And Method For Monitoring Network Performance
US20160127227A1 (en) Information processing system, method, and apparatus
US20230134135A1 (en) Real-time detection of completion of sensor wrap completion in gnmi telemetry of a network device
US11632288B2 (en) Determining the impact of network events on network applications
WO2016056210A1 (ja) サーバ、フロー制御方法および仮想スイッチ用プログラム
US20210377129A1 (en) Network building apparatus, network building method, non-transitory computer readable medium storing program
US10628201B2 (en) Analysis method and analysis apparatus
WO2016051335A1 (en) Algorithm for faster convergence through affinity override
US20150263990A1 (en) Network device, control method, and program
WO2017071430A1 (zh) 处理报文的方法、网卡及系统、更新信息的方法及主机
JP2016201795A (ja) シンクノード状態の監視方法、装置及びシステム
US20170070473A1 (en) A switching fabric including a virtual switch
JP6458383B2 (ja) パケット処理プログラム,パケット処理装置及びパケット処理方法
US9819691B2 (en) Network monitoring system and method
US9819571B2 (en) Control apparatus and method for supplying switch with entry
US9548989B2 (en) Network monitoring apparatus and method
WO2015165229A1 (zh) 一种识别异常ip数据流的方法、装置和系统
US20220303190A1 (en) System, method, and control apparatus
US20150180775A1 (en) Communication System, Control Apparatus, Communication Method, and Program
JP2017519469A (ja) 候補問題ネットワーク・エンティティの識別

Legal Events

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

Ref document number: 15849118

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15849118

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP