WO2015092973A1 - 情報処理装置及びトラフィック制御方法 - Google Patents

情報処理装置及びトラフィック制御方法 Download PDF

Info

Publication number
WO2015092973A1
WO2015092973A1 PCT/JP2014/005785 JP2014005785W WO2015092973A1 WO 2015092973 A1 WO2015092973 A1 WO 2015092973A1 JP 2014005785 W JP2014005785 W JP 2014005785W WO 2015092973 A1 WO2015092973 A1 WO 2015092973A1
Authority
WO
WIPO (PCT)
Prior art keywords
packet
flow
information
computer
network interface
Prior art date
Application number
PCT/JP2014/005785
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 日本電気株式会社
Priority to US15/105,109 priority Critical patent/US10097658B2/en
Priority to JP2015553350A priority patent/JPWO2015092973A1/ja
Publication of WO2015092973A1 publication Critical patent/WO2015092973A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/563Data redirection of data network streams
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory

Definitions

  • the present invention relates to a traffic control technique, and more particularly to a packet transfer traffic control technique.
  • Patent Document 1 discloses an example of a cache control device.
  • the cache control device described in Patent Literature 1 includes the following configuration.
  • the area setting means sets the writing area in the cache memory.
  • the writing area is an area in which a predetermined amount of received data can be written.
  • the area deletion means deletes the area in which the received data that is the target of the process is written for each process on a part or all of the received data written in the write area.
  • the area setting means newly sets an area corresponding to the deleted area as a writable area for the subsequent received data at a position where the subsequent received data is written for each process on the received data.
  • the subsequent received data is data received after receiving a predetermined amount of received data.
  • the received data determination means determines whether or not data exceeding the amount that can be written to the write area has been received.
  • the received data writing means writes the received data in the writing area.
  • the received data writing means writes received data exceeding the amount that can be written to the writing area into the main memory.
  • the data reading means prefetches the received data from the main memory.
  • Patent Document 1 discloses that the cache control device has the above-described configuration, so that the processing delay associated with memory access is eliminated and the processing performance associated with memory access is eliminated while keeping the amount of cache memory used constant and without dropping packets. It can be improved.
  • the first memory access process to be reduced is a write process from the NIC (Network Interface Card) to the memory.
  • a second memory access process to be reduced is a read process from the CPU (Central Processing Unit) to the memory.
  • the third memory access process to be reduced is a process in which data is written to the memory when the data stored in the cache with the second process is evicted.
  • Non-Patent Document 1 Regarding the technique of “prefetching received data from the main memory” described above, the technique disclosed in Non-Patent Document 1 and Non-Patent Document 2 will be described in order with reference to the drawings.
  • FIG. 1 shows a general configuration of the computer 107 in the related art.
  • the computer 107 includes a CPU 200 and a main memory 300. Further, the computer 107 includes an I / O (Input / Output) controller (I / O Controller) 407. Furthermore, the computer 107 includes a peripheral component interconnect (PCI) -Express (registered trademark) device (PCI-Express Devices) 650. Furthermore, the computer 107 includes a storage device (Storage Devices) 660.
  • PCI peripheral component interconnect
  • PCI-Express Devices registered trademark
  • Storage Devices Storage Devices
  • the I / O controller 407 is a controller that controls various interfaces for various I / O devices.
  • the I / O controller 407 includes a PCI-Express root complex (PCI-Express Root Complex) 440.
  • the I / O controller 407 includes a serial ATA (Advanced Technology Attachment) interface (SATA interface) 441. Further, the I / O controller 407 includes other I / O interfaces (Other I / O interfaces) 442.
  • the I / O controller 407 provides the CPU 200 with an access function for I / O devices connected by these interfaces.
  • a memory controller was built in the I / O controller, and the main memory was connected to the I / O controller.
  • the function of a memory controller (not shown) is generally integrated into the CPU 200.
  • the PCI-Express root complex 440 is located at the highest layer of the I / O fabric configured by PCI-Express, and is an interface for connecting the CPU 200 and the PCI-Express device 650.
  • the serial ATA interface 441 is an interface for connecting a storage device such as an HDD (Hard Disk Drive) or an SSD (Solid State Drive).
  • I / O interface 442 is, for example, a USB (Universal Serial Bus) interface, a PS (Personal System) / 2 interface, a serial port interface, a parallel port interface, or the like.
  • the other I / O interface 442 is various interfaces for connecting various peripheral devices to the computer 107.
  • the PCI-Express device 650 is a device connected to an I / O fabric configured by PCI-Express, and is called an end point in the PCI-Express specification.
  • An example of such a device is a device for network connection such as NIC.
  • Another example is a device for connecting to a storage device such as RAID (Redundant Arrays of Independent Disks).
  • Another example is a device having an AV (Audio Visual) function such as a sound card or a video capture card.
  • the storage device 660 is a storage device in accordance with the ATA standard, and examples thereof include an HDD, an SSD, a Blu-ray (registered trademark) drive, and the like.
  • FIG. 2 shows a configuration of the computer 108 in a form different from that of the computer 107.
  • the computer 108 is different from the computer 107 in that a PCI-Express root complex 440 is built in the CPU 200 and a PCI-Express device 650 is directly connected to the CPU 200. Further, the computer 108 is different from the computer 107 in that the CPUs 200 are directly connected to each other.
  • FIG. 3 shows an example of the structure of the CPU 200.
  • the CPU 200 is roughly composed of an arithmetic core 220, a cache memory 223 (local cache 222 and shared cache 224), a cache controller 221, and a memory controller 225.
  • the PCI-Express route complex 440 built in the CPU 200 shown in FIG. 2 is not shown.
  • the CPU 200 generally includes a plurality of arithmetic cores 220, and each arithmetic core 220 includes a cache controller 221 and a local cache 222.
  • the arithmetic core 220 executes various instructions.
  • the cache memory 223 stores data used by the arithmetic core 220.
  • the local cache 222 is a cache memory that can be occupied and used by each arithmetic core 220.
  • the shared cache 224 is a cache memory shared between the arithmetic cores 220. Since the shared cache 224 is generally located at the lowest layer of the cache memory hierarchy, it is also called a last level cache.
  • the memory controller 225 controls the main memory 300 shown in FIGS.
  • the cache controller 221 controls access to the cache memory 223.
  • the capacity of a cache memory is about one-hundredth that of a main memory, and data and instructions necessary for a certain process are often only partially stored. Therefore, only the data required by the arithmetic core 220 at that time among the data read from the main memory 300 is stored in the cache memory 223. Therefore, the cache controller 221 controls the replacement of data stored in the cache memory 223, the writing back of data to the main memory 300, and the like.
  • a network such as Ethernet (registered trademark)
  • the computer 107 and the computer 108 when they receive a packet, they operate as follows. First, packet data received by the NIC (PCI-Express device 650) is stored in the computer 107 such as the main memory 300 and the main memory 300 included in the computer 108. Second, when the CPU 200 processes the received packet, the data of the packet is read from the main memory 300.
  • PCI-Express device 650 PCI-Express device 650
  • the cache controller 221 Before accessing the main memory 300, the cache controller 221 confirms whether or not the data of the processing target packet is stored in any of the cache memories 223. When necessary data is not stored in the cache memory 223 (at the time of a cache miss), the cache controller 221 reads packet data from the main memory 300 via the memory controller 225.
  • the cache controller 221 stores the read data of the packet in any of the cache memories 223. Which level of the cache memory 223 is stored depends on the specification of the cache controller 221. If the CPU 200 processes a packet and the packet to be processed is already stored in the cache memory 223 (when hit), the CPU 200 processes the packet without accessing the main memory 300. Can do.
  • the difference between an access hit to the cache memory 223 and a cache miss is whether or not the main memory 300 is accessed.
  • the difference between the access to the cache memory 223 and the access delay to the main memory 300 in the CPU 200 in recent years has increased from several tens of times to about 100 times. Therefore, it is desirable to store data to be processed by the CPU 200 in the cache memory 223 as much as possible.
  • the CPU 200 has a prefetch function for reading necessary data from the main memory 300 to the cache memory 223 before the CPU 200 needs data to be processed.
  • the prefetch function includes a hardware prefetch automatically performed by the CPU 200 and a software prefetch instructed by an OS (Operating System) or an application. By prefetching data from the main memory 300 to the cache memory 223, the data can be stored in the cache memory 223 before the CPU needs the data.
  • TLP Transaction Layer Protocol
  • TPH Processing Hints
  • TPH is a function of writing a hint (for example, a tag called a steering tag) to a specific field of a header of a TLP packet flowing through the PCI-Express fabric based on a memory address of a transfer destination of the TLP packet. How to handle this steering tag (hint) depends on the device (CPU 200, I / O controller 407, I / O controller 408) that receives the TLP packet.
  • a hint for example, a tag called a steering tag
  • Intel registered trademark
  • DCA Direct Cache Access
  • the function is a function for the CPU 200 to prefetch the data from the PCI-Express device based on the hint.
  • the NIC corresponding to DCA adds a steering tag as a hint to the TLP packet, and transmits the TLP packet to the CPU 200, the I / O controller 407, and the I / O controller 408.
  • a steering tag As a hint to the TLP packet, and transmits the TLP packet to the CPU 200, the I / O controller 407, and the I / O controller 408.
  • Non-Patent Document 2 in the case of DCA, either (1) or (2) below is stored in the steering tag.
  • (1) A flag indicating whether DCA is valid or invalid and an ID indicating a target cache.
  • Target core ID based on APIC (Advanced Programmable Interrupt Controller) ID.
  • Non-Patent Document 2 the following modes (1), (2), and (3) exist in the Intel 82599 10 Gigabit Ethernet (registered trademark) Controller.
  • a hint (steering tag: target core ID based on APIC ID) is written in a TLP packet (referred to as “PCIe TLP” in Non-Patent Document 2) of a reception descriptor to be written back to the main memory 300.
  • PCIe TLP a TLP packet
  • a mode in which a hint is written to the TLP packet to the header buffer of the received Ethernet packet.
  • a mode for writing a hint to the payload of the received Ethernet packet (registered trademark) Controller.
  • the payload portion of this TLP packet is temporarily stored in the main memory 300.
  • the CPU 200, the I / O controller 407, and the I / O controller 408 prefetch the payload portion into the cache memory 223 based on the steering tag information. Packets received from the network are efficiently processed by this hardware prefetch.
  • the received packet processing devices are the cache control device disclosed in Patent Document 1, the computer 107 and the computer 108 described above, and the like.
  • the speed at which packets are received from the network is higher than the speed at which the CPU performs packet reception processing.
  • this case will be described in more detail.
  • the cache memory 223 is generally divided into small areas called cache lines. Each cache line is assigned an index number. Data read from the main memory 300 is stored in a cache line having a specific index number.
  • the specific index number is an index number that matches the value of a specific field of the memory address of the main memory 300 in which the data is stored.
  • Such usage of the cache line is used in a cache memory 223 called a direct map method or a set associative method.
  • a direct map method or a set associative method.
  • data read from the main memory 300 cannot be stored in any location (cache line) of the cache memory 223.
  • the method of using the cache memory of the cache control device disclosed in Patent Document 1 is a method that is used regardless of the memory address of the main memory 300. Therefore, the technique disclosed in Patent Document 1 cannot be applied to the direct map type or set associative type cache memory 223.
  • the cache memory 223 is a direct map method or a set associative method, the following operation is performed.
  • the data is prefetched from the main memory 300 and the cache line that is the storage destination of the prefetched data has already been used, the data stored in the cache line is written back to the main memory 300.
  • Non-Patent Document 1 and Non-Patent Document 2 disclose a technique called DCA.
  • DCA a technique such as DCA.
  • the data of the (N + 1) th and subsequent packets is prefetched.
  • the Nth packet may be evicted from the cache.
  • the CPU 200 accesses the cache memory 223, a cache miss occurs.
  • the CPU 200 needs to read the Nth packet from the main memory 300 again.
  • the performance is reduced by the amount of access to the main memory 300.
  • the cache hit rate in the CPU 200 deteriorates due to prefetching using the DCA technique, and the performance of the computer 107 and the computer 108 deteriorates in terms of throughput and CPU usage rate.
  • the related technology cannot be selectively used for prefetch depending on the situation such as traffic pattern, traffic priority, CPU 200 cache hit rate, and the like.
  • setting whether to write TPH in the TLP packet is performed based on static information such as an address of the main memory 300 that is a transfer destination of the received packet.
  • the technique such as DCA is used when the cache hit rate of the CPU 200 is deteriorated, the data stored in the cache memory 223 may be replaced, and the cache hit rate may be further deteriorated. .
  • An object of the present invention is to provide an information processing apparatus, a traffic control method, and a computer-readable non-transitory recording medium that records the program or the program for solving the above-described problems.
  • the first information processing apparatus includes a flow information storage unit that stores a correspondence between a flow identifier that is information included in a packet and a network interface, and information stored in the flow information storage unit. Based on the first network interface that assigns the packet with suggestion information to be used by the destination computer that is the transmission destination of the packet to appropriately process the packet, and the second network that does not assign the packet to the packet Switching means for transferring the packet to any one of the interfaces.
  • a computer including a flow information storage unit that holds a correspondence between a flow identifier that is information included in a packet and a network interface is stored in the information stored in the flow information storage unit. Based on the first network interface that assigns the packet with suggestion information to be used by the destination computer that is the transmission destination of the packet to appropriately process the packet, and the second network that does not assign the packet to the packet Transfer the packet to one of the interfaces.
  • a non-transitory computer-readable non-transitory recording medium includes a flow information storage unit that holds correspondence between a flow identifier, which is information included in a packet, and a network interface. Based on the information stored in the storage means, the first network interface and the packet that give hint information to the packet to be used by the destination computer that is the transmission destination of the packet to appropriately process the packet A program for executing a process of transferring the packet to any one of the second network interfaces not assigned to the network is recorded.
  • a second information processing apparatus includes a processor, instructions executed by the processor for the processor to operate as a switching unit, a flow identifier that is information included in the packet, and a network interface.
  • a storage unit that holds flow information indicating correspondence, and the switching unit uses the suggestion information used by the destination computer, which is a transmission destination of the packet, to appropriately process the packet based on the flow information
  • the packet is transferred to one of the first network interface assigned to the packet and the second network interface not assigned to the packet.
  • the present invention has the effect of preventing or reducing the deterioration of the cache hit rate.
  • FIG. 1 is a block diagram illustrating a configuration of a computer according to related technology.
  • FIG. 2 is a block diagram illustrating a configuration of a computer according to related technology.
  • FIG. 3 is a block diagram illustrating an example of the structure of a CPU according to related technology.
  • FIG. 4 is a block diagram showing the configuration of the traffic control system according to the first embodiment of the present invention.
  • FIG. 5 is a diagram illustrating an example of a policy table according to the first embodiment.
  • FIG. 6 is a diagram illustrating an example of an interface table in the first embodiment.
  • FIG. 7 is a diagram illustrating an example of a flow table according to the first embodiment.
  • FIG. 8 is a sequence diagram showing a flow of processing for changing the registered content of a flow whose flow entry is registered in the flow table in the first embodiment.
  • FIG. 9 is a sequence diagram illustrating a flow of processing for registering a new flow entry for a flow for which no flow entry exists in the flow table according to the first embodiment.
  • FIG. 10 is a flowchart illustrating an operation in which the flow manager according to the first embodiment changes registration contents.
  • FIG. 11 is a flowchart showing an operation of registering a new flow entry by the flow manager in the first embodiment.
  • FIG. 12 is a block diagram showing the configuration of the traffic control system according to the second embodiment of the present invention.
  • FIG. 13 is a block diagram showing the configuration of the traffic control system according to the third embodiment of the present invention.
  • FIG. 14 is a block diagram showing the configuration of the information processing apparatus according to the fourth embodiment of the present invention.
  • FIG. 15 is a diagram illustrating an example of a flow table according to the fourth embodiment.
  • FIG. 16 is a block diagram illustrating a hardware configuration of a computer that implements an information processing apparatus according to the fourth embodiment.
  • FIG. 17 is a flowchart showing the operation in the fourth embodiment.
  • FIG. 18 is a block diagram showing the configuration of the information processing apparatus according to the fifth embodiment of the present invention.
  • FIG. 4 is a block diagram showing the configuration of the traffic control system 801 according to the first embodiment of the present invention.
  • the traffic control system 801 includes a computer 101, a flow manager (also referred to as a flow manager or flow information update unit) 701, and a packet switch 901. Further, the traffic control system 801 includes a performance monitor 700, a policy table 71, and a flow statistics table 72. Furthermore, the traffic control system 801 includes a CPU statistical information table (CPU Stat Table) 73 and an interface table (I / F TABLE) 74.
  • CPU Stat Table CPU statistical information table
  • I / F TABLE interface table
  • the computer 101 includes a CPU 200, a main memory 300 (Main Memory), an I / O controller (I / O Controller) 400, and a network interface (NW I / F) 501.
  • main memory 300 Main Memory
  • I / O controller I / O Controller
  • NW I / F network interface
  • the computer 101 is configured to mount the network interface 501 under the I / O controller 400, like the computer 107 shown in FIG.
  • this does not limit the configuration of the computer 101, and the network interface 501 may be directly connected to the CPU 200 as in the computer 108 shown in FIG.
  • the difference of this embodiment by carrying out like this does not generate
  • the network interface 501 connected to the I / O controller 400 is connected via, for example, PCI-Express.
  • PCI-Express route complex 440 is not shown in the I / O controller 400 of FIG.
  • the network interface 501 is connected to a PCI-Express route complex 440 (not shown) built in the I / O controller 400. Note that this does not limit the present embodiment to a system including PCI-Express.
  • the network interface 501 includes a packet receiving unit 510 and an I / O interface (I / O I / F) 540.
  • FIG. 4 shows only the configuration on the packet reception side of the network interface 501, and the configuration on the transmission side is omitted.
  • the packet receiving unit 510 is a module that executes a reception process of a packet received from a network (not shown).
  • a network not shown
  • the network is an Ethernet and an IP (Internet Protocol) packet flows.
  • IP Internet Protocol
  • the packet receiving unit 510 has a function included in a reception processing unit of a general network card. Examples of such functions include a received packet check function and a filtering function.
  • the received packet check function is a function for calculating a checksum of a received packet and confirming whether or not data is damaged in the packet.
  • the filtering function is a function of filtering packets based on MAC (Media Access Control) address, VLAN (Virtual Local Network) tag, and IP address information included in the packet header.
  • the I / O interface 540 is an interface of the network interface 501 to the I / O controller 400.
  • the I / O interface 540 stores the received packet in the payload portion of the TLP packet and sends the TLP packet toward the I / O controller 400.
  • the computer 101 includes two or more network interfaces 501.
  • each I / O interface 540 included in each network interface 501 at least one I / O interface 540 gives a hint (also referred to as suggestion information) to the TLP packet. That is, TPH is effective for the I / O interface 540.
  • At least one other I / O interface 540 does not give a hint to the TLP packet. That is, the I / O interface 540 is invalid for TPH.
  • an I / O interface 540 to which a hint is attached (TPH is valid) is referred to as an I / O interface (on) 540.
  • An I / O interface 540 that does not give hints (TPH is invalid) is called an I / O interface (off) 540.
  • the hint is information used to appropriately process the packet data received by the CPU 200, for example.
  • the hint is information used for the CPU 200 to prefetch the data stored in the main memory 300 using the DCA function.
  • the data is packet data (payload) received from the network interface 501.
  • the hint includes a flag indicating whether DCA is valid or invalid and an ID indicating a target cache.
  • the CPU 200 prefetches the payload of the TLP packet stored in the main memory 300 to the cache memory 223 based on the hint given to the TLP packet received from the I / O interface (on) 540.
  • the computer 101 includes a management interface, and the performance monitor 700 acquires the statistical information of the CPU 200 via the management interface.
  • the statistical information is performance information related to the performance of the computer 101, and is also referred to as environmental status information related to the packet.
  • Examples of the statistical information of the CPU 200 include a cache hit rate and a CPU usage rate.
  • the cache hit rate can be acquired by reading the value of the performance counter.
  • the CPU usage rate can be acquired from a resource monitor provided in the OS.
  • the resource monitor if the OS is Linux (registered trademark), a top command and an mpstat command can be cited.
  • the CPU statistical information table 73 is a table that holds statistical information of the CPU 200 acquired by the performance monitor 700.
  • the computer 101 generally includes a plurality of CPUs 200 or a single CPU 200 provided with a plurality of arithmetic cores 220. Therefore, the CPU statistical information table 73 uses, for example, the identifier of the arithmetic core 220 or the CPU 200 as a key and the statistical information of the arithmetic core 220 or the CPU 200 as a value.
  • the flow manager 701 acquires network traffic statistical information and stores it in the flow statistical information table 72. Further, the flow manager 701 updates the flow table 91 based on the contents of the policy table 71, the contents of the interface table 74, the flow ID (described later), the statistical information of network traffic, and the statistical information of the CPU 200.
  • the flow ID is also called a flow identifier.
  • the flow manager 701 acquires the statistical information of the CPU 200 from, for example, the performance monitor 700.
  • the network traffic statistical information is network traffic information through which packets flow, and is also called environmental status information.
  • the packet group unit is a unit of a packet group identified by a combination of an IP address and a TCP (Transmission Control Protocol) or UDP (User Datagram Protocol) port number.
  • TCP Transmission Control Protocol
  • UDP User Datagram Protocol
  • the flow manager 701 acquires the values of these statistical information from the packet switch 901, for example.
  • software capable of managing traffic in units of flows may be operated.
  • the flow manager 701 may acquire the values of these statistical information from the software.
  • An example of such software is software called Open vSwitch.
  • Flow indicates each packet group in which traffic is identified by a specific value (flow ID) such as an IP address.
  • flow ID such as an IP address.
  • the flow granularity varies. For example, in addition to using the IP address and port number described above, it is possible to use a group of packets identified with various granularities by using a combination of a MAC address and a VLAN ID.
  • OpenFlow 1.0 the information included in the packet header and the information of the input port to the switch can be combined, and the flow can be identified based on a maximum of 12 pieces of information.
  • the flow manager 701 can take the form of a program that runs on the computer 101 or can be realized as a separate device from the computer 101.
  • FIG. 5 is a diagram showing an example of the policy table 71 in the present embodiment.
  • the policy table 71 is a table that holds a policy indicating which flow is to be hinted in what kind of situation.
  • the policy may be one that uses statistical information acquired by the performance monitor 700, such as the following (1) to (4).
  • a hint is given to a packet belonging to a flow whose average packet size at a certain time exceeds N (N is a positive integer) bytes.
  • M is a positive real number of 100 or less
  • no hint is given to any packet.
  • M% When the cache hit rate of the CPU 200 is lower than M%, a packet belonging to a flow with an average packet size of N bytes or less is not given a hint.
  • the average packet size can be calculated from the number of passing bytes per unit time and the number of passing packets among the statistical information acquired by the flow manager 701.
  • both a policy for giving a hint to a flow and a policy for not giving a hint are set.
  • the flow satisfies both of the policies at the same time, it is necessary to determine which policy is applied. For example, one of those policies is “do not give hints to all packets when the cache hit rate of the CPU 200 falls below M%”. Another one is “to give a hint to a packet belonging to a flow whose average packet size at a certain time exceeds N bytes”.
  • each of the policies included in the policy table 71 may have a priority between the policies.
  • the priority is defined to be higher for a policy closer to the head of the policy table 71, for example.
  • the value acquired by accessing the policy table 71 may include priority information.
  • the policy table 71 includes a policy ID column 710, a flow ID column 711, and a throughput column 712.
  • the policy table 71 further includes an average packet size column 713, a CPU utilization column 714, and a cache hit rate column 715.
  • the policy table 71 includes a TPH setting value (TPH Setting) column 716.
  • the higher the entry in the upper row of the table the higher the priority, that is, the lower the value in the policy ID column 710, the higher the priority.
  • the flow ID column 711 to the cache hit rate column 715 are key columns
  • the TPH setting value column 716 is a value column.
  • a policy identifier is registered (stored).
  • the flow identifier is, for example, a MAC address, a VLAN ID, an IP address, or the like.
  • the throughput column 712 stores conditions regarding network throughput.
  • the average packet size column 713 stores conditions regarding the average packet size of the network.
  • the CPU usage rate column 714 stores conditions regarding the usage rate of the CPU 200.
  • the cache hit rate column 715 stores conditions regarding the cache hit rate of the CPU 200.
  • the flow manager 701 refers to the policy table 71 as follows.
  • the flow manager 701 searches the policy table 71 and detects a record that includes the flow ID obtained from the received packet and satisfies the statistical information of the network traffic and the statistical information of the CPU 200.
  • the statistical information of the network traffic and the statistical information of the CPU 200 are information that the flow manager 701 acquires from the computer 101 or the packet switch 901.
  • the flow manager 701 obtains the value of the TPH setting value column 716 of the detected record.
  • the flow manager 701 may refer to the policy table 71 as follows. First, the flow manager 701 searches the policy table 71 with a flow ID that hits only a specific value, and acquires values in arbitrary columns from the throughput column 712 to the TPH set value column 716. Next, the flow manager 701 compares the acquired value of the column with the current value, and acquires the value of the TPH set value column 716 included in the policy that satisfies all the conditions.
  • the flow statistics information table 72 is a table that holds the statistics information of flows acquired by the flow manager 701. Therefore, the flow statistical information table 72 uses the flow ID as a key, and uses flow statistical information (network traffic statistical information corresponding to the flow) and a flag indicating whether or not a hint is currently attached as a value. .
  • FIG. 6 is a diagram showing an example of the interface table 74 in the present embodiment.
  • the interface table 74 includes at least a switch ID (Switch ID) column 740, a port ID (Port ID) column 741, a computer ID (Computer ID) column 742, and a TPH setting value (TPH Setting) column 743.
  • switch ID switch ID
  • Port ID port ID
  • Computer ID Computer ID
  • TPH setting value TPH Setting
  • the identifier of the packet switch 901 is stored in the switch ID column 740.
  • the port ID column 741 stores the identifier of the port of the packet switch 901 connected to the network interface 501.
  • the computer ID column 742 stores the identifier of the computer 101 in which the network interface 501 is accommodated.
  • the TPH setting value column 743 stores a value indicating whether TPH is valid or invalid in the network interface 501.
  • the flow manager 701 When the flow manager 701 sets a flow entry 919 (described later) in the flow table 91, the flow manager 701 refers to the interface table 74 in order to obtain packet output destination information.
  • the output destination information of the packet is information specifying the value of the port ID column 741, that is, the network interface 501.
  • the value of the interface table 74 is statically given from the outside. The flow manager 701 obtains the value from each packet switch 901 and each computer 101, obtains the value by throwing a probe packet, and sets the obtained value in the interface table 74. Also good.
  • the switching control unit 990 determines which network interface 501 to transfer the packet to based on information stored in the flow table 91. Next, the switching control unit 990 transmits the packet to the determined network interface 501.
  • FIG. 7 is a diagram illustrating an example of the flow table 91.
  • the flow table 91 is a table that holds information regarding the transfer destination of each packet.
  • the flow table 91 includes a flow entry 919.
  • the flow entry 919 uses a flow ID column 910 as a key column, a port ID column 911 for specifying a network interface 501 as an output destination, and a TPH setting value column 912 of the output destination as values.
  • the flow table 91 may further include flow statistical information.
  • the flow ID is stored in the flow ID column 910.
  • the port ID column 911 stores the port ID of the packet switch 901.
  • the TPH set value column 912 stores a value indicating whether TPH is valid or invalid.
  • FIG. 8 is a sequence diagram showing a flow of processing for changing the registered content (the content of the flow entry 919) for the flow in which the flow entry 919 is registered in the flow table 91.
  • the flow manager 701 may start execution of a process for changing the registered content at a predetermined (for example, regular) timing.
  • the flow manager 701 reads the flow entry 919 of the flow table 91 from the packet switch 901 (step S700).
  • the flow manager 701 requests the packet switch 901 to read the flow entry 919.
  • the packet switch 901 transmits the flow entry 919 to the flow manager 701 in response to the request.
  • the flow manager 701 refers to the policy table 71, the flow statistical information table 72, and the CPU statistical information table 73, and checks whether or not the registered content of the received flow entry 919 matches the policy (step). S710).
  • the flow manager 701 refers to the CPU statistical information table 73 via the performance monitor 700.
  • the flow manager 701 updates the flow entry 919 (step S720).
  • the flow manager 701 transmits a change request instructing the update of the flow entry 919 to the packet switch 901.
  • the packet switch 901 updates the flow entry 919 based on the received change request.
  • This change request includes at least the value of the flow ID column 910, the value of the port ID column 911 and the value of the TPH setting value column 912 as updated values.
  • the flow manager 701 acquires the value of the port ID column 911 from the interface table 74. For example, the flow manager 701 acquires a corresponding entry from the interface table 74 based on the identifier of the packet switch 901.
  • the packet switch 901 is the packet switch 901 from which the flow manager 701 has read the flow entry 919 therefrom in step S700.
  • the flow manager 701 detects an entry in the interface table 74 including the value of the TPH setting value column 743 that matches the value of the TPH setting value column 716 included in the policy.
  • the policy is the policy when the flow entry 919 that does not match the policy is detected in step S720.
  • the flow manager 701 acquires the value of the port ID column 741 of the detected entry.
  • the value of the port ID column 741 is information that identifies the network interface 501 that is the packet output destination.
  • the flow manager 701 acquires the value of the TPH setting value column 716 included in the policy as the value of the TPH setting value column 912.
  • FIG. 9 is a sequence diagram showing a flow of processing for newly registering a flow entry 919 in the flow table 91 for a flow in which the flow entry 919 is not registered in the flow table 91.
  • the packet switch 901 detects that the flow entry corresponding to the received packet is not registered in the flow table 91, the packet switch 901 starts executing a process of newly registering the flow entry 919 in the flow table 91.
  • the packet switch 901 transmits a packet transfer destination inquiry to the flow manager 701 (step S900).
  • the packet belongs to a flow for which the flow entry 919 is not registered in the flow table 91.
  • the inquiry includes at least a flow ID.
  • the flow manager 701 acquires an entry from the policy table 71 based on the flow ID and the information included in the CPU statistical information table 73 (step S910).
  • flow statistical information is required, but in the case of a new flow, there is no flow statistical information. Therefore, for example, the flow manager 701 refers to the policy table 71 using a predetermined initial value as flow statistical information.
  • the flow manager 701 adds a flow entry 919 corresponding to the packet inquired from the packet switch 901 to the flow table 91 (step S920).
  • the flow manager 701 acquires the value of the port ID column 741 corresponding to the value of the TPH setting value column 716 registered in the entry of the acquired policy table 71 from the interface table 74. Subsequently, the flow manager 701 sends a registration request for the flow entry 919 including the acquired value of the port ID column 741, the value of the TPH setting value column 716, and the flow ID information included in the inquiry to the packet. Transmit to the switch 901. The packet switch 901 that has received the registration request registers the flow entry 919 based on the registration request.
  • the flow manager 701 acquires the value of the port ID column 741 according to the following procedure. First, the flow manager 701 acquires an entry including the identifier of the packet switch 901 as the value of the switch ID column 740 from the interface table 74. Second, the flow manager 701 acquires the value of the port ID column 741 of the entry including the value of the TPH setting value column 743 that matches the value of the TPH setting value column 716 from the acquired entries. .
  • FIG. 10 is a flowchart showing the operation of the flow manager 701 in the sequence diagram shown in FIG. Note that the processing according to this flowchart may be executed based on program control by the CPU 200. In addition, the step name of the process is described by a symbol as in F700.
  • the flow manager 701 reads the flow entry 919 of the flow table 91 from the packet switch 901 (step F700).
  • the flow manager 701 refers to the flow statistical information table 72 using the value of the flow ID column 910 of the flow entry 919 acquired from the flow table 91, and acquires flow statistical information (step F701).
  • the flow manager 701 acquires the statistical information of the CPU 200 from the CPU statistical information table 73 via the performance monitor 700 (step F702).
  • the flow manager 701 refers to the policy table 71 based on the value of the flow ID column 910, the statistical information of the flow, and the statistical information of the CPU 200, and acquires the value of the TPH setting value column 716 (step F703).
  • the statistical information of the flow is the statistical information of the flow acquired in step F701.
  • the statistical information of the CPU 200 is the statistical information of the CPU 200 acquired in step F702.
  • the flow manager 701 compares the value of the TPH setting value sequence 716 acquired in step F703 with the value of the TPH setting value sequence 912 included in the flow entry 919 acquired in step F700 (step F704). .
  • Step F704 when the value of the TPH setting value column 716 and the value of the TPH setting value column 912 are the same (“match” in Step F704), the flow manager 701 does not need to change the flow entry 919. Therefore, the process is completed.
  • step F704 if these values do not match (“mismatch” in step F704), the process proceeds to step F705.
  • the flow manager 701 refers to the interface table 74 based on the switch ID of the packet switch 901 and the value of the TPH setting value column 716 acquired in Step F703, and acquires the value of the port ID column 741 ( Step F705).
  • the flow manager 701 transmits a change request to the packet switch 901 (step F706).
  • the value of the corresponding flow entry 919 in the flow table 91 is updated using the value of the port ID column 911 and the value of the TPH setting value column 912 included in the change request as values after the change. Is required.
  • the value of the port ID column 911 and the value of the TPH setting value column 912 included in the change request as the values after the change are the value of the port ID column 741 acquired in Step F705 and the value of TPH acquired in Step F703, respectively. This is the value of the setting value column 716.
  • the flow manager 701 changes the flow entry 919 of the flow table 91.
  • FIG. 11 is a flowchart showing the operation of the flow manager 701 in the sequence diagram shown in FIG. Note that the processing according to this flowchart may be executed based on program control by the CPU 200. In addition, the step name of the process is described with a symbol as in F711.
  • the flow manager 701 creates an entry for the flow inquired from the packet switch 901 in the flow statistical information table 72, and initializes the statistical information of the flow of the entry (step F711).
  • the flow manager 701 acquires the statistical information of the CPU 200 from the CPU statistical information table 73 via the performance monitor 700 (step F712).
  • the flow manager 701 refers to the policy table 71 based on the flow ID of the flow, the statistical information of the CPU 200, and the statistical information of the flow, and acquires the value of the TPH setting value column 716 (step F713).
  • the flow ID is the flow ID of the flow inquired from the packet switch 901.
  • the statistical information of the CPU 200 is the statistical information of the CPU 200 acquired in step F712. Further, the statistical information of the flow is the statistical information of the flow initialized in step F712.
  • the flow manager 701 refers to the interface table 74 based on the switch ID of the packet switch 901 and the value of the TPH setting value column 716 acquired in Step F713, and acquires the value of the port ID column 741 ( Step F715).
  • the flow manager 701 transmits a registration request to the packet switch 901 (step F716).
  • the registration request is for requesting registration of the flow entry 919 in the flow table 91.
  • the registration request includes the flow ID of the flow inquired from the packet switch 901, the value of the TPH setting value column 716 acquired in Step F713, and the value of the port ID column 741 acquired in Step F715.
  • the flow manager 701 adds a new flow entry 919 to the flow table 91.
  • the packet switch 901 may generate a flow entry 919 for a new flow (a flow in which the flow entry 919 is not registered in the flow table 91).
  • the packet switch 901 generates and registers a flow entry 919 that outputs a packet belonging to the new flow to a predetermined default packet output destination network interface 501. In this case, data exchange between the flow manager 701 and the packet switch 901 as shown in FIG. 9 does not occur.
  • the first effect of the present embodiment described above is that it is possible to prevent or reduce the deterioration of the cache hit rate.
  • the flow table 91 stores the correspondence between the flow ID column 910 and the port ID column 911.
  • the switching control unit 990 forwards the packet to any one of the network interfaces 501 that gives or does not give a hint to the packet based on the contents of the flow table 91.
  • the second effect of the present embodiment described above is that it is possible to prevent or reduce the deterioration of the cache hit rate more effectively in accordance with the environmental condition relating to the packet.
  • the reason is that the flow manager 701 updates the flow table 91 based on the performance information related to the CPU 200 of the computer 101 and the policy table 71 including the performance information as a condition. In other words, based on the updated flow table 91, the switching control unit 990 dynamically determines whether to use TPH (giving a hint) according to the status of the CPU 200 at that time. .
  • the third effect of the present embodiment described above is that it is possible to prevent or reduce the deterioration of the cache hit rate more effectively in accordance with the environmental situation related to the packet.
  • the reason is that the flow manager 701 updates the flow table 91 based on the traffic information related to the network through which the packet flows and the policy table 71 including the traffic information as a condition.
  • the switching control unit 990 determines whether to use the TPH (giving a hint) dynamically based on the updated flow table 91 according to the traffic situation at that time. .
  • the fourth effect of the present embodiment described above is that even if the conditions for giving hints are complicated, the conditions can be set in the policy table 71 relatively easily.
  • each policy included in the policy table 71 has a priority between the policies.
  • FIG. 12 is a block diagram showing the configuration of the traffic control system 802 according to the present embodiment.
  • the traffic control system 802 is a system that supports OpenFlow (OpenFlow (registered trademark)).
  • OpenFlow Switch Specification Specification Version 1.3.1 (Wire Protocol 0x04) September 6, 2012, Internet ⁇ url: https://www.opennetworking.org/images/stories/downloads/sdn-resources/onf-specifications/openflow/openflow -spec-v1.3.1.PDF>.
  • the traffic control system 802 includes a computer 101, a performance monitor 700, an open flow controller (OpenFlow Controller) 702, and an open flow switch 902. Further, the traffic control system 802 includes a policy table 71, a CPU statistical information table 73, and an interface table 74.
  • OpenFlow Controller OpenFlow Controller
  • the OpenFlow controller 702 controls a switch corresponding to the OpenFlow specification (for example, the OpenFlow switch 902) using an API (Application Programming Interface) based on the OpenFlow specification.
  • API Application Programming Interface
  • the OpenFlow controller 702 uses the policy table 71 and the interface table 74 to perform processing equivalent to the processing shown in FIGS. By doing so, the OpenFlow controller 702 controls the flow table 91 of the OpenFlow switch 902. At that time, the OpenFlow controller 702 acquires the flow statistical information from the flow table 92 included in the OpenFlow switch 902 instead of from the flow statistical information table 72.
  • a flow ID, flow statistical information, and a process (action) for a packet belonging to the flow are registered in each flow entry of the flow table 92 provided in each OpenFlow switch 902. That is, a function corresponding to the flow statistics information table 72 is included in the flow table 92. Accordingly, the OpenFlow controller 702 can take a configuration in which the flow statistical information table 72 is excluded from the flow manager 701 shown in FIG.
  • the first effect of the present embodiment described above is that the same effect as that of the first embodiment can be obtained even in a system that supports OpenFlow.
  • OpenFlow includes the OpenFlow controller 702 and the OpenFlow switch 902 having functions equivalent to those of the flow manager 701 and the packet switch 901 in the flow system.
  • the second effect of the present embodiment described above is that the flow statistics information table 72 can be reduced.
  • the reason is that the flow table 92 of the open flow switch 902 includes a function corresponding to the flow statistics information table 72.
  • FIG. 13 is a diagram showing a configuration of a traffic control system 803 according to the third embodiment of the present invention.
  • the traffic control system 803 is a system using a network interface 503 including a packet switch function.
  • the traffic control system 803 includes a computer 103, a flow manager 703, a policy table 71, a flow statistical information table 72, a CPU statistical information table 73, and an interface table 74.
  • the computer 103 is different from the computer 101 shown in FIG. 4 in that it includes a network interface 503 instead of the network interface 501.
  • the network interface 503 is different from the network interface 501 shown in FIG. 4 in that the network interface 503 includes a plurality of I / O interfaces 540 and a packet receiving unit 510, and further includes a switching control unit 990 and a flow table 91.
  • the flow manager 703 updates the flow table 91 via a management interface (not shown) of the computer 103, for example.
  • the network interface 503 includes the switching control unit 990 and the flow table 91, and the flow manager 703 updates the flow table 91 of the network interface 503 included in the computer 103.
  • FIG. 14 is a block diagram showing a configuration of an information processing apparatus 904 according to the fourth embodiment of the present invention.
  • the information processing apparatus 904 in the present embodiment includes a flow table 94 and a switching control unit 990.
  • Each component shown in FIG. 14 may be a hardware unit circuit or a component divided into functional units of a computer device.
  • the components shown in FIG. 14 will be described as components divided into functional units of the computer apparatus.
  • FIG. 15 is a diagram showing an example of the flow table 94 in the present embodiment.
  • the flow table 94 stores the correspondence between the flow ID column 910 and the port ID column 911 which are information included in the packet.
  • the value in the port ID column 911 is an identifier that identifies a port (not shown) of the switching control unit 990. Therefore, the value in the port ID column 911 specifies a network interface (not shown) connected to the port of the switching control unit 990.
  • the flow table 94 stores the correspondence between the value of the flow ID column 910 that is information included in the packet and the network interface.
  • the switching control unit 990 transfers the packet to one of the first network interface and the second network interface based on the information stored in the flow table 94.
  • the first network interface gives a hint to the packet.
  • the second network interface does not attach the hint to the packet.
  • the hint is used by the destination computer that is the destination of the packet in order to properly process the packet.
  • FIG. 16 is a diagram illustrating a hardware configuration of a computer 970 that realizes the information processing apparatus 904 according to the present embodiment.
  • the computer 970 includes a CPU (Central Processing Unit) 971, a storage unit 972, a storage device 973, an input unit 974, an output unit 975, and a communication unit 976. Further, the computer 970 includes a recording medium (or storage medium) 977 supplied from the outside.
  • the recording medium 977 is a non-volatile recording medium (non-temporary recording medium) that stores information non-temporarily. Further, the recording medium 977 may be a temporary recording medium that holds information as a signal.
  • the CPU 971 operates an operating system (not shown) to control the overall operation of the computer 970.
  • the CPU 971 reads the program and data from the recording medium 977 attached to the storage device 973 and writes the read program and data to the storage unit 972.
  • the program is, for example, a program for causing the computer 970 to execute an operation of a flowchart shown in FIG.
  • the CPU 971 executes various processes as the information processing apparatus 904 shown in FIG. 14 according to the read program and based on the read data.
  • the CPU 971 may download the program and its data to the storage unit 972 from an external computer (not shown) connected to a communication network (not shown).
  • the storage unit 972 stores the program and its data.
  • the storage unit 972 may include a flow table 94.
  • the storage device 973 is, for example, an optical disk, a flexible disk, a magnetic optical disk, an external hard disk, and a semiconductor memory, and includes a recording medium 977.
  • the storage device 973 (recording medium 977) stores the program in a computer-readable manner. Further, the storage device 973 may store the data.
  • the storage device 973 may include a flow table 94.
  • the input unit 974 receives input of operation by the operator and input of information from the outside.
  • Devices used for the input operation are, for example, a mouse, a keyboard, a built-in key button, and a touch panel.
  • the output unit 975 is realized by a display, for example.
  • the output unit 975 is used, for example, for confirming an input request or output using a GUI (Graphical User Interface).
  • GUI Graphic User Interface
  • the communication unit 976 implements an interface with the outside (for example, the computer 101 and the flow manager 701 shown in FIG. 4). Communication unit 976 is included as part of switching control unit 990.
  • the functional unit block of the information processing apparatus 904 shown in FIG. 14 is realized by the computer 970 having the hardware configuration shown in FIG.
  • the means for realizing each unit included in the computer 970 is not limited to the above. That is, the computer 970 may be realized by one physically coupled device, or may be realized by two or more physically separated devices connected by wire or wirelessly and by a plurality of these devices. .
  • the CPU 971 may read and execute the program code stored in the recording medium 977.
  • the CPU 971 may store the code of the program stored in the recording medium 977 in the storage unit 972, the storage device 973, or both. That is, the present embodiment includes an embodiment of a recording medium 977 that stores the program (software) executed by the computer 970 (CPU 971) temporarily or non-temporarily.
  • a storage medium that stores information non-temporarily is also referred to as a non-volatile storage medium.
  • FIG. 17 is a flowchart showing the operation of the present embodiment. Note that the processing according to this flowchart may be executed based on the program control by the CPU 971 described above. Also, the step name of the process is described with a symbol, such as F780.
  • the switching control unit 990 receives the packet (step F780).
  • the switching control unit 990 searches the flow table 94 using the flow ID included in the received packet as a key, and acquires the value of the port ID column 911 corresponding to the flow ID (step F781). In other words, the switching control unit 990 determines a network interface as a packet transfer destination based on the information stored in the flow table 94.
  • the switching control unit 990 transmits the packet received in Step F780 from the port specified by the acquired value of the port ID column 911 (Step F782).
  • the effect of the present embodiment described above is that it is possible to prevent or reduce the deterioration of the cache hit rate.
  • the flow table 94 stores the correspondence between the flow ID column 910 and the port ID column 911.
  • the switching control unit 990 forwards the packet to any of the network interfaces that give or not give a hint to the packet based on the contents of the flow table 94.
  • FIG. 18 is a block diagram showing a configuration of an information processing apparatus 905 according to the fourth embodiment of the present invention.
  • the information processing apparatus 905 in the present embodiment is different from the information processing apparatus 904 shown in FIG. 14 in that it further includes a flow manager 704. Further, the information processing apparatus 905 according to this embodiment is different from the information processing apparatus 904 illustrated in FIG. 14 in that it includes a flow table 91 illustrated in FIG. 7 instead of the flow table 94.
  • Each component shown in FIG. 18 may be a hardware unit circuit or a component divided into functional units of a computer device. Here, the components shown in FIG. 18 will be described as components divided into functional units of the computer apparatus.
  • the flow manager 704 determines the correspondence between the flow ID and the network interface based on the flow ID included in the received packet, the environmental status information related to the packet, and the policy, and updates the contents of the flow table 91. .
  • the environmental status information related to the packet is, for example, performance information related to the performance of the computer that is the destination of the packet.
  • the environmental status information related to the packet may be traffic information of a network through which the packet flows. Further, the environmental status information related to the packet may be both the performance information and the traffic information.
  • the policy indicates the correspondence between the flow ID, the environmental status information, and information indicating whether to give a hint.
  • a component in hardware that realizes the information processing apparatus 905 in the present embodiment may be a component of the computer 970 illustrated in FIG. 16.
  • the program written in the storage unit 972 is, for example, a program for causing the computer 970 to execute an operation equivalent to the operation of the flowcharts shown in FIGS.
  • the CPU 971 executes various processes as the information processing device 905 shown in FIG. 18 according to the read program and based on the read data.
  • the storage unit 972 and the storage device 973 may store a policy as part of the flow manager 704.
  • the input unit 974 receives input of operation by the operator and input of information from the outside.
  • Devices used for the input operation are, for example, a mouse, a keyboard, a built-in key button, and a touch panel.
  • the input unit 974 may accept a policy input by the operator as part of the flow manager 704.
  • the communication unit 976 may receive a policy and environmental status information related to the packet from the outside.
  • the operation of the flow manager 704 is equivalent to the operation shown in FIGS.
  • the effect of the present embodiment described above makes it possible to prevent or reduce the deterioration of the cache hit rate more effectively in accordance with the environmental situation related to the packet. It is.
  • the reason is that the flow manager 704 updates the flow table 91 based on the flow ID, the environmental status information, and the policy including the flow ID and the environmental status information.
  • each component described in each of the above embodiments does not necessarily need to be an independent entity.
  • each component may be realized as a module with a plurality of components.
  • each component may be realized by a plurality of modules.
  • Each component may be configured such that a certain component is a part of another component.
  • Each component may be configured such that a part of a certain component overlaps a part of another component.
  • each component and a module that realizes each component may be realized by hardware if necessary. Moreover, each component and the module which implement
  • the program is provided by being recorded on a non-volatile computer-readable recording medium such as a magnetic disk or a semiconductor memory, and is read by the computer when the computer is started up.
  • the read program causes the computer to function as a component in each of the above-described embodiments by controlling the operation of the computer.
  • a plurality of operations are not limited to being executed at different timings. For example, another operation may occur during the execution of a certain operation, or the execution timing of a certain operation and another operation may partially or entirely overlap.
  • each of the embodiments described above it is described that a certain operation becomes a trigger for another operation, but the description does not limit all relationships between the certain operation and other operations. For this reason, when each embodiment is implemented, the relationship between the plurality of operations can be changed within a range that does not hinder the contents.
  • the specific description of each operation of each component does not limit each operation of each component. For this reason, each specific operation
  • movement of each component may be changed in the range which does not cause trouble with respect to a functional, performance, and other characteristic in implementing each embodiment.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

 本発明は、キャッシュヒット率の悪化を防止或いは低減する情報処理装置を提供する。その情報処理装置は、パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を記憶するフロー情報記憶手段と、そのフロー情報記憶手段に記憶された情報に基づいて、パケットの送信先である宛先コンピュータがそのパケットを適切に処理するために利用する示唆情報を、そのパケットに付与する第1のネットワークインタフェース及びそのパケットに付与しない第2のネットワークインタフェース、のいずれか一方へそのパケットを転送する切替手段と、を備える。

Description

情報処理装置及びトラフィック制御方法
 本発明は、トラフィック制御技術に関し、特にパケット転送のトラフィック制御技術に関する。
 パケット転送に関する様々な関連技術が知られている。そのような関連技術の1つとして、ネットワークから受信したパケットを効率よく処理する技術が開示されている。
 特許文献1は、キャッシュ制御装置の一例を開示する。特許文献1に記載のキャッシュ制御装置は、以下の構成を含む。
 領域設定手段は、書き込み領域をキャッシュメモリに設定する。ここで、その書き込み領域は、予め定められた量の受信データを書き込み可能な領域である。
 領域削除手段は、書き込み領域に書き込まれた一部または全部の受信データに対する処理ごとに、その処理の対象になった受信データが書き込まれた領域を削除する。
 領域設定手段は、受信データに対する処理ごとに、後続の受信データを書き込む位置に、その後続の受信データを書き込み可能な領域として、削除された領域に相当する量の領域を新たに設定する。ここで、その後続の受信データは、予め定められた量の受信データを受信した後に受信するデータである。
 受信データ判定手段は、書き込み領域に書き込むことが可能な量を超えるデータを受信したか否かを判定する。
  受信データ書き込み手段は、受信データを書き込み領域に書き込む。また、受信データ書き込み手段は、書き込み領域に書き込むことが可能な量を超えた受信データをメインメモリに書き込む。
 データ読取手段は、その受信データをメインメモリからプリフェッチする。
 特許文献1は、そのキャッシュ制御装置が、上述の構成を備えることで、キャッシュメモリの使用量を一定に保ちつつ、かつパケットを欠落させることなく、メモリアクセスに伴う処理遅延が解消し、処理性能を向上させることができる、としている。
 そのメモリアクセスに伴う処理遅延が解消される理由は、以下のメモリアクセスの処理が削減されるためであるとしている。
 第1の削減されるメモリアクセスの処理は、NIC(Network Interface Card)からメモリへの書き込み処理である。第2の削減されるメモリアクセスの処理は、CPU(Central Processing Unit)からメモリへの読み出し処理である。第3の削減されるメモリアクセスの処理は、第2の処理に伴ってキャッシュに記憶されたデータが追い出される際に、そのデータがメモリへ書き出される処理である。
 上述の「受信データをメインメモリからプリフェッチする」技術に関し、非特許文献1及び非特許文献2が開示する技術を、以下に図を用いて順を追って説明する。
 図1は、関連技術におけるコンピュータ107の一般的な構成を示す。図1を参照すると、コンピュータ107は、CPU200と、メインメモリ(Main Memory)300とを備える。更に、コンピュータ107は、I/O(Input/Output)コントローラ(I/O Controller)407を備える。更に、コンピュータ107は、PCI(Peripheral Component Interconnect)-Express(登録商標)デバイス(PCI-Express Devices)650を備える。更に、コンピュータ107は、ストレージデバイス(Storage Devices)660を備える。
 I/Oコントローラ407は、様々なI/Oデバイスに対する、様々なインタフェースを制御するコントローラである。I/Oコントローラ407は、PCI-Expressルートコンプレックス(PCI-Express Root Complex)440を備える。また、I/Oコントローラ407は、シリアルATA(Advanced Technology Attachment)インタフェース(SATA interface)441を備える。更に、I/Oコントローラ407は、その他I/Oインタフェース(Other I/O interfaces)442を備える。I/Oコントローラ407は、CPU200に対して、これらのインタフェースによって接続されるI/Oデバイスに対する、アクセス機能を提供する。
 比較的旧タイプのコンピュータでは、例えば、I/Oコントローラにメモリコントローラが内蔵され、メインメモリがI/Oコントローラに接続されていた。しかし、近年のコンピュータ107では、メモリコントローラ(不図示)の機能はCPU200に統合されているのが一般的である。
 PCI-Expressルートコンプレックス440は、PCI-Expressで構成されるI/Oファブリックの最上位階層に位置し、CPU200とPCI-Expressデバイス650とを接続するためのインタフェースである。
 シリアルATAインタフェース441は、HDD(Hard Disk Drive)やSSD(Solid State Drive)といったストレージデバイスを接続するためのインタフェースである。
 その他I/Oインタフェース442は、例えばUSB(Universal Serial Bus)インタフェースや、PS(Personal System)/2インタフェース、シリアルポートインタフェース、パラレルポートインタフェース、などである。また、その他I/Oインタフェース442は、コンピュータ107に様々な周辺機器を接続するための様々なインタフェースである。
 PCI-Expressデバイス650は、PCI-Expressで構成されるI/Oファブリックに接続されるデバイスであり、PCI-Expressの仕様ではエンドポイントと呼ばれる。このようなデバイスの例として、NICのようなネットワーク接続用のデバイスが挙げられる。また、他の例として、RAID(Redundant Arrays of Independent Disks)などのストレージ装置接続用のデバイスが挙げられる。更に、他の例として、サウンドカードやビデオキャプチャカードなどのAV(Audio Visual)機能を備えたデバイス、などが挙げられる。
 ストレージデバイス660は、ATA規格に従ったストレージデバイスであり、例として、HDDやSSD、Blu-ray(登録商標)ドライブなどが挙げられる。
 図2は、コンピュータ107とは異なる形態の、コンピュータ108の構成を示す。図2を参照すると、コンピュータ108はCPU200にPCI-Expressルートコンプレックス440が内蔵され、PCI-Expressデバイス650がCPU200に直接接続されている点が、コンピュータ107と異なる。更に、コンピュータ108はCPU200同士が直接接続されている点が、コンピュータ107と異なる。
 図3は、CPU200の構造の一例を示す。CPU200は、大きく分けて演算コア220と、キャッシュメモリ223(ローカルキャッシュ222及び共有キャッシュ224)と、キャッシュコントローラ221と、メモリコントローラ225とから構成される。尚、図3では、図2に示すCPU200に内蔵されるPCI-Expressルートコンプレックス440の記載が省略されている。
 図3に示すようにCPU200は、演算コア220を複数備えているのが一般的であり、各演算コア220にキャッシュコントローラ221と、ローカルキャッシュ222が備えられる。
 演算コア220は、様々な命令を実行する。
 キャッシュメモリ223は、演算コア220が使用するデータを格納する。
 ローカルキャッシュ222は、各演算コア220が占有して使用することができるキャッシュメモリである。
 共有キャッシュ224は、演算コア220間で共有されるキャッシュメモリである。この共有キャッシュ224は、一般的にキャッシュメモリ階層の最下層に位置するため、ラストレベルキャッシュとも呼ばれる。
 メモリコントローラ225は、図1及び図2に示すメインメモリ300を制御する。
 キャッシュコントローラ221は、キャッシュメモリ223に対するアクセスを制御する。一般的なコンピュータにおいて、キャッシュメモリの容量は、メインメモリの100分の1程度のサイズであり、ある処理に必要なデータや命令などを部分的にしか格納できない場合が多い。そこで、キャッシュメモリ223にはメインメモリ300から読み出すデータのうち、その時点で演算コア220が必要とするデータのみが格納される。そのため、キャッシュコントローラ221は、キャッシュメモリ223に格納されるデータの入れ替えや、メインメモリ300へのデータの書き戻しなどを制御する。
 ところで、イーサネット(登録商標)などのコンピュータネットワーク(以降、ネットワーク)において、コンピュータ107及びコンピュータ108がパケットを受信する場合、以下のように動作する。第1に、NIC(PCI-Expressデバイス650)が受信したパケットのデータは、メインメモリ300などのコンピュータ107及びコンピュータ108が備えるメインメモリ300に、ストアされる。第2に、CPU200がその受信したパケットの処理をする際に、メインメモリ300からそのパケットのデータが読み出される。
 キャッシュコントローラ221は、メインメモリ300へアクセスする前に、キャッシュメモリ223のいずれかに、処理対象のパケットのデータが格納されているかどうかを確認する。キャッシュメモリ223に必要なデータが格納されていない場合(キャッシュミス時)、キャッシュコントローラ221は、メモリコントローラ225を経由して、メインメモリ300からパケットのデータを読み出す。
 続けて、キャッシュコントローラ221は、読み出したそのパケットのデータをキャッシュメモリ223のいずれかに格納する。どの階層のキャッシュメモリ223に格納するかは、キャッシュコントローラ221の仕様に依存する。仮に、CPU200があるパケットを処理する際に、既に処理対象のそのパケットがキャッシュメモリ223に格納されている場合(ヒット時)、CPU200はメインメモリ300にアクセスすることなく、そのパケットを処理することができる。
 キャッシュメモリ223に対するアクセスのヒット時とキャッシュミス時との違いは、メインメモリ300へのアクセスが行われるかどうかという点である。しかしながら、近年のCPU200における、キャッシュメモリ223に対するアクセスと、メインメモリ300に対するアクセス遅延の差は、数10倍から100倍程度に広がっている。従って、なるべくキャッシュメモリ223に、CPU200が処理するデータが格納されていることが望ましい。
 そのため、CPU200には、CPU200が処理対象のデータを必要とする前に、メインメモリ300からキャッシュメモリ223に、必要なデータを読み出しておくプリフェッチの機能が備わっている。このプリフェッチの機能には、CPU200が自動的に行うハードウェアプリフェッチと、OS(Operating System)やアプリケーションが指示するソフトウェアプリフェッチとが存在する。メインメモリ300からキャッシュメモリ223にデータをプリフェッチしておくことで、CPUがデータを必要とする前に、キャッシュメモリ223にそのデータを格納しておくことが可能となる。
 現在、PCI-Expressデバイスから送信されるデータに対して、ヒントを与える機能がPCI-Expressの仕様で定義されている。ヒントとは、CPU200が受信したパケットのデータを適切に処理するために、利用される情報である。この機能はTLP(Transaction Layer Protocol) Processing Hints(TPH)と呼ばれる。この機能は、PCI-Express 2.1から仕様に取り込まれた。TPHの仕様については非特許文献1に詳しく記載されている。
 TPHは、PCI-Expressファブリックを流れるTLPパケットのヘッダの特定のフィールドに、そのTLPパケットの転送先のメモリアドレスなどに基づいて、ヒント(例えば、ステアリングタグと呼ばれるタグ)を書き込む機能である。このステアリングタグ(ヒント)をどのように扱うかは、TLPパケットを受信する側のデバイス(CPU200やI/Oコントローラ407、I/Oコントローラ408)次第である。
 例えば、Intel(登録商標)社は、DCA(Direct Cache Access)と呼ばれる機能を、CPU200やI/Oコントローラ407、I/Oコントローラ408に搭載している。その機能は、そのヒントに基づいてPCI-Expressデバイスからのデータを、CPU200がハードウェアプリフェッチするための機能である。
 DCAに対応するNICは、TLPパケットにヒントとしてステアリングタグを付加し、CPU200やI/Oコントローラ407、I/Oコントローラ408に向けて、このTLPパケットを送信する。非特許文献2(特に、7.5項)によると、DCAの場合、ステアリングタグには、以下の(1)或いは(2)のいずれかが格納される。(1)DCAが有効か無効かを示すフラグとターゲットとなるキャッシュを示すID。(2)APIC(Advanced Programmable Interrupt Controller) IDに基づくターゲットコアID。
 また、非特許文献2によると、Intel 82599 10Gigabit Ethernet(登録商標) Controllerでは、以下の、(1)、(2)及び(3)のモードが存在する。(1)メインメモリ300に書き戻す受信ディスクリプタのTLPパケット(非特許文献2では、“PCIe TLP”と呼ばれる)に対してヒント(ステアリングタグ:APIC IDに基づくターゲットコアID)を書き込むモード。(2)受信したイーサネットパケットのヘッダバッファへのTLPパケットに対してヒントを書き込むモード。(3)受信したイーサネットパケットのペイロードに対してヒントを書き込むモード。
 このTLPパケットのペイロード部は、一旦メインメモリ300に格納される。その後、CPU200やI/Oコントローラ407、I/Oコントローラ408が、ステアリングタグの情報に基づいて、このペイロード部をキャッシュメモリ223にハードウェアプリフェッチする。このハードウェアプリフェッチによって、ネットワークから受信したパケットが効率よく処理される。
特開2012-164209号公報
Mahesh Wagh、 Intel Corporation、「PCI-SIG PCIe(登録商標)3.0/2.1 Protocol Update」、2011年、2013年12月13日検索、インターネット<url:http://www.pcisig.com/developers/main/training_materials/get_DOCUMENT?doc_id=86f9463d9783d8662793b3d69e49a02a6917b324> Intel Corporation、「Intel 82599 10 GbE Controller Datasheet、 Networking Division」、Revision 2.8」、2013年6月、2013年12月13日検索、インターネット<url:http://www.intel.co.JP/content/www/JP/ja/ethernet-controllers/82599-10-gbe-Controller-datasheet.html>
 以下の分析は、本発明によって与えられたものである。
 しかしながら、上述した先行技術文献に記載された技術においては、キャッシュヒット率が悪化する場合があるという問題点がある。
 その理由は、上述した先行技術文献に記載された技術においては、ネットワークのトラフィック状況や、受信パケットの処理装置の負荷状況などを考慮することなく、プリフェッチを実行するからである。ここで、受信パケットの処理装置は、特許文献1におけるキャッシュ制御装置、上述のコンピュータ107及びコンピュータ108などである。
 例えば、キャッシュヒット率が悪化する場合は、CPUがパケットの受信処理を行う速度よりも、ネットワークからパケットを受信する速度の方が高い場合である。以下に、この場合について、より詳細に説明する。
 図3において、一般的にキャッシュメモリ223は、キャッシュラインという小規模な領域に分けられている。各キャッシュラインは、インデックス番号が割り付けられる。メインメモリ300から読み出されたデータは、特定のインデックス番号を持つキャッシュラインに格納される。その特定のインデックス番号は、そのデータが格納されていたメインメモリ300の、メモリアドレスの特定のフィールドの値と一致するインデックス番号である。
 このようなキャッシュラインの使い方は、ダイレクトマップ方式或いはセットアソシアティブ方式と呼ばれるキャッシュメモリ223で用いられる。これらの方式に基づいて動作するキャッシュメモリ223では、メインメモリ300から読み出されたデータを、キャッシュメモリ223の任意の場所(キャッシュライン)に格納することはできない。
 ここで、特許文献1に開示されるキャッシュ制御装置のキャッシュメモリの使用方法は、メインメモリ300のメモリアドレスとは関係なく使用される方法である。従って、特許文献1に開示される技術は、ダイレクトマップ方式或いはセットアソシアティブ方式のキャッシュメモリ223には適用することができない。
 キャッシュメモリ223がダイレクトマップ方式或いはセットアソシアティブ方式である場合、次のような動作が行われる。メインメモリ300からデータがプリフェッチされた際に、プリフェッチされたデータの格納先となるキャッシュラインが既に使用されていた場合、そのキャッシュラインに格納されていたデータは、メインメモリ300に書き戻される。
 また、上述したように、非特許文献1及び非特許文献2は、DCAと呼ばれる技術を開示している。ここで、CPU200がパケットの受信処理を行う速度よりも、ネットワークからパケットを受信する速度の方が高い場合、DCAのような技術が使用されていると、以下のような問題が発生する可能性がある。
 例えば、CPU200がキャッシュメモリに格納されたN番目のパケットを処理する前に、N+1番目以降のパケットのデータがプリフェッチされる。そのN+1番目以降のパケットのデータがプリフェッチされることによって、N番目のパケットがキャッシュから追い出される場合がある。そうすると、CPU200がキャッシュメモリ223をアクセスした場合にキャッシュミスが発生する。このため、CPU200は、再びN番目のパケットをメインメモリ300から読み出す必要が発生する。こうして、メインメモリ300へのアクセスの分だけ性能が低下する。
 換言すると、DCA技術を用いたプリフェッチによりCPU200におけるキャッシュヒット率が悪化し、スループット及びCPU使用率の点でコンピュータ107及びコンピュータ108の性能が悪化する。
 また、キャッシュヒット率が悪化する場合は、CPU200のキャッシュヒット率が既に悪化している場合である。以下に、このキャッシュヒット率が悪化する場合について、より詳細に説明する。
 関連技術は、トラフィックパターンやトラフィックの優先度、CPU200のキャッシュヒット率など、状況に応じて、プリフェッチをするかどうか使い分けることができない。
 即ち、関連技術ではTLPパケットにTPHを書き込むかどうかの設定は、受信パケットの転送先となるメインメモリ300のアドレスなど、静的な情報に基づいて行われる。
 従って、CPU200のキャッシュヒット率が悪化しているときに、DCAのような技術を用いると、キャッシュメモリ223に格納されているデータの入れ替えが発生し、よりキャッシュヒット率が悪化する可能性がある。
 本発明の目的は、上述した課題を解決する情報処理装置、トラフィック制御方法、及び、そのためのプログラム或いはそのプログラムを記録したコンピュータ読み取り可能な非一時的記録媒体を提供することにある。
 本発明の一様態における第1の情報処理装置は、パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を記憶するフロー情報記憶手段と、前記フロー情報記憶手段に記憶された情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第1の前記ネットワークインタフェース及び前記パケットに付与しない第2の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する切替手段と、を含む。
 本発明の一様態におけるトラフィック制御方法は、パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を保持するフロー情報記憶手段を含むコンピュータが、前記フロー情報記憶手段に記憶された情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第1の前記ネットワークインタフェース及び前記パケットに付与しない第2の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する。
 本発明の一様態におけるコンピュータ読み取り可能な不揮発性非一時的記録媒体は、パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を保持するフロー情報記憶手段を含むコンピュータに、前記フロー情報記憶手段に記憶された情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第1の前記ネットワークインタフェース及び前記パケットに付与しない第2の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する処理を実行させるプログラムを記録する。
 本発明の一様態における第2の情報処理装置は、プロセッサと、プロセッサが切替手段として動作するための、プロセッサによって実行される命令と、パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を示すフロー情報とを保持する記憶部とを含み、前記切替手段は、前記フロー情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第1の前記ネットワークインタフェース及び前記パケットに付与しない第2の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する。
 本発明は、キャッシュヒット率の悪化を防止或いは低減することが可能になるという効果がある。
図1は、関連技術に係るコンピュータの構成を示すブロック図である。 図2は、関連技術に係るコンピュータの構成を示すブロック図である。 図3は、関連技術に係るCPUの構造の一例を示すブロック図である。 図4は、本発明の第1の実施形態に係る、トラフィック制御システムの構成を示すブロック図である。 図5は、第1の実施形態におけるポリシーテーブルの一例を示す図である。 図6は、第1の実施形態におけるインタフェーステーブルの一例を示す図である。 図7は、第1の実施形態におけるフローテーブルの一例を示す図である。 図8は、第1の実施形態におけるフローテーブルにフローエントリが登録されているフローについて、登録内容を変更する処理の流れを示すシーケンス図である。 図9は、第1の実施形態におけるフローテーブルにフローエントリが存在しないフローについて、新規フローエントリを登録する処理の流れを示すシーケンス図である。 図10は、第1の実施形態におけるフローマネージャが登録内容を変更する動作を示すフローチャートである。 図11は、第1の実施形態におけるフローマネージャが新規フローエントリを登録する動作を示すフローチャートである。 図12は、本発明の第2の実施形態に係る、トラフィック制御システムの構成を示すブロック図である。 図13は、本発明の第3の実施形態に係る、トラフィック制御システムの構成を示すブロック図である。 図14は、本発明の第4の実施形態に係る、情報処理装置の構成を示すブロック図である。 図15は、第4の実施形態におけるフローテーブルの一例を示す図である。 図16は、第4の実施形態に係る情報処理装置を実現するコンピュータのハードウェア構成を示すブロック図である。 図17は、第4の実施形態における動作を示すフローチャートである。 図18は、本発明の第5の実施形態に係る、情報処理装置の構成を示すブロック図である。
 本発明を実施するための形態について図面を参照して詳細に説明する。尚、図面参照符号は、理解を助けるための一例として各構成要素に便宜上付与したものであり、本発明を図示の態様に限定するものではない。また、各図面及び明細書記載の各実施形態において、同様の構成要素には同様の図面参照符号を付与し、適宜説明を省略する。
 [第1の実施形態]
 本発明の第1の実施形態について、図面を参照して詳細に説明する。
 [構成の説明]
 図4は、本発明の第1の実施形態に係るトラフィック制御システム801の構成を示すブロック図である。
 図4を参照すると、トラフィック制御システム801は、コンピュータ101と、フローマネージャ(Flow Manager、フロー情報更新手段とも呼ばれる)701と、パケットスイッチ901とを含む。更に、トラフィック制御システム801は、パフォーマンスモニタ(Performance Monitor)700と、ポリシーテーブル(Policy Table)71と、フロー統計情報テーブル(Flow Stat Table)72と、を含む。更に、トラフィック制御システム801は、CPU統計情報テーブル(CPU Stat Table)73と、インタフェーステーブル(I/F TABLE)74と、を含む。
 ===コンピュータ101===
 コンピュータ101は、CPU200と、メインメモリ300(Main Memory)と、I/Oコントローラ(I/O Controller)400と、ネットワークインタフェース(NW I/F)501と、を含む。
 また、コンピュータ101は、図1に示すコンピュータ107のように、ネットワークインタフェース501をI/Oコントローラ400の配下に実装する構成としている。しかし、このことは、コンピュータ101の構成を限定するものではなく、図2に示すコンピュータ108のように、CPU200にネットワークインタフェース501が直接接続される構成としてもよい。こうすることによる本実施形態の差異は、発生しない。
 本実施形態では、I/Oコントローラ400に接続されるネットワークインタフェース501は、例えば、PCI-Expressを介して接続されるものとする。尚、図4のI/Oコントローラ400には、PCI-Expressルートコンプレックス440が図示されていない。しかし、ネットワークインタフェース501は、I/Oコントローラ400に内蔵されるPCI-Expressルートコンプレックス440(不図示)に接続されるものとする。尚、このことは、本実施形態を、PCI-Expressを備えるシステムに、限定するものではない。
 ネットワークインタフェース501は、パケット受信部510と、I/Oインタフェース(I/O I/F)540と、を含む。尚、図4には、ネットワークインタフェース501のパケット受信側の構成のみが示されており、送信側の構成は省略されている。
 パケット受信部510は、ネットワーク(不図示)から受信したパケットの受信処理を実行するモジュールである。本実施形態では、ネットワークをイーサネットとし、IP(Internet Protocol)パケットが流れるものとしているが、このことは、本実施形態をイーサネット、或いはIPネットワークに限定するものではない。
 パケット受信部510は、一般的なネットワークカードの受信処理部が備える機能を備える。その機能の例として、受信パケットチェック機能や、フィルタリング機能など、が挙げられる。受信パケットチェック機能は、受信したパケットのチェックサムを計算し、パケットにデータ破損が起きていないかどうかを確認する機能である。フィルタリング機能は、パケットヘッダに含まれるMAC(Media Access Control)アドレスやVLAN(Virtual Local Area Network)タグ、IPアドレスの情報を元にパケットをフィルタリングする機能である。
 I/Oインタフェース540は、ネットワークインタフェース501の、I/Oコントローラ400に対するインタフェースである。I/Oインタフェース540は、受信したパケットをTLPパケットのペイロード部に収め、I/Oコントローラ400に向けてTLPパケットを送出する。
 本実施形態では、コンピュータ101は、2つ以上のネットワークインタフェース501を含む。各ネットワークインタフェース501に含まれる各I/Oインタフェース540のうち、少なくとも1つのI/Oインタフェース540は、TLPパケットに対してヒント(示唆情報とも呼ばれる)を付与する。即ち、そのI/Oインタフェース540は、TPHが有効である。そして、少なくとも他の1つのI/Oインタフェース540は、TLPパケットに対してヒントを付与しない。即ち、そのI/Oインタフェース540は、TPHが無効である。
 図4に示すように、ヒントを付与する(TPHが有効な)I/Oインタフェース540をI/Oインタフェース(on)540と呼ぶ。また、ヒントを付与しない(TPHが無効な)I/Oインタフェース540をI/Oインタフェース(off)540と呼ぶ。
 ヒントは、例えば、CPU200が受信したパケットのデータを適切に処理するために、利用される情報である。
 具体的には、本実施形態において、ヒントは、CPU200がDCA機能を用いて、メインメモリ300に格納されたデータをハードウェアプリフェッチするために利用される情報である。ここで、そのデータは、ネットワークインタフェース501から受け取ったパケットのデータ(ペイロード)である。そのヒントは、DCAが有効か無効かを示すフラグとターゲットとなるキャッシュを示すIDとを含む。
 換言すると、CPU200は、I/Oインタフェース(on)540から受け取ったTLPパケットに付与されたそのヒントに基づいて、メインメモリ300に格納されたそのTLPパケットのペイロードをキャッシュメモリ223にプリフェッチする。
 ===パフォーマンスモニタ700===
 パフォーマンスモニタ700は、CPU200の統計情報を取得する。次に、パフォーマンスモニタ700は、取得した統計情報を、CPU統計情報テーブル73に格納する。例えば、コンピュータ101が管理インタフェースを備え、パフォーマンスモニタ700は、CPU200の統計情報を、その管理インタフェース経由で取得する。尚、その統計情報は、コンピュータ101の性能に係る性能情報であり、パケットに係る環境状況情報とも呼ばれる。
 CPU200の統計情報の例として、キャッシュヒット率やCPU使用率が挙げられる。例えば、Intel製のCPUであれば、パフォーマンスカウンタの値を読むことで、キャッシュヒット率を取得することができる。また、OSが備えるリソースモニタからCPU使用率を取得することができる。リソースモニタの例として、OSがLinux(登録商標)であれば、topコマンドやmpstatコマンドが挙げられる。
 ===CPU統計情報テーブル73===
 CPU統計情報テーブル73は、パフォーマンスモニタ700が取得したCPU200の統計情報を保持するテーブルである。コンピュータ101は、複数のCPU200、或いは単一のCPU200が複数の演算コア220を備えるのが一般的である。そのため、CPU統計情報テーブル73は、例えば、演算コア220或いはCPU200の識別子をキーとし、演算コア220或いはCPU200の統計情報をバリューとする。
 ===フローマネージャ701===
 フローマネージャ701は、ポリシーテーブル71、フロー統計情報テーブル72、インタフェーステーブル74、フローテーブル(フロー情報記憶手段とも呼ばれる)91及びパフォーマンスモニタ700と接続されている。フローマネージャ701は、ネットワークトラフィックの統計情報を取得し、フロー統計情報テーブル72に格納する。また、フローマネージャ701は、ポリシーテーブル71の内容、インタフェーステーブル74の内容、フローID(後述)、ネットワークトラフィックの統計情報、及びCPU200の統計情報に基づいて、フローテーブル91を更新する。尚、フローIDは、フロー識別子とも呼ばれる。尚、フローマネージャ701は、CPU200の統計情報を、例えばパフォーマンスモニタ700から取得する。
 ネットワークトラフィックの統計情報は、パケットが流れるネットワークのトラフィック情報であり、環境状況情報とも呼ばれる。
 ネットワークトラフィックの統計情報の例として、パケット群単位で算出される、単位時間当たりのトラフィック量、通過パケット数、パケット到着間隔、などが挙げられる。そのパケット群単位は、IPアドレスと、TCP(Transmission Control Protocol)或いはUDP(User Datagram Protocol)のポート番号との組などで識別されるパケット群の単位である。
 フローマネージャ701は、これらの統計情報の値を、例えばパケットスイッチ901から取得する。また、コンピュータ101内において、フロー単位でトラフィックを管理可能なソフトウェアが稼動させられてもよい。この場合、フローマネージャ701は、そのソフトウェアから、これらの統計情報の値を取得してもよい。そのようなソフトウェアの例として、Open vSwitchと呼ばれるソフトウェアが挙げられる。
 尚、「フロー」は、トラフィックをIPアドレス等の特定の値(フローID)によって識別される各パケット群のことを示す。フローの粒度は様々である。例えば、先に述べたIPアドレスやポート番号を使うほか、MACアドレスとVLAN IDの組など利用し、様々な粒度で識別されたパケット群をフローとすることが考えられる。例えば、OpenFlow1.0の仕様においては、パケットヘッダに含まれる情報と、スイッチへの入力ポートの情報とを組み合わせ、最大で12個の情報に基づいて、フローを識別することができる。
 尚、フローマネージャ701は、コンピュータ101上で動くプログラムの形態をとることも、コンピュータ101とは別の装置として実現することも可能である。
 ===ポリシーテーブル71===
 図5は、本実施形態におけるポリシーテーブル71の一例を示す図である。
 ポリシーテーブル71は、どのような状況の時に、どのフローにヒントを付与するかを示すポリシーを保持するテーブルである。
 ポリシーは、例えば以下の(1)から(4)のような、パフォーマンスモニタ700が取得した統計情報を利用したものが考えられる。(1)ある時点での平均パケットサイズがN(Nは、正の整数)バイトを超えたフローに属するパケットは、ヒントを付与される。(2)CPU200のキャッシュヒット率がM(Mは、100以下の正の実数)%を下回った場合、いずれのパケットにもヒントは付与されない。(3)CPU200のキャッシュヒット率がM%を下回った場合、平均パケットサイズがNバイト以下のフローに属するパケットは、ヒントを付与されない。ここで、平均パケットサイズは、フローマネージャ701が取得した統計情報のうち、単位時間当たりの通過バイト数と通過パケット数とから計算され得る。
 ポリシーテーブル71に、あるフローにヒントを付与するポリシーと、ヒントを付与しないポリシーの両方が設定される可能性がある。そして、そのフローがそれらのポリシーの両方を、同時に満たす状況の場合、どちらのポリシーを適用するかを判断する必要がある。例えば、それらのポリシーの1つは、「CPU200のキャッシュヒット率がM%を下回った場合に、全てのパケットにヒントを付与しないこと」である。そして他の1つは、「ある時点での平均パケットサイズがNバイトを超えたフローに属するパケットにヒントを付与すること」である。
 そこで、ポリシーテーブル71に含まれる各ポリシーのそれぞれは、それらの各ポリシー相互間における優先度を有してよい。その優先度は、例えば、ポリシーテーブル71の先頭に近いポリシーほど、高いと定義される。また、ポリシーテーブル71にアクセスすることによって取得されるバリューが、優先度の情報を含んでもよい。
 図5に示すように、ポリシーテーブル71は、ポリシーID(Policy ID)列710、フローID(Flow ID)列711及びスループット(Throughput)列712を含む。更に、ポリシーテーブル71は、平均パケットサイズ(Average packet size)列713、CPU使用率(CPU Utilization)列714及びキャッシュヒット率(Cache Hit Rate)列715を含む。更に、ポリシーテーブル71は、TPH設定値(TPH Setting)列716を含む。
 ポリシーテーブル71は、テーブルの上位の行のエントリほど優先度が高い、つまり、ポリシーID列710の値が小さいほど優先度が高いものとする。ポリシーテーブル71において、例えば、フローID列711からキャッシュヒット率列715までがキーの列であり、TPH設定値列716がバリューの列である。
 ポリシーID列710には、ポリシーの識別子が登録(格納)される。
 図5において、例えばポリシーID=0のポリシーは、以下を示す。MACアドレスがX1であり、VLAN IDがY1であるフローについて、スループットが1Gbps以上、平均パケットサイズが500バイト以上、CPU使用率が30%以下、キャッシュヒット率が50%以上の場合に、TLPパケットはヒントを付与される。この「TLPパケットにヒントを付与すること」は、TPH設定値列716の値が「ON」であることにより示される。
 また、ポリシーID=1のポリシーは、以下を示す。全てのフローについて、スループットが1Gbps以上、平均パケットサイズに依存せず、CPU使用率が90%以上、キャッシュヒット率が30%以下の場合に、TLPパケットはヒントを付与されない。この「TLPパケットにヒントを付与しないこと」は、TPH設定値列716の値が「OFF」であることにより示される。
 フローID列711には、フローの識別子が登録される。フローの識別子は、例えば、MACアドレスやVLAN ID、IPアドレスなどである。
 スループット列712は、ネットワークのスループットに関する条件が格納される。平均パケットサイズ列713は、ネットワークの平均パケットサイズに関する条件が格納される。CPU使用率列714は、CPU200の使用率に関する条件が格納される。キャッシュヒット率列715は、CPU200のキャッシュヒット率に関する条件が格納される。
 フローマネージャ701は、以下のようにポリシーテーブル71を参照する。フローマネージャ701は、ポリシーテーブル71を検索し、受信パケットから得られるフローIDを含み、かつネットワークトラフィックの統計情報及びCPU200の統計情報を満たすレコードを検出する。ここで、そのネットワークトラフィックの統計情報及びCPU200の統計情報は、フローマネージャ701がコンピュータ101或いはパケットスイッチ901から取得する情報である。次に、フローマネージャ701は、検出されたそのレコードのTPH設定値列716の値を得る。
 尚、ポリシーテーブル71において、フローID列711のみがキーの列であり、スループット列712からTPH設定値列716までがバリューの列であってもよい。即ち、フローマネージャ701は、以下のように、ポリシーテーブル71を参照してもよい。まず、フローマネージャ701は、特定の値だけがヒットするフローIDでポリシーテーブル71を検索し、スループット列712からTPH設定値列716までの任意の列の値を取得する。次に、フローマネージャ701は、取得されたその列の値について、現状の値との比較処理を実行し、全ての条件を満たすポリシーに含まれるTPH設定値列716の値を取得する。
 ===フロー統計情報テーブル72===
 フロー統計情報テーブル72は、フローマネージャ701が取得したフローの統計情報を保持するテーブルである。そのため、フロー統計情報テーブル72は、フローIDをキーとし、フローの統計情報(そのフローに対応する、ネットワークトラフィックの統計情報)と、現在ヒントを付与しているかどうかを示すフラグとをバリューとする。
 ===インタフェーステーブル74===
 インタフェーステーブル74は、各コンピュータ101の各ネットワークインタフェース501について、TPHが有効か無効かを管理するテーブルである。
 図6は、本実施形態におけるインタフェーステーブル74の一例を示す図である。インタフェーステーブル74は、スイッチID(Switch ID)列740と、ポートID(Port ID)列741と、コンピュータID(Computer ID)列742と、TPH設定値(TPH Setting)列743と、を少なくとも含む。
 スイッチID列740には、パケットスイッチ901の識別子が格納される。ポートID列741には、ネットワークインタフェース501に接続されるパケットスイッチ901のポートの識別子が格納される。コンピュータID列742には、そのネットワークインタフェース501が収容されているコンピュータ101の識別子が格納される。TPH設定値列743には、そのネットワークインタフェース501においてTPHが有効か無効かを示す値が格納される。
 フローマネージャ701は、フローテーブル91にフローエントリ919(後述)を設定する際に、パケットの出力先の情報を得るために、インタフェーステーブル74を参照する。ここで、パケットの出力先の情報は、ポートID列741の値、即ちネットワークインタフェース501を特定する情報である。例えば、インタフェーステーブル74の値は、外部から静的に与えられる。また、フローマネージャ701が、各パケットスイッチ901、各コンピュータ101からその値を得たり、プローブパケットを投げることでその値を得たりし、得られたその値をインタフェーステーブル74に設定するようにしてもよい。
 ===パケットスイッチ901===
 パケットスイッチ901は、スイッチング制御部990と、フローテーブル91と、を含む。
 スイッチング制御部990は、フローテーブル91に格納される情報に基づいて、パケットをどのネットワークインタフェース501に転送するかを判断する。次に、スイッチング制御部990は、判断されたネットワークインタフェース501へ、そのパケットを送出する。
 図7は、フローテーブル91の一例を示す図である。フローテーブル91は、各パケットの転送先に関する情報を保持するテーブルである。
 図7に示すように、フローテーブル91は、フローエントリ919を含む。フローエントリ919は、フローID(Flow ID)列910をキーの列とし、出力先となるネットワークインタフェース501を特定するポートID(Port ID)列911及びその出力先のTPH設定値列912をバリューの列とする。尚、フローテーブル91は、更にフローの統計情報を含んでもよい。
 フローID列910には、フローIDが格納される。ポートID列911には、パケットスイッチ901のポートIDが格納される。TPH設定値列912には、TPHが有効か無効かを示す値が格納される。
 [動作の説明]
 次に、図面を参照して、本実施形態の動作について詳細に説明する。
 図8は、フローテーブル91にフローエントリ919が登録されているフローについて、登録内容(フローエントリ919の内容)を変更する処理の流れを示すシーケンス図である。例えば、フローマネージャ701は、所定の(例えば、定期的な)タイミングを契機として、その登録内容を変更する処理の実行を開始してよい。
 まず、フローマネージャ701は、パケットスイッチ901から、フローテーブル91のフローエントリ919を読み出す(ステップS700)。
 具体的には、フローマネージャ701は、パケットスイッチ901にフローエントリ919の読み取りを要求する。パケットスイッチ901は、その要求に応答して、フローエントリ919をフローマネージャ701へ送信する。
 次に、フローマネージャ701は、ポリシーテーブル71とフロー統計情報テーブル72とCPU統計情報テーブル73とを参照し、受信されたフローエントリ919の登録内容がポリシーに合っているか否かをチェックする(ステップS710)。尚、フローマネージャ701は、CPU統計情報テーブル73を、パフォーマンスモニタ700を経由して参照する。
 次に、フローマネージャ701は、ポリシーに合っていないフローエントリ919が検出された場合、そのフローエントリ919を更新する(ステップS720)。
 具体的には、フローマネージャ701は、そのフローエントリ919の更新を指示する変更リクエストをパケットスイッチ901に送信する。パケットスイッチ901は、受信された変更リクエストに基づいて、そのフローエントリ919を更新する。
 この変更リクエストは、少なくともフローID列910の値と、更新後の値としてのポートID列911の値及びTPH設定値列912の値と、を含む。
 フローマネージャ701は、そのポートID列911の値を、インタフェーステーブル74から取得する。例えば、フローマネージャ701は、パケットスイッチ901の識別子に基づいて、インタフェーステーブル74から、該当するエントリを取得する。ここで、そのパケットスイッチ901は、ステップS700において、フローマネージャ701が、そこからフローエントリ919を読み出したパケットスイッチ901である。
 次に、フローマネージャ701は、そのポリシーに含まれるTPH設定値列716の値に一致するTPH設定値列743の値を含む、インタフェーステーブル74のエントリを検出する。ここで、そのポリシーは、ステップS720において、ポリシーに合っていないフローエントリ919が検出された場合の、そのポリシーである。続けて、フローマネージャ701は、検出されたそのエントリのポートID列741の値を取得する。このポートID列741の値は、すなわち、パケットの出力先のネットワークインタフェース501を特定する情報である。
 また、フローマネージャ701は、そのTPH設定値列912の値として、そのポリシーに含まれるTPH設定値列716の値を取得する。
 図9は、フローテーブル91にフローエントリ919が登録されていないフローについて、フローテーブル91に新規にフローエントリ919を登録する処理の流れを示すシーケンス図である。例えば、パケットスイッチ901は、受信パケットに対応するフローのエントリがフローテーブル91に登録されていないことを検出した場合に、フローテーブル91に新規にフローエントリ919を登録する処理の実行を開始する。
 まず、パケットスイッチ901は、パケットの転送先の問い合わせを、フローマネージャ701に送信する(ステップS900)。ここで、そのパケットは、フローテーブル91にフローエントリ919が登録されていないフローに属するパケットである。その問い合わせには、少なくともフローIDが含まれる。
 次に、フローマネージャ701は、パケットスイッチ901からの問い合わせに対し、そのフローIDと、CPU統計情報テーブル73に含まれる情報とに基づいて、ポリシーテーブル71からエントリを取得する(ステップS910)。ここで、ポリシーテーブル71を参照する際には、フローの統計情報が必要となるが、新規フローの場合、フローの統計情報は存在しない。このため、フローマネージャ701は、例えば、フローの統計情報として所定の初期値を用いて、ポリシーテーブル71を参照する。
 次に、フローマネージャ701は、パケットスイッチ901から問い合わせのあったパケットに対応するフローエントリ919を、フローテーブル91に追加する(ステップS920)。
 具体的には、フローマネージャ701は、取得されたポリシーテーブル71のエントリに登録されているTPH設定値列716の値に対応する、ポートID列741の値をインタフェーステーブル74から取得する。続けて、フローマネージャ701は、取得されたそのポートID列741の値とそのTPH設定値列716の値と、その問い合わせに含まれるフローIDの情報とを含むフローエントリ919の登録リクエストを、パケットスイッチ901に送信する。その登録リクエストを受信したパケットスイッチ901は、その登録リクエストに基づいて、フローエントリ919を登録する。
 ここで、フローマネージャ701は、以下の手順で、そのポートID列741の値を取得する。第1に、フローマネージャ701は、インタフェーステーブル74から、スイッチID列740の値としてそのパケットスイッチ901の識別子を含む、エントリを取得する。第2に、フローマネージャ701は、取得されたそのエントリの中から、そのTPH設定値列716の値に一致するTPH設定値列743の値を含むエントリの、ポートID列741の値を取得する。
 図10は、図8に示すシーケンス図における、フローマネージャ701の動作を示すフローチャートである。尚、このフローチャートによる処理は、CPU200によるプログラム制御に基づいて、実行されても良い。また、処理のステップ名については、F700のように、記号で記載する。
 まず、フローマネージャ701は、パケットスイッチ901からフローテーブル91のフローエントリ919を読み出す(ステップF700)。
 次に、フローマネージャ701は、フローテーブル91から取得されたフローエントリ919のフローID列910の値を用いて、フロー統計情報テーブル72を参照し、フローの統計情報を取得する(ステップF701)。
 次に、フローマネージャ701は、パフォーマンスモニタ700を経由してCPU統計情報テーブル73からCPU200の統計情報を取得する(ステップF702)。
 次に、フローマネージャ701は、そのフローID列910の値、フローの統計情報及びCPU200の統計情報に基づいて、ポリシーテーブル71を参照し、TPH設定値列716の値を取得する(ステップF703)。ここで、そのフローの統計情報は、ステップF701で取得されたフローの統計情報である。また、そのCPU200の統計情報は、ステップF702で取得されたCPU200の統計情報である。
 次に、フローマネージャ701は、ステップF703で取得されたTPH設定値列716の値と、ステップF700で取得されたフローエントリ919に含まれるTPH設定値列912の値とを比較する(ステップF704)。
 次に、フローマネージャ701は、そのTPH設定値列716の値と、そのTPH設定値列912の値とが同じであった場合(ステップF704の「一致」)、フローエントリ919の変更は必要ないため、処理は完了する。
 一方、これらの値が一致しない場合(ステップF704の「不一致」)、処理はステップF705へ進む。
 次に、フローマネージャ701は、パケットスイッチ901のスイッチIDとステップF703で取得されたTPH設定値列716の値とに基づいて、インタフェーステーブル74を参照し、ポートID列741の値を取得する(ステップF705)。
 次に、フローマネージャ701は、変更リクエストをパケットスイッチ901に送信する(ステップF706)。その変更リクエストは、その変更リクエストに変更後の値として含まれる、ポートID列911の値及びTPH設定値列912の値を用いて、フローテーブル91の該当するフローエントリ919のバリューを更新することを要求するものである。
 その変更リクエストに変更後の値として含まれる、ポートID列911の値及びTPH設定値列912の値のそれぞれは、ステップF705で取得されたポートID列741の値及びステップF703で取得されたTPH設定値列716の値である。
 上述のようにして、フローマネージャ701は、フローテーブル91のフローエントリ919を変更する。
 図11は、図9に示すシーケンス図における、フローマネージャ701の動作を示すフローチャートである。尚、このフローチャートによる処理は、CPU200によるプログラム制御に基づいて、実行されても良い。また、処理のステップ名については、F711のように、記号で記載する。
 まず、フローマネージャ701は、フロー統計情報テーブル72に、パケットスイッチ901から問い合わせのあったフローのエントリを作成し、そのエントリのフローの統計情報を初期化する(ステップF711)。
 次に、フローマネージャ701は、パフォーマンスモニタ700を経由して、CPU統計情報テーブル73から、CPU200の統計情報を取得する(ステップF712)。
 次に、フローマネージャ701は、そのフローのフローIDと、CPU200の統計情報と、フローの統計情報とに基づいて、ポリシーテーブル71を参照し、TPH設定値列716の値を取得する(ステップF713)。ここで、そのフローIDは、パケットスイッチ901から問い合わせのあったフローのフローIDである。そのCPU200の統計情報は、ステップF712で取得されたCPU200の統計情報である。また、そのフローの統計情報は、ステップF712で初期化されたフローの統計情報である。
 次に、フローマネージャ701は、パケットスイッチ901のスイッチIDとステップF713で取得されたTPH設定値列716の値とに基づいて、インタフェーステーブル74を参照し、ポートID列741の値を取得する(ステップF715)。
 次に、フローマネージャ701は、登録リクエストを、パケットスイッチ901に送信する(ステップF716)。その登録リクエストは、フローエントリ919を、フローテーブル91に登録することを要求するものである。その登録リクエストは、パケットスイッチ901から問い合わせのあったフローのフローID、ステップF713で取得されたTPH設定値列716の値及びステップF715で取得されたポートID列741の値を含む。
 上述のようにして、フローマネージャ701は、フローテーブル91に新規のフローエントリ919を追加する。
 本実施形態の変形として、パケットスイッチ901が、新規フロー(フローテーブル91にフローエントリ919が登録されていないフロー)に対するフローエントリ919を生成してもよい。
 例えば、パケットスイッチ901は、その新規フローに属するパケットを、予め定められたデフォルトのパケット出力先ネットワークインタフェース501に出力するフローエントリ919を、生成・登録する。尚、この場合、図9に示すような、フローマネージャ701とパケットスイッチ901とのデータのやりとりは発生しない。
 上述した本実施形態における第1の効果は、キャッシュヒット率の悪化を防止或いは低減することを可能にする点である。
 その理由は、以下のような構成を含むからである。即ち、第1にフローテーブル91がフローID列910とポートID列911との対応を記憶する。第2に、スイッチング制御部990が、フローテーブル91の内容に基づいて、パケットにヒントを付与する及び付与しないネットワークインタフェース501のいずれかにパケットを転送する。
 上述した本実施形態における第2の効果は、パケットに係る環境状況に即して、より効果的にキャッシュヒット率の悪化を防止或いは低減することを可能にする点である。
 その理由は、フローマネージャ701が、コンピュータ101のCPU200に係る性能情報と、その性能情報を条件に含むポリシーテーブル71とに基づいて、フローテーブル91を更新するからである。換言すると、スイッチング制御部990は、更新されたフローテーブル91に基づいて、その時々のCPU200の状況に応じて動的に、TPHを利用する(ヒントを与える)か否かを決定するからである。
 上述した本実施形態における第3の効果は、よりパケットに係る環境状況に即して、より効果的にキャッシュヒット率の悪化を防止或いは低減することを可能にする点である。
 その理由は、フローマネージャ701が、パケットが流れるネットワークに係るトラフィック情報と、そのトラフィック情報を条件に含むポリシーテーブル71とに基づいて、フローテーブル91を更新するからである。換言すると、スイッチング制御部990は、更新されたフローテーブル91に基づいて、その時々のトラフィックの状況に応じて動的に、TPHを利用する(ヒントを与える)か否かを決定するからである。
 上述した本実施形態における第4の効果は、ヒントを与える条件が複雑であっても、比較的容易に、その条件をポリシーテーブル71に設定することが可能になる点である。
 その理由は、ポリシーテーブル71に含まれる各ポリシーのそれぞれが、前記ポリシー相互間における優先度を有するからである。
 <<<第2の実施形態>>>
 次に、本発明の第2の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については説明を省略する。
 図12は、本実施形態に係るトラフィック制御システム802の構成を示すブロック図である。トラフィック制御システム802は、オープンフロー(OpenFlow(登録商標))に対応するシステムである。
 オープンフローについては、以下の文献などに詳しく記載されているため、詳細な説明を省略する。「OpenFlow Switch Specification Version 1.3.1 (Wire Protocol 0x04) September 6,2012」、インターネット<url:https://www.opennetworking.org/images/stories/downloads/sdn-resources/onf-specifications/openflow/openflow-spec-v1.3.1.PDF>。
 図12に示すように、トラフィック制御システム802は、コンピュータ101と、パフォーマンスモニタ700と、オープンフローコントローラ(OpenFlow Controller)702と、オープンフロースイッチ902とを含む。更に、トラフィック制御システム802は、ポリシーテーブル71と、CPU統計情報テーブル73と、インタフェーステーブル74とを含む。
 オープンフローコントローラ702は、オープンフロー仕様に対応したスイッチ(例えばオープンフロースイッチ902)を、オープンフロー仕様に基づいたAPI(Application Programming Interface)を用いて制御する。
 オープンフローコントローラ702は、ポリシーテーブル71とインタフェーステーブル74とを利用し、図8~図11に示される処理と同等の処理を行う。こうすることによって、オープンフローコントローラ702は、オープンフロースイッチ902のフローテーブル91を制御する。その際、オープンフローコントローラ702は、フロー統計情報を、フロー統計情報テーブル72からではなく、オープンフロースイッチ902に含まれるフローテーブル92から取得する。
 オープンフロー仕様では、各オープンフロースイッチ902に備えられるフローテーブル92の各フローエントリに、フローIDと、フローの統計情報と、そのフローに属するパケットに対する処理(アクション)と、が登録される。つまり、フロー統計情報テーブル72相当の機能が、フローテーブル92に含まれる。これにより、オープンフローコントローラ702は、図4に示されるフローマネージャ701から、フロー統計情報テーブル72を除いた構成をとることができる。
 上述した本実施形態における第1の効果は、オープンフローに対応するシステムにおいても、第1の実施形態と同様の効果を得ることが可能になる点である。
 その理由は、オープンフローにフローシステムにおいて、フローマネージャ701及びパケットスイッチ901と同等の機能を有する、オープンフローコントローラ702及びオープンフロースイッチ902とを含むからである。
 上述した本実施形態における第2の効果は、フロー統計情報テーブル72を削減することが可能になる点である。
 その理由は、オープンフロースイッチ902のフローテーブル92が、フロー統計情報テーブル72相当の機能を含むからである。
 <<<第3の実施形態>>>
 次に、本発明の第3の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については説明を省略する。
 図13は、本発明の第3の実施形態に係るトラフィック制御システム803の構成を示す図である。トラフィック制御システム803は、パケットスイッチの機能を含むネットワークインタフェース503を用いた、システムである。
 図13に示すように、トラフィック制御システム803は、コンピュータ103と、フローマネージャ703と、ポリシーテーブル71と、フロー統計情報テーブル72と、CPU統計情報テーブル73と、インタフェーステーブル74とを含む。
 コンピュータ103は、ネットワークインタフェース501の替わりにネットワークインタフェース503を含む点が、図4に示すコンピュータ101と異なる。そして、ネットワークインタフェース503は、複数のI/Oインタフェース540及びパケット受信部510と、更にスイッチング制御部990及びフローテーブル91とを含む点が、図4に示すネットワークインタフェース501と異なる。
 フローマネージャ703は、例えばコンピュータ103の管理インタフェース(不図示)を経由して、フローテーブル91を更新する。
 上述した本実施形態における効果は、第1の実施形態の効果と同様である。
 その理由は、ネットワークインタフェース503がスイッチング制御部990及びフローテーブル91を含み、フローマネージャ703がコンピュータ103に含まれるネットワークインタフェース503のフローテーブル91を更新するからである。
 <<<第4の実施形態>>>
 次に、本発明の第4の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については説明を省略する。
 図14は、本発明の第4の実施形態に係る情報処理装置904の構成を示すブロック図である。
 図14に示すように、本実施形態における情報処理装置904は、フローテーブル94及びスイッチング制御部990を含む。尚、図14に示す各構成要素は、ハードウェア単位の回路でも、コンピュータ装置の機能単位に分割された構成要素でもよい。ここでは、図14に示す構成要素は、コンピュータ装置の機能単位に分割された構成要素として説明する。
 図15は、本実施形態におけるフローテーブル94の一例を示す図である。
 図15に示すように、フローテーブル94は、パケットに含まれる情報であるフローID列910と、ポートID列911との対応を記憶する。ポートID列911の値は、スイッチング制御部990のポート(不図示)を特定する識別子である。従って、ポートID列911の値は、スイッチング制御部990のポートに接続されるネットワークインタフェース(不図示)を特定する。換言すると、フローテーブル94は、パケットに含まれる情報であるフローID列910の値と、ネットワークインタフェースとの対応を記憶する。
 スイッチング制御部990は、フローテーブル94に記憶された情報に基づいて、第1のネットワークインタフェース及び第2の前記ネットワークインタフェースのいずれか一方へ、パケットを転送する。ここで、第1のネットワークインタフェースは、ヒントを、そのパケットに付与する。第2のネットワークインタフェースは、そのヒントをそのパケットに付与しない。そのヒントは、そのパケットの送信先である宛先コンピュータがそのパケットを適切に処理するために、その宛先コンピュータによって利用される。
 以上が、情報処理装置904の機能単位の各構成要素についての説明である。
 次に、情報処理装置904のハードウェア単位の構成要素について説明する。
 図16は、本実施形態における情報処理装置904を実現するコンピュータ970のハードウェア構成を示す図である。
 図16に示すように、コンピュータ970は、CPU(Central Processing Unit)971、記憶部972、記憶装置973、入力部974、出力部975及び通信部976を含む。更に、コンピュータ970は、外部から供給される記録媒体(または記憶媒体)977を含む。例えば、記録媒体977は、情報を非一時的に記憶する不揮発性記録媒体(非一時的記録媒体)である。また、記録媒体977は、情報を信号として保持する、一時的記録媒体であってもよい。
 CPU971は、オペレーティングシステム(不図示)を動作させて、コンピュータ970の全体の動作を制御する。例えば、CPU971は、記憶装置973に装着された記録媒体977から、そのプログラムやデータを読み込み、読み込んだそのプログラムやそのデータを記憶部972に書き込む。ここで、そのプログラムは、例えば、後述の図17に示すフローチャートの動作をコンピュータ970に実行させるためのプログラムである。
 そして、CPU971は、その読み込んだプログラムに従って、またその読み込んだデータに基づいて、図14に示す情報処理装置904として各種の処理を実行する。
 尚、CPU971は、通信網(不図示)に接続されている外部コンピュータ(不図示)から、記憶部972にそのプログラムやそのデータをダウンロードしてもよい。
 記憶部972は、そのプログラムやそのデータを記憶する。記憶部972は、フローテーブル94を含んでよい。
 記憶装置973は、例えば、光ディスク、フレキシブルディスク、磁気光ディスク、外付けハードディスク及び半導体メモリであって、記録媒体977を含む。記憶装置973(記録媒体977)は、そのプログラムをコンピュータ読み取り可能に記憶する。また、記憶装置973は、そのデータを記憶してもよい。記憶装置973は、フローテーブル94を含んでよい。
 入力部974は、オペレータによる操作の入力や外部からの情報の入力を受け付ける。入力操作に用いられるデバイスは、例えば、マウスやキーボード、内蔵のキーボタン及びタッチパネルなどである。
 出力部975は、例えばディスプレイで実現される。出力部975は、例えばGUI(Graphical User Interface)による入力要求や出力などの確認をするために用いられる。
 通信部976は、外部(例えば、図4に示すコンピュータ101やフローマネージャ701など)とのインタフェースを実現する。通信部976は、スイッチング制御部990の一部として含まれる。
 以上説明したように、図14に示す情報処理装置904の機能単位のブロックは、図16に示すハードウェア構成のコンピュータ970によって実現される。但し、コンピュータ970が備える各部の実現手段は、上記に限定されない。すなわち、コンピュータ970は、物理的に結合した1つの装置により実現されてもよいし、物理的に分離した2つ以上の装置を有線または無線で接続し、これら複数の装置により実現されてもよい。
 尚、上述のプログラムのコードを記録した記録媒体977が、コンピュータ970に供給される場合、CPU971は、記録媒体977に格納されたそのプログラムのコードを読み出して実行してもよい。或いは、CPU971は、記録媒体977に格納されたそのプログラムのコードを、記憶部972、記憶装置973またはその両方に格納してもよい。すなわち、本実施形態は、コンピュータ970(CPU971)が実行するそのプログラム(ソフトウェア)を、一時的にまたは非一時的に、記憶する記録媒体977の実施形態を含む。尚、情報を非一時的に記憶する記憶媒体は、不揮発性記憶媒体とも呼ばれる。
 以上が、本実施形態における情報処理装置904を実現するコンピュータ970の、ハードウェア単位の各構成要素についての説明である。
 次に、本実施形態の動作について図面を参照して詳細に説明する。
 図17は、本実施形態の動作を示すフローチャートである。尚、このフローチャートによる処理は、前述したCPU971によるプログラム制御に基づいて、実行されてよい。また、処理のステップ名については、F780のように、記号で記載する。
 スイッチング制御部990は、パケットを受信する(ステップF780)。
 次に、スイッチング制御部990は、受信したそのパケットに含まれるフローIDをキーにしてフローテーブル94を検索し、そのフローIDに対応するポートID列911の値を取得する(ステップF781)。換言すると、スイッチング制御部990は、フローテーブル94に記憶された情報に基づいて、パケットの転送先とするネットワークインタフェースを決定する。
 次に、スイッチング制御部990は、取得したポートID列911の値で特定されるポートから、ステップF780で受信したそのパケットを送信する(ステップF782)。
 上述した本実施形態における効果は、キャッシュヒット率の悪化を防止或いは低減することを可能にする点である。
 その理由は、以下のような構成を含むからである。即ち、第1にフローテーブル94がフローID列910とポートID列911との対応を記憶する。第2に、スイッチング制御部990が、フローテーブル94の内容に基づいて、パケットにヒントを付与する及び付与しないネットワークインタフェースのいずれかにパケットを転送する。
 <<<第5の実施形態>>>
 次に、本発明の第5の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については説明を省略する。
 図18は、本発明の第4の実施形態に係る情報処理装置905の構成を示すブロック図である。
 図18に示すように、本実施形態における情報処理装置905は、図14に示す情報処理装置904と比べて、フローマネージャ704を更に含む点が異なる。また、本実施形態における情報処理装置905は、図14に示す情報処理装置904と比べて、フローテーブル94の替わりに、図7に示すフローテーブル91を含む点が異なる。尚、図18に示す各構成要素は、ハードウェア単位の回路でも、コンピュータ装置の機能単位に分割された構成要素でもよい。ここでは、図18に示す構成要素は、コンピュータ装置の機能単位に分割された構成要素として説明する。
 フローマネージャ704は、受信したパケットに含まれるフローID、そのパケットに係る環境状況情報、及び、ポリシーに基づいて、そのフローIDとネットワークインタフェースとの対応を決定し、フローテーブル91の内容を更新する。
 そのパケットに係る環境状況情報は、例えば、そのパケットの宛先である、コンピュータの性能に係る性能情報である。そのパケットに係る環境状況情報は、そのパケットが流れるネットワークのトラフィック情報であってもよい。また、そのパケットに係る環境状況情報は、その性能情報及びそのトラフィック情報の両方であってもよい。
 そのポリシーは、そのフローIDとその環境状況情報とヒントを与えるか否かを示す情報との対応を示す。
 以上が、情報処理装置905の機能単位の各構成要素についての説明である。
 次に、情報処理装置905のハードウェア単位の構成要素について説明する。本実施形態における情報処理装置905を実現するハードウェア単位の構成要素は、図16に示すコンピュータ970の構成要素であってよい。
 この場合、記憶部972に書き込まれるプログラムは、例えば、図10及び図11に示すフローチャートの動作と同等の動作をコンピュータ970に実行させるためのプログラムである。
 そして、CPU971は、その読み込んだプログラムに従って、またその読み込んだデータに基づいて、図18に示す情報処理装置905として各種の処理を実行する。
 記憶部972及び記憶装置973は、フローマネージャ704の一部として、ポリシーを記憶してもよい。
 入力部974は、オペレータによる操作の入力や外部からの情報の入力を受け付ける。入力操作に用いられるデバイスは、例えば、マウスやキーボード、内蔵のキーボタン及びタッチパネルなどである。入力部974は、フローマネージャ704の一部として、オペレータが入力するポリシーを受け付けてよい。
 通信部976は、スイッチング制御部990の一部として、外部から、ポリシー及びそのパケットに係る環境状況情報を受信してもよい。
 フローマネージャ704の動作は、図10及び図11に示す動作と同等である。
 上述した本実施形態における効果は、第4の実施形態の効果に加えて、パケットに係る環境状況に即して、より効果的にキャッシュヒット率の悪化を防止或いは低減することを可能にする点である。
 その理由は、フローマネージャ704が、フローIDと、環境状況情報と、そのフローID及びその環境状況情報を含むポリシーとに基づいて、フローテーブル91を更新するからである。
 以上の各実施形態で説明した各構成要素は、必ずしも個々に独立した存在である必要はない。例えば、各構成要素は、複数の構成要素が1個のモジュールとして実現されてよい。また、各構成要素は、1つの構成要素が複数のモジュールで実現されてもよい。また、各構成要素は、ある構成要素が他の構成要素の一部であるような構成であってよい。また、各構成要素は、ある構成要素の一部と他の構成要素の一部とが重複するような構成であってもよい。
 以上説明した各実施形態における各構成要素及び各構成要素を実現するモジュールは、必要に応じ、可能であれば、ハードウェア的に実現されてよい。また、各構成要素及び各構成要素を実現するモジュールは、コンピュータ及びプログラムで実現されてよい。また、各構成要素及び各構成要素を実現するモジュールは、ハードウェア的なモジュールとコンピュータ及びプログラムとの混在により実現されてもよい。
 そのプログラムは、例えば、磁気ディスクや半導体メモリなど、不揮発性のコンピュータ可読記録媒体に記録されて提供され、コンピュータの立ち上げ時などにコンピュータに読み取られる。この読み取られたプログラムは、そのコンピュータの動作を制御することにより、そのコンピュータを前述した各実施形態における構成要素として機能させる。
 また、以上説明した各実施形態では、複数の動作をフローチャートの形式で順番に記載してあるが、その記載の順番は複数の動作を実行する順番を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の順番は内容的に支障のない範囲で変更することができる。
 更に、以上説明した各実施形態では、複数の動作は個々に相違するタイミングで実行されることに限定されない。例えば、ある動作の実行中に他の動作が発生したり、ある動作と他の動作との実行タイミングが部分的に乃至全部において重複していたりしていてもよい。
 更に、以上説明した各実施形態では、ある動作が他の動作の契機になるように記載しているが、その記載はある動作と他の動作との全ての関係を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の関係は内容的に支障のない範囲で変更することができる。また各構成要素の各動作の具体的な記載は、各構成要素の各動作を限定するものではない。このため、各構成要素の具体的な各動作は、各実施形態を実施する上で機能的、性能的、その他の特性に対して支障をきたさない範囲内で変更されてよい。
 以上、各実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解しえる様々な変更をすることができる。
 この出願は、2013年12月17日に出願された日本出願特願2013-260131を基礎とする優先権を主張し、その開示の全てをここに取り込む。
 101  コンピュータ
 103  コンピュータ
 107  コンピュータ
 108  コンピュータ
 200  CPU
 220  演算コア
 221  キャッシュコントローラ
 222  ローカルキャッシュ
 223  キャッシュメモリ
 224  共有キャッシュ
 225  メモリコントローラ
 300  メインメモリ(Main Memory)
 400  I/Oコントローラ(I/O Controller)
 407  I/Oコントローラ(I/O Controller)
 408  I/Oコントローラ(I/O Controller)
 440  PCI-Expressルートコンプレックス(Root Complex)
 441  シリアルATAインタフェース(SATA interface)
 442  その他I/Oインタフェース(Other I/O interface)
 501  ネットワークインタフェース(NW I/F)
 503  ネットワークインタフェース
 510  パケット受信部
 540  I/Oインタフェース(I/O I/F)
 650  PCI-Expressデバイス(Devices)
 660  ストレージデバイス(Storage Devices)
 700  パフォーマンスモニタ(Performance Monitor)
 701  フローマネージャ(Flow Manager)
 702  オープンフローコントローラ(OpenFlow Controller)
 703  フローマネージャ(Flow Manager)
 704  フローマネージャ(Flow Manager)
 71  ポリシーテーブル(Policy Table)
 710  ポリシー(Policy)ID列
 711  フロー(Flow)ID列
 712  スループット(Throughput)列
 713  平均パケットサイズ(Average paket size)列
 714  CPU使用率(Utilization)列
 715  キャッシュヒット率(Cache Hit Rate)列
 716  TPH設定値(Setting)列
 72  フロー統計情報テーブル(Flow Stat Table)
 73  CPU統計情報テーブル(CPU Stat Table)
 74  インタフェーステーブル(I/F Table)
 740  スイッチ(Switch)ID列
 741  ポート(Port)ID列
 742  コンピュータ(Computer)ID列
 743  TPH設定値(Setting)列
 801  トラフィック制御システム
 802  トラフィック制御システム
 803  トラフィック制御システム
 901  パケットスイッチ
 902  オープンフロースイッチ
 904  情報処理装置
 905  情報処理装置
 990  スイッチング制御部
 91  フローテーブル
 910  フロー(Flow)ID列
 911  ポート(Port)ID列
 912  TPH設定値(Setting)列
 919  フローエントリ
 94  フローテーブル
 970  コンピュータ
 971  CPU
 972  記憶部
 973  記憶装置
 974  入力部
 975  出力部
 976  通信部
 977  記録媒体

Claims (10)

  1.  パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を記憶するフロー情報記憶手段と、
     前記フロー情報記憶手段に記憶された情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第1の前記ネットワークインタフェース及び前記パケットに付与しない第2の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する切替手段と、を含む
     情報処理装置。
  2.  前記フロー識別子、前記パケットに係る環境状況情報、及び、前記フロー識別子と前記環境状況情報と前記示唆情報を与えるか否かを示す情報との対応を示すポリシーに基づいて、前記フロー識別子と前記ネットワークインタフェースとの対応を決定し、前記フロー情報記憶手段の内容を更新するフロー情報更新手段を更に含む、
     ことを特徴とする請求項1記載の情報処理装置。
  3.  前記フロー情報更新手段は、前記宛先コンピュータの性能に係る性能情報を取得し、
     前記環境状況情報は、前記性能情報を含む
     ことを特徴とする請求項2記載の情報処理装置。
  4.  前記性能情報は、前記宛先コンピュータに係るCPU使用率及びキャッシュヒット率である
     ことを特徴とする請求項3記載の情報処理装置。
  5.  前記フロー情報更新手段は、更に、前記パケットが流れるネットワークのトラフィック情報を取得し、
     前記環境状況情報は、前記トラフィック情報を含む
     ことを特徴とする請求項2乃至4のいずれか1項に記載の情報処理装置。
  6.  前記ポリシーのそれぞれは、前記ポリシー相互間における優先度を有する
     ことを特徴とする請求項2乃至5のいずれか1項に記載の情報処理装置。
  7.  前記切替手段及び前記フロー情報更新手段のそれぞれは、オープンフローに対応する
     ことを特徴とする請求項2乃至6のいずれか1項に記載の情報処理装置。
  8.  パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を保持するフロー情報記憶手段を含むコンピュータが、
     前記フロー情報記憶手段に記憶された情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第1の前記ネットワークインタフェース及び前記パケットに付与しない第2の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する
     トラフィック制御方法。
  9.  パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を保持するフロー情報記憶手段を含むコンピュータに、
     前記フロー情報記憶手段に記憶された情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第1の前記ネットワークインタフェース及び前記パケットに付与しない第2の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する処理を実行させるプログラムを記録した
     コンピュータ読み取り可能な非一時的記録媒体。
  10.  プロセッサと、
     プロセッサが切替手段として動作するための、プロセッサによって実行される命令と、パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を示すフロー情報とを保持する記憶部とを含み、
     前記切替手段は、前記フロー情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第1の前記ネットワークインタフェース及び前記パケットに付与しない第2の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する
     情報処理装置。
PCT/JP2014/005785 2013-12-17 2014-11-18 情報処理装置及びトラフィック制御方法 WO2015092973A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US15/105,109 US10097658B2 (en) 2013-12-17 2014-11-18 Traffic control of packet transfer
JP2015553350A JPWO2015092973A1 (ja) 2013-12-17 2014-11-18 情報処理装置及びトラフィック制御方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2013260131 2013-12-17
JP2013-260131 2013-12-17

Publications (1)

Publication Number Publication Date
WO2015092973A1 true WO2015092973A1 (ja) 2015-06-25

Family

ID=53402355

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/005785 WO2015092973A1 (ja) 2013-12-17 2014-11-18 情報処理装置及びトラフィック制御方法

Country Status (3)

Country Link
US (1) US10097658B2 (ja)
JP (1) JPWO2015092973A1 (ja)
WO (1) WO2015092973A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10721098B2 (en) 2015-08-28 2020-07-21 Vmware, Inc. Optimizing connectivity between data centers in a hybrid cloud computing system
US10721161B2 (en) * 2015-08-28 2020-07-21 Vmware, Inc. Data center WAN aggregation to optimize hybrid cloud connectivity
US11593134B2 (en) * 2018-01-26 2023-02-28 Nicira, Inc. Throttling CPU utilization by implementing a rate limiter
US11082338B1 (en) * 2018-04-17 2021-08-03 Amazon Technologies, Inc. Distributed connection state tracking for large-volume network flows
CN114780501A (zh) * 2021-01-22 2022-07-22 伊姆西Ip控股有限责任公司 数据处理方法、电子设备和计算机程序产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008257596A (ja) * 2007-04-06 2008-10-23 Nec Corp データプリフェッチデバイス、データプリフェッチ方法およびデータプリフェッチプログラム
JP2010225085A (ja) * 2009-03-25 2010-10-07 Fujitsu Ltd スイッチ、スイッチの制御方法及びスイッチシステムの制御方法
US20130132683A1 (en) * 2006-11-02 2013-05-23 Jasmin Ajanovic Pci express enhancements and extensions
US20130173834A1 (en) * 2011-12-30 2013-07-04 Advanced Micro Devices, Inc. Methods and apparatus for injecting pci express traffic into host cache memory using a bit mask in the transaction layer steering tag

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012164209A (ja) 2011-02-08 2012-08-30 Nec Corp キャッシュ制御方法、キャッシュ制御装置およびキャッシュ制御用プログラム
US9450870B2 (en) * 2011-11-10 2016-09-20 Brocade Communications Systems, Inc. System and method for flow management in software-defined networks

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130132683A1 (en) * 2006-11-02 2013-05-23 Jasmin Ajanovic Pci express enhancements and extensions
JP2008257596A (ja) * 2007-04-06 2008-10-23 Nec Corp データプリフェッチデバイス、データプリフェッチ方法およびデータプリフェッチプログラム
JP2010225085A (ja) * 2009-03-25 2010-10-07 Fujitsu Ltd スイッチ、スイッチの制御方法及びスイッチシステムの制御方法
US20130173834A1 (en) * 2011-12-30 2013-07-04 Advanced Micro Devices, Inc. Methods and apparatus for injecting pci express traffic into host cache memory using a bit mask in the transaction layer steering tag

Also Published As

Publication number Publication date
JPWO2015092973A1 (ja) 2017-03-16
US20160323406A1 (en) 2016-11-03
US10097658B2 (en) 2018-10-09

Similar Documents

Publication Publication Date Title
US11269518B2 (en) Single-step configuration of storage and network devices in a virtualized cluster of storage resources
US7496698B2 (en) System and method for efficient implementation of a shared receive queue
US8843706B2 (en) Memory management among levels of cache in a memory hierarchy
JP5658197B2 (ja) 計算機システム、仮想化機構、及び計算機システムの制御方法
TWI570563B (zh) 後置中斷架構
US8495265B2 (en) Avoiding non-posted request deadlocks in devices by holding the sending of requests
US7653773B2 (en) Dynamically balancing bus bandwidth
WO2015092973A1 (ja) 情報処理装置及びトラフィック制御方法
US20060288129A1 (en) DMA descriptor queue read and cache write pointer arrangement
US7853957B2 (en) Doorbell mechanism using protection domains
US8788726B2 (en) Data transmission system, storage medium and data transmission program
JP2017512350A (ja) 集中型ネットワーキング及びストレージのための方法及びシステム
JP2007207007A (ja) ストレージシステム、ストレージコントローラ及び計算機システム
EP4220419B1 (en) Modifying nvme physical region page list pointers and data pointers to facilitate routing of pcie memory requests
US9298658B2 (en) Using PCI-E extended configuration space to send IOCTLS to a PCI-E adapter
JP2014130420A (ja) 計算機システム及び計算機の制御方法
JP2021048513A (ja) 情報処理装置、情報処理方法および仮想マシン接続管理プログラム
JP2007087059A (ja) 記憶制御システム
WO2016095762A1 (zh) 一种虚拟机访问控制方法,及虚拟机访问控制系统
KR20220035242A (ko) 호스트 컴퓨팅 디바이스와 네트워크 인터페이스 디바이스를 포함하는 프로그래머블 네트워크 인터페이스 디바이스
JP2007072521A (ja) 記憶制御システム及び記憶制御装置
US9921753B2 (en) Data replication across host systems via storage controller
JP2005293478A (ja) 記憶制御システム、記憶制御システムに備えられるチャネル制御装置、データ転送装置
JP6200100B2 (ja) 計算機システム
US20240168876A1 (en) Solving submission queue entry overflow using metadata or data pointers

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: 14871906

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2015553350

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 15105109

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14871906

Country of ref document: EP

Kind code of ref document: A1