ทำไม * BSD ใช้ชื่อเฉพาะไดรเวอร์สำหรับอินเทอร์เฟซเครือข่าย มันหมายถึงข้อ จำกัด ?


13

ฉันสังเกตว่าขึ้นอยู่กับยี่ห้อของการ์ดเครือข่ายชื่ออินเตอร์เฟสนั้นต่างกัน

  • ทำไม * BSD ใช้ชื่อเฉพาะไดรเวอร์สำหรับอินเทอร์เฟซเครือข่าย
  • มันหมายความว่าไม่มีเลเยอร์นามธรรมที่อธิบาย "อินเทอร์เฟซเครือข่ายทั่วไป" ในเคอร์เนลดังนั้นแต่ละไดรเวอร์จะได้รับการจัดการภายในผ่าน API ของตัวเอง
  • (อย่างไร) มีผลกับระบบย่อยเช่นการรวมลิงก์การสร้างปริมาณข้อมูล QoS ( ALTQ ) การกรองและอื่น ๆ หรือไม่

ดูเหมือนว่าภายใต้ pfSense ฉันไม่สามารถใช้ ALTQ กับอินเตอร์เฟสเสมือนการรวมลิงก์ (LAG)

นี่เป็นข้อ จำกัด ภายใน BSD เนื่องจากไม่มีเลเยอร์นามธรรมที่เหมาะสมหรือไม่

คำตอบ:


7

ทำไม * BSD ใช้ชื่อเฉพาะไดรเวอร์สำหรับอินเทอร์เฟซเครือข่าย

มันเป็นเพียงทางเลือกทางประวัติศาสตร์ ตัวอักษรในชื่อนั้นมาจากไดรเวอร์ที่พูดกับการ์ดดังนั้นมันจะเหมือนกันสำหรับสองอินเตอร์เฟสที่แยกจากกันหากพวกเขาใช้ไดรเวอร์เดียวกัน

มันมีประโยชน์อย่างหนึ่งอย่างหนึ่ง: ใน BSD ไดรเวอร์เครือข่ายมีหน้าคู่มือของตนเองในส่วนที่ 4 ดังนั้นdc(4)จะบอกคุณเกี่ยวกับไดรเวอร์ DEC 21143 ซึ่งจะควบคุมdc0อะแดปเตอร์เครือข่าย

คุณเห็นสิ่งนี้ในส่วนอื่น ๆ ของ BSD Unix เช่นกันเช่นฮาร์ดดิสก์

นี่เป็นข้อ จำกัด ภายใน BSD เนื่องจากไม่มีเลเยอร์นามธรรมที่เหมาะสมหรือไม่

เลขที่

สำหรับสิ่งที่คุ้มค่า, ลินุกซ์จะมุ่งหน้าลงเส้นทางที่คล้ายกัน วันของกฎการตั้งชื่ออย่างง่ายสำหรับอะแดปเตอร์อีเธอร์เน็ตกำลังหายไปเนื่องจากเครือข่ายมีความซับซ้อนมากขึ้น


ขอบคุณ. คุณรู้หรือไม่ว่าทำไมฉันถึงไม่สามารถใช้ ALTQ ด้วยการรวมลิงค์ได้?
Totor

กรุณาหนึ่งคำถามต่อคำถาม ลองเน้นสิ่งนี้ในการตั้งชื่ออุปกรณ์ BSD
Warren Young

ฉันจะไม่เรียกอุปกรณ์เครือข่าย udev ใหม่ตั้งชื่อเส้นทางที่คล้ายกับ BSD เท่าที่ฉันรู้วิธีการเริ่มต้นคือการใช้เส้นทางรถเมล์บางชนิดเพื่อระบุอุปกรณ์ไม่ใช่ชื่อไดรเวอร์ด้วยรูปแบบการกำหนดหมายเลขแบบสุ่ม
Pavel Šimerda

@ PavelŠimerda: ฉันเพิ่งหมายความว่าระบบ Linux ที่ใช้รูปแบบนี้ไม่ได้ใช้ผ่านeth0 ethINFINITYคุณจะไม่สามารถพิมพ์ifconfig eth0และคาดหวังได้อีกต่อไปว่าคุณจะมองไปที่อีเทอร์เน็ตอินเตอร์เฟสตัวแรกซึ่งทำให้ระบบลีนุกซ์นั้นทำหน้าที่คล้ายกันจากจุดยืนอินเทอร์เฟซผู้ใช้กับ FreeBSD ซึ่งคุณต้องการความรู้เบื้องต้นเกี่ยวกับชื่อของ อินเตอร์เฟสบนระบบหรือคุณต้องการรับรายการด้วยifconfigคำสั่งที่ไม่มีเงื่อนไขก่อน กลไกเคอร์เนลพื้นฐานนั้นแตกต่างอย่างสิ้นเชิง
Warren Young

5

ตัวเลือกในการใช้ชื่อทั่วไปหรือชื่อเฉพาะไดรเวอร์ไม่มีส่วนเกี่ยวข้องกับข้อ จำกัด ของไดรเวอร์

ส่วนใหญ่จะเป็นทางเลือกเครื่องสำอาง การใช้ชื่อสามัญมีข้อได้เปรียบในการซ่อนข้อมูลที่เกือบจะไม่เกี่ยวข้องเสมอ - ส่วนต่อประสานเครือข่ายเป็นส่วนต่อประสานเครือข่ายไม่ว่าใครจะทำ ความสามารถของอุปกรณ์ขึ้นอยู่กับรุ่นที่แน่นอนและการกำหนดค่าไม่ใช่อุปกรณ์ที่ใช้งานอยู่ ข้อได้เปรียบของชื่อเฉพาะสำหรับผู้ดูแลระบบ: หากข้อความระบุข้อผิดพลาดeth0(ตกลงดังนั้นที่หนึ่งคือ 0 และที่หนึ่งคือ 1) มันมีข้อมูลน้อยกว่าถ้ากล่าวถึงwlan0(ah นั่นคืออินเทอร์เฟซ wifi) หรือbcm0(ah นั่นคือ อินเทอร์เฟซ Broadcom)

บน FreeBSD การตั้งค่าเครือข่ายทำงานโดยการเรียกioctlใช้ซ็อกเก็ต Unix IOCTL นี้จะถูกประมวลผลโดยรหัสเครือข่ายทั่วไปและหยดลงไปที่ไดรเวอร์ที่เกี่ยวข้องถ้า IOCTL เรียกสิ่งนี้

ฉันไม่ทราบว่า ALTQ โต้ตอบกับการรวมลิงก์อย่างไร ให้แน่ใจว่าจะใช้รุ่นล่าสุดของ FreeBSD เช่นนี้มาใช้ในการทำงานไม่ได้ แต่ตอนนี้ไม่ได้


3

ทำให้ง่ายต่อการบอกการ์ดเครือข่ายที่คุณกำลังคุยด้วย

หากคุณมี Intel (igb0) และ Realtek (rl0) คุณสามารถบอกได้ทันที

นอกจากนี้ไดรเวอร์ต่าง ๆ สนับสนุนคุณสมบัติต่าง ๆ ไดรเวอร์บางตัวรองรับpollingและบางรุ่นไม่รองรับ การสนับสนุนบางส่วนLRO, TSOและRSSฯลฯ ethมันเป็นง่ายต่อการติดตามซึ่งสนับสนุนซึ่งเมื่อพวกเขาจะไม่ได้ทั้งหมดเพียงแค่ชื่อ

eth อาจสมเหตุสมผลถ้าคุณมีอินเทอร์เฟซเครือข่ายประเภทอื่น ๆ อีกมากมาย แต่คุณไม่ค่อยทำ


+1 เพราะฉันรู้ว่าคุณเป็นใคร :) ขอบคุณสำหรับพอดคาสต์ !
Warren Young

1

ทำไม * BSD ใช้ชื่อเฉพาะไดรเวอร์สำหรับอินเทอร์เฟซเครือข่าย

เพื่อทำให้สิ่งต่าง ๆ ง่ายขึ้น หากคุณมองไปที่อินเตอร์เฟซที่มีชื่อbge0และดูที่คู่มือหรือใช้ระบบการเชื่อมโยงความจำคุณได้อย่างรวดเร็วจะจำว่าคนขับรถนี้เป็นBroadcom Gigabit Etherhet นี้เอกสารยังเป็นประโยชน์

มันหมายความว่าไม่มีเลเยอร์นามธรรมที่อธิบาย "อินเทอร์เฟซเครือข่ายทั่วไป" ในเคอร์เนลดังนั้นแต่ละไดรเวอร์จะได้รับการจัดการภายในผ่าน API ของตัวเอง

กฎที่นี่คือ:

  • ใช้ชื่อไดรเวอร์เพื่อสร้างชื่ออุปกรณ์
  • ใช้ PCI id ต่ำสุดเพื่อสร้างหมายเลขทันทีหลังชื่ออุปกรณ์

ไม่ต้องการเลเยอร์สิ่งที่เป็นนามธรรม ง่าย ๆ

(อย่างไร) มีผลกับระบบย่อยเช่นการรวมลิงก์การสร้างปริมาณข้อมูล QoS (ALTQ) การกรองและอื่น ๆ หรือไม่

ชื่ออินเทอร์เฟซไม่ควรรบกวนการจราจร

ดูเหมือนว่าภายใต้ pfSense ฉันไม่สามารถใช้ ALTQ กับอินเตอร์เฟสเสมือนการรวมลิงก์ (LAG)

วันนี้มันควรจะทำงาน:

นี่เป็นข้อ จำกัด ภายใน BSD เนื่องจากไม่มีเลเยอร์นามธรรมที่เหมาะสมหรือไม่

ไม่ใช่ว่าไม่มีเลเยอร์ที่เหมาะสมในการจัดการสิ่งนี้ เป็นเพราะคุณสามารถใช้ทรัพยากรอื่น ๆ เพื่อจัดการกับชื่อเหล่านั้นเช่นการสร้างชื่ออินเตอร์เฟส ( /etc/rc.conf) หรือเปลี่ยน pci idบนการตั้งค่าเมนบอร์ด และในขณะที่คนอื่น ๆ biosdevnameบอกว่ากับคำถามนี้แม้ลินุกซ์จะไปเส้นทางนี้ด้วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.