viernes, 27 de septiembre de 2013

Subnetting para dummies

Introducción

Este artículo intenta complementar las bases de creación de subredes con direcciones IP IPV4. En el ejemplo, se toman en cuenta dos casos particulares, aquel en el que se precisa calcular las subredes simplemente sabiendo cuántas subredes se quieren armar y aquel en el que se sabe cuántas subredes y cuántos hosts por subred se quieren armar.
Las bibilografías suelen decir que la primera dirección de red/subred (la que comienza con todos dígitos de valor 0) y la última (la que finaliza con todos dígitos de valor 1) suelen estar reservadas para referirse a la red/subred misma y al broadcast respectivamente, dato que es útil a la hora de elegir la primera y última dirección de subred y/o host. Por ese motivo, de acuerdo a la filosofía utilizada por el lector, tomar el valor que parezca más adecuado para cada caso, pero el método de cálculo de las direcciones no cambia.

Contenido


Suponiendo que tengo la siguiente dirección IP: 16.0.0.0/8 y que quiero formar 500 subredes para luego averiguar cuántos hosts puede tener cada subred.

Hay varias cosas que debo tener en cuenta:

En primer lugar esta es una IP sin clase, no es necesario reconocer de que clase es porque se genera de forma dinámica, esto lo sé porque la dirección tiene un “/n”.
En segundo lugar el /8 me indica la cantidad de dígitos binarios que están siendo utilizados por la IP para la dirección de la red, en este caso son 8 dígitos binarios, por lo cual los primeros 8 bits están ocupados y no pueden utilizarse para crear subredes.
Entonces 16.0.0.0/8 es la dirección de red y no es bajo ninguna circunstancia una dirección de subred.
Bueno, pero ¿cómo evoluciona la cosa?

a) Si tengo que tomar 500 subredes, busco la potencia de dos más cercana que contenga al número 500. QUE LO CONTENGA, es decir, que siempre es preferible que sea mayor, pero NUNCA menor que 500. Esto lo logro haciendo logaritmos o intuitivamente, de forma que 2 a la x=número mayor que la cantidad de subredes. En este caso, 2 a la 9 =512 y con eso es suficiente para formar 500 subredes, por lo tanto, si lo vemos en binario es lo siguiente:

00010000.00000000.00000000.00000000 es la dirección de la red (16.0.0.0).
11111111.00000000.00000000.00000000 es la máscara de red (255.0.0.0).

La máscara de red son 8 dígitos de valor 1 consecutivos porque eso es lo que nos está indicando el /8 de la dirección de red, esos números están ocupados y nuestros dígitos binarios de subred se toman a partir de ahí. Por lo tanto, para formar la máscara de subred, tomo los siguientes 9 dígitos binarios a continuación del último 1 de la máscara de red y los relleno con más dígitos de valor 1 para indicar que están por ser utilizados (La cantidad 9 deriva de la potencia de dos calculada anteriormente para formar 500 subredes), quedando así:

11111111.11111111.10000000.00000000 que es la máscara de subred (255.255.128.0).

(En verde están los 9 dígitos de valor 1 que agregamos entre el segundo y tercer octeto de la dirección de red).

¿Y cómo se traduce esto a direcciones IP?

En primer lugar, la dirección IP de la red pasa a ser 16.0.0.0/17 (Le agregamos los 9 dígitos binarios dentro de su rango de dígitos usados).
En segundo lugar contemplamos que cada octeto de la dirección tiene 8 dígitos binarios y por ende sólo puede haber 2 a la 8 combinaciones posibles de 0's y 1's en cada octeto, por lo cuál cada octeto irá desde el 00000000 hasta el 11111111.
En este caso en particular el primer octeto no lo miramos, porque nos indica en que red estamos y siempre tendrá el mismo valor, el segundo octeto, está todo marcado con 1's en la máscara de subred, lo que indica que lo utilizaremos todo y por ende se podrán hacer con él combinaciones completas desde 00000000 hasta 11111111 dando valores decimales desde 0 hasta 255. Por otro lado, en el tercer octeto la máscara de subred indica que sólo utilizaremos un dígito binario, un dígito binario da combinaciones de 2 a la 1, es decir 2 combinaciones posibles, por lo cual tendremos los valores 00000000 y 10000000 porque sólo podemos combinar el primer dígito del octeto, dando valores decimales que solo pueden tomar el 0 o el 128.

Entonces las direcciones IP de subred serían:

16[Dirección de red].0[Dirección de subred].0[Dirección de subred].0[Posibles direcciones host] 
(16.0.0.0) Dado que esta es la dirección de la red en sí, no la tendremos en cuenta, y pasamos al siguiente valor:
16.0.128.0-> primera dirección de subred.
16.1.0.0
16.1.128.0
16.2.0.0
16.2.128.0
.
.
.

Y sucesivamente...


Ahora, ¿cuántos hosts puede tener cada una de estas subredes?
Si vamos de nuevo al binario:

11111111.11111111.10000000.00000000

Se puede ver marcado en verde que quedan 15 posibles lugares a utilizar para formar hosts para esas subredes, por lo cual se pueden armar 2 a la 15= 32768 hosts por cada subred.


¿Qué pasa si nos preguntan a la inversa? Qué tal si nos piden 500 subredes de 60 hosts cada una?

Acá la cosa es distinta porque nosotros no estamos interesados en que cada subred tenga mucho más que 80 hosts y por ende el problema debería plantearse diferente.
Podemos decir que de la misma dirección IP (16.0.0.0/8) queremos armar esos requerimientos de hosts y subredes. Igual que antes sabemos que los primeros 8 dígitos están ocupados por las direcciones de red, por ende, nos quedan 3 octetos para jugar.

COMENZAMOS SIEMPRE POR LOS HOSTS, buscando la potencia de 2 que se acerque a 60 lo más posible y que CONTENGA a ese número. En este caso esa potencia es 2 a la 6=64 por lo cual, tenemos que tomar los últimos 6 dígitos binarios de la dirección IP, rellenando con 1's todo lo que no va a ser usado como dirección de host, para formar la máscara de subred.

11111111.11111111.11111111.11000000 máscara de subred (255.255.255.192)

Por lo tanto, los 1s en rojo son ls correspondientes al /8 de la dirección de red. Los 1's en verde son los correspondientes a las direcciones de subred, todos los verdes pueden usarse para formar subredes, por más que no nos hagan falta tantas. Los 0s en violeta son los correspondientes a las direcciones de host, solamente puede haber 64 direcciones de host por cada subred.

Así entonces por cada subred los hosts iran desde 11000000 hasta 11111111 en el cuarto octeto, es decir, desde el número decimal 192 hasta el 255.

Ahora nuestra dirección IP es 16.0.0.0/18.

Después necesitamos saber cuáles son la primera y última dirección de red desde el primer host en la primer subred de nuestras 500 subredes hasta el último host de la última subred. Para eso necesitamos saber la ptencia de 2 que contenga al número 500, en este caso, 2 a la 9=512, como ya habíamos visto en el otro ejercicio. Por lo tanto, la dirección de subred estará dad por los 9 dígitos binarios siguientes a las direcciones de host, tomados desde el dígito de menor peso.

11111111.11111111.11111111.11000000

En verde se pueden ver marcados los dígitos de la máscara que vamos a usar, por lo cuál, las direcciones de subred van a ir en el tercer octeto, desde 10000000 hasta 11111111 y en el cuarto octeto desde 00000000 hasta 11000000. Es decir desde los números decimales 128 a 255 en el tercer octeto y desde los números decimales 0 a 192 en el cuarto octeto. A su vez por cada número en el tercer cteto habrá 2 a la 2=4 combinaciones en el cuarto octeto, pero todas esas combinaciones en conjunto formarán 512 subredes.

Por lo cuál:
La primer dirección de subred será 16.0.128.0 (00010000.00000000.10000000.00000000)
La segunda será 16.0.128.64 (00010000.00000000.10000000.01000000)
luego 16.0.128.128 (00010000.00000000.10000000.10000000)
y por último 16.0.128.192 (00010000.00000000.10000000.11000000)


Entre cada una de esas subredes habrá 64 hosts que irán en orden desde el último decimal, por ejemplo, el primer host de la primer subred es la subred en sí 16.0.128.0 y el segundo será 16.0.128.1 y así hasta 16.0.128.64.
Después desde 16.0.128.128 hasta 16.0.128.192, etc.

Por último, las últimas 4 direcciones de subred son:
16.0.255.0 (00010000.00000000.11111111.00000000)
16.0.255.64 (00010000.00000000.11111111.01000000)
16.0.255.128 (00010000.00000000.11111111.10000000)
16.0.255.192 (00010000.00000000.11111111.11000000)  Esta es la última dirección de subred.


Si sumamos los 64 hosts de la última dirección de subred (16.0.255.192) obtenemos la última dirección de host de la última de las 512 subredes, que será 16.0.255.255 (00010000.00000000.11111111.11111111) (En rojo marcado el último host).

Conclusión

Siempre es importante saber qué es lo que se está buscando, porque la forma de arrancar los cálculos varía de acuerdo a la información con la que se cuenta.
Ante cualquier consulta o comentario sobre este post, no dudes en comentar más abajo. 

No hay comentarios:

Publicar un comentario