- [NFV] Phần 1 – Giới thiệu về NFV
- [NFV] Phần 2 – Kiến trúc của NFV
- [NFV] NFV và SDN
- [NFV] DPDK – Data Plane Development Kit
- [NFV] SR-IOV
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