
XDP (atau Categorical Information Path) adalah utilitas jaringan yang tersedia di kernel Linux. XDP digunakan di banyak perusahaan populer untuk memecahkan beberapa masalah jaringan serius yang mereka hadapi saat menangani jutaan permintaan per detik. Ini adalah program open supply berlisensi MIT yang digabungkan dalam kernel Linux dari versi 4.8.
XDP adalah prosesor paket knowledge jaringan yang berkinerja dan dapat diprogram. Itu muncul untuk mengurangi beberapa masalah sisi server yang serius seperti serangan DDoS (Distributed Denial-of-Service) atau sebagai penyeimbang beban.
Table of Contents
Butuh XDP
Kebutuhan akan jalur knowledge jaringan yang berkinerja baik selalu menjadi fitur yang diperlukan untuk server Linux. Tetapi kemampuan program dari jalur knowledge tersebut juga harus ada sehingga pengembang membuat sesuatu yang dapat digunakan darinya. Meskipun XDP memiliki jalur pembelajaran yang cukup curam, karena perkembangan banyak alat dan kerangka kerja baru-baru ini, menulis kode XDP cukup mudah dilakukan saat ini.
Keuntungan besar XDP adalah kecepatannya. Fungsi utama XDP adalah pengembang dapat membangun fungsionalitas baru untuk memfilter paket tanpa memodifikasi kernel itu sendiri.
Ada beberapa skenario ketika beberapa paket tidak perlu melakukan perjalanan melalui seluruh tumpukan jaringan untuk memutuskan apakah akan meneruskan atau menjatuhkan paket. Ini harus dilakukan pada lapisan pertama dari tumpukan jaringan dengan menempatkan beberapa filter. Filter ini harus diprogram sedemikian rupa sehingga mereka dapat dengan mudah mengenali paket berbahaya dan meletakkannya tepat di awal tumpukan. Ini dapat menghemat banyak daya pemrosesan dan waktu.
Dengan XDP, penyaringan ini dimungkinkan tepat di depan tumpukan jaringan.
Sekarang menggunakan XDP, pengembang dapat memfilter paket apa pun yang mungkin dikirim oleh peretas mana pun untuk melakukan serangan DDoS. Ini dapat mengurangi banyak overhead di tumpukan jaringan kernel regular. Fitur ini baru-baru ini ditunjukkan oleh Cloudflare dalam demonstrasi perlindungan DDoS mereka.

Beberapa fitur penting dari XDP adalah sebagai berikut:
- Tidak memerlukan perangkat keras khusus: XDP dapat menjalankan perangkat keras apa pun yang Anda gunakan. Ya, kecepatan mungkin terganggu jika Anda tidak memiliki perangkat atau driver yang dioptimalkan, tetapi untuk tujuan pengujian, Anda tidak memerlukan perangkat keras khusus.
- Itu tidak memerlukan bypass kernel: XDP berjalan sebelum paket mengenai tumpukan jaringan kernel. Fungsi panggilan balik diaktifkan ketika sebuah paket diterima dan XDP memprosesnya secepat mungkin.
- Itu tidak menggantikan tumpukan TCP/IP: XDP hadir di tingkat terendah dari tumpukan jaringan. Ketika melewati paket, maka paket tersebut memasuki tumpukan jaringan kernel regular yang mencakup tumpukan TCP/IP.
- Ia bekerja bersama dengan TCP/IP dengan semua fitur BPF (Berkeley Packet Filter): XDP tidak menggantikan apa pun. Ia bahkan menggunakan eBPF untuk memproses paket dan memberi pengembang waktu yang lebih mudah untuk menulis kode.
Mengapa XDP Sangat Cepat
XDP adalah jalur knowledge jaringan kinerja tinggi yang dapat diprogram berbasis eBPF di kernel Linux. Peningkatan kinerja XDP adalah karena pemrosesan paket naked steel pada degree terendah dari tumpukan perangkat lunak. Ini berarti bahwa paket knowledge yang berasal dari jaringan mengenai XDP terlebih dahulu sebelum proses kernel lainnya.
Oleh karena itu, para insinyur dapat memprogram XDP untuk mengoptimalkannya untuk berbagai kasus penggunaan. Dari perlindungan DDoS hingga penyeimbang beban.
XDP dimuat langsung di tumpukan jaringan. Ketika sebuah paket diterima oleh tumpukan jaringan, ia mendapat panggilan balik dan memproses paket-paket itu secepat mungkin. XDP dapat menjatuhkan 26 juta paket per detik per inti dalam perangkat keras komoditas.
Alasan utama mengapa XDP sangat cepat adalah, pengguna diizinkan untuk langsung membaca atau membuat perubahan pada knowledge paket jaringan dan mengambil keputusan tentang cara menangani paket pada tahap sebelumnya. Ini membutuhkan overhead proses yang sangat sedikit dan menghasilkan kecepatan yang lebih baik.
Hubungkan Tumpukan Jaringan Dengan XDP
Anda dapat terhubung ke jaringan dengan XDP dengan berbagai cara, tetapi saya menyebutkan beberapa metode populer di sini.
- XDP Umum: Dalam proses ini, XDP dimuat di kernel, tetapi hanya mendapat sedikit manfaat kinerja. Ini adalah cara mudah untuk menjalankan program XDP tanpa dukungan perangkat keras.
- XDP asli: XDP asli dimuat oleh driver jaringan itu sendiri. Ini membutuhkan dukungan dari driver kartu jaringan.
Jenis Operasi yang Dilakukan XDP
Beberapa operasi yang dapat dilakukan XDP setelah sebuah paket diterima oleh antarmuka jaringan adalah:
- XDP_DROP: Ini menjatuhkan paket dan tidak memprosesnya. Menggunakan program eBPF untuk menganalisis pola lalu lintas dan dapat menjatuhkan paket secara real-time.
- XDP_PASS: Ini meneruskan paket ke tumpukan jaringan untuk diproses lebih lanjut. Itu dapat mengubah isi paket sebelum itu terjadi.
- XDP_ABORTED: Ini menjatuhkan paket knowledge jaringan, meninggalkan pengecualian tracepoint.
- XDP_TX: meneruskan paket ke antarmuka jaringan yang sama yang menerimanya. Paket dapat dimodifikasi pada yang tidak dimodifikasi.
- XDP_REDIRECT: Redirect paket ke NIC lain (pengontrol antarmuka jaringan).

XDP dan eBPF
eBPF adalah versi lanjutan dari Berkeley Packet Filter. Ini seperti mesin digital abstrak yang berjalan di dalam kernel Linux. eBPF digunakan untuk menjalankan program yang ditentukan pengguna di dalam lingkungan kotak pasir di kernel Linux. Umumnya, ini digunakan untuk menjalankan alat jaringan dan pemantauan di server Linux untuk memastikan kinerja yang optimum.
XDP adalah kerangka kerja yang digunakan untuk menulis pemrosesan paket berkecepatan sangat tinggi dalam aplikasi BPF. Untuk membuatnya lebih cepat, XDP menjalankan BPF segera setelah paket diterima oleh tumpukan jaringan.
XDP memiliki kurva belajar yang sangat curam. Oleh karena itu developer membuat instruments dan framework untuk memudahkan dalam memprogram menggunakan eBPF. Itu membuatnya sangat mudah untuk menulis kode untuk memproses pemrosesan jaringan frekuensi sangat tinggi menggunakan XDP dan eBPF. Keuntungan inti dari XDP adalah Anda tidak perlu memodifikasi kernel, yang merupakan masalah besar bagi para insinyur.
Tapi seperti yang orang katakan, kekuatan besar datang dengan tanggung jawab besar. Karena XDP menjalankan eBPF sedini mungkin sebelum paket diurai oleh kernel itu sendiri, program eBPF harus melakukan semua penguraian itu sendiri dan tidak dapat mengandalkan kernel untuk melakukan apa pun untuk mereka.
Sebagai seorang programmer, sebagian besar waktu Anda bekerja dengan terminal. Ini adalah panduan untuk mendekorasi immediate terminal Anda. Periksalah.
Kasus Penggunaan Umum XDP dan eBPF
- serangan DDoS: Kasus penggunaan utama XDP adalah perlindungan DDoS (Distributed Denial of Service). Selama serangan DDoS, penyerang mencoba menggunakan sumber daya server sebanyak mungkin dengan tidak meninggalkan proses apa pun untuk pengguna akhir. Menggunakan XDP sebagai lapisan yang sangat cepat dari tumpukan jaringan, tidak ada biaya pemrosesan yang terkait untuk menjatuhkan paket knowledge jaringan. Setelah pemfilteran XDP, paket melewati semua metode pemfilteran lain yang disediakan oleh kernel Linux.
- Penyeimbang beban: XDP juga digunakan sebagai penyeimbang beban untuk menangani sejumlah besar lalu lintas ke server. Termasuk Fb, banyak perusahaan teknologi raksasa yang menggunakan teknologi ini. Sebelumnya, para insinyur menggunakan server khusus sebagai penyeimbang beban. Yang sangat sulit untuk dikelola dan harus berkinerja sangat baik untuk melayani jutaan pelanggan. Tapi bayangkan menggunakan lapisan XDP sebagai penyeimbang beban tanpa server pusat, sebagai hasilnya, tidak ada satu pun titik kegagalan.
- Firewall: XDP dengan eBPF dapat digunakan untuk menulis berbagai aturan firewall untuk melindungi sistem dengan overhead yang sangat minimal.
Pertanyaan yang Sering Diajukan
Apa itu BCC eBPF?
BCC dibangun di atas eBPF. Ini adalah toolkit atau kerangka kerja untuk pelacakan kernel dan program manipulasi yang datang dengan antarmuka baris perintah yang sangat berguna. BCC membantu menulis instruksi Kernal dalam C. Ini juga mencakup pembungkus di sekitar LLVM.
Apa itu libBPF?
LibBPF adalah seperangkat alat alternatif untuk membuat aplikasi BPF. Itu ditulis dalam bahasa pemrograman C.
Apakah artikel ini bermanfaat?
Berlangganan e-newsletter kami!
Tutorial terbaru kami dikirim langsung ke kotak masuk Anda