Interface module, information communication device, and startup method
The interface module with non-volatile memory and processor supports multiple protocols, addressing inefficiencies in protocol changes by allowing dynamic switching, reducing downtime and unifying hardware and software configurations.
Patent Information
- Application Number
- JP2024034188
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2024-03-06
- Publication Date
- 2025-10-15
- Estimated Expiration
- 2044-03-06
AI Technical Summary
Existing storage devices require protocol changes by replacing channel boards or reconnecting cables when network protocols need to be adjusted, leading to increased downtime and inefficiency.
An interface module with a non-volatile memory area and processor that supports multiple protocols, allowing for dynamic protocol switching without hardware replacement, using firmware and mode files to manage protocol-specific program codes.
Minimizes downtime and unifies hardware and software by supporting multiple network protocols without the need for separate firmware, enabling seamless protocol changes.
Smart Images

Figure 0007754969000001 
Figure 0007754969000002 
Figure 0007754969000003
Abstract
Description
[Technical Field]
[0001] The present invention relates to an interface module, an information communication device, and a startup method. [Background technology]
[0002] As new network protocols used by storage devices are developed every day, there is a need for storage devices to support a variety of network protocols. Conventionally, the network protocols available for each channel board (hereinafter referred to as CHB) were fixed, so changing the network protocol used by a storage device required replacing the CHB or reconnecting the network cable. In recent years, CHBs that allow for changes in network protocols have been developed. By using these CHBs, replacing the CHB or reconnecting the network cable is no longer necessary. Technologies for supporting multiple protocols in storage devices are known, for example, as disclosed in Patent Document 1 and Patent Document 2. [Prior art documents] [Patent documents]
[0003] [Patent Document 1] Japanese Patent Application Laid-Open No. 2015-32304 [Patent Document 2] Special Publication No. 2007-513436 Summary of the Invention [Problem to be solved by the invention]
[0004] Regardless of whether Patent Document 1 or Patent Document 2 is applied, it is not possible to specify in advance the network protocol to be set when the CHB is started. Therefore, if the desired network protocol is not set when the CHB is started, it is necessary to specify the network protocol and restart the CHB, which causes a problem of lengthening the time it takes for the storage to become available. [Means for solving the problem]
[0005] An interface module in a first aspect of the present invention is an interface module comprising a non-volatile memory area for storing one or more pieces of firmware and a mode file, and a processor for executing program code included in the firmware, wherein each piece of firmware includes a plurality of protocol-specific program codes and a startup unit for starting at least one of the plurality of protocol-specific program codes based on the description in the mode file. A redundant system in a second aspect of the present invention is a redundant system comprising the aforementioned interface modules, a first interface module and a second interface module, and a storage controller, wherein each of the first interface module and the second interface module has a plurality of communication ports and is capable of supporting different communication protocols for each of the communication ports, and each of the first interface module and the second interface module supports two or more communication protocols, and the combination of communication protocols supported by the first interface module matches the combination of communication protocols supported by the second interface module. A startup method in a third aspect of the present invention is a startup method executed by an interface module comprising a non-volatile storage area for storing one or more firmwares and a mode file, and a processor for executing program code included in the firmware, wherein each of the firmwares includes a plurality of protocol-specific program codes and a startup unit that starts at least one of the plurality of protocol-specific program codes based on the description in the mode file, and the processor operates the startup unit of any of the firmwares to start at least one of the plurality of protocol-specific program codes based on the description in the mode file. [Effects of the Invention]
[0006] According to the present invention, downtime can be minimized because it supports multiple network protocols while eliminating the need to switch protocols by replacing firmware. In addition, since there is no need to prepare separate firmware for each protocol, not only hardware but also software can be unified. [Brief explanation of the drawings]
[0007] [Figure 1] Overall configuration of a storage system including a smart NIC [Figure 2] Figure showing an example of a CPU setting table, a protocol setting table, and a session management table [Figure 3] Smart NIC configuration diagram [Figure 4] Detailed configuration diagram of embedded memory [Figure 5] A diagram showing an example of a smart NIC operating protocol mode table and a CPU setting table. [Figure 6] Figure showing an example of a connection management table, task management table, and CPU management table [Figure 7] A diagram showing the process performed by a Smart NIC [Figure 8] An example of CPU core allocation in a smart NIC [Figure 9] Overview of the processing of each core in a smart NIC [Figure 10] Diagram explaining the cue operation-only mode and the cue operation dual mode [Figure 11] Flowchart showing the process for initial hardware setup of the smart NIC [Figure 12] Flowchart showing the normal startup process of a smart NIC [Figure 13] A flowchart showing the processing of the smart NIC when the IF mode of the smart NIC is switched by the user. [Figure 14] Time chart showing the storage system processing when the user switches the IF mode of the smart NIC [Figure 15]Time chart showing the storage system processing when the user switches the IF mode of the smart NIC [Figure 16] Time chart showing the process during initial hardware setup of the smart NIC [Figure 17] Time chart showing the process during initial hardware setup of the smart NIC [Figure 18] Overall configuration diagram of a storage system according to a second embodiment DETAILED DESCRIPTION OF THE INVENTION
[0008] -First embodiment- A first embodiment of a smart NIC, which is an interface module, will be described below with reference to Figures 1 to 16. In this embodiment, a network interface card will also be referred to as "NIC," an interface will also be referred to as "IF," a network will also be referred to as "NW," and a channel board will also be referred to as "CHB."
[0009] FIG. 1 is a diagram showing the overall configuration of a storage system 1 including a smart NIC 200. The storage system 1 includes a storage controller 100, at least one smart NIC 200, and at least one host 99. In FIG. 1, subnumbers are assigned to identify the multiple smart NICs 200 and the multiple hosts. The configuration of each smart NIC 200 is common to the extent described below.
[0010] In FIG. 1, the storage controller 100 is connected to three smart NICs 200, but the number of smart NICs 200 connected to the storage controller 100 may be one or more. The storage controller 100 identifies each smart NIC 200 by a channel board ID. The channel board ID is an identifier for the channel board, i.e., the smart NIC 200, and in this embodiment is expressed as a combination of "C" and a number. That is, the three smart NICs 200 shown in the figure are set with channel board IDs of "C1," "C2," and "C3."
[0011] The smart NIC 200 is connected to the storage controller 100 using a specified communication standard, such as PICe. Communication between the smart NIC 200 and the host 99 is performed using a known or future communication protocol. This communication protocol may be iSCSI, InfiniBand, NVMe over TCP, RoCE V2, or the like. The communication protocol used for communication between the smart NIC 200 and the host 99 can be changed. This will be described in more detail later.
[0012] The storage controller 100 includes an SSD 110, a controller DRAM 120, and a first controller 130. The SSD 110 is a nonvolatile memory using a semiconductor, i.e., a solid state drive. Note that the SSD 21 is described as merely an example of a nonvolatile storage device, and other nonvolatile storage devices such as a hard disk drive may also be used. The controller DRAM 120 is a volatile memory using a semiconductor, i.e., a dynamic random access memory.
[0013] The controller DRAM 120 stores a CPU setting table 121, a protocol setting table 122, an IO processing program 123, a network setting program 124, a channel board setting program 125, and a session management table 126. However, the data and programs stored in the controller DRAM 120 are read from a ROM (not shown) at startup. The first controller 130 includes one or more CPUs 131. The CPUs 131 load program code stored in a ROM (not shown) into the controller DRAM 120 and execute it.
[0014] The IO processing program 123 writes data to the SSD 110 and reads data from the SSD 110 based on operational commands received from the host 99 via the smart NIC 200. The storage controller 100 receives a PDU (protocol data unit) conforming to a predetermined communication protocol from the smart NIC 200 and operates based on the operational commands contained in this PDU. The predetermined communication protocol is a known or future communication protocol, such as iSCSI, InfiniBand, or NVMe over TCP. A PDU is also called a network packet, network frame, or communication data.
[0015] The network setting program 124 creates a session between the host 99 and the storage controller 100 and updates the session management table 126. The CHB setting program 125 provides a setting screen to the operator and creates or updates the CPU setting table 121 and the protocol setting table 122 based on the operator's input. Hereinafter, the storage controller 100 and at least one smart NIC 200 are collectively referred to as the information communication device 2.
[0016] FIG. 2 is a diagram showing an example of the CPU setting table 121, the protocol setting table 122, and the session management table 126 stored in the controller DRAM 120 of the storage controller 100. As shown in FIG.
[0017] The CPU setting table 121 stores the settings of the CPU core 132 installed in each smart NIC 200. Specifically, the CPU setting table 121 includes a channel board ID, a queue operation-only mode, a queue operation-dual mode, a port 0 CPU resource, and a port 1 CPU resource.
[0018] The queue operation only mode and the queue operation dual mode are settings for whether the CPU core 132 operates in the queue operation only mode or the queue operation dual mode. The queue operation only mode and the queue operation dual mode are opposites, with one set to "Yes" and the other set to "No." The port 0 CPU resource and the port 1 CPU resource are allocation settings for the CPU core 132. The sum of the port 0 CPU resource and the port 1 CPU resource is 100% or less.
[0019] The protocol setting table 122 sets the communication protocol for each port of each smart NIC 200. Specifically, for each channel board ID, the applicability of each protocol and each port is recorded. In the example shown in FIG. 2, it is recorded that port 0 of the smart NIC 200 with channel board ID "C1" only supports "iSCSI Target" and port 1 only supports "NVMe over TCP." Each port is not limited to supporting only one protocol; for example, port 1 of the smart NIC 200 with channel board ID "C3" supports both "iSCSI Target" and "NVMe over TCP."
[0020] The session management table 126 stores data for each session. Specifically, it includes a session ID, protocol setting information, network setting information, and LUN mapping information. The session ID is an identifier for the session, and in this embodiment is represented by a combination of "E" and a number. The protocol setting information is setting data related to the communication protocol to be used. Although "iSCSI setting" is used in FIG. 2 for the sake of simplicity, specific setting data is actually stored. The network setting information is setting data related to the network. Although "TCP setting, IP setting" is used in FIG. 2 for the sake of simplicity, specific setting data is actually stored. The LUN mapping information is an identifier for the logical unit number to be used.
[0021] FIG. 3 is a configuration diagram of the smart NIC 200. The smart NIC 200 includes a NIC ASIC 210, a DRAM 220, a second controller 230, and an embedded memory 240. The smart NIC 200 includes one or more communication ports, with no upper limit on the number of communication ports. However, this embodiment specifically describes a configuration in which the smart NIC 200 includes two communication ports, port 0 and port 1. The smart NIC 200 supports multiple network protocols, can set an IF mode for each communication port, and can simultaneously support at least the number of network protocols for the number of ports. For example, it is possible to set "iSCSI Target" to port 0 and "NVMe over TCP" to port 1, or it is possible to set both ports to "RoCE V2."
[0022] The NIC ASIC 210 is an application-specific integrated circuit that performs the processing required for the NIC to operate. The NIC ASIC 210 performs processing that is independent of the network protocol or that is common to multiple network protocols. The DRAM 220 is a volatile memory that uses semiconductors, i.e., Dynamic Random Access Memory.
[0023] DRAM 220 stores a smart NIC operation protocol mode table 221, a parser program 222, a CPU setting table 223, a file writing program 224, a command processing program 226, a command conversion program 227, a protocol processing program 228, a queue operation program 229, a connection management table 251, a task management table 252, and a CPU management table 253. Protocol processing program 228 is a general term, and in reality, programs corresponding to the communication protocols processed by each port of smart NIC 200 are stored in DRAM 220.
[0024] The protocol processing program 228 is at least one of an iST program 2281, an NVMe program 2282, an iSI program 2283, and an Ro program 2284. The iST program 2281 is a program that processes the communication protocol "iSCSI Target." The NVMe program 2282 is a program that processes the communication protocol "NVMe over TCP." The iSI program 2283 is a program that processes the communication protocol "iSCSI initiator." The Ro program 2284 is a program that processes the communication protocol "RoCE V2."
[0025] For example, if "iSCSI Target" is set to port 0 and "NVMe over TCP" is set to port 1, an iST program 2281 and an NVMe program 2282 are started as the protocol processing program 228. If both ports are set to "RoCE V2", one or two Ro programs 2284 are started as the protocol processing program 228.
[0026] The second controller 230 includes one or more CPU cores 231. Each CPU core 231 is a whole or part of a plurality of physical CPUs each having one or more processing cores. In this embodiment, a specific example will be described in which the second controller 230 includes eight CPU cores 231, but the second controller 230 may include at least one CPU core 231. The CPU core 231 loads program code stored in the embedded memory 240 into the DRAM 220 and executes it. In this specification, a program stored in the embedded memory 240 before execution is referred to as "program code," and program code loaded into the DRAM 220 is referred to as "program." For example, two copies of a single program code may be created, and two programs that execute the same process may be placed in the DRAM 220.
[0027] The parser program 222 refers to the IF mode file 243 and the smart NIC operation protocol mode table 221, and starts at least one of a plurality of protocol-specific program codes, such as the iST program 2281. If the IF mode file 243 does not exist, a specific protocol-specific program code is started based on the description in the smart NIC operation protocol mode table 221.
[0028] The command processing program 226 is a program that performs processing that can be processed within the smart NIC 200. The command processing program 226 performs processing such as starting and ending a connection. For example, if the command contained in the PDU received from the host 99 is to read data stored in the SSD 110, the smart NIC 200 cannot process the command, so the PDU is converted into a storage interface command (hereinafter also referred to as a "storage I / F command") and sent to the storage controller 100. However, if the command can be processed by the smart NIC 200, it is processed by the command processing program 226 without being sent to the storage controller 100.
[0029] The command conversion program 227 converts commands contained in PDUs. Specifically, the command conversion program 227 rewrites commands contained in PDUs received from the host 99 into general-purpose storage interface commands that can be processed by the storage controller 100. The command conversion program 227 also rewrites commands contained in storage interface commands received from the storage controller 100 into commands of other communication protocols that can be processed by the host 99 that is the destination of the PDU. The command conversion program 227 also adds and deletes task IDs and connection IDs to PDUs. The queue operation program 229 performs data transfer between virtual queues and real queues, which will be described later. The queue operation program 229 will be described in detail later.
[0030] The built-in memory 240 is an embedded memory and a non-volatile storage device built into the smart NIC 200. The built-in memory 240 stores a first firmware 240A, a second firmware 240B, and an IF mode file 243. However, as will be described later, the IF mode file 243 is not stored in the built-in memory 240 in the shipped state of the smart NIC 200.
[0031] FIG. 4 is a detailed configuration diagram of the embedded memory 240. The embedded memory 240 stores multiple pieces of firmware for firmware updates, and only one piece of firmware is used at a time. The first firmware 240A and the second firmware 240B have substantially the same configuration, but differ in the versions of the program code stored therein. The IF mode file 243 is a text file, as shown at the bottom of FIG. 4, and describes the protocol for each port. The configuration of the first firmware 240A is described below.
[0032] The first firmware 240A includes program code 2281-0 for iST, program code 2282-0 for NVMe, program code 2283-0 for iSI, program code 2284-0 for Ro, parser program code 222-0, protocol common program code 241, and setting data 242.
[0033] The iST program code 2281-0, the NVMe program code 2282-0, the iSI program code 2283-0, and the Ro program code 2284-0 are expanded in the DRAM 220 to operate as the iST program 2281, the NVMe program 2282, the iSI program 2283, and the Ro program 2284, respectively. The parser program code 222-0 is expanded in the DRAM 220 to operate as the parser program 222.
[0034] The protocol common program code 241 is loaded into the DRAM 220 and operates as a command processing program 226, a command conversion program 227, a queue operation program 229, and a file writing program 224. The setting data 242 is loaded into the DRAM 220 at startup and becomes the smart NIC operation protocol mode table 221 and the CPU setting table 223. The connection management table 251, the task management table 252, and the CPU management table 253 are created after startup.
[0035] FIG. 5 shows an example of the smart NIC operation protocol mode table 221 and CPU setting table 223 stored in the DRAM 220 of the smart NIC 200 whose channel board ID is "C1." The smart NIC operation protocol mode table 221 stores the correspondence between the contents of the IF mode file 243 and the IF mode set in the smart NIC 200. As shown in the first to fourth entries, the protocol is generally set to the network protocol listed after "Protocol=" in the IF mode file 243. If the IF mode file 243 does not exist or if the IF mode file 243 contains other information, "iSCSI" is set, as shown in the fifth and sixth entries. However, if the IF mode file 243 does not exist or if the IF mode file 243 contains other information, the protocol used is not limited to "iSCSI," and the operator can set any protocol in the smart NIC operation protocol mode table 221.
[0036] The CPU setting table 223 stores the settings of the second controller 230. Since the storage controller 100 sends an operation command when initializing the smart NIC 200 based on the CPU setting list 232, the value of the corresponding channel board ID in the CPU setting list 232 is entered as is in the CPU setting table 223 of the smart NIC 200. Specifically, the value of the channel board ID "C1" in the CPU setting list 232 shown in FIG. 2 is entered as is in the CPU setting table 223 of FIG. 4.
[0037] 6 is a diagram showing an example of a connection management table 251, a task management table 252, and a CPU management table 253 stored in the DRAM 220 of a smart NIC 200 having a channel board ID of "C1." The connection management table 251 stores connection data for each port. FIG. 6 shows an example of a connection management table 251 for port 0. That is, although not shown in FIG. 6, there is also a separate connection management table 251 that lists connections created using port 1.
[0038] Specifically, the connection management table 251 stores a connection ID, a core number, connection information, and a task ID. The connection ID is an identifier that identifies a connection, and in this embodiment is expressed as a combination of "N" and a number. The task ID is generated each time an IO is received from the host 99. Since it is common to receive multiple PDUs over one connection, the connection ID and the task ID have a 1:many relationship.
[0039] The core number is an identifier for a core constituting the second controller 230, and in this embodiment is expressed as a combination of "R" and a number. The connection information is various data related to the connection. In FIG. 6, it is written as "Connection setting" for the sake of simplicity, but in reality, specific connection data is stored. The task ID is a list of identifiers for tasks linked to the corresponding connection, and in this embodiment is expressed as a combination of "T" and a number. Note that in FIG. 6, the task ID is written in hexadecimal, but it may also be expressed in decimal, etc.
[0040] The task management table 252 stores the status of each task. Specifically, PDU1 and PDU2 are stored for each task ID. The CPU management table 253 stores the connection identifiers and task identifiers to be processed for each core of the second controller 230. The relationship between the core number and the connection ID, and the relationship between the connection ID and the task ID, are written in the connection management table 251. Therefore, the CPU management table 253 can be created based on all the connection management tables 251 that one smart NIC 200 has.
[0041] FIG. 7 is a diagram illustrating an overview of the processing executed by the smart NIC 200. The smart NIC 200 relays bidirectional communication between the host 99 and the storage controller 100. However, FIG. 7 illustrates relaying communication from the host 99 to the storage controller 100. Various communication protocols, such as RoCEv2, iSCSI, and NVMe over TCP, are used for communication between the host 99 and the smart NIC 200. PCIe is used for communication between the smart NIC 200 and the storage controller 100. The smart NIC 200 supports various communication protocols with the host 99 through software processing by the second controller 230.
[0042] When the smart NIC 200 receives communication from the host 99, it first performs protocol analysis, such as PDU header analysis. The smart NIC 200 then distributes commands. Specifically, it determines whether or not the command needs to be sent to the storage controller 100. If the smart NIC 200 can process the command itself, it sends the processing results to the host 9. If transmission to the storage controller 100 is required, the processing continues. The smart NIC 200 then converts the PDU into a storage interface command. Specifically, it rewrites the received PDU header so that the storage controller 100 can interpret it, and also processes the PDU payload as necessary. The smart NIC 200 then stores the storage interface command in a queue, or waiting queue, for transmission to the storage controller 100. Queue processing will be described later.
[0043] Next, the smart NIC 200 distributes the interface commands. Finally, the smart NIC 200 transfers the storage interface commands to the controller DRAM 120 of the storage controller 100 by DMA (Direct Memory Access). Note that when relaying communication from the storage controller 100 to the host 99, the flow is reversed from that shown in FIG. 7.
[0044] 8 is a diagram showing an example of allocation of CPU cores 231 in the second controller 230. The allocation of CPU cores 231 in the second controller 230 is determined when the smart NIC 200 is initialized, for example, when the power is turned on, based on the entries in the CPU setting table 223. However, when the smart NIC 200 is initialized, the CPU setting of the corresponding smart NIC 200 may be copied from the CPU setting list 232 of the storage controller 100 to the CPU setting table 223.
[0045] In the example shown in the upper part of Figure 8, all eight cores of smart NIC 200 are assigned to port 0. In this case, commands received from host 99-1 connected to port 0 are processed, but commands received from host 99-2 connected to port 1 are not processed. In the example shown in the lower part of Figure 8, the eight cores of smart NIC 200 are assigned evenly to port 0 and port 1. In this case, commands received from host 99-1 and commands received from host 99-2 are processed in the same ratio. This configuration corresponds to CPU setting table 223 shown in Figure 5.
[0046] FIG. 9 is a schematic diagram showing the processing of each core of the smart NIC 200. However, this diagram shows operation in the queue operation dual mode. The storage controller 100 has one command reception queue (C-queue) and one response response queue (R-queue). The command reception queue is a queue that stores commands from the host 99. The response response queue is a queue that stores response commands to the host 99. Hereinafter, the command reception queue and the response response queue are also referred to as "actual queues."
[0047] Each CPU included in the second controller 230 has a virtual command reception queue and a virtual response response queue. The virtual command reception queue and the virtual response response queue are realized by areas reserved in the DRAM 220 of the smart NIC 200. The virtual command reception queue and the virtual response response queue are, for example, ring buffers. Hereinafter, the virtual command reception queue and the virtual response response queue are also referred to as "virtual queues." That is, while there is only one real queue, there are as many virtual queues as there are cores, so it is necessary to integrate or separate the queues. The real queues and virtual queues are separated to absorb the difference in the number of queues in the storage controller 100 and the number of CPU cores 132 in the smart NIC 200 in the current configuration.
[0048] Each core of the CPU core 132 performs reception processing, transmission processing, and queue operation. The reception processing is the processing up to storing in a queue, specifically a virtual command reception queue, among the processing described with reference to FIG. 7, in relaying communication from the host 99 to the storage controller 100. The transmission processing is the processing after acquiring a storage interface command from the virtual response reply queue in relaying communication from the storage controller 100 to the host 99. The queue operation involves extracting and integrating storage interface commands from the virtual command reception queues of all cores and sending them to the actual queues of the storage controller 100 by DMA transfer, and separating storage interface commands acquired from the actual queues of the storage controller 100 by DMA transfer and storing them in the respective virtual response reply queues.
[0049] In the smart NIC 200, the same connection is handled by the same core. The purpose of this is to conserve resources, avoid complicated management, and avoid performance degradation due to conflicts and exclusion waiting between cores. For example, when core R3 receives a data request from a host 99, core R3 responds by sending the data obtained from the storage controller 100.
[0050] Figure 10 is a diagram explaining the queue operation dedicated mode and the queue operation dual mode. Here, however, we assume that the CPU resource allocation for each port is 50% as shown in the bottom of Figure 5. The top of Figure 10 shows the queue operation dedicated mode, and the bottom of Figure 10 shows the queue operation dual mode. The difference between the queue operation dedicated mode and the queue operation dual mode is whether or not the cores are assigned roles.
[0051] In the queue operation-only mode shown in the upper part of Figure 10, a dedicated core is set to perform queue operations for each port. In this embodiment, each smart NIC 200 has two ports, port 0 and port 1, so two cores are dedicated to queue operations. Therefore, in this case, the remaining six cores have virtual queues and perform receive processing and transmit processing. Focusing on one port, one core performs queue operations only, and three cores perform receive processing and transmit processing.
[0052] In the queue operation shared mode shown at the bottom of Figure 10, all cores perform queue operations, receive processing, and send processing. In this case, it is uncertain which core will perform the queue operations. For example, the same core may perform all of the queue operations, receive processing, and send processing for commands from a host 99. In this case, four cores per port perform queue operations, receive processing, and send processing.
[0053] In the following, the arithmetic core that performs receive and transmit processing will be referred to as the "IO core," and the arithmetic core that performs queue operations will be referred to as the "queue core." In queue operation-only mode, the IO core and queue core are fixed, but in queue operation dual mode, the IO core and queue core are fluid. That is, in queue operation dual mode, one core operates as an IO core at certain times, and as a queue core at other times. The same number of virtual queues as IO cores are provided, and in queue operation-only mode, virtual queues are provided as shown in the figure below, which is the number of arithmetic cores in the CPU core 132 minus the number of queue cores. In queue operation dual mode, the number of IO cores varies depending on the timing, but any core can become an IO core, so the same number of virtual queues as the number of arithmetic cores in the CPU core 132 are provided.
[0054] There is no clear advantage or disadvantage between queue operation only mode and queue operation dual mode, and each has its own advantages and disadvantages. The advantage of queue operation only mode is that it fixes the core that performs queue operations, so exclusive processing between cores to operate the queue is not required, and there is no overhead for this exclusive processing. On the other hand, it has the disadvantage that the number of cores performing IO processing is reduced. The advantage of queue operation dual mode is that it can increase the number of cores performing IO processing. The disadvantage of queue operation dual mode is that exclusive processing between cores is required to operate the queue.
[0055] 11 is a flowchart showing the process during hardware initialization of the smart NIC 200. The smart NIC 200 executes hardware initialization in response to an instruction from the storage controller 100. For example, when the operator of the smart NIC 200 newly connects the smart NIC 200 to the storage controller 100, the operator instructs the newly connected smart NIC 200 to execute hardware initialization.
[0056] The smart NIC 200 first starts the parser program in step S301. In the following step S302, the parser program 222 determines whether the IF mode file 243 exists. If the IF mode file 243 does not exist, the process proceeds to step S303, and if the IF mode file 243 exists, the process proceeds to step S304. In step S303, the parser program refers to the smart NIC operation protocol mode table 221 and starts the network program for the "iSCSI Target" that corresponds to the initial setting mode, i.e., "file does not exist" in the example of FIG. 5, and then proceeds to step S305.
[0057] In step S304, the parser program refers to the smart NIC operating protocol mode table 221 based on the description in the IF mode file 243 to identify the network protocol for each port, starts the corresponding network program, and proceeds to step S305. In step S305, the smart NIC 200 performs initial configuration of the channel board. In the following step S306, the smart NIC 200 notifies the storage controller 100 that the channel board has been started and the IF mode of each port. For example, if a negative determination is made in step S302, the smart NIC 200 sends a notification such as "CHB startup completed, Port0: iSCSI, Port1: iSCSI" to the storage controller 100.
[0058] Upon receiving this notification, the storage controller 100 transmits a mode change command to the smart NIC 200 if the IF mode does not match the protocol setting table 122. For example, if the storage controller 100 receives the above notification from the smart NIC 200 with a channel board ID of "C1", the port 1 does not match the protocol setting table 122 shown in Fig. 2, so the storage controller 100 transmits "mode change command, Port0: iSCSI, Port1: NVMe" or the like to the smart NIC 200. Hereinafter, the IF mode to be set, which is included in the mode change command, will also be referred to as the "specified mode".
[0059] In the following step S307, the smart NIC 200 determines whether or not a mode change command has been received from the storage controller 100. If the smart NIC 200 determines that a mode change command has been received, the process proceeds to step S308; if the smart NIC 200 determines that a mode change command has not been received, the process proceeds to step S309. In step S308, the file writing program 224 of the smart NIC 200 writes the specified mode of each port described in the mode change command to the IF mode file 243, and the process proceeds to step S309. In step S309, the smart NIC 200 resets the smart NIC 200, and the process shown in FIG. 11 ends.
[0060] FIG. 12 is a flowchart showing the processing performed during normal startup of the smart NIC 200. The processing shown in FIG. 12 is executed when the smart NIC 200 simply starts supplying power to the smart NIC 200 without receiving any special instructions from the storage controller 100, or after the reset in step S309 of FIG. 11. In FIG. 12, the same processes as those in FIG. 11 are given the same names. First, in step S401, the smart NIC 200 starts the parser program 222, as in step S301. In the following step S402, the IF mode file 243 written in step S308 of FIG. 11 is read. In the following step S403, the smart NIC 200 starts the protocol processing program 228 based on the description of the IF mode file 243. For example, if the IF mode file 243 is the one shown in the lower part of FIG. 4, the iST program 2281 and the NVMe program 2282 are started as the protocol processing program 228.
[0061] In the following step S404, the smart NIC 200 performs initial setting of the channel board in the same manner as in step S305 of Fig. 11. In the following step S405, the smart NIC 200 notifies the smart NIC 200 of the completion of startup of the channel board and the IF mode in the same manner as in step S306 of Fig. 11. In the following step S406, the smart NIC 200 determines whether or not a mode change command has been received from the storage controller 100. If the smart NIC 200 determines that a mode change command has been received, the process proceeds to step S408, and if the smart NIC 200 determines that a mode change command has not been received, the process proceeds to step S407.
[0062] Note that the processing of step S406 itself is the same as that of step S307 in Figure 11, but the meaning is different. In step S307 in Figure 11, it is assumed that the IF mode file 243 does not exist because the hardware is being initialized, and a change command is received from the storage controller 100 unless the protocol setting table 122 and the initial setting value coincide by chance. That is, in most cases, a change command is received and a positive determination is made in step S307 in Figure 11. In contrast to this, in Figure 12, the IF mode specified by the storage controller 100 was written in step S308 in Figure 11, which was executed immediately before, so no further change command should be received, and a positive determination is made in step S406 only in special cases such as a write error.
[0063] In step S407, which is executed if a negative determination is made in step S406, the smart NIC 200 performs network initialization and ends the process shown in Fig. 12. In Fig. 11, a reset (S309) was executed regardless of the determination in step S307, but if a negative determination is made in Fig. 12, a process similar to a reset is not executed.
[0064] In step S408, which is executed if a positive judgment is made in step S406, the file writing program 224 of the smart NIC 200 writes the designated mode of each port described in the mode change command to the IF mode file 243, as in step S308 of Fig. 11, and proceeds to step S409. In step S409, the smart NIC 200 performs a process reboot and returns to step S401. As mentioned above, a positive judgment in step S406 is an exceptional situation, so if this process judgment is made a predetermined number of times in succession, a blocking process may be performed to disable the smart NIC 200.
[0065] 13 is a flowchart showing the processing of smart NIC 200 when the user switches the IF mode of smart NIC 200, in other words, the mode change processing. In step S501, smart NIC 200 reads the new settings specified by the user received via storage controller 100 and the IF mode described in IF mode file 243. In the following step S502, smart NIC 200 determines whether the two settings read in step S501 match. If smart NIC 200 determines that the two match, it proceeds to step S506; if it determines that the two do not match, it proceeds to step S503.
[0066] In step S503, the smart NIC 200 rewrites the IF mode file 243 based on the user's specification. In the following step S504, the smart NIC 200 executes a process reboot. In step S505, the smart NIC 200 executes the normal startup process shown in FIG. 12 and ends the process shown in FIG. 13.
[0067] 14 and 15 are time charts showing the processing of the storage system 1 when the IF mode of the smart NIC 200 is switched by the user. This series of processes is too long to fit into one diagram, so it has been divided into two diagrams. That is, in each of FIGS. 14 and 15, time passes from the top to the bottom, and the beginning of FIG. 15 is later than the end of FIG. 14.
[0068] First, the user performs an IF mode switching operation of the smart NIC 200 on the storage controller 100 (S601). This IF mode switching operation may be realized using an input device (not shown) provided in the storage controller 100, or may be performed by uploading a file containing a new IF mode from a terminal used by the user to the storage controller 100. When the user performs the IF mode switching operation, the storage controller 100 transmits a storage command including data specifying the new IF mode, i.e., a mode change instruction command, to the smart NIC 200 (S602).
[0069] Upon receiving the mode change command, the smart NIC 200 checks the current IF mode (S603), and if the specified IF mode differs from the current IF mode, it performs the processes of S604 to S615, which will be described below. The process when the specified IF mode matches the current IF mode will be described later. In S604, the smart NIC 200 edits the IF mode file 243 and writes the specified IF mode. The smart NIC 200 then sends a response to the storage controller 100 indicating that it has received the mode change command (S605). The storage controller 100, having received this response, sends a storage command including a process reboot instruction to the smart NIC 200 (S606). The smart NIC 200, having received this storage command, sends a storage command including a reboot receipt to the storage controller 100 and executes the process reboot (S608).
[0070] Thereafter, the storage controller 100 continues polling to confirm the startup of the smart NIC 200 (S609). When the smart NIC 200 starts up, it starts the parser program 222 (S610), and the parser program 222 starts the protocol processing program 228 based on the description in the IF mode file 243 (S611). Then, when the initialization process of the channel board is completed (S612), the startup of the smart NIC 200 is completed (S613). The smart NIC 200 writes the startup completion flag and the IF mode at the time of startup to the register (S614). Then, the storage controller 100 checks the startup completion flag and IF mode of the smart NIC 200 (S615). Moving on to FIG. 15, the explanation continues.
[0071] The initialization of the smart NIC 200 is completed through the above processing, and the network port of the smart NIC 200 is initialized. Specifically, various initial settings are performed between the storage controller 100 and the smart NIC 200 in accordance with the protocol mode (S616). After the above-mentioned S602, if the specified IF mode matches the current IF mode, the smart NIC 200 transmits a normal response to the storage controller 100 indicating that switching of the IF mode is not necessary (S617). This processing corresponds to step S506 in FIG. 13.
[0072] 16 and 17 are time charts showing the processing during the initial hardware setup of the smart NIC 200. This series of processing is too long to fit into one diagram, so it has been divided into two diagrams. That is, in each of FIGS. 16 and 17, time passes from the top to the bottom, and the beginning of FIG. 17 is later than the end of FIG. 16.
[0073] First, the smart NIC 200 is powered on along with a command for hardware initialization. The storage controller 100 continues polling to confirm that the smart NIC 200 has started (S702). When the smart NIC 200 has started up, it starts the parser program 222 (S703), and the parser program 222 starts the protocol processing program 228 based on the description in the IF mode file 243 (S704). The start of the parser program corresponds to step S301 in FIG. 11, and the start of the protocol processing program 228 corresponds to steps S302 to S304 in FIG. 11.
[0074] Then, when the initialization process of the channel board is completed (S705), the startup of the smart NIC 200 is completed (S706). The smart NIC 200 writes the startup completion flag and the IF mode at the time of startup to the register (S707, S306 in FIG. 11). The storage controller 100 then checks the startup completion flag and IF mode of the smart NIC 200 (S708). The explanation will continue with FIG. 17.
[0075] At this point, the initialization of the smart NIC 200 is complete. Next, the storage controller 100 and smart NIC 200 perform network configuration (S709) that is independent of the protocol mode. Because the IF mode of the smart NIC 200 may differ from what the storage controller 100 expects, configuration that is independent of the network protocol is performed here. Note that this network configuration corresponds to the initial network port configuration of the smart NIC 200 shown in Figure 15. Next, the storage controller 100 performs a network check (S710), such as an internal loopback test. Note that in order to perform this network check, it was necessary to perform network configuration (S709) that is independent of the network protocol as a preliminary step.
[0076] If the IF mode of the smart NIC 200 differs from the expected mode, i.e., differs from the mode listed in the protocol setting table 122, the storage controller 100 transmits a storage command, i.e., a mode change command, including data specifying a new IF mode to the smart NIC 200 (S711). Upon receiving the mode change command, the smart NIC 200 checks the current IF mode (S712) and edits the IF mode file 243 to write the specified IF mode (S713). The smart NIC 200 then transmits a response to the mode change command to the storage controller 100 (S714). Thereafter, a hard reset of the smart NIC 200 is performed, and the initialization process at normal startup is carried out.
[0077] According to the first embodiment described above, the following advantageous effects can be obtained. (1) The smart NIC 200, which is an interface module, includes an embedded memory 240 that stores first firmware 240A, second firmware 240B, and an IF mode file 243, and a CPU core 231 that executes the program code included in the first firmware 240A and the second firmware 240B. Each firmware includes multiple protocol-specific program codes, such as iST program code 2281-0, and parser program code 222-0 that implements a parser program 222 that launches at least one of the protocol-specific program codes based on the contents of the IF mode file 243. While supporting multiple network protocols, downtime can be minimized by eliminating the need to switch protocols through firmware replacement. If protocol-specific program code were stored in separate firmware for each protocol, the size of each firmware would be reduced, but firmware replacement would be required to switch protocols, resulting in longer downtime. Furthermore, since separate firmware for each protocol is not required, not only hardware but also software can be standardized.
[0078] (2) When a designated mode indicating the protocol of the program code to be executed at startup is designated, the smart NIC 200 is provided with a file writing program 224 that rewrites the IF mode file 243 to start the protocol-specific program code of the indicated protocol (S502: NO, S503 in FIG. 13) if the IF mode file 243 indicates the start of a program code of a protocol different from the designated mode.
[0079] (3) When the IF mode file 243 is rewritten, the parser program 222 terminates the protocol-specific program code that has already been started, and starts the protocol-specific program code based on the description of the rewritten IF mode file 243 (S504 in FIG. 13).
[0080] (4) The smart NIC 200 has multiple communication ports. The parser program 222 determines the number of processors to be assigned to each communication port based on a pre-created CPU setting table 223. This allows computing resources to be allocated according to the expected communication volume for each communication port.
[0081] (5) A file writing program 224 is provided for writing the IF mode file 243 into the built-in memory 240 during hardware initialization.
[0082] (6) If the IF mode file 243 does not exist (S302 in FIG. 11: NO), the parser program 222 starts a predetermined program code for each protocol.
[0083] (7) The storage controller 100 includes a smart NIC 200-1, which can also be called a first interface module, and a storage controller 100 that receives at least one of read and write commands via the first interface module.
[0084] (8) A controller DRAM 120 stores a protocol setting table 122 indicating a designated mode, which is a communication protocol that the smart NIC 200 should use, and a CHB setting program 125 that rewrites the mode file to start the protocol-specific program code of the designated mode when the IF mode file 243 of the smart NIC 200 indicates the start of a protocol-specific program code of a protocol different from the designated mode (S711 in Figure 17).
[0085] (Variation 1) In the first embodiment described above, of the programs stored in the DRAM 220, only the protocol processing program 228 is prepared for each network protocol. However, the command processing program 226, the command conversion program 227, and the queue operation program 229 may also be prepared for each network protocol.
[0086] (Variation 2) In the first embodiment described above, at the time of hardware initialization and normal startup, the storage controller 100 determines whether the modes match and notifies the result as an IF mode switching command to the smart NIC 200. However, the storage controller 100 may notify the smart NIC 200 of the expected IF mode, and the smart NIC 200 may determine whether the IF mode file 243 needs to be rewritten.
[0087] (Variation 3) In the first embodiment described above, the CPU setting table 121 is stored in the controller DRAM 120, and the queue operation mode and CPU resource allocation can be set. However, the queue operation mode may be fixed to either the queue operation-only mode or the queue operation-dual mode, and the CPU resource allocation may be unchangeable and fixed at, for example, 50% each.
[0088] (Variation 4) In the first embodiment described above, the same connection is handled by the same core. However, the same connection may be handled by different cores. Furthermore, it is not essential that the second controller 230 has multiple CPU cores 231, and the second controller 230 may have only one CPU core 231.
[0089] (Variation 5) In the first embodiment described above, two pieces of firmware are stored in the embedded memory 240. However, this is merely an example of a configuration in which two pieces of firmware are stored, with a typical firmware update procedure in mind, and only one piece of firmware may be stored in the embedded memory 240. Furthermore, three or more pieces of firmware may be stored in the embedded memory 240.
[0090] (Variation 6) In the first embodiment described above, the smart NIC 200 has multiple communication ports, namely, port 1 and port 2. However, the smart NIC 200 may have only one communication port.
[0091] --Second embodiment-- A second embodiment of the smart NIC will be described with reference to FIG. 18. In the following description, the same components as those in the first embodiment are designated by the same reference numerals, and differences will be mainly described. Points that are not specifically described are the same as those in the first embodiment. This embodiment differs from the first embodiment mainly in that a redundant configuration is realized.
[0092] FIG. 18 is an overall configuration diagram of a storage system 1A according to the second embodiment. A first smart NIC 200-1 and a second smart NIC 200-2 are connected to the storage controller 100. Hereinafter, the storage controller 100, the first smart NIC 200-1, and the second smart NIC 200-2 are collectively referred to as the information communication device 2A. A first host 99-1 is connected to the first smart NIC 200-1 and the second smart NIC 200-2. A second host 99-2 is connected to the first smart NIC 200-1 and the second smart NIC 200-2.
[0093] The first host 99-1 and the second host 99-2 use different communication protocols; for example, the first host 99-1 uses iSCSI, and the second host 99-2 uses RoCE V2. The first smart NIC 200-1 and the second smart NIC 200-2 each have two ports, and communication protocols corresponding to the first host 99-1 and the second host 99-2 are set to these ports, respectively. That is, the storage controller 100 in this embodiment stores a protocol setting table 122 shown in the lower part of FIG. 18.
[0094] The information communication device 2A achieves communication redundancy by using two smart NICs 200. That is, even if a failure occurs in either the first smart NIC 200-1 or the second smart NIC 200-2, communication between the first host 99-1 and the second host 99-2 and the storage controller 100 can continue.
[0095] According to the second embodiment described above, the following advantageous effects can be obtained. (9) The information communication device 2A includes a first smart NIC 200-1 and a second smart NIC 200-2, which are interface modules according to claim 1, and a storage controller 100. Each of the first smart NIC 200-1 and the second smart NIC 200-2 has two communication ports, and each communication port can support a different communication protocol. In this embodiment, each of the first smart NIC 200-1 and the second smart NIC 200-2 has two communication ports, and therefore supports two or more communication protocols. Due to the entry in the protocol setting table 122, the combination of communication protocols supported by the first smart NIC 200-1 matches the combination of communication protocols supported by the second smart NIC 200-2. Therefore, communication redundancy can be achieved using two smart NICs 200.
[0096] In each of the above-described embodiments and modifications, the functional block configurations are merely examples. Some functional configurations shown as separate functional blocks may be configured as an integrated unit, or a configuration shown in a single functional block diagram may be divided into two or more functions. Furthermore, some of the functions of each functional block may be provided by other functional blocks.
[0097] The above-described embodiments and modifications may be combined with each other. Although various embodiments and modifications have been described above, the present invention is not limited to these. Other embodiments conceivable within the scope of the technical concept of the present invention are also included within the scope of the present invention. [Explanation of symbols]
[0098] 1: Storage system 2, 2A: Information and communication equipment 9: Host 100: Storage Controller 121:CPU setting table 122: Protocol setting table 200: Smart NIC 220: DRAM 221: Smart NIC operating protocol mode table 222: Parser program 222-0: Parser program code 223 :CPU setting table 228: Protocol processing program 230: Second controller 231: CPU cores 232: CPU setting list 240: Embedded memory 240A: 1st firmware 240B: Second firmware 243 :IF mode file 2281: Program for iST 2281-0: Program code for iST 2282: NVMe program 2282-0: NVMe program code 2283: iSI program 2283-0: iSI program code 2284: Program for Ro 2284-0: Program code for Ro
Claims
1. a non-volatile storage area for storing one or more firmware and mode files; a processor that executes program code included in the firmware, Each of the firmware includes: A program code for each of a plurality of protocols; an activation unit that activates at least one of the plurality of protocol-specific program codes based on the description of the mode file.
2. 2. The interface module of claim 1, The interface module further comprises a file rewriting unit that, when a designated mode indicating a protocol of program code to be executed at startup is designated, rewrites the mode file to start the protocol-specific program code corresponding to the designated mode if the mode file indicates the start of the protocol-specific program code that is different from the designated mode.
3. 3. The interface module of claim 2, When the mode file is rewritten, the launching unit terminates the protocol-specific program code that has already been launched, and launches the protocol-specific program code based on the description of the rewritten mode file.
4. 2. The interface module of claim 1, Equipped with multiple communication ports, The processor is provided in plurality, The activation unit determines the number of processors to be assigned to each communication port based on a CPU setting table created in advance.
5. 2. The interface module of claim 1, The interface module further comprises a file writing unit that writes the mode file into the nonvolatile storage area at the time of hardware initialization.
6. 2. The interface module of claim 1, The activation unit activates predetermined program code for each protocol when the mode file does not exist.
7. a first interface module, the interface module being the interface module of claim 1; an information communication device comprising: a storage controller that receives at least one of a read command and a write command via the first interface module;
8. 8. The information communication device according to claim 7, a storage device that stores a protocol setting table that indicates a designated mode, which is a communication protocol that the first interface module should use; an information communication device further comprising a channel board setting unit that, when the mode file of the first interface module indicates the activation of the protocol-specific program code of a protocol different from the specified mode, rewrites the mode file to activate the protocol-specific program code of the specified mode.
9. 8. The information communication device according to claim 7, further comprising a second interface module, the second interface module being the interface module of claim 1; the storage controller receives at least one of a read command and a write command via the first interface module and the second interface module; each of the first interface module and the second interface module has a plurality of communication ports, and each of the communication ports is capable of supporting a different communication protocol; each of the first interface module and the second interface module supports two or more communication protocols; An information communication device, wherein a combination of communication protocols supported by the first interface module matches a combination of communication protocols supported by the second interface module.
10. A startup method executed by an interface module including a non-volatile storage area for storing one or more pieces of firmware and a mode file, and a processor for executing program code included in the firmware, the method comprising: Each of the firmware includes: A program code for each of a plurality of protocols; a launching unit that launches at least one of the plurality of protocol-specific program codes based on the description of the mode file; A startup method including the processor operating the startup section of any of the firmware to start at least one of the plurality of protocol-specific program codes based on the description of the mode file.
Citation Information
Patent Citations
Fabric with storage device and controller the same
JP1999065980A
Electronic unit
JP1999259409A
Storage system, computing system, and interface module
JP2005339323A
Connecting buses, electronic devices and systems
JP2006526213A
A relay device that can communicate using multiple different communication protocols
JP2007513436A