รวมอยู่ในชุดคอมไพเลอร์ GCC
นอกจากแบ็กเอนด์สำหรับการสร้างโค้ดไบต์แล้ว GCC ยังมีพอร์ต libgcc สำหรับ eBPF และเครื่องมือสำหรับการสร้างไฟล์ ELF ที่ทำให้สามารถรันโค้ดในเครื่องเสมือน eBPF โดยใช้ตัวโหลดที่เคอร์เนลจัดเตรียมไว้ แพตช์เพื่อรองรับ eBPF ใน GCC ได้รับการจัดเตรียมโดยวิศวกรจาก Oracle ซึ่งมีอยู่แล้ว
โปรแกรมสำหรับ eBPF สามารถกำหนดได้ในชุดย่อยของภาษา C คอมไพล์และโหลดลงในเคอร์เนล ก่อนดำเนินการ ล่าม eBPF จะตรวจสอบรหัสไบต์เพื่อใช้คำสั่งที่ได้รับอนุญาตและกำหนดกฎเกณฑ์บางอย่างในโค้ด (เช่น ไม่มีการวนซ้ำ)
เริ่มแรกใช้เครื่องมือที่ใช้ LLVM เพื่อคอมไพล์ eBPF บน Linux การสนับสนุน eBPF ใน GCC นั้นน่าสนใจเนื่องจากช่วยให้คุณใช้ชุดเครื่องมือเดียวเพื่อสร้างเคอร์เนล Linux และโปรแกรม eBPF โดยไม่ต้องติดตั้งการขึ้นต่อกันเพิ่มเติม
ในรูปแบบของโปรแกรม eBPF คุณสามารถสร้างตัวจัดการการดำเนินการเครือข่าย กรองการรับส่งข้อมูล จัดการแบนด์วิธ ตรวจสอบระบบ สกัดกั้นการเรียกระบบ ควบคุมการเข้าถึง นับความถี่และเวลาของการดำเนินการ และดำเนินการติดตามโดยใช้ kprobes/uprobes/tracepoints
ที่มา: opennet.ru