Perché * BSD utilizza nomi specifici del driver per le interfacce di rete? Implica limitazioni?


12

Ho notato che a seconda della marca della scheda di rete, i nomi delle interfacce differiscono (suppongo che dipenda dal driver).

  • Perché * BSD utilizza nomi specifici del driver per le interfacce di rete?
  • Significa che non esiste un livello di astrazione che descriva "un'interfaccia di rete generica" ​​nel kernel, quindi ogni driver verrebbe indirizzato internamente tramite la propria API?
  • (come) influisce su sottosistemi come aggregazione dei collegamenti, definizione del traffico, QoS ( ALTQ ), filtro e altri?

Precisamente, sembra che sotto pfSense, non posso usare ALTQ con un'interfaccia virtuale di aggregazione dei collegamenti (LAG).

Si tratta di una limitazione interna alla BSD dovuta alla mancanza di uno strato di astrazione adeguato?

Risposte:


7

Perché * BSD utilizza nomi specifici del driver per le interfacce di rete?

È solo una scelta storica. Le lettere nel nome provengono dal driver che comunica con la scheda, quindi saranno le stesse per due interfacce separate se utilizzano lo stesso driver.

Ha un vantaggio pratico: su BSD, i driver di rete hanno le loro pagine di manuale nella sezione 4. Quindi, dc(4)ti dice del driver DEC 21143, che controllerebbe la dc0scheda di rete.

Lo vedi anche in altre parti di BSD Unix, come i dischi rigidi.

Si tratta di una limitazione interna alla BSD dovuta alla mancanza di uno strato di astrazione adeguato?

No.

Per quello che vale, Linux sta seguendo un percorso simile . I giorni delle semplici regole di denominazione per gli adattatori Ethernet stanno scomparendo, poiché la rete diventa più complicata.


Grazie. Sai perché non posso usare ALTQ con un'aggregazione di link allora?
Totor

Una domanda per domanda, per favore. Concentriamo questo sulla denominazione dei dispositivi BSD.
Warren Young

Non chiamerei il nuovo dispositivo di rete udev nominando un percorso simile a BSD. Per quanto ne so il modo predefinito è utilizzare una sorta di percorso del bus per identificare i dispositivi, non il nome del driver con uno schema di numerazione casuale.
Pavel Šimerda

@ PavelŠimerda: Volevo solo dire che i sistemi Linux che utilizzano questo schema di utilizzo non è più eth0thru ethINFINITY. Non sarai più in grado di digitare ifconfig eth0e aspettarti di guardare la prima interfaccia Ethernet, che rende tali sistemi Linux funzionalmente simili dal punto di vista dell'interfaccia utente a FreeBSD, dove hai bisogno di una conoscenza a priori dei nomi dei interfacce sul sistema, oppure devi prima ottenere un elenco con un ifconfigcomando non qualificato . I meccanismi del kernel sottostanti sono ovviamente completamente diversi.
Warren Young,

5

La scelta di utilizzare nomi generici o specifici del driver non ha nulla a che fare con alcuna limitazione del driver.

È principalmente una scelta cosmetica. L'uso di nomi generici ha il vantaggio di nascondere informazioni quasi sempre irrilevanti: un'interfaccia di rete è un'interfaccia di rete, indipendentemente da chi l'ha creata. Le capacità di un dispositivo dipendono dal modello esatto e dalla sua configurazione, non da quale driver è in uso. Il vantaggio di nomi specifici è per l'amministratore: se un messaggio di errore menziona eth0(ok, quindi quale è 0 e quale è 1), è meno informativo che se menziona wlan0(ah, questa è l'interfaccia wifi) o bcm0(ah, questo è l'interfaccia Broadcom).

Su FreeBSD, le operazioni di configurazione della rete funzionano chiamando ioctlun socket Unix. Questo ioctl viene elaborato dal codice di rete generico e scende al driver pertinente se lo ioctl lo richiede.

Non so come ALTQ interagisca con l'aggregazione dei collegamenti. Assicurati di usare una versione recente di FreeBSD, poiché questa non funzionava ma ora funziona .


3

Rende più facile dire con quale scheda di rete stai parlando.

Se hai un Intel (igb0) e un Realtek (rl0) nic, ora puoi distinguerli immediatamente.

Inoltre, driver diversi supportano funzionalità diverse. Alcuni driver supportano pollinge altri no. Alcuni sostengono LRO, TSOe RSSecc E 'più facile tenere traccia che il supporto che, quando non sono tutti appena nominato eth.

eth potrebbe avere senso se tu avessi molti altri tipi di interfacce di rete, ma raramente lo fai.


+1, perché so chi sei. :) Grazie per il podcast !
Warren Young,

1

Perché * BSD utilizza nomi specifici del driver per le interfacce di rete?

Per rendere le cose semplici. Se guardi a un'interfaccia chiamata bge0e dai un'occhiata ai manuali o usi il tuo sistema di collegamento mnemonico, ricorderai rapidamente che questo driver è un Broadcom Gigabit Etherhet . Questo documento è anche utile.

Significa che non esiste un livello di astrazione che descriva "un'interfaccia di rete generica" ​​nel kernel, quindi ogni driver verrebbe indirizzato internamente tramite la propria API?

La regola qui è:

  • Utilizzare il nome del driver per creare un nome dispositivo;
  • Utilizzare l'id PCI più basso per creare il numero subito dopo il nome del dispositivo;

Non è necessario alcun livello di astrazione. Così semplice.

(come) influisce su sottosistemi come aggregazione dei collegamenti, definizione del traffico, QoS (ALTQ), filtro e altri?

I nomi delle interfacce non devono interferire con la suddivisione del traffico.

Precisamente, sembra che sotto pfSense, non posso usare ALTQ con un'interfaccia virtuale di aggregazione dei collegamenti (LAG).

Oggi dovrebbe funzionare:

Si tratta di una limitazione interna alla BSD dovuta alla mancanza di uno strato di astrazione adeguato?

Non è che non esiste un livello appropriato per gestirlo. È perché potresti usare altre risorse per gestire quei nomi come la creazione di nomi di interfaccia ( /etc/rc.conf) o la modifica del suo ID PCI sulla configurazione della scheda madre. E come altri hanno detto su questa domanda, anche Linux sta seguendo questo percorso biosdevname.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.