WO2020122024A1 - ネットワークインタフェースカード、コンピュータ、回路情報の書き換え方法及びプログラム - Google Patents

ネットワークインタフェースカード、コンピュータ、回路情報の書き換え方法及びプログラム Download PDF

Info

Publication number
WO2020122024A1
WO2020122024A1 PCT/JP2019/048118 JP2019048118W WO2020122024A1 WO 2020122024 A1 WO2020122024 A1 WO 2020122024A1 JP 2019048118 W JP2019048118 W JP 2019048118W WO 2020122024 A1 WO2020122024 A1 WO 2020122024A1
Authority
WO
WIPO (PCT)
Prior art keywords
programmable logic
logic circuit
packet
mode
circuit
Prior art date
Application number
PCT/JP2019/048118
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 JP2020560100A priority Critical patent/JP7439767B2/ja
Publication of WO2020122024A1 publication Critical patent/WO2020122024A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running

Definitions

  • the present invention is based on the priority claim of Japanese Patent Application: Japanese Patent Application No. 2018-231098 (filed on Dec. 10, 2018), and the entire contents of the application are incorporated by reference in this document. I shall.
  • the present invention relates to a network interface card, a computer, a circuit information rewriting method, and a program.
  • SNIC Smart NIC
  • FPGA Field-Programmable Gate Array
  • NIC network interface card
  • Patent Documents 1 to 4 disclose a method of rewriting FPGA circuit information in a communication device or the like equipped with an FPGA without interrupting communication or service. Further, Patent Documents 5 to 6 disclose methods of rewriting firmware and control programs without interrupting service.
  • Patent Document 1 discloses a configuration in which a plurality of communication processing circuits are configured in a variable area inside an FPGA, and one of them is switched to operate and the other circuit configuration can be updated.
  • Patent Document 1 In the configuration of Patent Document 1, there are problems that two communication processing circuits are arranged in the variable area, which causes restrictions on the circuit size and makes the device itself expensive. This point is the same in Patent Documents 3, 5, and 6.
  • Patent Document 2 in a configuration in which an FPGA is connected to a CPU, while the version of the FPGA program is being upgraded, the configuration in which the CPU performs the VM data processing performed by the FPGA on its behalf is merely disclosed. Further, when considering application to SNIC, the method of Patent Document 2 cannot be adopted because it does not have an element that can substitute the processing of FPGA. Further, the method of Patent Document 4 is to temporarily stop the data transmission from the router during the FPGA upgrade, and in the narrow sense, it cannot be said that the service to the user is not stopped.
  • the present invention relates to a network interface card equipped with a programmable logic circuit typified by an FPGA, which can contribute to a reduction in the influence on the system availability due to the rewriting of the circuit information, a computer, and a circuit information rewriting method. And to provide a program.
  • a programmable logic circuit that processes an input packet according to recorded circuit information, an input end and an output end of the programmable logic circuit, respectively, are provided. And a pair of switches capable of switching between a first mode for sending a packet to a second mode and a second mode for bypassing without going through the programmable logic circuit, and executing a packet process on behalf of the programmable logic circuit.
  • a computer equipped with a processor capable of executing a feasible application program, a computer side interface for transmitting the packet, and a pair of switches for setting a second switch when rewriting the circuit information of the programmable logic circuit.
  • a switch control circuit for switching to a mode, and a network interface card configured to execute packet processing by the computer instead of the programmable logic circuit when rewriting the circuit information.
  • a computer equipped with the above-mentioned network interface card is provided.
  • a programmable logic circuit that processes an input packet according to recorded circuit information, an input end of the programmable logic circuit, and an output end of the programmable logic circuit, respectively. And a pair of switches capable of switching between a first mode for sending a packet to a second mode and a second mode for bypassing without going through the programmable logic circuit, and executing a packet process on behalf of the programmable logic circuit.
  • a computer equipped with a processor capable of executing a feasible application program, a computer side interface for transmitting the packet, and a pair of switches for setting a second switch when rewriting the circuit information of the programmable logic circuit.
  • a method of rewriting the circuit information of a network interface card comprising a switch control circuit for switching to a mode comprising: activating an application program capable of executing packet processing in place of the programmable logic circuit; Rewriting circuit information, in which the switch is switched from the first mode to the second mode and the circuit information is rewritten, and then the pair of switches is switched from the second mode to the first mode.
  • a method is provided. The method is tied to a specific machine, a computer with a network interface card.
  • a programmable logic circuit for processing an input packet according to recorded circuit information, an input end and an output end of the programmable logic circuit are respectively arranged, and the programmable logic circuit is arranged. And a pair of switches capable of switching between a first mode for sending a packet to a second mode and a second mode for bypassing without going through the programmable logic circuit, and executing a packet process on behalf of the programmable logic circuit.
  • a computer equipped with a processor capable of executing a feasible application program, a computer side interface for transmitting the packet, and a pair of switches for setting a second switch when rewriting the circuit information of the programmable logic circuit.
  • a switch control circuit for switching to a mode which is a program for rewriting the circuit information of a network interface card, the process comprising activating an application program capable of executing a packet process in place of the programmable logic circuit; A process of switching a pair of switches from the first mode to the second mode, and a process of switching the pair of switches from the second mode to the first mode after rewriting the circuit information.
  • a program that causes the computer to execute can be recorded in a computer-readable (non-transitary) storage medium. That is, the present invention can be embodied as a computer program product.
  • the present invention in a network interface card equipped with a programmable logic circuit, it is possible to reduce the influence on the system availability due to the rewriting of the circuit information. That is, the present invention is to convert the network interface card shown in the background art into a card that is less likely to lose availability due to rewriting of circuit information.
  • the computer device is configured to be capable of communicating with a device (including a computer) inside or outside the device via a communication interface, whether wired or wireless.
  • a device including a computer
  • a and/or B is used to mean at least one of A and B.
  • the present invention comprises a programmable logic circuit 11, a pair of switches 12, 13, a computer side interface (IF) 14, and a switch control circuit 15, as shown in FIG. It can be realized by the network interface card 10.
  • the programmable logic circuit 11 processes the input packet according to the recorded circuit information.
  • the switches 12 and 13 are respectively arranged at the input end and the output end of the programmable logic circuit 11.
  • the switches 12 and 13 are configured to be switchable between a first mode for sending a packet to the programmable logic circuit 11 and a second mode for bypassing the programmable logic circuit 11 without going through the programmable logic circuit 11.
  • the computer 20 is equipped with a processor capable of executing an application program capable of executing packet processing, instead of the programmable logic circuit 11.
  • the computer side interface (IF) 14 is capable of transmitting packets to the computer 20.
  • the switch control circuit 15 can switch the pair of switches 12 and 13 to the second mode when rewriting the circuit information of the programmable logic circuit 11.
  • the network interface card 10 executes packet processing by the computer instead of the programmable logic circuit 11 when rewriting the circuit information.
  • the pair of switches 12 and 13 is set to the first mode for sending a packet to the programmable logic circuit 11.
  • the software bottleneck can be eliminated and the performance can be expected to improve.
  • FIG. 4 is a diagram showing the configuration of the first exemplary embodiment of the present invention.
  • the IA server 200 is an abbreviation for the Intel Architecture server.
  • APL/OS is an abbreviation for Application and Operating System, respectively.
  • FIG. 4 shows a packet processing program body that processes a packet transmitted/received to/from the network side by using the SNIC 100.
  • the APP 201 uses the NIC driver 203 to perform packet transmission/reception with the SNIC 100.
  • the APP 201 can control and manage the circuit information of the FPGA 111 via the FPGA driver 204.
  • the APP201 instructs the S-SW112 and N-SW113 via the FPGA Driver 204 to switch the operation mode and to specify a rule for identifying an exception packet (described later). Further, the APP 201 manages starting and stopping of the Alt-SIM 202. Specifically, the APP 201 activates the Alt-SIM 202 before starting the update of the FPGA 111, and controls the Alt-SIM 202 in place of the FPGA 111 so that a series of packet processing can be executed. Further, the APP 201 receives the notification of the activation of the FPGA 111 and stops the Alt-SIM 202 when the Alt-SIM 202 is no longer needed.
  • the APP 201 also has a function of assisting memory synchronization between the Alt-SIM 202 and the FPGA 111 to synchronize memory contents such as packet count information of the FPGA 111.
  • memory synchronization for example, a method may be used in which a memory space for synchronization with the FPGA 111 is prepared on the OS, and the information in the DRAM 118 is synchronized by periodically exchanging packets with the modules 120 (described later) in the FPGA 111. it can.
  • the APP 201 has a function of passing the synchronized memory area (space) prepared in the OS to the Alt-SIM 202 in order to complete the memory synchronization before starting the update of the FPGA 111.
  • the APP 201 performs memory synchronization between the Alt-SIM 202 and the FPGA 111 before switching processing to the FPGA 111.
  • a packet for memory synchronization with the modules 120 (described later) at this time is called an exception packet.
  • a specific example of the exception packet will be described later in detail.
  • the NIC driver 203 is a driver that controls packet transmission/reception of the SNIC 100.
  • the FPGA driver 204 is a driver for controlling the FPGA 111 in the SNIC 100. Updating of the circuit information of the FPGA can be executed by using this driver. Further, the FPGA driver 204 notifies the APP 201 of completion of activation of the FPGA 111 and the like.
  • the CPU/RAM 205 shows a general physical component group that constitutes a computer represented by the IA server 200 (see FIG. 10).
  • CPU is an abbreviation for Central Processing Unit
  • RAM is an abbreviation for Random Access Memory.
  • FIG. 4 a configuration including an FPGA 111, an S-SW 112, an N-SW 113, an Ether Network Controller 114, a PCIE Controller 115, a QSFP 117, and a FLASH 119 is shown.
  • the FPGA 111 is composed of an area (Writable FPGA) 116 that can be rewritten into arbitrary circuit information and a permanent circuit, and processes an input packet according to the processing logic defined by the circuit information. Further, the FPGA loads the circuit information from the FLASH 119 and writes the circuit information in the rewritable area (Writable FPGA) 116 at the time of startup. In FIG. 4, this circuit information is shown as modules 120.
  • the FPGA 111 has a dedicated interface with the FLASH 119, PCIE Controller 115, and DRAM 118. In FIG. 4, these are shown as FLASH-IF, PCIE-IF, and RAM-IF, respectively.
  • the EtherNetwork Controller 114 is a dedicated hardware chip that performs low-layer network processing within the SNIC 100.
  • the EtherNetwork Controller 114 provides an interface with the above OS and various drivers. Therefore, the EtherNetwork Controller 114 takes on the function of the computer side interface (IF) 14 described above.
  • IF computer side interface
  • the PCIE controller 115 is a hardware module for controlling the FPGA 111. Specifically, the PCIe Controller 115 commands the FPGA 111 to restart the FPGA 111 and update its circuit information under the control of the FPGA Driver. In addition, the PCIE controller 115 notifies the state of the FPGA 111 to the APP 201 side via the FPGA driver. Further, the PCIE controller 115 also functions as a switch control circuit (see the switch control circuit 15) that switches between the S-SW 112 and the N-SW 113 according to an instruction from the APP 201.
  • FLASH 119 is composed of a non-volatile flash memory and holds circuit information of FPGA 111.
  • the FLASH 119 can be rewritten by writing the data from the external storage medium or the like to the FLASH 119 via the OS on the CPU or the NIC driver 203.
  • the DRAM 118 is a Dynamic RAM included in the SNIC 100.
  • DRAM 118 is typically volatile and modules 120 within FPGA 111 are used to store temporary information for the process.
  • the modules 120 are processing logic written in the rewritable area (Writable FPGA) 116 of the FPGA 111.
  • the modules 120 function as an offload destination of a part of the processing of the APP 201, thereby eliminating the software bottleneck of the entire system. Further, the modules 120 have a mechanism of packetizing the DRAM information and transmitting/receiving the packet to/from the APP 201 to perform memory synchronization with the Alt-SIM 202 via the APP 201.
  • QSFP 117 is an interface for packet input of SNIC 100.
  • the QSFP 117 serves as a cable connection point.
  • QSFP is an abbreviation for Quad Small Form-factor Pluggable, and is a transceiver standard.
  • the S-SW 112 is a module that determines and executes whether to transfer a packet (uplink packet) received from the outside via the QSFP 117 of the SNIC 100 to the FPGA 111 or to the N-SW 113 without passing through the FPGA 111. Further, the S-SW 112 has a function of transferring a packet (downstream packet) received from the N-SW 113 or the FPGA 111 via the QSFP 117 to the outside of the SNIC.
  • the S-SW 112 has the following two types of operation modes, and the operation mode can be switched by the APP 201 via the PCIe Controller 115.
  • the exception packet refers to a packet that matches the rule instructed by the APP 201 via the PCIE controller 115.
  • an ID (VID) of a specific VLAN, a packet having a specific MAC address, or the like can be designated as the exception packet, and the corresponding packet can be sent to the FPGA 111.
  • this exception packet is used for memory synchronization. The details will be described later.
  • the N-SW 113 is a module that determines and executes whether to transfer a packet (downstream packet) received from the Ether Network Controller 114 to the FPGA 111 or to the S-SW 112 without passing through the FPGA 111. Further, the N-SW 113 has a function of transferring a packet (uplink packet) received from the FPGA 111 or the S-SW 112 of the SNIC 100 to the Ether Network Controller 114.
  • the N-SW113 has the following two types of operation modes, and similarly to the S-SW112, the APP201 can switch the operation mode via the PCIE controller 115.
  • the exception packet refers to a packet that matches the rule instructed by the APP 201 via the PCIE controller 115. For example, an ID (VID) of a specific VLAN, a packet having a specific MAC address, or the like can be designated as the exception packet, and the corresponding packet can be sent to the FPGA 111.
  • VIP ID
  • the Alt-SIM 202 is an alternative module (computer program) that performs the same process as the modules 120 in the FPGA 111. When the modules 120 in the FPGA 111 cannot operate, they can be switched and used. However, the processing performance of the Alt-SIM 202 may be lower than that of the Alt-SIM 202 of the FPGA 111.
  • FIG. 5 is a flowchart showing the operation of the first exemplary embodiment of the present invention.
  • the APP 201 activates the Alt-SIM 202 to update the circuit of the FPGA 111 (step S001).
  • the APP 201 performs memory synchronization with the FPGA 111 (step S002).
  • This memory synchronization can be implemented by reflecting the difference from the last synchronization.
  • the APP 201 confirms that the Alt-SIM 202 is activated, and then passes the memory area synchronized with the FPGA 111 to the Alt-SIM 202 (step S003). After that, the Alt-SIM 202 is ready to execute the same process as the modules 120.
  • the APP 201 switches the N-SW 113 and the S-SW 112 to the bypass mode via the FPGA Driver 204 (step S004).
  • the APP 201 specifies a rule for specifying the memory synchronization exception packet to the N-SW 113 and the S-SW 112.
  • the APP 201 switches the operation so that the packet received from the NIC Driver 203 is processed by using the Alt-SIM 202 (step S005). Specifically, the packet received from the NIC driver 203 is passed to the Alt-SIM 202, and the packet output from the Alt-SIM 202 is sent to the N-SW 113 side.
  • the APP 201 instructs the FPGA driver 204 to update the FPGA 111 (step S006). After that, the circuit information is updated on the FPGA 111 side.
  • FIG. 6 is a flowchart showing details of the update processing of the FPGA 111 in this embodiment.
  • the FPGA driver 204 downloads new circuit information and arranges it in the FLASH 119 (step S102).
  • the FPGA driver 204 instructs the FPGA 111 to restart (step S103).
  • the FPGA 111 restarts and loads new circuit information from the FLASH 119 (step S104).
  • the FPGA 111 starts operation with new circuit information (step S105).
  • the FPGA driver 204 notifies the APP 201 that the activation of the FPGA 111 has been completed (step S106).
  • the operation after the completion of the activation of the FPGA 111 will be described.
  • the APP 201 Upon receiving the activation completion notification of the FPGA 111 (step S008), the APP 201 performs memory synchronization between the Alt-SIM 202 and the FPGA 111 (step S009).
  • the APP 201 instructs the FPGA driver 204 to switch the S-SW 112 and N-SW 113 to the FPGA mode (step S010).
  • the APP 201 stops the Alt-SIM 202 (step S011).
  • the S-SW 112 and the N-SW 113 are made to continue the packet transfer even while the circuit information of the FPGA 111 is being updated, and the alternative module performs the packet processing to continue the service. be able to. Specifically, even when the FPGA 111 shown in FIG. 6 is updated, the Alt-SIM 202 continues processing as an alternative module, so that the service can be prevented from being completely stopped. Further, as is clear from the above description, the present embodiment has an advantage that the rewritable area 116 of the FPGA 111 can be sufficiently used even in comparison with the method described in the patent document described in the background art. ..
  • a virtual switch may be interposed between the SNIC 100 and the APP 201. is assumed. In this case, appropriate settings may be made so that the virtual switch also passes the exception packet. For example, an appropriate instruction may be issued to an SDN (Software Defined Network) controller that controls the virtual switch. Even in this case, the memory synchronization can be implemented by treating the memory synchronization packet independently of other packets.
  • SDN Software Defined Network
  • FIG. 7 is a diagram showing the configuration of the second exemplary embodiment of the present invention.
  • the difference from the first embodiment shown in FIG. 4 is that a module called D-CTRL 121 is added between the DRAM 118 and the FPGA 111. Further, along with this, changes are made to the PCIE controller 115a and the APP 201a. Since other configurations are basically the same as those of the first embodiment, the difference will be mainly described below.
  • the characteristic that the DRAM 118 is energized even when the FPGA 111 is restarted and the stored information inside does not disappear is used. That is, the memory synchronization itself can be omitted by directly referring to the DRAM 118 from the Alt-SIM 202 even while the FPGA 111 is restarting. After the FPGA 111 has been started, the FPGA 111 can continue processing by reattaching the DRAM 118 to the FPGA.
  • the D-CTRL 121 is a module (memory control unit) that controls access from the FPGA 111 or Alt-SIM 202 to the DRAM 118.
  • the D-CTRL 121 is also connected to the PCIE controller 115a.
  • the D-CTRL 121 normally permits only the access from the FPGA 111.
  • the D-CTRL 121 controls to allocate a part or the whole area of the DRAM 118 to the application on the OS represented by the Alt-SIM 202.
  • the PCIE controller 115a is a hardware module for controlling the FPGA 111. Specifically, the PCIE controller 115a commands the FPGA 111 to restart the FPGA 111 and update its circuit information under the control of the FPGA driver. In addition, the PCIE controller 115a notifies the state of the FPGA 111 to the APP 201a side via the FPGA driver.
  • the PCIE controller 115a also functions as a switch control circuit (see the switch control circuit 15) that switches between the S-SW 112 and the N-SW 113 according to an instruction from the APP 201a.
  • the PCIE controller 115a of this embodiment instructs the D-CTRL 121 to switch the access subject to the DRAM. Specifically, the PCIE controller 115a changes the subject that can access the DRAM 118 from the FPGA 111 to the Alt-SIM 202. In addition, the PCIE controller 115a changes the subject that can access the DRAM 118 from the Alt-SIM 202 to the FPGA 111.
  • APP 201a issues an instruction via FPGA Driver 204 to make the memory area of DRAM 118 accessible to applications. This allows the Alt-SIM 202 to directly refer to the DRAM 118. Further, the APP 201a performs a process of returning the memory area of the DRAM 118 to a state in which it can be referred to by the FPGA 111 via the FPGA driver 204.
  • FIG. 8 is a flowchart showing the operation of the second exemplary embodiment of the present invention.
  • the APP 201a activates the Alt-SIM 202 to update the circuit of the FPGA 111 (step S201).
  • the APP 201a switches the access subject of the DRAM 118 to the application (step S202).
  • This instruction is given via the FPGA driver 204, the PCIE controller 115a, and the D-CTRL 121.
  • the APP 201a confirms the activation of the Alt-SIM 202 and passes the access right of the DRAM 118 to the Alt-SIM 202 (step S203). After that, the Alt-SIM 202 is ready to execute the same process as the modules 120.
  • the APP 201a switches the N-SW 113 and S-SW 112 to bypass mode via the FPGA driver 204 (step S204).
  • the APP 201a switches the operation so that the packet received from the NIC Driver 203 is processed by using the Alt-SIM 202 (step S205). Specifically, the packet received from the NIC driver 203 is passed to the Alt-SIM 202, and the packet output from the Alt-SIM 202 is sent to the N-SW 113 side.
  • the APP 201a instructs the FPGA driver 204 to update the FPGA 111 (step S206). After that, the circuit information is updated on the FPGA 111 side.
  • the update of the circuit information on the FPGA 111 side is the same as that in the first embodiment, and thus the description is omitted.
  • the access entity of the DRAM 118 is returned from the Alt-SIM 202 to the FPGA 111 (step S209).
  • the FPGA 111 can thereafter refer to the DRAM 118.
  • the APP 201a instructs the FPGA driver 204 to switch the S-SW 112 and N-SW 113 to the FPGA mode (step S210).
  • the APP 201a stops the Alt-SIM 202 (step S211).
  • the S-SW 112 and the N-SW 113 continue the packet transfer even while the circuit information of the FPGA 111 is being updated, and the alternative module performs the packet processing to provide the service. You can continue. Specifically, even when the FPGA 111 shown in FIG. 6 is updated, the Alt-SIM 202 continues processing as an alternative module, so that the service can be prevented from being completely stopped. Further, also in comparison with the first embodiment, there is an advantage that the processing of the exception packet for memory synchronization can be omitted.
  • the present invention can be applied to an SNIC of a type in which the function of the NIC chip is realized by FPGA.
  • the S-SW 112a and the N-SW 113a are arranged at the input/output ends of the rewritable area (Writable FPGA) 116 in the FPGA 111 as shown in FIG. 9 (third embodiment).
  • the functions implemented in the FPGA 111 of each of the above-described embodiments are not limited to communication encryption and communication processing such as packet ordering.
  • the FPGA 111 can be made to handle the processing of the higher layer as described below.
  • Web Service is also applied to, for example, a SNIC that realizes a web service in which dynamic web content is generated by a circuit on the FPGA 111 and static content is responded by the APP 201 on the IA server 200 side. It is possible.
  • dynamic Web content creation uses CPU resources, so by implementing a circuit that creates a dynamic Web page in the FPGA 111, it is possible to speed up the response and improve the user experience.
  • an external DB database
  • an external service API Application Programming Interface
  • other services are often used to generate a dynamic Web page via a network. Further performance improvement can be expected by implementing such a function in the FPGA 111 in the SNIC.
  • the Web service session manages not only the context information of the security layer such as SSL/TLS but also the context of the user session (for example, even if the back button of the browser is pressed, the screen transition that is impossible as the user session). Therefore, the web service may not be able to generate the same web page as before).
  • SSL and TLS are abbreviations for Secure Sockets Layer and Transport Layer Security, respectively.
  • these pieces of context information are held on the DRAM 118 in the SNIC 100.
  • this context information so as to be synchronized with an alternative module (equivalent to Alt-SIM 202 described above) that generates an alternative dynamic Web page, disconnection of a user session can be avoided even when the circuit in the FPGA 111 is updated. .. This also has an advantage that the user does not have to re-login to the Web service.
  • Image recognition application As a driving support service, a service in which a moving image captured by a vehicle-mounted camera is analyzed and processed at a data center at a mobile edge to recognize a dangerous object and notify a nearby vehicle is assumed.
  • the present invention is also applicable to SNICs that realize such services.
  • performance for example, the number of recognitions/second
  • the image recognition engine needs to be updated daily to improve it, but by applying the present invention, the image recognition engine can be updated without stopping the service.
  • IA servers of the above-described first to third embodiments are exemplified in the configuration including the CPU (Central Processing Unit) 9010, the communication interface 9020, the memory 9030, and the auxiliary storage device 9040 of FIG.
  • CPU Central Processing Unit
  • the programmable logic circuit of the network interface card is configured to take over the information in the memory from the memory control unit so that the processing performed by the computer can be taken over after the circuit information is rewritten.
  • [Sixth form] See the computer from the second viewpoint above
  • [Seventh mode] Refer to the circuit information rewriting method from the third viewpoint
  • [Eighth mode] Refer to the program from the fourth viewpoint above
  • the sixth to eighth forms can be expanded to the second to fifth forms as in the first form.
  • any numerical value or small range included in the range should be construed as specifically described even if not otherwise specified.
  • each disclosure item of the above cited documents is, if necessary, in accordance with the gist of the present invention, as a part of the disclosure of the present invention, part or all thereof may be used in combination with the description items of the present document, It is considered to be included in the disclosure of the present application.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Communication Control (AREA)
  • Logic Circuits (AREA)

Abstract

プログラム可能論理回路を搭載したネットワークインタフェースカード(NIC)の回路情報の書き換えに伴うシステムの可用性への影響を低減する。NICは、記録された回路情報に従って、入力されたパケットの処理を行うプログラム可能論理回路と、前記プログラム可能論理回路の入力端と、出力端にそれぞれ配置され、前記プログラム可能論理回路にパケットを送る第1のモードと、前記プログラム可能論理回路を経由せずにバイパスする第2のモードとを切り替え可能な1対のスイッチと、前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを実行可能なプロセッサが搭載されたコンピュータに、前記パケットを送信するコンピュータ側インタフェースと、前記プログラム可能論理回路の前記回路情報の書き換えの際に、前記1対のスイッチを第2のモードに切り替えるスイッチ制御回路と、を備える。

Description

ネットワークインタフェースカード、コンピュータ、回路情報の書き換え方法及びプログラム
 [関連出願についての記載]
 本発明は、日本国特許出願:特願2018-231098号(2018年12月10日出願)の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
 本発明は、ネットワークインタフェースカード、コンピュータ、回路情報の書き換え方法及びプログラムに関する。
 大規模なデータセンターやVNF(Virtual Network Function)をはじめとした通信事業者の運用設備においてはソフトウェアの仮想化が進み、一台の汎用サーバに複数のシステムを集約した構成が一般的になっている。その一方で、この種の構成では、ソフトウェアで実現していた通信機能については性能不足が指摘されている。 
 こうした事情から、ネットワークインタフェースカード(以下、NIC)にFPGA(Field-Programmable Gate Array)を載せたSmart NIC(SNIC)と呼ばれる製品が登場している。このSNICは、CPUで実施していたパケットのヘッダやペイロード等の変更、転送といった、いわゆるパケット処理のうち、ソフトウェア処理では性能が出せないような一部モジュールをSNIC内のFPGA回路として実装している。これにより、ソフトウェアボトルネックが解消されて、性能向上を期待できると言われている。
 特許文献1~4には、FPGAを搭載した通信機器等において通信やサービスを中断せずにFPGAの回路情報の書き換えを行う方法が開示されている。また、特許文献5~6には、サービスを中断せずにファームウェアや制御プログラムの書き換えを行う方法が開示されている。
特開2017-69777号公報 国際公開第2017/170311号 特開2015-176343号公報 特開2008-177900号公報 特開2010-79837号公報 特開2007-202068号公報
 以下の分析は、本発明によって与えられたものである。上記したSNICに代表される機器では、大きな性能改善が見込める一方、FPGAの回路情報の更新が発生しうる。回路情報の更新中は、FPGAの再起動と回路情報の読み出しが必須となるため、その間、処理ができなくなるという問題点がある。この点、特許文献1では、FPGA内部の可変領域に複数の通信処理回路を構成し、いずれか一方を切り替えて動作させるとともに、他方の回路構成を更新できる構成が開示されている。
 しかしながら、特許文献1の構成では、可変領域に2つの通信処理回路を配置することになり、回路サイズの制約が生じたり、装置自体が高価になってしまうという問題点がある。この点は、特許文献3、5、6も同様である。
 その他、特許文献2は、CPUにFPGAを結合した構成において、FPGAプログラムをバージョンアップしている間、CPUにてFPGAで行っていたVMのデータ処理を代行する構成を開示するに止まっている。また、SNICへの適用を考えた場合、FPGAの処理を代行しうる要素を持っていないので特許文献2の方法は採用し得ない。また、特許文献4の方法は、FPGAのアップグレード中にルータからのデータ送信を一時的に停止させるものであり、狭義の意味でユーザに対するサービスを停止させないものとは言いえない。
 本発明は、FPGAに代表されるプログラム可能論理回路を搭載したネットワークインタフェースカードにおいて、その回路情報の書き換えに伴うシステムの可用性への影響の低減に貢献できるネットワークインタフェースカード、コンピュータ、回路情報の書き換え方法及びプログラムを提供することを目的とする。
 第1の視点によれば、記録された回路情報に従って入力されたパケットの処理を行うプログラム可能論理回路と、前記プログラム可能論理回路の入力端と、出力端にそれぞれ配置され、前記プログラム可能論理回路にパケットを送る第1のモードと、前記プログラム可能論理回路を経由せずにバイパスする第2のモードとを切り替え可能な1対のスイッチと、前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを実行可能なプロセッサが搭載されたコンピュータに、前記パケットを送信するコンピュータ側インタフェースと、前記プログラム可能論理回路の前記回路情報の書き換えの際に、前記1対のスイッチを第2のモードに切り替えるスイッチ制御回路と、を備え、前記回路情報の書き換え時に、前記プログラム可能論理回路に代わって、前記コンピュータによりパケットの処理を実行可能に構成されているネットワークインタフェースカードが提供される。
 第2の視点によれば、上記したネットワークインタフェースカードを搭載したコンピュータが提供される。
 第3の視点によれば、記録された回路情報に従って入力されたパケットの処理を行うプログラム可能論理回路と、前記プログラム可能論理回路の入力端と、出力端にそれぞれ配置され、前記プログラム可能論理回路にパケットを送る第1のモードと、前記プログラム可能論理回路を経由せずにバイパスする第2のモードとを切り替え可能な1対のスイッチと、前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを実行可能なプロセッサが搭載されたコンピュータに、前記パケットを送信するコンピュータ側インタフェースと、前記プログラム可能論理回路の前記回路情報の書き換えの際に、前記1対のスイッチを第2のモードに切り替えるスイッチ制御回路と、を備えたネットワークインタフェースカードの前記回路情報の書き換え方法であって、前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを起動し、前記1対のスイッチを、前記第1のモードから前記第2のモードに切り替え、前記回路情報を書き換えた後に、前記1対のスイッチを、前記第2のモードから前記第1のモードに切り替える、回路情報の書き換え方法が提供される。本方法は、ネットワークインタフェースカードを搭載したコンピュータという、特定の機械に結びつけられている。
 第4の視点によれば、記録された回路情報に従って入力されたパケットの処理を行うプログラム可能論理回路と、前記プログラム可能論理回路の入力端と、出力端にそれぞれ配置され、前記プログラム可能論理回路にパケットを送る第1のモードと、前記プログラム可能論理回路を経由せずにバイパスする第2のモードとを切り替え可能な1対のスイッチと、前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを実行可能なプロセッサが搭載されたコンピュータに、前記パケットを送信するコンピュータ側インタフェースと、前記プログラム可能論理回路の前記回路情報の書き換えの際に、前記1対のスイッチを第2のモードに切り替えるスイッチ制御回路と、を備えたネットワークインタフェースカードの前記回路情報の書き換えプログラムであって、前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを起動する処理と、前記1対のスイッチを、前記第1のモードから前記第2のモードに切り替える処理と、前記回路情報を書き換えた後に、前記1対のスイッチを、前記第2のモードから前記第1のモードに切り替える処理と、を前記コンピュータに実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な(非トランジトリーな)記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
 本発明によれば、プログラム可能論理回路を搭載したネットワークインタフェースカードにおいて、その回路情報の書き換えに伴うシステムの可用性への影響を低減することが可能となる。即ち、本発明は、背景技術に示したネットワークインタフェースカードを、回路情報の書き換えに伴い可用性が損なわれる可能性の少ないものへと変換するものとなっている。
本発明の一実施形態の構成を示す図である。 本発明の一実施形態の動作を説明するための図である。 本発明の一実施形態の動作を説明するための図である。 本発明の第1の実施形態の構成を示す図である。 本発明の第1の実施形態の動作を表したフローチャートである。 本発明の第1の実施形態のFPGAの更新処理の詳細を表したフローチャートである。 本発明の第2の実施形態の構成を示す図である。 本発明の第2の実施形態の動作を表したフローチャートである。 本発明の第3の実施形態の構成を示す図である。 本発明のネットワークインタフェースカードを搭載コンピュータの構成を示す図である。
 はじめに本発明の一実施形態の概要について図面を参照して説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。また、以降の説明で参照する図面等のブロック間の接続線は、双方向及び単方向の双方を含む。一方向矢印については、主たる信号(データ)の流れを模式的に示すものであり、双方向性を排除するものではない。また、図中の各ブロックの入出力の接続点には、ポート乃至インタフェースがあるが図示省略する。プログラムはコンピュータ装置を介して実行され、コンピュータ装置は、例えば、プロセッサ、記憶装置、入力装置、通信インタフェース、及び必要に応じ表示装置を備える。また、コンピュータ装置は、通信インタフェースを介して装置内又は外部の機器(コンピュータを含む)と、有線、無線を問わず、交信可能に構成される。また、以下の説明において、「A及び/又はB」は、A及びBの少なくともいずれかという意味で用いる。
 本発明は、その一実施形態において、図1に示すように、プログラム可能論理回路11と、1対のスイッチ12、13と、コンピュータ側インタフェース(IF)14と、スイッチ制御回路15と、を備えるネットワークインタフェースカード10にて実現できる。
 より具体的には、プログラム可能論理回路11は、記録された回路情報に従って入力されたパケットの処理を行う。スイッチ12、13は、それぞれ前記プログラム可能論理回路11の入力端と、出力端にそれぞれ配置される。そして、このスイッチ12、13はプログラム可能論理回路11にパケットを送る第1のモードと、前記プログラム可能論理回路11を経由せずにバイパスする第2のモードとを切り替え可能に構成される。コンピュータ20は、プログラム可能論理回路11に代わり、パケットの処理を実行可能なアプリケーションプログラムを実行可能なプロセッサが搭載されている。そして、コンピュータ側インタフェース(IF)14は、コンピュータ20に、パケットを送信可能となっている。スイッチ制御回路15は、プログラム可能論理回路11の前記回路情報の書き換えの際に、1対のスイッチ12、13を第2のモードに切替可能となっている。上記構成において、ネットワークインタフェースカード10は、前記回路情報の書き換え時に、前記プログラム可能論理回路11に代わって、前記コンピュータによりパケットの処理を実行する。
 例えば、通常の動作時、図2に示すように、1対のスイッチ12、13は、プログラム可能論理回路11にパケットを送る第1のモードに設定されている。これにより、上述したSNICと同様に、ソフトウェアボトルネックが解消し、性能向上を見込むことができるようになっている。
 一方、プログラム可能論理回路11の前記回路情報の書き換えの際、1対のスイッチ12、13は、図3に示すように、第2のモードに切り替えられる。そして、プログラム可能論理回路11の前記回路情報の書き換えの間、前記プログラム可能論理回路11に代わって、前記コンピュータによりパケットを処理させる。従って、ユーザに対するサービスを停止させずに、プログラム可能論理回路11の回路情報の書き換えを実施することが可能となっている。
[第1の実施形態]
 続いて、本発明の第1の実施形態について図面を参照して詳細に説明する。図4は、本発明の第1の実施形態の構成を示す図である。図4を参照すると、SNIC100を搭載したIAサーバ200と、そのIAサーバ200上で動作するプログラム群(APL/OS)210の詳細構成が示されている。なお、IAサーバ200は、Intel Architectureサーバの略である。また、APL/OSは、それぞれ、Application、Operating Systemの略である。
 図4のAPP201は、SNIC100を用いてネットワーク側と授受するパケットを処理するパケット処理プログラム本体を示す。APP201は、NIC Driver203を使用してSNIC100でパケット受送信を行う。また、APP201は、FPGA Driver204経由で、FPGA111の回路情報を制御し、また管理可能となっている。
 APP201は、FPGA Driver204経由で、S-SW112、N-SW113に対し、動作モードの切り替えや、例外パケット(後述)を特定するためのルールを指示する。また、APP201は、Alt-SIM202の起動、停止を管理する。具体的には、APP201は、FPGA111の更新開始前に、Alt-SIM202を起動し、FPGA111に代わって、Alt-SIM202を使用して一連のパケット処理を実行できるように制御する。また、APP201は、FPGA111の起動通知を受けて、Alt-SIM202が不要になればAlt-SIM202を停止する。
 また、APP201は、Alt-SIM202とFPGA111間で、FPGA111のパケットカウント情報等のメモリ内容を同期するメモリ同期を補助する機能を担う。このメモリ同期は、例えば、OS上にFPGA111との同期用メモリ空間を用意しておき、FPGA111内のmodules120(後述)との定期的なパケット授受により、DRAM118の情報を同期する方法を採ることができる。また、APP201は、FPGA111の更新開始前に、メモリ同期を完了させるべく、Alt-SIM202へ、前記OS内に用意した同期済みのメモリ領域(空間)を渡す機能を具備する。また、APP201は、FPGA111へ処理を切り替える前に、Alt-SIM202とFPGA111間のメモリ同期を行う。このときのmodules120(後述)とのメモリ同期用のパケットを例外パケットという。例外パケットの具体例については後に詳述する。
 NIC Driver203は、SNIC100のパケット送受信を制御するドライバである。
 FPGA Driver204は、SNIC100内のFPGA111を制御するためのドライバである。FPGAの回路情報の更新等は、このドライバを使って実行することができる。また、FPGA Driver204は、FPGA111の起動完了等をAPP201に通知する。
 CPU/RAM205は、IAサーバ200に代表されるコンピュータを構成する一般的な物理部品群を示している(図10参照)。なお、CPUは、Central Processing Unitの略であり、RAMは、Random Access Memoryの略である。
 続いて、SNIC100の構成について説明する。図4を参照すると、FPGA111と、S-SW112と、N-SW113と、Ether Network Controller114と、PCIE Controller115と、QSFP117、FLASH119とを備えた構成が示されている。
 FPGA111は、任意の回路情報に書き換え可能な領域(Writable FPGA)116と、恒久的な回路とで構成されて、回路情報によって定義された処理ロジックに従って入力されたパケットを処理する。また、FPGAは、起動時に、FLASH119から回路情報をロードして、書き換え可能領域(Writable FPGA)116に回路情報を書き込む。図4において、この回路情報はmodules120として示されている。FPGA111は、FLASH119、PCIE Controller115、DRAM118との専用インタフェースを持っている。図4において、これらはそれぞれFLASH-IF、PCIE-IF、RAM-IFで示されている。
 Ether Network Controller114は、SNIC100内の低レイヤのネットワーク処理を行う専用ハードウェアチップである。Ether Network Controller114が、上記したOSや各種ドライバとのインタフェースを提供する。従って、Ether Network Controller114が、上記したコンピュータ側インタフェース(IF)14としての機能を担うことになる。
 PCIE Controller115は、FPGA111を制御するためのハードウェアモジュールである。具体的には、PCIE Controller115は、FPGA Driverからの制御に従い、FPGA111に対し、FPGA111の再起動やその回路情報の更新を命令する。また、PCIE Controller115は、FPGA Driver経由でAPP201側に、FPGA111の状態を通知する。また、PCIE Controller115は、APP201からの指示に従い、S-SW112、N-SW113を切り替えるスイッチ制御回路(スイッチ制御回路15参照)としても機能する。
 FLASH119は、不揮発性のフラッシュメモリで構成され、FPGA111の回路情報を保持する。FLASH119の書き換えは、外部記憶媒体等から、CPU上のOSもしくはNIC Driver203を経由してFLASH119に書き出すことで実施できる。
 DRAM118は、SNIC100内に具備されているDynamicRAMである。DRAM118は、一般的に揮発性であり、FPGA111内のmodules120が処理の一時的な情報を記憶するために使用される。
 modules120は、FPGA111の書き変え可能領域(Writable FPGA)116に書き込まれた処理ロジックである。このmodules120は、APP201の処理の一部のオフロード先として機能することで、システム全体のソフトウェアボトルネックが解消される。さらに、modules120は、DRAMの情報をパケット化して、APP201とのパケット授受により、APP201経由でAlt-SIM202とメモリ同期する機構を持つ。
 QSFP117は、SNIC100のパケット入力用のインタフェースである。このQSFP117は、ケーブルの結線ポイントになる。なお、QSFPは、Quad Small Form-factor Pluggableの略であり、トランシーバの規格である。
 続いて、上記したFPGA111の回路情報の更新中に、パケット処理を継続させるための構成について説明する。
 S-SW112は、SNIC100のQSFP117経由で外部から受信したパケット(上りパケット)をFPGA111へ転送するか、もしくはFPGA111を経由しないでN-SW113に転送するかを判断、実行するモジュールである。また、S-SW112は、QSFP117を介して、N-SW113もしくは、FPGA111から受信したパケット(下りパケット)をSNIC外へ転送する機能を具備する。
 S-SW112には、下記の2種類の動作モードがあり、APP201により、PCIE Controller115経由で動作モードを切り替えられる。
A)FPGA経由モード(第1のモードに相当):
 S-SW112は、上りパケットをFPGA111へ転送する。
B)バイパスモード(第2のモードに相当):
 S-SW112は、上りパケットのうち例外パケット以外をすべてN-SW113へ転送し、例外パケットをFPGA111へ転送する。ここで、例外パケットとは、PCIE Controller115経由でAPP201より指示されたルールにマッチしたパケットを指す。例えば、例外パケットとして、特定のVLANのID(VID)や、特定MACアドレス等を持つパケットを指定することができ、該当するパケットをFPGA111に送ることができる。本実施形態では、この例外パケットをメモリ同期に用いている。その詳細は後述する。
 N-SW113は、Ether Network Controller114から受信したパケット(下りパケット)をFPGA111へ転送するか、もしくはFPGA111を経由しないでS-SW112に転送するかを判断、実行するモジュールである。また、N-SW113は、SNIC100のFPGA111もしくはS-SW112から受信したパケット(上りパケット)を、Ether Network Controller114へ転送する機能を具備する。
 N-SW113には、下記の2種類の動作モードがあり、S-SW112と同様に、APP201により、PCIE Controller115経由で動作モードを切り替えられる。
A)FPGA経由モード(第1のモードに相当):
 N-SW113は、下りパケットをFPGAへ転送する。
B)バイパスモード(第2のモードに相当):
 N-SW113は、下りパケットのうち例外パケット以外をすべてS-SW112へ転送し、例外パケットをFPGA111へ転送する。ここで、例外パケットとは、PCIE Controller115経由でAPP201より指示されたルールにマッチしたパケットを指す。例えば、例外パケットとして、特定のVLANのID(VID)や、特定MACアドレス等を持つパケットを指定することができ、該当するパケットをFPGA111に送ることができる。
 Alt-SIM202は、FPGA111内のmodules120と同等の処理を行う代替モジュール(コンピュータプログラム)である。FPGA111内のmodules120が動作できないときに、切り替えて利用できる。ただし、Alt-SIM202の処理性能は、FPGA111のAlt-SIM202より低いものであってもよい。
 続いて、本実施形態の動作について図面を参照して詳細に説明する。図5は、本発明の第1の実施形態の動作を表したフローチャートである。図5を参照すると、まず、APP201は、FPGA111の回路を更新するため、Alt-SIM202を起動する(ステップS001)。
 次に、APP201は、FPGA111とのメモリ同期を行う(ステップS002)。このメモリ同期は、最後の同期からの差分を反映することで実施できる。
 次に、APP201は、Alt-SIM202の起動を確認後、Alt-SIM202に、FPGA111との同期済のメモリ領域を渡す(ステップS003)。以降、Alt-SIM202はmodules120と同等の処理を実行できる状態になる。
 次に、APP201は、FPGA Driver204経由でN-SW113及びS-SW112をバイパスモードに切り替える(ステップS004)。このとき、メモリ同期用のパケットを通すために、APP201は、N-SW113及びS-SW112に対し、メモリ同期用の例外パケットを特定するためのルールを指定する。
 次に、APP201は、NIC Driver203から受信したパケットをAlt-SIM202を用いてパケット処理するように動作を切り変える(ステップS005)。具体的には、NIC Driver203から受信したパケットをAlt-SIM202に渡し、Alt-SIM202から出力されたパケットをN-SW113側に送る処理を行う。
 次に、APP201は、FPGA Driver204に対し、FPGA111の更新を指示する(ステップS006)。以降、FPGA111側で回路情報の更新が行われる。
 図6は、本実施形態におけるFPGA111の更新処理の詳細を表したフローチャートである。FPGA Driver204は、APP201からFPGA111の更新指示を受信すると(ステップS101)、新しい回路情報をダウンロードし、FLASH119に配置する(ステップS102)。
 次に、FPGA Driver204は、FPGA111に再起動を指示する(ステップS103)。
 次に、FPGA111は再起動し、FLASH119から新しい回路情報をロードする(ステップS104)。
 以降、FPGA111は、新しい回路情報にて動作を開始する(ステップS105)。FPGA Driver204は、FPGA111の起動完了をAPP201に通知する(ステップS106)。
 再度、図5を参照して、上記FPGA111の起動完了後の動作を説明する。APP201は、前記FPGA111の起動完了通知を受け取ると(ステップS008)、Alt-SIM202とFPGA111間のメモリ同期を行う(ステップS009)。
 メモリ同期の完了後、APP201は、FPGA Driver204に対し、S-SW112及びN-SW113をFPGAモードに切り替えるよう指示する(ステップS010)。
 最後に、APP201は、Alt-SIM202を停止する(ステップS011)。
 以上説明したとおり、本実施形態によれば、FPGA111の回路情報の更新中もS-SW112、N-SW113にパケットの転送を継続させ、代替モジュールにてパケットの処理を行わせ、サービスを継続することができる。具体的には、上記図6に示したFPGA111更新時においても、代替モジュールとして、Alt-SIM202が処理を続けることで、サービスの完全停止を防ぐことができる。また、上記した説明からも明らかなように、本実施形態は、背景技術に記載した特許文献記載の手法との対比においても、FPGA111の書き変え可能な領域116を十分に利用できるという利点がある。
 なお、上記した実施形態では、メモリ同期のために、S-SW112、N-SW113のバイパスモードで例外パケットの設定を行っているが、SNIC100とAPP201との間には仮想スイッチが介在する場合も想定される。この場合、仮想スイッチにも例外パケットが通るように適切な設定を行えばよい。例えば、仮想スイッチを制御するSDN(Software Defined Network)コントローラに適切な指示を出せばよい。この場合においても、メモリ同期用のパケットを他のパケットとは独立するように扱うことで、メモリの同期を実施することができる。
[第2の実施形態]
 続いて、メモリ同期を行う構成に変更を加えた本発明の第2の実施形態について図面を参照して詳細に説明する。図7は、本発明の第2の実施形態の構成を示す図である。図4に示した第1の実施形態との相違点は、DRAM118とFPGA111との間にD-CTRL121というモジュールが追加されている点である。また、これに伴い、PCIE Controller115aと、APP201aに変更が加えられている。その他の構成は、基本的に第1の実施形態と同様であるので、以下、その相違点を中心に説明する。
 本実施形態では、DRAM118が、FPGA111の再起動中でも通電しており、内部の記憶情報が消えない特性を利用する。すなわち、FPGA111の再起動中においてもAlt-SIM202からDRAM118を直接参照させることで、メモリ同期自体を省略可能としている。そして、FPGA111起動完了後は、DRAM118をFPGAに再アタッチしてやることで、FPGA111は処理を継続できる。
 D-CTRL121は、FPGA111又はAlt-SIM202からDRAM118へのアクセスを制御するモジュール(メモリ制御部)である。D-CTRL121は、PCIE Controller115aとも結線されている。D-CTRL121は、通常時においては、FPGA111からのアクセスのみを許容する。PCIE Controller115aからの指示があった場合、D-CTRL121は、Alt-SIM202に代表されるOS上のアプリケーションに、DRAM118の一部もしくは全領域を割り当てる制御を行う。
 PCIE Controller115aは、FPGA111を制御するためのハードウェアモジュールである。具体的には、PCIE Controller115aは、FPGA Driverからの制御に従い、FPGA111に対し、FPGA111の再起動やその回路情報の更新を命令する。また、PCIE Controller115aは、FPGA Driver経由でAPP201a側に、FPGA111の状態を通知する。また、PCIE Controller115aは、APP201aからの指示に従い、S-SW112、N-SW113を切り替えるスイッチ制御回路(スイッチ制御回路15参照)としても機能する。
 さらに、本実施形態のPCIE Controller115aは、D-CTRL121に対して、DRAMへのアクセス主体の切り替えを指示する。具体的には、PCIE Controller115aは、DRAM118にアクセスできる主体を、FPGA111からAlt-SIM202に変更する。また、PCIE Controller115aは、DRAM118にアクセスできる主体を、Alt-SIM202からFPGA111に変更する。
 APP201aは、FPGA Driver204経由で指示を出して、DRAM118のメモリ領域をアプリケーションから参照できる状態にする。これにより、Alt-SIM202が、DRAM118を直接参照できるようになる。また、APP201aは、FPGA Driver204経由で、DRAM118のメモリ領域をFPGA111から参照できる状態に戻す処理を行う。
 続いて、本実施形態の動作について図面を参照して詳細に説明する。図8は、本発明の第2の実施形態の動作を表したフローチャートである。図8を参照すると、まず、APP201aは、FPGA111の回路を更新するため、Alt-SIM202を起動する(ステップS201)。
 次に、APP201aは、DRAM118のアクセス主体をアプリケーションに切り替える(ステップS202)。この指示は、FPGA Driver204、PCIE Controller115a及びD-CTRL121を経由して指示される。
 次に、APP201aは、Alt-SIM202の起動を確認して、Alt-SIM202にDRAM118のアクセス権を渡す(ステップS203)。以降、Alt-SIM202は、modules120と同等の処理を実行できる状態になる。
 次に、APP201aは、FPGA Driver204経由でN-SW113及びS-SW112をバイパスモードに切り替える(ステップS204)。
 次に、APP201aは、NIC Driver203から受信したパケットをAlt-SIM202を用いてパケット処理するように動作を切り変える(ステップS205)。具体的には、NIC Driver203から受信したパケットをAlt-SIM202に渡し、Alt-SIM202から出力されたパケットをN-SW113側に送る処理を行う。
 次に、APP201aは、FPGA Driver204に対し、FPGA111の更新を指示する(ステップS206)。以降、FPGA111側で回路情報の更新が行われる。FPGA111側における回路情報の更新は、第1の実施形態と同様であるため、説明を省略する。
 APP201aは、前記FPGA111の起動完了通知を受け取ると(ステップS208)、DRAM118のアクセス主体を、Alt-SIM202からFPGA111に戻す(ステップS209)。これにより、以降、FPGA111はDRAM118を参照できるようになる。
 その後、APP201aは、FPGA Driver204に対し、S-SW112及びN-SW113をFPGAモードに切り替えるよう指示する(ステップS210)。
 最後に、APP201aは、Alt-SIM202を停止する(ステップS211)。
 以上、説明したように、第2の実施形態でも、FPGA111の回路情報の更新中もS-SW112、N-SW113にパケットの転送を継続させ、代替モジュールにてパケットの処理を行わせ、サービスを継続することができる。具体的には、上記図6に示したFPGA111更新時においても、代替モジュールとして、Alt-SIM202が処理を続けることで、サービスの完全停止を防ぐことができる。さらに、第1の実施形態との対比においても、メモリ同期のための例外パケットの処理を省略できるという利点がある。
 以上、本発明の各実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、各図面に示したネットワーク構成、各要素の構成、メッセージの表現形態は、本発明の理解を助けるための一例であり、これらの図面に示した構成に限定されるものではない。
 例えば、本発明は、NICチップの機能もFPGAで実現したタイプのSNICにも適用可能である。この場合、S-SW112a及びN-SW113aは、図9に示すように、FPGA111内の書き換え可能領域(Writable FPGA)116の入出力端に配置されることになる(第3の実施形態)。
 また、上記した各実施形態のFPGA111に実装する機能は、通信の暗号化や、パケットのオーダリング等の通信処理に限られない。例えば、下記のような、より上位レイヤの処理をFPGA111に担わせることもできる。
(1)Webサービス
 本発明は、例えば、動的なWebコンテンツをFPGA111上の回路で生成し、静的なコンテンツをIAサーバ200側のAPP201で応答する形態のWebサービスを実現するSNICにも適用可能である。 
 一般的に動的Webコンテンツ作成の方がCPUのリソースを使用するため、FPGA111に動的なWebページを生成する回路を実装することで、レスポンスを早くすることが可能になり、ユーザエクスペリエンス向上を期待できる。
 例えば、動的Webページ作成は、外部のDB(データベース)にアクセスしてユーザ登録情報(購入履歴など)を取得したり、外部サービスのAPI(Application Programming Interface)を呼び出すことが行われる。このように動的なWebページの生成には、ネットワークを経由して他サービスを介することが多い。SNIC内のFPGA111で、こうした機能を実装することで、さらなる性能向上を期待することができる。
 このとき、WebサービスのセッションはSSL/TLS等のセキュリティレイヤのコンテキスト情報だけではなく、ユーザセッションのコンテキストも管理している(例えば、ブラウザの戻るボタンを押しても、そのユーザセッションとして、ありえない画面遷移のため、Webサービスが以前と同じWebページを生成できないことがある)。なお、SSL、TLSは、それぞれSecure Sockets Layer、Transport Layer Securityの略である。
 本発明のSNICの場合、これらのコンテキスト情報は、SNIC100内のDRAM118上で保持される。このコンテキスト情報を、代替動的Webページ生成を行う代替モジュール(上記Alt-SIM202相当)と同期するように構成することで、FPGA111内の回路更新時も、ユーザセッション断を避けることができることになる。また、これにより、ユーザとしても、Webサービスへ再ログインする煩わしさが無くなるという利点がある。
(2)画像認識アプリケーション
 運転支援サービスとして、車載のカメラで撮影した動画をモバイルエッジのデータセンターで解析処理して、危険物を認識し、近傍の自動車に通知するサービスが想定される。本発明は、このようなサービスを実現するSNICにも適用可能である。
 この時、画像の解析処理をFPGA111で実装することで性能(例えば、認識件数/秒)を向上することができる。この画像認識エンジンを向上するには日々アップデートが必要になるが、本発明を適用することで、サービスを止めずに、画像認識エンジンの更新を行うことが可能となる。なお、その際に、サービスの特性を考慮して、画像認識エンジンの更新タイミングを決定することも好ましい。例えば、自動車の場合、夜間のユーザ数(自動車数)が少ないという特性がある。これを利用して、性能の縮退が許容される夜間に、サービス断を避けつつ解析エンジンを更新することができる。
 また、上記した第1~第3の実施形態のIAサーバは、図10のCPU(Central Processing Unit)9010、通信インタフェース9020、メモリ9030、補助記憶装置9040を備える構成に例示される。
 最後に、本発明の好ましい形態を要約する。
[第1の形態]
 (上記第1の視点によるネットワークインタフェースカード参照)
[第2の形態]
 上記したネットワークインタフェースカードの1対のスイッチは、
 前記第2のモードにおいて、前記プログラム可能論理回路に、前記コンピュータ側とのメモリ同期用のパケットを送るよう動作する構成を採ることができる。
[第3の形態]
 上記したネットワークインタフェースカードの1対のスイッチは、前記プログラム可能論理回路内部の可変領域の入力端と、出力端にそれぞれ配置されている構成を採ることができる。
[第4の形態]
 上記したネットワークインタフェースカードは、さらに、
 前記アプリケーションプログラム側から、プログラム可能論理回路が一時的に情報を記憶するために用いるメモリへのアクセスを許容するメモリ制御部を備える構成を採ることができる。
[第5の形態]
 上記したネットワークインタフェースカードの前記プログラム可能論理回路は、前記メモリ制御部から前記メモリの情報を引き継ぐことで、前記回路情報の書き換え後、前記コンピュータで実施させていた処理を引き継ぎ可能に構成されていることが好ましい。
[第6の形態]
 (上記第2の視点によるコンピュータ参照)
[第7の形態]
 (上記第3の視点による回路情報の書き換え方法参照)
[第8の形態]
 (上記第4の視点によるプログラム参照)
 なお、上記第6~第8の形態は、第1の形態と同様に、第2~第5の形態に展開することが可能である。
 なお、上記の特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし選択(部分的削除を含む)が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。さらに、上記引用した文献の各開示事項は、必要に応じ、本発明の趣旨に則り、本発明の開示の一部として、その一部又は全部を、本書の記載事項と組み合わせて用いることも、本願の開示事項に含まれるものと、みなされる。
 10 ネットワークインタフェースカード
 11 プログラム可能論理回路
 12、13 スイッチ
 14 コンピュータ側インタフェース(IF)
 15 スイッチ制御回路
 20 コンピュータ
 100、100a、100b SNIC
 111 FPGA
 112、112a S-SW
 113、113a N-SW
 114 Ether Network Controller
 115、115a PCIE Controller
 116 書き換え可能な領域(Writable FPGA)
 117 QSFP
 118 DRAM
 119 FLASH
 120 modules
 121 D-CTRL
 200 IAサーバ
 201、201a APP
 202 Alt-SIM
 203 NIC Driver
 204 FPGA Driver
 205 CPU/RAM
 210 プログラム群(APL/OS)
 9000 コンピュータ
 9010 CPU
 9020 通信インタフェース
 9030 メモリ
 9040 補助記憶装置

Claims (9)

  1.  記録された回路情報に従って、入力されたパケットの処理を行うプログラム可能論理回路と、
     前記プログラム可能論理回路の入力端と、出力端にそれぞれ配置され、前記プログラム可能論理回路にパケットを送る第1のモードと、前記プログラム可能論理回路を経由せずにバイパスする第2のモードとを切り替え可能な1対のスイッチと、
     前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを実行可能なプロセッサが搭載されたコンピュータに、前記パケットを送信するコンピュータ側インタフェースと、
     前記プログラム可能論理回路の前記回路情報の書き換えの際に、前記1対のスイッチを第2のモードに切り替えるスイッチ制御回路と、を備え、
     前記回路情報の書き換え時に、前記プログラム可能論理回路に代わって、前記コンピュータによりパケットの処理を実行可能に構成されているネットワークインタフェースカード。
  2.  前記1対のスイッチは、
     前記第2のモードにおいて、前記プログラム可能論理回路に、前記コンピュータ側とのメモリ同期用のパケットを送るよう動作する請求項1のネットワークインタフェースカード。
  3.  前記1対のスイッチが、前記プログラム可能論理回路内部の可変領域の入力端と、出力端にそれぞれ配置されている請求項1又は2のネットワークインタフェースカード。 
  4.  さらに、前記アプリケーションプログラム側から、プログラム可能論理回路が一時的に情報を記憶するために用いるメモリへのアクセスを許容するメモリ制御部を備える請求項1のネットワークインタフェースカード。
  5.  前記プログラム可能論理回路は、前記メモリ制御部から前記メモリの情報を引き継ぐことで、前記回路情報の書き換え後、前記コンピュータで実施させていた処理を引き継ぎ可能に構成されている請求項4のネットワークインタフェースカード。
  6.  記録された回路情報に従って入力されたパケットの処理を行うプログラム可能論理回路と、
     前記プログラム可能論理回路の入力端と、出力端にそれぞれ配置され、前記プログラム可能論理回路にパケットを送る第1のモードと、前記プログラム可能論理回路を経由せずにバイパスする第2のモードとを切り替え可能な1対のスイッチと、
     接続されたコンピュータに、前記パケットを送信するコンピュータ側インタフェースと、
     前記プログラム可能論理回路の前記回路情報の書き換えの際に、前記1対のスイッチを第2のモードに切り替えるスイッチ制御回路と、を備え、
     前記回路情報の書き換え時に、前記プログラム可能論理回路に代わって、前記コンピュータによりパケットの処理を実行可能に構成されているネットワークインタフェースカードを搭載したコンピュータ。
  7.  前記第2のモードにおいて、前記プログラム可能論理回路に、メモリ同期用のパケットを送るよう動作する請求項6のコンピュータ。
  8.  記録された回路情報に従って入力されたパケットの処理を行うプログラム可能論理回路と、
     前記プログラム可能論理回路の入力端と、出力端にそれぞれ配置され、前記プログラム可能論理回路にパケットを送る第1のモードと、前記プログラム可能論理回路を経由せずにバイパスする第2のモードとを切り替え可能な1対のスイッチと、
     前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを実行可能なプロセッサが搭載されたコンピュータに、前記パケットを送信するコンピュータ側インタフェースと、
     前記プログラム可能論理回路の前記回路情報の書き換えの際に、前記1対のスイッチを第2のモードに切り替えるスイッチ制御回路と、を備えたネットワークインタフェースカードの前記回路情報の書き換え方法であって、
     前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを起動し、
     前記1対のスイッチを、前記第1のモードから前記第2のモードに切り替え、
     前記回路情報を書き換えた後に、前記1対のスイッチを、前記第2のモードから前記第1のモードに切り替える、
     回路情報の書き換え方法。
  9.  記録された回路情報に従って入力されたパケットの処理を行うプログラム可能論理回路と、
     前記プログラム可能論理回路の入力端と、出力端にそれぞれ配置され、前記プログラム可能論理回路にパケットを送る第1のモードと、前記プログラム可能論理回路を経由せずにバイパスする第2のモードとを切り替え可能な1対のスイッチと、
     前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを実行可能なプロセッサが搭載されたコンピュータに、前記パケットを送信するコンピュータ側インタフェースと、
     前記プログラム可能論理回路の前記回路情報の書き換えの際に、前記1対のスイッチを第2のモードに切り替えるスイッチ制御回路と、を備えたネットワークインタフェースカードの前記回路情報の書き換えプログラムであって、
     前記プログラム可能論理回路に代わり、パケットの処理を実行可能なアプリケーションプログラムを起動する処理と、
     前記1対のスイッチを、前記第1のモードから前記第2のモードに切り替える処理と、
     前記回路情報を書き換えた後に、前記1対のスイッチを、前記第2のモードから前記第1のモードに切り替える処理と、
     を前記コンピュータに実行させるプログラム。
PCT/JP2019/048118 2018-12-10 2019-12-09 ネットワークインタフェースカード、コンピュータ、回路情報の書き換え方法及びプログラム WO2020122024A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020560100A JP7439767B2 (ja) 2018-12-10 2019-12-09 ネットワークインタフェースカード、コンピュータ、回路情報の書き換え方法及びプログラム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2018231098 2018-12-10
JP2018-231098 2018-12-10

Publications (1)

Publication Number Publication Date
WO2020122024A1 true WO2020122024A1 (ja) 2020-06-18

Family

ID=71076450

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2019/048118 WO2020122024A1 (ja) 2018-12-10 2019-12-09 ネットワークインタフェースカード、コンピュータ、回路情報の書き換え方法及びプログラム

Country Status (2)

Country Link
JP (1) JP7439767B2 (ja)
WO (1) WO2020122024A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11695700B2 (en) 2021-04-22 2023-07-04 Fujitsu Limited Information processing apparatus, computer-readable recording medium storing overload control program, and overload control method

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100223390A1 (en) * 2006-12-14 2010-09-02 Oracle America, Inc. Method and system for offloaded transport layer protocol switching
US20160188313A1 (en) * 2014-12-27 2016-06-30 Scott P. Dubal Technologies for reprogramming network interface cards over a network
US20160266894A1 (en) * 2015-03-11 2016-09-15 Cavium, Inc. Systems and methods for live upgrade and update of firmware on an embedded networking device
US9565207B1 (en) * 2009-09-04 2017-02-07 Amazon Technologies, Inc. Firmware updates from an external channel
WO2017170311A1 (ja) * 2016-03-31 2017-10-05 日本電気株式会社 ネットワークシステムの制御方法および制御装置ならびにサーバ

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5149819B2 (ja) 2009-01-19 2013-02-20 アラクサラネットワークス株式会社 ネットワーク中継装置
JP5546500B2 (ja) 2011-04-26 2014-07-09 三菱電機株式会社 Fpga搭載装置の遠隔保守システム
JP6538579B2 (ja) 2016-02-04 2019-07-03 株式会社日立製作所 光アクセスネットワークシステム、局側装置、及びその制御プログラム
US9698793B1 (en) 2016-04-30 2017-07-04 Arista Networks, Inc. Live system upgrade

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100223390A1 (en) * 2006-12-14 2010-09-02 Oracle America, Inc. Method and system for offloaded transport layer protocol switching
US9565207B1 (en) * 2009-09-04 2017-02-07 Amazon Technologies, Inc. Firmware updates from an external channel
US20160188313A1 (en) * 2014-12-27 2016-06-30 Scott P. Dubal Technologies for reprogramming network interface cards over a network
US20160266894A1 (en) * 2015-03-11 2016-09-15 Cavium, Inc. Systems and methods for live upgrade and update of firmware on an embedded networking device
WO2017170311A1 (ja) * 2016-03-31 2017-10-05 日本電気株式会社 ネットワークシステムの制御方法および制御装置ならびにサーバ

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
DANIEL FIRESTONE ET AL.: "Azure Accelerated Networking: SmartNICs in the Public Cloud", IN THE PROCEEDINGS OF THE 15TH USENIX SYMPOSIUM ON NETWORKED SYSTEMS DESIGN AND IMPLEMENTATION (NSDI'18, 9 April 2018 (2018-04-09), pages 51 - 64, XP032779736, Retrieved from the Internet <URL:https://www.usenix.org/system/files/conference/nsdil8/nsdil8-firestone.pdf> [retrieved on 20191218] *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11695700B2 (en) 2021-04-22 2023-07-04 Fujitsu Limited Information processing apparatus, computer-readable recording medium storing overload control program, and overload control method

Also Published As

Publication number Publication date
JP7439767B2 (ja) 2024-02-28
JPWO2020122024A1 (ja) 2021-10-28

Similar Documents

Publication Publication Date Title
JP6544872B2 (ja) 負荷バランシングコンピュータデバイス、システム、および方法
US9378068B2 (en) Load balancing for a virtual networking system
CN102651690B (zh) 对共享内存进行控制的方法和装置
CN109861839B (zh) 业务不中断的虚拟交换机升级方法以及相关设备
US9864606B2 (en) Methods for configurable hardware logic device reloading and devices thereof
US8417848B2 (en) Method and apparatus for implementing multiple service processing functions
EP3407187B1 (en) Optical line terminal, and method for upgrading master device and slave device
CN112306380B (zh) 一种存储管理方法、装置以及计算机存储介质
US9515963B2 (en) Universal network interface controller
CN109450676B (zh) 一种交换机升级方法及装置、电子设备、计算机可读介质
JP2016529575A (ja) ハードディスクおよびデータ処理方法
WO2013154541A1 (en) Remote direct memory access with reduced latency
WO2017125016A1 (zh) 更改虚拟网卡配置信息的方法、设备及系统
US20200145284A1 (en) Validating Network Configuration Using Shadow Databases
WO2020122024A1 (ja) ネットワークインタフェースカード、コンピュータ、回路情報の書き換え方法及びプログラム
CN113411363A (zh) 一种镜像文件的上传方法、相关设备及计算机存储介质
US10191878B2 (en) High availability of PCIe devices under multiple processors to provide redundancy
US10789200B2 (en) Server message block remote direct memory access persistent memory dialect
EP2620876B1 (en) Method and apparatus for data processing, pci-e bus system and server
CN116257276B (zh) 支持虚拟化硬件加速的虚拟宿主机用户后端升级方法
WO2013154540A1 (en) Continuous information transfer with reduced latency
US11252457B2 (en) Multimedia streaming and routing apparatus and operation method of the same
CN103907094A (zh) 在多主机计算环境下对数据访问的串行化
CN110740095A (zh) 多媒体串流及路由装置及其运作方法
US11909595B2 (en) System and method for distributed management of communication devices

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2020560100

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19896701

Country of ref document: EP

Kind code of ref document: A1