Avanti Indietro Indice

4. Informazioni generali sul networking di Linux.

4.1 Una breve storia dello sviluppo del supporto di rete nel kernel Linux.

Sviluppare partendo da zero un'implementazione della pila di protocolli tcp/ip dalle prestazioni buone quanto le altre implementazioni esistenti non è stato un lavoro semplice. La decisione di non basarsi su una delle implementazioni esistenti è stata presa in un momento in cui sembrava che le implementazioni esistenti sarebbero finite sotto una licenza più restrittiva a causa della sentenza di U.S.L., e quando c'era tanto entusiasmo da volerlo fare diversamente dagli altri e magari anche meglio di quello che era stato già fatto.

Il primo volontario che ha guidato lo sviluppo del codice di rete nel kernel è stato Ross Biro <biro@yggdrasil.com>. Ross ha implementato un insieme di funzionalità semplice ed incompleto ma usabile per la maggior parte dei bisogni. Queste procedure erano distribuite insieme ad un driver per la scheda di rete WD-8003. Questo fu sufficiente a far sì che molte persone iniziassero a provare e sperimentare il software, e alcuni riuscirono pure a connettere delle macchine ad internet con questa configurazione. Ma nel frattempo la richiesta di software di rete da parte della comunità Linux stava crescendo, così che a un certo punto la domanda pressante che gravava su Ross ed il suo coinvolgimento personale in termini di tempo superarono a suo giudizio i vantaggi che ne derivavano. Ross lasciò quindi il suo posto alla guida del gruppo di programmatori. Gli sforzi di Ross per far partire il progetto e la responsabilità che si era preso di produrre davvero qualcosa di utile nonostante la situazione fosse controversa, sono state le cose che hanno catalizzato tutto il lavoro futuro, e sono state perciò una componente essenziale del successo del prodotto attuale.

Orest Zborowski <obz@Kodak.COM> ha scritto la prima interfaccia di programmazione per i socket BSD all'interno del kernel Linux. Questo è stato un grande passo in avanti, e ha permesso di far funzionare sotto Linux molte delle applicazioni di rete esistenti senza cambiamenti notevoli.

All'incirca nel medesimo momento Laurence Culhane <loz@holmes.demon.co.uk> ha sviluppato i primi driver per supportare il protocollo SLIP all'interno di Linux. Questo ha permesso a molte persone che non avevano accesso a reti di tipo Ethernet di provare il nuovo software di rete. Ancora una volta, qualcuno prese questo driver e lo mise al lavoro per collegarsi ad Internet. Questa possibilità diede a molti un'idea delle possibilità che si sarebbero potute realizzare se Linux avesse avuto un supporto di rete completo, ed accrebbe il numero di utenti che provavano ed usavano il software esistente.

Un'altra persona che ha lavorato attivamente nel compito di costruire il supporto per la rete è stata Fred van Kempen, <waltje@uwalt.nl.mugnet.org>. Dopo un periodo di incertezza che aveva seguito l'abbandono di Ross dalla posizione di coordinatore dello sviluppo, Fred aveva offerto il suo tempo e le sue capacità e aveva accettato il ruolo senza alcuna opposizione. Fred aveva dei piani ambiziosi per la direzione che il software di rete di Linux avrebbe dovuto prendere, e si preparò a progredire in queste direzioni. Fred ha prodotto una serie di programmi di rete chiamati `NET-2' che molte persone sono state in grado di usare proficuamente (il codice `NET' era quello di Ross). Fred ha introdotto un certo numero di innovazioni nell'agenda dello sviluppo, come l'interfaccia dinamica per le periferiche, il protocollo AX.25 per le radio amatoriali e un'implementazione del networking progettata più modularmente. Il codice NET-2 di Fred fu usato da un numero molto elevato di entusiasti, ed il loro numero cresceva in continuazione mentre si diffondeva la voce che questa implementazione funzionava bene. Il software di rete a questo punto esisteva ancora sotto forma di un ampio numero di modifiche da applicare alla distribuzione ufficiale del kernel, non essendo ancora stato incluso in tale distribuzione. I documenti NET-FAQ e successivamente NET-2-HOWTO descrivevano la procedura (allora abbastanza complessa) per avere tutto quanto funzionante. L'impegno di Fred era volto allo sviluppo di innovazioni all'implementazione di rete convenzionale e questo gli prendeva tempo. La comunità di utenti stava diventando impaziente aspettando qualcosa che funzionasse in modo affidabile e che soddisfacesse l'80% degli utenti. Come era successo con Ross, la pressione su Fred come coordinatore del progetto crebbe considerevolmente.

Alan Cox <iialan@www.uk.linux.org> propose una soluzione al problema che avrebbe dovuto risolvere le controversie. Egli propose di prendere il codice NET-2 di Fred e di sistemarlo, rendendolo affidabile e stabile così da soddisfare gli utenti impazienti, nel contempo avrebbe alleggerito la pressione su Fred permettendogli di continuare il suo lavoro. Alan si mise a far ciò con un certo successo e la sua versione del codice di rete per Linux prese il nome di `Net-2D(ebugged)'. Il codice funzionava in maniera affidabile in molte configurazioni comuni e la base degli utenti era contenta. Alan chiaramente aveva idee e capacità proprie da mettere nel progetto e in molte delle discussioni relative alla direzione che il codice NET-2 stava prendendo. Si svilupparono allora due diverse scuole di pensiero nella comunità Linux: una che seguiva la filosofia "farlo funzionare subito, migliorarlo in seguito" e un'altra che diceva "farlo meglio subito". Linus fece la parte dell'arbitro e incluse il codice di Alan nella distribuzione ufficiale del kernel. Questo pose Fred in una posizione difficile. Ogni sviluppo innovativo avrebbe mancato della larga base di utenti che testassero ed usassero attivamente il codice, e questo avrebbe significato un rallentamento e certe difficoltà nello sviluppo. Fred continuò a lavorare per un breve periodo e alla fine abbandonò, così Alan si trovò ad essere il nuovo leader dello sviluppo del supporto di rete nel kernel di Linux.

Donald Becker <becker@cesdis.gsfc.nasa.gov> ha rivelato presto le sue capacità negli aspetti di più basso livello del networking, e ha prodotto un grosso campionario di driver per schede di rete: quasi tutte quelle incluse nei kernel attuali sono state sviluppate da Donald. Ci sono state altre persone che hanno contribuito in maniera significativa, ma il lavoro di Donald è stato notevole, per cui merita una menzione particolare.

Alan ha continuato a migliorare il codice NET-2-Debugged per un certo tempo, mentre lavorava nell'implementazione di alcune delle cose nella lista delle priorità che non erano ancora state affrontate. Prima che il sorgente del kernel 1.3.* diventasse maturo, il codice di rete nel kernel era passato alla distribuzione NET-3, sulla quale sono basate le versioni attuali. Alan ha lavorato su molti aspetti del codice di rete e ha migliorato il codice in molte direzioni con l'aiuto di un certo numero di altre persone di talento nella comunità Linux. Alan ha prodotto i dispositivi di rete dinamici e le prime implementazioni standard di AX.25 e IPX. Alan ha continuato a giocare col codice, ristrutturandolo e migliorandolo lentamente fino allo stato in cui si trova oggi.

Il supporto per PPP è stato aggiunto da Michael Callahan <callahan@maths.ox.ac.uk> e Al Longyear <longyear@netcom.com>. Anche questa è stata un'innovazione significativa per aumentare il numero di persone che usano Linux attivamente nel networking.

Jonathon Naylor <jsn@cs.nott.ac.uk> ha contribuito migliorando in maniera significativa il codice AX.25 di Alan, aggiungendo il supporto per i protocolli NetRom e Rose. La capacità di usare AX.25, NetRom e Rose è un fatto significativo in se, poiché nessun altro sistema operativo può vantare il supporto nativo per tutti questi protocolli.

Naturalmente, ci sono state altre centinaia di persone che hanno contribuito significativamente allo sviluppo del software di rete per Linux. Alcune di queste le incontrerete più avanti nelle sezioni relative alle singole tecnologie, altre persone hanno fornito moduli, driver, correzioni di errori, suggerimenti, risultati di test e supporto morale. In ognuno di questi casi ciascuno può dire di aver giocato la sua parte e di avere offerto quello che poteva. Il codice di rete del kernel è un esempio eccellente dei risultati che si possono ottenere dallo stile di lavoro anarchico della comunità Linux. Se questo non vi ha ancora meravigliato, lo farà presto: lo sviluppo non si è fermato.

4.2 Dove trovare altre informazioni riguardo al Networking in Linux

Ci sono vari posti in cui si possono trovare delle buone informazioni riguardo all'uso delle reti in Linux.

Alan Cox, il coordinatore attuale del codice di rete nel kernel, ha una pagina WWW che contiene informazioni sullo stato attuale e sul nuovo sviluppo del supporto di rete per Linux. La sua pagina è: www.uk.linux.org.

Un'altra risorsa interessante è un libro scritto da Olaf Kirch, intitolato "Network Administrators Guide". È un lavoro del Linux Documentatation Project e può essere letto interattivamente presso Network Administrators Guide, versione HTML. Oppure può essere scaricato tramite ftp in vari formati dall'archivio ftp dell'LDP su sunsite.unc.edu LDP ftp archive. Il libro di Olaf è molto completo e fornisce una buona panoramica di alto livello della configurazione di rete sotto Linux.

Esiste un newsgroup dedicato alla rete e argomente connessi nella gerarchia di gruppi relativi a Linux. È: comp.os.linux.networking

C'è una mailing list alla quale ci si può iscrivere, nella quale si possono chiedere informazioni a proposito del networking sotto Linux. Per iscriversi occorre mandare un messaggio di posta elettronica:

To: majordomo@vger.rutgers.edu
Subject: anything at all
Message:

subscribe linux-net

Nelle varie reti IRC si trovano spesso dei canali #linux sui quali si possono trovare persone in grado di rispondere a domande sull'argomento.

Ogni volta che si presenta un problema bisogna ricordare di includere il maggior numero possibile di dettagli riguardo ai problemi. In particolare, occorre includere la versione del software che si sta usando, in particolare la versione del kernel, la versione dei programmi come pppd e dip, e la natura esatta del problema che si è verificato. Questo vuol dire prendere nota della sintassi esatta di ogni messaggio di errore ricevuto, e di tutti i comandi che si stanno invocando.

4.3 Dove trovare informazioni di rete non correlate a Linux

Per chi sta cercando informazioni introduttive e pratiche sul networking tcp/ip in genere, io raccomando di dare un'occhiata ai seguenti documenti:

tcp/ip introduction

questo documento esiste sia in versione testo sia in versione postscript.

tcp/ip administration

questo documento esiste sia in versione testo sia in versione postscript.

Per chi sta cercando informazioni più dettagliate su tcp/ip raccomando caldamente:

Internetworking with TCP/IP, Volume 1: principles, protocols and architecture, by Douglas E. Comer, ISBN 0-13-227836-7, Prentice Hall publications, Third Edition, 1995.

[tradotto in italiano per Jackson Libri N.d.T.]

Per chi vuole imparare come scrivere applicazioni di rete in un ambiente compatibile a Unix, raccomando altrettanto caldamente:

Unix Network Programming, by W. Richard Stevens, ISBN 0-13-949876-1, Prentice Hall publications, 1990.

Una seconda edizione di questo libro sta per apparire sugli scaffali delle librerie; la nuova edizione è composta da tre volumi: sito web di Prentice-Hall per ulteriori informazioni.

Si può anche provare a guardare nel newsgroup comp.protocols.tcp-ip.

Una fonte importante di informazione prettamente tecnica riguardo a Internet e alla suite di protocolli tcp/ip sono gli RFC. RFC è un acronimo che significa `Request For Comment' ed è il modo convenzionale per pubblicare e documentare gli standard sui protocolli Internet. Ci sono svariati archivi di RFC, molti di questi sono siti ftp mentre altri forniscono accesso via WWW con un motore di ricerca che permette di cercare le parole chiave in un database associato agli RFC.

Un possibile luogo ove trovare gli RFC è il database RFC di Nexor.


Avanti Indietro Indice