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

FreeBSD

FreeBSD เป็นที่ยอมรับในฐานะระบบสำหรับสร้างอินเทอร์เน็ตและเซิร์ฟเวอร์อินทราเน็ต ให้บริการเครือข่ายที่เชื่อถือได้พอสมควรและการจัดการหน่วยความจำที่มีประสิทธิภาพ

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

ตระกูลซ็อกเก็ต เน็ตลิงค์ เป็นอินเทอร์เฟซเคอร์เนลลินุกซ์ที่ ใช้สำหรับการสื่อสารระหว่างกระบวนการ (IPC) ระหว่างกระบวนการเคอร์เนลและ userspace และระหว่างกระบวนการพื้นที่ผู้ใช้ที่แตกต่างกัน คล้ายกับซ็อกเก็ตโดเมน Unix

คล้ายกับซ็อกเก็ตโดเมน Unix และไม่เหมือนซ็อกเก็ต INET การสื่อสารของ Netlink ไม่สามารถข้ามขอบเขตของโฮสต์ได้ อย่างไรก็ตาม ในขณะที่ซ็อกเก็ตโดเมน Unix ใช้เนมสเปซระบบไฟล์ กระบวนการของ Netlink โดยทั่วไปจะได้รับการแก้ไขโดยตัวระบุกระบวนการ (PID)

Netlink ได้รับการออกแบบและใช้ในการถ่ายโอนข้อมูลเครือข่ายเบ็ดเตล็ด ระหว่างพื้นที่เคอร์เนลและกระบวนการพื้นที่ผู้ใช้ ยูทิลิตีเครือข่าย เช่น ตระกูล iproute2 และยูทิลิตีที่ใช้ในการกำหนดค่าไดรเวอร์ไร้สายที่ใช้ mac80211 ใช้ Netlink เพื่อสื่อสารกับเคอร์เนล Linux จากพื้นที่ผู้ใช้ Netlink มีอินเทอร์เฟซแบบซ็อกเก็ตมาตรฐานสำหรับกระบวนการพื้นที่ผู้ใช้และ API ฝั่งเคอร์เนลสำหรับการใช้งานภายในโดยโมดูลเคอร์เนล เดิมที Netlink ใช้ซ็อกเก็ตตระกูล AF_NETLINK

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

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

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

อินเทอร์เฟซ ที่อยู่ เส้นทาง ไฟร์วอลล์ fibs vnets เป็นต้น ถูกควบคุมผ่านเน็ตลิงค์ เป็นโปรโตคอลแบบอะซิงโครนัสแบบ TLV ที่ให้การสื่อสารแบบ 1-1 และ 1-many การใช้งานปัจจุบันสนับสนุนชุดย่อยของตระกูล NETLINK_ROUTE การใช้งานยังเข้ากันได้กับเฟรมเวิร์กตระกูล NETLINK_GENERIC

คุณสมบัติที่ใช้งานในปัจจุบัน:

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

เป็นมูลค่าการกล่าวขวัญว่าจนถึงตอนนี้ โครงการจำกัดการสนับสนุนการดำเนินงานในตระกูล NETLINK_ROUTE เพื่อจัดการสถานะของระบบย่อยเครือข่ายในเคอร์เนล

สุดท้ายนี้ หากสนใจอยากทราบข้อมูลเพิ่มเติม สามารถเข้าไปดูรายละเอียดได้ที่ ลิงค์ต่อไปนี้


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา