Cloudflare ได้เผยแพร่ xdpcap ซึ่งเป็นเครื่องมือวิเคราะห์ปริมาณข้อมูลที่ใช้ระบบย่อย XDP

บริษัทคลาวด์แฟลร์ นำเสนอ เปิดโครงการ xdpcapซึ่งมีการพัฒนาตัววิเคราะห์แพ็กเก็ตเครือข่ายที่คล้ายกับ tcpdump ซึ่งสร้างขึ้นบนพื้นฐานของระบบย่อย เอ็กซ์ดีพี (เส้นทางข้อมูล eXpress) รหัสโครงการเขียนด้วยภาษา Go และ จัดจำหน่ายโดย ภายใต้ใบอนุญาต BSD โครงการอีกด้วย เตรียมไว้ ไลบรารีสำหรับการเชื่อมโยงตัวจัดการการรับส่งข้อมูล eBPF จากแอปพลิเคชัน Go

ยูทิลิตี xdpcap เข้ากันได้กับนิพจน์การกรอง tcpdump/libpcap และช่วยให้คุณสามารถประมวลผลการรับส่งข้อมูลจำนวนมากขึ้นอย่างมากบนฮาร์ดแวร์เดียวกัน Xdpcap ยังสามารถใช้สำหรับการดีบักในสภาพแวดล้อมที่ไม่สามารถใช้ tcpdump ปกติได้ เช่น การกรอง การป้องกัน DoS และระบบปรับสมดุลโหลดที่ใช้ระบบย่อย XDP เคอร์เนล Linux ซึ่งประมวลผลแพ็กเก็ตก่อนที่จะประมวลผลโดยสแต็กเครือข่ายเคอร์เนล Linux (tcpdump ไม่เห็นแพ็กเก็ตที่ถูกทิ้งโดยตัวจัดการ XDP)

ประสิทธิภาพสูงเกิดขึ้นได้จากการใช้ระบบย่อย eBPF และ XDP eBPF เป็นล่ามโค้ดไบต์ที่สร้างไว้ในเคอร์เนล Linux ซึ่งช่วยให้คุณสามารถสร้างตัวจัดการแพ็กเก็ตขาเข้า/ขาออกที่มีประสิทธิภาพสูง พร้อมการตัดสินใจเกี่ยวกับการส่งต่อหรือทิ้งแพ็กเก็ตเหล่านั้น การใช้คอมไพลเลอร์ JIT รหัสไบต์ eBPF จะถูกแปลทันทีเป็นคำสั่งเครื่องและดำเนินการด้วยประสิทธิภาพของโค้ดเนทีฟ ระบบย่อย XDP (eXpress Data Path) เสริม eBPF ด้วยความสามารถในการรันโปรแกรม BPF ที่ระดับไดรเวอร์เครือข่าย พร้อมรองรับการเข้าถึงโดยตรงไปยังบัฟเฟอร์แพ็กเก็ต DMA และทำงานในขั้นตอนก่อนที่บัฟเฟอร์ skbuff จะถูกจัดสรรโดยสแตกเครือข่าย

เช่นเดียวกับ tcpdump ยูทิลิตี้ xdpcap จะแปลกฎการกรองการรับส่งข้อมูลระดับสูงเป็นการแสดง BPF แบบคลาสสิก (cBPF) ก่อนโดยใช้ไลบรารี libpcap มาตรฐาน จากนั้นแปลงกฎเหล่านั้นเป็นรูปแบบของรูทีน eBPF โดยใช้คอมไพเลอร์ ซีบีพีเอฟซีโดยใช้การพัฒนา LLVM/Clang ที่เอาต์พุต ข้อมูลการรับส่งข้อมูลจะถูกบันทึกในรูปแบบ pcap มาตรฐาน ซึ่งช่วยให้คุณใช้การถ่ายโอนข้อมูลการรับส่งข้อมูลที่เตรียมไว้ใน xdpcap สำหรับการศึกษาในภายหลังใน tcpdump และเครื่องวิเคราะห์การรับส่งข้อมูลอื่น ๆ ที่มีอยู่ ตัวอย่างเช่น หากต้องการเก็บข้อมูลการรับส่งข้อมูล DNS แทนที่จะใช้คำสั่ง "tcpdump ip และ udp port 53" คุณสามารถเรียกใช้ "xdpcap /path/to/hook capture.pcap 'ip and udp port 53′" จากนั้นใช้การจับภาพ .pcap เช่น ด้วยคำสั่ง "tcpdump -r" หรือใน Wireshark

ที่มา: opennet.ru

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