Use of coherently attached interfaces in a network stack framework
By employing coherently attached interfaces to share network buffers directly between applications and network interfaces within a network stack framework, the solution addresses latency and efficiency challenges in computing systems, achieving reduced latency and improved computational efficiency.
Patent Information
- Application Number
- JP2022565532
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-05-06
- Filing Date
- 2021-04-30
- Publication Date
- 2025-03-18
- Estimated Expiration
- 2041-04-30
AI Technical Summary
Existing computing systems face challenges in reducing network access latency and efficiently sharing memory buffers between applications and network interfaces, particularly in high-performance computing and heterogeneous environments.
The proposed solution involves utilizing coherently attached interfaces within a network stack framework to share multiple network buffers directly between applications and network interfaces, bypassing drivers and operating systems through application buffers, circular buffers, and queuing and pooling operations.
This approach significantly reduces network access latency, enhances bandwidth, and allows for seamless in-memory data exchange between applications, improving computational efficiency and simplifying remote direct memory access (RDMA) network communications.
Smart Images

Figure 0007648653000001 
Figure 0007648653000002 
Figure 0007648653000003
Abstract
Description
[Technical field]
[0001] The present invention relates generally to computing systems, and more particularly to various embodiments for utilizing a coherently attached interface in a network stack framework in a computing environment. [Background technology]
[0002] In today's society, consumers, business people, educators, and others use various computing network systems with increasing frequency in diverse settings. Computer systems may be found in the workplace, at home, or at school. Computer systems may include data storage systems, or disk storage systems, for processing and storing data. In recent years, both software and hardware technologies have experienced incredible advancements. With new technologies, more and more capabilities are added, providing even greater convenience to the use of these computing systems. Summary of the Invention
[0003] Various embodiments are provided for utilizing a coherently attached interface in a network stack framework in a computing environment, where multiple coherently attached network buffers between one or more applications and a network interface may be shared using application buffers, circular buffers, and queuing and pooling operations, bypassing one or more drivers and the operating system.
[0004] Viewed from a first aspect, the present invention provides a method for utilizing an extended network stack framework in a computing environment by a processor, the method including sharing a number of coherently attached network buffers between one or more applications and a network interface while bypassing one or more drivers and the operating system using application buffers, circular buffers, and queuing and pooling operations.
[0005] Preferably, the present invention provides a method further comprising controlling a plurality of network buffers by a shared library.
[0006] Preferably, the present invention provides a method further comprising sharing one or more address spaces of a plurality of network buffers between one or more applications using a network interface, wherein the plurality of network buffers are used for input / output (I / O) control.
[0007] Preferably, the present invention provides a method further comprising exchanging memory pointers with coherently attached devices using a circular buffer.
[0008] Preferably, the present invention provides a method further comprising performing queuing and pooling operations on a plurality of network buffers for network buffer transmission, reception, and manipulation.
[0009] Preferably, the present invention provides a method, wherein the queuing and pooling operations further include moving, allocating, or reallocating one of a plurality of network buffers from the one or more queues and the one or more pools.
[0010] Preferably, the present invention provides a method further comprising establishing a shared memory region and a private memory region using a plurality of network buffers.
[0011] Viewed from another aspect, the present invention provides a system utilizing an extended network stack framework, the system comprising one or more computers having executable instructions that, when executed, cause the system to share multiple coherently attached network buffers between one or more applications and a network interface while bypassing one or more drivers and the operating system using application buffers, circular buffers, and queuing and pooling operations.
[0012] Preferably, the present invention provides a system in which executable instructions, when executed, cause the system to control multiple network buffers via a shared library.
[0013] Preferably, the present invention provides a system in which executable instructions, when executed, cause the system to share one or more address spaces of multiple network buffers among one or more applications using a network interface, and the multiple network buffers are used for input / output (I / O) control.
[0014] Preferably, the present invention provides a system in which executable instructions, when executed, cause the system to coherently exchange memory pointers with attached devices using a circular buffer.
[0015] Preferably, the present invention provides a system in which executable instructions, when executed, cause the system to perform queuing and pooling operations on a plurality of network buffers for network buffer transmission, reception, and manipulation.
[0016] Preferably, the present invention provides a system where executable instructions, when executed, cause the system to move, allocate, or reallocate one of a plurality of network buffers from one or more queues and one or more pools to perform queuing and pooling operations.
[0017] Preferably, the present invention provides a system, wherein executable instructions, when executed, cause the system to establish shared memory regions and private memory regions using a plurality of network buffers.
[0018] Viewed from another aspect, the present invention provides a computer program product for utilizing an extended network stack framework by a processor, the computer program product including a non-transitory computer readable storage medium having computer readable program code portions stored thereon, the computer program product including an executable portion for sharing application buffers, circular buffers, and multiple network buffers coherently attached between one or more applications and a network interface while bypassing one or more drivers and the operating system using queuing and pooling operations.
[0019] Preferably, the present invention provides a computer program product further comprising an executable part for controlling a plurality of network buffers by means of a shared library.
[0020] Preferably, the present invention provides a computer program product further comprising an executable portion for sharing one or more address spaces of a plurality of network buffers between one or more applications using a network interface, wherein the plurality of network buffers are used for input / output (I / O) control.
[0021] Preferably, the present invention provides a computer program product further comprising an executable portion for exchanging memory pointers with coherently attached devices using a circular buffer and performing queuing and pooling operations on a plurality of network buffers for network buffer transmission, reception, and manipulation.
[0022] Preferably, the present invention provides a computer program product further comprising an executable portion for moving, allocating or reallocating one of a plurality of network buffers from one or more queues and one or more pools to perform queuing and pooling operations.
[0023] Preferably, the present invention provides a computer program product further comprising an executable portion for establishing a shared memory region and a private memory region using a plurality of network buffers.
[0024] In order that the advantages of the present invention may be readily understood, a more particular description of the invention, briefly set forth above, will now be presented by reference to specific embodiments illustrated in the accompanying drawings, with the understanding that these drawings merely depict exemplary embodiments of the invention and therefore should not be considered as limiting its scope, the invention will be described and explained with additional particularity and detail through the use of the accompanying drawings, in which: [Brief description of the drawings]
[0025] [Figure 1] FIG. 2 is a block diagram illustrating an exemplary cloud computing node, in accordance with an embodiment of the present invention. [Diagram 2] FIG. 13 is an additional block diagram illustrating an exemplary cloud computing environment, in accordance with embodiments of the present invention. [Diagram 3] FIG. 13 is an additional block diagram illustrating an abstract model layer, according to an embodiment of the present invention. [Figure 4]FIG. 2 is a block diagram illustrating a mode of operation for utilizing a coherently attached interface in a network stack framework in a computing environment in which various aspects of the present invention may be implemented. [Figure 5A] FIG. 1 illustrates the use of a coherently attached interface in a network stack framework in a computing environment according to an embodiment of the present invention. [Figure 5B] FIG. 1 illustrates the use of a coherently attached interface in a network stack framework in a computing environment according to an embodiment of the present invention. [Figure 6A] FIG. 1 illustrates the use of a circular buffer to utilize a coherently attached interface in a network stack framework in a computing environment, according to an embodiment of the present invention. [Figure 6B] FIG. 1 illustrates the use of a circular buffer to utilize a coherently attached interface in a network stack framework in a computing environment, according to an embodiment of the present invention. [Figure 7] FIG. 2 is a block diagram illustrating a mode of operation for utilizing a coherently attached interface in a network stack framework in a computing environment in which aspects of the present invention may be implemented. [Figure 8] FIG. 11 is a flowchart illustrating an additional exemplary method for utilizing a coherently attached interface in a network stack framework in a computing environment in which aspects of the present invention may be implemented. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0026] As an introduction, cache coherence, also known as memory coherence, is an issue that affects the design of computer systems where two or more processors or cores share a common area of memory. In a single-processor system, there is only one processing element that does all of the work, and therefore only one processing element can read from or write to a given memory location. As a result, when a value is changed, all subsequent read operations of the corresponding memory location will see the updated value, even if it is cached.
[0027] On the other hand, in a multiprocessor (or multicore system), there are two or more processing elements operating simultaneously, and therefore they can access the same memory location at the same time. As long as none of the processors modify the data at this location, the processors can share the data indefinitely and cache it however they like. But as soon as one processor updates the location, other processors may operate on a stale copy that may be in their local caches. As a result, some scheme is needed to notify all processing elements of changes to a shared value, such a scheme is called a "cache coherence protocol", and if such a protocol is employed, the system is said to have "cache coherence". The exact nature and meaning of cache coherence is determined by the consistency model enforced by the coherence protocol.
[0028] A cache coherence protocol typically defines a set of cache states stored and associated with cached copies of memory blocks, and the events that trigger transitions between the cache states and the cache states to which the transition is made. Thus, to maintain data coherence across a system, a cache coherence protocol, such as a directory-based protocol, a snoop-based protocol, a combination of these, or other variants, is used to guarantee at least a minimum required level of coherence between the various processor cores' "views" of the system memory contents.
[0029] In addition, modern computing systems with various system buses, system intraconnects, and interconnects between various applications and local or nearby systems have various protocols for transmitting data and sharing memory between various components. For example, computing systems aim to provide improved performance by using cache coherence to enable coherent interconnects between general-purpose processors and acceleration devices for heterogeneous computing. Acceleration devices attempt to avoid the inherent bandwidth limitations or latency in some connections, such as the PCI Express (PCIe) bus (PCIe is a multi-lane point-to-point interconnect that can scale from one lane to many lanes). That is, computing systems attempt to provide improved computational efficiency while maintaining cache coherence when providing data access across the memory spaces of various types of processors. For example, the Open Coherent Accelerator Processor Interface (CAPI) is an interface between processors and accelerators to increase bandwidth and provide lower latency. As another example, Cache Coherent Interconnect for Accelerators ("CCIX") may be used, which is built on PCI Express (PCIe) to provide a chip-to-chip interconnect for high-speed hardware accelerators and is targeted to specific applications.
[0030] However, even within these modern computing systems, the transmission, communication, and / or reception of data between various applications and local or nearby systems still experiences network latency along the network path. For example, in the context of tightly integrated high performance computing ("HPC") systems with few switching layers, the delivery of data to a target application involves network path delays (once inside the destination device) that may be several nanoseconds ("nsec") faster than data transmission between servers (e.g., at least within the scale of a few co-located racks, especially if a network stack must be traversed). Thus, there is a need to provide a cache coherent interconnect system to maintain cache coherence, increase bandwidth, and reduce / eliminate network access latency paths in HPC / heterogeneous computing systems. In this case, network access latency may begin from the time the data signal arrives at the network interface and end with the shared memory having the data to allow the receiving application to use it (e.g., ending with the actual data copy of the data to the destination memory / memory cells).
[0031] Thus, various embodiments described herein provide an enhanced network architecture that leverages the cache coherent attachment of a processor to enable direct mastering of load and store operations by off-chip peripherals to system memory independent of the local system bus architecture. In this manner, memory transactions are decoupled from a particular bus architecture, and the same unmodified coherently attached logic (such as accelerators, network interfaces, etc.) may be interfaced to different SoC architectures. In one aspect, various embodiments provide shared memory between one or more applications and one or more network interfaces while improving network access latency paths and bypassing one or more drivers and the operating system.
[0032] The mechanisms of the illustrated embodiments of the extended network architecture enable off-chip accelerators to be integrated with a system-on-chip ("SoC") and directly master and cache coherently load and store to system memory using the same memory access data path (e.g., a hardware data path similar to that of on-chip entities (e.g., processors, coprocessors) with comparable latency and bandwidth).
[0033] In an additional aspect, the present invention provides direct access to in-memory data, interrupt generation, and the ability to atomically contend for spinlocks with the CPU, all provided by coherently attached ports. This means that there is no need for any operating system device driver support and DMA programmable hardware used for scatter / gather data transfers, provided that the application and the coherently attached device agree on the data format. By enabling and providing driverless integration, the programming model and application programming interface ("API") are further simplified, resulting in improved computational efficiency, where thread mutual exclusion appears, i.e., network I / O is integrated as a special form of hardware thread.
[0034] Thus, the present invention provides a network framework stack that shares memory buffers (e.g., network buffers) between various applications and network interfaces. In one aspect, memory buffers may be used interchangeably with network buffers. The network buffers may be allocated on behalf of one or more applications by an operating system ("OS") and provided under the control of a library (e.g., a shared library). In one aspect, a shared address space between all participating applications established to a shared memory mechanism may be provided and used for input / output ("I / O") control (i.e., exchange of pointers and spinlock handling). Each application may then have a memory management unit ("MMU") protected shared access with the accelerator in the common address space that includes the application network buffers.
[0035] In this manner, the present invention uses coherently attached port technology to achieve unprecedented latency for data delivery within the "black box" (e.g., current RDMA round trip latency is 1.2 microseconds ("μsec") at one switching layer; a coherently attached interface can reduce this latency to 600-700 nanoseconds ("nsec")) and allows applications to seamlessly exchange in-memory data over the network by only handling pointers and spinlocks to further simplify remote direct memory access ("RDMA") type network communications by allowing the network medium to leverage extremely high bursts (i.e., single hardware level bursts are now possible for all application level message sizes). The illustrated embodiment of the network stack framework system is a framework that is independent of any network medium access protocol ("MAC") or link layer control protocol ("LLC") and thus potentially integrable with any packet or circuit network technology.
[0036] Although this disclosure includes detailed descriptions of cloud computing, it should be understood that implementation of the teachings recited herein is not limited to a cloud computing environment. Rather, embodiments of the present invention may be implemented in conjunction with any other type of computing environment now known or later developed.
[0037] Cloud computing is a model of service delivery for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal administrative effort or interaction with a service provider. This cloud model may include at least five characteristics, at least three service models, and at least four deployment models.
[0038] The characteristics are as follows: On-Demand Self-Service: Cloud consumers may unilaterally provision computing capacity, such as server time and network storage, automatically as needed, without the need for human interaction with the service provider. Broad network access: Functionality is available over the network and accessed through standard mechanisms that facilitate use by heterogeneous thin-client or thick-client platforms (e.g., cell phones, laptops, and PDAs). Resource Sharing: Provider computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically allocated and reallocated according to demand. There is location independence in that consumers generally have no control or knowledge over the exact location of the resources provided, but may be able to specify location at a higher level of abstraction (e.g., country, state, or data center). Rapid Scalability: Capabilities can be quickly and elastically provisioned, in some cases automatically, to instantly scale out, and quickly released to instantly scale in. To the consumer, the capabilities available for provisioning often appear unlimited and can be purchased in any quantity at any time. Services are meterable: Cloud systems automatically control and optimize resource usage by leveraging metering at a level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency to both providers and consumers of the services being used.
[0039] The service model is as follows: Software as a Service (SaaS): The functionality provided to the consumer is the use of the provider's applications running on a cloud infrastructure. The applications are accessible from a variety of client devices through thin-client interfaces such as web browsers (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, storage, or even individual application functionality, with the possible exception of limited user-specific application configuration settings. Platform as a Service (PaaS): The functionality offered to the consumer is the deployment of consumer-created or consumer-acquired applications, written using programming languages and tools supported by the provider, onto a cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but does have control over the deployed applications and, in some cases, the application hosting environment configuration. Infrastructure as a Service (IaaS): The functionality offered to the consumer is to provision processing, storage, network, and other basic computing resources onto which the consumer can deploy and run any software, which may include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure, but does have control over the operating systems, storage, deployed applications, and in some cases, limited control over selected networking components (e.g., host firewalls).
[0040] The deployment model is as follows: Private Cloud: The cloud infrastructure is operated exclusively for an organization. The cloud infrastructure may be managed by that organization or a third party and may be on-premise or off-premise. Community Cloud: The cloud infrastructure is shared by multiple organizations to support a specific community with shared concerns (e.g., mission, security requirements, policy, and compliance considerations). The cloud infrastructure may be managed by the organization or a third party and may reside on-premise or off-premise. Public Cloud: The cloud infrastructure is made available to the general public or large industry organizations and is owned by an organization that sells cloud services. Hybrid Cloud: A cloud infrastructure is a composition of two or more clouds (private, community, or public) that remain a unique entity but are joined by standardized or proprietary technologies that enable data and application portability (e.g., cloud bursting for load balancing between clouds). Cloud computing environments are service-oriented with an emphasis on statelessness, low coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure that includes a network of interconnected nodes.
[0041] 1, a schematic of an example cloud computing node is shown. Cloud computing node 10 is merely one example of a suitable cloud computing node and is not intended to suggest any limitation as to the scope of use or functionality of the inventive embodiments described herein. Nevertheless, cloud computing node 10 is capable of being implemented and / or performing any of the functionality described above.
[0042] Cloud computing node 10 includes computer system / server 12, which may be operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well-known computing systems, environments, or configurations, or combinations thereof, that may be suitable for use with computer system / server 12 include, but are not limited to, personal computer systems, server computer systems, thin clients, thick clients, handheld or laptop devices, multiprocessor systems, microprocessor-based systems, set-top boxes, programmable appliances, network PCs, minicomputer systems, mainframe computer systems, and distributed cloud computing environments that include any of the above systems or devices.
[0043] The computer system / server 12 may be described in the general context of computer system executable instructions, such as program modules, being executed by a computer system. Generally, program modules may include routines, programs, objects, components, logic, data structures, etc. that perform particular tasks or implement particular abstract data types. The computer system / server 12 may be practiced in a distributed cloud computing environment where tasks are performed by remote processing devices linked through a communications network. In a distributed cloud computing environment, program modules may be located in both local and remote computer system storage media, including memory storage devices.
[0044] 1, computer system / server 12 in cloud computing node 10 is shown in the form of a general purpose computing device. Components of computer system / server 12 may include, but are not limited to, one or more processors or processing units 16, a system memory 28, and a bus 18 coupling various system components including system memory 28 to processor 16.
[0045] Bus 18 represents any one or more of several types of bus structures, including a memory bus or memory controller, a peripheral bus, a high speed graphics port, and a processor or local bus using any of a variety of bus architectures, including, by way of example and not limitation, an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnect (PCI) bus.
[0046] Computer system / server 12 typically includes a variety of computer system readable media. Such media may be any available media that can be accessed by computer system / server 12 and includes both volatile and nonvolatile media, removable and non-removable media.
[0047] The system memory 28 may include computer system readable media in the form of volatile memory, such as random access memory (RAM) 30 and / or cache memory 32. The computer system / server 12 may further include other removable / non-removable, volatile / non-volatile computer system storage media. By way of example only, a storage system 34 may be provided for reading from and writing to a non-removable non-volatile magnetic medium (not shown, and typically referred to as a "hard drive"). Although not shown, a magnetic disk drive may be provided for reading from and writing to a removable non-volatile magnetic disk (e.g., a "floppy disk"), and an optical disk drive may be provided for reading from or writing to a removable non-volatile optical disk, such as a CD-ROM, DVD-ROM, or other optical media. In such instances, each may be connected to the bus 18 by one or more data media interfaces. As further illustrated and described below, system memory 28 may include at least one program product having a set (e.g., at least one) of program modules configured to perform functions of embodiments of the present invention.
[0048] A program / utility 40 having a set (at least one) of program modules 42 may be stored in the system memory 28, as well as, by way of example and not limitation, an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data, or any combination thereof, may include an implementation of a networking environment. The program modules 42 generally perform the functions and / or methods of the embodiments of the invention described herein.
[0049] The computer system / server 12 may also communicate with one or more external devices 14, such as a keyboard, a pointing device, a display 24, one or more devices that allow a user to interact with the computer system / server 12, or any device that allows the computer system / server 12 to communicate with one or more other computing devices (e.g., a network card, a modem, etc.), or a combination thereof. Such communication may occur through an input / output (I / O) interface 22. Additionally, the computer system / server 12 may communicate with one or more networks, such as a local area network (LAN), a general wide area network (WAN), or a public network (e.g., the Internet), or a combination thereof, through a network adapter 20. As shown, the network adapter 20 communicates with other components of the computer system / server 12 through a bus 18. Although not shown, it is understood that other hardware and / or software components may be used in conjunction with the computer system / server 12. Examples include, but are not limited to, microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archive storage systems.
[0050] In the context of the present invention, as will be appreciated by those skilled in the art, the various components depicted in Figure 1 may be located within a moving vehicle. For example, some of the processing and data storage functions associated with the mechanisms of the illustrated embodiment may be performed locally via local processing components, while the same components are connected via a network to remotely located distributed computing data processing and storage components to accomplish various objectives of the present invention. Again, as will be appreciated by those skilled in the art, the present illustration is intended to convey only a subset of what may be an entire connected network of distributed computing components that collectively accomplish various inventive aspects.
[0051] Referring now to FIG. 2, an exemplary cloud computing environment 50 is shown. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 10 with which local computing devices used by cloud consumers, such as a personal digital assistant (PDA) or cell phone 54A, a desktop computer 54B, a laptop computer 54C, or an automobile computer system 54N, or combinations thereof, may communicate. The nodes 10 may communicate with each other. They may be physically or virtually grouped in one or more networks, such as a private cloud, a community cloud, a public cloud, or a hybrid cloud, or combinations thereof, as described above (not shown). This allows the cloud computing environment 50 to offer infrastructure, platform, and / or software as a service without the cloud consumer having to maintain resources on the local computing device. It should be understood that the types of computing devices 54A-N shown in FIG. 2 are intended to be exemplary only, and that the computing node 10 and cloud computing environment 50 may communicate with any type of computerized device via any type of network and / or network addressable connections (e.g., using a web browser).
[0052] Referring now to Figure 3, a set of functional abstraction layers provided by cloud computing environment 50 (Figure 2) is shown. It should be understood in advance that the components, layers, and functions shown in Figure 3 are intended to be merely exemplary, and that embodiments of the present invention are not limited thereto. As shown, the following layers and corresponding functions are provided:
[0053] The device layer 55 includes physical and / or virtual devices that incorporate and / or are stand-alone electronic components, sensors, actuators, and other objects for performing various tasks in the cloud computing environment 50. Each device in the device layer 55 may incorporate networking capabilities to other functional abstraction layers, whereby information obtained from the device may be provided to other functional abstraction layers, information from other abstraction layers may be provided to the device, or both. In one embodiment, the various devices that comprise the device layer 55 may incorporate a network of entities collectively referred to as the Internet of Things (IoT). Such a network of entities allows for intercommunication, collection, and distribution of data to accomplish a variety of purposes, as will be appreciated by those skilled in the art.
[0054] The illustrated device layer 55 includes the illustrated sensors 52, actuators 53, a "learning" thermostat 56 with integrated processing, sensor, and network electronics, a camera 57, a controllable household outlet / socket 58, and a controllable electrical switch 59. Other possible devices may include, but are not limited to, various additional sensor devices, networking devices, electronic devices (such as remote control devices), additional actuator devices, so-called "smart" appliances such as refrigerators or washers / dryers, and a wide variety of other possible interconnected objects.
[0055] The hardware and software layer 60 includes hardware and software components. Examples of hardware components include mainframes 61, RISC (reduced instruction set computing) architecture based servers 62, servers 63, blade servers 64, storage devices 65, and networks and networking components 66. In some embodiments, the software components include network application server software 67 and database software 68.
[0056] The virtualization layer 70 provides an abstraction layer within which the following examples of virtual entities may be provided: virtual servers 71, virtual storage 72, virtual networks including virtual private networks 73, virtual applications and operating systems 74, and virtual clients 75.
[0057] In one example, the management layer 80 may provide the functions described below. Resource provisioning 81 provides dynamic procurement of computing and other resources utilized to execute tasks within the cloud computing environment. Metering and pricing 82 provides cost tracking as resources are utilized within the cloud computing environment and provides billing or charging for the consumption of these resources. In one example, these resources may include application software licenses. Security provides identity verification of cloud consumers and tasks as well as protection for data and other resources. User portal 83 provides consumers and system administrators with access to the cloud computing environment. Service level management 84 provides cloud computing resource allocation and management so that requested service levels are met. Service level agreement (SLA) planning and fulfillment 85 provides pre-positioning and procurement of cloud computing resources where future requirements are anticipated according to SLAs.
[0058] The workload layer 90 provides examples of functions that a cloud computing environment may utilize. Examples of workloads and functions that may be provided from this layer include mapping and navigation 91, software development and lifecycle management 92, virtual classroom instructional delivery 93, data analytics processing 94, transaction processing 95, and, in the context of the exemplary embodiment of the present invention, various workloads and functions for utilizing coherently attached interfaces in a network stack framework 96. In addition, the workloads and functions for utilizing coherently attached interfaces in a network stack framework 96 may include such operations as data analytics. Those skilled in the art will appreciate that the workloads and functions for utilizing coherently attached interfaces in a network stack framework 96 may operate in conjunction with other portions of various abstraction layers, such as those in the hardware and software 60, virtualization 70, management 80, and other workloads 90 (e.g., data analytics processing 94, etc.) to achieve various objectives of the exemplary embodiment of the present invention.
[0059] Referring now to FIG. 4, a block diagram illustrating example functional components 400 according to various mechanisms of the illustrated embodiment is shown. FIG. 4 illustrates a system 400 for utilizing coherently attached interfaces in a network stack framework. As shown, many of the functional blocks may also be considered functional "modules" or "components" in the same descriptive sense as previously described in FIGS. 1-3. With the foregoing in mind, the module / component blocks 400 may also be incorporated into various hardware and software components of a system for intelligent causal knowledge extraction in accordance with the present invention. Many of the functional blocks 400 may run as background processes on various components, in distributed computing components, on user devices, or elsewhere.
[0060] As shown in FIG. 4, a network stack sharing service 410 is shown incorporating a processing unit 420 ("processor") and memory 430. The processing unit 420 and memory 430 may also be the processing unit 16 ("processor") and memory 28 of FIG. 1 for performing various computations, data processing, and other functions in accordance with various aspects of the present invention. The processing unit 420 may be in communication with the memory 430. The network stack sharing service 410 may be provided by the computer system / server 12 of FIG. 1.
[0061] As one skilled in the art will appreciate, the depiction of the various functional units within the network stack sharing service 410 is for illustrative purposes, as the functional units may be located anywhere within the network stack sharing service 410 or within and / or between the distributed computing components.
[0062] The network stack sharing service 410 may include a sharing component 440, an application buffer component 450, a circular buffer component 460, and a queuing and pooling component 470. In this manner, the network stack sharing service 410 allows for coherent attachment of network interfaces to system memory, bypassing the drivers and the OS entirely.
[0063] In one embodiment, by way of example only, shared component 440 (or shared component 440 associated with application buffer component, circular buffer component 460, queuing and pooling component 470, or a combination thereof, or both) may share multiple coherently attached network buffers between one or more applications and a network interface, bypassing one or more drivers and operating systems using application buffers, circular buffers, and queuing and pooling operations.
[0064] Shared component 440 may include and / or be associated with a shared library (see also shared library 504 in FIGS. 5A-5B) for controlling multiple network buffers via the shared library.
[0065] The shared component 440 may share one or more address spaces of multiple network buffers among one or more applications using a network interface, where the multiple network buffers are used for input / output (I / O) control.
[0066] The application buffer component 450 may safely share one or more application virtual address spaces of multiple network buffers with a coherently attached network interface (see coherently attached network interface 512 in FIG. 5). The circular buffer component 460 may exchange memory pointers with one or more coherently attached devices.
[0067] The queuing and pooling component 470 may perform queuing and pooling operations on a plurality of network buffers for network buffer transmission, reception, and manipulation. The queuing and pooling component 470 may move, allocate, or reallocate one of a plurality of network buffers from one or more queues and one or more pools for performing queuing and pooling operations. That is, the queuing and pooling component 470 may provide network buffer transmission, reception, manipulation, and share buffers belonging to different application virtual address spaces with a coherent domain network interface.
[0068] The sharing component 440 may establish shared and private memory regions using multiple network buffers.
[0069] 5A-5B, the figures show schematic diagrams of network stack frameworks 500 and 515 for utilizing coherently attached interfaces. As shown, many of the functional blocks may also be considered functional "modules" or "components" in the same descriptive sense as previously described in FIGS. 1-4. Also, one or more of the operations and steps of FIGS. 1-4 may also be included in one or more operations or actions of FIGS. 5A-5B. Repetition of descriptions of similar elements, components, modules, services, applications, or functions, or combinations thereof, employed in other embodiments described herein are omitted for the sake of brevity.
[0070] As shown, the network stack framework 500 may include and / or be associated with one or more applications (e.g., App1 or “Application 502A” and AppN or “Application N”). The one or more applications 502A-502N may also be in communication with a shared library 504. The network stack framework 500 may also include one or more network buffers, such as, for example, network buffers 510A-510C. In one aspect, the network buffers 510A-510C may be shared and / or restricted as “private”. For example, the network buffer 510A may be a shared network buffer, while the network buffers 510B and 510C may be private network buffers. The network buffers 510A-510C may be in communication / associated with a coherently attached network interface 512. In this manner, network buffers 510A-510C may be coherently attached between one or more applications (e.g., applications 502A-502N) and a network interface (e.g., coherently attached network interface 512) while bypassing one or more drivers and the operating system using application buffers, circular buffers (see also FIGS. 6A-6B), and queuing and pooling operations (see also FIGS. 6A-6B).
[0071] In one aspect, and by way of example only, an address space configuration for network buffers 510A-510C is shown for N example applications, such as applications 502A-502N. Shared library 504 may establish a common area (e.g., “APP_SHARED” for shared access for applications in network buffer 510A) and a private area (e.g., “APP_PRIVATE” providing private access for applications in network buffers 510B-510C) across the shared memory. Also, as described herein, various constructs including the network buffer stack also refer to address spaces used, and coherently attached network interface 512 may be associated with separate application address spaces by simultaneously leveraging hardware level support, such as PCI PASID (“Peripheral Component Interface (“PCI”) Process Address Space Identifier (“PASID”)).
[0072] In one aspect, as part of establishing a connection with one or more remote counterparties, an application (e.g., applications 502A-502N, which may be user applications) may reserve some associated network buffers for communication, which reside in a private area (e.g., “APP_PRIVATE” providing private access for the application in network buffers 510B-510C). In the context of each application, a network buffer (e.g., one of network buffers 510A-510C) may belong to only one of the following six constructs at a given time, which may be maintained separately for each application by shared library 504. Also, each of the queues and pools described herein may use circular buffers 620A-620N of FIG. 6A-6B for execution and to perform various functions of each of the described queues and pools.
[0073] In the first construct or "first pool", a "global software" ("s / w") free pool (e.g., default state) may be a common pool for all connections across all applications, where all network buffers reside during initialization until action is taken. Pointers to all these network buffers are kept by shared library 504 in an "APP_SHARED" area in network buffers 510A, sorted by active application, and contains only network buffer pointers.
[0074] In the second construct or "second pool", a global hardware ("H / w") free pool may be a number of free network buffers that are actively pushed into this global hardware free pool, and free network buffers may be moved from the global software ("s / w") free pool. Each application may contribute buffers to this pool (e.g., the global software ("s / w") free pool), and the global software ("s / w") free pool should be constantly replenished as network buffers are consumed for receiving data. When the global software ("s / w") free pool becomes empty for a given application, the global software ("s / w") free pool stops accepting network buffers from remote nodes destined for that application. A pointer to this global software ("s / w") free pool exists in the "APP_SHARED" area in network buffer 510A, and contains only network buffer pointers.
[0075] In a third construct or "third pool," the processing pool may include network buffers that are being actively modified by local processors, graphics processing units ("GPUs"), accelerators, etc., and is "per application pool" and maintained for garbage collection purposes. If the network buffers are not returned, they are garbage collected by the shared library 504 when the owner application exits. The processing pool may reside in an "APP_SHARED" area within network buffer 510A and contains only network buffer pointers.
[0076] In a third construct or "third queue," the receive queue may include a network buffer that is updated with content sent from a remote host with which communication has been established, where one receive queue is created in an "APP_SHARED" area within network buffer 510A per remote connection (e.g., hosting only the buffer pointers). The receive queue may be a first-in, first-out ("FIFO") queue.
[0077] In a fourth construct or "fourth queue," a global transmit queue may contain network buffers marked for transmission, and the global transmit queue is shared among all connections across all applications, such that hardware has access to all network buffers to perform transmission (e.g., the global transmit queue hosts only the network buffer pointers). The global transmit queue is a FIFO queue that contains the pointers and is in the "APP_SHARED" area within network buffer 510A.
[0078] In a fifth construct or "fifth queue," the sent queue may contain network buffers that have completed transmission and can be returned to the owner application via this queue. The sent queue may be a FIFO queue with a pointer to an "APP_SHARED" area in network buffer 510A (which is a protected network buffer space).
[0079] In an additional aspect, as shown in FIG. 5B, all queues and pools may be maintained, for example, in an “APP_SHARED” area within network buffer 510A and may include virtual address pointers to the various application buffers (e.g., APP1 and APPN buffers) that reside in each application address space (in the “APP_PRIVATE” areas within network buffers 510B-510C).
[0080] Application buffers (e.g., APP1 and APPN buffers) may be transferred / moved between various pools and queues (as described above) in response to one or more application programming interface ("API") calls and / or hardware events. That is, applications may move network buffers from the global S / w free pool to their processing pool. Each network buffer belonging to an application processing pool may be moved to a global transmit queue by the owner application. An application may reuse one or more network buffers from the application's sent queue by transferring / moving one or more network buffers back to the processing pool. The sent queue may have a fixed size per application, and when the sent queue ignores an application, the sent queue may start returning buffers to the global S / w free pool when the sent queue is full. Once all network buffers in the receive queue have been read by the shared library 504, they may be removed to the processing pool. For every network buffer returned to the receive queue, the shared library 504 moves the network buffer from the global S / w free pool to the global H / w free pool so that the hardware can continue to receive data from the remote host.
[0081] In an additional aspect, for network addressing and logical connections (i.e., communications established between a local application running on a local host and a remote application running on a remote host), the shared library 504 (which may be a software library) maintains a connection stack with all of the application's active connections from local to remote. The connection tuples (i.e., tuples that hold all of the routing and identifier information necessary to establish bidirectional communications between a local application running on a local host and a remote application running on a remote host) may be of a fixed size and are accessible by a unique identifier that also serves as an offset into the dedicated stack in which they are stored. Each connection tuple may be characterized by 1) a destination connection identifier ("ID") and network identifier (obtained during connection establishment and which may be specific to the underlying network architecture / technology), 2) a local identifier for accessing various queues, 3) authentication credentials for the various queues to which the connection tuple has access, or 4) internal port information such that network buffers may be given to the application, or a combination thereof.
[0082] 6A-6B are diagrams 600 and 615 of the use of circular buffers to utilize coherently attached interfaces in a network stack framework in a computing environment. As shown, many of the functional blocks may also be considered functional "modules" or "components" in the same descriptive sense as previously described in FIGS. 1, 5A, and 5B. Also, one or more of the operations and steps of FIGS. 1, 5A, and 5B may also be included in one or more operations or actions of FIGS. 6A-6B. Repetition of descriptions of similar elements, components, modules, services, applications, or functions, or combinations thereof, employed in other embodiments described herein are omitted for brevity.
[0083] As shown, a circular buffer 620 (e.g., circular buffer 620 in FIG. 6A and circular buffers 620A-620N in FIG. 6B) is shown that may reside in system memory. In one aspect, given the ability of hardware components to atomically contend for spinlocks, hardware-software codesign may be used for circular buffer communication with circular buffer 620.
[0084] In one aspect, the circular buffer 620 may resemble / reflect similar behavior to a processor's behavior (e.g., how a CPU contends), but all hardware threads may be implemented by a network interface (e.g., network interface hardware 630) and may require "pushing / pulling" data from system memory to / from the network interface (e.g., network interface hardware 630). The CPU threads may also be required for delivery to applications and generated in bulk by the library 610. For example, certain atomic commands (e.g., atomic built-in commands of a particular processor architecture that may atomically assert and deassert bits in a register) may be used to implement shared access to the circular buffer 620. Each circular buffer instance features a single register that represents which fields of the circular buffer have valid entries. More specifically, each bit position represents that if the value of the bit position is equal to a logical value, the corresponding particular circular buffer entry has valid data, and if the value of the bit position is equal to zero, it contains no data. By utilizing atomic operations on the aforementioned registers that indicate which entries are valid in the circular buffer 620, a coherently attached network interface can safely share the buffer and exchange data with the corresponding CPU (on which the software library runs).
[0085] 6B, circular buffers 620A-N represent an end-to-end connection between shared library 610 (e.g., a software library or “software side”) and network interface hardware 630 (e.g., a hardware buffer, a network buffer, a network buffer dispatcher, or “hardware side”). Circular buffers 620A-N may be unidirectional hardware-software shared circular buffers (e.g., software library 610 and network interface hardware 630 share a circular buffer) and may be used for interaction (e.g., used for pointer exchange).
[0086] The circular buffers 620A-N may be unidirectional, and different instances should be used for different pool / queue types, such as, for example, a global software ("s / w") free pool 602A, a global hardware ("H / w") free pool 602B, a processing pool (i.e., a pool of buffers currently being manipulated by application code running on the local host), receive queues 608A-B (e.g., per-connection receive queues), global transmit queues (i.e., a single host-wide queue shared among all applications on the host that contains all buffers that need to be sent by a coherently attached network interface but have not yet been sent) 604A and 604B, or global sent queues 606A-B (i.e., one sent queue per connection contains buffers that have been sent to a remote host by a coherently attached network interface and therefore may be reused by applications), or a combination thereof.
[0087] In one embodiment, on the software side, a dispatcher thread 640 may be used, and on the hardware side, a priority / arbiter dispatch 640 (e.g., a hardware buffer dispatcher) may be used by the circular buffers 620A-N to push and / or pull data between system memory to / from the network interface. In this manner, each of the circular buffers 620A-N may be used for both software and hardware functions.
[0088] Thus, by way of example only, each of circular buffers 620A-620N may pull for a spinlock from the hardware side (e.g., network interface hardware 630) and the hardware thread may mutually exclude itself from the software thread to obtain the data.
[0089] In one aspect, the circular buffers 620A-620N may be used only for immediate transmission, and thus both the software (e.g., application) and hardware (network / memory) sides may have a first-in, first-out "FIFO" behavior to support asynchronous operation. Thus, the circular buffers 620A-620N may take pointers to address spaces and use various queues and pools to remove, move, or relocate network buffers from within the application and network, or a combination thereof.
[0090] During operation, as an example, each application has a state, which may be the state of queues and pools that indicate where the network buffers are in the queues and pools (e.g., the global software ("s / w") free pool 602A, the global hardware ("H / w") free pool 602B, the processing pools (which do not belong to any other pools and are therefore virtual pools as their reference to the buffers being manipulated by the application), the receive queues 608A-608B, the global transmit queues 604A and 604B, or the global sent queues 606A-606B, or a combination thereof). With the dispatcher thread 640, the state of each of the queues and pools is reflected by only exchanging pointers from the software side (S / W) to the hardware side (H / W). By reflecting the state of the queues and pools, it is possible to notice any changes and any updates. The hardware side now has an identical view to the software library 610 and performs actions that may be offloaded to the hardware. In this way, both the software side (S / W) to the hardware side (H / W) understand which of the network buffers are sent, transferred / received, or free, or any combination thereof, by exchanging pointers from the software side to the hardware side, as well as using pointers to queues and pools. So, for example, the hardware can make decisions, perform actions, take dates from the application, and push the results back to the application with transparency.
[0091] FIG. 7 is a block diagram illustrating an exemplary end-to-end driverless connectivity system 700 for utilizing coherently attached interfaces in a network stack framework in a computing environment. As illustrated, many of the functional blocks may also be considered functional "modules" or "components" in the same descriptive sense as previously described in FIG. 1, FIG. 6A, and FIG. 6B. Also, one or more of the operations and steps of FIG. 1, FIG. 6A, and FIG. 6B may also be included in one or more operations or actions of FIG. 7. Repetition of descriptions of similar elements, components, modules, services, applications, or functions, or combinations thereof, employed in other embodiments described herein are omitted for brevity.
[0092] As shown, a system 700 for utilizing coherently attached interfaces in a network stack framework may include one or more system interconnects 710A and 710B. The system interconnects 710A (with coherence domain 1) and 710B (with coherence domain 2) connect one or more application buffers 710C to network buffer hardware 710A and 710B (e.g., hardware side), which may be enabled via network interface hardware 730 that is also connected to a network switching layer 712. Additionally, a local interface 712 may also be used to connect each network buffer hardware 710A and 710B to the network switching layer 712 (e.g., local network interface). In essence, the network interface hardware 730 allows the applications 702A-702N (e.g., App1, ..., AppN, and the software side), the library 704, and the buffers 710 to be directly connected end-to-end through the network interface hardware 730. Thus, the system 700 allows for coherent attachment of the network interface hardware 730 through the system interconnect 710A-710B, completely bypassing the drivers and the OS. Application buffers are copied directly to the network interface hardware output buffers without any interference from the operating system.
[0093] 8 is a flow chart diagram illustrating an example method 800 for utilizing a coherently attached interface in a network stack framework in a computing environment in which various aspects of the illustrated embodiments may be implemented. The function 800 may be implemented as a method executed as instructions on a machine, where the instructions are contained on at least one computer-readable storage medium or one non-transitory machine-readable storage medium. The function 800 may begin at block 802.
[0094] At block 804, one or more network buffers are coherently attached between one or more applications and the network interface. At block 806, the coherently attached network buffers between one or more applications and the network interface may be shared while bypassing one or more drivers and the operating system using application buffers, circular buffers, and queuing and pooling operations for network communications. The function 800 may end at block 808.
[0095] In one aspect, in conjunction with, or as part of, at least one block of FIG. 8, or both, the operations of method 800 may include one or more of each of the following: Controlling multiple network buffers via a shared library.
[0096] The operations of method 800 may include sharing one or more address spaces of multiple network buffers among one or more applications using a network interface. The multiple network buffers may be used for input / output (I / O) control. Circular buffers may exchange memory pointers with coherently attached devices.
[0097] The operations of method 800 may perform queuing and pooling operations on the network buffers for network buffer transmission, reception, and manipulation. The operations of method 800 may move, allocate, or reallocate one of the network buffers from one or more queues and one or more pools to perform the queuing and pooling operations. The operations of method 800 may establish shared and private memory regions with the network buffers.
[0098] The present invention may be a system, method, and / or computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to perform aspects of the present invention.
[0099] A computer readable storage medium may be a tangible device capable of holding and storing instructions for use by an instruction execution device. A 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 of the foregoing. A non-exhaustive list of more specific examples of computer readable storage media includes portable computer diskettes, hard disks, random access memory (RAM), read only memory (ROM), erasable programmable read only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disk read only memory (CD-ROM), digital versatile disk (DVD), memory sticks, floppy disks, mechanically encoded devices such as punch cards or ridge structures in grooves that allow instructions to be recorded thereon, and any suitable combination of the foregoing. As used herein, a computer-readable storage medium should not be construed as a transitory signal per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (e.g., light pulses passing through a fiber optic cable), or electrical signals transmitted through an electrical wire.
[0100] The computer readable program instructions described herein may be downloaded from the computer readable storage medium to the respective computing / processing device or to an external computer or storage device via a network, such as the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof. The network may include copper transmission cables, optical transmission fiber, wireless transmission, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface in each computing / processing device receives the computer readable program instructions from the network and transfers the computer readable program instructions for storage in the computer readable storage medium in the respective computing / processing device.
[0101] The computer readable program instructions for carrying out the operations of the present invention may be either source or object code written in any combination of one or more programming languages, including assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state setting data, or object oriented programming languages such as Smalltalk®, C++, and traditional procedural programming languages such as the “C” programming language or similar programming languages. The computer readable program instructions may execute completely on the user's computer, partially on the user's computer, as a standalone software package, partially on the user's computer and partially on a remote computer, or completely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (e.g., through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA), may execute computer readable program instructions by individualizing the electronic circuitry with state information of the computer readable program instructions to perform aspects of the invention.
[0102] Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer readable program instructions.
[0103] These computer-readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to manufacture a machine, such that the instructions, executed by the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / operations specified in one or more blocks of the flowcharts and / or block diagrams. These computer-readable program instructions may also be stored in a computer-readable storage medium that may instruct a computer, programmable data processing apparatus, or other device, or combination thereof, to function in a particular manner, such that the computer-readable storage medium in which the instructions are stored includes an article of manufacture including instructions that implement aspects of the functions / operations specified in one or more blocks of the flowcharts and / or block diagrams.
[0104] Computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause the computer, other programmable apparatus, or other device to perform a series of operational steps to produce a computer-implemented process, such that the instructions executing on the computer, other programmable apparatus, or other device implement the functions / operations specified in one or more blocks of the flowcharts and / or block diagrams.
[0105] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowcharts or block diagrams may represent a module, segment, or portion of instructions, including one or more executable instructions for implementing a specified logical function. In some alternative implementations, the functions described in the blocks may occur out of the order described in the figures. For example, two blocks shown in succession may in fact be executed substantially simultaneously, or the blocks may be executed in the reverse order depending on the functionality involved. It should also be noted that each block of the block diagrams and / or flowchart illustrations, and combinations of blocks in the block diagrams and / or flowchart illustrations, may be realized by a dedicated hardware-based system that performs the specified functions or operations, or executes a combination of dedicated hardware and computer instructions.
Claims
1. 1. A method for utilizing an extended network stack framework in a computing environment by a processor, comprising: sharing a plurality of coherently attached network buffers between one or more applications and the network interface, the coherently attached network buffers enabling coherent attachment of the network interface to system memory while bypassing one or more drivers and the operating system using application buffers, circular buffers, and queuing and pooling operations; the application buffer is connected to the network buffer by a system interconnect; the circular buffer is used for the queuing and pooling operations. method.
2. 2. The method of claim 1, further comprising controlling the plurality of network buffers with a shared library.
3. 2. The method of claim 1, further comprising sharing one or more address spaces of the plurality of network buffers among the one or more applications using the network interface, the plurality of network buffers being used for input / output (I / O) control.
4. 2. The method of claim 1, further comprising exchanging memory pointers to the application buffers with coherently attached devices of the network interface using the circular buffer.
5. 2. The method of claim 1, further comprising: performing the queuing and pooling operations on the plurality of network buffers for network buffer transmission, reception, and manipulation.
6. 2. The method of claim 1, wherein the queuing and pooling operations further comprise moving, allocating, or reallocating one of the plurality of network buffers from one or more queues and one or more pools.
7. 2. The method of claim 1, further comprising establishing a shared memory region and a private memory region with the plurality of network buffers.
8. 1. A system utilizing an extended network stack framework, comprising: executable instructions that, when executed, cause the system to share application buffers, circular buffers, and multiple coherently attached network buffers between one or more applications and a network interface, the network buffers enabling coherent attachment of the network interface to system memory while bypassing one or more drivers and the operating system using queuing and pooling operations; the application buffer is connected to the network buffer by a system interconnect; the circular buffer is used for the queuing and pooling operations. A system comprising one or more computers having said executable instructions.
9. 9. The system of claim 8, wherein the executable instructions, when executed, cause the system to control the plurality of network buffers through a shared library.
10. 9. The system of claim 8, wherein the executable instructions, when executed, cause the system to share address space of one or more of the plurality of network buffers among the one or more applications using the network interface, the plurality of network buffers being used for input / output (I / O) control.
11. 9. The system of claim 8, wherein the executable instructions, when executed, cause the system to use the circular buffer to exchange memory pointers to the application buffers with coherently attached devices of the network interface.
12. 9. The system of claim 8, wherein the executable instructions, when executed, cause the system to perform the queuing and pooling operations on the plurality of network buffers for network buffer sending, receiving, and manipulation.
13. 9. The system of claim 8, wherein the executable instructions, when executed, cause the system to move, allocate, or reallocate one of the plurality of network buffers from one or more queues and one or more pools to perform the queuing and pooling operations.
14. 9. The system of claim 8, wherein the executable instructions, when executed, cause the system to establish shared and private memory regions using the plurality of network buffers.
15. A non-transitory computer readable storage medium having stored thereon a computer program for utilizing an extended network stack framework by a processor, the computer program comprising: program instructions for causing the processor to: sharing coherently attached network buffers between one or more applications and the network interface, bypassing one or more drivers and the operating system using application buffers, circular buffers, and queuing and pooling operations, to enable coherent attachment of the network interface to system memory; the application buffer is connected to the network buffer by a system interconnect; the circular buffer is used for the queuing and pooling operations. A computer-readable storage medium that enables the sharing.
16. The computer-readable storage medium of claim 15, wherein the program instructions further cause the processor to control the plurality of network buffers through a shared library.
17. The computer-readable storage medium of claim 15, wherein the program instructions further cause the processor to share one or more address spaces of the plurality of network buffers between the one or more applications using the network interface, the plurality of network buffers being used for input / output (I / O) control.
18. The program instructions further comprising: exchanging memory pointers to the application buffers with the coherently attached devices of the network interface using the circular buffer; performing said queuing and pooling operations on said plurality of network buffers for network buffer transmission, reception, and manipulation; 16. The computer-readable storage medium of claim 15, 19. The program instructions further comprising:
16. The computer-readable storage medium of claim 15, further comprising: moving, allocating, or reallocating one of the plurality of network buffers from one or more queues and one or more pools to perform the queuing and pooling operations.
20. The program instructions further comprising:
16. The computer-readable storage medium of claim 15, further comprising establishing shared and private memory regions using the plurality of network buffers.
Citation Information
Patent Citations
User level stack
JP2007534073A
RDMA (remote direct memory access) data transfer in a virtual environment
US20140245303A1
Method and system for communications-stack offload to a hardware controller
US20150052280A1
Offloading kernel execution to graphics
WO2018080734A1