โอ้นี่หรือคือวินโดวส์ ไมโครซอฟท์รองรับ eBPF ระบบรันโค้ดสำหรับดึงค่าออกจากเคอร์เนลที่ออกแบบมาสำหรับลินุกซ์

by lew
10 May 2021 - 20:27

ไมโครซอฟท์ประกาศเปิดซอร์สโครงการ ebpf-for-windows นำ eBPF ที่เป็นการรันโค้ดภายใน sandbox ในเคอร์เนลเพื่อการดึงค่าต่างๆ ออกจากเคอร์เนลมาใช้บนวินโดวส์

eBPF (Extended Berkeley Packet Filter) เป็นส่วนย่อยของเคอร์เนลลินุกซ์ที่เปิดทางให้ผู้ใช้ส่งโค้ดเข้าไปรันในเคอร์เนลโดยตรง โดยก่อนรันจะมีการตรวจสอบความปลอดภัย และยืนยันว่าโปรแกรมไม่ทำงานนานเกินไป (เช่น ไม่มี loop)

ไมโครซอฟท์อาศัยโครงการโอเพนซอร์ส 2 โครงการคือ uBPF เอนจินรันและคอมไพล์โค้ด BPF สัญญาอนุญาต Apache (โค้ดเคอร์เนลเป็นไลเซนส์ GPL ทำให้ไม่สามารถใช้ร่วมกับโปรแกรมปิดซอร์สได้) และ PREVIAL โครงการตรวจสอบความปลอดภัยของโค้ด BPF ที่รองรับโปรแกรมมี loop แต่ใช้เวลารันไม่นานเกินไป

การรองรับ eBPF อาศัยการสร้างชั้นแปลงโค้ด (shim) เพื่อให้ eBPF ทำงานร่วมกับ API เน็ตเวิร์คของวินโดวส์ได้ ไมโครซอฟท์ระบุว่าเตรียมจะรองรับ API สำหรับ BPF ให้มากที่สุด แต่ก็มี API บางส่วนที่เจาะจงกับลินุกซ์มากๆ ก็ไม่สามารถใช้งานได้

โครงการนี้ยังอยู่ระหว่างการพัฒนาตอนนี้ผู้สนใจสามารถดูโค้ดและนำมาคอมไพล์เองได้ โดยมีแอปพลิเคชั่นตัวอย่างให้ 3 รายการ คือ โปรแกรมลองทำ DNS Flood และตัวอย่างการเขียน eBPF ป้องกัน, โปรแกรมมีบั๊กตัวอย่างที่เปิดพอร์ตใหม่ไปเรื่อยๆ, และตัวอย่างการใช้ eBPF กำหนดโควต้าการใช้พอร์ต

ที่มา - Microsoft Open Source Blog

Blognone Jobs Premium