In FreeBSD hanno aggiunto il supporto per il protocollo Netlink usato in Linux

FreeBSD

FreeBSD è ben consolidato come sistema per la creazione di server Internet e Intranet. Fornisce servizi di rete abbastanza affidabili e una gestione efficiente della memoria.

Diversi giorni fa la notizia è stata diffusa che il codice base di FreeBSD ha adottato una nuova implementazione del protocollo di comunicazione Collegamento di rete (RFC 3549) che viene utilizzato in Linux per comunicare tra il kernel e i processi nello spazio utente.

La famiglia delle prese Collegamento di rete è un'interfaccia del kernel Linux che utilizzato per la comunicazione interprocesso (IPC) tra i processi del kernel e dello spazio utente e tra diversi processi dello spazio utente, simili ai socket di dominio Unix.

Simile ai socket di dominio Unix ea differenza dei socket INET, la comunicazione Netlink non può attraversare i confini dell'host. Tuttavia, mentre i socket di dominio Unix utilizzano lo spazio dei nomi del file system, i processi Netlink sono generalmente indirizzati da identificatori di processo (PID).

Netlink è progettato e utilizzato per trasferire informazioni di rete varie tra lo spazio del kernel e i processi dello spazio utente. Le utilità di rete, come la famiglia iproute2 e le utilità utilizzate per configurare i driver wireless basati su mac80211, utilizzano Netlink per comunicare con il kernel Linux dallo spazio utente. Netlink fornisce un'interfaccia standard basata su socket per i processi dello spazio utente e un'API lato kernel per l'uso interno da parte dei moduli del kernel. Netlink originariamente utilizzava la famiglia di socket AF_NETLINK.

Finora nella sua forma attuale, Il livello di supporto Netlink consente a FreeBSD di utilizzare l'utilità IP di Linux del pacchetto iproute2 per gestire le interfacce di rete, impostare gli indirizzi IP, configurare il routing e manipolare gli oggetti nexthop che memorizzano lo stato utilizzato per inoltrare un pacchetto alla destinazione desiderata. Dopo aver leggermente modificato i file di intestazione, è possibile utilizzare Netlink nel pacchetto di routing di Bird.

L'implementazione Netlink per FreeBSD è impacchettato come un modulo del kernel caricabile che, se possibile, non influisce sugli altri sottosistemi del kernel e crea code di attività separate (tasqueue) per elaborare i messaggi in arrivo tramite il protocollo ed eseguire operazioni in modalità asincrona. Il motivo del porting di Netlink è la mancanza di un meccanismo standard per interagire con i sottosistemi del kernel, portando diversi sottosistemi e driver a inventare i propri protocolli.

Collegamento di rete offre uno strato di comunicazione unificato e un formato di messaggio estensibile che può fungere da intermediario che combina automaticamente dati disparati provenienti da diverse origini in un'unica richiesta. Ad esempio, i sottosistemi di FreeBSD come devd, jail e pfilctl possono essere portati su Netlink, ora utilizzando le proprie chiamate ioctl, il che semplificherà notevolmente la creazione di applicazioni per lavorare con questi sottosistemi. Inoltre, l'utilizzo di Netlink per modificare oggetti e gruppi nexthop nello stack di routing consentirà un'interazione più efficiente con i processi di routing dello spazio utente.

Le interfacce, gli indirizzi, i percorsi, il firewall, le fib, le vnet, ecc. sono controllati tramite netlink. È un protocollo asincrono basato su TLV che fornisce comunicazioni 1-1 e 1-molti. L'implementazione attuale supporta il sottoinsieme della famiglia NETLINK_ROUTE. L'implementazione è anche compatibile con il framework della famiglia NETLINK_GENERIC.

Funzionalità attualmente implementate:

  • Ottieni informazioni su rotte, oggetti e gruppi di nexthops, interfacce di rete, indirizzi e host vicini (arp/ndp).
  • Formazione di notifiche sulla comparsa e disconnessione delle interfacce di rete, configurazione e rimozione di indirizzi, aggiunta e rimozione di percorsi.
  • Aggiungi e rimuovi percorsi, oggetti e gruppi dell'hop successivo, gateway, interfacce di rete.
  • Integrazione con l'interfaccia Rtsock per la gestione della tabella di routing.

Vale la pena ricordare che finora il progetto si è limitato a supportare la famiglia di operazioni NETLINK_ROUTE per gestire lo stato del sottosistema di rete nel kernel.

Infine, se sei interessato a poterne saperne di più, puoi consultare i dettagli in il seguente collegamento.


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.