Linux e i radioamatori

Dal segnale alla rete Packet.

di Normando Marcolongo (iW6OWQ)
Articolo pubblicato su 'Linux Jornal Edizione Italiana'



Introduzione


Le telecomunicazioni rappresentano per l'uomo un fascino a cui è difficile resistere. Il mondo delle radiocomunicazioni è ancora più affascinante: tutto funziona quasi magicamente senza alcun mezzo di trasmissione visibile, o quantomeno percepibile.

È noto che oggi parte dello spettro elettromagnetico è riservato ai cosiddetti radioamatori: hobbisti che sperimentano, costruiscono o, solo semplicemente, usano la radio. Da loro non ci si poteva non aspettare qualche contributo alla comunità Linux, così in questo articolo si scoprirà come un radioamatore può utilizzare Linux dando anche uno sguardo generale a come funzionano le reti wireless radioamatoriali e alla loro stratificazione di rete. Si riterranno note le fondamenta del TCP/IP e della configurazione e compilazione del kernel di Linux senza che però lo siano i meccanismi teorici della stratificazione di rete in generale. Inoltre, si farà riferimento alla serie 2.2 del kernel di Linux.
 


I segnali e le loro rappresentazioni


Due parole prima di iniziare a parlare più specificamente delle reti senza filo. È opportuno che il lettore comprenda la necessità di un "adattamento" tra i segnali nativi prodotti da un calcolatore e il canale radio. Il calcolatore, come tutti sanno, è in grado di usare un alfabeto di due soli caratteri: "0" e "1". Il segnale dati seriale sincrono è ottenuto ponendo in corrispondenza degli stati "0" e "1" due valori di tensione differenti -V e +V. Tali valori (scelti a seconda del caso e spesso pari a 0V per lo "0" e qualche volt per lo stato "1") vengono tenuti costanti per tutto l?intervallo tra un istante significativo e il successivo; tali istanti significativi sono definiti da una base di tempi alla quale ci si riferisce per individuare l?inizio e la fine degli stati logici.

Formazione del segnale dati tipico per un calcolatore: a) la parola binaria, c) la corrispondenza con un segnale elettrico e b) la base dei tempi.

Si definisce così il ritmo binario di emissione come il numero di cifre binarie emesse nell?unità di tempo (tipicamente bit/s). Leggermente diversa è la definizione del noto baud, ma concettualmente basta accontentarsi di quella più sconosciuta e semplice di ritmo binario.

Per questioni relative alla teoria dei segnali, a un segnale è associabile una banda oltre che la già vista caratterizzazione temporale. Questo è un concetto molto importante visto che per ogni segnale è univocamente definito il suo spettro. Lo spettro di un segnale è la sua caratterizzazione in frequenza che mostra quanto ogni frequenza contribuisca nella rappresentazione del segnale stesso. La banda è la larghezza dello spettro. È come se per ognuno di noi ci fosse una doppia caratterizzazione. Per esempio, una caratterizzazione potrebbe essere quella fotografica, l?altra quella radiografica: entrambe ci rappresentano univocamente ma descrivono aspetti differenti.

In generale si vede come la larghezza si banda sia direttamente proporzionale al ritmo binario: in termini più comuni, più si trasmette velocemente e più la banda richiesta è grande.

Vediamo un esempio:

Ci viene un dubbio: praticamente la banda, ovvero la larghezza dello spettro, di questo semplicissimo segnale (un bit 1 poi tutti 0) è infinita (ovviamente sulla figura è impossibile che ciò si veda, ma è sufficiente pensare che solo tendendo all?infinito l?ampiezza dello spettro tende ad annullarsi). Qualche dubbio sulla possibilità di trasmettere questo segnale ci viene: l?elettronica, e del resto il senso comune, ci insegna che è impossibile realizzare dispositivi a banda infinita. Dobbiamo inventarci qualcosa o far vedere che non tutte le componenti spettrali sono necessarie. Sì, bisogna inventare qualcosa ma è vero anche che non tutto serve. Infatti il contributo informativo delle porzioni di spettro a frequenza più alta, visto che l?ampiezza di quest?ultimo decresce all?aumentare della frequenza, non è determinante ai fini della ricostruzione del segnale. Inoltre la presenza di rumore ci rende indistinguibile gran parte dello spettro.

Con l?ingegno si riesce poi a modificare lo spettro dei segnali in maniera reversibile: le modulazioni.

Alla fine abbiamo vinto noi: un segnale praticamente impossibile da trasmettere lo possiamo "modificare" con particolari tecniche per far sì che il suo spettro risulti "concentrato" il più possibile in una zona limitata di frequenze e quindi trasmissibile. Tali tecniche che vanno sotto il nome di compressione di banda, sostanzialmente sfruttano la ridondanza intrinsecamente presente in ogni sorgente di informazione eliminandola.

È ora chiara la necessità di elaborare il segnale prima di trasmetterlo, in fondo praticamente tutti oggi lo facciamo, con tecniche abbastanza complesse, con i nostri modem telefonici.
 


Le architetture di comunicazione per applicazioni telematiche


Per definire le funzioni di un sistema di comunicazione è molto elegante "stratificarle", ovvero raggruppare funzioni simili in uno stesso "strato" e far sì che ogni strato arricchisca le funzionalità di quello immediatamente inferiore. Così facendo, è molto comodo lavorare pensando per "compartimenti stagni": gli strati. In ognuno di questi strati si hanno dei servizi che lo strato offre a quello sovrastante, soddisfacendone le necessità. Esempio lampante: l?http è un protocollo di "alto strato" che si avvale dei servizi offertigli da quelli inferiori: il TCP per esempio. A sua volta il TCP si avvale dell?IP per svolgere i suoi compiti, e così via.

Ci si riferirà all?architettura Internet che calza a pennello la stratificazione di rete nelle applicazioni radioamatoriali con Linux.

Come facciamo a trasmettere, o meglio, a trasferire le nostre informazioni? Le si trasmette in una modalità tipica delle reti per dati che è quella a pacchetto. I dati da trasferire (di qualunque natura essi siano) si segmentano in pacchetti di lunghezza più piccola dell?intero messaggio e si consegnano alla rete che provvederà alla loro consegna a destinazione. In generale, inoltre, ogni pacchetto può essere considerato indipendente dagli altri (trasferimento senza connessione).

Per questo è necessario un controllo sul flusso dei dati; bisogna, quindi, rispettare l?integrità dei dati: interessa che arrivino esatti, tutti, e nell?ordine di partenza. Questo si fa? attraverso diverse tecniche su cui non ci dilungheremo e che sostanzialmente adattano la velocità di trasmissione della sorgente a quella del mezzo e realizzano una vera e propria di numerazione dei pacchetti: è possibile così scoprire se qualcosa manca e selettivamente richiederne la ritrasmissione.

Si parla, quindi, di Packet-Radio ovvero dell?uso del modo di trasferimento a pacchetto in ambito radio. Intuitivamente molti hanno avuto l?esperienza del Walkie-Talkie: anche l?uomo con un mezzo di tipo parla/ascolta (non come il telefono dove è possibile fare le due cose in contemporanea) segmenta l?informazione da trasmettere in pacchetti e aspetta il riscontro dell?altro. È esattamente l?approccio che abbiamo appena spiegato.

Risulta inoltre più comprensibile il meccanismo della stratificazione se pensiamo alla struttura generale di un pacchetto. Esso è composto da una intestazione e da un carico da trasportare. Nell?intestazione troviamo tutte le informazioni necessarie al protocollo che stiamo considerando per svolgere i suoi servizi (per esempio la numerazione, le somme di controllo), nel carico ciò che il protocollo trasporta. Nel carico si può quindi trovare un intero pacchetto di un protocollo di strato più alto considerandolo tutto come carico da trasportare. All?arrivo il protocollo trasportante consegnerà allo strato superiore il carico (o payload) che lo considererà a sua volta come pacchetto, ne elaborerà quindi l?intestazione e consegnerà allo strato superiore il payload. Questo processo termina quando, chiaramente, si raggiunge il servizio destinatario dell?informazione trasmessa. È un po? come considerare una scatola dentro l?altra.
 


Colleghiamo la radio al computer


È giunto il momento di collegare la radio al computer. Facciamo il punto della situazione. Per un radioamatore non è difficile costruire/reperire ricetrasmittenti con una larghezza di banda di alcune centinaia di kHz modulate in frequenza (o in fase? ma questo è più difficile da spiegare anche se è praticamente la stessa cosa J ). Significa che abbiamo tra le mani un apparecchio che associa a ogni cifra binaria una frequenza di trasmissione diversa e riesce a farlo solo per una velocità non superiore a una quantità legata alla sua larghezza di banda. Questa operazione la esegue anche al contrario trasformando in un segnale elettrico il segnale radio che riceve.

Non è poi difficile costruire codificatori (compressori di banda) che "prendano in mano" il segnale binario emesso dal calcolatore per far sì che sia "digeribile" dalla larghezza di banda del ricetrasmettitore. Ci si avvale generalmente della codifica "Manchester" (o codifica ritorno a zero binario) che opera in modo che la larghezza di banda alla sua uscita sia comparabile col ritmo di emissione della sorgente inteso come inverso della durata di un bit (è ben diverso dalla banda infinita che avevamo prima della codifica).

Sostanzialmente, inoltre, la codifica Manchester elimina la componente continua dal segnale dati (come si potrebbe pensare di trasmettere una cosa che non cambia mai: è nota a priori) che è la media dei valori che assume il nostro segnale, e "aggiunge" al flusso semplice di dati l?informazione importantissima della sincronizzazione: la base dei tempi. Così abbiamo un segnale che contiene in sé la sincronia e il cui spettro è stato concentrato in una banda maneggiabile.

Chiaramente in ricezione è possibile decodificare il segnale che si riceve in modo da ottenerne una versione che sicuramente sarà diversa da quella trasmessa (ci sono disturbi e non idealità di ogni parte del processo di trasmissione del segnale) ma gli assomiglia davvero molto, abbastanza da permetterne l?utilizzo (a patto di aver dimensionato bene il collegamento).

Sia per i ricetrasmettitori che per i codificatori, una fonte insostituibile è costituita dai progetti dell?ingegnere sloveno Matjaz Vidmar che ha progettato anche router specializzati per la dorsale di rete di cui si parlerà tra breve.

Il vero problema è ora collegare il computer al codificatore. Con la seriale non andremmo oltre il centinaio di kbit/s e, sebbene ciò sarebbe più che sufficiente dato che in Italia per vari vincoli si utilizzano velocità in genere non superiori ai 64kbit/s, non si può non lasciarsi attirare da migliori prospettive.

Come vedremo fra un attimo non abbiamo bisogno di una interfaccia "intelligente" che gestisca anche solo una parte della pila protocollare: pensa a tutto il kernel di Linux. Basta una interfaccia più veloce. Di scelta ce n?è molta ma quella parsa più interessante (anche economicamente J ) è la Ottawa PI2-Card.

La Ottawa Packet-Interface 2 è una interfaccia sincrona per packet-radio ad alta velocità su bus ISA supportata direttamente dal kernel di Linux come interfaccia di rete. Progettata dal Packet Working Group of the Ottawa Amateur Radio Club Inc., ha due porte così che si possano avere due radio collegate per interfaccia. È stata progettata per lavorare a velocità fino ad almeno 400kilobit/s circa, quindi adatta al genere di ricetrasmettitori descritti prima. Per far sì che le temporizzazioni siano sempre affidabili e per diminuire il carico da interrupt ha un timer indipendente dalla CPU del calcolatore e la porta ad alta velocità lavora in DMA. Questa è la prima differenza rispetto al caso delle porte seriali completamente gestite con gli interrupt.

Lo schema completo è:

Il collegamento fisico della PI-2 al codificatore Manchester è dipendente dal codificatore stesso. In generale però le cose sono molto semplici: non dovrebbe essere difficile far funzionare la cosa.
 


I protocolli per il racket radio


Il protocollo scelto dalla comunità radioamatoriale per il suo Packet-Radio è l?AX.25. È stato derivato dal X.25, famosissimo in praticamente tutte le reti a pacchetto (qualcuno ricorda ITAPAC?). L?AX.25 (Amateur X.25) ne ha mutuato le caratteristiche peculiari a cui sono state aggiunte funzionalità tipiche per una rete radioamatoriale. Può essere usato sia come protocollo per collegamenti punto-punto (rappresenterebbe un protocollo di strato alto) sia per trasportare a sua volta un altro protocollo (l?AX.25 diventa così di strato basso). Altri protocolli si sono aggiunti (sovrapposti) all?AX.25 per completarlo: il NetRom e il Rose. Qui non ne daremo che un accenno visto che in Italia il loro uso come protocolli di strato basso è pressoché nullo. Chiaramente la pila protocollare della suite del TCP/IP fa parte dei protocolli trasportabili dall?AX.25 ma sebbene sia comunque non molto diffuso in Italia, l?interconnessione di Linux-Boxes potrebbe farlo diventare la grande star.

Un particolare importante va riportato. Ogni radioamatore ha assegnato dall?autorità per le comunicazioni per proprio paese (in Italia dal Ministero delle Comunicazioni) un nominativo univoco formato da due parti: una geografica e una "progressiva" che è composta da lettere. Questo nominativo nelle interfacce di rete viene utilizzato come indirizzo fisico (come lo è il MAC address dell?ethernet) dell?interfaccia e, visto che un radioamatore può poter configurare più interfacce di rete, si aggiunge un numero che le distingue.

Vediamo cosa significa questo sul mio nominativo: iW6OWQ. La ?i? sta per Italia, il ?W? per il tipo di patente, il ?6? indica la prima cifra del C.A.P. di residenza (io sono abruzzese, Marche e Abruzzo hanno il C.A.P. iniziante per 6), ?OWQ? è la parte progressiva.

Due interfacce di rete sul mio PC potrebbero quindi essere per esempio: IW6OWQ-2 e IW6OWQ-4.
 


Entra in scena Linux


Vediamo come è sistemato il supporto ai protocolli di cui abbiamo parlato finora nel kernel di Linux.

La stratificazione dei protocolli è riportata nella figura 5.

Tutti i protocolli si appoggiano praticamente all?AX.25 dalla cui corretta configurazione dipendono gli altri protocolli. A livello di programmazione ogni protocollo ha una interfaccia di programmazione separata, ed è supportato nativamente.

L?organizzazione del supporto di rete di Linux è molto interessante in quanto l?astrazione sull?hardware è tale da permettere di utilizzare qualunque dispositivo supportato come interfaccia di rete per farne una. Potremo vedere, quindi, i nostri calcolatori collegati via radio come se lo fossero tramite la classica rete ethernet. Siamo di fronte a una flessibilità di utilizzo impensabile rispetto al vecchio MS-DOS o a Windows.
 


Il software


Per il kernel non ci sono problemi, tutto è già lì. Nella configurazione, oltre al Networking Support e al supporto per TCP/IP bisogna attivare Amateur Radio Support. In questa categoria bisogna selezionare il supporto per l?AX.25 Level 2 e nella sezione dei devices attivare il driver per High Speed (DMA) SCC driver for AX.25. È più difficoltoso che altro compilare tali caratteristiche come moduli: si complica la configurazione senza ottenere benefici particolari.

Così facendo il driver per la PI-2 Card crea dei devices (esattamente come per l?ethernet eth0 eth1 ecc.) chiamati pi[0-9][ab], dove il numero rappresenta l?ordine con cui vengono rilevate le schede (qualora ce ne fosse più d?una) e "a" e "b" identificano rispettivamente la porta ad alta velocità e quella a bassa.
 


Come consiglia l?HOWTO


I tools per la configurazione di rete sono parte standard di tutte le distribuzioni attuali, anche per questi non ci sono grossi problemi.

Ci sono, inoltre, utilità apposite per la gestione dell?AX.25: la libreria per AX.25 a supporto di molteplici utilità. In questo articolo non se ne parlerà visto che ci offrono servizi di cui non si è discusso. Gli interessati troveranno utile approfondire l?argomento studiando la documentazione acclusa con la libreria e le utility (ftp://zone.pspt.fi).

La configurazione base di una porta AX.25

La configurazione non è molto diversa da una normale interfaccia di rete. Basterà, per configurare la porta "a" della PI-2 Card, dare il comando:

# ifconfig pi0a hw ax25 IW6OWQ-3 up

Questo comando assegna il nominativo IW6OWQ-3 alla porta ad alta velocità alla prima PI-2 Card rilevata e la rende attiva. Lanciando il comando ifconfig da solo vedremo come la PI-2 Card viene trattata come una scheda di rete.

Il passo successivo è quello di far trasportare il TCP/IP dall?interfaccia in AX.25 appena attivata. Anche qui, nulla di più semplice:

# ifconfig pi0a 44.134.48.74 netmask 255.255.255.0 broadcast 44.134.48.255

# route add -net 44.0.0.0 pi0a netmask 255.0.0.0

# route add default pi0a

Il primo commando assegna alla porta appena configurata l?indirizzo IP mostrato (che è quello assegnato a me), con le usuali net-mask e broadcast address per una rete IP di classe C. Il secondo aggiorna la tabella di routing del kernel per far sì che ogni indirizzo della sottorete 44.0.0.0 sia instradata all?interfaccia radio. Ciò potrebbe essere un problema in quanto molti di questi indirizzi (tutti quelli che non sono nella nostra portata radio) non sono raggiungibili direttamente, sarà premura dell?amministratore fare una tabella routing apposita. Sarebbe anche possibile "parzializzare" il routing tra TCP/IP e AX.25 in modo da sfruttare eventuali ripetitori digitali presenti nella zona che non supportano il TCP/IP nativamente. Il terzo è addirittura più drastico del secondo: l?instradamento di default è verso l?interfaccia radio. È ovvio che questi particolari nella configurazione dipendono da stazione a stazione.

A questo punto si può provare con un classico ping se tutto funziona, o con un più attraente ssh o telnet o, perché no, con il netscape.

A questo punto è tutto come se ci fosse una rete cablata classica.
 


Un po' di economia


La realizzazione di una stazione radioamatoriale che dia servizi alla comunità locale, è leggermente diversa da quella spiegata visto che sarebbe auspicabile la presenza di porte di accesso a bassa velocità, in modo da rendere collegabile la stazione ai radioamatori che non sono in possesso delle attrezzature per l?alta velocità. Linux supporta benissimo, al proposito, direttamente le ricetrasmittenti per le basse velocità (le normali ricetrasmittenti per le comunicazioni voce) sfruttando le possibilità delle schede audio. Fino a 9600bit/s non è necessario hardware aggiuntivo tranne che per un circuitino per la commutazione trasmissione/ricezione (nella documentazione del kernel si possono trovare puntatori sul web e informazioni più approfondite)

Per questo tipo di stazioni solo la parte collegata alla dorsale ad alta velocità presenta problemi di reperibilità delle attrezzature. Per le schede Ottawa PI-2 Card, ci si può rivolgere solo a chi le ha costruite e farsele spedire. Il loro costo si aggira intorno alle 300.000 lire I.V.A. e sdoganamento inclusi. Le ricetrasmittenti a larga banda si possono trovare negli Stati Uniti o costruirsele (vedi bibliografia) i costi sono abbastanza sotto le 500.000 lire per una ricetrasmittente operante sulla banda dei 23cm (è addirittura inferiore al costo di una buona radio commerciale solo per comunicazioni vocali). Le antenne possono essere quasi sempre autocostruite e, per la banda dei 23cm (1.2GHz), si adattano facilmente parabole per la ricezione televisiva da satellite.

Come si vede, sebbene non siano comparabili ai ponti radio numerici commerciali, i sistemi radioamatoriali basati su Linux possono arrivare a gestire bande dell?ordine dei 2-300'000bit/s con costi intorno al milione coprendo distanze ragguardevoli per un collegamento digitale (un centinaio di kilometri).
 


La situazione Italiana


Ringraziamenti

Non può mancare il ringraziamento ufficiale a chi ha sponsorizzato parte del lavoro in questo campo del LUG-Roma: la Yepa s.r.l. (http://www.yepa.com/)
 


Bibliografia


Per risorse sul racket radio ad alta velocità e per la Ottawa PI-2 Card: http://hydra.carleton.ca/.

Per i progetti di Matjaz Vidmar: http://www.hamradio.si/.

Per la configurazione di Linux per l?uso radioamatoriale: Linux AX25-HOWTO, Amateur Radio di Terry Dawson (VK2KTJ): http://www.linuxdoc.org/ e http://zone.pspt.fi/.

Per chi volesse approfondire i temi accennati nei primi paragrafi può contattarmi in modo che possa suggerire qualche testo.

 

Torna alla HomePage