FORWARDING NVSVSE OVERFABRIC PACKAGES
The network infrastructure device automatically identifies and routes NVMe-oF packets to lossless queues, addressing data loss issues in mixed protocol environments, ensuring reliable transmission and efficient resource management.
Patent Information
- Application Number
- DE112019007406
- Authority / Receiving Office
- DE · DE
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2019-05-30
- Publication Date
- 2025-08-28
- Estimated Expiration
- 2039-05-30
AI Technical Summary
Existing network infrastructure devices struggle to efficiently process NVMe-oF network packets, which are lossless protocols, due to limited computing and storage resources, leading to potential data loss and corruption, especially when handling multiple protocols simultaneously.
Implementing a network infrastructure device that automatically identifies NVMe-oF packets using signature detection and routes them to lossless queues, while non-NVMe-oF packets are handled differently, utilizing TCAM tables and pause/resume operations to manage congestion.
Ensures reliable, lossless transmission of NVMe-oF packets, optimizing network performance by reducing data loss and corruption, even with limited resources, and adapting to changing network conditions without frequent manual configuration.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
BACKGROUND
[0001] Some corporate information technology departments have begun to define their computing infrastructure as much as possible through software. Typically, this software-defined infrastructure sometimes relies on hyperconverged infrastructure (HCl), in which various functional components are integrated into a single device. One aspect of HCl is that hardware components can be virtualized into software-defined and logically isolated representations of compute, storage, and networking for a computer hardware infrastructure. HCl and the virtualization of hardware resources can enable flexible allocation of computing resources. For example, configuration changes can be made to the infrastructure, and the underlying hardware easily adapts to a new configuration implemented by software.Some companies can also use HCI to implement a virtualized computer by defining the specifications of the computer's capabilities entirely in software. Each virtualized computer (e.g., defined by software) can then utilize a portion of one or more physical computers (e.g., the underlying hardware). A recognized result of virtualization is that physical computing, storage, and networking capacity within an organization can be used more efficiently.
[0002] NVM Express (NVMe) is a data transfer protocol typically used for communication with solid-state drives (SSDs) over a Peripheral Component Interconnect Express (PCIe) communication bus. There are many different types of data transport protocols used for different purposes in computer systems. Each transport protocol can have different characteristics related to speed and performance, which is why each protocol may be suitable for different purposes. NVMe is an example of a data protocol that can be used for high-speed data transfer between a host computer system and an SSD. NVMe is typically used in computers where high-performance read and write operations on an SSD are desired.Using NVMe-based storage that supports high-performance read and write operations within a software-defined infrastructure while still using HCI hardware can provide a useful and adaptable configuration for infrastructure networks.
[0003] In 2014, a specification for operating NVMe over fabrics (NVMe-oF) was launched. One goal of this specification was to extend NVMe to fabrics such as Ethernet, Fibre Channel, and InfiniBand, or any other suitable storage fabric technology. Accessing SSDs over network fabrics via NVMe-oF can enable scaling of software-defined storage capacity (e.g., portions of a larger hardware storage capacity) for access. This scaling for access can: a) enable access to a large number of NVMe devices, and b) increase the physical distance between devices (e.g., within a data center). Scaling can include increasing distances over which NVMe storage devices are accessed from another computing device. Storage protocols are typically lossless due to the nature of the storage targets.If a protocol used for storage is lossy (lossy is the opposite of lossless), proper storage of data will likely experience unacceptable slowness (e.g., due to packet retransmission retries) or, worse, corruption (e.g., data inaccuracies) and thus be unusable in a real-world computing environment. NVMe-oF traffic on the network fabric is therefore implemented losslessly. NVMe-oF network packets can be transmitted along with other traffic on a network. Therefore, NVMe-oF traffic can be transmitted on intermediate devices (e.g., network switches that provide the network fabric between the host device and the storage device) over the same physical transport medium (e.g., optical or electronic cable) as other data types.
[0004] DE 11 2013 000 601 T5 relates to techniques for command confirmation for access to a storage device by a remote client.
[0005] US 2015 / 0 378 606 A1 generally refers to low-latency access to remote storage using the Non-Volatile Memory Express (NVMe) protocol over a network.
[0006] The present invention is defined by independent claims 1, 9 and 15. Embodiments are subject to the respective dependent claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0007] The present disclosure will be more fully understood from the following detailed description when read in conjunction with the accompanying drawings.
[0008] It is emphasized that, in accordance with standard industry practice, the various features are not drawn to scale. Rather, the dimensions or positions of functional features may be shifted or combined for design, security, performance, or other factors known in the field of computer systems. Furthermore, the order of processing for some functions may be changed, both internally and relative to each other. This means that some functions cannot be implemented using serial processing, and therefore the functions may be executed in a different order than shown or possibly in parallel. For a detailed description of various examples, reference is now made to the accompanying drawings, in which: Fig. 1 is a functional block diagram illustrating an example of a network infrastructure device, such as a switch / router, according to one or more disclosed implementations; Fig. 2A is a functional block diagram illustrating an example of a high-availability switch according to one or more disclosed implementations; Fig. 2B is a functional block diagram illustrating an example high-availability switch including an SSD integrated into the high-availability switch as an example of an enhanced storage-capable switch, according to one or more disclosed implementations; Fig. 3A is a block diagram illustrating an example of forwarding network packets using an intermediate network infrastructure device (or a component of a device) according to one or more disclosed implementations; Fig. 3B is a block diagram illustrating an example of an internal queue routing mechanism that may be used by an intermediate network infrastructure device (or a component of a device) according to one or more disclosed implementations; Fig. 4 is a block diagram illustrating an example high-level view of actions that may be performed in implementing automatic NVMe-oF network packet detection, prioritization, and forwarding according to one or more disclosed implementations; Fig. 5 is an example process flow diagram illustrating an example method for automatically identifying and routing NVMe-oF network packets according to one or more disclosed implementations; Fig. 6 is an example of a computing device having a hardware processor and accessible machine-readable instructions stored on a machine-readable medium that can be used to perform the example method of Fig. 5 according to one or more disclosed implementations; Fig. 7 illustrates a computer network infrastructure that may be used to implement all or part of the disclosed automatic NVMe-oF network packet capture and routing for a network device according to one or more disclosed implementations; and Fig. 8 shows a computer processing apparatus that may be used to implement the functions, modules, processing platforms, execution platforms, communication devices, and other methods and processes of this disclosure. DETAILED DESCRIPTION
[0009] Illustrative examples of the subject matter claimed below are now disclosed. In the interest of clarity, not all features of an actual implementation are described for each example implementation in this specification. It is understood that in developing such a concrete example, numerous implementation-specific decisions may be made to achieve the developer's specific goals, such as adhering to system-related and business-related constraints that will vary from one implementation to another. Furthermore, it is recognized that such a development effort, while complex and time-consuming, is a routine undertaking for those skilled in the art having the benefit of this disclosure.
[0010] A computer network may consist of many devices that can communicate with each other. To support this communication, a variety of network infrastructure devices such as switches and routers may also be connected to the network. Network infrastructure devices can support network communication by intercepting and redirecting network packets to make communication between devices virtually seamless. These network infrastructure devices can perform complex tasks to enable seamless communication between devices. For example, some network infrastructure devices can store network packets in memory for a short time. This temporary storage of network packets may be necessary if, for example, the sender of the network packets is sending the packets faster than the receiver of the network packets can receive them.Other implementations may use oversubscription or overallocation of network bandwidth to essentially eliminate potential congestion. For example, a data communication flow expected to have a peak utilization of 1 MB / s may be allocated 5 MB / s of bandwidth. The cumulative effect of oversubscription and overallocation may be considered inefficient in terms of wasted bandwidth.
[0011] Network infrastructure devices can use several techniques for temporarily storing network packets for further processing. One common technique is the use of the concept of a queue for storing network packets. A queue can allow network packets to be stored and transmitted in the order in which they arrive, following a simple FIFO (first-in, first-out) ordering. The network infrastructure device can have limited storage capacity for network packets and can discard some network packets that cannot be delivered to the receiver within a reasonable amount of time (so-called "dropping packets"). Many network protocols are resilient to lost network packets and can simply request the sender to retransmit lost network packets.
[0012] However, some network protocols can be considered "lossless" protocols that do not handle packet loss well. That is, lossless protocols are not designed to account for dropped packets, in part because these protocols expect all packets to arrive in the correct order. Protocols used to connect to storage devices (e.g., SSDs) are typically lossless protocols. NVMe may be a candidate for lossless protocol implementations and is typically implemented with an underlying lossless transport. In cases where lossless protocols are used, the network infrastructure device can be configured to process network traffic in a way that ensures that all packets are successfully delivered by using the concept of a lossless queue.A lossless queue, like any other queue, can follow the same FIFO order for delivering network packets as a regular queue. However, a lossless queue must not discard network packets before they have been delivered to a receiver. In some implementations, the sender can be instructed to slow down or stop transmitting packets to a congested queue (e.g., for a period of time until transmissions can resume at full speed). The network infrastructure device, which has only a limited amount of memory for storing network packets, can instruct the sender to pause briefly until the lossless queue is able to process and discard some of the stored network packets.
[0013] NVMe-oF traffic on the network fabric is implemented losslessly, as non-lossy read and write operations are likely to slow down the transfer or even corrupt data. As is understandable to users of any computer, reading and writing data on a computer drive or other storage device should result in successful processing of all read and write operations. For example, a student would hardly accept that transferring a copy of their term paper takes a very long time or, even worse, that their term paper is missing pages or updates if operations to save the data to a storage device are discarded because write operations are considered optional.
[0014] NVMe-oF network packets for performing read and write operations may be forwarded to network infrastructure devices such as network switches or routers capable of processing NVMe-oF traffic without loss of NVMe-oF network packets. Network infrastructure devices may support lossless port queuing using techniques such as the Priority Flow Control (RFC) standard 802.1Qbb. The use of lossless queuing in a network device can be complicated because a single network device may process both lossless and lossy protocols simultaneously. To address this complication and other issues, the disclosed techniques represent an improvement in the operation of computing devices, where, for example, a network switch may separate NVMe-oF network packets from non-NVMe-oF network packets and perform a higher level of processing (e.g.,higher priority and lossless) for NVMe-oF packets compared to non-NVMe-oF packets. Non-NVMe-oF network packets, unlike NVMe-oF network packets, can form network data streams that are more resilient to network packet loss and therefore do not use a lossless queue. A lossless queue, in this context, is a temporary storage location where network packets can be stored until they are transmitted to a receiver and the transmission is acknowledged. A lossless queue can utilize more computational power or storage resources to operate in a network infrastructure device, which may have a limited amount of computational and storage resources. Using a lossless queue for all network packets in a network infrastructure device, which may have limited computational resources, may not be practical.
[0015] Some methods for separating NVMe-oF network packets from non-NVMe-oF network packets can be implemented by a network infrastructure device configured to process NVMe-oF network packets losslessly. One method for separating NVMe-oF network packets from non-NVMe-oF network packets can be configured to recognize network packets originating from certain Internet Protocol (IP) addresses as NVMe-oF packets (even if they are not actually NVMe-oF). Network packets from an IP address defined as the source of NVMe-oF network packets can then be forwarded to lossless queues, while non-NVMe-oF network packets (from other IP addresses) can be forwarded to other queues that do not require lossless processing.When new sources of NVMe-oF network packets are added to the network or existing sources of NVMe-oF network packets are removed, the network infrastructure device can be updated (possibly a manual update) to detect network packets originating from the new or updated IP address (based on the IP address definition). In large-scale deployments of NVMe devices to be accessed via NVMe-oF across a network fabric, it may be undesirable to require the configuration of a network infrastructure device to be continually updated in response to network changes. Furthermore, some non-NVMe-oF packets may be subject to higher-level processing even if they are not actually NVMe-oF protocol packets.This means that configuration definitions based only on IP addresses may not result in accurate identification of network packet protocols.
[0016] This disclosure describes an improvement over previously provided methods, which may depend on IP addresses and corresponding frequent (sometimes manual) configuration changes of the network infrastructure device. According to the disclosed implementations, NVMe-oF network packets may be automatically distinguished from non-NVMe-oF network packets by a network infrastructure device that can detect key portions of NVMe-oF network packets that are not present in non-NVMe-oF network packets. These key portions may be considered a "signature" of an NVMe-oF packet. The ability to detect network packets as NVMe-oF network packets may reduce or eliminate the need for constant reconfiguration of network infrastructure devices as the number of NVMe devices connected to the network fabric changes.Furthermore, in the same or an additional disclosed implementation, the network infrastructure device may be configured to automatically forward identified NVMe-oF network packets to one or more lossless queues, in addition to automatically detecting NVMe-oF network packets based on their signature. As mentioned above, there may be various underlying data transmission formats for NVMe, with the recognized abbreviation for NVMe over PCIe being "NVMe / PCIe." NVMe over Fabrics, when used agnostic to transport, is abbreviated to "NVMe-oF." NVMe over Remote Direct Memory Access (RDMA) is abbreviated to "NVMe / RDMA." NVMe over Fibre Channel is abbreviated to "NVMe / FC," and NVMe over Transport Control Protocol (TCP) is abbreviated to "NVMe / TCP." As other protocols are combined with NVMe, it is expected that additional abbreviations may be defined.Given the advantages of this disclosure, the techniques of this disclosure are applicable to existing and future implementations of transports that may be used in a similar manner to the examples of this disclosure, as will be apparent to those skilled in the art.
[0017] Routing rules of a network infrastructure device (e.g., switch / router) can be stored in Ternary Content Addressable Memory (TCAM) tables to enable rapid resolution of routing rules for NVMe-oF network packets. TCAM can be described as specialized high-performance storage that can be used by network infrastructure devices for rapid routing rule resolution.
[0018] In some implementations, the disclosed network infrastructure device may be programmed to allow the lossless queue to fill to a certain threshold before sending instructions to senders of NVMe-oF network packets requesting them to temporarily pause transmissions. Then, when the lossless queue is emptied by the network infrastructure device sending NVMe-oF packets to the intended destination, the network infrastructure device may issue a command to the previously paused senders requesting them to resume sending network packets. The pausing and resuming process may be implemented to prevent the lossless queue from filling up and forcing the network infrastructure device to discard NVMe-oF network packets due to insufficient memory available to store network packets.In implementations that use pause and resume operations, different configurable thresholds can be used to determine when one of the two pause or resume commands should be issued.
[0019] As briefly mentioned above, some disclosed implementations can automatically identify NVMe-oF network packets, at least in part, by examining the characteristics of each network packet. Once the network packets are received for inspection, they can be analyzed to identify information (e.g., a signature, as described further below) that may be unique to NVMe-oF network packets. For example, network packets using the Remote Direct Memory Access (RDMA) over Converged Ethernet protocol (commonly known as the RoCE protocol) can be identified by the EtherType value in the packet having an assigned hexadecimal number equal to "0x8915." The EtherType, in this context, is a two-octet field in an Ethernet packet that specifies the protocol encapsulated in the packet.In a similar example, RoCE version 2 network packets can be identified as being encapsulated in User Datagram Protocol (UDP) packets with a destination port of 4791 or 4420 (as assigned by the Internet Assigned Number Authority (IANA)).
[0020] There are many possible current and future protocols that can be used to form NVMe-oF network packets. As another example, NVMe-oF network packets using the Internet Wide-Area RDMA (iWARP) protocol can be identified by identifying Transmission Control Protocol (TCP) network packets with a destination port of 4420. Similarly, the protocol using NVMe over TCP can be associated with other TCP network packets (e.g., control packets) with characteristics that can help identify NVMe-oF network traffic. The identifying uniqueness of each protocol can be used to automatically identify NVMe-oF network packets for automatic forwarding to lossless queues. Some of the presented implementations can use an extensible "rule-based" signature as a technique for identifying NVMe-oF network packets.Thus, in these example implementations, updating the rules would enable the detection of additional (and possibly future) signatures associated with NVMe-oF network packets. In some disclosed implementations, the examples refer to specific addresses and port numbers, but any type of signature can be used to identify a type of NVMe-oF protocol, and these signatures can be defined as rules for different implementations.
[0021] In Fig. 1 shows a network infrastructure device 100, such as a switch / router 105, in a block diagram. Generally, a router has two types of network element components organized into separate layers, represented as the control plane 110 and the data plane 115. In addition, a typical switch / router 105 may include processing resources and local data storage 120. Depending on the capabilities of a particular switch / router 105, various types of processing resources and local storage (for internal use of the device) may be present. In general, higher-capacity switch / router 105 implementations include extensive processing resources and storage, while simpler devices (e.g., low-capacity) contain fewer internal resources. Local storage for internal device use is not to be confused with attachable or integrated storage devices (e.g.,SSDs) for network use as described in this disclosure.
[0022] The control plane 110, e.g., in a router, can be used to maintain routing tables (or a single comprehensive routing table) that list which route should be used to forward a data packet and over which physical interface connection (e.g., egress ports 160 through 169). The control plane 110 can perform this function using internal preconfigured policies called static routes or by dynamically learning routes using a routing protocol. Static and dynamic routes can be stored in one or more routing tables. The control plane logic can then remove extraneous directives from the table and create a forwarding information base (FIB) used by the data plane 115.
[0023] A router may also use a forwarding plane (e.g., part of the data plane 115) that contains different forwarding paths for information from different ports or different destination addresses (e.g., forwarding path A 116 or forwarding path Z 117). In general, the router forwards data packets between incoming (e.g., ports 150-159) and outgoing interface connections (e.g., ports 160-159). The router forwards data packets to the correct network type by using information contained in the packet header that matches entries in the FIB provided by the control plane 110. Ports are typically bidirectional and are represented in this example as either "input" or "output" to illustrate the flow of a message through a routing path. In some network implementations, a router (e.g.,Switch / Router 105) have interfaces for different types of physical-layer connections, such as copper cables, fiber optic cables, or wireless transmission. A single router can also support various network-layer transmission standards. Each network interface can be used to forward data packets from one transmission system to another. Routers can also be used to connect two or more logical groups of computing devices, called subnets, each with a different network prefix.
[0024] The also in Fig. The bidirectional arrow 107 shown in Figure 1 indicates that the control plane 110 and the data plane 115 can work in coordination to achieve the overall capabilities of the switch / router 105. Similarly, the bidirectional arrow 125 indicates that processing and local data storage resources 120 can interface with the control plane 110 to provide processing and storage support for the capabilities assigned to the control plane 110. The bidirectional arrow 130 indicates that the processing and local data storage resources 120 can also be connected to the data plane 115 if necessary.
[0025] The Fig. The control plane 110 illustrated in Figure 1 includes several example functional control blocks. Additional control blocks are possible depending on the capabilities of a particular implementation of a switch / router 105. Block 111 indicates that the control plane 110 may have associated build information regarding a software version of the control code currently executing on the switch / router 105. Furthermore, this software version may include configuration settings that determine how the switch / router 105 and its associated control code perform various functions.
[0026] Many different configuration settings are possible for both the software and the device itself, and a description of the individual settings would exceed the scope of this disclosure. However, the disclosed automatic detection and routing of NVMe-oF network packets may be implemented in one or more functional components of the network infrastructure device 105. The rules for identifying NVMe-oF network packets and the processing logic for performing the automatic identification may be integrated into these one or more functional components. In some implementations, as in the Fig. As shown, a network infrastructure device 100 (e.g., switch / router 105 or HA switches 200A and 200B) may be composed of multiple devices in various HA configurations. One or more devices in switch / router 105 may be configured to implement automatic detection and forwarding of NVMe-oF network packets.
[0027] Further with reference to Fig. 1, block 111 indicates that various types of routing information and connectivity information may be known to the switch / router 105 (as an example of the network infrastructure device 100) and the control plane 110. Block 112 indicates that an information store may be accessible from the control plane 110 and may contain forwarding tables or NAT information. Block 113 indicates that the control plane 110 may also be informed of forwarding decisions and other processing information. Although these logical capabilities in Fig. 1 are shown within the control plane 110, they can also be implemented outside the control plane 110, but are accessible to it.
[0028] In Fig. Figure 2A shows an example of a high-availability switch 205A shown in block diagram 200A. The high-availability switch 205A is shown with two controllers. Controller 1 (210) is referred to as the "active" controller, and Controller 2 (215) is referred to as the "standby" controller. As explained in more detail below, a high-availability switch, such as the high-availability switch 205, can have any number of controllers, but typically at least two. In some configurations, the controllers operate as a primary / backup pair with a dedicated active controller and a dedicated standby controller. In a primary / backup configuration, the primary controller performs all network functions, and the standby controller, as the name suggests, waits to become the active controller when a failover condition is reached.Failover can be automatic or manual and implemented for different components within a parent HA device. Generally, at a high-level conceptual level, failover refers to the role reversal between the active and standby components, such that the standby component becomes the active and the active component (sometimes after a reboot or swap) becomes the standby component. In the context of SSD devices integrated with a network switch, an SSD can act as the primary in a redundant pair of SSDs that are kept up-to-date with data writes, allowing the backup of the redundant pair to automatically take over (e.g., the backup is a hot standby) if (for any number of reasons) the primary SSD becomes unavailable.
[0029] The 2Q5A High Availability Switch also includes a plurality of communication cards (e.g., Card Slot 1 (221), Card Slot 2 (222), Card Slot 3 (223), and Card Slot N (225)), each of which may have a plurality of communication ports configured to support network communication. A card slot, such as Card Slot 1 (221), may also be referred to as a "line card" and may have a plurality of bidirectional communication ports (as well as a management port (not shown)). Card Slot 1 (221) is shown as Port 1-1 (241) and Port 1-2 (242) and may represent a "card" that plugs into a slot (e.g., communication bus port) of a backplane (e.g., communication bus) of the 2Q5A High Availability Switch. Other connections and connection types are also possible (e.g., cable connection, NVMe device). Fig. 2A Card slot 2 (222) is shown with port 2-1 (243) and port 2-2 (244); card slot 3 (223) is shown with ports 3-1 (245), 3-2 (246) and port 3-N (247); and card slot N (225) is shown with port X (248) and port Y (249).
[0030] To support communication between a controller (e.g., an active and / or a standby controller) in a switch and client devices connected to that switch, a number of communications client applications can run on a specific switch. Client applications running on a switch can assist in both communicating with the connected clients and configuring the hardware on the switch (e.g., ports on a line card). In some cases, client applications are referred to as "listeners" because they partially "listen" for a communication or command and then process what they receive. For the high-availability switch 205A, an example client application is Client 1 (230-1), which supports communication from the active or standby controller with devices connected through card slot 1 (221).In some example implementations, a listener may be configured to automatically detect and forward NVMe-oF network packets. Other implementations where automatic identification is performed by hardware components or other software components are also possible.
[0031] A second example of a client application in Fig. 2A is Client 2 (230-2), which supports communication from either controller to Card Slot 2 (222) and Card Slot 3 (223). Finally, Client Z (230-Z) supports communication from either controller to Card Slot N (225). Dashed lines in block diagram 200 from Standby Controller 2 to client applications indicate that the Standby Controller can communicate with a communications card slot through a client application, but may not be transmitting critical data due to its standby state. The solid lines in block diagram 200 from Active Controller 1 to the client applications indicate an active state where more communication is likely occurring.It should also be noted that a single client can be configured to support more than one (or even part of one) communications card slot (line card), as shown in the figure with Client 2 (230-2) supporting both card slot 2 (222) and card slot 3 (223) simultaneously. Limits on the number of card slots supported by a client may be an implementation decision based on the performance characteristics or other factors of the switch and its internal design.
[0032] With reference to Fig. Figure 2B shows block diagram 200B of HA switch 205B as a variant of HA switch 205A described above. As shown, HA switch 205B integrates multiple SSD components in area 255 (outlined by a dashed box) that can be used to provide network storage to remote devices. As shown, SSD devices can be used instead of communication ports for HA switch 205B. Specifically, SSD 2-1 (250-1) and SSD 2-2 (250-2) are integrated into communication card slot 2 (252). To achieve an HA configuration, SSD 2-1 (250-1) and SSD 2-2 (250-2) can be paired as a redundant pair of storage devices or implemented independently, depending on implementation specifications.Since both SSD 2-1 (250-1) and SSD 2-2 (250-2) are located on card slot 2 (252), it may be desirable to provide a redundant pair where both the primary and backup of a redundant pair are not located on the same line card. In particular, an SSD can be paired with an SSD on a different line card for redundancy. Either implementation is possible. One potential benefit of having inputs and outputs (or redundant pairs) on the same line card would be that communication between devices on the same line card would not have to traverse a chassis fabric (i.e., communication between devices would occur locally on the line card fabric). Of course, various implementation criteria can be considered to find an optimal implementation for a specific application solution.In addition, it is possible for a single line card to have a combination of integrated SSD components and communication ports.
[0033] As also illustrated with the example of HA switch 205B, a line card can communicate with any number of integrated SSD components. In particular, area 255 shows that SSD 3-1, SSD 3-2, and SSD 3-N (all referenced by element reference number 251) can be integrated into (or connected to) card slot 3 (253). In this example, client 2 (230-2) can adapt to communicate with line cards with integrated SSD components, and other computing devices (e.g., outside area 255) may not be aware of the detailed implementations in area 255. That is, the disclosed implementation of the SSD components integrated into HA switch 205B can be transparent to external devices and other components of HA switch 205B.Although Client 2 (230-2) is depicted in block diagram 200B as a potential software (or firmware) module, it is possible to implement the functionality of Client 2 (230-2) entirely (or at least partially) within the hardware logic (i.e., silicon-based logic) of HA switch 205B. One skilled in the art and familiar with the benefits of this disclosure will recognize that many different implementations of software, firmware, and hardware logic may be used to achieve the disclosed techniques of automatically detecting, forwarding, and prioritizing NVMe packets with a higher processing priority relative to packets of other protocols to achieve lossless communication flows for network-attached storage devices (particularly NVMe-oF devices).
[0034] In Fig. 3A is an example of forwarding network packets 300A when using a network switch / router such as the switch / router 105 of Fig. 1. As mentioned above, network packets for multiple protocols may be transmitted simultaneously on the same physical medium (or the data transport layer in the case of wireless networks) of a network communication link. Accordingly, network packets of multiple protocols may be received simultaneously at one or more ports of a network switch / router (e.g., network switch / router 105). For example, non-NVMe-oF network packets 305 may be received in conjunction with multiple NVMe-oF protocols such as RoCE V2 310, IWARP 315, or another NVMe-oF protocol 320. According to the disclosed implementations, network packets may be received by the network switch / router and forwarded to the internal subsystems mentioned above. For example, forwarding decision and control plane processing 113, in which detection techniques based on the packet analysis mentioned above (e.g.,Rule-based signature analysis may be performed to distinguish NVMe-oF network packets from non-NVMe-oF network packets. The identified network packets may then be forwarded to one or more specific routing paths in the data plane 115. In some example implementations, the forwarding decision and control plane processing 113 may be configured to forward non-NVMe-oF network packets to the lossy forwarding plane 316, which is configured to forward network packets for protocols that may be resistant to loss. Alternatively, the configuration may forward NVMe-oF network packets to the lossless forwarding plane 317, which is configured to never lose network packets (e.g., never drop a packet), as may be desired for NVMe-oF protocols.
[0035] To process all network packets received at the example network infrastructure device 100 (e.g., switch / router 105), the lossy forwarding plane 316 may operate in parallel with the lossless forwarding plane 317 to deliver received network packets to a plurality of network packet consumers (e.g., non-NVMe-oF network packet consumers 325 and NVMe-oF network packet consumers 330). Thus, lossy communications may be delivered to non-NVMe-oF packet consumers 325, while lossless communications may be delivered to NVMe-oF packet consumers 330 (possibly with higher priority compared to non-NVMe-oF network packets).
[0036] In Fig. 3B is an exemplary block diagram illustrating an exemplary internal queue routing mechanism 300B implemented by a network infrastructure device 100 (see Fig. 1). In this example, the concept of a node can be viewed as a logical subsystem of a network infrastructure device or as a logical processing block implemented internally or externally in a network infrastructure device. In this example, a plurality of source nodes 335 may receive network packets in a plurality of queues contained within the source node 335. Each queue within the source node 335 may be coupled to rate control (RC) logic 385. Each source node 335 may be connected to multiple fabric nodes 340 via the fabric load balancer (FLB) 390.
[0037] Connections from source nodes 335 to multiple fabric nodes 340 form a plurality of alternative paths 355 on which network packets can be sent to fabric nodes 340. Fabric nodes 340 may also have multiple internal queues that receive network packets sent from source nodes 335. Fabric nodes 340 may also have a load balancing mechanism 395 that forwards received packets to internal queues of fabric node 340. Fabric nodes 340 may be connected to destination nodes via an interconnect mechanism, such as bus 365. The destination nodes may be a plurality of nodes, such as B. Destination port node 345 and destination NVMe node 350. For brevity, this example only shows two types of destination nodes, but many types of nodes are possible that can be connected to the fabric nodes 340.
[0038] In one example implementation, fabric nodes 340 can be configured to deliver network packets to destination nodes based on the type of network packet being delivered. For example, non-NVMe-oF packets can be delivered to one or more destination port nodes 345. The destination port node 345 can deliver the network packet to one or more internal queues 370. The internal queues 370 can be further subdivided, for example, based on the processing priority of the network packet. In another example, fabric nodes 340 can deliver NVMe-oF network packets to NVMe destination nodes 350. The NVMe target node 350 may have one or more queue pairs 375, such as the submission queue (where network packets are submitted to the device for processing) and a completion queue (where responses to processed network packets are sent to a destination on the network).In the context of an SSD interface, the submission queues are for read and write operations and the completion queues are for data transfer in response to these commands.
[0039] Each destination node (345, 350) may also include an egress queue congestion calculation function 380. The egress queue congestion calculation function 380 may be implemented in software, firmware, or hardware logic and may be used to monitor the node's capacity to accept new network packets. According to disclosed implementations, the egress queue congestion calculation function 380 may be coupled to one or more rate control logic 385 of the source node 335 (shown by line 365). In an example implementation, the egress queue calculation 380 may be used to control packet flow based on a node having reached or nearly reached its capacity to process new network packets.For brevity, only one such coupling is shown in the diagram with line 365, but in actual implementations, all instances of the egress queue congestion calculation 380 may be coupled to all instances of the rate control logic 385 in all source nodes 335.
[0040] The egress queue congestion calculation 380, when coupled with the rate control logic 385, may use the direct feedback control 360 to form a feedback loop between the source nodes 335 and the destination nodes 345, 350 to prevent network packets from consuming resources in the fabric nodes 340 when a destination node 345, 350 may not have the capacity to process more network packets. If the source node 335 is notified to control the incoming rate of network packets, it may process additional received network packets based on the type of packet received. For example, if a source node 335 receives an NVMe-oF network packet after being instructed to control the rate, the network infrastructure device may inform the sender to temporarily stop sending network packets.Another example: If a source node 335 receives a non-NVMe-oF network packet after being instructed to control the rate, the source node may drop the packet. Other implementations of actual packet handling based on congestion are also possible.
[0041] In Fig. 4 shows a block diagram of an example high-level view of a control flow 400 that can be implemented for automatic detection and forwarding of NVMe-oF network packets. As described above with reference to Fig. 3A and in Fig. 4, non-NVMe-oF network packets 305 may be received concurrently by a network infrastructure device (not shown) in combination with NVMe-oF network packets 310, 315, and 320. Upon receipt, a classification phase 410 may be implemented to automatically identify a protocol signature, for example, to initiate one or more classification techniques as part of the classification phase 410. In general, this example shows that the classification phase 410 processes network packets to identify the type of network packet (e.g., to determine how to prioritize and forward based on the nature of the packet processing requirements). Normal network traffic (generally classified herein as "non-NVMe-oF network packets") may be forwarded to low-priority queues 420 by a queuing phase.Network packets classified as NVMe-oF network packets may be forwarded to dedicated storage queues and may use priority flow control (RFC), as represented by higher priority queues 430. In the higher priority queues 430, the NVMe-oF packets may be treated in a manner that guarantees delivery to the intended destination (e.g., treated as a lossless protocol).
[0042] In Fig. Figure 5 illustrates a process flow diagram illustrating an example of the logic used to automatically identify and forward NVMe-oF network packets (method 500). The example method 500 begins at block 510, where a network packet of any type is received. Continuing at block 520, a variety of detection techniques may be used to check whether the network packet type corresponds to an NVMe-oF protocol. For example, network packets may be analyzed to determine if they can be identified based on a signature of the network packet's content or attributes. If the network packet is identified as a network packet for an NVMe-oF protocol, the "yes" branch of the diamond-shaped decision block continues to block 560 to make decision 530. At block 560, the NVMe-oF network packet is added to a lossless queue.Block 570 continues by checking whether the NVMe-oF network packet previously added to the queue has been delivered to the intended NVMe-oF network packet destination before proceeding to block 580 where the network packet is removed from the queue.
[0043] Returning to decision 530: If the network packet is not recognized as an NVMe-oF network packet (the "No" branch of decision 520), flow continues to block 540. In block 540, the network packet is added to a queue that can be processed with or without loss, depending on the treatment configured for the network packet type. Continuing to block 550, one or more attempts are made to deliver the network packet. Each of the one or more attempts can follow the treatment configured for the network packet type. If the treatment is configured as lossless, the attempt to deliver the packet can involve waiting for a delivery acknowledgment. If the treatment is not configured as lossless, the delivery attempt can be aborted (e.g., resulting in a dropped packet). After appropriately handling the delivery of the network packet (e.g.,processing a configurable number of retries or waiting a configurable amount of time), flow continues to block 580 where the network packet is removed from the queue.
[0044] Fig. 6 shows an example of a computing device 600 having a hardware processor 601 and accessible machine-readable instructions stored on a machine-readable medium and / or hardware logic 602 that can be used to perform automatic NVMe-oF network packet routing according to one or more disclosed example implementations. Fig. 6 shows a computing device 600 configured to perform the flow of method 500 as an example. However, computing device 600 may also be configured to perform the flow of other methods, techniques, functions, or processes described in this disclosure. In this example, Fig. 6, the machine-readable storage medium 602 contains instructions that cause the hardware processor 601 to perform the steps described above with reference to Fig. 5. However, in other examples, different implementations of the method 500 are possible, including hardware circuitry configured on a chip to implement all or part of the method 500 in conjunction with an overall implementation of disclosed techniques to provide an integrated SSD within a network infrastructure device and to automatically segregate and forward network packets based on a protocol signature identified based on network packet analysis (e.g., network packet signature identified using a rule-based implementation). In these examples, the hardware processor 601 may be part of the hardware circuitry, e.g., built on silicon (e.g., ASIC, etc.), rather than being a central processing unit.
[0045] A machine-readable storage medium, such as 602 in Fig. 6, may include both volatile and non-volatile, removable and non-removable media, and may be any electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions, data structures, program modules, or other data accessible by a processor, such as firmware, erasable programmable read-only memory (EPROM), random access memory (RAM), non-volatile random access memory (NVRAM), optical disk, solid-state drive (SSD), flash memory chips, and the like. The machine-readable storage medium may be a non-transitory storage medium, where the term "non-transitory" does not include transitory transmission signals.
[0046] Fig. 7 illustrates a computer network infrastructure 700 that may be used to implement all or part of the disclosed NVMe-oF automatic network packet discovery and routing technique, according to one or more disclosed embodiments. Network infrastructure 700 includes a number of networks in which embodiments of the present disclosure may operate. Network infrastructure 700 includes a customer network 702, a network 708, a cellular network 703, and a cloud service provider network 710. In one embodiment, customer network 702 may be a local private network, such as a local area network (LAN), that includes a variety of network devices, including, but not limited to, switches, servers, and routers.
[0047] Each of these networks may include wired or wireless programmable devices and may operate using any number of network protocols (e.g., TCP / IP) and connection technologies (e.g., WiFi® networks or Bluetooth®). In another embodiment, the customer network 702 represents an enterprise network that may include or be communicatively coupled to one or more local area networks (LANs), virtual networks, data centers, and / or other remote networks (e.g., 708, 710). In the context of the present disclosure, the customer network 702 may include one or more high-availability switches or network devices using methods and techniques such as those described above.
[0048] As in Fig. 7, the customer network 702 may be connected to one or more client devices 704A-E and may allow the client devices 704A-E to communicate with each other and / or with the cloud service provider network 710 via the network 708 (e.g., the Internet). The client devices 704A-E may be computer systems such as desktop computers 704B, tablet computers 704C, mobile phones 704D, laptop computers (shown as wireless) 704E, and / or other types of computer systems generally depicted as client devices 704A.
[0049] The network infrastructure 700 may also include other types of devices commonly referred to as the Internet of Things (IoT) (e.g., IOT device 705) that may be configured to send and receive information over a network to access cloud computing services or to interact with a remote web browser application (e.g., to receive configuration information).
[0050] Fig. 7 also shows that the customer network 702 includes local computing resources 706A-C, which may include a server, an access point, a router, or other device configured to provide local computing resources and / or facilitate communication between networks and devices. For example, the local computing resources 706A-C may be one or more physical local hardware devices, such as the HA switches described above (e.g., an NVMe routing switch). Local computing resources 706A-C may also facilitate communication between other external applications, data sources (e.g., 707A and 707B), and services, as well as the customer network 702.
[0051] The network infrastructure 700 also includes the cellular network 703 for use with mobile communication devices. Cellular networks support mobile phones and many other types of mobile devices such as laptops, etc. The mobile devices in the network infrastructure 700 are depicted as mobile phone 704D, laptop 704E, and tablet computer 704C. A mobile device such as mobile phone 704D may interact with one or more wireless carrier networks as the mobile device moves, typically interacting with a plurality of cell towers 720, 730, and 740 to establish a connection to the cellular network 703.
[0052] Fig. 7 shows that the customer network 702 is connected to a network 708. The network 708 may include one or more computer networks available today, such as other LANs, wide area networks (WANs), the Internet, and / or other remote networks, to transfer data between the customer devices 704A-D and the cloud service provider network 710. Each of the computer networks within the network 708 may include wired and / or wireless programmable devices operating in the electrical and / or optical domains.
[0053] In Fig. 7, the cloud service provider network 710 is depicted as a remote network (e.g., a cloud network) that can communicate with the client devices 704A-E via the customer network 702 and the network 708. The cloud service provider network 710 acts as a platform that provides additional computing resources to the client devices 704A-E and / or the customer network 702. In one embodiment, the cloud service provider network 710 includes one or more data centers 712 with one or more server instances 714. The cloud service provider network 710 may also include one or more frames or clusters (and cluster groups) that represent a scalable computing resource that can benefit from the techniques of this disclosure. Furthermore, cloud service providers typically achieve near-perfect availability and can utilize the disclosed techniques, methods, and systems to achieve this level of service.
[0054] Fig. Figure 8 shows a computing device 800 that can be used to implement or be used with the functions, modules, processing platforms, execution platforms, communication devices, and other methods and processes of this disclosure. Fig. For example, the computing device 800 illustrated in Figure 8 could represent a client device or a physical server device and, depending on the level of abstraction of the computing device, could include either hardware or virtual processor(s). In some cases (without abstraction), the computing device 800 and its elements, as shown in Fig. 8, each on physical hardware. Alternatively, in some cases, one, several, or all elements could be implemented using emulators or virtual machines as abstraction levels. In any case, the computing device 800 may be implemented at its lowest level on physical hardware, regardless of how many abstraction levels are removed from the physical hardware.
[0055] As also in Fig. As shown in Figure 8, computing device 800 may include one or more input devices 830, such as a keyboard, a mouse, a touchpad, or a sensor readout (e.g., a biometric scanner), and one or more output devices 815, such as displays, speakers for audio, or printers. Some devices may also be configured as input / output devices (e.g., a network interface or a touchscreen display).
[0056] Computing device 800 may also include communication interfaces 825, such as a network communication unit, which may include a wired communication component and / or a wireless communication component communicatively coupled to processor 805. The network communication unit may utilize a variety of proprietary or standardized network protocols, such as Ethernet, TCP / IP, to name a few of many protocols, to enable communication between devices. Network communication units may also include one or more transceivers utilizing Ethernet, power line communication (PLC), Wi-Fi, cellular, and / or other communication methods.
[0057] As in Fig. 8, computing device 800 includes a processing element such as processor 805, which includes one or more hardware processors, where each hardware processor may have one or more processor cores. In one embodiment, processor 805 may include at least one shared cache that stores data (e.g., computation instructions) used by one or more other components of processor 805. The shared cache may, for example, be locally cached data stored in memory for faster access by components of the processing elements that make up processor 805. In one or more embodiments, the shared cache may include one or more mid-level caches, such as Level 2 (L2), Level 3 (L3), Level 4 (L4), or other cache levels, a last-level cache (LLC), or combinations thereof.Examples of processors include a central processing unit (CPU) and a microprocessor. Although . Fig. 8, the processing elements comprising processor 805 may also include one or more other types of hardware processing components, such as graphics processing units (GPUs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), and / or digital signal processors (DSPs).
[0058] Fig. 8 illustrates that memory 810 may be operatively and communicatively coupled to processor 805. Memory 810 may be a non-transitory medium configured to store various types of data. For example, memory 810 may include one or more storage devices 820, including a non-volatile storage device and / or volatile memory. Volatile memory, such as random access memory (RAM), may be any suitable non-persistent storage device. Non-volatile storage devices 820 may include one or more hard disk drives, optical drives, solid-state drives (SSDs), tap drives, flash memory, read-only memory (ROM), and / or any other type of memory configured to retain data for a period of time after a power failure or shutdown operation.In certain cases, the non-volatile memory devices 820 may be used to store overflow data when the allocated RAM is insufficient to store all working data. The non-volatile memory devices 820 may also be used to store programs that are loaded into the RAM when such programs are selected for execution.
[0059] Those of ordinary skill in the art will appreciate that software programs may be developed, coded, and compiled in a variety of computer languages for a variety of software platforms and / or operating systems, and then loaded and executed by processor 805. In one embodiment, the software program compilation process may convert program code written in one programming language into another computer language so that processor 805 is capable of executing the programming code. For example, the software program compilation process may generate an executable program that provides coded instructions (e.g., machine code instructions) for processor 805 to perform specific, non-generic, particular computational functions.
[0060] Following the compilation process, the encoded instructions may then be loaded as computer-executable instructions or process steps into processor 805 from storage device 820, memory 810, and / or embedded within processor 805 (e.g., via a cache or on-board ROM). Processor 805 may be configured to execute the stored instructions or process steps to perform instructions or process steps that transform the computing device into a non-generic, special-purpose, specially programmed machine or device. Stored data, e.g., data stored in storage device 820, may be accessed by processor 805 during the execution of computer-executable instructions or process steps to instruct one or more components within computing device 800.
[0061] A user interface (e.g., output devices 815 and input devices 830) may include a display, a positional input device (such as a mouse, a touchpad, a touchscreen, or the like), a keyboard, or other forms of user input and output devices. The user interface components may be communicatively coupled to the processor 805. If the output device is or includes a display, the display may be implemented in various ways, e.g., by a liquid crystal display (LCD) or a cathode ray tube (CRT), or a light-emitting diode (LED) display, such as an organic light-emitting diode (OLED) display. Those of ordinary skill in the art will appreciate that the computing device 800 may include other components well known in the art, such as sensors, power sources, and / or analog-to-digital converters incorporated in Fig. 8 are not explicitly shown.
[0062] Throughout this description and the claims, certain terms are used that refer to specific system components. As one skilled in the art will appreciate, different parties may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not in function. Throughout this disclosure and the claims, the terms "including" and "comprising" are used in an open-ended manner and should therefore be interpreted to mean "including, but not limited to." Thus, when a first device couples to a second device, this connection may be through a direct connection or through an indirect connection via other devices and connections. The phrase "based on" is intended to mean "based at least in part on."So if X is based on Y, X can be a function of Y and any number of other factors.
[0063] The above discussion serves to illustrate the principles and various embodiments of the present disclosure. Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully understood. It is intended that the following claims be interpreted to encompass all such variations and modifications.
Claims
[1] A method comprising: Receiving a network packet (305, 310, 315, 320) at a network infrastructure device (100); Determining whether the network packet is a Non-Volatile Memory Express (NVMe) packet (310, 315, 320) based on a signature of the network packet that is uniquely associated with an NVMe protocol, wherein the signature comprises at least one of an address field and a port number, wherein determining whether the network packet is an NVMe packet comprises applying one and / or more rules based on the signature, and wherein updating the rules updates the unique association between the signature and the NVMe protocol; based on a determination that the network packet is an NVMe packet, redirecting the network packet to a first processing path comprising one and / or more lossless queues (430), wherein a respective lossless queue comprises a submission queue in which network packets submitted for processing are queued and a completion queue in which responses for processed network packets are queued; and based on a determination that the network packet is not an NVMe packet (305), redirecting the network packet to a second processing path having a lower priority than the first processing path. [2] The method of claim 1, wherein the NVMe protocol is selected from the group consisting of: Remote Direct Memory Access (RDMA) over Converged Ethernet (RoCE), Internet Wide Area RDMA (iWARP), and NVMe over Transport Control Protocol (TCP). [3] The method of claim 1, wherein determining whether the network packet is an NVMe packet comprises identifying the network packet as a Remote Direct Memory Access (RDMA) over Converged Ethernet (RoCE) packet. [4] The method of claim 1, wherein determining whether the network packet is an NVMe packet comprises identifying the network packet as a Remote Direct Memory Access (RDMA) packet over Converged Ethernet Version 2 (RoCEV2) by identifying the network packet as a Level 3 protocol over the User Datagram Protocol (UDP). [5] The method of claim 1, wherein determining whether the network packet is an NVMe packet comprises identifying the network packet as an Internet Wide Area Remote Direct Memory Access (RDMA) Protocol (iWARP) packet. [6] The method of claim 1, wherein determining whether the network packet is an NVMe packet comprises identifying the network packet as an NVMe over Transport Control Protocol (TCP) packet based on the signature. [7] The method of claim 1, wherein determining whether the network packet is an NVMe packet is performed using hardware logic. [8] The method of claim 1, wherein the network infrastructure device comprises a network switch (105) having a plurality of line cards (221). [9] A non-transitory computer-readable medium (602, 810) storing instructions that, when executed by one and / or more processing units of a network infrastructure device (100), cause the network infrastructure device to: Receiving a network packet (305, 310, 315, 320) at the network infrastructure device; Determining whether the network packet is a Non-Volatile Memory Express (NVMe) packet (310, 315, 320) based on a signature of the network packet that is uniquely associated with an NVMe protocol, wherein the signature comprises at least one of an address field and a port number, wherein determining whether the network packet is an NVMe packet comprises applying one or more rules based on the signature, and wherein updating the rules updates the unique association between the signature and the NVMe protocol; based on a determination that the network packet is an NVMe packet, redirecting the network packet to a first processing path comprising one or more lossless queues (430), wherein each lossless queue comprises a submission queue in which network packets submitted for processing are queued and a completion queue in which responses for processed network packets are queued; and based on a determination that the network packet is not an NVMe packet, redirecting the network packet to a second processing path with a lower priority than the first processing path. [10] The non-transitory computer-readable medium of claim 9, wherein the NVMe protocol is selected from the group consisting of: Remote Direct Memory Access (RDMA) over Converged Ethernet (RoCE), Internet Wide Area RDMA (iWARP), and NVMe over Transport Control Protocol (TCP). [11] The non-transitory computer-readable medium of claim 9, wherein the instructions for causing the network device to determine whether the network packet is an NVMe packet further include instructions for identifying the network packet as a Remote Direct Memory Access (RDMA) over Converged Ethernet (RoCE) packet. [12] The non-transitory computer-readable medium of claim 9, wherein the instructions that cause the network device to determine whether the network packet is an NVMe packet further include instructions to identify the network packet as a Remote Direct Memory Access (RDMA) over Converged Ethernet Version 2 (RoCEV2) packet. [13] The non-transitory computer-readable medium of claim 9, wherein the instructions that cause the network device to determine whether the network packet is an NVMe packet further include instructions to identify the network packet as an Internet Wide Area Remote Direct Memory Access (RDMA) Protocol (iWARP) packet. [14] The non-transitory computer-readable medium of claim 9, wherein the instructions that cause the network device to determine whether the network packet is an NVMe packet further include instructions to identify the network packet as an NVMe over Transport Control Protocol (TCP) packet. [15] An Ethernet switch (105, 205A, 205B) with: one and / or more processing devices; and Memory (120, 602, 810) storing instructions that, when executed by the one or more processing devices, instruct the Ethernet switch to: Receiving a network packet (305, 310, 315, 320) at the network infrastructure device (100); Determining whether the network packet is a Non-Volatile Memory Express (NVMe) packet (310, 315, 320) based on a signature of the network packet that is uniquely associated with an NVMe protocol, wherein the signature comprises at least one of an address field and a port number, wherein determining whether the network packet is an NVMe packet comprises applying one or more rules based on the signature, and wherein updating the rules updates the unique association between the signature and the NVMe protocol; based on a determination that the network packet is an NVMe packet, redirecting the network packet to a first processing path comprising one or more lossless queues (430), wherein each lossless queue comprises a submission queue in which network packets submitted for processing are queued and a completion queue in which responses for processed network packets are queued; and based on a determination that the network packet is not an NVMe packet (305), redirecting the network packet to a second processing path having a lower priority than the first processing path. [16] The Ethernet switch of claim 15, wherein the NVMe protocol is selected from the group consisting of: Remote Direct Memory Access (RDMA) over Converged Ethernet (RoCE), Internet Wide-Area RDMA (IWARP), and NVMe over Transport Control Protocol (TCP). [17] The Ethernet switch of claim 15, wherein the instructions that cause the Ethernet switch to determine whether the analysis of the network packet is an NVMe packet further include instructions to identify the network packet as a Remote Direct Memory Access (RDMA) over Converged Ethernet (RoCE) packet. [18] The Ethernet switch of claim 15, wherein the instructions that cause the Ethernet switch to determine whether the network packet is an NVMe packet further include instructions to identify the network packet as a Remote Direct Memory Access (RDMA) over Converged Ethernet Version 2 (RoCEV2) packet by identifying the network packet as a Level 3 protocol over User Datagram Protocol (UDP) using a rule-based signature. [19] The Ethernet switch of claim 15, wherein the instructions that cause the Ethernet switch to determine whether the network packet is an NVMe packet further include instructions to identify the network packet as an Internet Wide Area Remote Direct Access (RDMA) Protocol (iWARP) packet. [20] The Ethernet switch of claim 15, wherein the instructions that cause the Ethernet switch to determine whether the network packet is an NVMe packet further include instructions to identify the network packet as an NVMe over TCP packet.
Citation Information
Patent Citations
Techniques for command confirmation for accessing a storage device by a remote client
DE112013000601T5
NVM express controller for remote access of memory and I / O over ethernet-type networks
US20150378606A1