giovedì 28 aprile 2016

IP: assegnazione network number

ulla scelta del range
giustamente lei ha detto che prima si maggiora il numero con la potenza di 2 successiva poi li si somma e poi si cerca la potenza di 2 successiva.
Quindi nel secondo esempio 520 host da una parte 270 dall'altra ci servivano 2048


Ok chiaro, ma fare una divisione maggiore di 2 e poi associare più indirizzi alla network?
esempio prendo 1024 indirizzi, li divido in 8 blocchi 
i primi 5 blocchi li uso per la network da 520 e gli altri 3 li uso per la network da 270
è una pratica sbagliata?

E' una pratica sbagliata.

Il motivo è questo: quando un nodo si chiede se un indirizzo IP di destinazione appartiene alla propria network o a un'altra network, usa un certo algoritmo (calcolo dell'espressione booleana my-IP AND my-SM == IP-dst AND my-SM). Questo algoritmo assume che ogni network usi un range di indirizzi la cui lunghezza è una potenza di 2.

Quindi, se ad una network assegno un range la cui lunghezza non è una potenza di 2, allora l'algoritmo non funziona: il risultato dell'espressione booleana a volte è una risposta corretta per la domanda "IP-dst appartiene alla mia network?" e a volte non è una risposta corretta.

Esempio.

Supponiamo di avere assegnato i range come dice lei: i "primi 5 blocchi" ad una network N1 e "gli altri 3 blocchi" ad un'altra network N2.

Consideriamo un nodo X1 che appartiene a N1 e che deve inviare un pacchetto verso un indirizzo IP2 appartenente al "sesto blocco" (o al settimo o all'ottavo).

Il nodo N1 si chiede se IP2 appartiene alla propria network o a una network diversa. Per rispondere a questa domanda calcola l'espressione booleana (IP2 AND SM-N1) == (IP1 AND SM-N1)..

Il procedimento di AND logico tra subnet mask ed indirizzi IP identifica sempre range la cui lunghezza è una potenza di 2. Cioè, il range di indirizzi che messi in AND con una subnet mask generano un risultato identico ha sempre una lunghezza potenza di 2 (per definizione di subnet mask). 

Questo significa che (IP2 AND SM-N1) è certamente uguale a (IP1 AND SM-N1), quindi X1 ritiene che IP2 appartenga alla propria network. Quindi X1 invia una ARP request per trovare l'indirizzo Ethernet del nodo con indirizzo IP IP2 e non risponderà nessuno (perché IP2 NON appartiene a N1).

Assegnando gli indirizzi come dice lei, avremmo bisogno di un algoritmo che identifica range la cui lunghezza è un multiplo di una potenza di 2 (in questo caso 5 * 2^10). Un algoritmo del genere potrebbe anche esistere, ma il protocollo IP non funziona in questo modo.