Software product engineering
Low-level programming
Customizing your software and hardware to your precise needs
Customizing your software and hardware to your precise needs
DPDK (Data Plane Development Kit) is a set of libraries for implementing user space drivers for NICs (Network Interface Controllers). It is an open-source project developed under the umbrella of the Linux Foundation.
DPDK allows you to offload TCP packet processing from the operating system kernel to processes running in user space. This leads to higher computing efficiency and higher packet throughput than you would have using only the interrupt-driven processing provided in the kernel.
SmartNICs allow you to perform advanced operations on packets. These include tunnel termination, applying sophisticated flow classification and filtering mechanisms on packets, traffic metering and shaping.
These functions have typically been performed by a CPU, but smartNIC allows you to offload them, increasing your network’s performance as the server can then focus on its primary tasks.
Common use cases for smartNICs include hyperscale cloud providers (like Google Cloud Platform, Amazon Web Services, Microsoft Azure), which use smartNICs to optimize data center performance, and telcos, which employ smartNICs to accelerate their VNF applications.
P4 is a domain-specific programming language that allows a programmer to arbitrarily decide how the packets traversing programmable dataplane blocks are processed.
Possible P4 use cases for datacenter networks, enterprise networks and telco networks include:
A Field Programmable Gate Array (FPGA) is a programmable integrated circuit that can be programmed for a specific use after it has been manufactured.
FPGAs are more flexible than standard ASIC-s (Application Specific Integrated Circuits) such as CPUs and GPUs, which are not customizable.
FPGAs are used in many markets: data centers, medical devices, image and video processing, high-performance computing and data storage, to name a few.
Our FPGA-related services include: