Subnetting e subnet mask

La maschera di sottorete, subnetting e subnet mask, in una rete TCP/IP è un parametro di configurazione per definire un intervallo di indirizzi della sottorete IP, subnet, a cui appartiene un host. Tutto questo viene utilizzato per ridurre il traffico di rete. Questa tecnica serve anche a semplificare la ricerca e il raggiungimento di un host con relativo indirizzo IP.

Subnetting

Il partizionamento di rete in classi è un sistema molto rigido. Una tecnica per frammentare una rete in altre sottoreti è chiamata di subnetting. In pratica si scompone il campo host per ricavare un id di sottorete. La tecnica di Subnetting frammenta una rete in piccoli intervalli, migliorando le percentuali di collisione e limitando il dominio di broadcast. La modalità di definizione delle sottoreti utilizzata su Internet, il Classless Inter-Domain Routing (CIDR), ci permette di indicare una sottorete in maniera sintetica, con il primo IP della sottorete seguito dalla notazione decimale della maschera di sottorete.

La simbologia usata per esprimere indirizzi CIDR è la seguente: a.b.c.d/x, dove x è la maschera di sottorete, il numero di bit (contati partendo dal più significativo a sinistra) che compongono la parte di indirizzo della rete.

L’IP a.b.c.d. è l’indirizzo di rete della sottorete, ricavabile ponendo i primi x bit pari a 1 gli altri pari a 0.

Il Classless Inter-Domain Routing (CIDR) è una notazione in cui l’indirizzo IP è composto da una parte che identifica la rete o sotto-rete, seguito dalla porzione che rappresenta l’host.
La sintassi utilizzata è semplice: si aggiunge alla fine dell’IP uno slash ed il numero di bit dedicati al prefisso di rete. Per la classe C, ad esempio, scriveremo: 192.168.1.0/24 indicando così che i primi tre ottetti (24 bit) raprensentano la rete e l’ultimo ottetto, quello che resta, gli host.

Da notare che la maschera di sottorete /24 ha il numero di bit 1 consecutivi presenti nella maschera, dopodiché i rimanenti sono tutti 0; 255.255.255.0 rappresenta un valore binario formato esattamente da ventiquattro bit 1 seguiti da otto bit 0.

/24 -> 11111111.11111111.11111111.00000000
255.255.255.0 -> 11111111.11111111.11111111.00000000

Numero massimo host

Dalla maschera di sottorete si deduce facilmente anche il numero massimo di host presenti nella sottorete considerata: con n bit per gli host si hanno 2n possibili valori, e in particolare si potranno assegnare 2n–2 indirizzi validi alle macchine (o più in generale alle interfacce di rete) di tale sottorete. Tale relativa limitazione è dovuta al fatto che due degli indirizzi di qualsiasi rete (o sottorete) assumono un significato particolare e non sono quindi utilizzabili:

l’indirizzo con tutti i bit della parte host a 0 identifica la rete stessa;
l’indirizzo con tutti i bit della parte host a 1 indica il broadcast (messaggio inviato a tutte le macchine della rete).

Per determinare il numero massimo di indirizzi utili in una sottorete basta contare il numero n di bit 0 a destra della maschera di sottorete, porre n come esponente di 2, e sottrarre a ciò i due indirizzi riservati (uno indica la sottorete stessa, l’altro è usato per fare broadcast). La formula è dunque 2 n − 2.

Usando la notazione decimale classless (es: w.x.y.z/m), è altresì possibile calcolare il numero massimo di indirizzi utili con la formula 2 ( 32 − m ) − 2 , del tutto equivalente a quella precedente. Infatti m indica il numero di bit 1 presenti nella maschera di sottorete, quindi m + n = 32

Invio dei pacchetti di rete

Quando il sistema operativo, il livello IP dello stack TCP/IP, riceve da un programma la richiesta di inviare un pacchetto IP ad un certo indirizzo IP destinatario, per prima cosa calcola l’AND logico fra la maschera di sottorete e il proprio indirizzo IP, e lo confronta con l’AND logico tra la maschera di sottorete e l’indirizzo IP di destinazione. Se il risultato delle operazioni è identico (cioè i bit che identificano l’id di rete, o net ID, sono identici, mentre variano solo i bit dell’id di host) allora invierà il pacchetto nella rete locale indirizzandolo con l’indirizzo di rete locale del PC destinatario (se non conosce tale indirizzo userà il protocollo ARP per trovarlo); se invece il risultato delle operazioni è differente significa che il computer destinatario non appartiene alla rete locale, e il pacchetto verrà trasmesso al gateway della rete locale affinché lo instradi verso la rete remota che contiene il computer destinatario.

Finché ci sono 8 bit per definire l’host ID in una sottorete /24, ci sono sei modi differenti in cui una rete può essere mascherata. Ognuno corrisponde ad una differente sottorete personalizzata, quando viene creata cambiando i bit allocati per la sottorete ID da 0 a 1

Consideriamo una sottorete /24 (ad esempio 192.168.45.0). Ci sono 8 bit nella host ID di default, che permettono di avere sei differenti opzioni di mascheratura (non è possibile utilizzare i bit 7 e 8 per definire la sottorete ID). Supponiamo di utilizzare 3 bit per definire la sottorete ID e lasciare gli altri 5 per l’host ID.

Funzionamento del subnetting

Una volta individuata la sottorete di appartenenza il protocollo IP effettuerà l’instradamento indiretto tramite la parte Net-Id dell’indirizzo IP per raggiungere quella sottorete, seguito poi dall’instradamento diretto tramite l’Host-Id per raggiungere l’host in quella sottorete tramite i protocolli della sottorete locale.

La maschera di sottorete permette al dispositivo di rete di ricercare il destinatario all’interno di un intervallo ben definito senza dover ricorrere all’uso di un router che funga da gateway con un’altra rete.

Per esempio se si vuole sapere o indicare da quanti host è composta la rete che utilizziamo occorre scrivere un indirizzo di 32 bit scritto sotto forma di 4 numeri decimali (8 bit ciascuno) separati da un punto.

Subnetting e Subnet Mask

Il subnet, frammentazione di una rete, avviene introducendo una subnet-mask. La subnet mask o netmask consente di stabilire l’intervallo di indirizzi IP all’interno di una sottorete. La subnet mask è costituita, come abbiamo visto per gli ip address, da una sequenza di 4 byte (32 bit) separati da un punto. Nel dettaglio passiamo ad esaminare i seguenti esempi di subnet mask.

Subnet mask di default classe A

notazione decimale 255.0.0.0
notazione binaria 11111111.00000000.00000000.00000000
Net id 8 bit
Host id 24 bit – Notazione CIDR: 255.0.0.0/8

Subnet mask di default classe B

notazione decimale 255.255.0.0
notazione binaria 11111111.11111111.00000000.00000000
Net id 16 bit
Host id 16 bit – Notazione CIDR: 255.255.0.0/16

Subnet mask di default classe C

notazione decimale 255.255.255.0
notazione binaria 11111111.11111111.11111111.00000000
Net id 24 bit
Host id 8 bit – Notazione CIDR: 255.255.255.0/24

Primo esempio di Subnetting e subnet mask

Supponiamo che il protocollo IP del nostro computer sia configurato come segue:

indirizzo IP: 192.168.32.97
maschera di sottorete: 255.255.255.224
ovvero 192.168.32.97/27

– richiediamo di connetterci all’indirizzo IP 192.168.32.130;

Prima di tutto trasformiamo in notazione binaria gli indirizzi IP e la maschera di sottorete:

192.168.032.097 = 11000000.10101000.00100000.01100001
192.168.032.130 = 11000000.10101000.00100000.10000010

255.255.255.224 = 11111111.11111111.11111111.11100000

Successivamente il livello IP calcolerà:

11000000.10101000.00100000.01100001 AND      (192.168.032.097)
11111111.11111111.11111111.11100000 =        (255.255.255.224)
-------------------------------------
11000000.10101000.00100000.01100000          (192.168.032.096)

Con lo stesso principio ripetiamo l’operazione con l’IP di destinazione:

11000000.10101000.00100000.10000010 AND      (192.168.032.130)
11111111.11111111.11111111.11100000 =        (255.255.255.224)
-------------------------------------
11000000.10101000.00100000.10000000          (192.168.032.128)

I risultati 192.168.32.96 e 192.168.32.128 indicano due sottoreti differenti, e quindi le macchine appartengono a sottoreti differenti.

Notiamo che con una maschera di sottorete 255.255.255.224 è possibile avere un intervallo di 30 indirizzi utili per sottorete, in quanto 2(32-27) – 2 = 25 – 2 = 30.

L’indirizzo 192.168.32.97 appartiene all’intervallo tra 192.168.32.96 e 192.168.32.127

L’indirizzo 192.168.32.130 appartiene all’intervallo tra 192.168.32.128 e 192.168.32.159

Se l’IP destinazione fosse stato 192.168.32.100, i due indirizzi avrebbero indicato macchine appartenenti alla medesima sottorete:

11000000.10101000.00100000.01100100 AND      (192.168.032.100)
11111111.11111111.11111111.11100000 =        (255.255.255.224)
-------------------------------------
11000000.10101000.00100000.01100000          (192.168.032.096)

Secondo esempio di Subnetting e subnet mask

Trovare la maschera di sottorete della sottorete 61.161.16.224/27

27 rappresenta il numero di bit 1 più significativi della maschera di sottorete

32-27 = 5 rappresenta il numero di bit 0 meno significativi della maschera di sottorete, quindi:

11111111.11111111.11111111.11100000  =  255.255.255.224

La maschera di sottorete è un numero, mentre la sottorete rappresenta un insieme di indirizzi IP. È quindi possibile, e del tutto normale, che sottoreti differenti (es 192.168.0.0/16, 132.144.0.0/16) abbiano la stessa maschera di sottorete (in questo caso: 255.255.0.0)