Linux kernel 5.7 จะเร่งความเร็วการจับคู่รายการที่ซับซ้อนใน NetFilter

ผู้พัฒนาระบบย่อยการกรองและแก้ไข Netfilter สำหรับแพ็กเก็ตเครือข่าย การตีพิมพ์ ชุดแพตช์ที่เร่งการประมวลผลรายการจับคู่ขนาดใหญ่ (ชุด nftables) อย่างมีนัยสำคัญ ซึ่งต้องมีการตรวจสอบการรวมกันของซับเน็ต พอร์ตเครือข่าย โปรโตคอล และที่อยู่ MAC แพทช์ได้รับการยอมรับในสาขาแล้ว nf-ถัดไปซึ่งจะเสนอให้รวมไว้ในเคอร์เนล Linux 5.7 การเร่งความเร็วที่เห็นได้ชัดเจนที่สุดนั้นเกิดขึ้นได้ต้องขอบคุณ มีส่วนร่วม คำแนะนำ AVX2 (ในอนาคตมีการวางแผนที่จะเผยแพร่การเพิ่มประสิทธิภาพที่คล้ายกันตามคำสั่ง NEON สำหรับ ARM)

การเพิ่มประสิทธิภาพรวมอยู่ในโมดูล nft_set_pipapo (PIle Packet POlicies) ซึ่งแก้ปัญหาการจับคู่เนื้อหาของแพ็กเก็ตกับช่วงสถานะฟิลด์ที่กำหนดเองซึ่งใช้ในการกรองกฎ เช่น IP และช่วงพอร์ตเครือข่าย (nft_set_rbtree และ nft_set_hash จัดการการจับคู่ช่วงเวลาและการสะท้อนค่าโดยตรง) เวอร์ชันของ pipapo ที่สร้างเวกเตอร์โดยใช้คำสั่ง AVX256 2 บิตบนระบบที่ใช้โปรเซสเซอร์ AMD Epyc 7402 แสดงประสิทธิภาพเพิ่มขึ้น 420% เมื่อแยกวิเคราะห์ 30 ระเบียน รวมถึงการรวมพอร์ตโปรโตคอล การเพิ่มขึ้นเมื่อเปรียบเทียบการรวมกันของซับเน็ตและหมายเลขพอร์ตเมื่อแยกวิเคราะห์ 1000 ระเบียนคือ 87% สำหรับ IPv4 และ 128% สำหรับ IPv6

Linux kernel 5.7 จะเร่งความเร็วการจับคู่รายการที่ซับซ้อนใน NetFilter

การเพิ่มประสิทธิภาพอีกอย่างหนึ่งซึ่งอนุญาตให้ใช้กลุ่มการจับคู่ 8 บิตแทน 4 บิต ยังแสดงให้เห็นประสิทธิภาพที่เพิ่มขึ้นอย่างมีนัยสำคัญ: 66% เมื่อแยกวิเคราะห์รายการพอร์ตโปรโตคอล 30 รายการ, 43% สำหรับ subnet_IPv4-port และ 61% สำหรับ subnet_IPv6-port โดยรวมแล้ว เมื่อคำนึงถึงการเพิ่มประสิทธิภาพ AVX2 ประสิทธิภาพของ pipapo เพิ่มขึ้นในการทดสอบเหล่านี้ 766%, 168% และ 269% ตามลำดับ คุณลักษณะที่ได้รับสำหรับการเปรียบเทียบที่ซับซ้อนนั้นอยู่ก่อนการตรวจสอบฟิลด์เดียว rbtree (ยกเว้นการทดสอบพอร์ต+โปรโตคอล) แต่จนถึงขณะนี้ยังล้าหลังกว่าการตรวจสอบโดยตรงโดยใช้ แฮช และวางตัวจัดการตาม netdev

Linux kernel 5.7 จะเร่งความเร็วการจับคู่รายการที่ซับซ้อนใน NetFilter

ที่มา: opennet.ru

เพิ่มความคิดเห็น