Indirizzamento, Routing e Forwarding per reti IP Andrea Detti rev. 01
Schema di indirizzamento Un indirizzo IP (IP Address) identifica un host se un host è connesso a più di una rete (multi-homed) avrà un indirizzo IP per ogni rete Un indirizzo IP è unico in tutta la rete ha una lunghezza di 32 bits In origine (1981) era formato da due parti Net_Id: identificativo di sotto-rete Host_Id: identificativo di host all interno della sotto-rete IP_Address = Net_Id. Host_Id La divisione tra Net_Id e Host_Id non è fissa
Schema di indirizzamento Classi di indirizzi IP Classe Bit iniziali Net_Id Host_Id Reti disponibili Host disponibili A 0 7 bit 24 bit 128 16.777.216 B 10 14 bit 16 bit 16384 65.536 C 110 21 bit 8 bit 2.097.152 256 D E 1110 11110 Indirizzo multicast: 28 bit Indirizzi possibili: 268.435.456 Riservata per usi futuri: 27 bit Indirizzi possibili: 134.217.728
Schema di indirizzamento Classi di indirizzi IP 0 8 16 24 31 Classe A 0 Net_Id Host_Id Classe B 1 0 Net_id Host_Id Classe C 1 1 0 Net_Id Host_Id Classe D 1 1 1 0 1 1 1 0 Multicast Address Classe E 1 1 1 1 0 Reserved
Schema di indirizzamento Notazione numerica, dotted e mnemonica : Notazione Numerica Notazione Dotted 10100000 01010000 00000010 00010000 160. 80. 2. 16 Notazione Mnemonica www.uniroma2.it Un opportuno servizio di rete (DNS) provvede a tradurre un indirizzo numerico in mnemonico e viceversa
Schema di indirizzamento Alcune Convenzioni speciali: Rete locale Broadcast sulla rete locale Net_Id Tutti 0 Net_Id Tutti 1
Schema di indirizzamento La struttura di indirizzamento a due livelli gerarchici era sufficiente nella fase iniziale di Internet Nel 1984 è stato aggiunto un terzo livello gerarchico il livello di Sottorete (Subnet) Si utilizzano alcuni bit dell Host_Id per codificare il Subnet_Id Network_Id Subnet_Id Host_Id
Schema di indirizzamento Il campo Subnet.Id è identificato da una maschera denominata Subnet Mask Non serve nel caso di indirizzamento convenzionale Una Subnet Mask è una parola di 32 bit in cui i bit uguali a 1 identificano i bit del Net_Id e del Subnet_Id i bit uguali a 0 identificano i bit dell Host_Id Il Subnet_Id ha significato solo nel router a cui sono connesse le sottoreti Classe B 0 Classe B con subneting 1 Subnet Mask 8 16 24 31 1 0 Net_id Host_Id 0 8 16 24 31 0 Net_Id SubNet_id 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Host_Id 0
Subnetting Statico Tutte le sottoreti di una rete hanno la stessa maschera 176.16.2.2 Subnet 2 176.16.2.0 176.16.2.4 Esempio Router con un indirizzo di classe B 176.16.2.3 176.16.2.5 172.16.0.0 176.16.1.2 176.16.3.2 3 Sottoreti numero massimo 254 host 176.16.1.3 176.16.1.4 176.16.1.5 Router 172.16.0.0 176.16.3.3 176.16.3.4 176.16.3.5 Subnet Mask 11111111 11111111 11111111 00000000 Subnet 1 176.16.1.0 Subnet 3 176.16.3.0
Subnetting a lunghezza variabile Le sotto-reti di una rete usano maschere diverse Consente di gestire reti di dimensione diversa 64 host Esempio: Rete con un indirizzo di classe C 165.214.32.0 5 Sottoreti Subnet A, Subnet B, Subnet C: 50 host Subnet D, Subnet E: 30 host Subnetting 4 sottoreti con 64 host ciascuna (Host_id: 6 bit) (subnet mask 255.255.255.192) 64 host 1 sottorete divisa in due ulteriori sottoreti con 32 host ciascuna (Host_id: 5 bit) (subnet mask 255.255.255.224) B C 64 host 01 10 D 32 host A 00 Router 165.214.32.0 11 110 111 E 32 host
Strategia di assegnazione degli indirizzi per subnetting dinamico Si ordinano le sottoreti da gestire dalla più grande alla più piccola Es. A,B,C,D,E Per ogni sottorete a partire dalla prima si determina il numero di bit della subnet_id Es., per B n.bit parte host_id post-subnetting=int_sup[log2(50+2)]=6 n. bit subnet_id = 2 La subnet_id si pone uguale al valore che assumono i bit del primo indirizzo successivo al blocco di indirizzi della rete precedente Es., per B primo indirizzo dopo il blocco di A = 165.214.32.(01000000), quindi subnet_id di B = (01) Il blocco di indirizzi assegnato alla rete va da net_id+subnet_id+(0..0) a net_id+subnet_id+(1..1) Es., per B da 165.214.32.(01000000) a 165.214.32.(01111111), ovvero da 165.214.32.64 a 165.214.32.127
Classless Inter Domain Routing Nel 1996 erano stati assegnati 100 % degli indirizzi di classe A 61.95 % degli indirizzi di classe B 36.44 % degli indirizzi di classe C CIDR è stato ideato nel 1992 per affrontare l esaurimento dello spazio di indirizzamento di IP (raddoppio degli host ogni anno) diminuire la complessità delle tabelle di instradamento nei router velocizzare le operazioni di instradamento nei router Il CIDR tende ad eliminare le classi di indirizzo sostituendo ad esse il concetto di prefisso Il prefisso identifica la rete locale (come la Net_id) ed ha un significato gerarchicamente geografico Maggiore è il numero di bit del prefisso che si analizzano, più focalizzata è la localizzazione geografica della rete di destinazione
Classless Inter Domain Routing CIDR è basato sulla tecnica Supernetting la metà superiore della classe A (da 64 a 127) è stata riservata gli indirizzi di classe B sono assegnati solo se la rete ha almeno 32 sotto-reti oltre 4096 host complessivi gli indirizzi della metà inferiore della classe C sono assegnati a blocchi contigui in relazione alla localizzazione geografica delle sottoreti gli indirizzi della metà superiore della classe C (da 208.0.0 a 223.255.255) non sono assegnati Conseguenze della tecnica Supernetting indirizzi contigui hanno un prefisso uguale un blocco di indirizzi in una routing table corrisponde ad un unico prefisso
Classless Inter Domain Routing Pianificazione geografica degli indirizzi di classe C Multiregional 192.0.0 193.255.255 Europe 194.0.0 195.255.255 Others 196.0.0 197.255.255 North America 198.0.0 199.255.255 Central/South America 200.0.0 201.255.255 Pacific Rim 202.0.0 203.255.255 Others 204.0.0 205.255.255 Others 206.0.0 207.255.255 Tutte le reti appartenenti ad una regione geografica sono identificate dagli stessi 7 bit di prefisso Esempio: Europa da 194 = 11000010 0 a 195 = 11000011 1
Classless Inter Domain Routing Esempio: Service Provider (SP) in Nord America possiede 2048 reti/blocchi di classe C da 198.24.0.0 (11000110.00011000.00000000.0) a 198.31.255.0 (11000110.00011111.11111111.0) Internet SP (ISP) richiede al SP 16 reti/blocchi di classe C da 198.24.16.0 (11000110.00011000.00010000.0) a 198.24.31.0 (11000110.00011000.00011111.0) CIDR mask per il North America = 198.0.0.0/8 (Router backbone) CIDR mask per l SP = 198.24.0.0/13 (Router Intermedio 1) CIDR mask per l ISP = 198.24.16.0/20 (Router Intermedio 2)
Strategia di assegnazione degli indirizzi multi-rete/multi-sottorete (bozza) Problema : è data una topologia di rete composta da tante reti/sottoreti si assegnino gli indirizzi in modo da : 1) limitare il numero di indirizzi richiesti; 2) limitare le righe delle tabelle di routing 1 e 2 possono essere richieste contrastanti: compromesso Regola qualitativa : Si assegnano blocchi contigui di indirizzi fra reti/sottoreti topologicamente vicine fra loro in modo da compattare il numero di righe delle tabelle di instradamento dei router (concetto di supernetting) Da lonano l insieme delle vicine fra loro è visto come una unica superrete/super-sottorete (es. 2048 blocchi in classe C super-rete) Fra le reti vicine (es. i 2048 blocchi di classe C) si assegnano i prefissi/subnet_id come nel caso di subnetting dinamico
In breve Indirizzamento all interno di una net_id senza subnetting con subnetting statico con subnetting dinamico Indirizzamento di una net_id Classfull CIDR (classless)
Routing vs Forwarding Le funzioni di instradamento (Routing) hanno lo scopo di definire i cammini di rete utilizzati per raggiungere determinate destinazioni. Il loro risultato finale è la costruzione ed il mantenimento di tabelle di instradamento (routing) Il Forwarding (attraversamento) rappresenta l operazione fatta da un router per determinare a quale interfaccia inoltrare il pacchetto entrante. Si basa sulle tabelle di instradamento (routing)
Routing Table È composta da righe Elementi di una riga IP address Subnet Mask Next Hop Interface Metric Può esistere una riga rappresentante del router di default Si trova sui piccoli host, che possono anche non avere una RT propria, e che inviano al router di default tutti i datagrammi non diretti alla rete cui sono collegati da router o host con una tabella di discrete dimensioni ma che tuttavia non copre tutte le possibili destinazioni
Forwarding Ogni riga può essere vista come un if { } then {interface_x-next_hop} se l if è verificato, allora il pacchetto entrante deve essere trasmesso sull interfaccia d uscita interface_x verso la prossima interfaccia remota con indirizzo IP next_hop La condizione dell if è una operazione attuata come segue 11000000 00100000 10001000 00000000 = 192.32.136.0 (IP address della riga) 11111111 11111111 11111000 00000000 255.255.248.0 (mask della riga) ===================================== logical_and 11000000 00100000 10001 = 192.32.136 (prefix 1) 11000000 00100000 10001111 00000010 = 192.32.143.2 (Indirizzo di destinazione) 11111111 11111111 11111000 00000000 255.255.248.0 (mask della riga) ===================================== logical_and 11000000 00100000 10001 = 192.32.136 (prefix 2) Se prefix1==prefix2 la condizione è verificata Può accadere che più righe verifichino la condizione. In tal caso si adopta la regola del longest prefix matching. Nel caso in cui anche quest ultima non sia in grado di discriminare una unica soluzione di forwarding allora si passa alla metrica minore e quindi al caso Se non si trova una soluzione di forwarding, il datagramma è undeliverable il datagramma è scartato viene inviato un messaggio ICMP del tipo host unreachable
Longest Prefix Matching Instradamento indirizzo 198.15.7.3 indirizzo 198.15.7.4 198.15.7.3 Porta (interfaccia) 1: matching prefisso 16 porta 7: matching prefisso 24 porta 4: matching prefisso 32 198.15.7.4 porta 1: matching prefisso 16 porta 7: matching prefisso 24 porta 4: no matching Tabella di instradamento Prefix Porta d uscita 198.15.0.0/16 1 198.15.7.0/24 7 198.15.7.3/32 4 198.15.7.3 porta 4 198.15.7.4 porta 7
Es. Routing Table 10.0.0.5 R1 20.0.0.1 Rete 20.0.0 20.0.0.6 Rete 30.0.0 30.0.0.6 R3 40.0.0.7 Rete 10.0.0 50.0.0.10 R2 30.0.0.7 Rete 40.0.0 10.0.0.6 R4 50.0.0.12 Rete 50.0.0 60.0.0.7 Rete 60.0.0 60.0.0.5 R5 40.0.0.9 Routing Table di R2 Net_Id Router_Id 10.0.0 20.0.0.1 20.0.0 Instradamento diretto 30.0.0 Instradamento diretto 40.0.0 30.0.0.6 50.0.0 Instradamento diretto 60.0.0 Instradamento diretto Routing Table di R3 Net_Id Router_Id 10.0.0 30.0.0.7 20.0.0 30.0.0.7 30.0.0 Instradamento diretto 40.0.0 Instradamento diretto 50.0.0 30.0.0.7 60.0.0 40.0.0.9