Mengapa * BSD menggunakan nama khusus driver untuk antarmuka jaringan? Apakah ini menyiratkan keterbatasan?

12

Saya perhatikan bahwa tergantung pada merek kartu jaringan, nama antarmuka berbeda (tergantung driver saya kira).

  • Mengapa * BSD menggunakan nama khusus driver untuk antarmuka jaringan?
  • Apakah ini berarti tidak ada lapisan abstraksi yang menggambarkan "antarmuka jaringan generik" di kernel, sehingga setiap driver akan ditangani secara internal melalui APInya sendiri?
  • (bagaimana) apakah itu memengaruhi subsistem seperti agregasi tautan, pembentukan lalu lintas, QoS ( ALTQ ), pemfilteran, dan lainnya?

Tepatnya, sepertinya di bawah pfSense, saya tidak bisa menggunakan ALTQ dengan antarmuka virtual agregasi tautan (LAG).

Apakah ini batasan internal BSD karena kurangnya lapisan abstraksi yang sesuai?

Totor
sumber

Jawaban:

7

Mengapa * BSD menggunakan nama khusus driver untuk antarmuka jaringan?

Itu hanya pilihan sejarah. Huruf dalam nama tersebut berasal dari driver yang berbicara ke kartu, sehingga mereka akan sama untuk dua antarmuka terpisah jika mereka menggunakan driver yang sama.

Itu memang memiliki satu manfaat praktis: pada BSD, driver jaringan memiliki halaman manual mereka sendiri di bagian 4. Jadi, dc(4)memberi tahu Anda tentang driver DEC 21143, yang akan mengendalikan dc0adaptor jaringan.

Anda melihat ini di bagian lain dari BSD Unix juga, seperti hard disk.

Apakah ini batasan internal BSD karena kurangnya lapisan abstraksi yang sesuai?

Tidak.

Untuk apa nilainya, Linux menuju jalan yang sama . Hari-hari aturan penamaan sederhana untuk adapter Ethernet menghilang, karena jaringan menjadi lebih rumit.

Warren Young
sumber
Terima kasih. Tahukah Anda mengapa saya tidak dapat menggunakan ALTQ dengan agregasi tautan?
Totor
Tolong, satu pertanyaan untuk setiap pertanyaan. Mari kita fokuskan yang satu ini pada penamaan perangkat BSD.
Warren Young
Saya tidak akan memanggil perangkat jaringan udev baru yang menamai jalur yang mirip dengan BSD. Sejauh yang saya tahu cara default adalah dengan menggunakan semacam jalur bus untuk mengidentifikasi perangkat, bukan nama driver dengan skema penomoran acak.
Pavel Šimerda
@ PavelŠimerda: Saya hanya bermaksud bahwa sistem Linux yang menggunakan skema ini tidak lagi digunakan eth0melalui ethINFINITY. Anda tidak akan lagi bisa mengetik ifconfig eth0dan berharap bahwa Anda akan melihat antarmuka Ethernet pertama, yang membuat sistem Linux serupa secara fungsional dari sudut pandang antarmuka pengguna ke FreeBSD, di mana Anda memerlukan pengetahuan apriori atas nama-nama antarmuka pada sistem, atau Anda harus mendapatkan daftar dengan ifconfigperintah yang tidak memenuhi syarat terlebih dahulu. Mekanisme kernel yang mendasarinya tentu saja sangat berbeda.
Warren Young
5

Pilihan menggunakan nama umum atau driver-spesifik tidak ada hubungannya dengan batasan driver.

Sebagian besar pilihan kosmetik. Menggunakan nama generik memiliki keuntungan menyembunyikan informasi yang hampir selalu tidak relevan - antarmuka jaringan adalah antarmuka jaringan, tidak peduli siapa yang membuatnya. Kemampuan perangkat bergantung pada model yang tepat dan pada konfigurasinya, bukan pada driver mana yang digunakan. Keuntungan dari nama-nama spesifik adalah untuk administrator: jika pesan kesalahan menyebutkan eth0(ok, jadi mana yang 0 dan yang 1), itu kurang informatif daripada jika menyebutkan wlan0(ah, itu antarmuka wifi) atau bcm0(ah, itu antarmuka Broadcom).

Pada FreeBSD, operasi pengaturan jaringan bekerja dengan memanggil ioctlsoket Unix. Ioctl ini diproses oleh kode jaringan umum dan mengalir ke driver yang relevan jika ioctl memanggil untuk ini.

Saya tidak tahu bagaimana ALTQ berinteraksi dengan agregasi tautan. Pastikan untuk menggunakan versi FreeBSD terbaru, karena ini tidak berfungsi tetapi sekarang tidak .

Gilles 'SANGAT berhenti menjadi jahat'
sumber
3

Ini membuatnya lebih mudah untuk mengetahui kartu jaringan yang Anda ajak bicara.

Jika Anda memiliki prosesor Intel (igb0) dan Realtek (rl0), kini Anda dapat membedakannya dengan segera.

Juga, driver yang berbeda mendukung fitur yang berbeda. Beberapa driver mendukung pollingdan beberapa tidak. Beberapa dukungan LRO, TSOdan RSSlain - lain. Lebih mudah untuk melacak dukungan mana yang ketika mereka tidak semua hanya bernama eth.

eth mungkin masuk akal jika Anda memiliki banyak jenis antarmuka jaringan lain, tetapi Anda jarang melakukannya.

Allan Jude
sumber
+1, karena saya tahu siapa Anda. :) Terima kasih untuk podcast !
Warren Young
1

Mengapa * BSD menggunakan nama khusus driver untuk antarmuka jaringan?

Untuk membuat hal-hal sederhana. Jika Anda melihat antarmuka yang bernama bge0dan melihat manual atau menggunakan sistem tautan mnemonik Anda, Anda akan segera ingat bahwa driver ini adalah Broadcom Gigabit Etherhet . Ini dokumen juga berguna.

Apakah ini berarti tidak ada lapisan abstraksi yang menggambarkan "antarmuka jaringan generik" di kernel, sehingga setiap driver akan ditangani secara internal melalui APInya sendiri?

Aturannya di sini adalah:

  • Gunakan nama driver untuk membuat nama perangkat;
  • Gunakan id PCI terendah untuk membuat nomor tepat setelah nama perangkat;

Tidak diperlukan lapisan abstraksi. Sesederhana itu.

(bagaimana) apakah itu memengaruhi subsistem seperti agregasi tautan, pembentukan lalu lintas, QoS (ALTQ), pemfilteran, dan lainnya?

Nama antarmuka tidak boleh mengganggu lalu lintas shapping.

Tepatnya, sepertinya di bawah pfSense, saya tidak bisa menggunakan ALTQ dengan antarmuka virtual agregasi tautan (LAG).

Hari ini seharusnya bekerja:

Apakah ini batasan internal BSD karena kurangnya lapisan abstraksi yang sesuai?

Bukan berarti tidak ada lapisan yang tepat untuk menangani ini. Itu karena Anda bisa menggunakan sumber daya lain untuk menangani nama-nama seperti membuat nama antarmuka ( /etc/rc.conf), atau mengubah id pci pada pengaturan motherboard. Dan seperti yang dikatakan oleh orang lain tentang pertanyaan ini, bahkan Linux akan mengikuti jalan ini biosdevname.


sumber