martedì 14 giugno 2011

Subnetting

Il processo di subnetting è la divisione di una singola rete in gruppi di computer che hanno in comune nell’indirizzo IP un determinato prefisso di routing. L’operazione di Subnetting rompe una rete in piccoli intervalli, che possono utilizzare lo spazio di indirizzi esistenti in modo più efficiente, e, quando fisicamente separati, possono impedire eccessivi tassi di collisione dei pacchetti Ethernet in una rete più ampia. Prima di introdurre il subnetting è necessario sapersi districare tra le conversione binario-decimale, di seguito un grafico che può essere d'aiuto per la conversione di un qualunque indirizzo IP in binario:



Per esempio proviamo a convertire il seguente IP binario in decimale:

10101100000100000000010000010100

Si suddivide la sequenza in otteti aggiungendo un punto per ogni ottetto:

10101100.00010000.00000100.00010100

Adesso si converte ogni ottetto usando la figura sopra, cioè:

10101100 = 1*128 + 0*64 + 1*32 + 0*16 + 1*8 + 1*4 + 0*2 + 0*1 = 172
00010000 = 0*128 + 0*64 + 0*32 + 1*16 + 0*8 + 0*4 + 0*2 + 0*1 = 16
00000100 = ..... = 4
00010100 = ..... = 20

Abbiamo quindi ottenuto l'indirizzo IP decimale: 172.16.4.20. A volte però è necessario anche l'operazione inversa, cioè dato un IP decimale convertirlo in binario. Può essere necessario per esempio per fare un AND con la subnet mask per capire a quale network un IP appartiene (verrà trattato più avanti). Per convertire un IP decimale (per esempio 172.16.4.20) in binario si può seguire la semplice strada dei calcoli oppure utilizzare il metodo descritto nel grafico:


Esempio, conversione di 172 in binario:


Se invece si preferisce seguire la strada dei calcoli è necessario sommare i valori da 1 a 128 (impostando a 1 oppure 0 in corrispondeza del valore decimale) in modo tale che il risultato totale fornisca il numero desiderato:

172 = 1*128 + 0*64 + 1*32 + 0*16 + 1*8 + 1*4 + 0*2 + 0*1 = 128+32+8+4
16 = 0*128 + 0*64 + 0*32 + 1*16 + 0*8 + 0*4 + 0*2 + 0*1 = 16
4 = 0*128 + 0*64 + 0*32 + 0*16 + 0*8 + 1*4 + 0*2 + 0*1 = 4
20 = 0*128 + 0*64 + 0*32 + 1*16 + 0*8 + 1*4 + 0*2 + 0*1 = 16+4

Adesso introduciamo il concetto di network prefix, network address, host range e broadcast address.

Network Prefixes

An important question is: How do we know how many bits represent the network portion and how many bits represent the host portion? When we express an IPv4 network address, we add a prefix length to the network address. The prefix length is the number of bits in the address that gives us the network portion. For example, in 172.16.4.0 /24, the /24 is the prefix length - it tells us that the first 24 bits are the network address. This leaves the remaining 8 bits, the last octet, as the host portion. Later in this chapter, we will learn more about another entity that is used to specify the network portion of an IPv4 address to the network devices. It is called the subnet mask. The subnet mask consists of 32 bits, just as the address does, and uses 1s and 0s to indicate which bits of the address are network bits and which bits are host bits.



Cerchiamo di capire come sono stati calcolati network address, broadcast address e host range:


Per esempio per l'indirizzo 172.16.4.0/24 il prefisso /24 significa che i primi 24 bit sono riservati per la parte network (e quindo sono "bloccati") mentre i restanti 8 bit sono dedicati agli host, infatti:


Ma da questi 256 è necessario togliere il primo indirizzo (172.16.4.0) che rappresenta l'indirizzo di network, e l'ultimo: 172.16.4.255 (ottenuto impostando a 1 tutti gli 8 bit riservati per gli host) che rappresenta l'indirizzo di broadcast. Quindi la formula corretta per il calcolo del numero di host disponibili è:

dove con n=8 otterremo 254 hosts, mentre l'intervallo valido è: 172.16.4.1 - 172.16.4.254.

Proviamo a fare il secondo indirizzo: 172.16.4.0/25. Questa volta abbiamo 25 bit riservati per la parte di network, quindi:


L'indirizzo di broadcast sarà sempre dato impostando a 1 tutti i bit appartenenti alla parte host (sono gli ultimi 7 bit, perchè 25 bit sono stati presi dalla parte network... 32 bit sono il totale.. quindi 32-25=7), quindi avremo (ricordando che il totale dell'otteto, in decimale, è 255 composto da: 128+64+32+16+8+4+2+1):

01111111 = 255-128 = 127

I primi 25 bit bloccano i primi 3 ottetti quindi l'indirizzo di broadcast sarà: 172.16.4.127. L'intervallo valido di host disponibili per questa rete è allora: 172.16.4.1 - 172.16.4.126 (ricordando sempre che il 1° e l'ultimo indirizzo IP non vengono presi..), e il numero di host disponibili è dato sempre dalla formula citata precedentemente: 126 hosts.

Altro esempio:


In questo caso i primi 19 bit sono riservati per la parte network, quindi nel terzo ottetto avremo:

143 = 10001111 -> 100|01111 (perchè è una /19)

Per trovare l'indirizzo di broadcast è sufficiente impostare a 1 tutti i bit relativi alla parte host (32-19=13 bit) ovvero tutti quelli DOPO la sbarretta che separa i bit 100 da 01111 (non dimenticandosi del quarto ottetto e ricordandosi che i primi due ottetti sono "bloccati"):

184.171.100|01111.01010000 -> 100|11111.11111111

In decimale avremo:

184.171.159.255 (broadcast)

Per quanto riguarda invece l'indirizzo di network bisogna porre tutti i bit DOPO la sbarra questa volta a zero e si ottiene:

184.171.100|01111.01010000 -> 100|00000.00000000

In decimale avremo:

184.171.128.0 (network)

Il numero di host è dato sempre dalla solita formula (con n = 13) e l'host range sarà: 
184.171.128.1 - 184.171.159.254

Private Address

Although most IPv4 host addresses are public addresses designated for use in networks that are accessible on the Internet, there are blocks of addresses that are used in networks that require limited or no Internet access. These addresses are called private addresses.

The private address blocks are:

10.0.0.0 to 10.255.255.255 (10.0.0.0 /8)
172.16.0.0 to 172.31.255.255 (172.16.0.0 /12)
192.168.0.0 to 192.168.255.255 (192.168.0.0 /16)

Private space address blocks, as shown in the figure, are set aside for use in private networks. The use of these addresses need not be unique among outside networks. Hosts that do not require access to the Internet at large may make unrestricted use of private addresses. However, the internal networks still must design network address schemes to ensure that the hosts in the private networks use IP addresses that are unique within their networking environment.

Special IPv4 Addresses

Default Route

Also presented earlier, we represent the IPv4 default route as 0.0.0.0. The default route is used as a "catch all" route when a more specific route is not available. The use of this address also reserves all addresses in the 0.0.0.0 - 0.255.255.255 (0.0.0.0 /8) address block. 

Loopback

One such reserved address is the IPv4 loopback address 127.0.0.1. The loopback is a special address that hosts use to direct traffic to themselves. The loopback address creates a shortcut method for TCP/IP applications and services that run on the same device to communicate with one another. By using the loopback address instead of the assigned IPv4 host address, two services on the same host can bypass the lower layers of the TCP/IP stack. You can also ping the loopback address to test the configuration of TCP/IP on the local host. 

Although only the single 127.0.0.1 address is used, addresses 127.0.0.0 to 127.255.255.255 are reserved. Any address within this block will loop back within the local host. No address within this block should ever appear on any network.

Link-Local Addresses

IPv4 addresses in the address block 169.254.0.0 to 169.254.255.255 (169.254.0.0 /16) are designated as link-local addresses. These addresses can be automatically assigned to the local host by the operating system in environments where no IP configuration is available. These might be used in a small peer-to-peer network or for a host that could not automatically obtain an address from a Dynamic Host Configuration Protocol (DHCP) server.

Communication using IPv4 link-local addresses is only suitable for communication with other devices connected to the same network, as shown in the figure. A host must not send a packet with an IPv4 link-local destination address to any router for forwarding and should set the IPv4 TTL for these packets to 1. 

Legacy IPv4 Addressing


The AND Operation

ANDing is one of three basic binary operations used in digital logic. The other two are OR and NOT. While all three are used in data networks, AND is used in determining the network address. Logical AND is the comparison of two bits that yields the following results:

1 AND 1 = 1

1 AND 0 = 0

0 AND 1 = 0

0 AND 0 = 0

This ANDing between the host address and subnet mask is performed by devices in a data network for various reasons. 

Routers use ANDing to determine an acceptable route for an incoming packet. The router checks the destination address and attempts to associate this address with a next hop. As a packet arrives at a router, the router performs ANDing on the IP destination address in the incoming packet and with the subnet mask of potential routes. This yields a network address that is compared to the route from the routing table whose subnet mask was used. 

An originating host must determine if a packet should be sent directly to a host in the local network or be directed to the gateway. To make this determination, a host must first know its own network address. 

A host extracts its network address by ANDing its address with its subnet mask. A logical AND is also performed by an originating host between the destination address of the packet and the subnet mask of the this host. This yields the network address of the destination. If this network address matches the network address of the local host, the packet is sent directly to the destination host. If the two network addresses do not match, the packet is sent to the gateway. 

Esempio:

Un dispositivo ha indirizzo IP 192.0.0.1/16 e si vuole determinare a quale network appartiene:


Facendo l'AND logico si scopre che l'indirizzo IP appartiene alla network: 192.0.0.0/16. I passi da seguire sono:
  1. Convertire l'IP 192.0.0.1 in binario
  2. Convertire la subnet mask /16 in binario
  3. Eseguire l'AND logico tra 192.0.0.1 e /16 (entrambi in binario)
  4. Il risultato dell'AND fornirà l'indirizzo di network a cui appartiene l'IP
Per esempio l'IP 172.16.132.70/20 appartiene alla network 172.16.128.0/20

Basic Subnetting

Subnetting allows for creating multiple logical networks from a single address block. We create the subnets by using one or more of the host bits as network bits. This is done by extending the mask to borrow some of the bits from the host portion of the address to create additional network bits. The more host bits used, the more subnets that can be defined. For each bit borrowed, we double the number of subnetworks available. For example, if we borrow 1 bit, we can define 2 subnets. If we borrow 2 bits, we can have 4 subnets. However, with each bit we borrow, fewer host addresses are available per subnet.

Given an address block of 192.168.1.0 /24, we will create two subnets. We borrow one bit from the host portion by using a subnet mask of 255.255.255.128, instead of the original 255.255.255.0 mask. The most significant bit in the last octet is used to distinguish between the two subnets. For one of the subnets, this bit is a "0" and for the other subnet this bit is a "1". 

Formula for calculating subnets

Use this formula to calculate the number of subnets: 

2^n where n = the number of bits borrowed

In this example, the calculation looks like this:

2^1 = 2 subnets

To calculate the number of hosts per network, we use the formula of 2^n - 2 where n = the number of bits left for hosts.

Applying this formula, (2^7 - 2 = 126) shows that each of these subnets can have 126 hosts.

For each subnet, examine the last octet in binary. The values in these octets for the two networks are:

Subnet 1: 00000000 = 0

Subnet 2: 10000000 = 128




Example with 4 subnets

Next, consider an internetwork that requires three subnets. Again we start with the same 192.168.1.0 /24 address block. Borrowing a single bit would only provide two subnets. To provide more networks, we change the subnet mask to 255.255.255.192 and borrow two bits. This will provide four subnets. 

Calculate the subnet with this formula: 

2^2 = 4 subnets

The number of hosts

To calculate the number of hosts, begin by examining the last octet. Notice these subnets.

Subnet 0: 0 = 00000000

Subnet 1: 64 = 01000000

Subnet 2: 128 = 10000000

Subnet 3: 192 = 11000000

Apply the host calculation formula.

2^6 - 2 = 62 hosts per subnet


Proviamo adesso a fare un esempio completo di subnetting ipotizzando una situazione reale.

Esempio:

Consider the example of a corporate internetwork that needs to accommodate 800 hosts in its four locations. To accommodate 800 hosts in the company's four locations, we use binary arithmetic to allocate a /22 block (2^10-2=1022 is major than 800...OK). Questo significa che 32 - 10 = 22 bit sono riservati per la network e i restanti 10 bit per gli hosts. Choose a block of addresses to accomodate the hosts: 172.16.0.0/22.




Nel gruppo Corporate HQ si vogliono 500 hosts, nel gruppo Sales Office 200 hosts, nel gruppo HR Office 50 hosts e infine nel gruppo Legal Office 20 hosts. Si parte SEMPRE dal gruppo più numeroso, vale a dire dal Corporate HQ.


172.16.0.0/22


500 hosts possono essere contenuti in una /23 in quanto:

2^9-2 = 510 hosts

Quindi la network di partenza sarà: 172.16.0.0/23. I primi 2 ottetti sono bloccati, mentre per quanto concerne il terzo ottetto avremo:

00000000 -> 0000000|0

L'indirizzo di broadcast sarà ottenuto impostando tutti i bit DOPO la sbarra a 1 (senza dimenticare anche il 4° ottetto)

172.16.0000000|1.11111111 -> 172.16.1.255


Quindi avremo per Corporate HQ:


Network address: 172.16.0.0
Host range: 172.16.0.1 - 172.16.1.254
Broadcast address: 172.16.1.255
Subnet mask: 255.255.254.0 oppure /23

Passiamo adesso al gruppo Sales Office (200 hosts). La network di partenza sarà:

172.16.2.0/23

Ma per contenere 200 hosts è sufficiente anche una /24 in quanto:

2^8-2 = 254 hosts


Quindi la network di partenza sarà: 172.16.2.0/24. Questa volta i primi 3 ottetti sono bloccati, mentre per quanto concerne il quarto ottetto avremo:

00000000 -> |00000000

L'indirizzo di broadcast sarà ottenuto impostando tutti i bit DOPO la sbarra a 1

172.16.2.11111111 -> 172.16.2.255

Quindi avremo per Sales Office:

Network address: 172.16.2.0
Host range: 172.16.2.1 - 172.16.2.254
Broadcast address: 172.16.2.255
Subnet mask: 255.255.255.0 oppure /24



Passiamo adesso al gruppo HR Office (50 hosts). La network di partenza sarà:

172.16.3.0/24

Ma per contenere 50 hosts è sufficiente anche una /26 in quanto:

2^6-2 = 62 hosts


Quindi la network di partenza sarà: 172.16.3.0/26. I primi 3 ottetti sono bloccati, mentre per quanto concerne il quarto ottetto avremo:

00000000 -> 00|000000

L'indirizzo di broadcast sarà ottenuto impostando tutti i bit DOPO la sbarra a 1

172.16.3.00111111 -> 172.16.3.63

Quindi avremo per HR Office:

Network address: 172.16.3.0
Host range: 172.16.3.1 - 172.16.3.62
Broadcast address: 172.16.3.63
Subnet mask: 255.255.255.192 oppure /26

Infine per il gruppo Legal Office (20 hosts). La network di partenza sarà:

172.16.3.64/26

Ma per contenere 20 hosts è sufficiente anche una /27 in quanto:

2^5-2 = 30 hosts


Quindi la network di partenza sarà: 172.16.3.64/27. I primi 3 ottetti sono bloccati, mentre per quanto concerne il quarto ottetto avremo:

01000000 -> 010|00000

L'indirizzo di broadcast sarà ottenuto impostando tutti i bit DOPO la sbarra a 1

172.16.3.01011111 -> 172.16.3.95

Quindi avremo per Legal Office:

Network address: 172.16.3.64
Host range: 172.16.3.65 - 172.16.3.94
Broadcast address: 172.16.3.95
Subnet mask: 255.255.224.0 oppure /27

Adesso restano solo le connessioni WAN1, WAN2 e WAN3 cioè l'equivalente di 6 hosts. La network di partenza è: 

172.16.3.94/27

Dato che ci servono 2 hosts per subnet (abbiamo bisogno di 3 subnet) abbiamo la necessita di usare almeno 2 bit lato host (2^2-2) quindi ci restano 3 bit lato network (perchè abbiamo una /27 il totale è /32 ma 2 ci servono per gli host quindi: 32 - 27 (già usati) - 2 (per gli host delle WAN) = 3 bit per network), quindi la network di partenza sarà: 

172.16.3.96/30

172.16.3.97 e 172.16.3.98        (WAN1)
172.16.3.101 e 172.16.3.102    (WAN2)
172.16.3.105 e 172.16.3.106    (WAN3)


Nessun commento:

Posta un commento