FreeBSD เพิ่มการรองรับโปรโตคอล Netlink ที่ใช้ในเคอร์เนล Linux

ฐานโค้ด FreeBSD ใช้การนำโปรโตคอลการสื่อสาร Netlink (RFC 3549) มาใช้ ซึ่งใช้ใน Linux เพื่อจัดระเบียบการโต้ตอบของเคอร์เนลกับกระบวนการในพื้นที่ผู้ใช้ โปรเจ็กต์นี้จำกัดเฉพาะการสนับสนุนตระกูล NETLINK_ROUTE สำหรับการจัดการสถานะของระบบย่อยเครือข่ายในเคอร์เนล

ในรูปแบบปัจจุบัน การรองรับ Netlink ช่วยให้ FreeBSD ใช้ยูทิลิตี้ Linux ip จากแพ็คเกจ iproute2 เพื่อจัดการอินเทอร์เฟซเครือข่าย ตั้งค่าที่อยู่ IP กำหนดค่าการกำหนดเส้นทาง และจัดการอ็อบเจ็กต์ Nexthop ที่เก็บข้อมูลสถานะที่ใช้ในการส่งต่อแพ็กเก็ตไปยังปลายทางที่ต้องการ หลังจากการเปลี่ยนแปลงไฟล์ส่วนหัวเล็กน้อย คุณสามารถใช้ Netlink ในแพ็คเกจการกำหนดเส้นทาง Bird ได้

การใช้งาน Netlink สำหรับ FreeBSD ได้รับการออกแบบให้เป็นโมดูลเคอร์เนลที่โหลดได้ ซึ่งหากเป็นไปได้จะไม่ส่งผลกระทบต่อระบบย่อยเคอร์เนลอื่น ๆ และสร้างคิวงานแยกต่างหาก (tasqueues) สำหรับการประมวลผลข้อความที่มาถึงผ่านโปรโตคอลและดำเนินการในโหมดอะซิงโครนัส เหตุผลในการย้าย Netlink คือการขาดกลไกมาตรฐานสำหรับการโต้ตอบกับระบบย่อยเคอร์เนล ซึ่งนำไปสู่ระบบย่อยและไดรเวอร์ต่างๆ ที่สร้างโปรโตคอลของตนเอง

Netlink นำเสนอเลเยอร์การสื่อสารแบบครบวงจรและรูปแบบข้อความที่ขยายได้ซึ่งสามารถทำหน้าที่เป็นตัวกลางที่จะรวมข้อมูลที่แตกต่างกันจากแหล่งต่างๆ ให้เป็นคำขอเดียวโดยอัตโนมัติ ตัวอย่างเช่น ระบบย่อย FreeBSD เช่น devd, Jail และ pfilctl ซึ่งปัจจุบันใช้การเรียก ioctl ของตัวเอง สามารถถ่ายโอนไปยัง Netlink ได้ ซึ่งจะช่วยลดความยุ่งยากในการสร้างแอปพลิเคชันสำหรับการทำงานกับระบบย่อยเหล่านี้ได้อย่างมาก นอกจากนี้ การใช้ Netlink เพื่อแก้ไขออบเจ็กต์และกลุ่มเน็กซ์ฮอปใน routing stack จะช่วยให้สามารถโต้ตอบกับกระบวนการกำหนดเส้นทางพื้นที่ผู้ใช้ได้อย่างมีประสิทธิภาพมากขึ้น

คุณลักษณะที่นำมาใช้ในปัจจุบัน:

  • การรับข้อมูลเกี่ยวกับเส้นทาง วัตถุ และกลุ่มเน็กซ์ฮอปส์ อินเทอร์เฟซเครือข่าย ที่อยู่ และโฮสต์ใกล้เคียง (arp/ndp)
  • การสร้างการแจ้งเตือนเกี่ยวกับลักษณะที่ปรากฏและการขาดการเชื่อมต่อของอินเทอร์เฟซเครือข่าย การตั้งค่าและการลบที่อยู่ การเพิ่มและการลบเส้นทาง
  • การเพิ่มและการลบเส้นทาง วัตถุ และกลุ่มเน็กซ์ฮอป เกตเวย์ อินเทอร์เฟซเครือข่าย
  • บูรณาการกับอินเทอร์เฟซ Rtsock สำหรับการจัดการตารางเส้นทาง

ที่มา: opennet.ru

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