Cosa succede sono interessato a mettere in comunicazioni reti e non più host?
Dalla Federal Networking Council
Internet refers to the global information system...
Ha una architettura lascamente (debolmente, non strettamente) gerarchica: è una rete gerarchica in cui alcuni livelli potrebbero mancare.
Gli host sono connessi tramite ISP - Internet Service Provider - locali. Gil ISP locali sono connessi a ISP regionali. Gli ISP regionali sono connessi a ISP internazionali: NBP - National Backbone Provider o NSP - National Service Provider
POP - Point of Presence -> infrastrutture con cui in ISP gestisce localmente il collegamento (di privati o pubblici) alla propria rete.
AS - Autonomous System -> regioni in cui sono aggregati i router. Insieme di reti, indirizzi IP e router sotto il controllo della stessa organizzazione o consorzio.
Con una vista top-down Internet è un'aggregazione di Autonomous Systems.
#Vedi UUNET backbones MCI
I NBP gestiscono anche i cavi intercontinentali e oceanici. Questi AS vengono solitamente mappati ad entità legali. Livello legale, gestionale, tecnico.
#Vedi GARR - Gruppo di Armonizzazione della Rete di Ricerca
Tutte le reti all'interno di uno stesso AS non sono disconnesse, quindi per comunicare tra loro non passano attraverso AS differenti.
TIM, entità legale, può avere in gestione più AS, ad esempio per interconnettere le reti tra più stati.
#Vedi www.submarinecablemap.com
Gli accessi residenziali cablati sono prevalentemente point-to-point
Backbone LAN: rete locale che sta in mezzo alla rete globale
Modalità di accesso:
- Dial-up - analogico ma deprecato
- ISDN - digitale ma deprecato
- xDSL - analogico
- Fibra ottica - digitale Ma anche via radio:
- reti wireless
- FWA
Utilizza la rete telefonica e richiede che venga stabilito un circuito Modem dial-up dalla banda (teorica) di 56Kbps
Linea digitale commutata
Velocità massima di 128Kbps
Da ADSL a VDSL2
Si modula un segnale sul doppino telefonica.
Da FTTH a FTTC/FTTB (ultimo miglio in rame)
Per zone a scarsa densità abitativa
Fixed in contrapposizione alle stazioni wireless mobili (mobile)
Il collegamento può avere banda dedicata o condivisa con gli altri utenti -> nel secondo caso diminuisce il costo del servizio
- flag: delimitatori del frame PPP
- address: non utilizzato
- control: non utilizzato, per utilizzi futuri
- protocol: protocollo di livello superiore codificato nel payload
- info: payload
- control: crc o simili
La logica di funzionamento, quindi la complessità, l'intelligenza della rete diciamo risiede nei dispositivi intermedi nelle reti circuit switching, nei dispositivi terminali nelle reti packet switching
Nella rete Internet sono gli host a gestire la complessità. I nodi terminali devono gestire poco traffico, quindi possono permettersi di introdurre latenze e simili. Nodi intermedi più semplici facilitano la scalabilità.
- Internet è una rete trasparente tra client e server.
- Dal punto di vista organizzativo è un insieme di oltre 5000 AS su diverse scale -> non monolitico ma decentrato.
- Organizzazione gerarchica dei nomi, non integrata in IP -> DNS, protocollo ortogonale a IP
L'affidabilità non è un first-class citizen in Ethernet.
Survivability: se tra due host esiste un qualsiasi percorso, la comunicazione deve poter avvenire. Forma a clessidra: minime assunzioni sui mezzi di trasporto sottostanti e funzionamento per tutti i tipi di applicazioni di rete. Stateless: l'intelligenza è mantenuta ai bordi della rete; riduce la complessità -> no stato distribuito perché i nodi intermedi sono stateless Net neutrality: vede un acceso dibattito negli USA. I gestori della rete non possono attuare scelte di natura economica o politica sull'inoltro dei pacchetti. Qualsiasi ISP non deve scegliere quali pacchetti inoltrare (o simili) sulla base del suo contenuto.
- Anni '60 - sviluppo della teoria sui sistemi packet switching e primi esperimenti
- 1969 - Nasce ARPAnet
- Inizio ani '90 - si dismette ARPAnet, nasce WWW (Tim Barners Lee)
#Completa #Rivedi storia Internet
Ci interessa la comunicazione tra più reti, non come più dispositivi della stessa rete comunicano tra loro.
In Ethernet non ci interessa dove si trova il dispositivo con cui comunicare, perché un messaggio broadcast arriva a tutti.
In Internet non è possibile, bisogna evitare di inondare la rete con schifezze: problema di instradamento.
Dispositivo di LV3 che risolve il problema di instradamento dei pacchetti nella rete da un host a qualsiasi altro host sulla base dell'indirizzo IP di destinazione.
Un pacchetto che compie un cammino da HostA a HostB passando per Internet (per molte reti in generale). I due host si possono trovare all'interno di reti diverse tra loro.
- capisco se la dst appartiene alla mia rete
- se non appartiene, a chi lo mando? ****
- Il router è un dispositivo che riceve un pacchetto non indirizzato a lui ma ad un altro dispositivo: nessun router ha la visione completa del cammino scelto dal pacchetto. La src decide solo il first hop; ogni router decide il next hop
Questo approccio può non funzionare sempre bene -> protocollo best effort.
Possono esserci problemi di loop, configurazione, malfunzionamenti. Il primo router si dice source router o first hop router. Ogni router decide a sua volta il next hop router che appartenga alla stessa rete. Il router di arrivo è destination router.
La src invia al src router il frame con IP dst appartenente ad una rete diversa.
Il router si distingue dagli host perché accetta pacchetti non indirizzati a lui a LV3
I pacchetti Internet contengono un TTL -> ad ogni salto decresce di 1. Per evitare pacchetti IP fantasma che rimangono per sempre nella rete.
Sottoproblema 1: ad ogni pacchetto in ingresso determinare #Completa Sottoproblema 2: formazione della tabella di routing
Meccanismo di inoltro con cui un router trasferisce un datagram dalla in if alla out if. L'out if corrisponde a quella if sulla rete connessa a livello h2n al next hop.
Viene usato l'indirizzo IP di destinazione presente nell'header del datagramma.
Ogni host e ogni router hanno una tabella di routing in cui ciascuna riga è composta da: destinazione - next hop, inoltre è presente una entry che definisce il next hop di default per ogni rete non matchata, chiamata default router o default gateway (regola di fallback).
La rete di appartenenza di un indirizzo IP la posso dedurre grazie alla struttura gerarchica degli indirizzi.
La tabella di routing può essere statica o dinamica. In contesti AS è solitamente dinamica, per le LAN va bene una tabella statica.
Se la tabella di routing è vuota o non ha la destinazione richiesta: network unreachable Non ha logiche di fallback come lo switch che inoltra a tutte le if.
LV2: host unreachable, LV3: network unreachable
Host unreachable viene sollevato (interpretazione non contenuto nel protocollo) quando il timeout di un'ARP request scade.
Le dimensioni delle tabelle di routing potrebbero essere un limite allo sviluppo di Internet. Teoricamente i router dovrebbero mantenere una entry per ogni rete raggiungibile su Internet.
Nel mondo reale di usano regole di aggregazione (regola aggregata) -> tecniche di aggregazione per fare in modo che una regola catturi più reti
#Vedi: OSPF, BGP, #Completa
Componenti:
- porta di ingresso
- commutatore
- processore di routing
- porta di uscita
#Completa con disegno
Funzioni di livello 1, 2, 3
-> line termination -> data link processing & filtering -> logica di accodamento
Se la logica di switching è lenta può succedere le l'accodamento fallisca perché la coda è piena.
Spostamento del pacchetto dalla porta di ingresso a quella di uscita
Architettura:
- switch -> basata su memoria, costosa
- bus -> economica, può far comunicare solo una coppia di porte alla volta
- crossbar -> rete di multiplexer, limite sottostante alla velocità massima di un'architettura di questo tipo
Può essere realizzata in hardware o in software. #completa con disegno
Fa accodamento: può riempirsi se la velocità di invio è molto lenta, non le permette di svuotarsi. Congestione.
#completa architettura
Il LV3 non se ne occupa. Solitamente le code sono FIFO.
Un indirizzo IP è un indirizzo dalla dimensione di 32 bit, ovvero 4 byte, in notazione huma-readable separati da punto.
Ogni byte ha un valore compreso tra 0 e 255.
Interpretazione gerarchica degli indirizzi IP (struttura gerarchica), contrapposta all'interpretazione piana dell'indirizzo MAC. A sinistra stanno i valori più significativi. Ogni indirizzo è costituito dalla coppia:
<netid, hostid> # <prefisso di rete, indirizzo dell'host>
Gli indirizzi IP hanno lunghezza fissa. Esistono sistemi di indirizzamento dalla lunghezza variabile.
Cosa definisce la linea di demarcazione tra prefisso di rete e hostid?
- rappresentazione storica -> classful: classi di indirizzi
- rappresentazione moderna -> classless: subnet mask
- 3 classi per indirizzamento di host: A, B, C
- 1 classe multicast: D
- 1 classe riservata: E
Classi:
- Classe A: primo bit (msb) a 0. 0 - 127. 16M host
- Classe B: prefisso 10. 128 - 191. 65k host
- Classe C: prefisso 110. 192 - 223. 256 host
- Classe D: prefisso 1110. 224 - 239
- Classe E: prefisso 11111. 240 - 255 Ma man che cresce la classe aumenta la dimensione del numero di reti.
Trucco: scala di 1k ad ogni aggiunta di 10 alla potenza del due.
Ho a disposizione:
Permette architetture più flessibili, maggior controllo granulare. Si usa la notazione CIDR - Classless Inter-domain Routing.
L'insieme dei bit del netid è indicato da un numero n:
a.b.c.d/n
Questo numero viene chiamato netmask. Implicitamente la netmask definisce una classe.
Unimore possiede gli indirizzi: 155.185.0.0/16
4 byte separati da un punto. Permetterebbero di assegnare bit di HostID sparsi (non contigui), per convenzione non viene fatto.
Network addr: NetID & Netmask
Broadcast addr: NetID | Netmask
Gli indirizzi IP assegnabili sulla rete sono confinati da NetworkAddr e BroadcastAddr. Sono indirizzi da scartare.
Il numero massimo di host è dato dalla formula:
#Esercizi slide 13 -> calcolo
- Network address: hostid tutto a zero -> denota la rete. Es: 192.168.1.0/24, 127.0.0.0/8
- Directed broadcast address: hostid tutto a 1 -> permette il broadcast a tutti gli host della rete
- Limited broadcast address: tutti i bit a 1 -> broadcast della rete fisica locale (limited perché mai inoltrato dai router). Qualsiasi host connesso alla rete locale accetterà il pacchetto
- Nessun indirizzo IP: tutti i bit a 0 -> usato per il boot o per configurazioni particolari
- Loopback o localhost: tutti gli indirizzi della rete 127.0.0.0/8, sicuramente 127.0.0.1
#Attenzione 192.168.1.0/23 è assegnabile, non di rete
Il limited broadcast address serve per evitare flooding di pacchetti. Viene usato per mandare datagram che debbano arrivare a tutti gli host che a LV2 appartengono allo stesso dominio di broadcast, ma possono appartenere a reti logiche LV3 diverse.
Il directed broadcast invia anche a livello logico il pacchetto solo agli host della stessa rete.
Broadcast IP implica broadcast MAC
Nulla mi vieta di avere più reti logiche sulla stessa rete h2n.
Nel protocollo DHCP i pacchetti di broadcast vengono usati per richiedere un nuovo IP, dato che non si conosce l'indirizzo del server.
- classe A:
10.0.0.0/8
- classe B:
172.16.0.0/12
- classe C:
192.128.0.0/16
Sono classi di indirizzi privati, risolti a livello locale e sicuramente non duplicati.
Se si assegna un indirizzo non privato ad un host della propria rete si crea ambiguità su chi debba essere raggiungo.
Approccio ricorsivo all'assegnazione degli indirizzi IP. Al'interno di una rete locale possono esserci più reti logiche a cui sono assegnati indirizzi IP di blocchi differenti -> subnetting, ovvero suddivisione in più sottoreti.
Unimore ha a disposizione 155.185.0.0/16. Gli indirizzi assegnabili sono tra 155.185.0.1 e 155.185.255.254. Il mio indirizzo attuale è 155.185.73.139/24, che limita il dominio di broadcast, è assegnato al dipartimento (probabilmente).
Il subnetting gerarchico modifica l'interpretazione di una rete locale
Per convenzione gli ultimi indirizzi IP vengono solitamente assegnati ai router della rete. Gli host partono dal basso, i router dell'alto.
#Nota differenza tra Network unreachable e Host unreachable. Nel primo caso non genero neanche traffico.
Aggregare più reti sotto un unico indirizzo. Ad esempio:
- 208.213.2.0/24
- 208.213.3.0/24
Posso radunare entrambe le reti con: 208.213.2.0/23 -> 208.213.2.1 - 208.213.3.254
Al contrario del subnetting il supernetting non è sempre possibile con la clausola IP che racchiuda tutte e sole le reti elencate. Serve un'ipotesi di contiguità ed esaustività.
#Consiglio rappresentazione con albero binario i cui nodi contengono le netmask, diramate in due figli ad ogni bit perso in netid (+1). Etichetta ogni nodo con la giusta rete. La prima radice comune delle sottoreti da aggragare contiene la subnet e la rete da utilizzare.
#Grafico
Dal 1986 l'assegnazione degli indirizzi ip è gestita in modo centralizzato dalla IANA - Internet Assigned Numbers Authority.
#Vedi Jon Postel (1943-1998). Autore degli RFC relativi all'Internet Protocol Standard. Autore di altri 200 RFC. Definito zar dei numeri; persona superpartes; gli dedicano un RFC alla sua morte.
Dalla funzione di IANA e InterNIC (Network Information Center) nasce ICANN (Internet Corporation for Assigned Names and Numbers). Continentalmente gestiti da:
- AfriNIC
- APNIC
- ARIN
- LACNIC
- RIPE NCC (Network Coordination Center)
Ogni organizzazione elencata sopra gestisce gli indirizzi IP di un continente e fa capo all'ICANN. Regionalmente può delegare la gestione degli indirizzi.
IETF - Internet Engineering Task Force. Valuta gli RFC per gli standard di Internet
#Vedi iana.org, RIPE
Gli indirizzi IP portano con loro un'informazione riguardante la loro origine, non intrinsicamente ma a causa dell'organizzazione gerarchica forte.
Gli indirizzi di classe A sono detenuti principalmente da compagnie con base statunitense e nomi storicamente significanti. Si possono citare Apple, Ford, Xerox AT&T, US Postal, Army, ... Dopo gli USA anche l'Europa si è aggiudicata una buona fetta di indirizzi di classe A; questo ha creato una scarsità di indirizzi, soprattuto per paesi del sud America, Africa e - soprattutto - Asia.
Si sono trovate 3 tecniche per mitigare il problema della scarsità di indirizzi:
- Notazione classless per controllo maggiore sulle dimensioni delle reti
- Indirizzi privati
- IPv6
- NATting - Network Address Translation
#Nota I router senza NAT non modificano gli indirizzi dei pacchetti
Il protocollo IP visto fin'ora è IPv4.
IPv4. Con 32 bit di indirizzo sono disponibili 4 miliardi di indirizzi IP IPv6. Con 128 bit di indirizzo sono disponibili 10^38 indirizzi IP, quasi inesauribili.
Con ISP seri si può sfruttare IPv6. I due protocolli possono pestarsi i piedi in quanto sullo stesso livello dello stack.
Con IPv6 vengono assegnati dei range di indirizzi anche con contratti residenziali. Ad esempio la rete di casa potrebbe essere non NATtata con tutti i pro e contro (esposizione diretta).
I router con funzionalità di NATting modificano l'indirizzo IP sorgente del pacchetto. Esistono tecnologie di NATting anche a livello di ISP. Il NATting può essere utilizzato N volte a diverse profondità.
Gli host nascosti sotto NAT non sono direttamente raggiungibili dall'esterno. Si dovrebbe cercare di contattare un indirizzo IP privato; non possibile: si prova a raggiungere il router con un pacchetto non richiesto e quindi scartato.
#vedi l'esempio di Unimore, non è sempre detto che un router faccia natting sui dispositivi di una sottorete. Le stesse funzionalità di sicurezza possono essere raggiunte con regole di firewall se non si usa il NAT.
Il NAT rompe il collegamento ent-to-end. Può essere limitate per il funzionamento di alcuni protocolli.
L'indirizzo IP può apparire anche nel livello applicativo di un protocollo. La discordanza tra IP a livello rete e livello applicativo può causare problemi per alcuni protocolli.
Datagram è un sinonimo (o meglio, il termine formale) per pacchetto
I campi dell'header IP sono allineati a parole da 32 bit (4 byte). Il pacchetto è pensato allineandolo 4 byte alla volta.
C'è una parte opzionale del pacchetto (IP OPTIONS) e una parte dell'header deicata a gestire questa logica. I campi opzionali hanno lunghezza variabile -> introducono l'esigenza di un padding che compensa questa variabilità per allineare l'header alla lunghezza di una word da 4 byte.
L'header di IPv6 è più semplice come struttura -> ha la stessa dimensione, per ragioni di compatibilità.
Campi:
- VERS. 4 bit di versione. In testa perché da questa dipende l'interpretazione del resto. Coesistono 2 versioni di IP
- HLEN. 4 bit di lunghezza dell'header espressa in word (da moltiplicare per 4byte). Conta il numero di righe. Solitamente uguale a 5, ovvero 20 byte.
- TOTAL LENGTH. 16 bit di dimensione massima del datagramma, espressa in byte. Si possono esprimere al massimo 2^16 = 64Kb di dimensione.
- TYPE OF SERVICE (TOS). 8 bit usati per scopi differenti negli anni, ma sempre opzionale. Consigliano al router come inoltrare il pacchetto per ottenere le performance massime a livello applicativo. È un bit vector:
| PRECEDENCE | LOWDELAY | THROUGHPUT | RELIABILITY | LOWCOST | UNUSED (MUST BE 0) |
. Scopi differenti negli anni; Attuale interpretazione:| DSCP | ECN |
- 6 bit di Code Points for Differentiated Services. Enumera le classi di servizio applicativo che trasporto e le se esigenze (classi di servizio). Spesso questo campo viene usato e rispettato all'interno dello stesso AS. Non possiamo pretendere che router di altri AS rispettino le richieste qui codificate.
- 2 bit di Explicit Congestion Notification. Meccanismo opzionale di notifica che permette ai router di segnalare la congestione prima di iniziare a droppare i pacchetti. Si possono riconfigurare le regole di routing in caso di emergenza.
- IDENTIFICATION. Intero a 16 bit che identifica il datagram all'interno di un flusso. Non c'è garanzia di non ripetibilità. Utilizzato per la frammentazione del pacchetto.
- FLAGS. Vedi avanti
- FRAGMENTATION OFFSET. Vedi avanti
- TTL. 8 bit di contatore che indica quanti hop ha ancora prima di venire scartato. Su Linux è tipicamente posto a 64. Deve essere sufficientemente alto per raggiungere tutto Internet. Serve per evitare che cicli restino per sempre nella rete. Il valore è minimo è 1. La regola vuole che su Internet non possano circolare pacchetti con TTL uguale a zero.
- PROTOCOL. 8 bit che indica il protocollo di livello trasporto (o comunque incluso nel payload). TPC, UDP o ICMP
- CHECKSUM. 16 bit che serve per controllare l'integrità dell'header (non dell'interno pacchetto come in Ethernet). Non viene controllata l'integrità del payload. Algoritmo efficiente per essere eseguito in software. Non viene controllata l'integrità perché alcune applicazioni potrebbero non avere necessità di un controllo rigoroso sui dati inviati, come il VoIP. Se interessa ai livelli superiori se ne occuperanno loro. A differenza di Ethernet l'integrità è end-to-end.
- IP SRC. 32 bit
- IP DST. 32 bit
- IP OPTIONS. Variabile.
- PADDING. Variabile per allineamento a 32 bit.
Problema: la dimensione massima trasmissibile da IP è 64Kb, mentre la MTU di Ethernet è 1.5 KB (anche se varia in base al protocollo H2N).
IP è un protocollo logico e come tale la sua dimensione
L'operazione di suddivisione di un pacchetto logico in tanti pacchetti fisici è detta frammentazione e viene delegata al protocollo IP (non h2n).
I campi sono:
- FLAGS. Uno di questi indica se il pacchetto che stiamo inviando è un frammento del pacchetto originale o è completo così com'è
- FRAGMENTATION OFFSET. Indica concettualmente la posizione del pacchetto che stiamo inviando rispetto a quella iniziale. Concettualmente stiamo inviando un pacchetto IP come se fosse parte di un buffer che contiene il payload completo.
3 scenari:
- Frammentazione sull'host. Pacchetti IP più lunghi dell'MTU. Supposta una lunghezza del pacchetto > 3*ETH_MTU => 3*1500+k byte, ad esempio 5000 byte: 4 pacchetti sono generati con dimensioni?. Più frammenti realizzati significa più header h2n e più header. #Vedi costi a gradini. Un byte in più può portare a un frammento in più.
- Frammentazione sul router. Inoltre si tiene in considerazione che canali trasmissivi diversi usano MTU differenti. Ad esempio per connessioni wireless o satellitari. La miglior pratica è sottostimare la dimensione dell'MTU. Ma questo aggiunge dei costi [soluzione storica]; soluzione adottabile dall'host che genera il datagramma. Si può frammentare anche sul router che esegue l'inoltro se l'interfaccia di uscita è connessa a un link con MTU minore di quello d'ingresso. Introduce una logica complessa. Questa logica di frammentazione a livello di router è ormai obsoleta (poco supportata su Internet).
- Notifica packet too big. Obbligatoria in IPv6, non è più supportata la frammentazione a livello di router: protocollo nato quando Internet era più evoluto, si vuole togliere logica dai router. Il router che deve inoltrare un dataframe su un link con MTU minore di quello di origine. Notifica al mittente packet too big con associata la dimensione dell'MTU del link di uscita (MTU2 < MTU1) -> provvederà lui a frammentare per fare in modo che venga inoltrato.
Path MTU discovery: esiste un bit forzabile dal mittente chiamato do not fragment per avere un comportamento più consistente sul router. Il pacchetto viene rinviato al mittente che dovrà frammentarlo. Questa informazione è tipicamente cachata dal sistma operativo.
#Nota la differenza tra path MTU - minima dimensione dell'MTU tra tutti i link attraversati - e link MTU - dimensione MTU su link locale #Ricorda Jumboframe si riferisce a frame dalla dimensione di dimensioni anormali, maggiori del solito. 9Kb tipicamente. Usati per connessioni ad alta velocità (X Gbps) come sulle dorsali. #Nota a livello 4 troveremo un meccanismo chiamato segmentazione. Questa logica di suddivisione verrà applicata una sola volta all'interno dello stack. Il livello più alto cercherà già di inviare dati dalla giusta dimensione (se ne occupa il livello più alto possibile sul mittente).