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?
eth0
thruethINFINITY
. Nie będziesz już mógł pisaćifconfig eth0
i 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 niekwalifikowanymifconfig
poleceniem. Podstawowe mechanizmy jądra są oczywiście zupełnie inne.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 wspominawlan0
(ah, to jest interfejs Wi-Fi) lubbcm0
(ah, to interfejs Broadcom).W FreeBSD operacje konfiguracji sieci działają przez wywołanie
ioctl
gniazda 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 .
źródło
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ą,
polling
a niektóre nie. Pewne wsparcieLRO
,TSO
aRSS
itd. Łatwiej jest śledzić których wsparcie, które jeśli nie są właśnie nazwieeth
.eth
może mieć sens, jeśli masz wiele innych rodzajów interfejsów sieciowych, ale rzadko to robisz.źródło
Dla uproszczenia. Jeśli spojrzysz na nazwany interfejs
bge0
i 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.Zasada jest następująca:
Nie jest wymagana warstwa abstrakcji. Tak prosty.
Nazwy interfejsów nie powinny zakłócać zmiany ruchu.
Dzisiaj powinno działać:
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 kierunkubiosdevname
.źródło