Dlaczego * BSD używa nazw specyficznych dla sterowników dla interfejsów sieciowych? Czy to oznacza ograniczenia?

13

Zauważam, że w zależności od marki karty sieciowej nazwy interfejsów różnią się (przypuszczam, że zależne od sterownika).

  • Dlaczego * BSD używa nazw specyficznych dla sterowników dla interfejsów sieciowych?
  • Czy to oznacza, że ​​w jądrze nie ma warstwy abstrakcji opisującej „ogólny interfejs sieciowy”, więc każdy sterownik byłby wewnętrznie adresowany za pomocą własnego API?
  • (jak) wpływa na podsystemy, takie jak agregacja łączy, kształtowanie ruchu, QoS ( ALTQ ), filtrowanie i inne?

Dokładnie wygląda to tak, jak w pfSense, nie mogę używać ALTQ z wirtualnym interfejsem agregacji łączy (LAG).

Czy jest to wewnętrzne ograniczenie BSD z powodu braku odpowiedniej warstwy abstrakcji?

Totor
źródło

Odpowiedzi:

7

Dlaczego * BSD używa nazw specyficznych dla sterowników dla interfejsów sieciowych?

To tylko historyczny wybór. Litery w nazwie pochodzą od kierowcy, który rozmawia z kartą, więc będą takie same dla dwóch oddzielnych interfejsów, jeśli będą używać tego samego sterownika.

Ma to jedną praktyczną zaletę: w BSD sterowniki sieciowe mają swoje własne strony podręcznika w sekcji 4. dc(4)Mówi więc o sterowniku DEC 21143, który kontrolowałby kartę dc0sieciową.

Widać to również w innych częściach systemu BSD Unix, takich jak dyski twarde.

Czy jest to wewnętrzne ograniczenie BSD z powodu braku odpowiedniej warstwy abstrakcji?

Nie.

Pod względem wartości Linux podąża podobną ścieżką . Dni prostych reguł nazewnictwa dla kart Ethernet znikają, ponieważ sieć staje się bardziej skomplikowana.

Warren Young
źródło
Dziękuję Ci. Czy wiesz, dlaczego nie mogę używać ALTQ z agregacją linków?
Totor
Poproszę jedno pytanie na pytanie. Skupmy się na nazewnictwie urządzeń BSD.
Warren Young,
Nie nazwałbym nowego urządzenia sieciowego udev nazwaniem ścieżki podobnej do BSD. O ile wiem, domyślnym sposobem jest użycie jakiejś ścieżki magistrali do identyfikacji urządzeń, a nie nazwy sterownika z przypadkowym schematem numeracji.
Pavel Šimerda
@ PavelŠimerda: Właśnie oznaczało, że systemy Linux, które korzystają z tego programu już korzystać eth0thru ethINFINITY. Nie będziesz już mógł pisać ifconfig eth0i oczekiwać, że spojrzysz na pierwszy interfejs Ethernet, który sprawia, że ​​takie systemy Linux są funkcjonalnie podobne z punktu widzenia interfejsu użytkownika do FreeBSD, gdzie potrzebujesz a priori znajomości nazw interfejsy w systemie lub najpierw musisz uzyskać listę z niekwalifikowanym ifconfigpoleceniem. Podstawowe mechanizmy jądra są oczywiście zupełnie inne.
Warren Young,
5

Wybór używania nazw ogólnych lub specyficznych dla sterownika nie ma związku z żadnym ograniczeniem sterownika.

Jest to głównie wybór kosmetyczny. Zaletą używania nazw ogólnych jest ukrywanie informacji, które prawie zawsze są nieistotne - interfejs sieciowy to interfejs sieciowy, niezależnie od tego, kto go stworzył. Możliwości urządzenia zależą od dokładnego modelu i jego konfiguracji, a nie od tego, który sterownik jest używany. Zaletą określonych nazw jest dla administratora: jeśli komunikat o błędzie wspomina eth0(ok, więc który jest 0, a który 1), jest mniej informacyjny niż jeśli wspomina wlan0(ah, to jest interfejs Wi-Fi) lub bcm0(ah, to interfejs Broadcom).

W FreeBSD operacje konfiguracji sieci działają przez wywołanie ioctlgniazda Unix. Ten ioctl jest przetwarzany przez ogólny kod sieci i spływa do odpowiedniego sterownika, jeśli ioctl tego wymaga.

Nie wiem, jak ALTQ wchodzi w interakcję z agregacją linków. Upewnij się, że używasz najnowszej wersji FreeBSD, ponieważ kiedyś nie działała, ale teraz działa .

Gilles „SO- przestań być zły”
źródło
3

Ułatwia określenie, z którą kartą sieciową rozmawiasz.

Jeśli masz nic Intel (igb0) i Realtek (rl0), możesz od razu je rozdzielić.

Ponadto różne sterowniki obsługują różne funkcje. Niektóre sterowniki obsługują, pollinga niektóre nie. Pewne wsparcie LRO, TSOa RSSitd. Łatwiej jest śledzić których wsparcie, które jeśli nie są właśnie nazwie eth.

eth może mieć sens, jeśli masz wiele innych rodzajów interfejsów sieciowych, ale rzadko to robisz.

Allan Jude
źródło
+1, ponieważ wiem kim jesteś. :) Dziękuję za podcast !
Warren Young,
1

Dlaczego * BSD używa nazw specyficznych dla sterowników dla interfejsów sieciowych?

Dla uproszczenia. Jeśli spojrzysz na nazwany interfejs bge0i zajrzysz do instrukcji lub użyjesz mnemonicznego systemu linków , szybko zapamiętasz, że ten sterownik to Broadcom Gigabit Etherhet . Ten dokument jest również przydatny.

Czy to oznacza, że ​​w jądrze nie ma warstwy abstrakcji opisującej „ogólny interfejs sieciowy”, więc każdy sterownik byłby wewnętrznie adresowany za pomocą własnego API?

Zasada jest następująca:

  • Użyj nazwy kierowcy, aby utworzyć nazwę urządzenia;
  • Użyj najniższego identyfikatora PCI, aby utworzyć numer bezpośrednio po nazwie urządzenia;

Nie jest wymagana warstwa abstrakcji. Tak prosty.

(jak) wpływa na podsystemy, takie jak agregacja łączy, kształtowanie ruchu, QoS (ALTQ), filtrowanie i inne?

Nazwy interfejsów nie powinny zakłócać zmiany ruchu.

Dokładnie wygląda to tak, jak w pfSense, nie mogę używać ALTQ z wirtualnym interfejsem agregacji łączy (LAG).

Dzisiaj powinno działać:

Czy jest to wewnętrzne ograniczenie BSD z powodu braku odpowiedniej warstwy abstrakcji?

Nie jest tak, że nie ma odpowiedniej warstwy do obsługi tego. Dzieje się tak, ponieważ możesz użyć innych zasobów do obsługi tych nazw, takich jak tworzenie nazw interfejsów ( /etc/rc.conf) lub zmienianie pci id w konfiguracji płyty głównej. I jak powiedzieli inni na to pytanie, nawet Linux zmierza w tym kierunku biosdevname.


źródło