18.1
La rete Internet↓
Nel 1964 L. Kleinrock (ucla)
propone un modello di rete non gerarchica e con parti ridondanti, che
realizza una modalità di trasferimento senza connessione e senza
garanzie di qualità del servizio, rimandando queste ultime ai livelli
superiori dell’architettura protocollare. Tale tipologia di servizio è
oggi indicata con il termine best effort. Nel ’69 sono operativi
cinque nodi nelle università americane, e nel ’72 avviene la prima
dimostrazione pubblica di arpanet,
basata su ncp. Nel ’73 Kahn e Cerf
iniziano a definire TCP, da cui viene successivamente separato l’IP per
la convenienza di non dover necessariamente aprire sempre una
connessione. Fino all’80, il DoD sovvenziona le università per implementare
in ambiente unix i protocolli, che nel
frattempo si vanno arricchendo di servizi, mentre la trasmissione
Ethernet (del 1973) è adottata per realizzare lan.
Nel 1983 il DoD decreta che tutti i calcolatori
connessi a arpanet adottino i
protocolli TCP/IP, e separa la rete in due parti: una civile (arpanet)
ed una militare (milnet). Negli anni
seguenti i finanziamenti dalla National Science Foundation
permettono lo sviluppo di una rete di trasporto a lunga distanza e di
reti regionali, che interconnettono lan
di altre università e di enti di ricerca alla rete arpanet,
alla quale si collegano poi anche le comunità scientifiche non
americane.
Nel 1990 arpanet
cessa le sue attività, e Barners-Lee (cern)
definisce il WWW, mentre nel ’93 Andreessen (ncsa)
sviluppa Mosaic, il primo browser WWW. Dal 1995 l’nsf
non finanzia più la rete di interconnessione, ed il traffico inizia ad
essere trasportato da operatori privati.
La parola Internet in realtà è composta
da due parole, Inter e Net,
in quanto le caratteristiche della rete Internet sono quelle di fondere
in una unica architettura una infinità di singole reti locali,
potenzialmente disomogenee, e permettere la comunicazione tra i computer
delle diverse sottoreti.
Ogni nodo della rete è connesso ad una rete locale
(
lan),
la quale a sua volta è interconnessa ad Internet mediante dei nodi detti
router che sono
collegati ad una o più
lan e ad
Internet, e svolgono la funzione di instradare le comunicazioni verso
l’esterno. L’instradamento ha luogo in base ad un
indirizzo IP,
che individua i singoli nodi in modo univoco su scala mondiale.
Come anticipato, lo strato di rete (o strato IP) realizza un modo di
trasferimento a datagramma e non fornisce garanzie sulla qualità di
servizio (QoS, Quality o Service) in
termini di ritardi, errori e pacchetti persi. La situazione è mitigata
dalla strato di trasporto (TCP, Transmission
Control Protocol) che offre ai processi applicativi un servizio
a circuito virtuale.
I protocolli di Internet sono realizzati in
software e sono pubblici; gli utenti stessi e molte sottoreti private
contribuiscono significativamente al trasporto, all’indirizzamento, alla
commutazione ed alla notifica delle informazioni. Queste sono alcune
ragioni fondamentali per cui Internet non è di nessuno ed è un
patrimonio dell’umanità.
Iniziamo l’argomento discutendo subito la stratificazione degli
indirizzi coinvolti in una comunicazione via Internet. Ogni livello
funzionale infatti utilizza le proprie convenzioni di indirizzamento,
come illustrato nella tabella a fianco. Se a prima vista questa
abbondanza di indirizzi può apparire esagerata, è proprio in questo modo
che si realizza l’interoperabilità tra ambienti di rete differenti.
I computer connessi ad Internet (detti nodi)
sono le sorgenti e le destinazioni dell’informazione, e sono individuati
da un indirizzo IP, che consiste in un gruppo di 4 byte
e che si scrive x.y.w.z con ognuna delle 4 variabili pari ad un numero tra 0
e 255.
I
nodi sono connessi alla rete mediante una interfaccia a volte indicata
come MAC (
Media Access Control).
Prendendo come esempio i nodi
connessi ad una LAN Ethernet, l’interfaccia di rete è individuata a sua
volta da un
indirizzo Ethernet composto da 6 byte. Quest’ultimo
è unico in tutto il mondo, ed impresso dal costruttore nella scheda di
interfaccia. L’indirizzo Ethernet viene però utilizzato solo nell’ambito
della LAN di cui il nodo fa parte, ossia dopo che i pacchetti sono stati
instradati dai router, per mezzo dell’indirizzo IP, verso la LAN.
Ogni nodo conosce, oltre al proprio indirizzo
IP, anche una
maschera di sottorete composta da una serie di uni
seguita da zeri, in numero complessivo di 32 bit, tanti quanti ne sono
presenti nell’indirizzo IP. Il termine
maschera è dovuto
all’operazione di AND binario (vedi tabella) operata tra la maschera e
gli indirizzi IP, per determinare se questi appartengano alla propria
stessa LAN oppure risiedano altrove.
Nel caso in cui la sottorete di un nodo Y verso cui il
nodo X deve inviare un pacchetto è la stessa su cui è
connesso X, allora questi può individuare l’indirizzo Ethernet
del destinatario
ed inviargli il pacchetto direttamente. In caso contrario, X invierà il pacchetto al
proprio default gateway verso Internet.
Alcuni gruppi di indirizzi IP (come quelli 192.168.w.z oppure 10.y.w.z ) non vengono instradati dai router, e possono
essere riutilizzati nelle reti private di tutto il mondo per
realizzare le cosiddette reti intranet operanti con gli stessi
protocolli ed applicativi che funzionano via Internet.
18.1.1.4
Domain Name Service↓ (dns)
L’utente di una applicazione internet in realtà
non è a conoscenza degli indirizzi IP dei diversi nodi, ma li identifica
per mezzo di nomi simbolici del tipo nodo.dominio.tld, detti anche indirizzi Internet. Il processo
di risoluzione che individua l’indirizzo IP associato al nome avviene
interrogando un particolare nodo, il Domain
Name Service (servizio dei nomi di dominio). La
struttura dei nomi, scandita dai punti, individua una gerarchia di
autorità per i diversi campi. Il campo tld è chiamato dominio
di primo livello (top level domain),
mentre il campo dominio in genere è stato registrato da qualche
organizzazione che lo giudica rappresentativo della propria offerta
informativa. Il campo nodo rappresenta invece una ben determinata macchina, il
cui indirizzo Internet completo è nodo.dominio.tld, e che
non necessariamente è collegato alla stessa LAN a cui sono connessi
gli altri nodi con indirizzo che termina per dominio.tld.
Quando un nodoX generico deve comunicare con nodoY.dominio.tld,
interroga il proprio DNS per conoscerne
l’IP. Nella rete sono presenti molti DNS, alcuni dei quali detengono
informazioni autorevoli riguardo ai nodi di uno o più domini,
altri (i DNS radice, o root)
detengono le informazioni relative a quali DNS siano autorevoli per i
domini di primo livello, ed altri fanno da tramite tra i primi due ed
i client che richiedono una risoluzione di indirizzo. Se il
DNS di nodoX non è autorevole per nodoY, allora provvede ad inoltrare la richiesta,
interrogando prima un DNS radice per individuare chi è autorevole per
.tld, quindi interroga questo per trovare chi è
autorevole per .dominio.tld, e quindi usa la risposta ottenuta per dirigere la
richiesta di risoluzione originaria. Se la cosa può sembrare troppo
macchinosa per funzionare bene, è perché la stessa sequenza di
operazioni non deve essere effettuata sempre: il DNS
utilizzato da nodoX riceve infatti, assieme all’IP di nodoY, anche una
informazione detta time to live (ttl o tempo di vita) che descrive
la scadenza della coppia nome-IP ottenuta. Genericamente il ttl è di qualche giorno, e fino alla sua
scadenza il DNS ricorda
la corrispondenza, in modo da fornire la propria copia in
corrispondenza delle richieste future, e ridurre sensibilmente il
traffico legato alla risoluzione degli indirizzi Internet. L’insieme
delle risoluzioni apprese è denominata cache del DNS.
Si è detto che ogni nodo è individuato in
Internet mediante il proprio indirizzo IP, ma questo non è sufficiente
ad indicare con quale particolare programma (che può essere uno
specifico server come nel caso del DNS) si vuole entrare in
comunicazione. I programmi che sono pronti a ricevere connessioni si
pongono in ascolto su ben determinate porte (o socket), identificate da
numeri, e che sono referenziati in modo
simbolico (es. http://, ftp://) dagli applicativi di
utente che si rivolgono allo strato di trasporto (il TCP) per stabilire
un collegamento con un server presente su di un nodo remoto.
Alcuni servizi rispondono ad indirizzi ben
noti, fissi per tutti i nodi, in quanto il chiamante deve sapere a
priori a quale porta connettersi. Il nodo contattato invece, apre con il
chiamante una connessione di ritorno, su di un numero di porta diverso,
che è stato comunicato dal chiamante al momento della richiesta di
connessione, e per il quale il chiamante non ha già aperto altre
connessioni differenti.
Discutiamo ora del TCP,
che offre ai processi applicativi un servizio di trasporto a circuito
virtuale, attaccato ad una porta di un nodo remoto individuato dall’indirizzo IP. Il suo
compito è quello di ricevere dai processi applicativi dei dati,
suddividerli in pacchetti, ed inviarli al suo pari che svolge il
processo inverso.
18.1.2.1
Il pacchetto TCP
La struttura di un pacchetto TCP è mostrata in
figura, e comprende una intestazione composta da 6 gruppi (o più) di 4
byte per un minimo di 192 bit, a cui segue un numero variabile di gruppi
di 4 byte di Dati, provenienti dagli strati applicativi superiori.
Troviamo subito i numeri delle porte a cui si riferisce la connessione,
mentre gli indirizzi IP sono aggiunti dallo strato di rete. I numeri
di
Sequenza e di
Riscontro servono rispettivamente a numerare
i bytes dei pacchetti uscenti, ed a notificare l’altro lato del
collegamento del numero di sequenza del prossimo byte che si aspetta di
ricevere, riscontrando
implicitamente come correttamente arrivati i pacchetti con numero di
sequenza più basso.
Offset (4 bit) codifica il numero di
parole da 4 byte dell’intestazione, mentre nei 6 bit Riservati
non è mai stato scritto nulla. I 6 bit del campo Controllo hanno
ognuno un nome ed un significato preciso, qualora posti ad uno. Il primo
(urg) indica che il campo urgent
pointer contiene un valore significativo; ack
indica che si sta usando il Numero di Riscontro; psh
indica un pacchetto urgente che non può rispettare la coda in ricezione;
rst segnala un malfunzionamento e
impone il reset della connessione; syn
è pari ad uno solo per il primo pacchetto inviato per richiedere di
creare una connessione; fin indica che
la sorgente ha esaurito i dati da trasmettere.
I 16 bit di Finestra rappresentano il
numero di byte che, a partire dal numero espresso dal Numero di
Riscontro, chi invia il pacchetto è in grado di ricevere, ed il
suo utilizzo sarà meglio illustrato tra breve nel contesto del controllo
di flusso. Il Checksum serve al ricevente per verificare se si
sia verificato un errore, il Puntatore Urgente contiene il
numero di sequenza dell’ultimo byte di una sequenza di dati urgenti, e
le Opzioni (di lunghezza variabile) sono presenti solo
raramente, ed utilizzate a fini di controllo, ad esempio per variare la
dimensione della finestra. Infine, il Riempimento conclude
l’ultima parola da 32 bit.
Uno stesso pacchetto TCP può svolgere funzioni di
sola segnalazione, o di sola trasmissione dati, od entrambe.
18.1.2.2
Apertura e chiusura della connessione
Il
TCP offre un servizio di di trasporto a circuito virtuale, e prima di
inviare dati, deve effettuare un colloquio iniziale con il nodo remoto
di destinazione. In particolare, il colloquio ha lo scopo di accertare
la disponibilità del destinatario ad accettare la connessione, e
permette alle due parti di scambiarsi i rispettivi numeri di sequenza
descritti alla nota
18.1.2.1↑.
L’estremo che viene “chiamato” riveste il ruolo di
server, e
l’altro di
client. Dato che anche quest’ultimo deve riscontrare
il numero di sequenza fornito dal server, occorrono tre pacchetti per
terminare il dialogo, che prende il nome di
three
way handshake↓. Il diagramma a lato
mostra l’evoluzione temporale del colloquio tra un processo applicativo
client (A), ed un server (B) che si pone in ascolto, mostrando come al
primo
syn che pone
NSA
= x, ne segua un altro che pone
NSB
= y, seguito a sua volta dall’
ack
di chi ha iniziato. La chiusura può avvenire per
diverse cause: o perché è terminato il messaggio, segnalato dal bit
fin, o per situazioni anomale, che il TCP
indica con il bit
rst.
18.1.2.3
Protocollo a finestra
Allo scopo di realizzare un controllo di flusso,
il TCP prevede l’uso dell’NR
inviato dal ricevente per dosare il ritmo con cui trasmettere i propri
pacchetti.
La lunghezza di
Finestra comunicata con il
syn
del ricevente, determina la quantità di memoria riservata per i buffer
dedicati alla connessione, che viene gestita come una memoria a
scorrimento o
finestra scorrevole↓
(
sliding window). Questa memoria è
presente per gestire i casi di pacchetti ritardati o fuori sequenza
↓,
e contiene i bytes già trasmessi. Il trasmittente (vedi figura) non fa
avanzare il limite inferiore finché non riceve un riscontro
↓ con
NR
maggiore di tale limite. In questo modo non occorre attendere il
riscontro di tutti i bytes, o di tutti i pacchetti (che devono comunque
essere di dimensione inferiore alla finestra), ma ci può avvantaggiare
trasmettendo l’intero contenuto della finestra.
Una finestra del tutto analoga è utilizzata dal
ricevente, allo scopo di ricomporre l’ordine originario dei pacchetti
consegnati disordinatamente dallo strato IP di rete. Non appena il
ricevente completa un segmento contiguo al limite inferiore, sposta
quest’ultimo in avanti di tanti bytes quanti ne è riuscito a leggere in
modo contiguo, ed invia un riscontro con NR
pari al più basso numero di byte che ancora non è pervenuto.
Nel caso in cui sia settato il bit urg,
si stanno inviando dati urgenti fuori sequenza, e che non devono
rispettare il protocollo a finestra, come ad esempio per recapitare un
segnale di interrupt relativo ad una sessione Telnet per terminare una
applicazione remota.
Trascorso un certo tempo (detto timeout)
nell’attesa di un riscontro, il trasmittente ritiene che alcuni
pacchetti sono andati persi, e li re-invia.
Il valore del timeout viene calcolato dinamicamente dal TCP in
base alle sue misure di round-trip delay,
ossia del tempo che intercorre in media tra invio di un pacchetto e
ricezione del suo riscontro. In questo modo il TCP si adatta alle
condizioni di carico della rete ed evita di ri-spedire pacchetti troppo
presto o di effettuare attese inutili. In particolare, nel caso di rete
congestionata aumenta la frequenza dei pacchetti persi, e valori di timeout
troppo ridotti potrebbero peggiorare la situazione.
Il meccanismo a finestra scorrevole determina,
istante per istante, il numero massimo di bytes che possono essere
trasmessi verso il destinatario, e pertanto consente al nodo meno veloce
di adeguare la velocità di trasmissione alle proprie capacità. La
dimensione della finestra può essere variata (su iniziativa del
ricevente) nel corso della connessione, in accordo al valore presente
nel campo Finestra dell’intestazione TCP. Ad esempio, una
connessione può iniziare con una dimensione di finestra ridotta, e poi
aumentarla nel caso in cui non si verifichino errori, la rete sopporti
il traffico, ed i nodi abbiano memoria disponibile.
Controllo
di congestione
↓
Il TCP può usare la sua misura di round-trip
delay come un indicatore di congestione della rete, e lo scadere
di un timeout come un segnale del peggioramento della
congestione. In tal caso quindi, può essere ridotta la dimensione della
finestra di trasmissione, caricando così di meno la rete.
Lo User Datagram Protocol è ancora un
protocollo di trasporto, che opera senza connessione, e sostituisce il
TCP per inviare pacchetti isolati, o serie di pacchetti la cui
ritrasmissione (se perduti) sarebbe inutile. Ad esempio, è utilizzato
nella trasmissione di dati in tempo reale, oppure per protocolli di
interrogazione e controllo come il dns.
L’Internet Protocol costituisce
l’ossatura della rete internet, realizzandone i servizi di rete ed
interfacciando le diverse sottoreti a cui sono connessi i nodi. Le sue
principali funzioni sono pertanto l’indirizzamento, l’instradamento e la
variazione della dimensione dei pacchetti prodotti dal TCP o da
altri protocolli degli strati superiori. Ogni pacchetto è inviato come
un messaggio indipendente, in modalità datagramma; la consegna dei
datagrammi non è garantita,
e questi possono essere persi, duplicati o consegnati fuori sequenza.
l’IP riceve dallo strato superiore (il TCP od un
altro protocollo) un flusso di byte suddivisi in pacchetti, a cui si
aggiunge l’indirizzo IP di destinazione; tale flusso è utilizzato per
riempire un proprio buffer di dimensione opportuna, che quando pieno (od
al termine del pacchetto ricevuto dall’alto) è incapsulato
aggiungendo una intestazione (l’header) che codifica la
segnalazione dello strato di rete realizzato dal protocollo IP.
18.1.3.1
L’intestazione IP
Codifica le informazioni mostrate nella figura a lato. Il campo
VER
indica quale versione si sta utilizzando, e permette sperimentazioni e
miglioramenti senza interrompere il servizio.
HLEN e
TLEN
indicano rispettivamente la lunghezza dell’header e di tutto il
pacchetto, mentre
TOS codifica un
Type of Service per
differenziare ad esempio la QoS
richiesta. L’
identifi-cazione riporta lo stesso valore per tutti
i frammenti di uno stesso datagramma, mentre l’
Offset di frammento
indica la posizione del frammento nel datagramma (con frammenti di
dimensione multipla di 8 byte).
Solo 2 dei tre bit di Flags sono usati, df (Don’t Fragment) per richiedere
alla rete di non frammentare il datagramma, e mf
(More Fragments) per indicare che seguiranno altri frammenti. Il
TTL (Time To Live) determina la massima permanenza del pacchetto
nella rete, il protocollo indica a chi
consegnare il datagramma all’arrivo (ad es. TCP o UDP), e Checksum
serve per verificare l’assenza di errori nell’header.
Gli Indirizzi IP di sorgente e
destinazione hanno l’evidente funzione di recapitare correttamente il
messaggio, mentre il campo Opzioni ha una lunghezza variabile,
può essere omesso, e consente ad esempio di richiedere il tracciamento
della serie di router attraversati.
18.1.3.2
Indirizzamento e Routing↓
A pagina
1↑ si è anticipata la relazione che lega la
parte iniziale dell’indirizzo IP ad una determinata sottorete, in modo
da partizionare i
232
indirizzi su di una gerarchia a due livelli e delegare la consegna
all’host finale ad uno o più router responsabili di servire la sottorete. In realtà la gerarchia presenta
una ulteriore suddivisione, dettata sia da esigenze amministrative che
funzionali.
I bit più significativi dell’indirizzo IP
identificano 5 diversi gruppi (o
classi) di indirizzi, descritti
dalla seguente tabella
:
Quando una organizzazione decide di essere presente in internet,
richiede l’assegnazione di un lotto di indirizzi IP ad apposti
organismi, i quali attribuiscono all’organizzazione un gruppo di
indirizzi di classe A, B o C in base al numero di nodi che
l’organizzazione prevede di mettere in rete. Una rete in classe B ad
esempio è individuata da 14 bit (ossia, assieme ai bit di classe, dai
primi due bytes dell’indirizzo IP), e quindi esistono 214
= 16384 diverse reti in classe B, ognuna con una capacità di 216 = 65536 diversi nodi. Chi è
intestatario di un gruppo di indirizzi, provvede ad assegnarli ai
singoli nodi della propria sottorete.
18.1.3.3
Subnetting↓ e Supernetting
Osserviamo ora che la maschera di sottorete
presentata a pag.
1↑
non coincide con il gruppo di bit che identifica la classe e la
rete: infatti, l’insieme di indirizzi 151.100.x.y corrisponde ad una
rete in classe B, mentre la maschera di sottorete 255.255.255.0
individua una sottorete in classe C. Praticamente, la rete in classe B è
stata ulteriormente suddivisa (
subnettata) in 256 sottoreti di
classe C, permettendo di realizzare un instradamento gerarchico su due
livelli nell’ambito dell’organizzazione intestataria della rete in
classe B.
L’operazione inversa (detta
supernetting), ossia quella di
aggregare più reti di dimensione ridotta in una di dimensione maggiore,
ha senso all’interno del router che instrada il traffico verso
l’organizzazione intestataria delle sottoreti, in quanto permette di
ridurre la dimensione delle tabelle di routing, che contengono così un
solo elemento relativo alla super-rete, anziché un elemento per ogni
singola sottorete.
18.1.3.4
Classless Interdomain Routing↓
- cidr
Nella prima metà degli anni ’90 apparve evidente
che il partizionamento degli indirizzi nelle tre classi A, B e C non era
rispondente alle richieste dell’utenza; accadeva infatti che le reti in
classe C erano troppo “piccole”, mentre quelle in classe B rischiavano
di esaurirsi a breve, pur essendo sfruttate molto poco. Per questo motivo, è
stata rimossa la suddivisione rigida nelle tre classi, e si è
sistematicamente applicato il principio del supernetting. In pratica, si
è ridefinita la maschera di sottorete, come una sequenza di uni
allineata a sinistra, permettendo così di definire reti di dimensione
pari a una potenza di due qualsiasi. Come risultato, ora una sottorete è
identificata da una coppia indirizzo/maschera del tipo (ad es.) 172.192.0.0
⁄ 12, che rappresenta tutti 220
indirizzi che vanno da 172.192.0.0 a 172.207.255.255, che hanno i 12 bit più
elevati uguali a 101011001100: questa
sequenza prende il nome di prefisso della rete. In definitiva
quindi, la maschera è espressa come il numero di bit più significativi
in comune a tutti i nodi della sottorete.
Un router decide su che porta instradare un
pacchetto IP in base al confronto tra l’indirizzo di destinazione e
tutti i prefissi presenti nella tabella di routing, associati ciascuno
alla “migliore” porta di uscita verso la sottorete definita dal
prefisso. Nel caso in cui si verifichi più di una uguaglianza, si
sceglie l’instradamento caratterizzato dal maggior numero di bit
coincidenti, ossia relativo al prefisso più lungo. Infatti, in
tal modo viene preferita la direzione più specifica verso la
destinazione finale. In assenza di uguaglianze invece, il pacchetto è
inoltrato in base ad una default route, che tipicamente rimanda
la decisione ad un router “gerarchicamente più elevato”.
18.1.3.6
Sistemi Autonomi↓ e Border Gateway
Vi sono router collegati direttamente con le lan, e configurati per instradare
correttamente i pacchetti diretti a destinazioni locali. Vi sono poi
router collegati solo ad altri router, che apprendono gli
instradamenti verso le reti locali mediante appositi protocolli di
routing che consentono ai router di primo tipo di pubblicizzare
(advertise) le reti raggiungibili
direttamente, ed ai router del secondo tipo di fare altrettanto nei
confronti dei loro pari.
L’insieme di sottoreti (e router, nodi e dns)
gestite da una stessa organizzazione prende il nome di Autonomous
System (as), e nel suo ambito
sono attivi protocolli di routing detti Interior Gateway Protocols
(igp), che distribuiscono le
informazioni di raggiungibilità interna. Alcuni router di uno stesso as svolgono il ruolo di Border Gateway
(bg), e comunicano con i bg
di altri as mediante appositi Exterior
Gateway Protocols (egp),
pubblicizzando all’esterno le proprie sottoreti, apprendendo dagli altri
bg la raggiungibilità delle sottoreti
esterne, e distribuendo tali informazioni ai router interni. Un compito
particolare dell’egp, è quello di
attuare qualche politica nei confronti del traffico di transito
tra due as diversi dall’as
di cui il bg fa parte: in tal caso, il
protocollo prende il nome di Border Gateway Protocol (bgp).
L’applicazione del cdir
comporta, per ogni scambio di informazioni di routing, la necessità di
aggregare o disaggregare i prefissi di sottorete, in modo da mantenere
al minimo la dimensione delle tabelle di instradamento.
Tornando all’esame della tabella di pag.
1↑, in cui la classe E costituisce
evidentemente una “riserva” di indirizzi per poter effettuare
sperimentazioni, la classe D individua invece dei canali
multicast. Quando un nodo
decide di aderire ad un canale multicast, invia un messaggio in tal senso al proprio router
più vicino, che a sua volta si occupa di informare gli altri router.
Questi ultimi provvederanno quindi, qualora osservino transitare un
pacchetto avente come destinazione un canale multicast, ad instradarlo
verso l’host aderente. In presenza di più nodi nella stessa sottorete in
ascolto dello stesso canale, solo una copia dei pacchetti attraverserà
il router: il traffico multicast evita infatti di aprire una connessione dedicata
per ogni destinatario, ma si suddivide via via nella rete solo quando i
destinatari sono raggiungibili da vie diverse.
Ci
occupiamo qui di un caso particolare di realizzazione dei primi due
livelli del modello
iso-osi. Come
anticipato a pag.
1↑,
molti nodi di Internet sono univocamente individuati da un indirizzo
(Ethernet) di 6 byte che, sebbene sia unico al mondo, viene usato
solamente nell’ambito della
lan a cui
il nodo è connesso, in quanto la distribuzione mondiale degli indirizzi
Ethernet è casuale:
se infatti questi fossero usati come indirizzi a livello di rete, le
tabelle di instradamento dovrebbero essere a conoscenza di
tutti
i nodi esistenti.
Puntualizziamo inoltre che un nodo di Internet può essere connesso alla
rete anche per via telefonica, o con svariati altri metodi; ci limitiamo
qui a descrivere il caso delle
lan
Ethernet, peraltro particolarmente diffuso.
Ethernet individua un particolare tipo di
pacchetto dati, adottato inizialmente dalla Xerox, adatto ad incapsulare
dati provenienti da protocolli diversi. Successivamente, il formato è
stato standardizzato dall’IEEE, e per ciò che ci interessa le specifiche
sono quelle identificate dalle sigle 802.2 (Logical
Link Control, LLC) e 802.3 (Carrier
Sense Multiple Access - Collision Detect, CSMA/CD).
La figura mostra il legame tra queste due sigle e gli strati del
modello; lo strato
mac in cui si
realizza il
csma/cd individua il
Media Access Control. Il mezzo trasmissivo
è un cavo, coassiale o coppia simmetrica, sul quale sono collegati tutti
nodi della
lan, che si
contendono
il mezzo trasmissivo, in quanto vi può trasmettere solo un nodo per
volta. Inoltre, tutti i nodi sono in ascolto sullo stesso mezzo per
ricevere i pacchetti a loro destinati, riconoscibili per la presenza del
proprio indirizzo Ethernet nel campo destinazione. Un pacchetto Ethernet
può inoltre riportare un indirizzo di destinazione particolare, detto di
Broadcast↓, che obbliga
tutti i nodi
presenti alla ricezione del pacchetto.
18.1.4.1
Address Resolution Protocol - arp↓
Quando un pacchetto IP giunge ad un router, e
l’indirizzo IP indica che il destinatario è connesso ad una delle lan direttamente raggiungibili dal router,
questo invia su quella lan un
pacchetto broadcast, su cui viaggia una richiesta arp
(address resolution protocol), allo
scopo di individuare l’indirizzo Ethernet del nodo a cui è assegnato
l’indirizzo IP di destinazione del pacchetto arrivato al router. Se tale
nodo è presente ed operativo, riconosce che la richiesta è diretta a
lui, ed invia un pacchetto di risposta comunicando il proprio indirizzo
Ethernet, che viene memorizzato dal router in una apposita tabella.
Operazioni simili sono svolte da ognuno dei nodi
della lan, ogni volta che debbano
inviare un pacchetto ad un altro nodo direttamente connesso alla stessa
rete locale. Se al contrario l’IP di destinazione non fa parte della
stessa lan, il pacchetto è inviato al
default gateway.
18.1.4.2
Formato di pacchetto
Il pacchetto Ethernet è generato dall’LLC e dal
MAC, ognuno dei quali incapsula il pacchetto IP con le proprie
informazioni di protocollo.
Nella figura seguente è mostrato il risultato
finale delle operazioni. In testa troviamo 7 byte di
preambolo,
necessario a permettere la sincronizzazione dell’orologio del ricevente
con
quello in trasmissione; dato che la sincronizzazione richiede un tempo
non noto a priori, un byte di
flag segnala l’inizio del
pacchetto. Troviamo quindi gli
indirizzi Ethernet di sorgente e
destinazione, due byte che indicano la
lunghezza della restante
parte del pacchetto, e quindi l’incapsulamento dei dati prodotti dall’
llc. In fondo, sono presenti 4 byte che
realizzano il
controllo di errore.
L’llc inserisce
invece, in testa al pacchetto IP, due indirizzi sap
(service access point) di sorgente e
destinazione, da utilizzare per indicare il codice che identifica il
tipo di rete e/o protocollo del pacchetto incapsulato (ad es., IP od arp). Nel campo di controllo
possono essere anche ospitati numeri di sequenza, per i casi che lo
possano richiedere, ed infine troviamo il pacchetto IP originario.
D’altra parte, per ovviare al numero limitato di
possibili incapsulamenti esprimibili utilizzando solo gli 8 bit dei
campi sap, è stata introdotta una
estensione all’llc denominata snap
(Subnetwork Access Protocol)
che pone i campi dsap, ssap
e controllo pari a 0xAAAA03, a cui aggiunge altri 5 bytes, dei
quali i primi tre sono denominati oui
(Organizationally Unique Identifier) che, se posti tutti a zero,
stabiliscono che i due byte seguenti (indicati come protocol ID)
debbano essere interpretati come un codice Ethertype,
lo stesso usato nel formato Ethernet II discusso appresso, permettendo
quindi di specificare finalmente il protocollo incapsulato.
Infine, viene molto frequentemente usato un
formato di trama ancora diverso, detto Ethernet II o dix,
che corrisponde a quello definito inizialmente prima che l’ieee
emettesse gli standard della serie 802, e che usa i 16 bit del campo lunghezza
per indicare direttamente l’Ethertype della sdu
incapsulata, ed omette i campi dsap, ssap e di controllo. In tal caso, il campo
lunghezza rappresenta un numero più grande di 0x0600, maggiore
della massima lunghezza prevista, e ciò fa si che venga interpretato
come codice Ethertype, e che se sono incapsulati pacchetti ip,
vale 0x0800. La figura seguente, tratta dal documento dell’ieee, illustra la corrispondenza tra i
campi del formato snap e dix.
Come anticipato, il mezzo trasmissivo è in
comune con tutti i nodi, e dunque si è studiata una particolare
soluzione il cui nome csma/cd indica
che l’Accesso Multiplo avviene in due fasi: prima di trasmettere,
si ascolta se non vi sia già qualcuno che trasmette (Carrier
Sense), e durante la trasmissione, si verifica che nessun altro
stia trasmettendo contemporaneamente (Collision
Detect). Pertanto, ogni nodo che debba trasmettere si pone
prima in ascolto, e se osserva che già vi sono trasmissioni in corso,
attende un tempo casuale e riprova. Quando trova il mezzo “libero”,
inizia a trasmettere, ma contemporaneamente verifica che nessun altro
inizi a sua volta la trasmissione: questo fatto può accadere, in virtù
del tempo di propagazione non nullo, e determina
un periodo (detto di contesa, e che dipende dalla massima
lunghezza del cavo) entro il quale un nodo può erroneamente credere che
nessun altro stia trasmettendo.
Qualora sia rilevata una contesa, i due nodi
smettono di trasmettere, e riprovano solo dopo una attesa di durata
casuale.
Il segnale relativo al pacchetto Ethernet viene
trasmesso adottando una codifica di linea di tipo Manchester
differenziale. La configurazione con tutti i nodi collegati su di uno
stesso cavo è detta a bus, e sono state coniate apposite sigle
per identificare il tipo di connessione, come ad esempio 10Base5
e 10Base2, relative al collegamento di
banda base a 10 Mbps, su cavo tick e thin, con estensione
massima 500 e 200 metri.
18.1.5
Fast e Gigabit Ethernet
Mentre si proponeva atm
come una soluzione idonea per quasi tutti gli ambiti, la tecnologia
Ethernet ha incrementato la velocità trasmissiva di un fattore pari a
mille, e si propone sempre più come soluzione generalizzata.
Nel 1995 è stato definito lo standard ieee
802.3u detto Fast Ethernet, che eleva la velocità di
trasmissione a 100 Mbps ed impiega due diversi cavi utp per le due direzioni di
trasmissione, rendendo eventualmente la comunicazione full-duplex.
In quest’ambito sono definiti i sistemi 10BaseT
e 100BaseT, relativi all’uso del cavo
utp anziché di un coassiale, e
prevedono una topologia a stella per la lan,
realizzata utilizzando una unità centrale (detta hub=mozzo
di ruota) da cui si dipartono tanti cavi, ognuno che collega un
unico nodo. Nel caso di un hub
economico, questo svolge solo le funzioni di ripetitore (ritrasmette
tutto su tutte le sue porte) e dunque le collisioni possono ancora
verificasi.
D’altra parte, i dispositivi detti brigde
o lan switch apprendono dai
pacchetti in transito gli indirizzi ethernet dei nodi collegati alle
porte, ed evitano di ritrasmettere i pacchetti sulle porte dove non
si trova il destinatario. Dato che gran parte del traffico è
inviato verso il gateway della lan,
lo switch apprende in fretta su che
porta questo si trovi, cosicché tutti i pacchetti destinati all’esterno
non sono ritrasmessi sugli altri rami della lan,
ed il traffico tra i nodi connessi allo switch
non si propaga al resto della lan.
La lunghezza massima dei collegamenti è ora
ridotta a 100 metri, per il motivo che un pacchetto di dimensione minima
di 64 byte trasmesso a 100 Mbps, impiega un tempo che è (1)/(10) di quello relativo alla
velocità di 10 Mbps, e quindi per consentire la detezione di collisione,
si è dovuta ridurre di pari misura la massima distanza tra nodi
trasmittenti.
18.1.5.3
Dominio di broadcast↓ e
VLAN↓
Anche se i dispositivi bridge
e switch evitano di trasmettere
traffico verso le porte diverse da quella di destinazione, alcuni
pacchetti devono comunque essere ritrasmessi in tutte le direzioni: si
tratta del traffico broadcast, diretto verso un ben preciso
insieme di indirizzi ethernet, ed usato per funzioni di coordinamento
tra i nodi della lan, come ad esempio
l’esplora risorse di rete. I traffico broadcast non esce dalla lan, arrestandosi al router di livello IP;
una eccessiva presenza di traffico broadcast può però pregiudicare
l’efficienza sia della lan che dei
suoi nodi, oltre che produrre problemi di sicurezza; per questo si è
sviluppata la possibilità di assegnare le porte di uno switch a diversi
domini di broadcast, detti lan
virtuali (vlan), che non
scambiano traffico, realizzando di fatto molteplici lan
con uno stesso cablaggio. Per interconnettere le lan,
occorre attraversare un dispositivo router.
Nel
giugno 1998 viene standardizzato l’
ieee
802.3z, che porta ad 1 Gbps la velocità di trasmissione delle trame
Ethernet, rimpiazzando lo strato di codifica di linea dell’802.3 con i
due strati inferiori dell’
ansi x3t11
Fiber Channel. In questo modo, si mantiene la compatibilità con
gli strati
llc e
mac
di Ethernet, mentre la trasmissione avviene su fibra ottica o su cavo in
accordo alla tabella seguente.
Dato che ora la velocità di trasmissione è 10
volte quella del fast Ethernet, la compatibilità con il mac
csma/cd richiederebbe di ridurre la
massima lunghezza del collegamento a 10 metri. Al contrario, è stata
aumentata la durata minima di una trama portandola a 512 byte, in modo
da aumentare la durata della trasmissione e garantire la detezione di
collisione. In effetti, il mac
ethernet continua a produrre pacchetti di durata minima 64 byte, e
questi sono riempiti (padded) fino a 512 byte con una carrier
extension di simboli speciali. Questa operazione è particolarmente
inefficiente se i pacchetti da 64 byte sono frequenti; in tal caso si
attua allora il packet bursting che, esauriti i 512 byte minimi
realizzati come indicato, accoda gli ulteriori pacchetti nello stesso
burst trasmissivo, fino ad una lunghezza di 1500 byte.
La figura a lato mostra la pila protocollare per Gigabit Ethernet. La
gmii permette di usare lo strato
mac
con qualunque strato fisico, ed opera sia in full-duplex che in
half-duplex, alle velocità di 10, 100 e 1000 Mbps, mediante due percorsi
dati (
Tx e
Rx)
da 8 bit, più due segnali di strato per indicare presenza di portante e
detezione di collisione, che sono mappati dal
rs
nelle primitive riconosciute dallo strato
mac
preesistente.
Lo strato fisico è suddiviso in tre sottolivelli.
Il pcs fornisce una interfaccia
uniforme al rs per tutti i media.
Provvede alla conversione 8b/10b
tipica del Fiber Channel, che rappresenta gruppi di 8 bit
mediante code group da 10 bit, alcuni dei quali rappresentano i
simboli, ed altri sono codici di controllo, come quelli usati per la carrier
extension. Il pcs genera inoltre
le indicazioni sulla portante e sulla collisione, e gestisce la
auto-negoziazione sulla velocità di trasmissione e sulla bidirezionalità
del media.
Il pma provvede
alla conversione parallelo-serie e viceversa, mentre il pmd
definisce l’mdi, ossia la segnalazione
di strato fisico necessaria ai diversi media, così come il tipo di
connettore.
18.1.5.7
Ripetitore full-duplex e controllo di flusso
Qualora tutte le porte di un ripetitore siano di
tipo full-duplex, non può più verificarsi contesa di accesso al mezzo, e
la contesa avviene all’interno del ripetitore, che (non essendo un switch) copia tutte le trame in ingresso
(debitamente bufferizzate in apposite code) in tutte le code associate
alle porte di uscita. Pertanto, la lunghezza massima dei collegamenti
non è più dettata dalla necessità di rilevare collisioni, ma dalle
caratteristiche del mezzo trasmissivo. D’altra parte, possono
verificarsi situazioni di flooding delle code di ingresso; il
comitato ieee 802.3x ha quindi
definito un meccanismo di controllo di flusso, che mette in grado i
ripetitori (e gli switch) di richiedere ai nodi connessi la sospensione
temporanea della trasmissione.
18.1.5.8
10 Gigabit Ethernet
Nel 2002 viene definito lo standard ieee
802.3ae, che stabilisce le modalità operative di un collegamento
Ethernet operante solo in full duplex su fibra ottica. Lo standard
prevede di interoperare con la trasmissione sonet/sdh.