RETI1 Cap5
RETI1 Cap5
PROF. G. BONGIOVANNI
1
5) Il livello tre (Network)
Il livello network è incaricato di muovere i pacchetti dalla sorgente fino alla destinazione
finale, attraversando tanti sistemi intermedi (router) della subnet di comunicazione quanti è
necessario.
Ciò è molto diverso dal compito del livello data link, che è di muovere informazioni solo da
un capo all'altro di un singolo canale di comunicazione wire-like.
Nel progetto e nella realizzazione del livello network di una architettura di rete si devono
prendere decisioni importanti in merito a:
• servizi offerti al livello transport;
• organizzazione interna della subnet di comunicazione.
In merito ai servizi offerti al livello superiore, ci sono (come abbiamo già accennato) due
tipologie fondamentali di servizi:
• servizi connection-oriented;
• servizi connectionless.
La prima scuola di pensiero afferma che il livello network deve fornire un servizio
sostanzialmente affidabile e orientato alla connessione. In questa visione, succede che:
• le peer entitiy stabiliscono una connessione, negoziandone i parametri (di qualità, di costo,
ecc.), alla quale viene associato un identificatore;
• tale identificatore viene inserito in ogni pacchetto che verrà inviato;
• la comunicazione è bidirezionale e i pacchetti viaggiano, in sequenza, lungo il cammino
assegnato alla connessione;
2
• il controllo di flusso è fornito automaticamente (attraverso alcuni dei parametri negoziati,
come ad esempio il dimensionamento di una o più finestre scorrevoli).
La seconda scuola di pensiero ritiene invece che la sottorete debba solo muovere dati e
nient'altro:
• la sottorete è giudicata inerentemente inaffidabile, per cui gli host devono provvedere per
conto proprio alla correzione degli errori e al controllo di flusso;
• una ovvia conseguenza è che il servizio offerto dal livello network dev'essere datagram,
visto che è inutile inserire le funzioni di controllo degli errori e del flusso in due diversi
livelli;
• i pacchetti viaggiano indipendentemente, e dunque devono tutti contenere un
identificatore (ossia l'indirizzo) della destinazione.
Le scelte più comuni sono di offrire servizi connection oriented affidabili oppure servizi
connectionless non affidabili, mentre le altre due combinazioni, anche se tecnicamente
possibili, non sono diffuse.
Questo è un problema separato ed indipendente da quello dei servizi offerti, anche se spesso
c'è una relazione fra i due.
3
• quando arrivano pacchetti che contengono l' ID di tale circuito virtuale, essi
vengono instradati di conseguenza (tutti nello stesso modo).
• connectionless:
• i router si limitano a instradare ogni pacchetto che arriva sulla base del suo indirizzo
di destinazione, decidendo di volta in volta come farlo proseguire;
• i router hanno delle tabelle di instradamento (routing table)che indicano, per ogni
possibile destinazione, quale linea in uscita utilizzare; si noti che queste tabelle
esistono anche nelle subnet del tipo precedente, dove però servono solamente nella
fase di setup della connessione (per decidere come instradare i pacchetti di setup);
• quando offre un servizio connection-oriented, questo livello fa credere al livello
superiore che esista una connessione, ma poi i pacchetti viaggiano
indipendentemente (e quindi hanno tutti l'indirizzo del destinatario) e vengono
rimessi in ordine dal livello network solo a destinazione, prima di essere consegnati
al livello superiore.
Ognuna delle due organizzazioni della subnet sopra viste ha i suoi supporter e i suoi
detrattori, anche sulla base delle seguenti considerazioni:
Dev'essere chiaro che i servizi offerti sono indipendenti dalla realizzazione interna della
subnet. E' possibile avere tutte le quattro combinazioni di servizio offerto e implementazione
della subnet:
• servizi connection oriented su circuiti virtuali;
• servizi connectionless su subnet datagram;
• servizi connection oriented su subnet datagram (si cerca di fornire comunque un servizio
robusto);
• servizi connectionless su circuito virtuale (esempio: IP su subnet ATM).
4
5.3) Algoritmi di routing
Un algoritmo di routing è quella parte del software di livello network che decide su quale
linea di uscita instradare un pacchetto che è arrivato:
• in una subnet datagram l'algoritmo viene applicato ex novo ad ogni pacchetto;
• in una subnet basata su circuiti virtuali l'algoritmo viene applicato solo nella fase di setup
del circuito; in tale contesto si usa spesso il termine session routing.
Purtroppo, gli ultimi due requisiti sono spesso in conflitto fra loro; inoltre, a proposito
dell'ottimalità, non sempre è chiaro cosa si voglia ottimizzare. Infatti, supponiamo che si
vogliano:
• minimizzare il ritardo medio pacchetti;
• massimizzare il throughput totale dei pacchetti.
Si scopre facilmente che questi due obiettivi sono in conflitto fra loro, perché di solito
aumentare il throughput allunga le code sui router e quindi aumenta il ritardo: questo è vero
per qualunque sistema basato su code gestito in prossimità della sua capacità massima.
5
• dai router adiacenti;
• da tutti i router;
• quanto spesso rivedono le decisioni:
• a intervalli di tempo prefissati;
• quando il carico cambia;
• quando la topologia cambia;
• quale metrica di valutazione adottano:
• distanza;
• numero di hop;
• tempo di transito stimato.
E' possibile fare una considerazione generale sull'ottimalità dei cammini, indipendentemente
dallo specifico algoritmo adottato per selezionarli.
Il principio di ottimalità dice che se il router j è nel cammino ottimo fra i e k, allora anche il
cammino ottimo fra j e k è sulla stessa strada:
i j k
Se così non fosse, ci sarebbe un altro cammino (ad es. quello tratteggiato in figura) fra j e k
migliore di quello che è parte del cammino ottimo fra i e k, ma allora ci sarebbe anche un
cammino fra i e k migliore di quello ottimo.
Una diretta conseguenza è che l'insieme dei cammini ottimi da tutti i router a uno specifico
router di destinazione costituiscono un albero, detto sink tree per quel router.
In sostanza, gli algoritmi di routing cercano e trovano i sink tree relativi a tutti i possibili
router di destinazione, e quindi instradano i pacchetti esclusivamente lungo tali sink tree.
6
5.3.2) Algoritmi statici
Questi algoritmi, come abbiamo già accennato, sono eseguiti solamente all'avvio della rete, e
le decisioni di routing a cui essi pervengono sono poi applicate senza più essere modificate.
All'avvio della rete (o quando ci sono variazioni permanenti della topologia) l'algoritmo:
• applica al grafo un algoritmo per il calcolo del cammino minimo fra ogni coppia di nodi;
ad esempio, il noto algoritmo di Dijkstra ('59) può essere usato;
• invia tali informazioni a tutti i router.
Quale sia il cammino minimo dipende da qual'è la grandezza che si vuole minimizzare.
Tipicamente si usano:
• numero di hop, cioè di archi, da attraversare;
• lunghezza dei collegamenti;
• tempo medio di accodamento e trasmissione;
• una combinazione di lunghezza, banda trasmissiva, traffico medio, ecc.
Flooding
La tecnica del flooding consiste nell'inviare ogni pacchetto su tutte le linee eccetto quella da
cui è arrivato.
In linea di principio il flooding può essere usato come algoritmo di routing (ogni pacchetto
inviato arriva a tutti i router) ma presenta l'inconveniente di generare un numero enorme
(teoricamente infinito!) di pacchetti.
7
• inserire la coppia (source router ID, sequence number) in ogni pacchetto. Ogni router
esamina tali informazioni e ne tiene traccia, e quando le vede per la seconda volta scarta il
pacchetto;
• selective flooding: i pacchetti vengono duplicati solo sulle linee che vanno all'incirca nella
giusta direzione (per questo si devono mantenere apposite tabelle a bordo).
Flow-based routing
Questo algoritmo è basato sull'idea di:
• calcolare in anticipo il traffico atteso su ogni linea;
• da questi calcoli derivare una stima del ritardo medio atteso per ciascuna linea;
• basare su tali informazioni le decisioni di routing.
Dai ritardi calcolati per le singole linee si può calcolare il ritardo medio dell'intera rete,
espresso come somma pesata dei ritardi delle singole linee. Il peso di ogni linea è dato dal
traffico su quella linea diviso il traffico totale sulla rete.
8
5.3.3) Algoritmi dinamici
Per i suoi vicini immediati il router stima direttamente la distanza dei collegamenti
corrispondenti, mandando speciali pacchetti ECHO e misurando quanto tempo ci mette la
risposta a tornare.
A intervalli regolari ogni router manda la sua tabella completa (cioè il suo vector) a tutti i
vicini, e riceve quelle dei vicini.
Quando un router ha ricevuto i vector dei vicini, calcola i nuovi valori da inserire nel proprio
vector. Analizzando a turno i vector di tutti i propri vicini e per ogni possibile router di
destinazione X, calcola la concatenazione migliore (cioè di minor costo complessivo) di
L'algoritmo distance vector routing funziona piuttosto bene, ma è molto lento nel reagire alle
cattive notizie, cioè quando un collegamento va giù. Ciò è legato al fatto che i router non
conoscono la topologia della rete.
9
Infatti, consideriamo questo esempio:
A B C D E <- Router
1 2 3 4 <- Distanze da A
A B C D E <- Router
Ciò perché B, non ricevendo risposta da A, crede di poterci arrivare via C, che ha distanza
due da A. Col proseguire degli scambi, si ha la seguente evoluzione:
A B C D E <- Router
ecc.
A lungo andare, tutti i router vedono lentamente aumentare sempre più la distanza per
arrivare ad A. Questo è il problema del count-to-infinity.
Se la distanza rappresenta il numero di hop si può porre come limite il diametro della rete,
ma se essa rappresenta il ritardo l'upper bound dev'essere molto alto, altrimenti cammini con
un ritardo occasionalmente alto (magari a causa di congestione) verrebbero considerati
interrotti.
Nonostante ciò, il distance vector routing era l'algoritmo di routing di ARPANET ed è usato
anche in Internet col nome di RIP (Routing Internet Protocol), e nelle prime versioni di
DECnet e IPX.
10
Link state routing
Sopratutto a causa della lentezza di convergenza del distance vector routing, si è cercato un
approccio diverso, che ha dato origine al link state routing.
L'idea è questa:
• ogni router tiene sott'occhio lo stato dei collegamenti fra se e i suoi vicini immediati
(misurando il ritardo di ogni linea) e distribuisce tali informazioni a tutti gli altri;
• sulla base di tali informazioni, ogni router ricostruisce localmente la topologia completa
dell'intera rete e calcola il cammino minimo fra se e tutti gli altri.
Quando il router si avvia, invia un pacchetto HELLO su tutte le linee in uscita. In risposta
riceve dai vicini i loro indirizzi (univoci in tutta la rete).
Inviando vari pacchetti ECHO, misurando il tempo di arrivo della risposta (diviso 2) e
mediando su vari pacchetti si deriva il ritardo della linea.
La distribuzione dei pacchetti è la parte più delicata, perché errori in questa fase possono
portare qualche router ad avere idee sbagliate sulla topologia, con conseguenti
malfunzionamenti.
11
Di base si usa il flooding, inserendo nei pacchetti le coppie (source router ID, sequence
number) per eliminare i duplicati. Tutti i pacchetti sono confermati. Inoltre, per evitare che
pacchetti vaganti (per qualche errore) girino per sempre, l'età del pacchetto viene
decrementata ogni secondo, e quando arriva a zero il pacchetto viene scartato.
Combinando tutte le informazioni arrivate, ogni router costruisce il grafo della subnet e
calcola il cammino minimo a tutti gli altri router.
Quando la rete cresce fino contenere decine di migliaia di nodi, diventa troppo gravoso
mantenere in ogni router la completa topologia. Il routing va quindi impostato in modo
gerarchico, come succede nei sistemi telefonici.
12
Regione
Router
di confine
Router
interni
13
5.4) Controllo della congestione
Quando troppi pacchetti sono presenti in una parte della subnet, si verifica una congestione
che degrada le prestazioni. Ciò dipende dal fatto che, quando un router non riesce a gestire
tutti i pacchetti che gli arrivano, comincia a perderli, e ciò causa delle ritrasmissioni che
aggravano ancor più la congestione.
Situaz. ideale
Congestione
Pacchetti spediti
Inoltre, la congestione in un router tende a propagarsi ai suoi vicini che gli inviano dati.
Infatti, quando tale router è costretto a scartare i pacchetti che riceve non li conferma più, e
quindi i router che li hanno spediti devono mantenerli nei propri buffer, aggravando così
anche la propria situazione.
Il controllo della congestione è un problema globale di tutta la rete, ed è ben diverso dal
problema del controllo di flusso nei livelli data link, network (nel caso dei servizi connection
oriented) e trasporto, che invece riguarda una singola connessione sorgente-destinazione.
14
Ci sono due approcci al problema della congestione:
• open loop (senza controreazione);
• closed loop (con controreazione).
Il primo cerca di impostare le cose in modo che la congestione non si verifichi, ma poi non
effettua azioni correttive.
In questo approccio, di tipo open loop, l'idea è di forzare la trasmissione dei pacchetti a un
ritmo piuttosto regolare, onde limitare la possibilità di congestioni.
Se l'host genera più pacchetti di quelli che possono essere contenuti nei buffer, essi si
perdono.
15
Host
Flusso irregolare
Interfaccia
con alg. leaky bucket
Flusso regolare
Rete
In questo modo, l'host può anche produrre un traffico bursty senza creare problemi sulla rete;
finché il data rate medio non supera i b bps tutto funziona regolarmente, oltre si cominciano a
perdere pacchetti.
Quando poi c'è da trasmettere, lo si fa sfruttando tutto il credito disponibile per trasmettere,
fino all'esaurimento di tale credito, alla massima velocità consentita dalla linea.
Il secchio contiene dei token, che si creano con una cadenza prefissata (ad esempio uno ogni
millisecondo) fino a che il loro numero raggiunge un valore M prefissato, che corrisponde
all'aver riempito il secchio di token.
Per poter tramettere un pacchetto (o una certa quantità di byte), deve essere disponibile un
token.
Se ci sono k token nel secchiello e h > k pacchetti da trasmettere, i primi k sono trasmessi
subito (al data rate consentito dalla linea) e gli altri devono aspettare dei nuovi token.
16
Dunque, potenzialmente dei burst di M pacchetti possono essere trasmessi in un colpo solo,
fermo restando che mediamente non si riesce a trasmettere ad una velocità più alta di quella
di generazione dei token.
Un'altra differenza col leaky bucket è che i pacchetti non vengono mai scartati (il secchio
contiene token, non pacchetti). Se necessario, si avverte il livello superiore, produttore dei
dati, di fermarsi per un pò.
Questi due algoritmi possono essere usati per regolare il traffico host-router e router-router;
in quest'ultimo caso però, se il router sorgente è costretto a fermarsi invece di inviare dati e
non ha spazio di buffer a sufficienza, questi possono perdersi.
Flow specification
Il traffic shaping è molto efficace se tutti (sorgente, subnet e destinazione) si accordano in
merito.
Tale accordo si chiama flow specification e consiste in una struttura dati che descrive le
grandezze in questione.
Quindi, per evitare la congestione è possibile negare l'attivazione di nuovi circuiti virtuali ove
non vi siano sufficienti risorse per gestirli. Questa tecnica va sotto il nome di admission
control.
17
5.4.2) Choke packet
In questo approccio, di tipo closed loop, è previsto che un router tenga d'occhio il grado di
utilizzo delle sue linee di uscita. Il router misura, per ciascuna linea, l'utilizzo istantaneo U e
accumula, entro una media esponenziale M, la storia passata:
dove
• il parametro a (compreso fra 0 ed 1) è il peso dato alla storia passata;
• (1 - a) è il peso dato all'informazione più recente.
Quando, per una delle linee in uscita, M si avvicina a una soglia di pericolo prefissata, il
router esamina i pacchetti in ingresso per vedere se sono destinati alla linea d'uscita che è in
allarme.
In caso affermativo, invia all'host di origine del pacchetto un choke packet (to choke significa
soffocare) per avvertirlo di diminuire il flusso.
Quando l'host sorgente riceve il choke packet diminuisce il flusso (tipicamente lo dimezza) e
ignora i successivi choke packet per un tempo prefissato, perché tipicamente ne arriveranno
molti in sequenza.
Trascorso tale tempo prefissato, l'host si rimette in attesa di altri choke packet. Se ne arrivano
altri, riduce ancora il flusso. Altrimenti, aumenta di nuovo il flusso.
Questa tecnica rende molto più veloce il sollievo del router che ha per primo i problemi di
congestione, ma richiede più spazio di buffer nei router sul percorso dall'host originario a
quel router.
18
5.5) Internetworking
Come sappiamo, esistono diverse architetture di rete, ciascuna caratterizzata dalle scelte
effettuate in molti settori fra i quali ricordiamo:
• i servizi offerti dai vari livelli (connection oriented o no, reliable o no, ecc.);
• le modalità di indirizzamento;
• la dimensione massima dei pacchetti.
Per connettere fra loro reti eterogenee si devono superare problemi non banali, tra i quali:
• difformità nei servizi offerti (ad esempio, un servizio connected viene offerto solo su una
delle reti);
• difformità nei formati dei pacchetti e degli indirizzi;
• difformità, nelle subnet, dei meccanismi di controllo dell'errore e della congestione;
• difformità nella dimensione massima dei pacchetti.
•
A causa di tali problemi, in generale (a meno che le architetture di rete non siano molto simili)
non si usa questo approccio generale, ma altre tecniche più specifiche.
Tali tecniche sono basate sull'uso di particolari attrezzature, che operano a livelli diversi:
• i bridge, che abbiamo già visto e che operano a livello data link;
• i router multiprotocollo: sono dei router in grado di gestire contemporaneamente più pile
di protocolli.
19
Pacchetti OSI
Rete
Rete OSI
OSI
Rete di
router multiprotocollo
(IP e OSI)
Rete
IP Rete
IP
Pacchetti IP
Le reti OSI possono parlare fra loro, e così quelle IP. Nella subnet costituita dai router
multiprotocollo circolano pacchetti di entrambe le architetture, che vengono instradati
secondo le regole di competenza dell'architettura di sui fanno parte.
Tunneling
Un' altra tecnica che risolve un problema analogo è il tunneling, che si utilizza per mettere in
comunicazione due reti uguali per mezzo di una rete diversa.
20
Rete Rete Rete
di tipo X di tipo Y di tipo X
Tunnel
Router multiprotocollo
In questo caso la rete di tipo Y non è dotata di router multiprotocollo. Invece, un router
designato in ciascuna delle due reti di tipo X è multiprotocollo e incapsula i pacchetti delle
reti di tipo X dentro pacchetti di tipo Y, consegnandoli poi alla rete di tipo Y. Si noti che in
questi pacchetti ci sono due buste di livello network:
21
Frammentazione
Un diverso problema che talvolta si presenta è legato al fatto che in generale è possibile che i
pacchetti in arrivo da una rete siano troppo grandi per transitare su un altra.
In questo caso è necessario che il livello network della rete di origine (e di quella di
destinazione) prevedano meccanismi di spezzettamento del pacchetto in frammenti prima di
consegnarli alla rete di transito, e di ricomposizione dei frammenti appena essi giungono
dalla rete di transito in quella di destinazione (come vedremo, il protocollo IP è fornito di
questa funzionalità).
Transport gateway
Un meccanismo simile è piuttosto diffuso a livello transport, dato che esso offre servizi
connessi in quasi tutte le architetture. In tale ambito le apparecchiature interessate prendono
il nome di transport gateway.
Poiché i transport gateway operano a livello transport, essi ricevono i dati dal livello
application di partenza e li consegnano al livello application di arrivo.
Application gateways
Un ultimo tipo di attrezzatura è costituito dagli application gateway, che effettuano una
conversione di dati a livello application.
22
5.5.1) Internetwork routing
In generale, in una internetwork le singole reti componenti sono entità autonome e vengono
chiamate AS (Autonomous System).
Internet è una collezione di AS connessi gli uni con gli altri. Non esiste una struttura rigida,
ma comunque si possono distinguere alcune componenti:
• backbone principali (linee ad alta velocità);
• reti regionali (USA);
• reti nazionali (Europa e resto del mondo);
• reti locali.
23
US backbone Europe backbone
National
Regional network
network
IP LAN IP LAN
Ciò che tiene tutto insieme è il protocollo di livello network dell'architettura TCP/IP, e cioè
IP (Internet Protocol, RFC 791).
IP è un protocollo datagram, quindi non connesso e non affidabile, che opera come segue:
• riceve i dati dal livello transport e li incapsula in pacchetti di dimensione massima pari a 64
Kbyte (normalmente circa 1.500 byte);
• instrada i pacchetti sulla subnet, eventualmente frammentandoli lungo il viaggio;
• a destinazione:
• riassembla (se necessario) i frammenti in pacchetti;
• estrae da questi i dati del livello transport;
• consegna al livello transport i dati nell'ordine in cui sono arrivati (che non è
necessariamente quello in cui sono partiti).
24
5.6.1) Lo header IP (versione 4)
32 bit
4 4 8 1 1 1
Source address
Destination address
Options
25
I campi dell'header hanno le seguenti funzioni:
26
5.6.2) Indirizzi IP
La combinazione è unica: non possono esistere nell'intera rete Internet due indirizzi IP uguali.
Si noti che solitamente si ritiene che ogni host sulla rete abbia un singolo indirizzo IP. In
realtà gli indirizzi sono assegnati alle interfacce di rete, quindi:
• se un host ha un'unica interfaccia di rete (come è il caso di un PC in LAN) allora ha un
unico indirizzo IP;
• se un host ha X interfacce di rete (come è il caso di un router connesso ad una LAN e ad X-
1 linee punto-punto) ha X indirizzi.
Gli indirizzi IP sono assegnati da autorità nazionali (NIC, Network Information Center)
coordinate a livello mondiale.
I formati possibili degli indirizzi, nella formulazione originaria che viene detta Classful in
quanto basata sul concetto di classe di un indirizzo IP, sono i seguenti:
32 bit
Classe
della rete IP 8 8 8 8
A 0 Network Host
B 1 0 Network Host
C 1 1 0 Network Host
27
Inoltre, esistono alcuni indirizzi con un significato speciale:
32 bit
8
Default
Address 0
Un host su 0 Host
questa network
Quando si utilizza il loopback, il pacchetto non viene inviato sulla rete ma viene elaborato dal
livello IP come se fosse in arrivo: questo è molto utile, ad esempio, per effettuare localmente
dei test su un software di rete in fase di sviluppo.
Infine, all’interno di ciascuna classe esistono degli indirizzi riservati, detti indirizzi privati,
che servono per le reti private, cioè non accessibili dalla rete Internet. Tali indirizzi non
possono essere assegnati nella rete Internet. Essi sono:
Ricapitolando, poiché alcune configurazioni binarie per gli indirizzi sono impegnate per gli
indirizzi speciali, possono esistere:
• 125 network di classe A, le quali possono contenere circa 16 milioni di host ciascuna;
• 16366 network di classe B, con oltre 65.000 host ciascuna;
• circa 2 milioni di network di classe C, con 254 host ciascuna.
Gli indirizzi sono usualmente espressi nella dotted decimal notation, cioè i valori dei singoli
byte sono espressi in decimale e sono separati da un punto, come nell'indirizzo:
[Link]
28
In tale notazione, è possibile rappresentare separatamente il network number e l'host number.
Per distinguerli, il primo è seguito da un punto. Ad esempio, nel caso dell'indirizzo IP
precedente (che è relativo ad una network di tipo B), si ha che:
• il network number è 141.192. (notare il punto finale);
• l'host number è 140.37 (non c'è il punto finale).
[Link]/16
Mediante la slash notation esiste anche un altro modo di rappresentare un network number,
che consiste nel mettere a zero i byte destinati all’host number. La network 141.192. viene
rappresentata come:
[Link]/16
5.6.3) Routing IP
Il collegamento fra due router non avviene direttamente, ma attraverso una network (in
realtà di solito una subnet, come vedremo poi) che li collega, e che di fatto è costituita dalle
due interfacce di rete e dalla linea di comunicazione che le collega:
Router
29
Ogni router possiede una tabella (costruita e mantenuta dinamicamente dall'algoritmo di
routing in esercizio) che contiene elementi del tipo:
1. (this network number, host number) per ciascun host della network a cui il router è
direttamente collegato;
2. (network number, 0) per ciascuna network lontana di cui il router conosce l'esistenza.
Associate a tali elementi ci sono le informazioni sull'interfaccia di rete da usare per instradare
il pacchetto e, nel caso delle linee punto punto, l'indirizzo del router che si trova dall'altra
parte.
5.6.4) Subnet
Al fine di economizzare nel numero di network da usare (utilizzando al meglio quelle che
possono contenere migliaia o milioni di host) una network può essere divisa in varie subnet,
ciascuna contenente i suoi host.
Questo è un fatto privato della network che viene suddivisa, e non ha bisogno di essere
comunicato all'esterno.
30
Ad esempio, per una rete di classe A si potrà avere:
32 bit
8 8 8 8
Ampiezza variabile
b) 1 0
Figura 5-13: Indirizzo IP con subnet (a) e relativa subnet mask (b)
A seconda dell'ampiezza del campo dedicato alla subnet, si possono ottenere molte subnet
contenenti ciascuna pochi host oppure poche subnet che però potranno contenere molti host.
La rete di figura 5-12, che nella sua formulazione originaria impegnava ben tre network di
classe B, può essere realizzata con un sola network di classe B suddivisa in tre subnet. A tal
fine, usiamo un network number uguale a 150.1. ed una subnet mask (espressa in dotted
decimal notation) uguale a [Link], cioé:
• i primi due byte dell'indirizzo identificano la network;
• il terzo byte identifica la subnet;
• il quarto byte identifica l'host.
31
Il risultato è il seguente:
Router
Host 1 Linea 1 2
X Y
3 150.1.2. 1
Network 150.1
1 2 Subnet 2. 2 3
150.1.1. 150.1.3.
Per risolvere tale problema è stata introdotta una nuova modalità di gestione degli indirizzi,
detta classless, che si chiama così perché viene abbandonato il concetto di classe del network
number. La denominazione completa di tale modalità è CIDR, Classless Inter Domain
Routing.
32
(di norma utilizzando la slash notation o una network mask, di formato analogo alla
subnet mask vista precedentemente).
[Link]/22
Questo network number consiste di 22 bit, e quindi corrisponde ad una network che può
contenere 1024 host, dato che i rimanenti (32 – 22) = 10 bit sono utilizzati per gli host number.
Network number
(dotted notation) 184 13 152 0
Network number
(binario) 1 0 1 1 1 0 0 00 0 0 0 1 1 0 11 0 0 1 1 0 0 00 0 0 0 0 0 0 0
22 bit 10 bit
Network mask
(binario) 1 1 1 1 1 1 1 11 1 1 1 1 1 1 11 1 1 1 1 1 0 00 0 0 0 0 0 0 0
Network mask
(dotted notation) 255 255 252 0
Un secondo beneficio è che un lotto di indirizzi, una volta assegnato, può essere
ulteriormente suddiviso in sotto-lotti più piccoli, che possono essere riassegnati dal titolare
del lotto a suoi clienti, i quali possono a loro volta suddividerli e riassegnarli e così via.
33
Ad esempio, la rete [Link]/22 di 1024 host può essere suddivisa in due reti da 512
host ciascuna. Oppure può essere suddivisa in una da 512 e due da 256, come mostrato nella
figura seguente.
[Link]/22
1 0 1 1 1 0 0 00 0 0 0 1 1 0 11 0 0 1 1 0 0 00 0 0 0 0 0 0 0
Prima suddivisione
22 bit 10 bit
[Link]/23
1 0 1 1 1 0 0 00 0 0 0 1 1 0 11 0 0 1 1 0 0 00 0 0 0 0 0 0 0
[Link]/23
1 0 1 1 1 0 0 00 0 0 0 1 1 0 11 0 0 1 1 0 1 00 0 0 0 0 0 0 0
Seconda suddivisione
23 bit 9 bit
[Link]/24
1 0 1 1 1 0 0 00 0 0 0 1 1 0 11 0 0 1 1 0 1 00 0 0 0 0 0 0 0
[Link]/24
1 0 1 1 1 0 0 00 0 0 0 1 1 0 11 0 0 1 1 0 1 10 0 0 0 0 0 0 0
24 bit 8 bit
Figura 5-16: Suddivisione di una network da 1024 host in una da 512 e due da 256
Innanzitutto i router devono mantenere accanto ad ogni network number che hanno nelle
tabelle anche la relativa lunghezza in bit, per poter correttamente interpretare gli indirizzi
contenuti nei pacchetti che devono essere instradati.
Inoltre, si crea una nuova situazione, che prima non era possibile: relativamente ad un singolo
network number possono esservi due o più differenti entrate nella tabella di un router,
associate però a differenti lunghezze della network mask. Ciò deriva dal fatto che la prima
delle reti risultanti dalla suddivisione di una rete più grande ha sempre lo stesso network
number di quella più grande, ma un maggior numero di bit. Si veda l’esempio della figura
precedente:
34
• Dalla rete [Link]/22 si ottengono la [Link]/23 (stesso network number, un
bit in più) e la [Link]/23;
• Dalla rete [Link]/23 si ottengono la [Link]/24 (stesso network number, un
bit in più) e la [Link]/24.
In tali situazioni, l’entrata relativa ad un network number con lunghezza associata minore
indica la strada per raggiungere la rete più grande nel suo complesso, mente l’entrata relativa
ad un network number con lunghezza associata maggiore indica la strada per raggiungere
una sottorete della rete più grande.
Se la linea d’uscita indicata in due (o più) di tali entrate è la stessa, il router fonde le entrate in
una sola (di fatto mantiene quella il cui network number ha lunghezza minima, ossia quella
relativa alla rete che al suo interno contiene le sottoreti puntate dalle altre entrate). Per inciso
è proprio per via di questa considerazione, che fece sperare ai progettisti di ottenere benefici
anche in termini di dimensioni delle tabelle di routing, che il nome scelto fu CIDR, nel quale
come abbiamo visto appare il termine “Routing” nonostante in fondo si tratti solo di un
diverso modo di interpretare gli indirizzi IP.
Se invece le linee d’uscita indicate in tali entrate sono diverse, il router deve decidere quale
scegliere. In questo caso le ispeziona tutte, e sceglie l’entrata il cui network number è il più
lungo prefisso dell’indirizzo da instradare. Ciò corrisponde a scelgliere la strada che porta
alla più piccola delle sottoreti che contengono l’host di destinazione, e segue la logica che un
instradamento più selettivo sia migliore di uno più generico.
Assieme a IP esistono diversi protocolli per il controllo del funzionamento della subnet.
ICMP (Internet Control Message Protocol, RFC 792)
L'operatività della subnet è controllata continuamente dai router, che si scambiano
informazioni mediante messaggi conformi al protocollo ICMP (tali messaggi viaggiano
dentro pacchetti IP).
35
Esistono molti tipi di messaggi, fra i quali:
• destination unreachable: non si trova la destinazione del pacchetto. Viene inviato al
mittente del pacchetto;
• time exceeded: il contatore di un pacchetto è arrivato a zero. Viene inviato al mittente del
pacchetto;
• redirect: il router ha ragione di pensare che il pacchetto gli è arrivato per errore, ad
esempio perché un host mobile si è spostato. Viene inviato al mittente del pacchetto;
• echo request, reply: si vuole sapere se una destinazione è viva e raggiungibile. Si invia
request, si aspetta reply;
• timestamp request, reply: come il precedente, con in più la registrazione dell'istante di
arrivo e partenza, per misurare le prestazioni della rete.
Esso opera appoggiandosi direttamente sul livello data link e non su IP:
• viene inviata a tutte le stazioni della LAN, in data link broadcast, una richiesta del tipo:
"chi ha l'indirizzo IP uguale a [Link] ?"
• solo l'host che ha quell'indirizzo IP risponde, inserendo nella risposta il proprio indirizzo
data link;
• quando riceve la risposta, l'host la mantiene in memoria per circa 15 minuti.
Esso è utile nel caso di stazioni senza disco, che al momento dell'avvio caricano l'immagine
del codice binario del sistema operativo da un server.
36
Il vantaggio che si ottiene è che una sola immagine binaria va bene per tutte le stazioni: ogni
stazione personalizza poi l'immagine binaria con la determinazione del proprio indirizzo IP
mediante una richiesta RARP, nella quale invia il proprio indirizzo data link (che è cablato
nell'interfaccia di rete).
Come già detto, Internet è una collezione di AS connessi da backbone ad alta velocità.
Ciò che caratterizza un AS è il fatto di essere gestito da una singola autorità.
OSPF consente fra l'altro un routing gerarchico all'interno dell'AS, che viene suddivisa in
diverse aree:
• backbone area (che è connessa a tutte le altre)
• altre aree
37
AS
Backbone area
Area Area
Area
38
5.6.8) IP versione 6
39