Giới thiệu về DPDK

Developer(s) 6WIND, Intel
Vendors support 6WIND, ALTEN Calsoft Labs, Advantech, Brocade, BigSwitch Networks, Radisys, Tieto, Wind River, Lanner
Stable release 16.11 / 13 November 2016
Development status Active
Written in C
Operating system FreeBSD, Linux
Type Packet Processing
License BSD
Website dpdk.org

 

DPDK là viết tắt của cụm từ Data Plane Development Kit là một tập thư viện và driver (cho các network interface controller). DPDK ban đầu do Intel phát triển nhằm hỗ trợ việc tăng tốc độ xử lý gói tin trên các dòng chip Intel x86 (từ dòng Atom cho đến dòng Xeon) và hiện nay đã hỗ trợ nhiều dòng chip khác như IBM Power 8, EZchip TILE-Gx và ARM.

DPDK ra đời nhằm giúp các dòng CPU đa nhiệm (general-purpose CPU) tăng tốc độ xử lý các gói tin. Intel đã đưa ra một vài thông số để chứng minh hiệu năng làm việc của DPDK như sau: với chip Xeon E5-2658 v4 thì tốc độ forward các gói tin ở Layer 3 (mỗi gói tin có chiều dài 64 byte) thì tốc độ xử lý có thể đạt đến 233Gbps (1).

Vậy thì DPDK giúp ích được gì cho NFV?

Trong thực tế, các thiết bị mạng phổ biến hiện nay đa phần đều sử dụng các dòng chip riêng của từng hãng (custom ASIC, network processor, các dòng chip đã được tối ưu cho các thiết bị mạng). Những dòng chip này có thể hỗ trợ throughput lên đến hàng trăm gigabit per second.

Tốt quá rồi nhỉ, ỏng ẹo đòi DPDK vớ vẩn làm gì?

Xin thưa, các dòng chip này (chip ASIC) đều là công nghệ riêng của từng hãng (Xít cô thì xài chip xít cô, thuật toán của xít cô, du ni pơ thì xài chip của du ni pơ) => mắc, độc quyền, không linh hoạt, vòng đời phát triển lâu, phụ thuộc quá nhiều vào 1 hãng phát triển.

Chốt lại là dùng CPU thường để xử lý gói tin cho rẻ. Tuy nhiên những loại CPU thông dụng (core i, xeon) thì lại ko xử lý gói tin nhanh như các NPU và ASIC (vi mạch tích hợp dành riêng cho router). Trong thời thế hiện nay, việc phát triển các dòng CPU phổ thông và phần mềm tăng tốc (như DPDK) đang ngày càng nhanh hơn, rẻ hơn.

Việc này giúp các dòng CPU phổ thông có thể đảm trách được việc xử lý các chức năng mạng với hiệu suất tương đương hoặc thậm chí có phần nhanh hơn, linh hoạt hơn so với các dòng NPU, ASIC truyền thống.

Thế nên Intel mới đẻ ra DPDK 😀

Vậy thì DPDK hiện đang được ứng dụng ở đâu?

Ở dưới đây nè, hì hì 😀 (Nguồn: Intel)

CPUs

Hiện rất nhiều loại kiến trúc CPU đang hỗ trợ DPDK: Intel x86_64, ia32, Power 7/8, Tilera (EZChip).

NICs

  • R2.1: Intel, Cisco (VIC), Mellanox, Broadcom (Qlogic), Chelsio
  • R2.2: +NetFPGA,…

OSes

  • Ubuntu
  • Redhat, Fedora

Hypervisors

  • KVM
  • VMware
  • XEN

Chức năng

Về lý thuyết, DPDK có thể tăng tốc độ xử lý gói tin trên CPU nhanh hơn 25x lần so với tốc độ bình thường trên linux (số liệu do Intel đưa ra)

Nguồn: Intel

DPDK có thể:

  • Gởi và nhận gói tin với ít chu kỳ CPU nhất (thường thì ít hơn 80 chu kỳ CPU)
  • Phát triển các thuật toán bắt gói tin nhanh (như tcpdump)
  • Chạy các ứng dụng mạng của bên thứ 3.
  • Tối ưu việc quản lý bộ đệm
  • Chuyển thao tác nhận gói tin từ push sang poll. Giúp giảm số lần interrupt, context switch và buffer copy nhằm tăng hiệu năng

Nhiều chức năng mạng sử dụng DPDK có thể xử lý tới hàng trăm triệu frame một giây, xử lý các gói tin với kích thước 64 bytes dùng card NIC PCIe*.

Tuy nhiên DPDK cũng còn có nhiều khuyết kiểm, người quản trị sẽ phải dành ra kha khá nhân CPU chỉ để xử lý gói tin. Các CPU đắt tiền này sẽ loop liên tục với tốc độ hàng GHz chỉ để chờ gói tin tới (tức là bình thường sẽ không làm gì cả, idle state).

Một số khái niệm, kỹ thuật liên quan (khi nào quởn mình sẽ đăng về những vấn đề này)

  • Huge Pages
  • NUMA
  • Intel DDIO (Data Direct I/O Technology)
  • Pthreads
  • Cache Alignment

Ứng dụng

Hiện đã có hơn 30 ứng dụng được viết trên nền tảng của DPDK (Nguồn: Intel)

Bài viết này chỉ giới thiêu tổng quan về DPDK thôi. Do đây là một vấn đề khá chuyên sâu, nếu bạn nào quan tâm thì có thể tìm hiểu thêm tại đây. Theo link hướng dẫn này của Intel, có khá đầy đủ hướng dẫn để các bạn vọc vạch thử nghiệm: Link

Series Navigation<< [NFV] NFV và SDN[NFV] SR-IOV >>

LEAVE A REPLY

Please enter your comment!
Please enter your name here