Method and apparatus for resource management of network connections to process tasks across networks

By introducing the concept of guiding context and network context in the network interface card (NIC), the resource management of network connections is optimized, and the problems of resource waste and performance degradation in large-scale network systems are solved, and more efficient storage utilization and system performance are achieved.

CN113811857BActive Publication Date: 2025-03-07XFUSION DIGITAL TECH CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202080020615.4
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2020-04-17
Publication Date
2025-03-07
Estimated Expiration
2040-04-17

AI Technical Summary

Technical Problem

In large-scale network systems, a large number of simultaneous network connections consume a large amount of resources, including storage resources and computing resources, resulting in waste of storage resources and degradation of system performance.

Method used

By introducing the concepts of guidance context and network context in the network interface card (NIC), it is used to dynamically allocate and release storage resources and optimize resource management of network connections. The boot context is used to temporarily allocate the storage resources required during processing tasks, while the network context is used throughout the life of the network connection.

Benefits of technology

Significantly reduces the total storage resources reserved for network connections, improves storage utilization, and improves system performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113811857B_ABST
    Figure CN113811857B_ABST
Patent Text Reader

Abstract

A network interface card (NIC), a network device and a method thereof are disclosed. The NIC includes: a memory for allocating a navigation context and a network context representing dynamically allocated resources. The navigation context is associated with the network context, and the navigation context is associated with a queue in which tasks are queued and specified to be executed using a network connection. The NIC also includes a NIC processing circuit for processing tasks using the navigation context and the network context. During task execution, the navigation context is temporarily allocated for use by the network connection, and the network context is allocated for use by the network connection during the life cycle of the network connection. In response to completing task execution, the association between the navigation context and the network context is released while maintaining the allocation of the network context until the specific network connection is terminated.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure, in some embodiments thereof, relates to network-connected resources, and more particularly, but not exclusively, to methods and apparatus for network-connected resource management to process tasks across a network. Background Art

[0002] A network node, such as a server, may establish and simultaneously support thousands of network connections with other network nodes, such as storage servers, endpoint devices, and other servers, to provide exchange of application data or execution of application tasks across the network between the network nodes via the network connections. A large number of simultaneous network connections consumes a large amount of resources at the network node, including: storage resources for managing the delivery of task-related information, such as queues, to / from applications running at the network node; storage resources for storing network protocol-related information, such as state parameters, to provide guaranteed delivery of tasks and / or data in sequence via the network connection; storage resources to handle, monitor, and mitigate different network conditions, such as data loss, reordering, congestion, etc.; and computing resources for processing network protocols used to process tasks or transmit data via the network connection. Summary of the invention

[0003] The purpose of the present disclosure is to provide a network interface card (NIC) for data transmission across a network, a network device including at least one NIC, a method for managing resources consumed by a network connection to process tasks across a network, a computer program product and / or a computer-readable medium storing code instructions executable by one or more hardware processors for managing resources consumed by a network connection to process tasks across a network.

[0004] The above-mentioned objects and other objects are achieved by the features of the independent claims. Further implementation forms are evident from the dependent claims, the description and the drawings.

[0005] According to a first aspect of the present disclosure, a network interface card (NIC) for cross-network data transmission is disclosed. The NIC includes: a memory for allocating a bootstrap context representing a first dynamically allocated storage resource and a network context representing a second dynamically allocated storage resource. The bootstrap context is associated with the network context (such as by an external processor), and the bootstrap context is associated with at least one queue in which a plurality of tasks (such as initiated by an application) are arranged. The plurality of tasks are issued (such as by the external processor) and are designated to be executed using a specific network connection. The NIC also includes a NIC processing circuit configured to process the plurality of tasks using the bootstrap context and the network context. During the execution of the plurality of tasks, the bootstrap context is allocated (such as temporarily) for use by the specific network, and the network context is allocated for use by the specific network during the life cycle of the specific network connection. In response to an indication of completion of the execution of the plurality of tasks, the bootstrap context is released (such as by the external processor) from the association with the network context while maintaining the allocation of the network context until the specific network connection is terminated.

[0006] According to a second aspect of the present disclosure, a NIC for cross-network data transmission is disclosed. The NIC includes: a memory for allocating a bootstrap context representing a first dynamically allocated storage resource and a network context representing a second dynamically allocated storage resource. The bootstrap context is associated with at least one queue in which multiple tasks are arranged, and the multiple tasks are received from an initiator network node across the network through a specific network connection. The NIC also includes a NIC processing circuit, and the NIC processing circuit is used to associate the bootstrap context with the network context and arrange the multiple tasks into at least one queue associated with the bootstrap context. During the execution of the multiple tasks, the bootstrap context is allocated (such as temporarily) for use by a specific network, and the network context is allocated for use by the specific network during the life cycle of the specific network connection. In response to an indication of completion of the execution of the multiple tasks, the association of the bootstrap context with the network context is released while maintaining the allocation of the network context until the specific network connection is terminated.

[0007] The storage resources of a network connection are divided into two independent parts - a first part (referred to herein as the network context) and a second part (referred to herein as the navigation context). The first part, the network context, is used during the entire period when the network connection is active (i.e., until the connection is terminated, releasing the network context), while the second part, the navigation context, is used only during the period when the network connection is used to process one or more tasks.

[0008] The amount of established network connections that can be used to process / execute tasks simultaneously across the network is determined based on the specific network bandwidth, the specific network latency, and the computing performance of the network nodes attached to the network connection device. In a large-scale system including tens of thousands of established network connections, only a few of the established network connections can be used to transmit data simultaneously. Based on the estimated amount of established network connections, storage resources are reserved for allocating network contexts. Based on the estimated amount of network connections that can be used to perform task processing simultaneously, storage resources are reserved for allocating steering contexts. Since the amount of steering contexts is significantly less than the amount of network contexts, the total storage reserved for use by the network connections of the network device can be greatly reduced.

[0009] The amount of storage reserved for implementing the queues should be sufficient to accommodate the amount of task-related information that provides the required throughput over a particular network connection. Since the steering context is associated with a set of queues, and in large-scale systems, the estimated amount of steering context is significantly less than the estimated amount of network context, at least some aspects and / or implementations described herein achieve a significant reduction in the total storage reserved for allocating network resources to multiple network connections.

[0010] At least some implementations of the first and second aspects described in this document may use different types of reliable transport protocols, such as RC / XRC (Reliable Connected / eXtended Reliable Connected) of RoCE (RDMA (Remote Direct Memory Access) over Converged Ethernet), TCP (Transmission Control Protocol) and CoCo (TCP with Connection Cookie extension).

[0011] In another implementation form of the first aspect and the second aspect, the steering context is further used to store a plurality of first state parameters. The plurality of first state parameters are used by the specific network connection during execution of the plurality of tasks arranged in the at least one queue associated with the steering context.

[0012] The first state parameter may be used, for example, to deliver task-related information using a queue set, and / or to handle arrival packet confusion, loss recovery, and retransmission.

[0013] In another implementation form of the first aspect and the second aspect, the amount of the storage resource reserved for allocating the steering context is determined by a first estimated number of established network connections that are expected to perform respective tasks simultaneously.

[0014] Because the number of connections expected to perform tasks simultaneously is much smaller than the number of established network connections, reserving storage resources based on the estimated number of network connections expected to perform their respective tasks simultaneously can significantly reduce the total reserved storage.

[0015] In another implementation form of the first aspect and the second aspect, the network context is used to store multiple second state parameters for the specific network connection in the network context, wherein the multiple second state parameters are maintained and used by the specific network connection throughout the entire life cycle of the specific network connection.

[0016] The second state parameter may be used, for example, to provide cross-network packet transport and / or network monitoring congestion relief in the network. Examples of the second state parameter include: round trip time (RTT) / delay, availability, and reachability.

[0017] In another implementation form of the first aspect and the second aspect, the amount of storage resources reserved for allocating the network context is determined by a second estimated number of simultaneously established network connections.

[0018] Dividing the amount of reserved storage resources into network context and steering context can significantly reduce the total amount of storage resources reserved. For example, since in large-scale systems the number of network connections assigned with steering contexts that transmit data simultaneously is significantly less than the total number of network connections assigned with network contexts, the reduction in reserved storage can be achieved by having an amount of predicted steering contexts that is significantly less than an amount of predicted network contexts. Since the amount of steering contexts is significantly less than the amount of network contexts, the total storage reserved for use by the network connections can be significantly reduced.

[0019] In another implementation form of the first aspect and the second aspect, a network context identifier (NCID) is assigned to the network context, and a steering context identifier (SCID) is assigned to the steering context. By assigning the NCID to the network context and the SCID to the steering context, it is easier to identify different network contexts and different steering contexts for different network connections.

[0020] In another implementation form of the first aspect and the second aspect, the at least one queue is used to transmit task-related information originating from the NIC processing circuit and / or going to the NIC processing circuit, wherein the queue elements of the at least one queue include task-related information of the multiple tasks using the specific network connection and their respective NCIDs.

[0021] Including the NCID in a queue element (QE) may improve processing efficiency since the NCID of the network context associated with the queue element is immediately available and no additional access to the mapping dataset is required to obtain the NCID.

[0022] In another implementation form of the first aspect and the second aspect, the memory is used to store a mapping data set, and the mapping data set maps between the NCID of the network context and the SCID of the guidance context. By storing the mapping data set, it is easier to determine the corresponding NCID based on a known SCID.

[0023] In another implementation of the first aspect, the external processor may be implemented outside the NIC, such as as a processor of a host computer attached to the NIC. Communication between the NIC and the external processor may be performed using a software interface, such as through a peripheral component interconnect express (PCIe) bus. Alternatively, in another implementation of the first aspect, the external processor may be implemented within the NIC itself, for example, by deploying the NIC and the external processor on the same hardware board.

[0024] The external processor is used to: determine the start of processing the first task of the multiple tasks using a specific network connection; allocate a boot context from multiple storage resources for use by the specific network connection; and in response to the determined start, associate the boot context with the specific SCID with the network context with the specific NCID by creating a mapping between the respective NCIDs and SCIDs, wherein all of the multiple tasks are processed using the same mapping.

[0025] In another implementation form of the first aspect, the external processor is used to: determine the completion of the last task among the multiple tasks; and in response to the determined completion, release the association between the guidance context and the network context by removing the mapping between the NCID and the SCID, and release the guidance context.

[0026] The ability to determine the start and / or completion of task execution enables temporary allocation of guidance context for use during execution of the task.

[0027] In another implementation form of the first aspect, the NIC is implemented on an initiator network node, and the initiator network node uses the specific network connection to the target network node to initiate the multiple tasks, wherein the multiple tasks are received by the external processor from an application running on the initiator network node.

[0028] At least some aspects and / or implementations described herein may be implemented on an initiator network node and a target network node, implemented only on an initiator network node, or implemented only on a target network node. When the NIC is implemented on an initiator node, an external processor associates a boot context with a network context, and publishes a task to a queue associated with the boot context. The NIC processing circuit processes the task using the boot context and the network context. When the NIC is implemented on a target node, the NIC processing circuit associates a boot context with a network context, and arranges the task into a queue associated with the boot context. The implementation used by a specific network node as an initiator is independent of the implementation used by another network node as a target. When the NIC is implemented at both the initiator network node and the target network node, the implementation may be executed independently at each end. The implementation at one end of the network connection (i.e., at the initiator network node) does not require the cooperation of the other end of the network connection (i.e., at the target network node).

[0029] In another implementation form of the second aspect, the NIC processor is used to: determine the start of processing the first task of the multiple tasks using the specific network connection; allocate a boot context from multiple storage resources for the specific network connection, and in response to the determined start, associate the boot context with the specific SCID with the network context with the specific NCID by creating a mapping between the NCID and the SCID, wherein all of the multiple tasks are processed using the same mapping.

[0030] In another implementation form of the second aspect, the NIC processor is used to: determine the completion of the last task among the multiple tasks; and in response to the determined completion, release the association between the navigation context and the network context by removing the mapping between the NCID and the SCID, and release the navigation context.

[0031] The ability to determine the start and / or completion of task execution enables temporary allocation of guidance context for use during execution of the task.

[0032] In another implementation form of the second aspect, the NIC is implemented on a target network node, and the target network node performs and responds to the plurality of tasks received from the initiator network node across the network through the specific network connection.

[0033] According to a third aspect of the present disclosure, a network device is also disclosed, wherein the network device comprises at least one NIC according to any one of the first aspect and the second aspect and implementations thereof.

[0034] In another implementation form of the third aspect, the network device further comprises: at least one external processor configured to: determine the start of processing a first task of the plurality of tasks using a specific network connection; allocate a boot context from a plurality of storage resources for use by the specific network connection; and in response to the determined start, associate the boot context with the specific SCID with the network context with the specific NCID by creating a mapping between the respective NCIDs and SCIDs. As an alternative to this implementation, all of the plurality of tasks are processed using the same mapping.

[0035] By using the same allocated network context and guidance context, using the same mapping between NCID and SCID or all tasks can improve the processing efficiency of tasks.

[0036] In another implementation form of the third aspect, the external processor is used to: determine the completion of the last task of the plurality of tasks; and in response to the completion determined, release the association between the navigation context and the network context by removing the mapping between the NCID and the SCID, and release the navigation context. The navigation context and the associated query are released for reuse by another network connection to perform the task of the other network connection, thereby improving storage utilization.

[0037] According to a fourth aspect of the present disclosure, a method for managing resources consumed by a network connection to process tasks across a network is disclosed. The method comprises: providing a guidance context representing a first dynamically allocated storage resource and providing a network context representing a second dynamically allocated storage resource, wherein the guidance context is associated with the network context, and the guidance context is associated with at least one queue in which multiple tasks are arranged, wherein the multiple tasks are specified to be executed using a specific network connection; during the execution of the multiple tasks, allocating (such as temporarily) the guidance context for use by the specific network; during the life cycle of the specific network connection, allocating the network context for use by the specific network; using the guidance context and the network context to process the multiple tasks; and in response to an indication of completion of the execution of the multiple tasks, while maintaining the allocation of the network context until the specific network connection is terminated, releasing the association between the guidance context and the network context.

[0038] The method according to the fourth aspect can be extended to an implementation form corresponding to the implementation form of the first device according to the first aspect. Therefore, the implementation form of the method includes the features of the first device or the corresponding implementation form of the second aspect.

[0039] The advantages of the method according to the fourth aspect are the same as the advantages of the corresponding implementation forms of the first device according to the first aspect or the second aspect.

[0040] Unless otherwise limited, all technical terms and / or scientific terms used herein have the same meaning as those generally understood by those of ordinary skill in the art to which the present disclosure belongs. Although methods and materials similar or equivalent to the methods and materials described herein can be used when practicing or testing embodiments of the present disclosure, exemplary methods and / or materials are described below. In the event of a conflict, this patent specification (including definitions) will prevail. In addition, materials, methods and examples are only illustrative and not necessarily restrictive. BRIEF DESCRIPTION OF THE DRAWINGS

[0041] Some embodiments of the present disclosure are described herein with reference to the accompanying drawings by way of example only. With specific reference to the accompanying drawings, it is emphasized that the details shown are by way of example and for the purpose of illustrative discussion of the embodiments of the present disclosure. In this regard, the description made in conjunction with the accompanying drawings makes it clear to those skilled in the art how to practice the embodiments of the present disclosure.

[0042] In the figure:

[0043] Figure 1A is a schematic diagram of an exemplary implementation of a network node including a NIC according to some embodiments;

[0044] Figure 1B is a schematic diagram of an exemplary implementation of a NIC according to some embodiments;

[0045] Figure 1C A schematic diagram of a NIC implemented on a network node as an initiator communicating with another example of a NIC implemented on a network node as a target through a packet network according to some embodiments;

[0046] Figure 2 A flowchart of a method for managing resources consumed by network connections to process tasks across networks according to some embodiments;

[0047] Figure 3 including exemplary pseudo code for implementing exemplary atomic operations that may be performed by mapping a data set according to some embodiments;

[0048] Figure 4 including exemplary pseudo code for implementing exemplary operations that may be performed by mapping a data set according to some embodiments;

[0049] Figure 5 is a diagram depicting an exemplary process flow in an initiator network node including a NIC as described herein, according to some embodiments; and

[0050] Figure 6 A process flow diagram depicting an exemplary process flow in a target network node including a NIC as described herein, according to some embodiments. DETAILED DESCRIPTION

[0051] The present disclosure, in some embodiments thereof, relates to resources of network connections, and more particularly, but not exclusively, to methods and apparatus for managing resources consumed by network connections to process tasks across the network.

[0052] One aspect of some embodiments relates to a NIC implemented on an initiator network node. The NIC is designed to communicate across a network with another implementation of a NIC implemented on a target network node using a specific network connection. The NIC implemented on the initiator network node and the NIC implemented on the target network node each include a memory that allocates a steering context representing a first dynamically allocated storage resource and a network context representing a second dynamically allocated storage resource. At the initiator network node, the steering context is associated with the network context through an external processor. The steering context is associated with one or more queues in which tasks are arranged, and these tasks are issued by the external processor and are specified to be executed using a specific network connection. At the initiator network node, the NIC processing circuit uses the steering context and the network context to process the task. During the execution of the task, the steering context is temporarily allocated for use by the specific network connection. During the life cycle of the specific network connection, the network context is allocated for use by the specific network connection. The initiator network node runs an application that uses the specific network connection to the target network node to start the task. At the target network node, the NIC processing circuit of the target network node associates the steering context with the network context and arranges the task into one or more queues associated with the steering context. The target network node executes and responds to a task received from the initiator network node across the network via a specific network connection. The task may be executed, for example, by a NIC processing circuit of the target network node, an external processor of the target network node, an application running on the target network node, and / or a combination of the above. In response to an indication that the task execution is completed, the association of the bootstrap context with the network context is released while maintaining the allocation of the network context until the specific network connection is terminated. At the initiator network node, the release is performed by the external processor, and at the target network node, the release is performed by the NIC processing circuit.

[0053] At least some implementations of the methods and devices described herein solve the technical problem of reserving a large amount of storage resources for established network connections. The reserved storage is actually only used within the task processing time interval, and is not used but still reserved when there is no task processing. Therefore, when a large amount of storage reserved in advance for contexts and / or queues is not used by the network connection that actually processes the task, a large amount of storage is wasted because only a small amount of reserved storage is actually used. The amount of storage that needs to be reserved in advance for an occupied network connection may be large, and as the number of established connections increases, the amount of storage that needs to be reserved in advance is huge, and a shortage of storage resources can become a limiting factor for certain deployments. Table 1 below provides a specific list for estimating the amount of storage reserved for an established network connection of an exemplary network node, which runs 100,000 connections (such as a large-scale system) via RoCE transport. Storage is reserved for 2,880,000 unfinished tasks.

[0054]

[0055]

[0056] Table 1

[0057] Among 100,000 established network connections, the number of connections that process tasks simultaneously is very small. The number of network connections that process tasks simultaneously is limited by the computing performance of the network connection nodes, the network properties—network bandwidth and network latency. Table 1 presents the values ​​of an example storage network node that is connected to the network using a network interface with a bandwidth of 200 gigabytes per second (Gb / s) and a round-trip latency of 200 nanoseconds (ns), and that can simultaneously provide no more than 1221 task requests for processing 4KB data units. On the other hand, in order to guarantee the required throughput of each network connection, the corresponding send queue (SQ), receive queue (RQ) and completion queue (CQ) should each include a sufficient number of elements to accommodate the required amount of published requests / responses / completions for tasks. SQ includes send queue elements for transferring data and / or task requests / responses. RQ includes receive queue elements for transferring data and / or task requests / responses. CQ is used to report the completion of these queue elements. The largest portion of the storage consumption described herein is the queues allocated to guarantee the required throughput of each network connection. As the number of queues increases, the amount of reserved storage also increases, leading to queue scalability issues. At least some implementations of the methods and apparatus described herein provide technical advantages over other existing standard methods to solve the above technical problems.

[0058] A standard approach to solving the queue scalability problem is based on implementing a virtual queue, which is a list of linked elements. However, since the queue is located outside the NIC (such as in the memory of the main CPU of the network node), the effectiveness of the DMA method for such a queue depends on the number of accesses. Since the number of accesses to the linked elements of the queue is O(n), and the number of accesses to the physically contiguous elements of the queue NIC is O(n / m), where "n" represents the number of elements in the queue and "m" represents the size of the cache line, at least some implementations of the methods and devices described herein make it possible to use physically contiguous queues to significantly reduce the number of accesses to the queue.

[0059] Examples of other standard approaches to solving queue scalability problems include shared queue types specified by the wireless bandwidth technology architecture and introduced for use with RDMA technology: for example, shared receive queues (SRQ), shared completion queues (SCQ), and extended reliable connection (XRC) transport services. However, deploying this type of shared queue only solves the queue scalability problem at the receiver side, leaving the context scalability problem unanswered. In contrast, at least some implementations described herein provide one or more queues that are associated with a guidance context temporarily allocated during the execution of a task for use with a network connection, which solves the queue and context scalability problems at both the receiver and transmitter sides. Another approach is applicable only to RDMA technology. In contrast, at least some implementations described herein provide for processing tasks using different types of reliable transport protocols, such as RC / XRC, RoCE, TCP, and CoCo.

[0060] Another approach (dynamic connection transport service) reduces the storage size required for connection contexts and send queues, but has the following drawbacks, which may be addressed by at least some implementations described herein:

[0061] In another approach, a single SQ servicing multiple network connections is a cause of head-of-line blocking. In contrast, at least some implementations described herein provide one or more queues dedicated to each network connection that prevent head-of-line blocking.

[0062] Another approach requires support for dynamically connected transport (DCT) in both peers of the connection. In contrast, at least some of the embodiments described herein do not necessarily need to be implemented at both the initiator node and the target node, e.g., some embodiments are implemented at the initiator node but not the target node, while other embodiments are implemented at the target node but not the initiator node. It should be noted that some embodiments are implemented at both the initiator and the target.

[0063] Another approach does not inherit the network state between successive transactions of the same network node pair, which makes it unsuitable for congested networks. In contrast, at least some implementations described herein provide a network context that stores a second state parameter for network monitoring congestion relief in the network. The second state parameter is maintained and used by the specific network connection throughout its lifecycle.

[0064] Another approach is applicable only to wireless bandwidth technologies (InfiniBand, IB) (not applicable to TCP or even RoCE). In contrast, at least some implementations described herein provide for handling tasks using different types of reliable transport protocols, such as RC / XRC, RoCE, TCP, and CoCo.

[0065] At least some implementations of the methods and apparatus described herein significantly reduce the storage requirements of network nodes (such as large-scale distributed systems) for establishing network connections. Based on an estimated number of established network connections that can simultaneously perform task processing, the storage requirements are reduced at least by reserving storage resources for allocating steering contexts. The amount of storage reserved for steering contexts is significantly less than the amount of total storage otherwise reserved for use by all existing network connections.

[0066] Table 2 below provides the values ​​used to calculate the values ​​in Table 4.

[0067] parameter value Total bandwidth (Gbs) 200 Delay 200 Task size (KB) 4 #Unfinished tasks 1221

[0068] Table 2

[0069] Table 3 below estimates the storage utilization of each sub-context type for a network node running 100,000 network connections to process a task. Each sub-context storage type will be described in more detail below.

[0070] parameter Value (in bytes) Host Queue Context 265 User data delivery context 128 Connection State Context 128

[0071] Table 3

[0072] Table 4 below summarizes the parameters of an exemplary network node (such as a large-scale system) running 100,000 connections, which can only support an estimated 1,221 network connections while actively processing tasks. Table 4 shows that the actual number of unfinished tasks is 1,221, where the size of each transmission unit of a task is 4KB. Comparing Table 1 and Table 4, the amount of reserved storage is sufficient for 2,880,000 tasks, but only 1,221 tasks are actually executed simultaneously.

[0073]

[0074] Table 4

[0075] Table 5 below compares a standard approach to reserving storage for all 100,000 connections (row denoted "Fully Provisioned") and the storage used by at least some implementations of the methods and apparatus described herein (row denoted "Actual Use"). Some implementations described herein improve storage utilization by reducing the amount of storage used to approximately 2.2% of the standard process of reserving storage for all established connections.

[0076]

[0077] Table 5

[0078] Before describing in detail at least one embodiment of the present disclosure, it should be understood that the present disclosure is not necessarily limited to its application in the construction details and the arrangement of components and / or methods proposed in the following description and / or shown in the drawings and / or examples. The present disclosure is capable of realizing other embodiments or being practiced or executed in various ways.

[0079] The present disclosure may be a system, method and / or computer program product. The computer program product may include a computer-readable storage medium (or medium) having computer-readable program instructions thereon for causing a processor to perform various aspects of the present disclosure.

[0080] A computer readable storage medium may be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination thereof.

[0081] The computer-readable program instructions described herein may be downloaded from a computer-readable storage medium to a corresponding computing / processing device, or downloaded to an external computer or external storage device via a network such as the Internet, a local area network, a wide area network, and / or a wireless network.

[0082] The computer-readable program instructions may be executed entirely on the user's computer, partially on the user's computer as an independent software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., via the Internet using an Internet service provider). In order to perform various aspects of the present disclosure, in some embodiments, an electronic circuit including a programmable logic circuit, a field-programmable gate array (FPGA), or a programmable logic array (PLA) may execute the computer-readable program instructions by utilizing the state information of the computer-readable program instructions to personalize the electronic circuit.

[0083] Various aspects of the present disclosure are described herein with reference to flowcharts and / or block diagrams of methods, devices (systems) and computer program products according to embodiments of the present disclosure. It should be understood that each box in the flowchart and / or block diagram, and the combination of boxes in the flowchart and / or block diagram can be implemented by computer-readable program instructions.

[0084] The flowcharts and block diagrams in the accompanying drawings illustrate the possible architectures, functions and operations of the systems, methods and computer program products according to the various embodiments of the present disclosure. In this regard, each box in the flowchart and block diagram may represent a part of a module, a fragment or an instruction, which includes one or more executable instructions for implementing a specified logical function. In a partially alternative implementation, the functions mentioned in the box may not appear in the order mentioned in the figure. For example, in fact, depending on the functions involved, the two boxes shown in succession can essentially be executed simultaneously, or the boxes can sometimes be executed in the opposite order. It should also be noted that each box in the block diagram and / or the flowchart, and the combination of the boxes in the block diagram and / or the flowchart can be implemented by a system based on special-purpose hardware, which performs a specified function or action or implements a combination of special-purpose hardware and computer instructions.

[0085] Reference Figure 1A , Figure 1A FIG. 1 is a diagram of an exemplary implementation of a network node 150 including a NIC 192A or a NIC 192B according to some embodiments. Figure 1B , Figure 1BFIG. 1 is a diagram of an exemplary implementation 190A of a NIC 192A and an exemplary implementation 190B of a NIC 192B according to some embodiments. Figure 1C , Figure 1C FIG. 1 is a diagram of a NIC 192A-B implemented on a network node 150 as an initiator 150Q communicating with another example of a NIC 192A-B implemented on a network node as a target 150R over a packet-based network 112 according to some embodiments. Note that each node 150 can act as an initiator, a target, or both. Figure 2 , Figure 2 A flowchart of a method for managing resources consumed by network connections to process tasks across networks according to some embodiments. Figure 2 The method is implemented by a network node as an initiator and / or a network node as a target, wherein the network node includes a reference Figures 1A-1C The NIC.

[0086] NIC 192A and NIC 192B may reduce the amount of memory consumed by network connections to process tasks across the network.

[0087] The storage resources of an established connection are divided into two separate parts - the first part (referred to herein as the network context) is used during the entire period when the established connection is active. The second part (referred to herein as the navigation context) is used only during the processing of a task using the network connection. A set of queues that queue task-related information is also associated with the navigation context.

[0088] The amount of established network connections that can simultaneously process tasks across the network is limited by the specific network bandwidth, the specific network latency, and the computational performance of the network nodes to which the network connection devices are attached. In a large-scale system including tens of thousands of established network connections, only a few of the established network connections can simultaneously process tasks. Based on the estimated amount of established connections, storage is reserved for allocating network contexts. Based on the estimated amount of established network connections that can simultaneously perform task processing, storage is reserved for allocating steering contexts. Since the amount of steering contexts is significantly less than the amount of network contexts, a significant reduction in the total storage reserved for use by network connections is achieved.

[0089] NIC 192A or NIC 192B is implemented as a network interface card, such as inserted into a slot and / or integrated within a computing device. NIC 192A-B may be implemented using an embedded or external (on-board) processor, such as an ASIC and / or FPGA, with programmability for the data plane. NIC 192A-B may be designed to offload task processing that is normally handled by the main CPU of the network node. NIC 192A-B may be able to perform any combination of TCP / IP and HTTP, RDMA processing, encryption / decryption, firewalls, etc. As shown in FIG. Figure 1C As shown, NICs 192A-B may be implemented in a network node 150 acting as an initiator 150Q (also referred to herein as an initiator network node) and / or in a network node 150 acting as a target 150R (also referred to herein as a target network node). Figure 1C 150Q in ) runs an application that uses a specific network connection to the target network node to launch tasks ( Figure 1C 150R in ). The target network node performs and responds to the task received from the initiator network node through the specific network connection across the network 112. The task can be performed, for example, by a NIC processing circuit of the target network node, an external processor of the target network node, an application running on the target network node, another device, and / or a combination of the above.

[0090] Task processing may include a series of request / response commands and / or data units exchanged between an initiator network node and a target network node. Examples of task-oriented applications / upper layer protocols (ULPs) include: NVMe over Fabric and iSCSI. Examples of tasks that may include multiple interactions include: Read_operation, Write_operation_without_immediate_data, and Write_operation_with_immediate_data.

[0091] The particular network connection described herein is one of multiple established network connections that exist simultaneously on the same NIC 192A-B.

[0092] Some of the established network connections process tasks simultaneously, while other parts of the established network connections do not process tasks while other established network connections are processing tasks.

[0093] The established network connection may be between the NIC and multiple other network nodes, such as a central server hosting a website accessed by multiple clients simultaneously. Each client terminal uses its respective established network connection to download data from the website, upload data to the website, or perform active upload / download of data while the established network connection remains active. For example, a server as an initiator network node connects to a storage controller as a target network node to access a shared storage device.

[0094] Network node 150 transmits data over packet-based network 112 via network interface 118 using a specific network connection. The specific network connection is one of many other active network connections, some of which may transmit data simultaneously across network 122 while other network connections do not transmit data at the same time as the specific network connection.

[0095] The network node 150 may be implemented as, for example, a server, a storage controller, or the like.

[0096] The network 112 may be implemented as a packet-switched network, such as a local area network (LAN) and / or a wide area network (WAN). The network 112 may be implemented using wired or wireless technology.

[0097] The network interface 118 may be implemented as a software and / or hardware interface, such as one or more of a combination of the following components: a computer port (such as a hardware physical interface for a cable), a network interface controller, a network interface device, a network socket, and / or a protocol interface. The NIC 192A or 192B is associated with a memory 106 that allocates a navigation context 106D-2 and allocates a network context 106D-1. The navigation context 106D-2 refers to a portion of the memory 106 that is defined as a first dynamically allocated storage resource reserved from a plurality of available allocated storage resources. The network context 106D-1 refers to another portion of the memory 106 that is defined by a second dynamically allocated storage resource reserved from a plurality of available allocated storage resources. The navigation context 106D-2 is associated with one or more queues 106C that have multiple tasks queued therein that are designated to be performed using a specific network connection from a plurality of network connections via the packet network 112.

[0098] Examples of the memory 106 include random access memory (RAM) such as dynamic RAM (DRAM), static RAM (SRAM), and the like.

[0099] Memory 106 may be located in one or more of: CPU 150A attached to external processor 150B, attached to NIC 192A-B, and / or internal to NIC 192A-B. Figure 1A All three possible implementations are depicted in .

[0100] The CPU 150A may be implemented as, for example, a single-core processor, a multi-core processor, or a microprocessor.

[0101] For the NIC 192A, the external processor 150B (and internal components) are external to the NIC 192A. Communications between the NIC 192A and the external processor 150B may occur using a software interface, such as over a PCIe bus.

[0102] For NIC 192B, external processor 150B, CPU 150A, and memory 106 storing queue 106C are included within NIC 192B, such as on the same hardware board. Communications between components of NIC 192B may be accomplished, such as using appropriate software and / or hardware interfaces.

[0103] The queue 106C is used to transfer task-related information from and / or to the NIC processing circuit 102 between the NIC processing circuit 102 and the external processor 150B. Alternatively, in another example, the NIC processing circuit 102 queues part of the task for further execution.

[0104] Exemplary task-related information transmitted by the queue 106C includes one or more of the following: task request instructions, task response instructions, data transfer instructions, task completion information, etc.

[0105] The processing circuit 102 may be implemented as, for example, an ASIC, an FPGA, and one or more microprocessors.

[0106] The guidance context 106D-2 stores a first state parameter that is used by a particular network connection during execution of a task queued in the queue 106C associated with the guidance context 106D-2. The amount of storage resources reserved for allocating the guidance context 106D-2 can be determined by a first estimated number of established network connections that are expected to simultaneously execute respective tasks. The network connections that simultaneously execute tasks are each assigned a respective guidance context. As described herein, a network connection that has been established but is not executing a task is not assigned a guidance context until it is determined to begin executing a task.

[0107] The network context 106D-1 stores a second state parameter for a specific network connection. The second state parameter is maintained and used by the specific network connection throughout the life cycle of the specific network connection (from network connection establishment to network connection termination), during time intervals when tasks are executed, and during intervals when tasks are not executed (i.e., the network connection remains established). The amount of storage resources reserved for allocating the network context 106D-1 is determined by a second estimated number of network connections established simultaneously. Established network connections are assigned respective network contexts regardless of whether tasks are being executed. The first state parameter and the second state parameter include the state (such as context) of the network connection passed between the processing (such as stateful processing) of preceding and subsequent packets. Stateful processing depends on the order of processed packets, optionally, the order is as close as possible to the order of packets at the source. Exemplary stateful protocols include: TCP, RoCE, iWARP, iSCSI, NVMe-oF, MPI, etc. Exemplary stateful operations include: LRO, GRO, etc. The first state parameter represents the state required by the specific network connection during the processing of the task. The first state parameter can be used, for example, to deliver task-related information using a queue set, and / or to provide arrival packet confusion, loss recovery, and retransmission. The second state parameter can be used, for example, to provide network transport and / or network monitoring congestion relief in the network, including: RTT / delay, availability, and / or arrival rate.

[0108] As described herein, the network connection context includes a first part and a second part. The first part includes a guidance context and an associated queue, which is used during the processing of a task (optional only). The second part includes a network context, which is used during the time when the network connection is active. The amount of storage reserved for the network context can be a predicted amount based on the network connection established at the same time. The amount of storage reserved for the guidance context (including the queue) can be a predicted amount based on the network connection for processing tasks at the same time. Each network connection for processing a task uses the first part and the second part of the context, i.e., the network context and the guidance context. During the time interval when task processing occurs, the guidance context is dynamically allocated and / or allocated to the network connection (optional only). Since in large-scale systems, the number of network connections that process tasks simultaneously is significantly less than the total number of network connections, the reduction in reserved storage is achieved by a predicted amount of guidance context that is significantly less than the predicted amount of network context.

[0109] Optionally, a network context identifier (NCID) is assigned to the network context 106D-1 and a steering context identifier (SCID) is assigned to the steering context 106D-2.

[0110] The queue elements of queue 106C include task related information and respective NCIDs for tasks using a particular network connection. Including the NCID in the queue elements can improve processing efficiency because the NCID of the network context associated with the queue element is immediately available and no additional access to the mapping dataset is required to obtain the NCID.

[0111] The memory stores a mapping data set 106B that maps between the NCID of the network context 106D-1 and the SCID of the guidance context 106D-2. The mapping data set 106B can be implemented using an appropriate format and / or data structure (such as a table, a pointer set, a hash function). The number of elements in the mapping data set can be set according to the supported / estimated number of network connections that process tasks simultaneously. Each element of the mapping data set can store one or more of the following: (i) a validity flag indicating whether the respective element is valid, which can be initialized to "Not_Valid"; (ii) a SCID value set when the element is valid; (iii) a counter for the task applicable to the respective element.

[0112] The following are exemplary logical operations implemented by the mapping data set: element ncscGet(NCID), returns an element from the mapping data set; void ncscSet(NCID,element), sets an element in the mapping data set. At the initiator network node, the mapping data is managed by an external processor and optionally accessed by the NIC processing circuit. At the target network node, the mapping data set is managed by the NIC processing circuit and optionally accessed by the external processor.

[0113] When network node 150 is implemented as an initiator, tasks are posted to queue 106C by external processor 150B. External processor 150B may receive tasks from applications running on network node 150 implemented as an initiator. External processor 150B associates steering context 106D-2 with network context 106D-1.

[0114] When the network node 150 is implemented as a target, the task is received from an initiator network node (such as another example of the network node 150 implemented as an initiator) through a specific network connection across the network 112. The NIC processing circuit 102 associates the steering context 106D-2 with the network context 106D-1 and queues the task into the queue 106C associated with the steering context 106D-2.

[0115] The NIC processing circuit 102 uses the navigation context 106D-2 and the network context 106D-1 to process the task.

[0116] During the execution of a task, a bootstrap context 106D-2 is temporarily allocated for use by a specific network connection. During the life cycle of a specific network connection, a network context 106D-1 is allocated for use by a specific network connection. The temporary allocation is released upon completion of task execution, which releases the bootstrap context for allocation to another network connection, or reallocated to the same network connection to execute another set of tasks. Alternatively, the temporary allocation of the bootstrap context 106D-1 is not released upon completion of task execution, but is maintained to execute another set of tasks submitted to the same specific network connection. Alternatively, the temporary allocation of the bootstrap context 106D-1 is not released upon completion of task execution, but is released when another network connection begins processing another set of tasks.

[0117] When the network node 150 is implemented as an initiator, in response to an indication of completion of task execution, the association of the bootstrap context 106D-2 with the network context 106D-1 is released by the external processor 150B. When the network node 150 is implemented as a target, the association of the bootstrap context 106D-2 with the network context 106D-1 is released by the NIC processing circuit 102. The release of the association enables the bootstrap context to be used by another network connection executing a task or by the same network connection to execute another set of tasks.

[0118] The allocation of network context 106D-1 is maintained until the particular network connection is terminated. The particular established network connection can be terminated, such as by a local application and / or by a normal closure of a remote application. In another example, such as when an error is detected, the particular established network connection can be terminated in failure. When the network connection is terminated, the released network context can be allocated to another established network connection.

[0119] When the NIC 192A or 192B is implemented on the target network node, the NIC processing circuit 120 performs the following operations: Determine the start of processing the first task using the specific network connection. Allocate a boot context 106D-2 from a storage resource for use with the specific network connection, and associate the boot context 106D-2 (optionally with a specific SCID) with the network context 106D-1 (optionally with a specific NCID). In response to the determined start, perform the association by creating a mapping (such as a mapping between NCID and SCID) between the network context 106D-1 and the boot context 106D-2. The mapping can be stored in the mapping data set 106B. All tasks are processed using the same mapping. Determine the completion of the last task in the task. In response to the determined completion, the bootstrap context 106D-2 may optionally be released from its association with the network context 106D-1 by removing a mapping between the network context 160D-1 and the bootstrap context 160D2 (such as a mapping between NCID and SCID) and releasing the bootstrap context 106D-2.

[0120] Now refer to Figure 1B , implementation 190A includes NIC 192A (eg Figure 1A and 1C ), and implementation 190B includes NIC 192B (such as Figure 1A and 1C Implementations 190A and 190B may be used for an initiator network node and / or a target network node.

[0121] Now let's discuss the implementation of 190A in detail. Figure 1A As described above, NIC 192A (also referred to herein as SmartNIC or sNIC) includes processing circuit 102, memory 106, and network interface 118. Figure 1A The external processor 150B. Figure 1A As shown, the host 150B-1 includes a CPU 150A and a memory 106 with a storage queue 106C. The NIC 192A and the host 150B-1 are two separate hardware components connected via an interface such as a PCIe.

[0122] The host 150B- 1 may be implemented as, for example, a server.

[0123] When implementation 190A is used with an initiator network node, host 150B-1 performs the following operations, and alternatively or in addition, when implementation 190A is used with a target network node, processing circuitry 102 performs the following operations: Determine the start of a first of the processing tasks using a particular network connection. Allocate a boot context from a storage resource for use with the particular network connection. In response to the determined start, associate the boot context (optionally having a particular SCID) with the network context (optionally having a particular NCID) by creating a mapping between the boot context and the network context (such as a mapping between the respective NCIDs and SCIDs). The mapping may be stored in a reference Figure 1A The mapping data set 106B is described. All tasks are processed using the same mapping. The completion of the last task in the tasks is determined. In response to the completion determined, the association of the navigation context with the network context is released by removing the mapping between the navigation context and the network context (such as the mapping between the NCID and the SCID) that may be stored in the mapping data set, and the navigation context is released. It should be noted that the navigation context and the network context refer to the reference Figure 1A The elements 106D-2 and 106D-1.

[0124] Implementation 190B including NIC 192B is now discussed in detail. NIC 192B is an intelligent NIC. It may be referred to herein as a network processor unit (NPU) 160A. Network processor unit (NPU) 160A may include processing circuitry 102, memory 106, and network interface 118. NIC 192B also includes a service processor unit (SPU) 150B-2. SPU 150B-2 corresponds to reference Figure 1A The external processor 150B. NPU 160A and SPU 150B-2 are located on the same hardware component, such as the same network interface hardware card.

[0125] The SPU 150B-2 may be implemented as, for example, an ASIC, an FPGA, and a CPU.

[0126] The NPU 160A may be implemented as, for example, an ASIC, an FPGA, and one or more microprocessors.

[0127] NIC 192B communicates with host 194, which includes CPU 194A and memory 194B. Memory 194B stores an external queue set 194C that is different from queue 106C. Host 194 and NIC 192B can communicate through queue set 194B.

[0128] When implementation 190B is used with an initiator network node, SPU 150-B performs the following operations, and alternatively or in addition, when implementation 190B is used with a target network node, processing circuitry 102 performs the following operations: Determine the start of a first of the processing tasks using a particular network connection. Allocate a bootstrap context from a storage resource for use with the particular network connection. In response to the determined start, associate the bootstrap context (optionally having a particular SCID) with a network context (optionally having a particular NCID) by creating a mapping (between the respective NCIDs and SCIDs). The mapping may be stored in a reference Figure 1A The mapping data set 106B is described, wherein all tasks are processed using the same mapping. Determine the completion of the last task in the task. In response to the completion determined, release the association of the navigation context with the network context by removing the mapping (between the NCID and the SCID that may be stored in the mapping data set), and release the navigation context.

[0129] Referring back to 1C , the initiator node 150Q and the target node 150R may communicate across the network 112 using a reliable network connection, such as RoCE RC / XRC, TCP, and CoCo.

[0130] Referring back to FIG. 2 , at 202 , a guidance context and a network context are provided.

[0131] The boot context is associated with the network context, and the boot context is associated with one or more queues that queue tasks that are specified to be executed using a particular network connection.

[0132] When the method is implemented by a NIC of an initiator network node, tasks are posted to a queue by an external processor, the external processor uses a specific network connection, determines the start of a first task in processing tasks, allocates a steering context from a storage resource for use by the specific network connection, and in response to the determined start, associates the steering context (optionally with a specific SCID) with a network context (optionally with a specific NCID) by creating a mapping (between NCID and SCID).

[0133] When the method is implemented by a NIC of a target network node, a task is received across a network from an initiator network node via a specific network connection. A NIC processing circuit of the NIC of the target network node uses the specific network connection to determine the start of a first task in processing the task, allocate a steering context from a storage resource for use with the specific network connection, and in response to the determined start, associate the steering context (optionally with a specific SCID) with a network context (optionally with a specific NCID) by creating a mapping (between NCID and SCID).

[0134] At 204, a steering context is temporarily allocated for use by a particular network connection during execution of the task.

[0135] At 206 , a network context is allocated for use by the particular network connection during the lifecycle of the particular network connection.

[0136] The task is processed using the guidance context and the network context at 208. All tasks are processed using the same mapping.

[0137] At 210, an indication of completion of task execution is received.

[0138] At 212, the association of the bootstrap context with the network context is released while maintaining the allocation of the network context until the particular network connection is terminated.

[0139] When the method is implemented by the NIC of the initiator network node, the completion of the last task in the execution task is determined by the external processor and the release is performed by the external processor.

[0140] When the method is implemented by a NIC of a target network node, completion of a last task in the executing tasks is determined by the NIC processing circuit and the release is performed by the NIC processing circuit.

[0141] Reference Figure 3 , Figure 3 Included is exemplary pseudo code for implementing exemplary atomic operations that may be performed by mapping a data set according to some embodiments.

[0142] The SCID / Error nsctLookupOrAllocate(NCID) 302 operation may be applied at the start of a task to look up the SCID associated with a given NCID, and / or to create an NCID-SCID association when one does not exist.

[0143] The Error nsctRelease(NCID) 304 operation may be applied upon task completion to release the NCID-SCID association.

[0144] The SCID / Error nsctLookup(NCID) 306 operation may be applied in the middle of a task to look up the SCID associated with a given NCID.

[0145] An exemplary implementation of mapping a data set is now discussed.

[0146] One exemplary implementation is to have separate hardware implementations of all mapping dataset operations by the ASIC logic of the sNIC.

[0147] Another implementation is a pure software solution via firmware running in the sNIC. Execution of the nsctLookupOrAllocate and nsctReleaseByNCID primitives requires locking the NCID-related processing flow, which may have single-flow performance issues. However, assuming that in large-scale systems, the probability of executing two concurrent operations on the same flow is not very high, this option may be acceptable for some deployments.

[0148] For hardware-only and software-only implementations, the following simplifications can be made: Move poolAlloc and poolFree operations out of atomic boundaries. Note that the SCID may be absent from the system for a short period of time, but full consistency of operations is provided.

[0149] Yet another implementation is based on a combined software-hardware implementation using RDMA atomic primitives. This solution works with the following assumptions:

[0150] Support no more than 64K-1 outstanding transactions. When this assumption is true, the required SCID does not exceed 64K-1.

[0151] When the assumption holds and the counter is less than 4 bytes: >2 bytes for SCID + >2 bytes for the counter.

[0152] A value of 0xFFFF indicates an invalid SCID, and 0xFFFF0000 (NOT_VALID_VAL) indicates an invalid counter.

[0153] The following are exemplary atomic primitives:

[0154] οOriginalVal atomicAdd(Counter_ID,incremental_value);

[0155] οOriginalVal atomicDec(Counter_ID,incremental_value);

[0156] ■ This atomic primitive is a version of atomicAdd that will not be less than 0. The value below 0 is used to illustrate visibility; it can prevent vulnerabilities in the implementation.

[0157] οOriginalVal atomicCAS(Counter_ID,Compare,Swap);

[0158] · Losses are additional readings of the counter.

[0159] Reference Figure 4 , Figure 4Included are exemplary pseudocodes for implementing exemplary operations that may be performed by mapping data sets according to some embodiments. Pseudocode is provided to implement operations SCID nsctLookupAndUpdate(NCID, SCID) 402 and SCID / Error nsctInvalidate(NCID) 404. The term OV represents the original value. For SCID / ErrornsctInvalidate(NCID) 404, the counter is 0 after decrement, so the entry may be invalid, but it is possible that some parallel processing using the operation nsctLookupAndUpdate is inserted in the middle and the counter is incremented. In this case, the SCID will not be released.

[0160] Reference Figure 5 , Figure 5 FIG. 1 is a diagram depicting an exemplary process flow in an initiator network node including a NIC as described herein, according to some embodiments. The components of the process flow diagram may correspond to the components of FIG. Figures 1A-1C The components of the system 100 described herein and / or may be implemented with reference to Figure 2 The initiator node 550 corresponds to Figure 1C The communication layer 550C may correspond to the initiator node 150Q. Figure 1B The host 150B-1 and / or the host 194, and / or may be with Figure 1A The data plane (such as a producer) 550E may correspond to the part of the application that communicates with the external processor 150B. Figure 1A NSCT 560 can correspond to external processor 150B. Figure 1A The unloading circuit 502 may correspond to the mapping data set 106B in Figure 1A The context storage library 562 may store Figure 1A The first allocatable resource 106D-2 and the second allocatable resource 106D-1 are memory 106.

[0161] The processing flow at the startup node is as follows:

[0162] At (1), the communication layer 550C submits a new task for processing using the network connection NCID.

[0163] At (2), task processing begins. The data plane 550E performs a lookup for the SCID using the NSCT primitives of the NSCT mapping data set. When there is no entry in the mapping data set, a new steering context is allocated with the SCID assigned and associated with the NCID of the network context assigned to the network connection, otherwise the existing association is used.

[0164] At (3), the data plane 550E initializes a new task and publishes the new task to the queue associated with the navigation context. The actual value of the NCID is part of the task related information of the published working queue element (WQE).

[0165] At (4), the data plane 550E rings the doorbell to notify the offload circuitry 502 of the non-empty queue associated with the steering context.

[0166] At (5), offload circuit 502 begins processing the arriving doorbell by extracting the steering context from context store 562 using the SCID from the doorbell.

[0167] At (6), offload circuit 502 uses the state information of the boot context to extract the WQE from the SQ. The WQE carries the correct NCID value.

[0168] At (7), offload circuit 502 uses the NCID from the WQE to extract the network context.

[0169] At (7'), the offload circuit 502 uses the NCID from the doorbell to extract the network context. Flow 7' represents a flow optimization that can be applied when the doorbell information also contains the NCID.

[0170] Step (7') can be performed simultaneously with step (5) and then step (6) can be completed.

[0171] At (8), the unloading circuit 502 processes the task by downloading data, segmenting data, calculating CSC / checksum / digest, formatting packets, headers, etc.; updating congestion status information, RTT calculation, etc.; updating the guidance context and network context status information, and saving the NCID←→SCID benchmark in the corresponding context.

[0172] At (9), offload circuit 502 sends the packet across the network.

[0173] At (10), the offload circuit 502 processes the arriving response packet received across the network and obtains the NCID using information in the received packet (directly or indirectly). Examples of directly obtaining the NCID include: using the QPID of the RoCE header and the CoCo option of the TCP header. Indirect examples include: looking up the NCID by a 5-tuple key constructed from the TCP / IP header of the packet.

[0174] At (11), the offload circuit 502 extracts the network context using the NCID from the context repository 562. The network context includes an attached SCID value.

[0175] At (12), the offload circuit 502 extracts the bootstrap context using the SCID obtained from the network context.

[0176] At (13), offload circuit 502 uses the network context state information to perform packet processing by updating congestion state information, RTT calculation, etc. and clearing the NCID←→SCID reference in the context.

[0177] At (14), the offload circuit 502 performs group processing using the guided context state information by publishing a work element with task response related information into the RQ, publishing a work element with task request / response completion information into the CQ and clearing the NCID←→SCID reference in the context.

[0178] At (15), the offload circuit 502 notifies the data plane 550E that the task execution is complete.

[0179] At (16), the data plane 550E is called by an interrupt or CQE poll indicating that the task has ended. The data plane 550E retrieves the completion information using the CQE of the retrieved NCID from the RQE.

[0180] At (17), the data plane 550E releases the mapping of SCID to NCID using the NSCT primitive.

[0181] At (18), the data plane 550E submits the task response to the communication layer 550C.

[0182] Reference Figure 6 , Figure 6 FIG. 1 is a process flow diagram that depicts an exemplary process flow in a target network node including a NIC as described herein according to some embodiments. The components of the process flow diagram may correspond to the components of the reference Figure 1A -C The components of the system 100 described herein, and / or may be implemented with reference to Figure 2 The target node 650 corresponds to Figure 1C The communication layer 650C can correspond to the target node 150R. Figure 1B Host 150B-1 and / or host 194, and / or corresponding to Figure 1A The data plane (such as a consumer) 650E may correspond to an application communicating with an external processor 150B. Figure 1A NSCT 660 can correspond to external processor 150B. Figure 1A The unloading circuit 602 may correspond to the mapping data set 106B. Figure 1A The context storage library 662 may store Figure 1A The first allocatable resource 106D-2 and the second allocatable resource 106D-1 are memory 106.

[0183] The processing flow at the target node is as follows:

[0184] At (20), the offload circuit 602 processes the arriving task start packet, indicating the start of task processing. The offload circuit 602 uses the information in the packet (directly or indirectly) to obtain the NCID. Examples of direct NCID acquisition include: using the QPID of the RoCE header and the CoCo option of the TCP header. Indirect examples include: looking up the NCID by a 5-tuple key constructed from the TCP / IP header of the packet.

[0185] At (21), the offload circuit 602 performs a lookup for the SCID using the NSCT primitives of the NSCT mapping data set 660. When there is no entry in the mapping data set, a new navigation context is allocated and its SCID is associated with the network context with the requested NCID, otherwise the existing association is used.

[0186] At (22), the offload circuit 602 extracts the network context using the NCID from the context repository 662. In the event that the network context includes a valid SCID reference, its value is verified against the SCID retrieved by the lookup primitive in (21).

[0187] At (23), the offload circuit 602 uses the SCID obtained by the lookup primitive to retrieve the guidance context from the context store 662. It should be noted that once the result of (21) is known, (23) can be performed simultaneously with (22).

[0188] At (24), the offload circuit 602 uses the network context state information to perform packet processing by updating congestion state information, RTT calculations, etc., and updating the NCID←→SCID reference in the context.

[0189] At (25), the offload circuit 602 uses the guided context state information to perform packet processing by publishing work elements with task request related information to the RQ, publishing work elements with completion information to the CQ of the queue, and updating the NCID←→SCID reference in the context.

[0190] At (26), the offload circuit 602 notifies the data plane 650E (as a consumer) that the task execution is complete.

[0191] At (27), the data plane 650E is invoked through an interrupt or CQE poll and retrieves the completion information using the CQE of the retrieved NCID from the RQE.

[0192] At (28), the data plane 650E submits the task request along with the actual values ​​of {NCID, SCID} to the communication layer 650C.

[0193] At (29), the communication layer 650C, after servicing the arriving request, submits the task response to the data plane 650E (as producer) using the pair {NCID, SCID} from the request.

[0194] At (30), the data plane 650E is initialized and posts the task response to the queue associated with the steering context. The actual value of the NCID is part of the task response information in the posted WQE.

[0195] At (31), data plane 650E rings the doorbell to notify offload circuitry 602 of the non-empty queue associated with the steering context.

[0196] At (32), offload circuit 602 begins processing the arriving doorbell by extracting the guidance context using the SCID from the doorbell.

[0197] At (33), offload circuit 602 extracts the WQE from the SQ using the state information of the boot context. The WQE carries the correct NCID value.

[0198] At (34), offload circuit 602 extracts the network context using the NCID from the WQE.

[0199] At (34'), the offload circuit 602 uses the NCID from the doorbell to extract the network context. It should be noted that (34') is a process optimization that can be applied when the doorbell information also contains the NCID. (34') can be performed simultaneously with step (32) and then complete (33).

[0200] At (35), the offload circuit 602 processes the task by downloading data, segmenting data, calculating CSC / checksum / digest, formatting packets, headers, etc.; updating congestion status information, RTT calculations, etc.; and updating the guidance context and network context status information.

[0201] At (36), offload circuit 602 sends the packet across the network.

[0202] At (37), offload circuit 602 processes the arriving acknowledgment packet indicating task completion. Offload circuit 602 uses information in the received packet (directly or indirectly) to obtain the NCID. Examples of direct NCID acquisition include: using the QPID of the RoCE header and the CoCo option of the TCP header. Indirect examples include: by looking up the NCID from the 5-tuple key of the TCP / IP header component of the packet.

[0203] At (38), offload circuit 602 extracts the network context using the NCID.

[0204] At (39), the offload circuit 602 extracts the guidance context using the SCID.

[0205] At (40), the offload circuit 602 processes the acknowledgement by updating the bootstrap context and network context state information and clearing the NCID←→SCID reference in the context.

[0206] At (41), the offload circuit 602 publishes a work element including task completion information to the CQ.

[0207] At (42), the offload circuit 602 notifies the data plane 650E of the completion of the task response.

[0208] At (43), the offload circuit 602 releases the mapping of SCID to NCID using the NSCT primitive.

[0209] Other systems, methods, features and advantages of the present disclosure will be or become apparent to those skilled in the art upon reviewing the following drawings and detailed description. It is intended that all such additional systems, methods, features and advantages be included within this description, be within the scope of the present disclosure, and be protected by the accompanying claims.

[0210] Descriptions of various embodiments of the present disclosure have been given for illustrative purposes, but are not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terms used herein are selected to best explain the principles of the embodiments, practical applications or technical improvements to the technologies seen in the marketplace, or to enable other persons of ordinary skill in the art to understand the embodiments disclosed herein.

[0211] It is expected that during the life of the patent resulting from this application, many related NICs will be developed, and the scope of the term NIC is intended to include a priori all such new technologies.

[0212] As used herein, the term "about" refers to ± 10%.

[0213] The terms "comprises" and "comprising", "includes" and "including", "having", and their cognates mean "including but not limited to". This term encompasses the terms "consisting of" and "consisting essentially of.

[0214] The phrase "consisting essentially of means that the composition or method may include additional ingredients and / or steps, but only if the additional ingredients and / or steps do not materially alter the basic and novel characteristics of the claimed composition or method.

[0215] As used herein, the singular forms "a", "an", and "the" include plural references unless the context clearly dictates otherwise. For example, the term "a compound" or "at least one compound" may include a plurality of compounds, including mixtures thereof.

[0216] The word “exemplary” is used herein to mean “serving as an example, instance, or instance.” Any embodiment described as “exemplary” is not necessarily to be construed as preferred or advantageous over other embodiments and / or to exclude the incorporation of features of other embodiments.

[0217] The term “optionally” as used herein means “provided in some embodiments and not provided in other embodiments.” Any particular embodiment of the present disclosure may include multiple “optional” features, unless these features conflict.

[0218] Throughout the application, various embodiments of the present disclosure may be presented in the form of ranges. It should be understood that the description of the range form is only for convenience and brevity, and should not be interpreted as a rigid limitation on the scope of the present disclosure. Therefore, it should be considered that the description of the range has specifically disclosed all possible sub-ranges and each numerical value within the range. For example, the description of the range from 1 to 6 should be considered to have specifically disclosed sub-ranges such as from 1 to 3, from 1 to 4, from 1 to 5, from 2 to 4, from 2 to 6, from 3 to 6, and a single numerical value within the range, for example, 1, 2, 3, 4, 5 and 6. Regardless of the width of the range, this applies.

[0219] Whenever a numerical range is indicated herein, it is intended to include any number (fractional or integer) cited within the specified range. The phrases "range between" a first indicated number and a second indicated number and "range from" a first indicated number "to" a second indicated number "are used interchangeably herein and are intended to include the first indicated number and the second indicated number and all fractional and integer numbers therebetween.

[0220] It should be understood that, for the sake of clarity, certain features of the disclosure described in the context of separate embodiments may also be provided in combination in a single embodiment. Conversely, for the sake of brevity, various features of the disclosure described in the context of a single embodiment may also be provided individually or in any suitable sub-combination, or in other described embodiments of the disclosure when appropriate. Certain features described in the context of various embodiments are not considered essential features of those embodiments, unless the embodiment does not function without those elements.

[0221] All publications, patents and patent applications mentioned in this specification are incorporated herein by reference in their entirety, to the same extent as if each individual publication, patent or patent application was specifically indicated to be incorporated herein by reference. In addition, the reference or reference to any reference in this application should not be construed as an admission that this reference can be used as prior art for the present disclosure. With respect to the section headings used, they should not be construed as necessarily limiting.

Claims

1. A network interface card NIC (192A, 192B) for transmitting data across a network (112), comprising: A memory (106) for allocating a navigation context (106D-2) representing a first dynamically allocated storage resource and a network context (106D-1) representing a second dynamically allocated storage resource, wherein the navigation context (106D-2) is associated with the network context (106D-1) via an external processor (150B), and the navigation context (106D-2) is associated with at least one queue (106C) having a plurality of tasks queued therein, wherein the plurality of tasks are issued by the external processor (150B) and are designated to be executed using a particular network connection; wherein the amount of storage resources reserved for allocating the navigation context (106D-2) is determined by a first estimated number of established network connections expected to execute the respective tasks simultaneously; and the amount of storage resources reserved for allocating the network context (106D-1) is determined by a second estimated number of simultaneously established network connections; The NIC processing circuit (102) is configured to process the plurality of tasks using the navigation context (106D-2) and the network context (106D-1), wherein the bootstrap context (106D-2) is temporarily allocated for use by the specific network during execution of the plurality of tasks, wherein the network context (106D-1) is allocated for use by the specific network connection during the life cycle of the specific network connection; and In response to an indication of completion of the execution of the plurality of tasks, the association of the bootstrap context (106D-2) with the network context (106D-1) is released by the external processor (150B) while maintaining the allocation of the network context (106D-1) until the particular network connection is terminated.

2. The NIC (192A, 192B) of claim 1, wherein: The guidance context (106D-2) is further configured to store a plurality of first state parameters, wherein the plurality of first state parameters are used by the specific network connection during execution of the plurality of tasks queued in the at least one queue (106C) associated with the guidance context (106D-2).

3. The NIC (192A, 192B) according to any one of the preceding claims, wherein: The network context (106D-1) is used to store a plurality of second state parameters for the specific network connection, wherein the plurality of second state parameters are maintained and used by the specific network connection during the entire life cycle of the specific network connection.

4. The NIC (192A, 192B) according to any one of the preceding claims, wherein: The network context (106D-1) is assigned a network context identifier NCID, and the steering context (106D-2) is assigned a steering context identifier SCID.

5. The NIC (192A, 192B) of claim 4, wherein: The at least one queue is used to transmit task-related information originating from the NIC processing circuit (102) and / or going to the NIC processing circuit (102), wherein queue elements of the at least one queue include task-related information of the multiple tasks using the specific network connection and their respective NCIDs.

6. The NIC (192A, 192B) according to any one of claims 4 to 5, wherein: The memory (106) is used to store a mapping data set (106B), and the mapping data set (106B) maps between the NCID of the network context (106D-1) and the SCID of the guidance context (106D-2).

7. The NIC (192A, 192B) according to any one of claims 4 to 6, wherein: The external processor (150B) is used to: determining, using the specific network connection, the start of processing a first task of the plurality of tasks; allocating a boot context from a plurality of storage resources for use by the particular network connection; and In response to the determined start, the navigation context (106D-2) having a specific SCID is associated with the network context (106D-1) having a specific NCID by creating a mapping between the respective NCIDs and SCIDs, wherein all of the multiple tasks are processed using the same mapping.

8. The NIC (192A, 192B) according to any one of claims 4 to 7, wherein: The external processor (150B) is used to: determining completion of a last of the plurality of tasks; and In response to determining the completion, releasing the association of the bootstrap context (106D-2) with the network context (106D-1) by removing the mapping between the NCID and the SCID, and releasing the bootstrap context.

9. The NIC (192A, 192B) according to any one of the preceding claims, wherein: The NIC (192A, 192B) is implemented on an initiator network node (150Q), and the initiator network node (150Q) uses the specific network connection to the target network node (150R) to initiate the multiple tasks, wherein the multiple tasks are received by the external processor (150B) from an application running on the initiator network node (150Q).

10. A network interface card NIC (192A, 192B) for transmitting data across a network (112), comprising: A memory (106) for allocating a bootstrap context (106D-2) representing a first dynamically allocated memory resource and a network context (106D-1) representing a second dynamically allocated memory resource, wherein the bootstrap context (106D-2) is associated with at least one queue (106C) having a plurality of tasks queued therein, wherein the plurality of tasks are received from an initiator network node across the network via a particular network connection; wherein the amount of memory resources reserved for allocating the bootstrap context (106D-2) is determined by a first estimated number of established network connections expected to execute the respective tasks simultaneously; and wherein the amount of memory resources reserved for allocating the network context (106D-1) is determined by a second estimated number of simultaneously established network connections; The NIC processing circuit (102) is configured to: associating the navigation context (106D-2) with the network context (106D-1); and queuing the plurality of tasks into at least one queue associated with the guidance context (106D-2); wherein the bootstrap context (106D-2) is temporarily allocated for use by the specific network during execution of the plurality of tasks, wherein the network context (106D-1) is allocated for use by the specific network connection during the life cycle of the specific network connection; and In response to an indication of completion of the execution of the plurality of tasks, the association of the bootstrap context (106D-2) with the network context (106D-1) is released while maintaining the allocation of the network context (106D-1) until the particular network connection is terminated.

11. The NIC (192A, 192B) of claim 10, wherein: The guidance context (106D-2) is further configured to store a plurality of first state parameters, wherein the plurality of first state parameters are used by the specific network connection during execution of the plurality of tasks queued in the at least one queue (106C) associated with the guidance context (106D-2).

12. The NIC (192A, 192B) according to any one of claims 10 to 11, wherein: The network context (106D-1) is used to store a plurality of second state parameters for the specific network connection, wherein the plurality of second state parameters are maintained and used by the specific network connection during the entire life cycle of the specific network connection.

13. The NIC (192A, 192B) according to any one of claims 10 to 12, wherein: The network context (106D-1) is assigned a network context identifier NCID, and the steering context (106D-2) is assigned a steering context identifier SCID.

14. The NIC (192A, 192B) of claim 13, wherein: The at least one queue is used to transmit task-related information originating from the NIC processing circuit (102) and / or going to the NIC processing circuit (102), wherein queue elements of the at least one queue include task-related information of the multiple tasks using the specific network connection and their respective NCIDs.

15. The NIC (192A, 192B) of claim 13 or 14, wherein: The memory (106) is used to store a mapping data set (106B), and the mapping data set (106B) maps between the NCID of the network context (106D-1) and the SCID of the guidance context (106D-2).

16. The NIC (192A, 192B) according to any one of claims 13 to 15, wherein: The NIC processing circuit (102) is used to: Using the particular network connection, determining a start of processing a first task of the plurality of tasks; and Allocating a boot context (106D-2) from a plurality of storage resources for the particular network connection, and in response to the determined start, associating the boot context (106D-2) with the particular SCID with the network context (106D-1) with the particular NCID by creating a mapping between the NCID and the SCID, wherein all of the plurality of tasks are processed using the same mapping.

17. The NIC (192A, 192B) according to any one of claims 13 to 16, wherein: The NIC processing circuit (102) is used to: determining completion of a last of the plurality of tasks; and In response to determining the completion, releasing the association of the bootstrap context (106D-2) with the network context (106D-1) by removing the mapping between the NCID and the SCID, and releasing the bootstrap context (106D-2).

18. The NIC (192A, 192B) according to any one of claims 10 to 17, wherein: The NIC (192A, 192B) is implemented on a target network node (150R) that executes and responds to the plurality of tasks received from an initiator network node (150Q) across the network (112) via the particular network connection.

19. A network device (150) comprising at least one network interface card NIC (192A, 192B) according to any one of claims 1-7 or any one of claims 10-18.

20. The network device (150) according to claim 19, further comprising: At least one external processor (150B) for: determining, using the specific network connection, the start of processing a first task of the plurality of tasks; allocating a boot context from a plurality of storage resources for use by the particular network connection; and In response to the determined start, the navigation context (106D-2) having a specific SCID is associated with the network context (106D-1) having a specific NCID by creating a mapping between the respective NCIDs and SCIDs, wherein all of the multiple tasks are processed using the same mapping.

21. The network device (150) according to claim 20, wherein: The external processor (150B) is used to: determining completion of a last of the plurality of tasks; as well as In response to determining the completion, releasing the association of the bootstrap context (106D-2) with the network context (106D-1) by removing the mapping between the NCID and the SCID, and releasing the bootstrap context.

22. A method for managing resources consumed by network connections to process tasks across the network, comprising: providing a navigation context representing a first dynamically allocated storage resource and providing a network context representing a second dynamically allocated storage resource, wherein the navigation context is associated with the network context and the navigation context is associated with at least one queue having a plurality of tasks queued therein, wherein the plurality of tasks are designated to be executed using a particular network connection (202); wherein an amount of the storage resource reserved for allocating the navigation context (106D-2) is determined by a first estimated number of established network connections expected to execute the respective tasks simultaneously; and wherein an amount of the storage resource reserved for allocating the network context (106D-1) is determined by a second estimated number of simultaneously established network connections; During the execution of the plurality of tasks, temporarily allocating the guidance context for use by the specific network (204); During the life cycle of the specific network connection, the network context is allocated for use by the specific network (206); Processing the plurality of tasks using the guidance context and the network context (208); and In response to an indication (210) that the execution of the plurality of tasks is complete, the association of the bootstrap context with the network context is released while maintaining the allocation of the network context (106D-1) until the particular network connection is terminated.

Citation Information

Patent Citations

  • Method and apparatus for context-indexed network resources

    CN102939604A

  • Network interface device

    JP2010183450A