The Fungible DPU Software
A suite of software solutions that
provides an agile out-of-the-box and future-proof experience
for Fungible DPU users.
One of the key innovations in the Fungible DPU
is a datapath engine that can execute data-centric
computations at extremely high speeds.
Data-centric computations include
network, storage, security, virtualization functions
that run on the data path.
This datapath engine is fully programmable
The Fungible DPU datapath engine
comprises hundreds of hardware threads that can execute these data-centric computations
The programmability of the datapath engine
allows the Fungible DPU to take on different distinct personalities
and even multiple personalities at once!
Let's take a look at the first persona,
where the Fungible DPU sits in a PCIe target
such as a storage, AI and analytics server.
The Fungible DPU acts as a root complex to PCIe devices
such as SSDs, GPUs and FPGAs.
In the storage target,
the Fungible DPU takes the place of the NIC and the CPU-based storage controller,
serving as a full-featured high performance storage controller for NVMe SSDs.
The Fungible DPU in fact, enables a pool of disaggregated SSDs
to be presented as a large SSD vended over the network
via NVMe over Fabrics protocols to host servers.
To support this persona,
the Fungible DPU is programmable to support a multitude of functions;
To efficiently support ingress and egress data interchange,
the Fungible DPU supports modern protocols such as NVMe and NVMe over Fabrics.
The Fungible DPU also fully implements the storage stack,
supporting raw and durable volumes,
storage services such as compression,
deduplication, snapshots, cloning
and security services such as encryption.
To complement the Fungible DPU on the storage target,
the Fungible DPU can also be integrated into host servers,
serving as a bare-metal NVMe over Fabrics storage initiator.
The Fungible DPU translates NVMe to NVMe over Fabrics,
making NVMe remote storage appear local to the host servers.
The Fungible DPU also executes data services
such as end-to-end encryption for data security,
and compression for more efficient network bandwidth utilization.
On the host side, the Fungible DPU can take on multiple other personas.
A use case that is surging in popularity is bare metal virtualization or BMV.
BMV allows applications to achieve performance close to that of “bare metal servers”,
making this use case highly attractive for applications that are performance and latency sensitive.
BMV is realized by offloading functions
such as I/O virtualization, networking, storage and security functions into the Fungible DPU.
The Fungible DPU supports data interchange through PCIe SRIOV and I/O virtualization in hardware.
It also offers full programmability of networking, storage and security services.
Firstly, the Fungible DPU offers the flexibility to customize network functions and protocols
for example virtual switching,
routing, network overlays,
load balancing and so on.
Secondly, the Fungible DPU offloads the storage stack from the CPU,
supporting both local and remote storage, while also enabling storage data services
such as compression, encryption and analytics.
Thirdly, the Fungible DPU supports stateful firewall, authentication and cryptographic protocols
such as IPsec and TLS, deep packet inspection and so on.
To support this level of flexibility, the Fungible DPU supports eBPF programming.
eBPF programming provides small pinhole APIs
that allow users to customize specific functionality,
to name a few examples
checking the validity of a packet,
modifying encapsulation of packet headers, customizing compression algorithms.
Next, the Fungible DPU can also serve as a standalone security appliance
or a distributed security node in host servers
In both use cases, the Fungible DPU operates as a security hub that delivers
comprehensive protection for data entering and exiting data centers,
and data moving laterally within the servers in the data centers.
The Fungible DPU can also act as a look-aside accelerator,
offloading the CPU for functions such as
encryption, asymmetric cryptography,
compression for both text and images,
deep packet inspection and filtering.
The Fungible software suite includes drivers for the host OS and accelerator libraries
that will allow the host to offload these functions into the Fungible DPU.
Lastly, while the Fungible DPU is designed for massively scale-out composable disaggregated infrastructure,
the Fungible DPU can also supercharge your hyperconverged infrastructure!
Combining multiple personas, the PCIe ports
can be configured to support both root complex and endpoint.
The Fungible DPU acts as the datapath hub,
bridging the network and the compute and storage resources in the hyperconverged servers.
Under the hood, the programmable datapath in the Fungible DPU
is enabled by an operating system known as FunOS.
FunOS manages how data is processed in the Fungible DPU,
processing parallel streams of data
that traverse seamlessly between the processing cores and hardware accelerators.
Both Fungible DPU and FunOS
are carefully co-designed to process a large number of requests
coming in at line speed.
Each request is part of a flow.
There are tens of thousands of flows in the DPU,
each flexibly constructed to support a mix of data-centric computations,
for example storage, networking, security datapath functions.
Typically a flow is broken down into pipeline stages.
Depending on the function, some stages of the pipeline can be implemented in software
leveraging classical cores
while others can be implemented on hardware accelerator blocks
such as, compression engines, pattern matcher engines and so on.
FunOS makes it easy to mix and match software routines and hardware blocks.
The API, whether to run a function on software and hardware, is the same.
The APIs are also composable, making it possible to break-down a flow into reusable sub-flows.
Further, the APIs are asynchronous, enabling tasks to be easily and quickly organized.
The Fungible DPU is designed to switch from one sub-task to another in tens of nanoseconds
and this performance is scalable to tens of thousands of flows.
Try doing that with a classic OS running on a classic architecture!
With the DPU handling fine, granular operations
and turning them into bulk operations that are friendly to the host CPU,
the host I/O software becomes drastically simplified and more efficient.
The careful hardware-software co-design
has enabled a unique combination of performance and flexibility
resulting in datapaths that are fundamentally more efficient;
achieving higher throughput, lower latency, and consuming less power.
So far, we have described how programmability enables features,
flexibility and performance on the different datapaths.
But, that’s just half the story.
The Fungible DPU is designed to have a control plane that is distinctly separate from the data plane
and is serviced by a set of processors controlled through the management ports.
To manage the control plane, Fungible offers a set of management services known as the Cluster Services.
The Cluster Services offer an agile, scale-out single pane-of-glass management console,
responsible for managing:
storage services such as adding and removing nodes,
setting volume attributes and Quality of Service,
enabling features such as snapshots and clones.
Network services such as network and port configuration,
LACP configuration and IP address management.
System services such as telemetry and health monitoring services.
Security services such as authentication, authorization and auditing.
Support services such as call-home and remote assist.
The Cluster Services are accessed through a set of REST APIs
that allows these services to be integrated into standard orchestration systems
such as Kubernetes CSI plugins.
The power of the Fungible DPU is clearly unleashed through its programmability.
The Fungible DPU offers flexibility comparable to general purpose CPUs,
processing all forms of data : networking, storage, security, analytics and more.
Yet, it achieves performance that is comparable to ASICs.
That makes the Fungible DPU
truly unique and worthy of being the third socket in data centers alongside the CPU and the GPU.