• Non ci sono risultati.

Protocolli e Architetture di Rete

N/A
N/A
Protected

Academic year: 2022

Condividi "Protocolli e Architetture di Rete"

Copied!
38
0
0

Testo completo

(1)

UNIMORE-FIM INFORMATICA

Protocolli e

Architetture di Rete

Appunti delle lezioni

Lorenzo Balugani (@EvilBalu)

Quinto Semestre

(2)

INTRODUZIONE

Una rete è formata da due componenti base: i nodi, che sono gli host e gli apparati di comunicazione (switch, router…), e i link, ovvero il media tramite il quale avviene la comunicazione (cavi, onde radio…). I collegamenti possono essere o diretti (connessioni PtP, accesso multiplo) oppure indiretti (rete commutata, in presenza di uno switch). Ogni rete può essere definita ricorsivamente: una grossa rete, infatti, può essere a sua volta spezzettata in reti più piccole, ed esistono classi di reti basate sulle dimensioni:

• LAN: local area network, cablaggio privato (stanza/edificio/campus)

• MAN: metropolitan area network, cablaggio pubblico (città)

• WAN: wide area network, cablaggio pubblico tramite operatore TLC (regione/stato/continente)

L’obiettivo di qualsiasi sistema di comunicazione è di trasferire un messaggio nel modo più sicuro, veloce e affidabile, il che ha chiaramente delle grosse sfide. La prima è l’estrema eterogeneità dei nodi nel sistema, e anche nei link di natura diversa, e poi ci sono le interferenze, le congestioni e la grande complessità di una rete globale: quando la complessità è elevata, bisogna procedere per astrazioni e per divide et impera: la rete viene divisa in “livelli”, ciascuno dei quali rappresenta un’astrazione (ad esempio, il livello più basso si occuperà di gestire l’aspetto fisico, quello più alto di presentare i dati all’utente/interagire con le applicazioni: in questo modo, a chi sviluppa applicazioni, non importa come si svolgano le cose a basso livello). Dal momento che avere troppe astrazioni fa male alle performance, è necessario trovare una via di mezzo tra velocità e complessità.

PROTOCOLLI

Quando si esamina un protocollo, bisogna chiedersi quali sono i suoi requisiti hw/sw, come avviene la comunicazione e in che modo si individuano gli endpoint di tale comunicazione: tutte le comunicazioni sono gestite dai protocolli, in quanto permettono di superare le problematiche legate alle disomogeneità degli elementi della rete e permettono il raggiungimento della cooperazione necessaria per permettere la comunicazione.

Definizione: Protocollo

Un protocollo è un insieme di regole e convenzioni seguite da entità presenti su nodi distinti che intendono

comunicare tra di loro. Queste regole permettono la cooperazione e la creazione di meccanismi condivisi per superare problemi in trasmissione.

Un protocollo di comunicazione è formato da 3 elementi: la sintassi (insieme e struttura dei comandi e delle risposte, formato messaggi), la semantica (significato dei comandi, delle azioni e delle risposte) e la temporizzazione (specifica delle possibili sequenze temporali per l’emissione di messaggi).

Un sistema di comunicazione complesso non può gestire le comunicazioni da solo, sono necessari insiemi di protocolli che lavorano cooperativamente: i protocolli sono i blocchi fondamentali del modello di rete basato su layer, e insiemi di protocollo prendono il nome di protocol suite/stack.

Ogni protocollo possiede due interfacce interne (che comunicano con il livello superiore e inferiore) e un’interfaccia esterna verso il livello equivalente di un altro nodo: le interfacce interne prendono il nome di service interface, quelle esterne peer-to-peer interface. Da un punto di vista logico, la comunicazione avviene tra peer entity, ed in pratica viene fatto scendendo/risalendo lo stack dei due host.

A ciascun livello, il messaggio si compone di due elementi:

• PCI, protocol control infromation, insieme di metadati che servono a far funzionare il protocollo (comunemente chiamato header)

• SDU, ovvero il contenuto informativo scambiato (comunemente chiamato payload)

(3)

Header + Payload danno origine alla PDU, protocol data unit, e ogni volta che una PDU scende di livello viene

“incapsulata” ponendo davanti ad essa l’header del livello corrispondente (escluso il livello fisico, che non mette l’header), e si fa il contrario quando la PDU sale: I dati, dal livello più alto, vengono rivestiti da n header, trasmessi mediante cavo o simili, ricevuti dal destinatario e spacchettati n volte. Chiaramente, più sono i livelli, più header vanno trasmessi, maggiore è l’overhead.

STACK ISO-OSI

La comunicazione tra nodi differenti ed eterogenei necessita di standard, ed in informatica esistono due tipi di standatd: standard de iure (standard dettati dalla legge o da regolamenti, ad esempio l’ISO-OSI) e standard de facto (standard che emergono dal basso, ad esempio il TCP/IP).

L’ISO/OSI sarebbe dovuto diventare lo standard di protocolli per l’interconnessione, e prevede 7 livelli:

7. Application

a. Fornisce un’interfaccia standard per le applicazioni.

6. Presentation

a. Risolve i problemi di formato e gestisce la compressione dei dati, la sicurezza e l’affidabilità dei messaggi usando tecniche crittografiche.

5. Session

a. Consente a utenti su macchine diverse di creare sessioni sincrone e coordinate.

4. Transport

a. Esegue il controllo end to end della sessione di comunicazione e garantisce l’affidabilità del trasporto. Individua l’applicazione di destinazione.

3. Network

a. Gestisce l’instradamento dei pacchetti, inclusa la gestione dell’indirizzo dei pacchetti in uscita, la decodifica dell’indirizzo dei pacchetti entranti e la gestione delle informazioni di instradamento.

Individua la macchina di destinazione.

2. Data-Link

a. Gestisce i frame o i pacchetti trasfromando la trasmissione in una comunicazione priva di errori non rilevati.

b. Gestisce l’accesso e l’uso dei canali fisici e suddivide i dati in frame

c. Gestisce l’ordinamento dei dati trasmessi, impiegando codifiche ridondanti per la rilevazione e la correzione di errori verificatisi in trasmissione (e conferma la ricezione dati).

1. Physical

a. Gestisce i sistemi meccanici ed elettrici per l’invio dei dati attraverso il media

Le critiche allo stack furono legate alla cattiva tempistica, tecnologia (ridondanze), implementazione (complessità eccessiva) e per la pessima politica (modello imposto contro il TCP/IP).

STACK TCP/IP

Il TCP/IP vede i livelli 1 e 2 accorpati nel livello “Host-to-network”, i livelli 5, 6 e 7 accorpati nel livello Application, il livello Network che prende il nome di Internet (che continua a chiamarsi livello 3) e con il livello trasporto (che continua a chiamarsi livello 4), portando il numero di livelli a 4.

Le critiche al modello furono legate alla poca generalità, il suo orientamento verso il mero funzionamento, confusione sul livello host-to-network e simili.

(4)

5. Applicativo: supporto alle applicazioni di rete.

4. Trasporto: supporto al trasferimento host-host (TCP/UDP).

a. Permette multiplexing

3. Rete: trasferisce i pacchetti dal mittente al destinatario (IP).

1. Host-to-network: esegue i trasferimenti dei dati tra componenti di rete confinanti e mette i bit sul media.

a. I protocolli sono pensati appositamente per il media, in quanto vari media hanno più possibilità (ad esempio) di arrivare con errori o funzionar male. Questo si riflette molto sul livello (inglobato) di data-link, in particolare sulle operazioni di controllo fatte.

INTERNET

Internet non è una singola rete, ma un insieme di reti esteso al tutto il mondo, non è governata da un ente unico, non è gestita in modo centralizzato (ogni rete ha una gestione autonoma) e internet non è il WWW.

Una delle prime questioni da risolvere alla nascita di internet è stata quella di collegare tra loro diversi host e diversi reti, e Internet viene costruito su un nuovo paradigma di invio di informazioni (in pacchetti) e con tecniche di trasmissione come la commutazione di pacchetti e la store-and-forward.

Internet non è composto solo da host, ma anche da dispositivi (switch, router) e mezzi che compongono l’infrastruttura di rete stessa. Per trasferire dati, possono essere usati due metodi:

• Circuit switching, un circuito virtuale dedicato per ogni comunicazione (sistema telefonico)

o E’ necessario riservare tutte le risorse end-to-end prima di trasmettere, il che ha a favore il fatto che le performance siano garantite, ma ha a sfavore l’impossibilità di condividere le risorse assegnate e il fatto che per ogni chiamata ci sia una fase di setup.

• Packet switching, dove ogni comunicazione è suddivisa in pacchetti, che condividono le risorse della rete e con ogni pacchetto che usa tutta la capacità trasmissiva di un collegamento. Le risorse sono usate in base alla necessità, non in base alla prenotazione.

Con il packet switching il messaggio transita per nodi intermedi (router), il cui percorso esatto non viene predestinato, ed il router troverà il modo migliore per far arrivare il pacchetto al nodo che lo porterà più vicino alla destinazione. In ciascun nodo, l’informazione viene “spacchettata” fino al livello necessario (livello host-to-net per gli switch, livello internet per i router, livello application per gli host), e non oltre: questo perché diversi dispositivi hanno funzioni più elementari di altri, e non sanno di che farsene delle informazioni presenti a livelli più alti.

Nel percorso tra due host, quindi, un pacchetto viene spacchettato e re-impacchettato più volte (a livelli diversi) a seconda dei protocolli che vengono impiegati dai vari dispositivi per i quali transita.

STACK TCP/IP

LIVELLO HOST-TO-NETWORK

Il livello h2n permette la interconnessione tra due o più host, trasmissione dati tra host collegati direttamente e la connessione ad internet. I protocolli h2n dipendono fortemente dal media di trasmissione (dato che sono

appositamente pensati per esso), con lo standard de facto che è quello Ethernet.

Quando si pensa ad un protocollo h2n, si pensa (oltre che collegamenti host-host) anche a collegamenti con switch:

indipendentemente da cosa sia collegato a qualcos’altro (switch, router, host) su questi dispositivi è presente un NIC (interfaccia di rete) che implementano parte della logica del livello data-link, e la trasmissione avviene per scambio di frame (quando si passa da pacchetto a frame si aggiungono informazioni per la trasmissione fisica).

(5)

Esistono numerosi tipi di comunicazione, così definiti:

Unicast: Comunicazione fra un singolo mittente e un singolo ricevente.

Multicast: Comunicazione fra un singolo mittente e un gruppo di riceventi.

Anycast: Comunicazione fra un singolo mittente e almeno un ricevente in un gruppo.

Broadcast: Comunicazione fra un singolo mittente e tutti gli altri nodi.

I collegamenti di tipo broadcast vengono usati quando molti host sono connessi allo stesso canale di comunicazione, e vengono usati da protocolli per coordinare le trasmissioni e evitare le collisioni, mentre i collegamenti unicast vengono usati da collegamenti punto-punto.

TECNOLOGIE PER INTERCONNESSIONI

Esistono, fondamentalmente, due tipi di mezzi trasmissivi:

• Mezzi guidati

o Doppino intrecciato

▪ E’ il più diffuso e economico, usato per le linee telefoniche, consiste in due cavi di rame intrecciati (per ridurre le interferenze).

o Cavo in rame

▪ Cavo formato da più doppini, avvolti in uno schermo protettivo.

o Cavo coassiale

▪ Formato da due cavi di rami concentrici schermati.

o Fibra ottica

▪ Realizzate in vetro/plastica con il segnale che non è elettrico ma luminoso (quindi immune al rumore elettromagnetico), con bassa attenuazione di segnale e elevata sicurezza, ottime per collegamenti a lungo raggio (meno per il corto raggio). Per tornare su rame, è

necessario usare dispositivi di conversione (da segnale elettrico a ottico), che hanno delle latenze che non rendono conveniente l’utilizzo su piccole distanze della fibra ottica.

• Mezzi a onda libera

o Canali radio terrestri o satellitari

▪ Il segnale viene portato nello spettro elettromagnetico, e ci sono problemi di propagazione del segnale.

COLLEGAMENTI DOMESTICI

L’accesso a Internet avviene mediante contratto con un ISP (Internet Service Provider) che possiede server attivi e collegati a internet permanentemente e centraline distribuite sul territorio, e che offre servizi base (accesso a internet, telefonia) e servizi accessori. Gli accessi sono di tipo point-to-poin, e esistono varie modalità di accesso (Dial- up, ISDN, xDSL, Fibra).

Al tempo dei modem, il calcolatore veniva collegato digitalmente al modem, un dispositivo analogico che eseguiva la modulazione/demodulazione dei segnali in ingresso/uscita per permettere l’utilizzo della pre-esistente rete telefonica (doppino) al fine di collegarsi al internet. Questo mezzo è servito per dare la partenza a internet, e portarlo nelle case di un po’ tutti a un costo ridotto (dal punto di vista infrastrutturale). La dial-up, venuta dopo, è una tecnologia completamente digitale, a cui è poi succeduta l’xDSL

PROTOCOLLO DATA-LINK PPP

Un tipico collegamento punto-punto è quello per connessioni telefoniche tra utenti e il loro ISP, ed è molto più semplice di un link broadcast, e il protocollo PPP è un protocollo di secondo livello. Il ppp ha le seguenti caratteristiche:

(6)

• Supporto multiprotocollo

• Supporto all’autenticazione (verifica chi cerca di comunicare)

• Rilevamento di errori (non li risolve)

• Supporto all’indirizzamento ip dinamico I componenti principali sono:

• Metodo di incapslulamento, Link Control Protocol (gestione connessione), Network Control Protocol (configurazione dei protocolli a livello network che vengono trasportati)

Il PPP ha diversi principi alla sua base:

• Packet Framing: incapsulamento del datagramma di livello rete in un pacchetto PPP.

• Bit transparency: PPP non deve porre restrizione ai dati che sono presenti nel datagramma.

• Error detection: il ricevente deve rilevare errori.

• Connection Liveness: rileva problemi o guasti a livello di link.

• Network layer address negotiation: PPP deve fornire support a diversi protocolli di rete per configurare gli indirizzi di rete.

• Network layer multiple protocols: supporto a vari protoclli di rete che operano sul fisico.

• Multiple connection links: supporto per collegamenti seriali, paralleli, sincroni o asincroni.

• Semplicità (circa, dato che lo è solo relativamente).

Il PPP non implementa l’error correction, il controllo di flusso (deve essere gestito dal livello fisico, il PPP non controlla che la velocità di trasferimento ottenuta sia quella desiderata) e la ricostruzione dell’ordine dei pacchetti: queste funzioni vengono lasciate a protocolli di ordini superiori (o inferiori).

FASI DI CONNESSIONE

Il sistema di packet switching è utile quando diversi partecipanti della rete vogliono condividere l’infrastruttura. Per la natura del PPP, non c’è bisogno di niente del genere (gli interlocutori sono solo 2, il collegamento è dedicato), e quindi conviene usare un paradigma orientato alla connessione.

1. Definizione della connessione (Link Establishment Phase).

a. Prima di scambiarsi i dati del livello network, i peer di livello DL devono stabilire la connessione, configurando il link PPP e appendendo/configurando le informazioni a livello network.

2. Autenticazione (Authentication Phase). Aspetto peculiare del PPP, una volta stabilita la connessione si verifica che l’host sia autorizzato a comunicare.

3. Configurazione del protocollo di rete (Network-Layer Protocol Phase). Aspetto peculiare del PPP, se sono autorizzato a comunicare configuro lo stack di rete. La connessione è ora aperta.

4. Terminazione della connessione (Link Termination Phase).

PPP crea un’interfaccia per il livello newtork, e a differenza dell’interfaccia offerta da Ethernet PPP non è legato a un solo dispositivo fisico.

DATA FRAME PPP

Definizione: Framing

Quando si parla di Framing, si parla di aggiungere informazioni al pacchetto che servono alla comunicazione fisica.

• Flag, delimitatore del frame PPP, posto all’inizio e alla fine del data frame (framing).

• Address: non ha ruolo

• Control: non ha ruolo

• Protocol: protocollo di livello superiore a cui il frame viene poi passato

(7)

• Info: pacchetto incapsulato

• Check: byte di controllo correttezza, si usa un codice a ridondanza ciclica.

Il requisito espresso precedentemente, quello di “data transparency”, permetterebbe anche di trasmettere il byte di flag. Per distinguere se un byte è parte del dato o di un flag, è necessario eseguire lo “stuffing”: quando voglio inserire un byte che è un flag nei dati, ripeto quel byte (il flag viene usato come escaping).

PROTOCOLLO ETHERNET

Il PPP gestisce connessioni di tipo Point-to-Point, ma noi usiamo la rete interfacciandoci, prima di tutto, ad una rete locale. Quando ci colleghiamo ad una rete locale, a sua volta collegata a internet in PP, parliamo di una connessione gestita dal protocollo Ethernet. Ethernet è un protocollo h2n, ed è implementato all’interno di una scheda di rete (NIC), che permette di incapsulare il pacchetto (datagram) in un frame.

Come già anticipato, una LAN è una rete di host collegati tra loro all’interno di un’area fisica limitata e proprietaria, basata su una rete condivisa a bit rate elevato. Per le Lan si sono susseguite diverse classi di tecnologie (per il cablato l’Apple Talk, il Frame Relay, e chiaramente Ethernet, mentre per wireless WLAN). La rete è collegata a Internet mediante uno o più dispositivi (bridge/switch), e mediante un router di frontiera. Lo standard de facto è Ethernet, ideato negli anni 70, perché poco costoso e funziona molto bene con i protocolli IP e TCP. E’ molto flessibile, e si presta a diverse topologie (il modo in cui gli host si collegano alla rete) e tecnologie (tecnologia del mezzo trasmissivo), e la sua rapida diffusione ha “ucciso” i concorrenti.

Ethernet impiega un canale di broadcast (molti host connessi ad uno stesso canale di comunicazione), il che vuol dire che tutte le interfaccie degli host collegati lo ricevono (tipo di collegamento), permettendo una comunicazione unicast o broadcast (modalità di trasmissione).

INDIRIZZO MAC

Gli host, a livello ethernet, utilizzano un indirizzo hardware (indirizzo MAC) per identificare la NIC dei vari host. Questo indirizzo univoco e permanente di 48 bit (incorporato nella ROM del dispositivo) è rappresentato da 6 coppie

esadecimali puntati, con l’indirizzo di broadcast che è FF-FF-FF-FF-FF-FF. Ciascun host di una LAN ha un indirizzo IP e il NIC di ciascun host e il dispositivo di rete hanno un indirizzo MAC. Sebbene il MAC sia teoricamente non modificabile, ci sono tecniche per alterarlo. Ogni produttore di NIC si trova assegnata una classe di indirizzi, quindi è possibile capire solo dal MAC qual è il vendor della scheda.

FRAME ETHERNET

Come anticipato, i pacchetti scambiati a livello h2n vengono detti frame, e indipendentemente dal mezzo trasmissivo tutte le tecnologie Ethernet fanno uso dello stesso formato:

• Preambolo

o Identifica una parte che ha lo stesso ruolo del flag PPP (non ha scopo logico, indica l’inizio di un frame). Il campo è da 8 byte, con i primi 7 che devono attivare gli adattatori dei ricevimenti e sincronizzare i loro orologi con quello del mittente, e la terz’ultima e la penultima cifra dell’ultimo byte indicano lo stop della fase di sincronizzazione.

• Indirizzo destinazione (MAC), 6 byte

• Indirizzo sorgente (MAC), 6 byte

• Tipo (2 byte)

o Indica quale protocollo viene usato nel settore dati . Identifica quasi sempre un tipo IP o ARP.

• Dati

o Pacchetto che viene incapsulato, proveniente dal settore superiore. L’unità massima trasferibile (MTU) è 1500 byte (se di dimensione superiore, devono essere frammentati), e la dimensione minima è 46 byte (se la dimensione è inferiore, vengono aggiunti dati di “riempimento”).

(8)

• CRC (4 byte)

o Controllo di ridondanza, permette al destinatario errori. La sigla sta per Controllo a Ridondanza Ciclica, l’algoritmo che si occupa del controllo. Quando un host trasmette il frame calcola il CRC che ottiene dalla correlazione degli altri bit del frame (preambolo escluso), e quando un host lo riceve riesegue il CRC, e verifica che corrisponda.

Il frame non ha un terminatore, la NIC riesce a capir da sola quando finisce il pacchetto. Quando un NIC riceve un frame Ethernet con indirizzo di destinazione diverso dal proprio o all’indirizzo di broadcast della lan lo scarta, diversamente passa il contenuto del campo dati allo strato di rete.

Se i NIC usassero indirizzi IP invece che indirizzi MAC, non sarebbero in grado di supportare altro che IP, e questi indirizzi andrebbero memorizzati nella memoria del NIC (se non usassero indirizzi, tutti i pacchetti andrebbero passati a tutte le NIC della rete, per poi venir scartati nel caso in cui gli indirizzi non combacino).

PROTOCOLLO ARP

Gli indirizzi IP non sono riconosciuti dall’hw, ma noto l’indirizzo IP è possibile risalire all’indirizzo MAC mediante l’ARP (Address Resolution Protocol), incluso nella suite TCP/IP, che permette di fare ciò all’interno di una LAN. Il protocollo utilizza due tipi di messaggi:

• Richiesta: contiene l’indirizzo IP del destinatario, usa il broadcast.

• Risposta: contiene l’indirizzo MAC, usa l’unicast (usando il MAC sorgente del messaggio richiesta)

Per migliorare le prestazioni del protocollo, ARP è fornito di una cache ARP, che serve per ridurre il traffico sulla rete causato da messaggi, con ogni host che effettua caching temporaneo delle risoluzioni IP/MAC nella sua routing table, con il mittente che inserisce nella sua richiesta la corrispondenza fra il proprio indirizzo IP e il mac (le informazioni hanno comunque una scadenza, espressa dal TTL).

La richiesta ARP viene mandata solo e solamente se l’host di destinazione fa parte della stessa rete del mittente (questa cosa viene stabilita dalla netmask).

PROTOCOLLO RARP

Il protocollo RARP (Reverse Address Resolution Protocol) permette di ottenere l’IP partendo da un MAC. Come l’ARP fa il broadcast di una richiesta, a cui risponde solo l’interessato (server RARP, mantiene le coppie di indirizzi IP-MAC per gli host associati), usabile anche in sistemi con host senza disco che conoscono solo il MAC.

Il pacchetto ARP/RARP contiene informazione sul tipo di hw, di rete, il tipo di operazione, eccetera.

MODALITÀ DI COMUNICAZIONE

I frame Ethernet vengono trasmessi dagli host collegati allo stesso segmento LAN su un canale broadcast ad alto bitrate (modalità di accesso multiplo). Spedire più pacchetti in contemporanea comporta rischi di collisione, ed è quindi necessario un protocollo di accesso sul mezzo che permetta di evitare le collisioni coordinando le trasmissioni o nel caso porre rimedio alle collisioni.

PROTOCOLLO CSMA/CD

Il protocollo Carrier Sense Multiple Access with Collision Detection è un protocollo ad accesso casuale e

completamente decentralizzato. Quando un host deve trasmettere, sta in ascolto sul canale (Carrier Sense), e quando trasmette lo fa alla massima velocità del canale possibile. Quando un host rileva una collisione, ritrasmette quel frame finchè non arriva, con la ritrasmissione che non è immediata ma eseguita dopo un tempo pseudo-casuale.

(9)

Definizione: Inter Frame Gap

Quando due frame consecutivi vengono inviati, questi vengono distanziati per un tempo che corrisponde alla lunghezza del pacchetto dati più piccolo, e prende il nome di Inter Frame Gap (IFG)

L’IFG permette agli host di distinguere la fine di una trasmissione e l’inizio della successiva, e prima di iniziare a trasmettere il primo frame l’host deve verificare che il canale sia libero per la durata di un IFG.

Non essendo un protocollo centralizzato, due host potrebbero mettersi a parlare nonostante il carrier sense (Multiple Access), per via di latenza di rete. Se si verifica una collisione, il meccanismo di Collision Detection entra in azione, e per rilevare una collisione, ogni host (durante la trasmissione) ascolta i segnali, confrontandoli con quelli generati, e cerca di rilevare la collisione. In seguito a collisione, ogni host sospende la trasmissione e manda un segnale di Jamming per avvisare gli altri host dell’accaduto, con gli host trasmittenti che ripetono il tentativo di trasmissione dopo un ritardo pseudo-casuale determinato mediante un algoritmo di exponential back-off (al massimo vengon fatte 16 ritrasmissioni).

BINARY EXPONENTIAL BACK-OFF

Idealmente, l’algoritmo funziona nel seguente modo: Il ritardo (il tempo viene misurato sulla base della velocità trasmissiva) è 𝑘 ∗ 512.. K viene scelto nel range [0, 2𝑛−1], dove n è il numero di collisioni.

Ethernet, invece, usa un approccio “calmierato” in base a n:

• Se n=1, K va da 0 a 1.

• Se 𝑛 < 10, 𝐾 = {0 … 2𝑚− 1} con 𝑚 = min{𝑛, 10}.

• Se 10 < 𝑛 ≤ 15, 𝐾 = {0 … 1023}

• Alla 16esima collisione si rinuncia.

La parte sul CRC è stata skippata.

TOPOLOGIA PER LAN E INTERCONNESSIONI LAN

BUS

Il modo più semplice per collegare degli host in rete è una topologia a bus, ovvero un solo cavo (chiamato dorsale) che collega tutti gli host. Agli estremi del cavo, questo va terminato, e i messaggi vengono inviati a tutti gli host e vengono accettati solo dal NIC con indirizzo MAC corrispondente. L’architettura ha gravi limiti, tra cui la banda del cavo condivisa tra tutti gli host e, in caso di guasto, gli host vengono isolati “a gruppi”.

ANELLO

Gli host sono collegati, come nell’architettura a Bus, da un unico cavo, ma questo non viene terminato (anzi, forma un anello), e sono quindi più resilienti ai guasti. Gli host hanno anche la funzione di ripetitore, e ritrasmette il segnale (a meno che non sia il mittente).

STELLA

La topologia stella prevede che gli host siano collegati ad un dispositivo centrale, ciascuno collegato mediante cavo dedicato. Nel caso di interruzione di uno dei cavi che vanno verso gli host, solo un host rimane isolato (grande

miglioramento rispetto alle topologie precedenti), mentre se si rompe il centro stella tutti gli host rimangono isolati (è più probabile che si rompa il cavo).

La topologia è quindi molto più flessibile, ma abbiamo introdotto un dispositivo di rete in più (che non dovrà essere un collo di bottiglia).

(10)

DISPOSITIVI DI RETE

• Livello 1

o Hub: dispositivo che riceve un segnale elettrico e lo inoltra a tutti gli altri collegamenti. Non ha idea di come sia fatta la rete, e serve per sopperire all’attenuazione del segnale dovuta al media. Gli hub non isolano il dominio delle collisioni (se succede una collisione in una rete collegata all’hub, tutto il traffico della lan va a fermarsi) e di conseguenza usare un bus in una LAN è come tornare ad una topologia a Bus.

Sono praticamente estinti.

• Livello 2 (anche se a volte sono di livello 3 (network)) o Bridge

▪ Opera a livello Ethernet, è in grado di esaminare l’header dei frame e li inoltra selettivamente sulla base del MAC address della destinazione (inoltra solo sulla porta giusta), e impiega il protocollo CSMA/CD per la trasmissione, isolando quindi il dominio delle collisioni. Il bridge (più che un dispositivo) è una funzione, che viene implementata dallo switch.

o Switch

▪ Uno switch fa il lavoro di un hub, ma con la funzionalità di Bridge.

Non esistono, fisicamente, bridge, bensì esistono dispositivi che mediante software ne implementano la logica.

SWITCH

Gli switch sono in grado di imparare quali host possono essere raggiunti, e attraverso quali interfacce, grazie al mantenimento delle tabelle di filtraggio che costruiscono in modo automatico. Quando viene ricevuto un frame, lo switch scopre la locazione del mittente, e la registra. Ogni record della tabella di filtraggio è composto dall’indirizzo mac, l’interfaccia e il TTL, scaduto il quale il record viene cancellato. Non è quindi necessario configurarli.

L’algoritmo di apprendimento funziona nel seguente modo:

1. Lo switch viene acceso, non ha regole (tabella vuota)

2. Un host invia un frame ethernet, e arriva sulla porta n dello switch

a. Lo switch legge il mac address del mittente, e segna la corrispondenza porta-mac address.

b. Il messaggio viene replicato su tutte le porte.

3. Il destinatario risponde al messaggio a. Lo switch fa la stessa cosa di prima.

b. Il messaggio viene mandato solo sulla porta a cui è collegato l’host corretto.

4. Dopo tot tempo che non viene usato e quindi aggiornato il record (o nel caso in cui le informazioni nella tabella non corrispondano più con la realtà) l’informazione scade, e viene scartata. Prima di allora, lo switch manda sempre il messaggio sulla porta giusta.

I tipi di commutazione per lo switch possono essere:

• Store and forward

o Quando un frame è instradato tramite uno switch con questa commutazione, il frame viene salvato nella sua totalità prima di trasmetterlo in uscita.

• Cut-through

o Il frame viene inoltrato dalla porta di input a quella di output, e basta che sia arrivata la parte contenente l’indirizzo di destinazione (e che il canale in uscita sia libero) per inviare (non è possibile verificare la correttezza del byte di controllo, ma migliorano le prestazioni).

Lo switch è in grado di ridurre le collisioni, dal momento che fa inoltro selettivo, e uno switch può avere porte a velocità differenti: questo permette di creare soluzioni più scalabili.

(11)

RETI AD ALBERO

Le reti ad albero sono presenti non come reti singole, ma come reti formate da altre sottoreti a stella. E’ una rete di tipo gerarchico, che vede switch non solo collegati ad altri host ma anche ad altri switch. Chiaramente, se si rompe un collegamento tra switch, le due reti risultano isolate: è una buona idea collegare uno switch in più di un modo, creando sistemi ridondanti: per evitare cicli, si va a creare uno spanning tree.

PROTOCOLLO SPANNING TREE

L’algoritmo consente di creare un percorso aciclico che colleghi tutti gli switch allo switch che esegue l’algoritmo, in base alle interfacce collegate. Si basa sull’identificazione di un Root switch, e ad ogni switch è assegnato un

identificativo che è la priorità (è configurabile, e se la priorità è identica la scelta viene fatta in base al MAC address):

questo permette l’ordinamento topologico, e la costruzione dello spanning tree viene fatta tenendo a mente i “costi”

dei vari collegamenti.

La tipica struttura LAN di un’azienda medio-grande ha migliaia di host collegati a diverse sottoreti LAN, server connessi direttamente a switch con link a 1Gbps, presenza di una o più wireless lan e di più dorsali che collegano gli switch e che inviano il traffico a uno o più router e al router di frontiera, collegato alla WAN.

Nonostante le capacità degli switch, per reti grosse è necessario spostarsi al livello 3, dal momento che ogni topologia Ethernet ha limitazioni relative alla massima distanza tra host e i messaggi di broadcast risultano ingestibili su una rete troppo grande. Con dispositivi di livello 3 si possono isolare le reti anche dal punto di vista broadcast.

Gli switch di livello 3 sono switch che fanno il loro normale lavoro, ma sono in grado di leggere alcune informazioni del livello 3 (quindi non sono alla pari dei router).

VLAN

Utilizzando gli switch, possono emergere problemi a livello di sicurezza in quanto non è detto che gli host aggregati fisicamente debbano anche condividere le informazioni (questo può portare host non autorizzati a “sniffare”

pacchetti). Per ovviare al problema, si potrebbe avere pc che hanno un cavo dedicato, ma l’opzione è assai costosa.

La rete fisica non deve quindi necessariamente corrispondere alla rete logica: se si ha uno switch per piano, e su quel piano ci sono più uffici che si occupano di cose diverse, non ha senso che facciano tutti parte della stessa rete.

Una VLAN è in grado di segmentare logicamente gli host in sottoreti differenti, e ciascuna di esse è realizzata mediante uno switch di fascia medio-alta e porte di switching private, con i frame che vengono inviati solo all’interno della VLAN corrispondente, e può esserci scambio di frame tra VLAN diverse mediante switch di livello 3 o router particolari. Ogni porta di uno switch è assegnata ad una VLAN, e più porte possono riferirsi alla stessa VLAN in quanto queste sono definite a livello di indirizzi di sottorete. Il traffico VLAN tra switch, che transita quindi tra dorsali, è identificato mediante uno specifico tag (protocollo 802.q) oppure incapsulato (Inter-Switch Link Protocol, ISL) per identificare la VLAN di destinazione: starà poi allo switch di destinazione passare alla VLAN giusta i frame corrispondenti.

Dai cavi collegati agli host, che si dicono “non taggati”, i frame vengono poi mandati su un cavo in trunk allo switch successivo, e via dicendo. Il frame tagging è una tecnica che permette di estendere il frame ethernet, ponendo 4 byte tra il mac sorgente e il tipo di protocollo, che contiene il Tag Protocol Identifier (16 bit), la priorità (3 bit), il CFI (1 bit) e il VLAN id (12 bit).

Gli host possono essere aggregati in VLAN mediante soluzioni software basate sul numero di porta dello switch, indirizzi MAC, indirizzi IP, tipo di protocollo.

(12)

LIVELLO IP

Il protocollo IP è il protocollo di terzo livello (Network) dello stack TCP/IP. Il suo più grande pregio è quello di essere estremamente scalabile, il che gli ha permesso di sopravvivere per così tanto a lungo in un mondo in espansione come quello della rete: creato negli anni 70, standardizzato nell’81, è ancora il protocollo che regge le moderne

comunicazioni. Per poter capire il protocollo IP, è necessario capire prima cosa sia internet: il protocollo è stato infatti creato considerando internet non solo dal punto di vista tecnico, ma anche gestionale. Il protocollo è strutturato in modo da fornire meno funzionalità possibili.

Definizione: Internet

Internet è un unico spazio di indirizzamento globale, è in grado di supportare le comunicazioni mediante TCP/IP e fornisce, pubblicamente o privatamente, servizi ad alto livello relativi all’infrastruttura stessa.

Fisicamente è un insieme di componenti fisici, tra cui host e elementi infrastrutturali (switch, router, cavi), che ha come obiettivo globale quello di connettere un qualsiasi numero di reti, indipendenti e eterogenee.

Fondamentale per il progetto, multiplexing ottenuto mediante packet switching e router stateless con store and forward. Dal punto di vista organizzativo è un insieme di oltre 50.000 sistemi autonomi (autonomous systems), alcuni dei quali su scale vastissime: internet ha anche un’organizzazione gerarchica di nomi e domini per gli host. Dal punto di vista di un client o un server, è invece una entità perfettamente trasparente in grado di farli comunicare tra di loro.

Riassumendo:

• Dal punto di vista applicativo, è un’entità trasparente.

• Dal punto di vista fisico, è un insieme di componenti interne, in cui ciascun nodo ha un indirizzo IP.

• Dal punto di vista funzionale, è una rete operante per packet switching, con intelligenza sugli endpoint e non sui componenti intermedi.

• Dal punto di vista organizzativo, un insieme di sistemi autonomi (rispetto ai router), di nomi e domini (rispetto agli host).

Per rendere possibile tutto questo, è necessario rispettare i seguenti principi:

1. Survivability: se esiste un qualsiasi percorso tra due host, la comunicazione deve essere possibile.

2. Forma a clessidra su più livelli: il protocollo fa minime assunzioni sui mezzi di trasporto sottostanti e deve funzionare per qualsiasi tipo di rete.

3. Stateless: l’intelligenza è sugli host, non sui router, il che migliora la survivability e le prestazioni della trasmissione.

4. Net neutrality: ogni pacchetto di qualsiasi mittente viene trattato in modo equo.

5. Autonomous Systems: ogni rete è di un ente differente.

INDIRIZZI IP

L’indirizzo IP è l’informazione che permette di distinguere in modo univoco un nodo collegato a internet, e permette di fornire un servizio di comunicazione universale. Un indirizzo ipv4 è composto da 4 byte, rappresentato dai quattro byte in notazione decimale, separati tra di loro da punti. Per sopperire ai “pochi” indirizzi, è nato l’ipv6, il cui indirizzo è a 128bit (16 byte).

La lunghezza dell’indirizzo è fissa perché, sebbene la lunghezza variabile migliori la flessibilità, ci sono grandi costi nella gestione dei pacchetti e del routing. A differenza degli indirizzi MAC, gli indirizzi IP forniscono informazioni sulla struttura della rete, che al posto di essere piatta è gerarchica: ogni indirizzo ip è diviso in due sezioni, la sezione netid e la sezione hostid, dove netid identifica la rete mentre hostid identifica l’host all’interno della rete.

La parte hostid e netid dipende dall’assegnazione di classi di indirizzi pubblici predefinite, oppure subnetting/supernetting svolti da parte dell’amministratore di rete.

(13)

Gli indirizzi IP sono detti indirizzi logici, e ciascun host va identificato mediante uno di questi: l’indirizzo può venir fornito in modo permanente (impostato nei file di configurazione), oppure in modo dinamico (utilizzo del protocollo dhcp). L’indirizzo non viene assegnato al dispositivo (host), ma all’interfaccia di rete. Il fatto che una interfaccia di rete abbia comunque un mac address è conveniente, dato che la NIC è in grado di distinguere se il pacchetto è per lei o meno senza stare a scomodare il sistema operativo. Ci sono alcuni indirizzi ip speciali, non assegnati ad host:

• Indirizzo di rete: denota il prefisso assegnato ad una rete. In generale, è l’indirizzo con i bit dell’host a 0.

• Indirizzo di broadcast della rete: denota l’indirizzo di broadcast della rete. In generale, è l’indirizzo con i bit dell’host a 1.

• Indirizzo broadcast limitato: tutti i bit uguali a 1, broadcast su rete fisica locale

• This host on this network: tutti I bit uguali a 0, usato al boot dell’host.

• Loopback: 127.0.0.1, indirizzo software virtuale senza corrispettivo hw e senza connessioni di rete.

La gestione degli indirizzi e dei domini è dal 1986 in mano alla IANA guidata da Jon Postel, una delle più importanti figure nell’ambito delle reti (autore di 200 RFC, autore dello standard IP, curatore delle porte note dei protocolli a livello di trasporto). La IANA, trovandosi a gestire una rete decentralizzata, decise di delegare il più possibile a enti locali (per quanto riguarda l’assegnazione degli ip), andando a creare delle sotto-associazioni che vanno a definire

“blocchi” di indirizzi assegnati a determinate aree geografiche (per Europa/Russia/Medio Oriente l’agenzia è la RIPE NCC, che a sua volta ha delle sottoassociazioni, per l’Italia ad esempio c’è il GARR). Il network id, corrispondente a un insieme di indirizzi ip, è quindi assegnato a poche organizzazioni e agli ISP da IANA/ICANN, e altre organizzazioni si interfacciano agli ISP per ottenere un proprio network id, con gli host id che vengono assegnati localmente a ogni host dall’amministratore di rete.

Gli indirizzi ip possono essere divisi in 5 classi, di cui solo 3 utilizzabili (classe A, B, C), una per il multicast address (classe D) e una classe riservata (classe E):

A. 0 bit in netid, 32 di hosted. Primo bit deve essere a 0 (da 0.1.0.0 a 127.).

B. 2 byte di netid, 2 byte di hostid. Primo bit deve essere 1, il secondo 0 (da 128.0.0.0 a 191.).

C. 3 byte di netid, 1 byte di hostid. Primo e secondo bit deve essere 1, il secondo 0 (da 192.0.0.0 a 223.).

D. 1 byte per netid, 3byte per indirizzi di multicast. Primi tre bit a 1, il quarto 0 (da 224.0.0.0 A 239.).

E. 1 byte per netid, 3byte per indirizzi sperimentali. Primi 5 bit a 1 (da 240.0.0.0 a 255.255.255.254).

INDIRIZZI CLASSLESS

La ripartizione degli indirizzi in classi è molto rigida e poco graduale, e per motivi gestionali e di efficienza del ruouting conviene definire insiemi logici di indirizzi a maggiore flessibilità, ovvero passare in una suddivisione in byte ad una suddivisione in bit per la coppia netid-hostid: sono gli indirizzi classless, dove gli indirizzi non sono in classi, ma l’intero spazio è suddiviso in blocchi differenti. Si usa la notazione CIDR dove ciascun insieme di bit è indicato dal suffisso n nella notazione a.b.c.d/n.

La notazione CIDR (Classless Inter-Domain Routing) è una notazione in cui si specifica quale parte dell’indirizzo è il NetId e quale è HostId, utilizzando la maschera di sottorete: un indirizzo di classe C, avrà una maschera di sottorete in cui i primi 24 bit sono fissi a 1: 255.255.255.0 sarà la maschera di sottorete, e viene indicata con /[n_bit a 1] dopo l’indirizzo. Il numero di bit fissi a 1 è il numero di bit dedicati al netId (e gli altri sono legati all’hostId).

Definizione: Maschera di sottorete

Una netmask (o maschera di sottorete) è una bitmap grande quanto l’indirizzo che è impostata a 1 nelle parti dell’indirizzo che fanno parte del NetId, e a 0 nelle parti dell’HostId

La notazione CIDR permette di capire il range degli indirizzi ip e l’indirizzo di broadcast (e l’indirizzo di rete): la rete 192.168.1.0/25 avrà ip da 192.168.1.1/25 fino a 192.168.1.126/25 (128-2 indirizzi disponibili), con indirizzo broadcast 192.168.1.127/25, e la netmask sarà 255.255.255.128 (11111111.11111111.11111111.10000000).

(14)

DATAGRAMMA IP

Fondamentalmente, il datagramma IP contiene gli indirizzi del mittente e del destinatario e l’elemento incapsulato dal livello superiore. Nelle conversazioni internet, ciascun pacchetto è indipendente dall’altro, dal punto di vista dei protocolli, ma dal punto di vista informativo sono uniti (basta controllare gli indirizzi sorgente/destinazione).

Andando più in dettaglio, il datagramma contiene:

• Vers: versione del protocollo IP (4bit).

• Hlen: lunghezza dell’header del datagram (in parole di 32bit, lungo 4bit), generalmente uguale a 5 (ovvero 20 byte).

• Service type: specifica il trattamento richiesto per il datagram, formato dai campi precedence (3 bit), D (basso ritardo, 1 bit), T (alto throughput, 1 bit), R (alta affidabilità , 1 bit), e altri 2 bit inutilizzati.

• Total lenght: lunghezza del datagramma ip (in byte, 16 bit), lunghezza massima 216 (64kbyte).

• Campi per la gestione della frammentazione e ricostruzione:

o Identification, valore che identifica il datagramma.

o Flags, controllo di frammentazione.

o Offset di frammentazione, la posizione del frammento nel datagramma originale.

• TTL: indica il numero di “salti” che possono venir fatti da quel pacchetto tra i router (viene ridotto ad ogni arrivo su un router).

• Protocol: indica quale protocollo applicativo può usare i dati incapsulati.

• Checksum dell’header.

• Ip mittente.

• Ip destinatario.

• Opzioni ip: campo opzionale di lunghezza variabile usato per il testing di rete.

• Padding: campo opzionale per rendere l’header lungo di un multiplo di 32, presente solo se IP OPTIONS denota lunghezza variabile.

Ip non ha meccanismi di verifica d’integrità dell’oggetto incapsulato, ma solo dell’header.

SUPERARE I LIMI TI DI IP

L’indirizzo IPv4 ha grandi limiti nell’ambito del numero di indirizzi: per superarlo, il primo passo è gestire in modo più efficiente gli indirizzi disponibili, mediante DHCP e tecniche di NAT (Network Address Translation), e in secondo luogo passare al nuovo standard IPv6.

NAT

Il Natting è una funzionalità attivabile sul router di frontiera di una rete. Il nat router si interpone quindi tra la rete locale e Internet, e svolge il compito di mappare gli indirizzi tra la rete interna e quella esterna, garantisce la trasparenza del routing tra gli end system, moltiplica la possibilità nel caso di interconnessioni di un host nella rete interna e aumenta la sicurezza rendendo inaccessibili gli elementi interni alla rete.

Gli ip interni sono indirizzi privati o “non routable”, per cui cade l’assunzione che questi indirizzi siano univoci (continua a valere solo per gli indirizzi pubblici) e che hanno senso solo all’interno della rete locale, e il routing non verrà fatto per quell’indirizzo privato.

Quello che succede, nella pratica, è che quando un host invia un pacchetto verso la rete esterna, lo fa specificando l’ip della destinazione. Quando raggiunge il router di frontiera, l’ip sorgente diventa quello pubblico del router, e quando il router riceve risposta cambia l’ip di destinazione in quello dell’host interno. Sono di seguito riportati gli ip privati:

(15)

Il router gestisce un binding tra gli indirizzi dei due domini tramite una tabella che in ogni riga ha ciascuna connessione aperta. Il binding può essere statico (la corrispondenza è impostata manualmente con l’IP del router o uno degli indirizzi pubblici, port forwarding) o dinamico (la corrispondenza viene impostata in modo dinamico). Nel caso in cui più connessioni condividano lo stesso ip, la tabella deve conservare informazioni sulla sessione.

PAT

Il PAT (Port Address Translation) è fondamentale per condividere pochi indirizzi ip pubblici tra tanti host, e agisce sul livello di trasporto per estendere il mapping del NAT da coppie di indirizzi IP a coppie IP:porta. Quando si parla di NAT, il concetto di PAT è generalmente già incluso.

SISTEMI AUTONOMI E ROUTING

L’architettura di internet è lascatamente gerarchica, con host terminali collegati a ISP locali, collegati a loro volta a ISP regionali (o nazionali), i quali sono a loro volta collegati agli ISP internazionali, noti come National Backbone Provider (NBP). Con il passare del tempo, gli ISP locali stanno venendo inglobati da quelli regionali/nazionali, e quindi la gerarchia in alcuni contesti comprende solo 2 livelli (ISP nazionali e ISP internazionali).

Dal punto di vista delle reti fisiche internet non è un insieme di router sparpagliati e collegati a casaccio, in quanto i router sono aggregati in regioni, chiamate Autonomous Systems (AS).

Definizione: AS

Un insieme di reti, indirizzi ip e di router sotto il controllo di una organizzazione nell’ambito del quale si usa una politica di interior routing prende il nome di AS. Gli AS sono le unità delle politiche di exterior routing.

Non tutti i router sono uguali (features, configurazione), ma tutti i router all’interno dello stesso AS usano lo stesso algorimo di routing: gli AS dall’esterno vengono visti come una singola entità, il che riconduce a due livelli gerarchici, ovvero il livello dell’AS e di quello che c’è fuori l’AS.

Il traffico di internet si distribuisce tra più di 50.000 AS, ciascuno caratterizzato da un numero identificativo su due byte, compreso tra 1 e 64511 (gli altri sono riservati), che viene assegnato dalla IANA quando l’AS viene registrato e uno o più prefissi di rete. Nessun AS gestisce il 5% del traffico, il valore medio è intorno all’1%.

Gli AS sono collegati tra loro da due tipi di centri di interscambio:

• Peering point, dove peering è una connessione stabilita tra peer (ovvero AS in questo caso) con lo scopo di scambiarsi il traffico. Inizialmente, era implicito il fatto che nessuno dei due pagava l’altro, mentre adesso si deve parlare esplicitamente “settlement-free peering” quando ci si vuole riferire alla specifica situazione quando lo scambio è gratuito. Le relazioni economiche possibili sono infatti 2:

o Transit: un AS paga un altro per avere accesso o transito su internet.

o Peerint: due AS si scambiano il traffico per reciproco interesse, gratuitamente. Permette di evitare costi, aumentare l’affidabilità delle rete e ridurre la lunghezza dei percorsi.

• Internet exchange point, tipicamente consorzi indipendenti senza scopo di lucro creati tra AS e supportati da finanziamenti pubblici. Spesso sono Metropolitan Area Exchange.

HOST E ROUTER

Per capire in che modo la comunicazione tra un host client e un host server, è necessario capire in che modo viene gestito il routing.

(16)

Quando un host invia un pacchetto, deve decidere a che router mandarlo: il router scelto prende il nome di source router, e in assenza di regole specifiche il router scelto è il default gateway di quell’host. Ogni volta che un router riceve un pacchetto, deve decidere a che router inviarlo (next-hop router), e questo si ripete finchè il pacchetto non arriva all’host di destinazione, con l’ultimo router che tocca il pacchetto che prende il nome di last hop router.

Il router deve risolvere il problema dell’instradare i pacchetti verso una destinazione raggiungibile unicamente proseguendo per step intermedi, ed è un problema complesso. Il problema viene diviso in due parti:

1. Ad ogni pacchetto, il router deve inoltrarlo per inviarlo al destinatario corretto (ip forwarding)

2. Il router deve mantenere informazioni aggiornate per stabilire il destinatario corretto (protocollo di routing) Definizione: Ip forwarding

L’ip forwarding è il meccanismo che consente di inoltrare un messaggio d’ingresso in una porta su di un’altra, e viene fatto da ciascun router per inoltrare il messaggio al next-hop router (che è collegato direttamente al router).

La funzione di routing consiste nella consegna da un host ad un altro, con best effort e privo di connessione (la consegna non è garantita), e provvede a scegliere il percorso nella rete mediante il quale portare a destinazione il pacchetto: tutto questo è consentito in quanto ogni router ha una tabella in cui ogni riga indica il next hop per una determinata destinazione.

In sistemi a circuit switching, è necessaria una fase di set-up in cui tutte le risorse necessarie alla destinazione vengono dedicate e rimangono vincolate fino alla fine della trasmissione, causando degli sprechi, a favore però di prestazioni garantite in base alle risorse assegnate. Un sistema a packet switching si basa invece sulla condivisione delle risorse.

Il multiplexing di risorse è, infatti, indispensabile per usarle in modo ottimale:

• Nel circuit switching è deterministico, in quanto anche nel CS le risorse non sono completamente dedicate, ma divise in parti che vengono assegnate alle chiamate. Le parti di risorse, riservabili per una chiamata, non sono utilizzabili da altre anche se non vengono usate dalla chiamata stessa. La risorsa viene divisa o usando metodi basati sulla frequenza (si divide il canale di trasmissione in bande da tot kHz) oppure basati sul tempo.

• Nel packet switching, il canale di comunicazione viene sempre usato al 100%, e a venir divisa è la trasmissione, con le risorse che vengono usate in base all’effettiva necessità.

Il multiplexing quindi è di tipo statistico a suddivisione di tempo, con pacchetti provenienti da diverse sorgenti che si mischiano sullo stesso link e con i router che sono dotati di buffer per mettere in attesa i pacchetti in caso di congestione. Il packet switching ha dalla sua il fatto di condividere risorse, assenza di fase di prenotazione ed è ideale per dati che arrivano in gruppi, ma ha di contro che ci possono essere ritardi, perdite di pacchetti, ed è necessario un protocollo in grado di garantire controllo della congestione e trasferimento affidabile.

ARCHITETTURA DI UN ROUTER

Un router è costituito da 4 componenti principali, ovvero una porta di ingresso, un commutatore, un processore di routing e una porta in uscita.

• Porta di ingresso, svolge le funzioni dei livelli 1, 2 (per il link d’ingresso) e 3 (funzione di ricerca e forwarding della porta di uscita, ottimizzazione della ricerca nella routing table) e gestisce la coda.

• Switch, permette lo spostamento della porta di ingresso a quella opportuna, basandosi sulle istruzioni del routing processor. La commutazione può essere fatta mediante una memoria condivisa che viene usata dalle porte, mediante un bus oppure usando un sistema a crossbar (le schede di rete sono connesse tra di loro, e questi collegamenti possono essere accesi e spenti)

• Porta di uscita, fa le stesse cose della porta di ingresso (incluso il buffer) dal momento che ogni porta del router può essere sia di ingresso che di uscita.

(17)

Il buffer altro non è che una semplice coda che viene processata in ordine FIFO (generalmente), e se il buffer è pieno, i pacchetti in arrivo vengono droppati (e non viene notificata la loro scomparsa). I router fanno uso di comunicazione store and forward.

Nella comunicazione store&forward, i pacchetti quando giungono al router aspettano il loro turno per essere

trasmessi all’hop successivo. I conflitti possono essere legati al fatto che la domanda aggregata di risorse sia superiore alle risorse disponibili, e non eccendosi prenotazioni possono esserci delle pesanti congestioni (pacchetti persi in caso di buffer pieni).

ROUTING

INTRODUZIONE

L’obiettivo degli algoritmi di routing è quello di determinare il percorso a costo minimo per portare a destinazione un pacchetto.

Definizione: Costo

Esistono diversi modi per determinare i costi, che possono essere determinati in base a fattori statici (numero di hop/banda del link), dinamici (traffico della rete, guasti, carico dei router), oppure possono essere costi veri e propri relativi ad accordi tra AS. In quanto sarebbe in violazione della net neutrality, non vengono considerati i tipi di traffico.

Per formulare un algoritmo di routing, si modella la rete come un grafo pesato G(N,E) dove N sono i router e E sono gli archi, a cui sono associati i costi di connessione. Esistono due classi di algoritmi di routing:

• Algoritmi di routing globale, ogni nodo fornisce a tutti gli altri nodi la sua visione sui link della rete (Link State Protocol)

• Algoritmi di routing locale, ogni nodo comunica ai suoi vicini la sua visione del costo di trasmissione dei link (Distance Vector Protocol)

ALGORITMI LINK STATE

I Link State sono algoritmi globali (la topologia e i costi di ogni link devono essere noti a tutti). Ogni nodo, dopo aver calcolato lo stato dei link a lui connessi, manda periodicamente l’identità e i costi dei suoi link, e ciascun nodo (in base alle informazioni aggiornate) ricava il costo minimo con Dijkstra (per maggiori informazioni, consultare il riassunto di algoritmi o di ottimizzazione lineare intera).

ALGORITMI DISTANCE VECTOR

L’algoritmo permette un calcolo distribuito del next hop, e l’unità informativa è composta dalla distanza e dal vettore (inteso come direzione) a cui quella distanza fa riferimento.

L’algoritmo impiega la formula di bellman-ford per il calcolo tra il costo minimo tra x e y, 𝐷𝑥(𝑦) =

min𝑣 {𝑐(𝑥, 𝑣) + 𝐷𝑣(𝑦)} (per maggiori informazioni, consultare il riassunto di algoritmi o ottimizzazione lineare intera).

L’algoritmo di Bellman-Ford permette di creare la tabella di routing, che per ogni destinazione avrà indicato il next hop. Se la rete è stabile, l’algoritmo converge, ma se la rete non è stabile (un costo passa da costare x a costare y) in attesa del prossimo aggiornamento dei router potrebbero comparire tabelle di routing disallineate (del problema se ne accorgono immediatamente solo i router vicini all’instabilità). Un

altro problema si ha quando la rete è grossa (molti router, molti reti), ed è impossibile che un router mantenga in memoria le indicazioni per tutte le destinazione (a questo si pone rimedio con l’aggregazione), e un ulteriore problema è l’ “Effetto Rimbalzo” dovuto alla visione parziale della rete che hanno i vari host, e consiste (in seguito ad una variazione dello stato della rete) in una stima errata del costo totale

(18)

verso un host accessibile indirettamente. Nell’immagine a lato, il collegamento tra A e B passa da 1 a 50 e B, sapendo che C può raggiungere A in due step (o almeno poteva, passando da B), e quindi si verifica un errore nella tabella di routing. C si fiderà di B (che dice di costare 3) e quindi C metterà costo 4… questo finchè l’unica route accettabile non viene presa in considerazione (la route che rimbalza supera il 25).

Per prevenire rimbalzi, si devono selezionare percorsi senza cicli, e ci sono diversi modi per farlo.Ad esempio, ogni aggiornamento del cammino minimo verso un nodo riporta il percorso, e se un router vede se stesso nel percorso scarta il percorso. Questo non va particolarmente bene, in quanto in presenza di una rete grossa il messaggio diventa enorme. E’ inoltre presente il problema del “conteggio a infinito”, ovvero il calcolo della route per un percorso irraggiungibile” porta ad un costo a infinito: per evitare questo, si può introdurre una soglia superata la quale la route non viene considerata, oppure utilizzare la tecnica split horizon, in cui non si mandano gli stessi vettori adiacenza a tutti i nodi, con il vettori che non devono contenere destinazioni raggiungibili duplicate. Versione alternativa dello SH è lo SH with poisoned reverse, dove se B raggiunge A attraverso C, B avvertirà C che la sua distanza verso A è infinita.

LINK STATE VS DISTANCE VECTOR

Non c’è un vero vincitore, in quanto entrambi hanno vantaggi e svantaggi, e dipende molto dalle caratteristiche e dalle esigenze della rete: i Link State vengono usati tendenzialmente dentro gli AS, mentre i Distance Vector vengono usati per il routing tra gli AS.

ROUTING SU IP

Ogni host e ogni router hanno una tabella di routing in cui ogni riga contiene il next-hop per la destinazione: se queste sono tante, e la lista è di tipo piatto, sorgono problemi a livello di performance. Per risolvere il problema, esistono le tecniche di aggregazione:

• Uso del solo netid per un insieme di indirizzi ip di destinazione che condividono lo stesso nexthop (reti per cui il nexthop è lo stesso router).

• Nel caso in cui gli indirizzi aggregabili non condividano lo stesso nexthop, si aggregano gli indirizzi aggregabili usando prfissi differenzi ordinando la tabella e mettendo prima le maschere più lunghe e poi le più corte (longest prefix matching).

• Si organizzano le tabelle, creando un’organizzazione gerarchica che riflette l’architettura di internet.

• Si può usare anche il routing geografico (alcuni ip vengono dati in base alla posizione).

• Uso del router di default, comune a più indirizzi di destinazione.

Con la notazione CIDR, posso aggregare due reti /24 in una /23, e gli indirizzi devono rigorosamente essere

accompagnati da una netmask. Usando il longest prefix matching, al fine di non memorizzare tutte le netmask, si può realizzare un albero binario, costituito da una tabella a due colonne (nella prima c’è la maschera, nella seconda un codice univoco per la maschera), che ha le righe poste in ordine crescente di maschera: l’albero è realizzato in forma binaria ponendo come figli sinistri i bit a 0 e i destri a 1.

Il forwarding ip ha diverse caratteristiche:

• Indipendenza dal mittente, il next-hop routing non dipende dal mittente del pacchetto o dal cammino che il pacchetto a fatto fino a quel momento

• Routing universale (c’è sempre un router comune in una rete)

• Routing ottimo

Quando un pacchetto giunge al router, succedono le seguenti operazioni:

1. Estrae l’indirizzo IP del Destinatario D dall’header, e determina il suo netid N, 2. Se N è una rete connessa direttamente al router, consegna il pacchetto a D (livello 2) 3. Se la tabella contiene un router per N, invia il pacchetto al next hop router

(19)

a. Si verifica il Next-Hop forwarding, con il next-hop router che appartiene ad una rete a cui il router è collegato direttamente. L’indirizzo segnato sulla tabella sarà quello dell’interfaccia su quella rete.

4. Se la tabella contiene un router di default, lo manda a lui 5. Diversamente, si verifica un errore

Per il routing viene fatto un grande utilizzo di subnet mask, che servono per facilitare il routing dei pacchetti all’interno della rete amministrata.

SUBNETTING E SUPERNETTING

Subnetting: creazione di sottoclassi di indirizzi ip, ottenute dalla disgregazione di una rete più grossa.

Supernetting: creazione di superclassi di indirizzi ip, ottenute aggregando reti più piccole.

Subnetting e supernetting portano una maggiore flessibilità della rete.

Per il subnetting si ricorre alla manipolazione della subnet mask: per ogni bit in più in mano alla subnetmask, la capacità espressiva per gli host viene dimezzata. Se si devono creare più sottoreti di dimensioni diverse, bisogna necessariamente partire dalle più grandi, passando alle più piccole. Il subnet addressing modifica l’interpretazione degli indirizzi ip, che è composto da una porzione di rete e una locale: il risultato è un routing gerarchico.

Le supernet rispondono al problema legato all’esaurimento dello spazio di indirizzamento (ad esempio, si dispongono solo di due classi C e non di una classe B), unendo le reti riducendo i bit della netmask: è il supernet addressing.

Formalmente, nel router si usa la notazione CIDR (Classless Inter-Domain Routing), ovvero in cui la parte che dell’hostid e del netid è esplicitamente indicata mediante maschera di sottorete.

ROUTING SU SCALA GEOGRAFICA

I router di internet non rappresentano un insieme omogeneo di risorse, e non eseguono lo stesso algoritmo di routing (questo per favorire la scalabilità, bisogna ridurre la complessità del calcolo del cammino e l’autonomia amministrativa degli AS). Gli AS possono essere di tipo stub (AS con una sola connessione ad un altro AS), multi-homed (AS collegato a diversi AS, accetta solo traffico locale), transit (AS connesso a diversi AS che accetta il traffico locale e il traffico in transito). Il problema del routing a livello di internet può essere visto a diversi livelli di astrazione: se il livello è molto alto, si possono aggregare tutti i router di un AS in un unico “iper router”, e man mano ci si avvicina all’AS di

destinazione, è necessario un livello di astrazione più basso. Si possono distinguere due problemi:

• Routing intra-AS, risolto da algoritmi IGP (Interior Gateway Protocol).

o Per il routing interno, ciascun AS può usare metriche multiple e politiche di router diverse, tanto un AS visto da un altro AS è qualcosa di perfettamente trasparente. Alcuni router dell’AS avranno il ruolo di Router di Frontiera, ovvero collegheranno l’AS ad altri.

• Routing inter-AS, risolto da algoritmi BGP (Exterior Gateway Protocol), mediante il quale un AS dà informazioni agli altri su quali AS sono raggiungibili.

PROTOCOLLI INTRA-AS RIP

Il RIP è un protocollo intra-AS, basato sul protocollo Distance Vector, e ogni collegamento ha costo unitario (il costo di un percorso dipende dal numero di hop), con il costo massimo che risulta essere di 16 salti (diametro max di un AS). Se un router non riceve nulla per 180 secondi da un suo vicino, il RIP lo considera irraggiungibile, con i percorsi che transitano per quel router che vengono invalidati (questo permette una propagazione rapida dei fallimenti di collegamento). Il RIP, come ogni protocollo di famiglia DV, funziona bene su reti piccole e stabili

OSPF

Il protocollo OSPF è un algoritmo globale di tipo link state protocol, un notevole upgrade rispetto a RIP ed è adatto a

(20)

reti più grandi e reti il cui stato cambia dinamicamente. Si usa dentro AS di medio-grandi dimensioni di primo livello.

L’OSPF permette l’autenticazione con crittografia, possibilità di usare più percorsi per instradare il traffico, supporto per instradamento unicast e multicast e la possibilità di strutturare grandi domini di instradamento in gerarchie di AS.

Non è perfetto, in quanto l’utilizzo del broadcast per aggiornamenti di costo causa il flooding. Si distinguono due tipi di router:

• Router interni, applicano OSPF entro la propria area.

• Router di bordo, applicano OSPF per permettere ai router interni di raggiungere altre aree.

PROTOCOLLI INTER-AS BGP

Il BGP può essere usato sia fuori (EBGP) che dentro (IBGP) un AS.

Con il path vector (variante di distance vector), ogni routing update contiene informazioni sull’intero cammino attraverso gli AS, e permette ai router di individuare loop. BGP impiega il TCP per connettere i router peer (router confinanti), al fine di ottenere robustezza di comunicazione, e ha diversi vantaggi, tra cui il fatto che non vi siano loop in un percorso determinato da un AS, non vi siano refresh periodici frequenti, gli aggiornamenti sono incrementali e le metriche di un AS sono locali. Dato che BGP fa uso di connessioni TCP semi-permenenti, i router formano una sessione BGP (sessione esterna EBGP, sessione interna IBGP), e un router BGP informa i router vicini solo riguardo ai percorsi che utilizza. Le funzioni principali del BGP sono:

• Scambio di informazioni tra AS confinanti, detti peer

• Propagazione di informazioni a tutti i router interni all’AS, mediante meccanismo distribuito basato sul path vector

• Determinazione dei percorsi migliori in base a informazioni di raggiungibilità e policy di routing Le destinazioni sono indicate con prefissi che rappresentano una o più sottoreti. Il BGP, inoltre, permette di implementare diverse politiche, che non fanno parte del BGP, ma che fanno parte della configurazione associata al protocollo, per favorire certi risposti rispetto ad altri (in base ad accordi commerciali, ad esempio). Tutto il

meccanismo si basa sul meccanismo dei prefissi, e tutto viene messo in moto con l’annuncio di un prefisso, ovvero una sorta di promessa dell’AS di inoltrare i pacchetti su percorso valido. Quando un border router riceve un annuncio, usa le policy locali per capire se deve accettare o rifiutare l’annuncio. I guasti possono essere di due tipi:

• Guasto esterno, EBGP: i percorsi che usano quel link sono rimossi dalle tabelle di routing.

• Guasto interno, IBGP: si cerca di tenere attivo il link, passando per percorsi indiretti.

Questa differenza richiede un diverso meccanismo di gestione per EBGP e IBGP ALTRI PROTOCOLLI DI LIVELLO 3

ICMP

Protocollo di servizio relativo alla gestione di reti e alla verifica della connettività, usato da ping e traceroute.

I messaggi ICMP sono contrassegnati da un codice, e a ciascuno di essi corrisponde un significato ben preciso. Gli usi principali sono per il controllo di flusso dei datagram e del traffico, per comunicare cambiamenti nelle tabelle di routing, per determinare cammini circolari o troppo lunghi e per stimare il tempo di trasmissione tra mittente e destinatario. Un pacchetto ICMP è diviso nella sezione header e nella sezione dati, e vi sono diverse regole:

• Nessun messaggio ICMP viene generato in seguito a errori rilevati su messaggi ICMP

• Se il pacchetto viene frammentato, solo il primo frammento può generare errori ICMP

• I broadcast e multicast non generano ICMP.

(21)

Possibili errori sono Time_Exceeded (il ttl vale 0), Destination_Unreachable (non esiste modo di raggiungere la destinazione, o il pacchetto non può essere frammentato), Parameter_Problem (il gateway non riesce a interpretare il pacchetto), Source_Quench (congestione).

LIVELLO DI TRASPORTO

Il livello di trasporto estende il servizio di consegna del protocollo ip al processo applicativo in esecuzione sugli host.

Nel TCP/IP, i procolli di trasporto sono il TCP (Transfer Control Protocol) e UDP (User Datagram Protocol). Per passare le informazioni ai processi è necessario dotarsi di servizi di multiplazione e demultiplazione di messaggi tra processi e per il rilevamento di errori tramite checksum.

Rispetto all’UDP, il TCP offre servizi aggiuntivi all’UDP, in particolare nel campo dell’affidabilità della connessione.

MULTIPLEXING/DEMULTIPLEXING

Il protocollo ip consegna dati tra host, non tra processi applicativi in esecuzione sugli host, e questo è compito del livello di trasporto: ogni segmento di questo livello contiene una informazione, chiamata “porta” (di destinazione e di sorgente), che permette di individuare univocamente il processo destinatario/sorgente, verso il quale si farà

multiplexing e demultiplexing. Una porta è un valore da 16 bit, e quelli contenuti dell’intervallo 0, 1023 (non devono essere usate senza una precedente autorizzazione IANA) sono riservati per protocolli applicativi noti, come ad

esempio http (80), smtp (25), ed è necessario possedere sia il numero di porta del mittente che quello del destinatario per distinguere processi dello stesso tipo e in esecuzione negli stessi istanti. Tra le 1024 – 49151 ci sono le porte registrate, non vanno usate per servizi molto diffusi senza una precedente autorizzazione della IANA, e le rimanenti possono usate liberamente.

Quando si apre una connessione http, il sistema assegna a quella istanza di applicazione una porta non già usata sulla macchina, e fa una richiesta al server sulla porta 80. Il server risponderà, indicando come porta destinazione la porta del client. Due processi client, residenti su host diversi, per comunicare con lo stesso applicativo sono sempre distinti in base al loro ip, e possono essere distinti in base al numero di porta (le porte potrebbero essere uguali, ma viene fatta distinzione a prescindere mediante l’ip). Attraverso la quintupla ((ip sorgente, porta sorgente)(ip destinazione, porta destinazione), protocollo trasporto) è quindi possibile individuare univocamente un flusso di dati bidirezionale.

UDP

L’UDP è un protocollo leggero, che offre le funzionalità di multiplexing/demultiplexing e checksum, che offre una consegna non garantita (ma solo best effort, come IP) ed è un servizio connectionless, ovvero non c’è handshake tra mittente e destinatario, e ogni pacchetto è trattato in modo indipendente dagli altri. Il pacchetto UDP ha il numero di porta del mittente (16bit), del destinatario (16bit), la lunghezza del pacchetto (pseudo-header+dati, 16bit), il

checksum (non è comunque previsto un sistema di recupero dell’errore) e infine i dati dell’applicazione.

Il Checksum UDP viene caricato su un superset di dati che prevede anche l’indirizzo ip del mittente, del destinatario, lo zero-padding (dimensione di questo pseudo-header), protocollo e lunghezza UDP.

TCP

Seppure utilizzi un canale trasmissivo inaffidabile, TCP è un protocollo affidabile e orientato alla connessione. Per quello che sanno le applicazioni, il loro canale di comunicazione è affidabile, ma in realtà non è il canale ad esserlo, bensì lo sono i protocolli.

FONDAMENTI DEL TRASPORTO AFFIDABILE

Il problema di ottenere affidabilità da una struttura inaffidabile è uno dei principali in campo di networking.

Ipotizziamo l’esistenza di protocolli diversi per diversi canali, con il protocollo rdt 1 che tratta un canale affidabile, rdt2 che trasferisce su un canale che può causare errori sui singoli bit (.0 versione base, .1 risolve problemi di duplicazione,

Riferimenti

Documenti correlati

Nel caso in cui per l'invio della domanda fosse necessario superare tale capacità, si invitano i candidati a inviare ulteriori PEC indicando nell'oggetto: “integrazione

c) sospensione dal servizio con privazione della retribuzione fino ad un massimo di tre mesi, ai sensi dell’art.55-sexies, comma 3. Per le forme e i termini del procedimento

196/2003 (Codice in materia di protezione dei dati personali), si informa che il trattamento dei dati personali, forniti per accedere al beneficio dell’assegno di studio,

Va sinteticamente premesso che la ricorrente ha agito in giudizio allo scopo di ottenere, attraverso la proposta opposizione, la declaratoria di nullità della cartella emessa

Nel caso in cui per l'invio della domanda fosse necessario superare tale capacità, si invitano i candidati a inviare ulteriori PEC indicando nell'oggetto: “integrazione

348 ter c.p.c., comma 3, per dimostrare la sua tempestività, qualora proponga il ricorso oltre i sessanta giorni dalla pubblicazione dell’ordinanza, potendo la

Non utilizzare il Marchio di Attestazione relativo alla certificazione dei sistemi di gestione aziendale sui prodotti e/o sui loro imballi primari, al fine di evitare confusione

a) L’uso dei dati da parte del destinatario è autorizzato soltanto allo scopo indicato e alle condizioni fissate dalla Parte contraente mittente. b) Il destinatario informa la