03. Subnetting

Subnetting

Il subnetting è una tecnica che consente di definire reti con un numero di host variabile, superando i vincoli imposti dalle classi degli indirizzi. Questa tecnica comporta diversi vantaggi:

Questa tecnica è applicata continuamente dagli ISP che operano sugli indirizzi pubblici ma ha anche riscontri reali nelle LAN che utilizzano indirizzi privati.

Gli scenari che verranno illustrati di seguito ricadono nel secondo caso e quindi si basano su indirizzi privati.


Il punto di partenza per inquadrare correttamente la tecnica, è rappresentare sia gli IP che le maschere in binario.

Il subnetting prevede che si estenda la NetId dell'indirizzo della Netowk di un numero di bit variabile, in base all'esigenza. Ne consegue, ovviamente, una riduzione dell'HostId di pari valore.

Anche la maschera associata deve essere rimodulata di conseguenza. Il nome più appropriato in questo caso sarà quello Subnet Mask (in realtà questo termine è entrato nell'uso comune anche per indicare una qualsiasi maschera).

Procediamo con un esempio per illustrare la tecnica.

A partire dalla Network con indirizzo 172.16.0.0 con maschera 255.255.0.0, ci adoperiamo per ricavare due sottoreti, dimezzando (all'incirca) il numero di host assegnabili in ciascuna di esse.

Per prima cosa ci avvaliamo della notazione binaria per semplificare il procedimento.

A questo punto si estende la NetId di un bit in modo da dimezzare il numero di host nella nuova sottorete.

Anche la maschera deve essere aggiornata di conseguenza (nell'immagine è aggiornato anche il valore in decimale).

Il nuovo scenario impatta sull'indirizzo della Network, infatti in corrispondenza dell'estensione della NetId la precedente immagine riporta una x evidenziata in rosso, che deve essere "risolta".

In effetti tutti i valori possibili (0 o 1 in questo caso) sono ammessi, e danno luogo a differenti Network.

Nel nostro esempio è richiesto di definire due sottoreti e di conseguenza alla x si assegnerà una volta il valore 0 e una volta il valore 1. 


Nell'immagine sono stati aggiornati anche i valori in decimale, corrispondenti ai byte cui si riferiscono.


Le due network cercate sono dunque:

Per determinare quali sono gli indirizzi di broadcast delle due sottoreti occorre valorizzare ad 1 i bit corrispondenti all'HostId.

Come in precedenza, nell'immagine sono stati convertiti in decimale i valori binari.

La situazione aggiornata è dunque la seguente:

Gli indirizzi assegnabili agli host sono tutti quelli compresi tra l'indirizzo della Network e l'indirizzo di Broadcast.


Nel particolarissimo caso in cui si riservano 31 dei 32 bit dell'indirizzo IP alla NetId, la sottorete non dispone più degli indirizzi di rete e di broadcast. In questo caso è ammessa esclusivamente la connessione punto-punto tra host.


Note:

Notazione CIDR

Le maschere oltre che con la notazione decimale puntata possono essere rappresentate in modo più compatto con la notazione CIDR (Classless Inter-Domain Routing ), che ha una forma del  tipo /valore (ad esempio /20), dove il valore rappresenta il numero di 1 presenti nella maschera.

In effetti le maschere, se rappresentate in binario, sono costituite da una successione di 1 seguite da una successione di 0. In totale 32 bit.

E' chiaro che se si indica il numero di 1 è immediato ricavare il numeri di 0 ed è possibile calcolare il valore decimale assunto da ogni ottetto.

 Consideriamo, ad esempio, la maschera /20, espressa in notazione CIDR.

La seguente tabella mostra la corrispondenza tra le due notazioni.

Network di appartenenza

Il meccanismo di instradamento dei datagram, per poter operare, deve essere in grado di determinare se un generico indirizzo D sia o meno nella stessa Network di un dato indirizzo S, di cui sia nota la maschera M.

Questa operazione, in termini algoritmici, è di immediata risoluzione e si basa sull'operazione di AND bit a bit.

Partendo dalle rappresentazioni binarie degli indirizzi e della maschera, si effettuano le seguenti operazioni:

Se gli indirizzi sono identici, allora l'indirizzo D appartiene alla stessa network di S, in caso contrario non appartiene alla stessa Network.

Consideriamo ad esempio l'indirizzo D 192.168.10.88 e l'indirizzo S 192.168.10. 144 con maschera 255.255.255.128 e determiniamo se appartengono alla stessa Network.

Gli indirizzi delle due Network sono diversi, pertanto i due indirizzi S e D non appartengono alla stessa Network.


Nota:

L'operazione di AND bit a bit si comporta come una moltiplicazione termine a termine.

Ad esempio:

1 1 1 0 0 0  AND

1 0 1 1 0 1   =

----------------

1 0 1 0 0 0