Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Cloud Native Data Plane (CNDP) is a collection of user space libraries to accelerate packet processing for cloud applications.

License

NotificationsYou must be signed in to change notification settings

KeithWiles/cndp

 
 

Repository files navigation

Smoke TestcppcheckLicense

Overview

Cloud Native Data Plane (CNDP) is a collection of userspace libraries foraccelerating packet processing for cloud applications. It aims to provide betterperformance than that of standard network socket interfaces by taking advantageof platform technologies such as Intel(R) AVX-512, Intel(R) DSA, CLDEMOTE, etc.The I/O layer is primarily built on AF_XDP, an interface that delivers packetsstraight to userspace, bypassing the kernel networking stack. CNDP provides waysto expose metrics and telemetry with examples to deploy network services onKubernetes.

CNDP Consumers

  • Cloud Network Function (CNF) and Cloud Application developers: Those whocreate applications based on CNDP. CNDP hides the low-level I/O, allowing thedeveloper to focus on their application.

  • CNF and Cloud Application consumers: Those who consume the applicationsdeveloped by the CNF developer. CNDP showcases deployment models for theirapplications using Kubernetes.

CNDP Characteristics

CNDP follows a set of principles:

  • Functionality: Provide a framework for cloud native developers that offersfull control of their application.

  • Usability: Simplify cloud native application development to enable thedeveloper to create applications by providing APIs that abstract thecomplexities of the underlying system while still taking advantage ofacceleration features when available.

  • Interoperability: The CNDP framework is built primarily on top of AF_XDP.Other interfaces, such as memif, are also supported, however building onAF_XDP ensures it is possible to move an application across environmentswherever AF_XDP is supported.

  • Portability/stability: CNDP provides ABI stability and a common API toaccess network interfaces.

  • Performance: Take advantage of platform technologies to accelerate packetprocessing or fall-back to software when acceleration is unavailable.

  • Observability: Provide observability into the performance and operation ofthe application.

  • Security: Security for deployment in a cloud environment is critical.

CNDP background

CNDP was created to enable cloud native developers to use AF_XDP and otherinterfaces in a simple way while providing better performance as compared tostandard Linux networking interfaces.

CNDP does not replace DPDK (Data Plane Development Kit), which provides thehighest performance for packet processing. DPDK implements user space drivers,bypassing the kernel drivers. This approach of rewriting drivers is one reasonDPDK achieves the highest performance for packet processing. DPDK alsoimplements a framework to initialize and setup platform resources i.e. scanningPCI bus for devices, allocating memory via hugepages, setting upPrimary/Secondary process support, etc.

In contrast to DPDK, CNDP does not have custom drivers. Instead it expects thekernel drivers to implement AF_XDP, preferably in zero-copy mode. Since thereare no PCIe drivers, there's no PCI bus scanning, and does not requirephysically contiguous and pinned memory. This simplifies deployment for cloudnative applications while gaining the performance benefits provided by AF_XDP.

Development

In order to make contributions to CNDP, you need to have the following installed:

You can install pre-commit by running the following command:

pip install pre-commit

After installing pre-commit, you need to install the pre-commit hooks byrunning the following command:

pre-commit install

To run pre-commit manually

pre-commit run --all-files

CNDP notable directories

The following shows a subset of the directory structure.

.├── ansible# Ansible playbook to install in a system(s)├── containerization# Container configuration and setup scripts for Docker/K8s├── doc# Documentation APIs, guides, getting started, ...├── examples# Example applications to understand how to use CNDP features├── lang# Language bindings and examples│   ├── go# Go Language bindings to CNDP and tools (WIP)│   └── rs# Rust Language bindings for CNDP/Wireguard (WIP)├── lib# Set of libraries for building CNDP applications│   ├── cnet# Userspace network stack│   ├── common# Libraries used by core and applications libraries│   ├── core# Core libraries for CNDP│   ├── include# Common headers for CNDP and applications│   └── usr# User set of libraries that are optional for developer├──test# Unit test framework│   ├── common# Common test code│   ├── fuzz# Fuzzing (WIP)│   └── testcne# Functional unit testing application├── tools# Tools for building CNDP│   └── vscode# Configuration files for vscode└── usrtools# Tools for users   ├── cnectl# Remote CLI for CNDP applications   └── txgen# Traffic Generator using AF_XDP and CNDP

About

Cloud Native Data Plane (CNDP) is a collection of user space libraries to accelerate packet processing for cloud applications.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C89.3%
  • Go5.7%
  • Rust2.5%
  • Meson1.3%
  • Shell0.7%
  • Python0.2%
  • Other0.3%

[8]ページ先頭

©2009-2025 Movatter.jp