### :school: TEEP 2024_RT LAB_ORAN DPDK
#### :book: Technology Background
:::success
List the essential information of this chapter.
1. DPDK Fundamental
:::
---
### 1. What Is DPDK ?
It's a freely available software project offering a collection of tools and drivers for quick packet handling. Its aim is to aid developers in crafting high-performance network apps compatible with diverse hardware like x86, ARM, and PowerPC. By circumventing the operating system kernel, it grants developers direct hardware access. This enables applications to achieve significantly reduced latency and increased throughput compared to conventional kernel-based approaches.
### 2. DPDK Analogy
Imagine you're in a very busy fast food restaurant. Inside the kitchen, there are two different ways to get your order.
* The first method is the traditional way, where your order has to pass through several stages: first, your order is recorded by a waiter, then relayed to the kitchen, where the chef will cook it, and finally served to your table. Each of these stages requires additional time and interaction, which can make the process slow especially when the restaurant is busy.
* Now, imagine a second method called DPDK (Data Plane Development Kit). It's like having direct access to the kitchen. Instead of your order having to pass through waiters and chefs, you can directly communicate with the chef and request your order directly. This eliminates extra steps and saves time. As a result, your order can be served faster and without significant delay.
So, DPDK allows network applications to handle data packets more quickly and efficiently, as it bypasses the kernel processes that would normally slow them down, similar to the way direct access to the kitchen in the restaurant analogy.

### 3. How DPDK Works ?

DPDK (Data Plane Development Kit) works in a fairly unique way in processing data packets quickly and efficiently. Here are the general steps on how DPDK works:
* Bypassing the Kernel: DPDK avoids the conventional process of involving the operating system (OS) kernel in data packet processing. Instead, DPDK allows applications to interact directly with the network hardware, bypassing the OS kernel. This eliminates the overhead associated with processing that occurs within the kernel, such as CPU scheduling and inter-process switching.
* User-space Drivers: DPDK provides software drivers that run in user-space, rather than in the kernel. This allows applications to access hardware directly from user space, without the need to call into the OS kernel.
* Polling Mode: One of the key features of DPDK is the polling mode, where the application continuously checks and processes incoming and outgoing data packets from the network hardware. This is in contrast to interrupt-dependent methods, where the kernel notifies the application of events occurring on the hardware. By polling, DPDK can reduce the overhead associated with handling interrupts.
* Optimized Data Structures and Algorithms: DPDK provides optimized implementation of data structures and algorithms used in data packet processing. This helps in improving overall performance, by minimizing latency and maximizing throughput.
By using DPDK, network applications can achieve very high performance, with low latency and high throughput, as it eliminates bottlenecks that usually occur when using conventional data packet processing methods involving the OS kernel.
### 4. Key Features and Benefit
* High-performance packet processing: DPDK bypasses the kernel for packet I/O, minimizing context switches and interruptions. This translates to ultra-low latency and high throughput, ideal for real-time applications.
* Direct hardware access: Applications can directly access network interface controllers (NICs) and memory, bypassing the operating system’s abstraction layer. This provides fine-grained control over packet processing and optimizes resources utilization.
* Multi-core support: DPDK leverages multi-core processors efficiently, assigning tasks to individual cores for parallel processing. This further boost performance and scalability.
* Rich set of libraries: DPDK offers a comprehensive library of functions for packet manipulation, memory management, cryptography, and other networking tasks. This simplifies development and reduces code redundancy.
* Reduced latency: Applications can react to data packets in microseconds, making them ideal for real-time and low-latency scenarios.
* Increased throughput: DPDK enables applications to process millions of packets per second, significantly improving network performance.
* Improved resource utilization: By directly accessing hardware, DPDK reduces CPU overhead and frees up resources for other tasks.
* Scalability: DPDK applications can easily scale to handle increasing traffic demands by leveraging multiple cores and processors.
### 5. DPDK on Telco Industries
The implementation of DPDK in the telecommunications (telco) industry has several major benefits that make it highly relevant and commonly used:
* High Performance Packet Processing: DPDK allows telecom operators to process data packets with low latency and high throughput. This is important in telecom applications such as 5G networks, where speed and responsiveness are crucial.
* Network Function Virtualization (NFV): NFV is a concept where traditional network functions, such as firewalls, routers, and load balancers, are implemented as software running on top of a centralized hardware infrastructure. DPDK can be used to improve NFV performance by accelerating data packet processing in virtual machines (VMs) or containers.
* Software Defined Networking (SDN): SDN separates network control (control plane) from physical hardware (data plane), enabling more dynamic and flexible network control. DPDK can be used to accelerate data plane operations in an SDN environment, enabling fast and efficient traffic switching.
* Packet Inspection and Filtering: In the telecommunications industry, it is often necessary to inspect and filter data packets for purposes such as security, traffic management, and network monitoring. DPDK enables fast and efficient implementation of solutions for such tasks.
* Broad Hardware Support: DPDK is designed to support a wide range of hardware platforms, including x86, ARM, and PowerPC servers. This allows telecom operators to use the hardware that best suits their needs without sacrificing performance.
### 6. Open RAN DPDK (ORAN DPDK)
