Audio Networking – Introduzione alle reti locali 2

parte 2

di Michele Viola

Tipologie di rete

Una prima classificazione delle reti di comunicazione riguarda la tecnologia di trasmissione. In particolare si parla di “collegamenti broadcast” e di “collegamenti punto-punto”.

Le reti broadcast

In una rete broadcast, un singolo canale di comunicazione è condiviso da tutte le macchine connesse alla rete; i messaggi spediti da una delle macchine vengono ricevuti da tutte le altre ma vengono elaborati volta per volta solamente dal legittimo destinatario, mentre tutte le altre macchine semplicemente li ignorano. L’indirizzo del destinatario è specificato in una parte determinata del messaggio. Una macchina che riceve un messaggio broadcast analizzerà prima di tutto il campo contenente l’indirizzo: se questo coincide con il proprio il messaggio sarà elaborato, altrimenti verrà scartato. Un’analogia è, ad esempio, l’annuncio in aeroporto che chiede a tutti i passeggeri del volo AZ811 di presentarsi al gate 12 per l’imbarco immediato: tutti ascolteranno il messaggio ma solo i passeggeri interessati al volo in questione si metteranno in movimento per raggiungere la porta d’imbarco; gli altri potranno fare a meno persino di ascoltare il resto del messaggio.

I sistemi broadcast permettono generalmente di indirizzare un messaggio a tutte le destinazioni contemporaneamente, usando un codice speciale nel campo dedicato all’indirizzo; un pacchetto del genere viene raccolto ed elaborato da tutte le macchine della rete.

Alcuni sistemi broadcast supportano anche la trasmissione ad un sottoinsieme delle macchine in rete; questo sistema si chiama multicasting. Un possibile schema è quello di riservare un bit di indirizzo per indicare il multicasting, ed i rimanenti n – 1 bit di indirizzo per indicare il gruppo. Ciascuna macchina può sottoscrivere uno o più gruppi, o anche tutti.

Le reti punto-punto

Nelle reti punto-punto ciascun messaggio viaggia direttamente dalla sorgente alla destinazione, interessando soltanto le macchine lungo il percorso e non tutte le altre. Spesso sono possibili diverse strade, di differente lunghezza e con varie condizioni di traffico su ciascuna tratta, per cui in questo tipo di reti è importante avere a disposizione un buon sistema di instradamento, ovvero un sistema efficace per trovare la via migliore dalla sorgente alla destinazione.

Come regola generale (anche se ci sono diverse eccezioni), le reti piccole e localizzate geograficamente tendono ad utilizzare il broadcasting, mentre le reti più grandi sono solitamente punto-punto.

Classificazione in base alle dimensioni

Un criterio ulteriore per la classificazione delle reti si basa sulla loro dimensione. Si va dalle “personal area network”, contenute nel raggio di un metro e necessarie per connettere tra loro dispositivi come mouse e tastiera, o anche pacemaker oppure ancora auricolari, telefoni cellulari e PDA (Personal Digital Assistant, detti anche palmari), fino ad Internet che è di dimensioni planetarie.

Audio in rete

A questo punto è d’uopo una breve precisazione. L’audio networking a cui si riferisce il titolo di questa serie di articoli si riferisce alle tecnologie di trasporto di segnali audio su infrastrutture di rete, volte a sostituire il trasporto audio su cavo bilanciato tipico delle applicazioni professionali come, ad esempio, il trasporto dei segnali dal palco al mixer e poi agli amplificatori in un’applicazione live, oppure dalle sorgenti ai diffusori sparsi in un edificio in un’installazione fissa. Grazie alla diffusione delle reti tra calcolatori, le tecnologie di trasporto per i dati digitali sono ormai relativamente economiche e sufficientemente potenti da permettere il trasporto, almeno per le distanze tipiche delle reti locali (LAN), di diverse decine di canali audio con una qualità sufficiente a soddisfare le esigenze delle tipiche applicazioni professionali che impegnano quotidianamente i lettori di Sound&Lite.

In altri termini, non tratteremo qui sistemi come streaming MP3 o Internet radio. Cercheremo di capire, invece, come potrebbe funzionare il trasporto di diverse decine di “blocchetti” di 24 bit ciascuno (i campioni audio), ordinati e sincronizzati 48.000 volte al secondo e con latenze accettabili, utilizzando le normali infrastrutture di rete (collegamenti, switch, router, eccetera).

L’architettura di rete

strati, protocolli e interfacce

Il progetto di un’architettura di rete è una faccenda piuttosto complessa. Al fine di ridurre tale complessità di progetto, si cerca in qualche modo di suddividere il problema in tanti sotto-problemi più semplici, ciascuno dei quali realizza una parte del compito.

Le reti di trasporto dati sono tipicamente organizzate in una serie di “strati”, costruiti uno sopra l’altro. Il numero di strati, il nome, il contenuto e le funzioni di ciascuno di questi differiscono da una rete all’altra; in tutte le reti, comunque, l’idea è che ciascuno strato offra dei servizi agli strati superiori, nascondendo i dettagli su come questi servizi siano effettivamente implementati.

In pratica, lo strato n di una macchina instaura volta per volta una comunicazione con lo strato n di un’altra macchina. Le regole e le convenzioni utilizzate in questa comunicazione sono chiamate, nel loro insieme, protocollo dello strato n.

In realtà, nessun dato è trasferito direttamente dal livello n di una macchina al livello n di un’altra macchina: ciascuno strato passa dati e controllo della comunicazione allo strato immediatamente sottostante, fino a quando viene raggiunto lo strato più basso. Sotto lo strato 1 c’è il mezzo fisico, attraverso il quale avviene effettivamente la comunicazione.

Tale stratificazione, oltre a permettere di organizzare l’approccio progettuale, può (e deve) rendere più semplice sostituire l’implementazione di uno strato con una completamente differente (ad esempio le linee telefoniche possono essere sostituite da collegamenti satellitari), perché tutto ciò che è richiesto dalla nuova implementazione è che offra esattamente lo stesso insieme di servizi allo strato direttamente superiore rispetto all’implementazione precedente.

Un insieme di strati e protocolli è chiamato architettura di rete. Le specifiche di un’architettura devono contenere abbastanza informazioni da permettere ad un ingegnere di scrivere un programma o di costruire un dispositivo hardware per ciascuno strato che si conformi correttamente al protocollo appropriato.

l’architettura pensatore-traduttore-segretaria

Un’analogia, tratta dal testo di Tanenbaum indicato nelle referenze, può contribuire a rendere più chiaro il concetto.

Supponiamo due filosofi (processi paritari a livello 3), uno dei quali parla urdu e inglese mentre l’altro parla cinese e francese. Dato che non hanno un linguaggio comune, entrambi incaricano un traduttore (processi paritari al livello 2), ciascuno dei quali a sua volta incarica una segretaria (processi paritari al livello 1). Il filosofo 1 desidera comunicare il suo amore per i conigli al suo pari. Per fare questo, passa un messaggio (in inglese), attraverso l’interfaccia 2/3, al suo traduttore, dicendo: “I like rabbits”. I traduttori hanno concordato un linguaggio comune tra loro, ad esempio l’italiano, cosicché il messaggio diventa: “Mi piacciono i conigli”. La scelta del linguaggio è il protocollo dello strato 2 e coinvolge i processi paritari dello strato 2.

Il traduttore, dopo aver marcato il messaggio come “in lingua italiana”, consegna quindi il messaggio alla segretaria per la trasmissione, ad esempio via fax (il protocollo dello strato 1). Quando il messaggio arriva a destinazione, viene consegnato al traduttore che lo traduce in francese e lo passa al filosofo 2 attraverso l’interfaccia 2/3. Da notare il fatto che ciascun protocollo è completamente indipendente dagli altri, almeno finché l’interfaccia rimane la stessa. I traduttori possono cambiare la lingua italiana con, ad esempio, l’olandese, ammesso che entrambi siano d’accordo, senza cambiare nulla nelle interfacce verso lo strato 1 e verso lo strato 3. Allo stesso modo le segretarie possono cambiare dal fax all’e-mail, o al telefono, senza disturbare (o neppure informare) gli altri strati. Ciascun processo può aggiungere informazioni destinate solo al suo pari e queste informazioni non vengono passate agli strati superiori.

intestazioni e protocolli

Un esempio più tecnico: un messaggio M è generato da un processo di livello 5 e consegnato al livello 4 per la trasmissione. Lo strato 4 mette un’intestazione davanti al messaggio e passa il tutto allo strato 3. L’intestazione contiene informazioni di controllo come, ad esempio, un numero sequenziale che permetterà allo strato 4 della macchina destinazione di rimettere in ordine i frammenti se gli strati sottostanti non dovessero rispettare la sequenza.

Qualche strato può avere dei limiti per le dimensioni dei messaggi da trasmettere (a livello 3 c’è quasi sempre un limite imposto dal protocollo), per cui lo strato 3 può spezzare il messaggio in pacchetti più piccoli, ciascuno con un’intestazione che permetterà allo strato 3 del destinatario di ricomporre il messaggio.

Il livello 3 decide quale linea usare in uscita e passa i pacchetti allo strato 2 sottostante.

Lo strato 2 aggiunge non solo un’intestazione ma anche una coda (che risulterà importante per un’eventuale sincronizzazione) e consegna il risultato al sottostante strato 1 per la trasmissione fisica.

Alla destinazione il messaggio si muove verso l’alto, di strato in strato, e le intestazioni vengono via via eliminate. Nessuna delle intestazioni aggiunte dal mittente al di sotto dello strato n raggiungeranno lo strato n del destinatario.

servizi e protocolli

Processi paritari possono concettualmente “pensare” di comunicare direttamente tra di loro, tramite il proprio protocollo. Ciascuno strato di livello 4, ad esempio, avrà procedure del tipo “InviaAll’AltraParte” e “RiceviDall’AltraParte”, anche se queste due procedure comunicano in effetti con lo strato sottostante attraverso l’interfaccia 3/4, non direttamente con l’altra parte.

Questo concetto è cruciale per il progetto di una rete; attraverso di esso il compito può essere spezzato in elementi più piccoli e maneggevoli, ovvero i singoli strati.

Riferimenti

Andrew S. Tanenbaum: Computer Networks, fourth edition – Prentice‑Hall, Inc.

CLICCA QUI PER ACCEDERE ALLA TERZA PARTE