Reti - Capitoli 4 e 5 - Appunti PDF
Document Details
Uploaded by ChivalrousAestheticism7268
Newton Pertini
2024
Fabrizio Granelli
Tags
Summary
Questo documento fornisce una presentazione dei concetti chiave del livello di rete in computer networks, inclusa la visione d'insieme, il protocollo IP (IPv4 e possibilmente anche IPv6), frammentazione, indirizzamento e protocolli di instradamento. Include una panoramica delle funzioni di forwarding e routing, e illustra il formato del datagramma IP.
Full Transcript
Reti (Computer Networks) Capitolo 4 Livello di rete Docente: Fabrizio Granelli AA 2024/2025 Sommario ❑ Visione d’insieme ❑ Il protocollo IP (segue) ❖ Data plane e control plane ❖ Dynamic Host Configuration P...
Reti (Computer Networks) Capitolo 4 Livello di rete Docente: Fabrizio Granelli AA 2024/2025 Sommario ❑ Visione d’insieme ❑ Il protocollo IP (segue) ❖ Data plane e control plane ❖ Dynamic Host Configuration Protocol (DHCP) ❑ Il protocollo IP ❖ Il viaggio di un pacchetto ❖ Formato datagrammi ❖ IPv6 ❖ Frammentazione ❖ Indirizzamento ❑ Come è fatto un router ❖ Indirizzamento classless ❑ Protocolli di instradamento ❖ Tipi di indirizzi e NAT ❖ Link state: Dijkstra ❖ Address Resolution Protocol ❖ Internet, AS, OSPF (ARP) ❖ Distance vector: ❖ Internet Control Message Bellman-Ford Protocol (ICMP) ❖ RIP ❑ BGP 4-2 Parte 1 Livello di rete e protocollo IPv4 4-3 Sommario ❑ Visione d’insieme ❑ Il protocollo IP (segue) ❖ Data plane e control plane ❖ Dynamic Host Configuration Protocol (DHCP) ❑ Il protocollo IP ❖ Il viaggio di un pacchetto ❖ Formato datagrammi ❖ IPv6 ❖ Frammentazione ❖ Indirizzamento ❑ Come è fatto un router ❖ Indirizzamento classless ❑ Protocolli di instradamento ❖ Tipi di indirizzi e NAT ❖ Link state: Dijkstra ❖ Address Resolution Protocol ❖ Internet, AS, OSPF (ARP) ❖ Distance vector: ❖ Internet Control Message Bellman-Ford Protocol (ICMP) ❖ RIP ❑ BGP 4-4 Visione d’insieme ❑ Obiettivo: spostare pacchetti Appl. dal mittente al destinatario Trasporto Rete IP ❑ Al mittente, incaspula i IP Rete Data Link L2 IP segmenti in datagrammi L2 IP L2 L2 L2 IP Fisico ❖ E poi in frame di livello 2 L1 L1 L2 IP ❑ Al ricevente, recupera i segmenti e li consegna L2 IP Appl. al livello di trasporto Trasporto ❖ E da lì a un processo Rete IP IP Rete ❑ Ci sono protocolli di livello rete Data Link L2 IP L2 IP L2 L2 L2 IP in tutti gli host e router Fisico L1 L1 L2 IP ❑ I router ispezionano tutti gli header dei datagrammi che li attraversano per prendere Attenzione: reti diverse potrebbero decisioni di inoltro usare internamente protocolli L2 o L3 diversi! 4-5 Consegna diretta e indiretta Rete A Host B Rete E Host A Rete D Rete B Questo router non è connesso alla rete C. Come fa a sapere che l’host C esiste? Come fa ad inviare datagrammi all’host C? Rete C Host C 4-6 Le due funzioni del livello di rete ❑ Inoltro (forwarding) Analogia: fare un viaggio ❖ Operazione locale con scala ❑ Forwarding: spostarsi locale all’interno di uno snodo ❖ Spostamento del pacchetto ❖ Cambiare treno da un ingresso del router a ❖ Prendere uno svincolo un’uscita autostradale ❑ Instradamento (routing): ❖… ❖ Operazione locale con scala globale ❑ Routing: pianificare tutte le tappe del viaggio dall’inizio ❖ Determinare il percorso che un pacchetto deve seguire alla fine ❖ Algoritmi di routing 4-7 Data plane e control plane Data plane (“Piano dati”) Control plane (“Piano controllo”) ❑ Funzione locale a ogni router ❑ Logica globale di rete ❑ Determina come inoltrare un ❑ Determina come instradare un datagramma da una porta di datagramma in un percorso arriva a una porta di uscita del end-to-end, cioè dall’host router mittente all’host destinatario ❑ Funzione di forwarding Campi dell’header livello 3 del pacchetto in ingresso 0111 1 2 3 4-8 Control plane Algoritmo di routing control plane Tabella di data instradamento Header Uscita plane 0100 3 0110 2 0111 2 1001 1 0111 1 2 3 Campi dell’header livello 3 del pacchetto in ingresso 4-9 Sommario ❑ Visione d’insieme ❑ Il protocollo IP (segue) ❖ Data plane e control plane ❖ Dynamic Host Configuration Protocol (DHCP) ❑ Il protocollo IP ❖ Il viaggio di un pacchetto ❖ Formato datagrammi ❖ IPv6 ❖ Frammentazione ❖ Indirizzamento ❑ Come è fatto un router ❖ Indirizzamento classless ❑ Protocolli di instradamento ❖ Tipi di indirizzi e NAT ❖ Link state: Dijkstra ❖ Address Resolution Protocol ❖ Internet, AS, OSPF (ARP) ❖ Distance vector: ❖ Internet Control Message Bellman-Ford Protocol (ICMP) ❖ RIP ❑ BGP 4-10 Il livello di rete in Internet Livello di trasporto: TCP, UDP Protocolli di routing Protocollo IP RIP, OSPF, BGP, MPLS, … Convenzioni sugli indirizzi Formato dei datagrammi Livello Politiche di gestione dei pacchetti Tabella di rete di Protocollo ICMP inoltro Rapporti di errore Scambio informazioni tra router Livello data link Livello fisico 4-11 Formato del datagramma IP (IPv4) 32 bit Ver Lungh. Tipo di Lunghezza header servizio ID del datagramma Offset del (16 bit) Flag frammento Time-to- Protocollo Checksum live superiore dell’header Indirizzo IP sorgente (32 bit) Indirizzo IP destinazione (32 bit) Opzioni IP (non obbligatorio) DATI (lunghezza variabile, di solito un frammento TCP oppure UDP) 4-12 Campi del datagramma IP ❑ VER (4 bit): numero di versione IP (solo 4 o 6) ❑ LUNGHEZZA HEADER (4 bit): indica il numero di parole di 32 bit nell’header (=5 se non ci sono opzioni) ❑ TIPO DI SERVIZIO (Type of service, ToS) (8 bit): classe di servizio del datagramma ❖ Potenzialmente usato per funzioni chiamate “DiffServ” e “Explicit Congestion Notification” (ECN) ❖ Raramente usato in pratica ❑ LUNGHEZZA TOTALE (16 bit): numero totale di byte nel datagramma, includendo sia l’header sia i dati 4-13 Campi del datagramma IP ❑ IDENTIFICAZIONE (ID) DEL DATAGRAMMA (16 bit): numero (di solito sequenziale) assegnato al datagramma ❖ Usato per raccogliere eventuali frammenti multipli e riassemblare datagramma complessivo ❑ FLAG (3 bit): campo i cui bit specificano se il datagramma è un frammento di un datagramma più lungo ❖ Se è così, dicono anche se questo è l’ultimo frammento o no ❑ OFFSET DEL FRAMMENTO (13 bit): indica in quale punto del datagramma originale va inserito questo frammento ❖ Espresso in multipli di 8 Byte 4-14 Campi del datagramma IP ❑ TIME TO LIVE (TTL) (8 bit): intero inizializzato dal mittente che: ❖ Viene ridotto di 1 da ogni router per cui passa il datagramma ❖ Se raggiunge il valore zero, il router scarta il datagramma e invia un messaggio di notifica al mittente ❑ PROTOCOLLO SUPERIORE (8 bit): specifica quale protocollo di livello superior aspettarsi all’inizio dei dati incapsulati nel datagramma (es. 6 = TCP, 17 = UDP) ❑ CHECKSUM DELL’HEADER (16 bit): come in UDP: complemento a 1 della somma con riporto di tutte le parole di 16 bit dell’header ❑ INDIRIZZO IP SORGENTE (32 bit): indirizzo IP del mittente INIZIALE ❑ INDIRIZZO IP DESTINAZIONE (32 bit): indirizzo IP della destinazione FINALE 4-15 Campi del datagramma IP ❑ OPZIONI IP: in alcuni casi, usato per controllare l’elaborazione e instradamento dei datagrammi ❖ Nella maggioranza dei casi, il campo è vuoto ❑ PADDING: bit a zero aggiunto se le opzioni non terminano ad un multiplo di 32 bit, in modo che l’header sia un multiplo di 32 bit 4-16 Sommario ❑ Visione d’insieme ❑ Il protocollo IP (segue) ❖ Data plane e control plane ❖ Dynamic Host Configuration Protocol (DHCP) ❑ Il protocollo IP ❖ Il viaggio di un pacchetto ❖ Formato datagrammi ❖ IPv6 ❖ Frammentazione ❖ Indirizzamento ❑ Come è fatto un router ❖ Indirizzamento classless ❑ Protocolli di instradamento ❖ Tipi di indirizzi e NAT ❖ Link state: Dijkstra ❖ Address Resolution Protocol ❖ Internet, AS, OSPF (ARP) ❖ Distance vector: ❖ Internet Control Message Bellman-Ford Protocol (ICMP) ❖ RIP ❑ BGP 4-17 MTU e frammentazione datagrammi ❑ Ciascun tipo di hardware specifica un limite di dati che una trasmissione può trasportare (Maximum Transmission Unit, MTU) ❖ Ciascun datagramma deve contenere al più un numero di Byte pari alla MTU, se no l’hardware non può incapsularlo in un frame (livello 2) ❑ Internet è molto eterogenea, Protocollo MTU [byte] diverse reti specificano diverse MTU Hyperchannel 65535 ❑ Un router potrebbe interfacciarsi Token ring (16 17914 a reti con MTU diverse Mbps) ❖ Un datagramma su una di queste reti Token ring (4 Mbps) 4464 potrebbe essere troppo grande FDDI 4352 per inviarlo su una delle altre reti Ethernet 1500 WLAN (802.11 WiFi) 2304 X.25 576 PPP Variable 4-18 MTU e frammentazione datagrammi ❑ Esempio: un router interconnette due reti con MTU di 1500 e 1000 Byte, rispettivamente ❑ Se l’host H1 invia un datagramma di 1500 Byte all’host H2 ❖ Il router R non potrà trasmetterlo direttamente sulla rete 2 ❑ Quindi, R frammenta il datagramma e invia ogni frammento indipendentemente dagli altri ❖ I frammenti hanno lo stesso formato di un datagramma normale ❖ I flag nell’header indicano se un datagramma è un frammento o no ❖ Il campo “Offset del frammento” specifica come concatenarli R H2 H1 Rete 1 Rete 2 MTU = 1500 MTU = 1000 4-19 MTU e frammentazione datagrammi ❑ Conoscendo l’MTU e la dimensione dell’header, il router calcola quanti frammenti servono, e quanti Byte di dati contiene ciascuno ❑ Quando crea i frammenti, il router ❖ Copia i campi necessari dall’header del frammento originale ❖ Trasmette tutti i frammenti in sequenza (con identificatori diversi) ❑ Flag usati: 0 D M ❖ D: “do not fragment” (se servisse frammentare, scarta il pacchetto) Ricevitore che non può gestire la frammentazione, o rilevamento MTU ❖ M: “more fragments” (=1 per ogni frammento) Eccetto l’ultimo: M=0, ma fragment offset > 0 R H2 H1 Rete 1 Rete 2 MTU = 1500 MTU = 1000 4-20 Chi riassembla il datagramma? ❑ Esempio: datagramma di 1500 Byte da H1 to H2 ❖ R1 divide il datagramma in due frammenti e li invia a R2 ❑ R2 NON riassembla i frammenti ❖ Non è la destinazione finale: li inoltra come pacchetti qualsiasi (stateless) ❑ La destinazione finale H2 raccoglie e riassembla i frammenti ❖ Vantaggi I frammenti possono seguire percorsi diversi R2 non deve ricevere tutti i frammenti prima di inoltrarli R1 R2 H1 Network 1 Network 2 Network 3 H2 MTU 1500 MTU 1000 MTU 1500 4-21 Conseguenze della perdita di frammenti ❑ Un datagramma frammentato non può essere ricomposto finché non arrivano tutti i frammenti ❑ Il ricevitore memorizza i frammenti finché non li riceve tutti ❖ Ma non può memorizzarli per un tempo arbitrariamente lungo ❑ Il protocollo IP specifica il tempo massimo da attendere dopo la ricezione del primo frammento ❖ I ritardi di consegna potrebbero far eccedere questo tempo 4-22 In pratica… ❑ La frammentazione a livello IP è praticamente disabilitata in Internet ❖ Alcuni router nemmeno la implementano ❖ Se un datagramma è troppo grande → scartato ❖ IPv6 non consente più la frammentazione ❑ Molte ragioni, per prima cosa la sicurezza ❖ I firewall richiedono l’ispezione dell’header TCP/UDP ❖ Attacco “overlapping fragments” Inganna firewall “stateless” consentendo a traffico illecito di passare Può essere risolto con firewall “stateful”, che però hanno vincoli di memoria, complessità e costi maggiori ❖ Attacchi di riempimento memoria (tipo DDoS) ottenuti omettendo di proposito alcuni frammenti ❖ Implementazioni errate del codice di assemblaggio dei frammenti (es. gestione errata offset negativi) che mandavano in crash il software del router e permettevano l’esecuzione di comandi arbitrari 4-23 Sommario ❑ Visione d’insieme ❑ Il protocollo IP (segue) ❖ Data plane e control plane ❖ Dynamic Host Configuration Protocol (DHCP) ❑ Il protocollo IP ❖ Il viaggio di un pacchetto ❖ Formato datagrammi ❖ IPv6 ❖ Frammentazione ❖ Indirizzamento ❑ Come è fatto un router ❖ Indirizzamento classless ❑ Protocolli di instradamento ❖ Tipi di indirizzi e NAT ❖ Link state: Dijkstra ❖ Address Resolution Protocol ❖ Internet, AS, OSPF (ARP) ❖ Distance vector: ❖ Internet Control Message Bellman-Ford Protocol (ICMP) ❖ RIP ❑ BGP 4-24 Indirizzi IP: introduzione 223.1.1.1 ❑ Un indirizzo IP è una stringa di 223.1.2.1 32 bit associata ad un’interfaccia di rete 223.1.1.2 223.1.1.4 223.1.2.9 ❑ Interfaccia: connessione tra l’host o il router e il 223.1.3.27 223.1.1.3 collegamento fisico 223.1.2.2 ❖ I router normalmente hanno diverse interfacce ❖ Gli host ne hanno 1-2 223.1.3.1 223.1.3.2 Ethernet, WiFi ❑ Ogni interfaccia ha un 223.1.1.1 = 11011111 00000001 00000001 00000001 indirizzo IP differente 223 1 1 1 4-25 Indirizzi IP ❑ Gli host e i router devono usare le stesse convenzioni di indirizzo ❑ Ogni indirizzo IP pubblicamente raggiungibile deve essere unico ❑ Ogni interfaccia ha (almeno) un indirizzo IP ❑ Quando si invia un pacchetto su Internet il software che implementa i procotolli di rete lato mittente deve specificare ❖ Il proprio indirizzo IP (32 bit), cioè il source address ❖ L’indirizzo IP del ricevitore (32 bit), cioè il destination address ❑ I router prendono decisioni di inoltro e instradamento basandosi unicamente sul destination address 4-26 Notazione per gli indirizzi IP ❑ “Dotted decimal notation” ❖ Ogni sezione da 8 bit (1 Byte) è espressa come un intero decimale ❖ Solo numeri positivi ❖ Separati da punti ❑ Chiaramente: ❖ 00000000 → 0 ❖ 00000001 → 1 ❖ 00000010 → 2 ❖… … … ❖ 11111111 → 255 ❑ Gamma di indirizzi disponibili: ❖ Da 0.0.0.0 fino a 255.255.255.255 4-27 Gerarchia degli indirizzi IP ❑ Gli indirizzi IP sono generalmente divisi in due parti ❖ Un prefisso: identifica la rete alla quale l’host è allacciato (network ID, o NetID) Ogni rete in Internet è identificata da un numero unico al mondo Un NetID specifica una Local Area Network, o LAN ❖ Un suffisso: identifica un’interfaccia di rete allacciata a quella rete (ID dell’host, o HostID) Ogni interfaccia di rete ha un indirizzo IP unico su quella rete ❑ Il modo di assegnare gli indirizzi IP garantisce che: ❖ Ogni host riceva un indirizzo univoco ❖ Gli ID di rete (i prefissi) siano coordinati a livello globale ❖ I suffissi possano essere assegnati localmente senza bisogno di coordinazione globale 4-28 Come distinguere NetID e HostID? ❑ In passato: assegnazioni statiche (ora obsolete) ❖ Diverse “classi” di indirizzi, con diverse lunghezze dei prefissi: Classe A (primo bit = 0): 7 bit per il NetID, 24 bit per l’HostID Classe B (primi bit = 10): 14 bit per il NetID, 16 bit per l’HostID Classe C (primi bit = 110): 21 bit per il NetID, 8 bit per l’HostID ❖ Scelta infelice delle dimensioni delle reti che ne risultavano Classe A: 128 reti, ciascuna con 16777216 host Classe B: 16384 reti, ciascuna con 65536 host Classe C: 2097152 reti, ciascuna con 256 host Classe D (primi bit = 1110): riservata per 268,435,456 indirizzi multicast Classe E (primi bit = 1111): riservata, 268,435,456 indirizzi non assegnati ❑ Tutti volevano classi A e B per poter crescere se necessario ❖ Lo spazio degli indirizzi fu presto esaurito 4-29 Classful addressing: netID vs hostID 4-30 Autorità per assegnazione indirizzi ❑ Internet Corporation for Assigned Names and Numbers (ICANN) ❖ Creata per gestire l’assegnazione di indirizzi ed arbitrare eventuali dispute tra molteplici “pretendenti” ❑ ICANN non assegna i prefissi direttamente ❖ Invece, autorizza diverse entità dette “registrar” a farlo ❑ I registrar consentono agli Internet Service Provider (ISP) di accaparrarsi “blocchi” di indirizzi ❖ Gli ISP provvederanno poi ad assegnare sotto-blocchi di questi indirizzi ai loro clienti ❑ Quindi, per ottenere un prefisso di rete per sè, un’azienda solitamente contatta un ISP e se ne fa assegnare uno 4-31 Sommario ❑ Visione d’insieme ❑ Il protocollo IP (segue) ❖ Data plane e control plane ❖ Dynamic Host Configuration Protocol (DHCP) ❑ Il protocollo IP ❖ Il viaggio di un pacchetto ❖ Formato datagrammi ❖ IPv6 ❖ Frammentazione ❖ Indirizzamento ❑ Come è fatto un router ❖ Indirizzamento classless ❑ Protocolli di instradamento ❖ Tipi di indirizzi e NAT ❖ Link state: Dijkstra ❖ Address Resolution Protocol ❖ Internet, AS, OSPF (ARP) ❖ Distance vector: ❖ Internet Control Message Bellman-Ford Protocol (ICMP) ❖ RIP ❑ BGP 4-32 Indirizzamento classless ❑ Suddivisione tra prefisso e suffisso completamente arbitraria ❑ Se un cliente di un ISP richiedesse un prefisso di rete per una rete che deve contenere 57 host ❖ Con le classi, servirebbe una classe “C” = 256 indirizzi (197 di troppo) Non 199, poi vediamo perché ❖ Per 57 host, bastano 6 bit (26 = 64 ≥ 57) ❑ Eliminando le classi (“classless”, appunto) l’ISP può quindi assegnare ❖ Un prefisso di 26 bit, che identifica univocamente la rete nel mondo ❖ Un suffisso di 6 bit, sufficiente per tutti gli host 4-33 Indirizzamento classless ❑ Un registrar alloca un prefisso a un ISP, che può gestirlo come vuole ❑ Es.: supponiamo un ISP avesse un prefisso di classe C ❖ Con l’assegnazione “classful”, dovrebbe dare tutti gli indirizzi allo stesso cliente ❖ Con l’indirizzamento classless, può suddividere ulteriormente lo spazio di indirizzi a disposizione ❖ Come? Allungando il prefisso. ❑ Es.: l’ISP ha il blocco di indirizzi 193.185.15.0 - 193.185.15.255 ❖ Da 11000001.10111001.00001111.00000000 ❖ A 11000001.10111001.00001111.11111111 ❑ Per poterli ripartire tra più clienti, l’ISP genera 4 prefissi più lunghi, es. ❖ Prefisso 1: 11000001.10111001.00001111.00 xxxxxx ❖ Prefisso 2: 11000001.10111001.00001111.01 xxxxxx ❖ Prefisso 3: 11000001.10111001.00001111.10 xxxxxx ❖ Prefisso 4: 11000001.10111001.00001111.11 xxxxxx ❖ Ogni rete può contenere 62 host Il suffisso con tutti 0 riporta all’indirizzo di rete e quindi non è un indirizzo valido, il suffisso con tutti 1 è un indirizzo speciale detto di “broadcast”, ora lo vediamo) ❑ 4 clienti invece di 1! 4-34 Maschere di rete ❑ Il problema è ora conoscere il limite tra prefisso e suffisso ❑ Soluzione: si memorizzano 32 bit dove gli unici bit a 1 sono quelli del prefisso ❑ In IP, questa informazione è chiamata “subnet mask” ❑ Perché una “maschera”? ❖ Ai router serve solo il prefisso per prendere decisioni di inoltro ❖ Una maschera permette di estrarre il prefisso da un indirizzo con un AND logico bit-a-bit (efficiente) ❑ Rete di destinazione in una Rete di destinazione Interfaccia di uscita tabella di inoltro: lista di indirizzi di rete (Ni) e delle N1 / M1 Interfaccia 1 maschere corrispondenti (Mi) N2 / M2 Interfaccia 2 ❖ Per mandare pacchetti a D, N3 / M3 Interfaccia 3 si usa l’interfaccia per cui … … D & Mi == Ni 4-35 Subnet mask example ❑ Prendiamo ad esempio questo prefisso di rete: ❖ 10000000 00001010 00000000 00000000 = 128.10.0.0 ❑ Con questa maschera: ❖ 11111111 11111111 00000000 00000000 = 255.255.0.0 ❑ E questo indirizzo di destinazione ❖ 10000000 00001010 00000010 00000011 = 128.10.2.3 (tutti di 32 bit) ❑ L’AND bit-a-bit (&) tra maschera e indirizzo di destinazione estrae i primi 16 bit, cioè proprio il prefisso ❖ 10000000 00001010 00000000 00000000 = 128.10.0.0 4-36 Notazione CIDR ❑ Classless Inter-Domain Routing (CIDR) ❑ Consideriamo ancora prefissi di 26 bit, e 6 bit per l’HostID ❖ Nella maschera ci sono 26 bit a 1, seguiti da 6 zeri ❖ Notazione binaria: 11111111.11111111.11111111.11000000 ❖ In notazione decimale: 255.255.255.192 ❑ Con la notazione CIDR, possiamo sintetizzare il tutto scrivendo: ddd.ddd.ddd.ddd/m ❖ Solita notazione decimale + il /m, dove m indica il numero di bit uguali a 1 nella maschera ❑ Esempio di indirizzo: 193.185.15.199/26 4-37 Un altro esempio di CIDR ❑ Un ISP possiede il blocco di indirizzi 128.211.0.0/16 ❑ L’ISP ha tre clienti ❖ Il cliente 1 necessita di 12 indirizzi IP ❖ Il cliente 2 necessita di 9 indirizzi IP ❖ Il cliente 3 necessita di 6 indirizzi IP ❑ L’ISP può assegnare i seguenti prefissi ❖ Cliente 1: 128.211.0.16/28 ❖ Cliente 2: 128.211.0.32/28 ❖ Cliente 3: 128.211.0.48/29 ❖ I clienti 1 e 2 hanno prefissi diversi, ma della stessa lunghezza ❖ Al cliente 3 servono meno indirizzi IP, quindi il prefisso è più lungo 4-38 Altro esempio di CIDR con reti della stessa dimensione ❑ Un ISP possiede il blocco di indirizzi 128.211.0.0/16 ❑ L’ISP ha 4 client che necessitano di 12 indirizzi IP ciascuno ❑ L’ISP può decidere un prefisso di partenza ❖ Es. come prima, 128.211.0.0/28 ❑ E partire da lì per assegnare i seguenti prefissi ❖ Cliente 1: 128.211.0. 0/28 ❖ Cliente 2: 128.211.0.16/28 ❖ Cliente 3: 128.211.0.32/28 ❖ Cliente 4: 128.211.0.48/28 ❑ Il numero 16 (la dimensione della rete) viene a volte chiamato “magic number” (sommandolo, si ottengono i vari prefissi) ❖ Con la notazione dotted decimal, attenzione ad eventuali riporti! 4-39 Indirizzi degli host con CIDR ❑ Quando un ISP assegna un blocco di indirizzi a un cliente, il cliente può assegnare gli indirizzi ai propri host ❑ Esempio del cliente 1 di prima: 128.211.0.16/28 ❖ Il cliente può usare 4 bit per assegnare indirizzi agli host ❑ Svantaggio ❖ Bisogna acquisire un po’ di dimestichezza con i valori delle maschere in notazione decimale ❖ Es. 255.255.255.X 10000000 = 128 → /25 11000000 = 192 → /26 11100000 = 224 → /27 11110000 = 240 → /28 11111000 = 248 → /29 11111100 = 252 → /30 11111110 = 254 → /31 11111111 = 255 → /32 ❖ D: le ultime hanno senso di esistere? 4-40 Inoltro con CIDR ❑ Quando riceve un datagramma, un router deve decidere su quale interfaccia inoltrarlo ❑ L’interfaccia usata dipende dall’indirizzo IP di destinazione ❑ La corrispondenza viene identificata usando la netmask ❑ Consideriamo la tabella di inoltro qui sotto e l’IP destinazione 200.23.19.7: calcoliamo l’AND bit-a-bit con una maschera avente 23 bit a 1 (/23): ❖ 200.23.19.7 & 255.255.254.0 (/23) = 200.23.18.0 → eth1 Destinazione Interfaccia 200.23.16.0/23 eth0 200.23.18.0/23 eth1 200.23.20.0/23 eth2 4-41 E se ci sono corrispondenze multiple? ❑ Consideriamo ancora la destinazione 200.23.19.7 e la nuova tabella sotto ❖ La tabella contiene elementi con netmask diverse: 200.23.19.7 & 255.255.240.0 (/20) = 200.23.16.0 → OK! 200.23.19.7 & 255.255.254.0 (/23) = 200.23.18.0 → OK! ❑ Regola: si usa il prefisso più lungo (“longest prefix matching”) ❖ In questo caso, il datagramma viene inoltrato usando eth1 Destination Interface 200.23.16.0/20 eth0 200.23.18.0/23 eth1 4-42 Aggregazione dei percorsi /20 /23 16.0 = 00010000.00000000 18.0 = 00010010.00000000 Organizzazione 0 20.0 = 00010100.00000000 200.23.16.0/23 30.0 = 00011110.00000000 Organizzazione 1 “Inviami tutti i 200.23.18.0/23 datagrammi Organizzazione 2 destinati a 200.23.20.0/23. Fly-By-Night-ISP 200.23.16.0/20”... Internet. Organizzazione 7. 200.23.30.0/23 “Inviami tutti i ISPs-R-Us datagrammi destinati a 199.31.0.0/16” 4-43 Risolviamo ancora 200.23.19.7 ❑ Un router da Internet deve inoltrare un datagramma per l’IP 200.23.19.7 o a “Fly-by-Night-ISP” oppure a “ISPs-R-Us” ❑ Qualcuno ha detto al router di Internet che esistono le due rotte ❖ Vedremo più avanti come ❑ Matching con le rotte note ❖ 200.23.19.7 & 255.255.240.0 (/20) = 200.23.16.0 → MATCH con 200.23.16.0/20 ❖ 200.23.19.7 & 255.255.0.0 (/16) = 200.23.0.0 → NO MATCH con 199.31.0.0/16 ❑ Il router inoltra il pacchetto a Fly-by-Night-ISP ❖ Sarà poi il router di Fly-by-Night-ISP a inoltrare il pacchetto alla sottorete corretta (nelle sue tabelle Destinazione ci saranno maschere /23) Interfaccia 200.23.16.0/20 Verso Fly-By-Night-ISP 199.31.0.0/16 Verso ISPs-R-Us 4-44 Caso con percorsi più specifici Organization 0 200.23.16.0/23 “Inviami tutti i datagrammi Organization 2 destinati a 200.23.20.0/23. Fly-By-Night-ISP 200.23.16.0/20”... Internet. Organization 7. 200.23.30.0/23 “Inviami tutti i ISPs-R-Us datagrammi destinati a Organization 1 199.31.0.0/16 200.23.18.0/23 o 200.23.18.0/23” 4-45 Risolviamo nuovamente 200.23.19.7 ❑ Stavolta la tabella di inoltro è diversa ❑ La ricerca delle corrispondenze è come segue ❖ 200.23.19.7 & 255.255.240.0 (/20) = 200.23.16.0 → OK ❖ 200.23.19.7 & 255.255.0.0 (/16) = 200.23.0.0 → NO MATCH ❖ 200.23.19.7 & 255.255.254.0 (/23) = 200.23.18.0 → OK ❑ Scelgo sempre la corrispondenza con il prefisso più lungo! ❖ Inoltra a ISPs-R-Us Destinazione Interfaccia 200.23.16.0/20 Verso Fly-By-Night-ISP 199.31.0.0/16 Verso ISPs-R-Us 200.23.18.0/23 Verso ISPs-R-Us 4-46 E se non ci sono corrispondenze? ❑ Si usa un valore di default: il “default gateway” ❖ Negli host, si tratta di solito dell’indirizzo IP del router ❖ Per i router, è l’indirizzo IP di un altro router che si suppone sappia come inoltrare ulteriormente il datagramma ❑ Nelle tabelle, questa entry ha destinazione 0.0.0.0/0 ❖ Supponiamo di voler inviare a 193.117.8.1 Le prime 3 righe non corrispondono Ultima riga: 193.117.8.1 & 0.0.0.0 (/0) = 0.0.0.0 → OK Destination Interface 200.23.16.0/20 eth0 199.31.0.0/16 eth1 200.23.18.0/23 eth1 0.0.0.0/0 eth2 4-47 Router multipli sulla stessa rete ❑ Se ci sono più router sulla stessa rete, quale router deve gestire un datagramma in arrivo? R Internet R1 R2 R3 Network 1 Network 2 Network 3 4-48 Soluzione: inserire l’informazione nella tabella di routing ❑ Le tabelle di routing includono l’IP cui inoltrare il datagramma! ❖ Quello è l’indirizzo IP del router che se ne dovrà occupare ❖ NOTA: Gli indirizzi IP sorgente e destinazione NON CAMBIANO quando il pacchetto viene inoltrato Con l’eccezione del NAT, ne parliamo tra poco “Next hop” Destinazione Interfaccia Inoltra a 200.23.16.0/20 eth0 192.168.0.2 199.31.0.0/16 eth1 192.168.1.2 200.23.18.0/23 eth1 192.168.1.3 0.0.0.0/0 eth2 192.168.2.7 ❑ Data plane: legge la tabella e trova interfaccia e destinatario usando longest prefix matching ❑ Control plane: popola la tabella 4-49 Nel caso di prima Destinazione Interfaccia Inoltra a 1.1.1.0/24 eth0 Diretto 2.2.2.0/24 eth1 192.168.0.2 3.3.3.0/24 eth1 192.168.0.3 192.168.0.0/29 eth1 Diretto R Resto di Internet 0.0.0.0/0 eth1 192.168.0.4 192.168.0.4 192.168.0.0/29 eth1 R1 192.168.0.1 R2 192.168.0.2 R3 192.168.0.3 eth0 1.1.1.0/24 2.2.2.0/24 3.3.3.0/24 4-50 Tipica rete casalinga ❑ Tabelle di routing sul laptop o smartphone Destinazione Interfaccia Inoltra a 192.168.0.0/24 eth1 Diretto 0.0.0.0/0 eth1 192.168.0.1 192.168.0.1 Home network 192.168.0.0/24 Resto di Internet 4-51 Sommario ❑ Visione d’insieme ❑ Il protocollo IP (segue) ❖ Data plane e control plane ❖ Dynamic Host Configuration Protocol (DHCP) ❑ Il protocollo IP ❖ Il viaggio di un pacchetto ❖ Formato datagrammi ❖ IPv6 ❖ Frammentazione ❖ Indirizzamento ❑ Come è fatto un router ❖ Indirizzamento classless ❑ Protocolli di instradamento ❖ Tipi di indirizzi e NAT ❖ Link state: Dijkstra ❖ Address Resolution Protocol ❖ Internet, AS, OSPF (ARP) ❖ Distance vector: ❖ Internet Control Message Bellman-Ford Protocol (ICMP) ❖ RIP ❑ BGP 4-52 Indirizzi IP pubblici e privati ❑ La maggioranza dei 232 = 4.294.967.296 indirizzi IP è pubblica è può essere assegnata a host e raggiunta su Internet ❑ Alcuni blocchi di indirizzi IP sono riservati ❖ Non possono essere usati come indirizzi di destinazione in Internet I router li bloccano ❖ Sono definiti “indirizzi IP privati” e si usano per costruire reti private ❖ Da 10.0.0.0 a 10.255.255.255 (10.0.0.0/8) ❖ Da 172.16.0.0 a 172.31.255.255 (172.16.0.0/12) ❖ Da 192.168.0.0 a 192.168.255.255 (192.168.0.0/16) ❑ Riutilizzabili in tutte le reti private ❖ Non escono dalla rete ❖ Sono sempre univoci all’interno di una rete privata ❖ Di solito, sono assegnati dinamicamente 4-53 Network Address Translation (NAT) ❑ Come fanno gli host con un indirizzo IP privato a mandare pacchetti verso Internet? ❖ Proxy Computer che ha un indirizzo pubblico e uno privato, e “media” la connessione per applicazioni specifiche (D: svantaggi?) ❖ NAT: apparato allacciato sia alla rete privata sia ad Internet Effettua la seguente mappatura Da A IP sorgente privato IP pubblico del NAT IP destinazione pubblico IP destinazione pubblico Porta sorgente Un’altra porta sorgente Porta destinazione Porta destinazione Protocollo Protocollo E viceversa 4-54 NAT: network address translation Tabella di traduzione del NAT 1: L’host 10.0.0.1 Lato esterno Lato rete privata invia un datagramma a 2: Il NAT cambia 128.119.40.186, porta 8 l’IP e la porta sorgente 138.76.29.7, 5001 10.0.0.1, 3345 del datagramma da …… …… 10.0.0.1, porta 3345 a 138.76.29.7, porta 5001 S: 10.0.0.1, 3345 e memorizza in tabella D: 128.119.40.186, 80 10.0.0.1 1 S: 138.76.29.7, 5001 2 D: 128.119.40.186, 10.0.0.4 80 10.0.0.2 138.76.29.7 S: 128.119.40.186, 80 D: 10.0.0.1, 3345 4 S: 128.119.40.186, 80 D: 138.76.29.7, 5001 3 10.0.0.3 4: Il NAT cambia 3: Arriva la risposta l’IP e la porta destinazione con IP destinazione del datagramma da 138.76.29.7, porta 5001 138.76.29.7, porta 5001 a 10.0.0.1, porta 3345 4-55 NAT: network address translation ❑ Il numero di porta ha 16 bit ❖ Fino a 60,000 connessioni simultanee con un solo IP pubblico ❑ Il NAT è stato a lungo la soluzione alla mancanza di IP pubblici ❑ Soluzione controversa: ❖ Viola l’architettura a livelli: il NAT di fatto è un router e non dovrebbe cambiare le porte ❖ In ogni caso, la mancanza di indirizzi dovrebbe essere risolta da IPv6 ❖ Costringe i programmatori a tenere conto che potrebbe esistere (es. P2P) ❖ Attraversamento del NAT: come fa un client a connettersi a un server che sta dietro un NAT? Port forwarding ”Inoltra tutte le connessioni sulla porta 22 all’host 192.168.0.x” Hole punching UPnP Internet Gateway Device Protocol, STUN, … 4-56 NAT can be your friend ❑ A volte, un NAT è l’unico modo di connettere due reti se non si controllano tutti i router (es., qui supponete di non controllare A) Router R Router A 10.0.0.0/24 10.0.1.0/30 10.20.30.0/24.1.2.1.1.46 10.0.0.5 Destinazione Interf. Inoltra a 10.20.30.46 10.0.0.0/24 eth0 Diretto Destinazione Interf. Inoltra a 10.0.1.0/30 eth1 Diretto 10.0.1.0/30 eth0 Diretto 10.20.30.0/24 eth1 10.0.1.1 10.20.30.0/24 eth1 Diretto ❑ Ad esempio, l’host a sinistra può aprire una pagina web sul server? ❖ No, ma la cosa si può risolvere con un NAT su R! 4-57 Indirizzi IP speciali ❑ Ci sono alcuni tipi di indirizzi IP “speciali” che non vengono mai assegnati agli host ❑ Esempi: ❖ Gli indirizzi che denotano “tutta la rete” ❖ L’indirizzo broadcast di una rete (“Directed Broadcast Address”) ❖ L’indirizzo broadcast di rete locale (“Limited Broadcast Address”) ❖ “Questo computer” ❖ Indirizzi loopback ❖ Gli indirizzi multicast ❖ Gli indirizzi link-local 4-58 Indirizzi di “tutta la rete” ❑ Sono usati per riferirsi al prefisso usato per una certa rete ❑ Si formano impostando l’HostID a tutti 0 ❑ Per esempio, l’indirizzo 128.211.0.16/28 indica una rete ❖ Infatti, tutti i bit oltre il 28-esimo sono a 0 ❖ 10000000.11010011.00000000.00010000 ❑ Non si possono usare come indirizzo destinazione ❑ NOTA: 128.211.0.17/28 NON E’ un indirizzo valido per denotare una rete ❖ 10000000.11010011.00000000.00010001 ❖ Però può essere un host della rete 128.211.0.16/28 4-59 Indirizzo broadcast di una rete ❑ “Directed Broadcast Address” ❑ Per semplificare l’invio di un pacchetto a tutti gli host di una rete, IP definisce un indirizzo broadcast specifico per quella rete ❑ Questo tipo di pacchetti viene inoltrato dai router ❖ Una sola copia del datagramma viaggia in Internet ❖ Finché non raggiunge la rete di destinazione ❖ E viene consegnato a tutti gli host in quella rete ❑ Si genera usando un HostID di tutti 1, ad esempio ❖ 10000000.11010011.00000000.00011111 4-60 Indirizzo broadcast di rete locale ❑ “Limited broadcast address” ❑ Si riferisce al fatto che i datagrammi con questo indirizzo destinazione non escono mai dalla rete locale ❖ Nessun router li inoltra ❑ IP riserva l’indirizzo con 32 bit tutti a 1 per questo scopo ❖ 255.255.255.255 = 11111111.11111111.11111111.11111111 ❑ Si usa quando un host si accende e deve ancora capire su che rete si trova ❖ Finche non ha un indirizzo IP valido, IP manda i datagrammi all’indirizzo broadcast di rete locale 4-61 “Questo computer” ❑ Prima di inviare datagrammi verso Internet, un host deve conoscere il proprio indirizzo IP ❑ La pila di protocolli TCP/IP include un protocollo per l’assegnazione automatica degli indirizzi ❖ … peccato che anche quella richieda IP per comunicare ☺ ❑ Soluzione: quando un host parte (“boots up”) e non ha un indirizzo IP valido, imposta come IP sorgente un indirizzo di tutti 0 ❖ 00000000.00000000.00000000.00000000 4-62 Indirizzi loopback ❑ Si usano per testare le applicazioni di rete ❖ Se avete componenti che comunicano attraverso una rete, invece di farli girare su computer diversi … ❖ … li fate girare sullo stesso computer attraverso indirizzi loopback ❑ Quando un componente invia un datagramma a un altro componente dell’applicazione ❖ Il datagramma scende la pila protocollare fino al livello 3 (IP) ❖ E poi risale verso il secondo programma ❖ Nessun pacchetto lascia il computer ❑ IP riserva il prefisso 127.0.0.0/8 per il loopback ❖ HostID irrilevante, i datagrammi sono comunque gestiti come sopra ❖ Spesso si usa l’HostID 1 → 127.0.0.1 !!! 4-63 Indirizzi multicast ❑ Servono a inviare i pacchetti a un gruppo di host distribuito su Internet, anche globalmente ❑ I router si occupano di creare le copie necessarie ❑ In IPv4 gli indirizzi multicast iniziano con 1110 ❖ Da 224.0.0.0 a 239.255.255.255 ❑ Bad news: il supporto per il multicast in Internet è minimo, e il traffico multicast viene spesso bloccato 4-64 Unicast multiplo … ❑ Una copia di un pacchetto per ogni destinazione interessata ❖ Può usare lo stesso link più volte per gli stessi dati 4-65 … confrontato con routing multicast ❑ Multicast: minimizza il numero di copie e reduce l’uso delle risorse 4-66 Indirizzi IP link-local ❑ Sottorete riservata per consentire le comunicazioni quando un host non riesce a “trovare” un indirizzo IP ❑ 169.254.0.0/16 ❑ Ogni host sceglie a caso un IP da questa sottorete ❑ Questo consente agli host di comunicare tra loro nella sottorete, anche se li mantiene isolati dall’esterno ❑ Lo vedremo meglio più avanti parlando di DHCP 4-67 Indirizzi IP per i router ❑ Ad ogni router si assegnano due o più indirizzi IP ❖ (Almeno) un indirizzo IP per interfaccia ❑ Infatti ❖ Un router connette multiple reti (per definizione) ❖ Ogni rete ha un prefisso unico, quindi per parlare su quella rete serve un indirizzo IP in cui figura esattamente quel prefisso ❑ Concetto importante: ❖ Gli indirizzi IP non contrassegnano un host … ❖ … ma un’INTERFACCIA DI RETE, quindi una connessione logica tra un host e una rete ❖ Quindi un sistema con molte interfacce (un router) avrà necessariamente diversi indirizzi IP 4-68 Esempio 4-69 Esempio con indirizzi IP multipli Router e NAT per l’accesso a Internet: 2 indirizzi IP su interfacce diverse Rete locale di un 192.168.5.2 campus con 4 153.18.125.1 sottoreti private: 192.168.1.0/24 192.168.1.1 192.168.2.0/24 192.168.2.1 192.168.3.0/24 192.168.3.1 192.168.4.0/24 192.168.4.1 192.168.5.1 Router che interconnette le 4 reti private, e inoltra all’altro router i datagrammi destinati a Internet : 5 IP diversi sulla stessa interfaccia 4-70 Esempio con indirizzi IP multipli Router e NAT per l’accesso a Internet: 2 indirizzi IP su interfacce diverse 153.18.125.1 192.168.5.2... 192.168.1.1 192.168.2.1 192.168.3.1 192.168.4.1 Resto della rete 192.168.5.1 Router che interconnette le 4 reti private, e inoltra all’altro router i datagrammi destinati a Internet : 5 IP diversi sulla stessa interfaccia 4-71 Per chiudere il cerchio: livello 2 ❑ Per comprendere il viaggio di un pacchetto dal mittente A al destinatario B, mancano alcuni dettagli sul livello 2 MAC sorg: 74-29-9C-E8-FF-55 MAC dest: E6-E9-00-17-BB-4B ❑ Datagramma IP → incapsulato in un frame IP sorg: 111.111.111.111 (pacchetto di livello 2) IP dest: 222.222.222.222 ❖ Per poter trasmettere il frame, bisogna inserire l’indirizzo di livello 2 di sorgente e destinazione (i “MAC address”) nell’header di livello 2 ❑ MAC address: stringa di 48 bit, rappresentata come 12 cifre esadecimali (ogni interfaccia ne ha uno) ❑ Come recuperiamo l’indirizzo MAC del destinatario? A B R 111.111.111.111 222.222.222.222 74-29-9C-E8-FF-55 49-BD-D2-C7-56-2A 222.222.222.220 1A-23-F9-CD-06-9B 111.111.111.112 111.111.111.110 222.222.222.221 CC-49-DE-D0-AB-7D E6-E9-00-17-BB-4B 88-B2-2F-54-1A-0F 4-72 Sommario ❑ Visione d’insieme ❑ Il protocollo IP (segue) ❖ Data plane e control plane ❖ Dynamic Host Configuration Protocol (DHCP) ❑ Il protocollo IP ❖ Il viaggio di un pacchetto ❖ Formato datagrammi ❖ IPv6 ❖ Frammentazione ❖ Indirizzamento ❑ Come è fatto un router ❖ Indirizzamento classless ❑ Protocolli di instradamento ❖ Tipi di indirizzi e NAT ❖ Link state: Dijkstra ❖ Address Resolution Protocol ❖ Internet, AS, OSPF (ARP) ❖ Distance vector: ❖ Internet Control Message Bellman-Ford Protocol (ICMP) ❖ RIP ❑ BGP 4-73 Principio dell’ARP ❑ Se l’host destinatario di un datagramma IP si trova sulla mia rete, voglio inviargli il pacchetto direttamente ❖ D: come faccio a sapere se questo è il caso? ❖ R: perché il prefisso di rete (NetID) del destinatario è uguale al mio ❑ Address Resolution Protocol ❖ Se l’indirizzo IP del destinatario è C, il mittente invia in broadcast una richiesta “Mi serve il MAC address che corrisponde all’indirizzo IP C” ❖ La richiesta raggiunge tutti gli host sulla rete ❖ L’host con indirizzo IP C risponde: “Sono io e questo è il mio indirizzo MAC” 4-74 Principio dell’ARP ❑ Si fa solo per comunicazioni punto-punto sulla stessa rete ❖ Anche se gli indirizzi IP sorgente e destinazione non cambiano lungo il percorso, gli indirizzi MAC cambiano ad ogni salto ❖ In ogni caso, non si cerca mai l’indirizzo MAC di un host su una rete diversa dalla propria (D: perché?) In questo caso si passa sempre il pacchetto a un router Ovviamente, dovrete usare ARP per trovare l’indirizzo MAC del router A B R 111.111.111.111 222.222.222.222 74-29-9C-E8-FF-55 49-BD-D2-C7-56-2A 222.222.222.220 1A-23-F9-CD-06-9B 111.111.111.112 111.111.111.110 222.222.222.221 CC-49-DE-D0-AB-7D E6-E9-00-17-BB-4B 88-B2-2F-54-1A-0F 4-75 Formato del messaggio ARP 4-76 Incapsulamento di ARP in un frame ❑ Ad esempio, frame Ethernet ❑ I messaggi ARP sono interpretati come dati da trasportare e incapsulati nel payload del frame MESSAGGIO ARP FRAME HEADER FRAME PAYLOAD CRC ❑ Nell’header del frame c’è un campo “Type” ❖ Identifica il tipo di dati trasportati ❑ In Ethernet, se il campo contiene il valore 2054 (0x806), significa che i dati sono un messaggio ARP 4-77 ARP caching ❑ Per evitare di inviare un messaggio ARP per ogni datagramma, si mantengono in memoria (“cache”) le risposte ARP ricevute ❑ Gestione della cache ❖ Se si riceve una nuova risposta per una certa corrispondenza tra indirizzo IP e indirizzo MAC, questa sovrascrive la precedente ❖ Le corrispondenze più vecchie vengono cancellate periodicamente (ogni 30 secondi circa) ❖ La cache viene consultata sempre prima di inviare una richiesta 4-78 Uso avanzato di ARP: il proxy ARP ❑ Un proxy ARP è una macchina che restituisce un indirizzo MAC facendo le veci di un host che si trova su una rete diversa ❑ Esempio: router di accesso alla rete sulla sinistra ❖ Un host sulla rete di sinistra vuole comunicare con uno degli host della rete di accesso a destra Il router di accesso risponde con il proprio MAC ai messaggi ARP E poi si incarica di inoltrare i pacchetti ❖ Così gli host sulla destra non devono stare in una rete separata 192.168.0.251/24 192.168.0.252/24 Indirizzo IP: 192.168.0.1/24 Indirizzo MAC: 01:23:45:a6:e7:f8 192.168.0.2/24 192.168.0.3/24 192.168.0.4/24 192.168.0.254/24 192.168.0.253/24 4-79 Sommario ❑ Visione d’insieme ❑ Il protocollo IP (segue) ❖ Data plane e control plane ❖ Dynamic Host Configuration Protocol (DHCP) ❑ Il protocollo IP ❖ Il viaggio di un pacchetto ❖ Formato datagrammi ❖ IPv6 ❖ Frammentazione ❖ Indirizzamento ❑ Come è fatto un router ❖ Indirizzamento classless ❑ Protocolli di instradamento ❖ Tipi di indirizzi e NAT ❖ Link state: Dijkstra ❖ Address Resolution Protocol ❖ Internet, AS, OSPF (ARP) ❖ Distance vector: ❖ Internet Control Message Bellman-Ford Protocol (ICMP) ❖ RIP ❑ BGP 4-80 Internet Control Message Protocol ❑ IP include un protocollo “partner” chiamato ICMP ❖ Usato per notificare errori alla sorgente di un datagramma ❖ Ottimo strumento per gestione e manutenzione delle reti ❑ Interdipendenti ❖ IP ha bisogno di ICMP per segnalare errori ❖ ICMP si serve di IP per trasportare i messaggi ❑ Header semplice: type identifica il tipo di messaggio 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Code | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 4-81 Internet Control Message Protocol Campo Type Descrizione Destination unreachable Il pacchetto non può essere consegnato Port unreachable Nessuno all’host destinatario ascolta sulla porta specificata Time exceeded Il campo TTL dell’header IP è sceso a 0 (routing loop?) Parameter problem Valore non valido in un campo dell’header IP Source quench Chiede alla sorgente di rallentare l’invio di dati Redirect Dice al router a quale host inoltrare il datagramma Echo and echo reply Usati da ping per capire se un host è attivo Timestamp request/reply Come i comandi echo, ma per l’orologio locale del router Router Per proporsi come router, o per chiedere quali router ci sono advertisement/solicitation nelle vicinanze Fragmentation needed Flag IP «non frammentare» a 1, ma datagramma eccede l’MTU 4-82 Internet Control Message Protocol ❑ Due classi di messaggi ❖ Quelli usati per segnalare errori Es., Time Exceeded e Destination Unreachable ❖ Quelli usati per recuperare informazioni Es., Echo Request e Echo Reply ❑ Echo Request/Reply → usati dal comando ping ❖ Quando un host riceve un “echo request,” restituisce un messaggio ICMP con gli stessi dati presenti nella richiesta (“echo”…) ❑ I messaggi ICMP funzionano come qualunque pacchetto IP e sono inviati senza particolari priorità ❖ Eccezione: se un messaggio ICMP genera un errore, non si invia nessun messaggio di errore ❖ Evita di congestionare Internet con messaggi di errore 4-83 Internet Control Message Protocol ❑ I contenuti ICMP vengono trasportati come dati in un datagramma: 4-84 Sfruttare ICMP per ping e traceroute ❑ Ping ❖ Echo request + echo reply ❖ Si verifica l’esistenza di un percorso verso la destinazione e se ne misura l’RTT ❑ Traceroute ❖ Si inviano datagrammi IP con TTL sempre maggiore (1, 2, 3, …) ❖ Con TTL = 1, il primo router decrementa il TTL a 0 Scarta il pacchetto Invia un messaggio “Time Exceeded” con il proprio indirizzo IP ❖ Con TTL = 2, il primo router decrementa il TTL a 1, e il secondo a 0 Stesse conseguenze ❖ Si ripete finché non si è raggiunta la destinazione ❖ Usato per rilevare il percorso seguito dal pacchetto 4-85 Sommario ❑ Visione d’insieme ❑ Il protocollo IP (segue) ❖ Data plane e control plane ❖ Dynamic Host Configuration Protocol (DHCP) ❑ Il protocollo IP ❖ Il viaggio di un pacchetto ❖ Formato datagrammi ❖ IPv6 ❖ Frammentazione ❖ Indirizzamento ❑ Come è fatto un router ❖ Indirizzamento classless ❑ Protocolli di instradamento ❖ Tipi di indirizzi e NAT ❖ Link state: Dijkstra ❖ Address Resolution Protocol ❖ Internet, AS, OSPF (ARP) ❖ Distance vector: ❖ Internet Control Message Bellman-Ford Protocol (ICMP) ❖ RIP ❑ BGP 4-86 DHCP ❑ Consente di assegnare un indirizzo IP a un host quando questo si accende, in maniera del tutto automatica ❑ Permette di liberare indirizzi quando non utilizzati, affinché possano essere assegnati ad altri host ❑ In sintesi la procedura è: ❖ L’host invia un messaggio “DHCP discover” [opzionale] ❖ Il server DHCP (di solito un software che gira in un altro host, o in un router) risponde con un messaggio “DHCP offer” [opzionale] ❖ L’host richiede in indirizzo IP con un messaggio “DHCP request” ❖ Il server DHCP invia un messaggio “DHCP ack” 4-87 DHCP client-server scenario Server 223.1.1.0/24 DHCP 223.1.1.1 223.1.2.1 223.1.1.2 Client DHCP 223.1.1.4 223.1.2.9 (Nuovo host che richiede un 223.1.1.3 223.1.3.27 223.1.2.2 indirizzo in questa rete) 223.1.2.0/24 223.1.3.1 223.1.3.2 223.1.3.0/24 4-88 DHCP client-server scenario Server DHCP: 223.1.2.5 DHCP discover Client DHCP src : 0.0.0.0, 68 Broadcast: c’è un server dest.: 255.255.255.255,67 DHCPyiaddr: su questa 0.0.0.0rete? transaction ID: 654 DHCP offer src: 223.1.2.5, 67 Broadcast: dest: Sono io! 255.255.255.255, 68 Puoi usare yiaddrr: questo 223.1.2.4 transaction ID: IP indirizzo 654 lifetime: 3600 secs DHCP request src: 0.0.0.0, 68 dest: 255.255.255.255, Broadcast: OK! 67 yiaddrr: 223.1.2.4 Lo prendo! transaction ID: 655 lifetime: 3600 secs DHCP ACK src: 223.1.2.5, 67 dest:Broadcast: 255.255.255.255, OK!68 yiaddrr: 223.1.2.4 E’ tuttoID:tuo! transaction 655 lifetime: 3600 secs 4-89 Prestiti (“lease”) DHCP ❑ L’indirizzo IP fornito da DHCP rimane valido per un tempo limitato ❑ Quando il prestito finisce, il server rimette l’indirizzo IP in un insieme di indirizzi utilizzabili ❑ A quel punto, il client può decider di cambiare indirizzo IP o negoziare un’estensione del prestito ❑ Normalmente, DHCP approva tutte le estensioni ❖ Un host può continuare a funzionare senza interruzioni ❖ Per varie ragioni, comunque, un server potrebbe negare l’estensione di un lease ❖ In quel caso, il client DEVE smettere di usare l’IP 4-90 Altri dettagli su DHCP ❑ DHCP usa UDP, che non è un protocollo di trasporto affidabile ❖ DHCP è progettato per essere robusto a perdite e duplicati ❖ Nessuna risposta dal server: l’host ritrasmette la richiesta ❖ Se arriva una risposta duplicata: l’host ignora la copia extra ❑ Il client, quando trova un server DHCP, ne memorizza l’indirizzo in una cache ❑ Per evitare richieste simultanee ❖ Ritardi casuali prima di inviare di nuovo una richiesta 4-91 Formato dei messaggi DHCP 4-92 Formato dei messaggi DHCP ❑ OP: specifica se si tratta di una risposta o una richiesta ❑ HTYPE e HLEN specificano il tipo di hardware e la lunghezza dell’indirizzo di livello 2 ❑ FLAGS specifica se il mittente può ricevere broadcast o risposte dirette ❑ HOPS specifica quanti server hanno inoltrato la richiesta ❑ TRANSACTION IDENTIFIER si usa per far corrispondere le richieste alle risposte ❑ SECONDS ELAPSED dice quanto tempo è passato da quando l’host si è attivato ❑ Dimensioni fissate (eccetto per il campo OPTIONS) 4-93 Formato dei messaggi DHCP ❑ I campi rimanenti trasportano le informazioni richieste ❖ YOUR IP ADDRESS si usa per trasportare l’indirizzo IP offerto al client DHCP ❖ Il server mette il proprio indirizzo IP e nome nei campi SERVER IP ADDRESS e SERVER HOST NAME ❖ ROUTER IP ADDRESS contiene l’indirizzo IP di un router di default Il DHCP lo usa per comunicare a un host il default gateway 4-94 DHCP: altre informazioni DHCP può restituire anche ❑ Il nome e l’indirizzo IP di un server DNS ❑ La maschera di rete per suddividere il prefisso dal suffisso ❑ Altre informazioni (es. il percorso di un file con le istruzioni per configurare un host all’avvio) 4-95 DHCP in una rete reale ❑ L’indirizzo IP dei messaggi DHCP 223.1.1.0/24 DHCP è quello broadcast di server 223.1.2.1 rete locale (255.255.255.255) 223.1.1.1 ❑ I router non lo inoltrano 223.1.1.2 ❖ In ogni caso, i router possono 223.1.1.4 223.1.2.9 essere configurati per inoltrare i messaggi DHCP a 223.1.1.3 223.1.3.27 223.1.2.2 un server noto 223.1.2.0/24 ❖ D: altrimenti? ❖ Altrimenti, servirebbe un 223.1.3.1 223.1.3.2 server DHCP in ogni sottorete 223.1.3.0/24 4-96 E se non c’è nessun DHCP? ❑ Si disabilita il client DHCP di un host e si configura l’indirizzo IP manualmente ❑ Altrimenti, il client DHCP imposta un indirizzo tipo link-local ❖ 169.254.0.0/16 ❑ Passi 1. Si sceglie casualmente un indirizzo tra 169.254.0.1 e 169.254.255.254 2. Si cerca se esiste un interfaccia di rete con questo indirizzo Come? Con una risoluzione ARP 3. Se la si trova, si torna al punto 1 4. Altrimenti, l’host si tiene l’indirizzo scelto al punto 1 ❑ Consente agli host di parlarsi almeno sulla rete locale 4-97 Sommario ❑ Visione d’insieme ❑ Il protocollo IP (segue) ❖ Data plane e control plane ❖ Dynamic Host Configuration Protocol (DHCP) ❑ Il protocollo IP ❖ Il viaggio di un pacchetto ❖ Formato datagrammi ❖ IPv6 ❖ Frammentazione ❖ Indirizzamento ❑ Come è fatto un router ❖ Indirizzamento classless ❑ Protocolli di instradamento ❖ Tipi di indirizzi e NAT ❖ Link state: Dijkstra ❖ Address Resolution Protocol ❖ Internet, AS, OSPF (ARP) ❖ Distance vector: ❖ Internet Control Message Bellman-Ford Protocol (ICMP) ❖ RIP ❑ BGP 4-98 Procedura di routing passo a passo ❑ Facciamo attenzione all’indirizzamento IP (datagramma) e MAC (frame) ❑ Assumiamo che A conosca ❖ L’indirizzo IP di B ❖ L’indirizzo IP del router cui inviare il pacchetto (D: come?) ❖ L’indirizzo MAC del router R (D: come?) A B R 111.111.111.111 222.222.222.222 74-29-9C-E8-FF-55 49-BD-D2-C7-56-2A 222.222.222.220 1A-23-F9-CD-06-9B 111.111.111.112 111.111.111.110 CC-49-DE-D0-AB-7D E6-E9-00-17-BB-4B 222.222.222.221 88-B2-2F-54-1A-0F 4-99 Procedura di routing passo a passo ❑ A crea il datagramma IP con sorgente A e destinazione B ❑ Lo incapsula in un frame di MAC sorg: 74-29-9C-E8-FF-55 MAC dest: E6-E9-00-17-BB-4B livello 2, con l’indirizzo MAC IP sorg: 111.111.111.111 IP dest: 222.222.222.222 di R come destinazione ❖ Quindi il payload del frame è IP Ethernet il datagramma IP Fisico ❖ Assumiamo ARP già fatto A B R 111.111.111.111 222.222.222.222 74-29-9C-E8-FF-55 49-BD-D2-C7-56-2A 222.222.222.220 1A-23-F9-CD-06-9B 111.111.111.112 111.111.111.110 CC-49-DE-D0-AB-7D E6-E9-00-17-BB-4B 222.222.222.221 88-B2-2F-54-1A-0F 4-100 Procedura di routing passo a passo ❑ Frame inviato da A a R ❑ Frame ricevuto ad R, datagramma estratto e passato a IP MAC sorg: 74-29-9C-E8-FF-55 MAC dest: E6-E9-00-17-BB-4B IP src: 111.111.111.111 IP dest: 222.222.222.222 IP sorg: 111.111.111.111 IP dest: 222.222.222.222 IP IP Ethernet Ethernet Fisico Fisico A B R 111.111.111.111 222.222.222.222 74-29-9C-E8-FF-55 49-BD-D2-C7-56-2A 222.222.222.220 1A-23-F9-CD-06-9B 111.111.111.112 111.111.111.110 CC-49-DE-D0-AB-7D E6-E9-00-17-BB-4B 222.222.222.221 88-B2-2F-54-1A-0F 4-101 Procedura di routing passo a passo ❑ R decide come inoltrare il datagramma con sorg. A e dest. B ❑ R crea un frame di livello 2 con destinazione l’indirizzo MAC di B e vi incapsula il datagramma IP MAC sorg: 1A-23-F9-CD-06-9B MAC dest: 49-BD-D2-C7-56-2A IP sorg: 111.111.111.111 IP dest: 222.222.222.222 IP Ethernet Fisico A B R 111.111.111.111 222.222.222.222 74-29-9C-E8-FF-55 49-BD-D2-C7-56-2A 222.222.222.220 1A-23-F9-CD-06-9B 111.111.111.112 111.111.111.110 CC-49-DE-D0-AB-7D E6-E9-00-17-BB-4B 222.222.222.221 88-B2-2F-54-1A-0F 4-102 Procedura di routing passo a passo ❑ R decide come inoltrare il datagramma con sorg. A e dest. B ❑ R crea un frame di livello 2 con destinazione l’indirizzo MAC di B e vi incapsula il datagramma IP MAC sorg: 1A-23-F9-CD-06-9B MAC dest: 49-BD-D2-C7-56-2A ❑ R invia il frame, B lo riceve, IP sorg: 111.111.111.111 IP dest: 222.222.222.222 IP ne estrae il datagramma Ethernet IP e lo passa a IP Ethernet Fisico Fisico A B R 111.111.111.111 222.222.222.222 74-29-9C-E8-FF-55 49-BD-D2-C7-56-2A 222.222.222.220 1A-23-F9-CD-06-9B 111.111.111.112 111.111.111.110 CC-49-DE-D0-AB-7D E6-E9-00-17-BB-4B 222.222.222.221 88-B2-2F-54-1A-0F 4-103 Sommario ❑ Visione d’insieme ❑ Il protocollo IP (segue) ❖ Data plane e control plane ❖ Dynamic Host Configuration Protocol (DHCP) ❑ Il protocollo IP ❖ Il viaggio di un pacchetto ❖ Formato datagrammi ❖ IPv6 ❖ Frammentazione ❖ Indirizzamento e NAT ❑ Come è fatto un router ❖ Indirizzamento classless ❑ Protocolli di instradamento ❖ Tipi di indirizzi ❖ Link state: Dijkstra ❖ Address Resolution Protocol ❖ Internet, AS, OSPF (ARP) ❖ Distance vector: ❖ Internet Control Message Bellman-Ford Protocol (ICMP) ❖ RIP ❑ BGP 4-104 Ragioni dietro al design IPv6 ❑ Inizialmente: ampliare la quantità di indirizzi disponibili prima che quelli di IPv4 finissero ❑ Ragioni aggiuntive ❖ Il formato dell’header velocizza l’elaborazione dei datagrammi ❖ Facilitare la gestione della qualità del servizio ❑ Formato del datagramma IPv6: ❖ Lunghezza dell’header fissata ad esattamente 40 byte ❖ Frammentazione proibita 4-105 Formato del datagramma IPv6 ❑ Flow label: etichetta per tutti i datagrammi nello stesso “flusso” ❖ Il concetto di flusso non è ben definito ❑ Priority: identifica la priorità dei datagrammi che fanno parte dello stesso flusso ❑ Next header: identifica il protocollo di livello 4 incapsulato nei dati vers. priority flow label payload length next header hop limit source address (128 bits) destination address (128 bits) data 32 bit 4-106 Altri cambiamenti rispetto a IPv4 ❑ Checksum: rimosso! ❑ Options: rimosse dall’header, ma consentite fuori dall’header (indicando un valore apposito nel campo “Next Header”) ❑ ICMPv6 ❖ Messaggi aggiuntivi di errore, ad esempio “Packet Too Big” ❖ Funzioni di gestione per i gruppi multicast 4-107 Transizione da IPv4 a IPv6 ❑ Non tutti i router possono essere aggiornati simultaneamente ❑ Come far coesistere IPv6 e IPv4 finché la transizione non è completa? ❑ Tunneling: i datagrammi IPv6 viaggiano come dati incapsulati dentro datagrammi IPv4 Indirizzi sorgente e Campi header IPv4 destinazione Campi header IPv6 Payload IPv4 IPv4 Indirizzi sorgente e destinazione IPv6 Payload UDP/TCP IPv6 datagram IPv4 datagram 4-108 Tunneling tramite IPv4 A B Tunnel IPv4 E F che connette i router IPv6 Vista logica: IPv6 IPv6 IPv6 IPv6 A B C D E F Vista fisica: IPv6 IPv6 IPv4 IPv4 IPv6 IPv6 Flow: X sorg:B sorg :B Flow: X Sorg: A dest: E Sorg: A Dest: F dest: E Dest: F Flow: X Flow: X Sorg: A Sorg: A Dati Dest: F Dest: F Dati Dati Dati Da A a B: Da E a F: IPv6 Da B a C: Da D a E: IPv6 IPv6 incapsulato IPv6 incapsulato dentro IPv4 dentro IPv4 4-109 Indirizzi IPv6 ❑ Lunghezza = 128 bit ~ 3.4 × 1038 indirizzi ❑ A differenza di IPv4, si scrivono in notazione esadecimale ❖ Ogni gruppo di 4 bit è scritto come una cifra 0, 1, 2, … , 9, a, b, … , f ❖ 32 cifre esadecimali per ogni indirizzo, in 8 gruppi da 4 cifre ❑ Esempio: 2a03:2880:f108: … ❖ 2a03: 0010 (2) 1010 (a) 0000 (0) 0011 (3) 4-110 Indirizzi IPv6 ❑ Un indirizzo completo può essere qualcosa del genere ❖ 2a03:2880:f108:0083:face:b00c:0000:25de ❑ Per accorciarlo, si omettono gli zeri all’inizio di ogni campo, e si scrivono gli zeri consecutivi con un solo “0” ❖ 2a03:2880:f108:0083:face:b00c:0000:25de diventa ❖ 2a03:2880:f108:83:face:b00c:0:25de ❑ I gruppi consecutivi di zeri si rappresentano con un :: ❖ 2a03:2880:f108:0000:0000:0000:0000:25de diventa ❖ 2a03:2880:f108::25de ❑ Ma il :: si può usare solo una volta ❖ Se ci sono più gruppi di zeri, lo si usa sul gruppo più lungo (RFC 5952) 4-111 Prefissi ❑ I prefissi e le sottoreti funzionano esattamente come nel CIDR di IPv4, inclusa la / per indicare i bit a 1 nella maschera: ❖ IPv4: 192.168.0.0/24 Da 192.168.0.0 A 192.168.0.255 ❖ IPv6: 2a03:2880:f108:83::/64 Da 2a03:2880:f108:83:0:0:0:0 A 2a03:2880:f108:83:ffff:ffff:ffff:ffff ❑ Tipica composizione di un indirizzo: Prefisso di routing subnet ID ID dell’interfaccia di rete 48 bit 16 bit 64 bit 128 bit 4-112 Indirizzi speciali ❑ Non specificato, o “questo computer” → ::/128 (tutti 0) ❑ Loopback (localhost) → ::1/128 (tutti 0 con un 1 alla fine) ❑ Indirizzo IPv4 mappato su IPv6 → ::ffff:0:0/96 ❖ Quindi ::ffff:xxyy:zzww , dove xx.yy.zz.ww sono i bit dell’indirizzo IPv4, espresso in esadecimale ❖ Es: IPv4 = 193.175.55.16 = c1.af.37.10 ❖ IPv6 = ::ffff:c1af:3710 ❑ Multicast: ff00::/8 ❑ Link-local unicast: fe80::/10 ❖ 169.254.0.0/16 in IPv4 ❖ Per consentire il networking di rete locale senza router o DHCP 4-113 Indirizzi “molto speciali” ❑ L’introduzione delle lettere esadecimali (da a ad f) ❖ IPv6 di un server Facebook 2a03:2880:f108:83:face:b00c::25de ❖ E potete sbizzarrirvi con la fantasia 2001:db8:a0b:12f0:0:d0d0:i5:dead 2001:db8:a0b:12f0:0:dead:beef:ca1f 2001:db8:a0b:12f0:0:1ce:1ce:babe 2001:db8:a0b:12f0:1:5ee:bad:c0de 4-114 Adozione di IPv6 nel mondo 4-115 Sommario ❑ Visione d’insieme ❑ Il protocollo IP (segue) ❖ Data plane e control plane ❖ Dynamic Host Configuration Protocol (DHCP) ❑ Il protocollo IP ❖ Il viaggio di un pacchetto ❖ Formato datagrammi ❖ IPv6 ❖ Frammentazione ❖ Indirizzamento ❑ Come è fatto un router ❖ Indirizzamento classless ❑ Protocolli di instradamento ❖ Tipi di indirizzi e NAT ❖ Link state: Dijkstra ❖ Address Resolution Protocol ❖ Internet, AS, OSPF (ARP) ❖ Distance vector: ❖ Internet Control Message Bellman-Ford Protocol (ICMP) ❖ RIP ❑ BGP 4-116 Architetture dei router: panoramica ❑ Visione di alto livello dell’architettura di un router Routing, gestione, control plane (software) Processore Le operazioni richiedono millisecondi Inoltro, data plane (hardware) Le operazioni richiedono nanosecondi Sistema di commutazione ad alta velocità Porte di ingresso del router Porte di uscita del router 4-117 Funzioni delle porte di ingresso Protocollo Inoltro Terminazione di livello Sistema di di linea data link commutazione (ricezione) Buffer Livello fisico: Ricezione dei singoli bit Sistema di commutazione decentralizzato: Livello data link: ❑ Utilizzando i valori nei campi dell’header livello 3, ad es., Ethernet trova la porta di uscita corretta usando la tabella di inoltro nella porta di ingresso (“match plus action”) ❑ Obiettivo: non introdurre ritardi ulteriori, prendendo una decisione alla stessa velocità con cui la porta di ingresso riceve i dati ❑ Accodamento nel buffer: se i datagrammi arrivano più in fretta del tasso di smistamento del commutatore 4-118 Sistemi di commutazione ❑ Trasferiscono i pacchetti dall’ingresso all’uscita appropriata ❑ Tasso di commutazione: frequenza alla quale i pacchetti vengono trasferiti dagli ingressi alle uscite ❖ Spesso misurato come multiplo della velocità di comunicazione ❖ Con N ingressi, vorremmo una commutazione N volte più veloce della comunicazione ❑ Tre strutture tipo Memoria A memoria A bus A matrice 4-119 Commutazione a memoria ❑ Prime generazioni di router ❖ Di fatto, computer tradizionali dove la commutazione è controllata dalla CPU ❖ Pacchetti copiati nella memoria del computer ❖ Velocità di commutazione limitata dalla banda dati della memoria (servono 2 accessi al bus di sistema per datagramma) Porta di Porta di ingresso Memoria uscita (es., (es., Ethernet) Ethernet) Bus di sistema 4-120 Commutazione a bus ❑ Si usa un bus dati condiviso interno al router per trasmettere i datagrammi dagli ingressi alle uscite ❑ Contesa del bus: la velocità di commutazione è limitata dalla banda del bus (cioè dalla velocità di trasferimento dati sul bus) ❑ 32 Gbit/s bus, Cisco 5600: sufficiente per router di accesso e router interni alle reti aziendali bus 4-121 Commutazione a matrice ❑ Matrice di punti di interconnessione tra linea di ingresso e linea di uscita ❖ Ispirata ai primi commutatori telefonici elettromeccanici ❖ Reti Banyan, crossbar, … ❖ Usate anche per connettere i processori nei sistemi di calcolo multiprocessore ❑ Supera i limiti di velocità della commutazione a bus ❑ Design avanzato: frammentazione dei datagrammi in celle di lunghezza fissa, che transitano poi attraverso la matrice ❑ Cisco 12000: commuta 60 Gbit/s attraverso la matrice di interconnessione crossbar 4-122 Accodamento alle porte di ingresso ❑ Un commutatore più lento della velocità complessiva delle porte di ingresso causa accodamenti agli ingressi ❖ Ritardi, ma anche perdite dovute all’overflow dei buffer ❑ Blocco “head-of-line” (HOL): un datagramma accodato al primo posto della coda impedisce a quelli successivi di avanzare Commuta- Commuta- tore tore Contesa sull’uscita: Il pacchetto verde Solo un pacchetto rosso per volta può subisce HOL blocking essere trasferito all’uscita rossa: quello sotto rimane bloccato 4-123 Porte di uscita ❑ In questo caso, se i datagrammi arrivano dal commutatore più in fretta di quanto le porte di uscita possano smaltirli: ❖ I datagrammi potrebbero essere scartati se le memorie si riempiono ❑ Politica di scheduling: quale datagramma deve essere servito? ❖ FIFO? Priority scheduling? ❖ Network neutrality? Buffer Protocollo Sistema di di livello Terminazione commutazione data link di linea accodamento (invio) 4-124 Accodamento alle porte di uscita ❑ Come prima: se i pacchetti arrivano troppo in fretta, si accodano ❑ Ritardi di accodamento, o perdite per buffer overflow Commuta- Commuta- tore tore Al tempo t, Successivamente i datagrammi transitano dagli ingressi alle uscite 4-125 Quanta memoria serve nei buffer? ❑ Regola empirica nella RFC 3439: ❖ La memoria richiesta è pari a un “tipico” RTT moltiplicato la velocità del link C ❖ Supponiamo che RTT = 250 [ms] e che C = 10 Gbit/s: servirebbero 2.5 Gbit di buffer!! ❑ Raccommandazioni più recenti: con N flussi, la quantità di RTT × C memoria richiesta è N 4-126 Meccanismi di scheduling ❑ Scheduling: scelta di quale pacchetto trasmettere su un link ❑ Scheduling FIFO (first-in-first-out): inviare i pacchetti in ordine di arrivo nella coda ❖ Esempio di sistema FIFO? ❖ Politica di scarto: se la coda è piena, quali pacchetti scarto? “Tail drop”: scarto i pacchetti in arrivo “Priority drop”: scarto o cancello basandomi su un livello di priorità “Random drop”: scarto o cancello casualmente Pacchetti Pacchetti in arrivo Coda Collegamento in partenza (server) 4-127 Parte 2 Metodi e protocolli di instradamento 4-128 Sommario ❑ Visione d’insieme ❑ Il protocollo IP (segue) ❖ Data plane e control plane