Subredes (I)
por Luciano Moreno
Subredes.-
Cuando se trabaja con una
red pequeña, con pocos host conectados, el adminitrador de red puede fácilmente
configurar el rango de direcciones IP usado para conseguir un funcionamiento
óptimo del sistema. Pero conforme la red va creciendo se hace necesaria una
división en partes de la misma.
En primer lugar, porque
conforme se va extendiendo la red va aumentando de forma pareja el dominio de
colisión, llegando un momento en el que el rendimiento de la red se ve afectado
seriamente. Esto se puede mitigar segmentando la red, dividiendo la misma en
una serie de segmentos significativos, de tal forma que mediante switches
podremos limitar estos dominios de colisión, enviando las tramas tan sólo al
segmento en el que se encuentra el host destino.
En segundo lugar, y aunque
segmentemos la red, conforme aumenta el número de host aumenta también el
número de transmisiones de broadcast (cuando un equipo origen envía datos a
todos los dispositivos de la red), llegando un momento que dicho tráfico puede
congestionar toda la red de forma inaceptable, al consumir un ancho de banda
excesivo. Esto es así porque todos los host están enviando de forma constante
peticiones de este tipo: peticiones ARP, envíos RIP, peticiones DNS, etc.
Para solventar este hecho
es preciso dividir la red primaria en una serie de subredes, de tal forma que
cada una de ellas va a funcionar luego, a nivel de envío y recepción de
paquetes, como una red individual, aunque todas pertenezcan a la misma red
principal (y por lo tanto, al mismo dominio). De esta forma, aunque la red en
su conjunto tendrá una dirección IP única, administrativamente, a nivel
administrativo podremos considerar subredes bien diferenciadas, consiguiendo
con ello un control del tráfico de la red y una limitación de las peticiones de
broadcast que la atraviesan.
En las explicaciones
siguientes vamos a considerar una red pública, es decir, formada por host con
direcciones IP públicas, que pueden ser vistas por todos las máquinas conectadas
a Internet. Pero el desarrollo es igualmente válido para redes privadas, por lo
que su aplicación práctica es válida para toda red corporativa. Y para hacer
más claro el desarrollo, vamos a parir de una red con dirección IP real.
Vamos a tomar como ejemplo
una red de clase C, teniendo claro que lo que expliquemos va a ser útil para
cualquier tipo de red, séa de clase A, B o C. Entonces, tenemos nuestra red,
con dirección IP 210.25.2.0,
por lo que tenemos para asignar a los host de la misma todas las direcciones IP
del rango 210.25.2.1 al 210.25.2.254, ya que la dirección 210.25.2.0 será la de
la propia red y la 210.25.2.255 será la dirección de broadcast general.
Si expresamos nuestra
dirección de red en binario tendremos:
210.25.2.0 = 11010010.00011001.00000010.00000000
Con lo que tenemos 24 bits
para identificar la red (en granate) y 8 bits para identificar los host (en
azul).
La máscara de red será:
11111111.11111111.11111111.00000000
= 255.255.255.0
Para crear subredes a
partir de una dirección IP de red padre, la idea es "robar" bits a
los host, pasándolos a los de identificación de red. ¿Cuántos?. Bueno, depende
de las subredes que queramos obtener, teniendo en cuenta que cuántas más bits
robemos, más subredes obtendremos, pero con menos host cada una. Por lo tanto,
el número de bits a robar depende de las necesidades de funcionamiento de la
red final.
Máscara
de subred.-
Otro elemento que deberemos
calcular para cada una de las subredes es su máscara de subred, concepto
análogo al de máscara de red en redes generales, y que va a ser la herramienta
que utilicen luego los routers para dirigir correctamente los paquetes que
circulen entre las diferentes subredes.
Para obtener la máscara de
subred basta con presentar la dirección propia de la subred en binario, poner a
1 todos los bits que dejemos para la parte de red (incluyendo los robados a la
porción de host), y poner a 0 todos los bits que queden para los host. Por
último, pasaremos la dirección binaria resultante a formato decimal separado por
puntos, y ésa será la máscara de la subred.
Por ejemplo, si tenemos la
dirección de clase B:
150.10.x.x = 10010110.00001010.hhhhhhhh.hhhhhhhh
y le quitamos 4 bits a la
porción de host para crear subredes:
10010110.00001010.rrrrhhhh.hhhhhhhh
la máscara de subred será:
11111111.11111111.11110000.000000
que pasada a decimal nos
queda:
255.255.240.0
Las máscaras de subred, al
igual que ocurre con las máscaras de red, son muy importantes, resultando
imprescindibles para el trabajo de enrutamiento de los routers.
Creando
las subredes.-
Vamos a partir pués de
nuestra dirección IP de la red padre y vamos a ir quitando bist sucesivos a la
porción de host, calculando en cada caso las subredes obtenidas, sus
direcciones IP, sus máscaras de subred y el rendimiento de la partición
obtenida.
Para ello, pasamos la
dirección IP a binario, cogemos los bits robados a la porción de host y vamos
variando de todas las formas posibles:
0000, 0001, 0010, 0011,
0100, 0101, 0110, 0111
en el caso de 4 bits, y
luego calculamos las IP de los host correspondientes a cada una de las
variaciones hallando los márgenes de las mismas, ya que estarán entre el valos
mínimo y el máximo al variar los bits de la porción de host entre todos 0
(dirección de subred) y todos 1 (dirección de broadcast correspondiente).
Robo de 1 bit:
Si quitamos un sólo bit a
la parte de host:
parte de red: 11010010.00011001.00000010.r
parte de host: hhhhhhh
Permutando los bits de host
robados para obtener las subredes obtenidas:
21=2
Es decir, 2 subredes (11010010.00011001.00000010.0 y 11010010.00011001.00000010.1 ). Pero resulta que no podemos
disponer de la subred que toma el 0, ya que entonces contendría
Como
regla general, el número de subredes obtenidas al quitar n bits a la porción de
host será 22-2, y el número de host disponible en cada subred será 2(8-n)-2,
ya que toda subred debe tener su propia dirección de red y su propia dirección
de broadcast.
Si vamos aumentando el
número de bits robados a la proción de host obtenemos:
Robo de 2 bits:
parte de red: 11010010.00011001.00000010.rr
parte de host: hhhhhh
número de subredes válidas:
22-2=2
número de host válidos por
subred: 26-2=62
Las direcciones de subred
las obtenemos haciendo las combinaciones posibles con los 2 bits robados:
11010010.00011001.00000010. 00
11010010.00011001.00000010.01000000 a 11010010.00011001.00000010.01111111 = 210.25.2.64 a 210.25.2.127
Subred válida, con
dirección de red=210.25.2.64, broadcast=210.25.2.127 y 62 direcciones IP para
host, que son las comprendidas entre las dos anteriores (de la 210.25.2.65 a la
210.25.2.126).
Máscara de subred:
11111111.11111111.11111111.11000000
= 255.255.255.192
11010010.00011001.00000010.10
Subred válida, con
dirección de red=210.25.2.128, broadcast=210.25.2.191 y 62 direcciones IP para
host, que son las comprendidas entre las dos anteriores (de la 210.25.2.129 a
la 210.25.2.190).
Máscara de subred:
11111111.11111111.11111111.11000000
= 255.255.255.192
11010010.00011001.00000010.11
Resumiendo: obtenemos dos
subredes válidas, con 62 direcciones IP válidas cada una, es decir,
desperdiciamos:
(256-2)-(62+62)=130
direcciones IP para host,
con lo que el rendimiento de la partición en subredes será:
R=(IP útiles subredes)/(IP
útiles totales)=124/254=0.488=48%
Como véis, la máscara de
subred es la misma para todas las subredes obtenidas robando 2 bist a la
porción de host, y lo mismo ocurre para el robo de otro número de bits.
Robo de 3 bits:
parte de red: 11010010.00011001.00000010.rrr
parte de host:
número de subredes válidas:
23-2=6
número de host válidos por
subred: 25-2=30
Las direcciones de subred
las obtenemos haciendo las combinaciones posibles con los 3 bits robados:
11010010.00011001.00000010.
11010010.00011001.00000010.001
Subred válida, con
dirección de red=210.25.2.32, broadcast=210.25.2.63 y 30 direcciones IP para
host, que son las comprendidas entre las dos anteriores (de la 210.25.2.33 a la
210.25.2.62).
11010010.00011001.00000010.010
Subred válida, con
dirección de red=210.25.2.64, broadcast=210.25.2.95 y 30 direcciones IP para
host, que son las comprendidas entre las dos anteriores (de la 210.25.2.65 a la
210.25.2.94).
11010010.00011001.00000010.011
Subred válida, con
dirección de red=210.25.2.96, broadcast=210.25.2.127 y 30 direcciones IP para
host, que son las comprendidas entre las dos anteriores (de la 210.25.2.97 a la
210.25.2.126).
11010010.00011001.00000010.100
Subred válida, con
dirección de red=210.25.2.128, broadcast=210.25.2.159 y 30 direcciones IP para
host, que son las comprendidas entre las dos anteriores (de la 210.25.2.129 a
la 210.25.2.158).
11010010.00011001.00000010.101
Subred válida, con
dirección de red=210.25.2.160, broadcast=210.25.2.191 y 30 direcciones IP para
host, que son las comprendidas entre las dos anteriores (de la 210.25.2.161 a
la 210.25.2.190).
11010010.00011001.00000010.110
Subred válida, con
dirección de red=210.25.2.192, broadcast=210.25.2.223 y 30 direcciones IP para
host, que son las comprendidas entre las dos anteriores (de la 210.25.2.193 a
la 210.25.2.222).
11010010.00011001.00000010.
Máscara de subred para
todas ellas:
11111111.11111111.11111111.11100000
= 255.255.255.224
Resumiendo: obtenemos6
subredes válidas, con30 direcciones IP válidas para host cada una, es decir,
desperdiciamos:
(256-2)-(30+30+30+30+30+30)=74
direcciones IP para host,
con lo que el rendimiento de la partición en subredes será:
R=(IP útiles subredes)/(IP
útiles totales)=180/254=0.708=70.8%
Y lo mismo hacemos en el caso
de robar 4, 5 y 6 bits (7 no podemos robar, ya que entoneces las subredes
resultantes sólo podrían tener 2 direcciones IP, una para la subred y otra de
broadcast, con lo que no podrían tener host).
Cada vez que se pide
prestado otro bit del campo de host, la cantidad de subredes totales posibles
se duplica, mientras que la cantidad de direcciones de host totales que se
pueden asignar se reduce a la mitad (aunque la cantidad de redes y host útiles
varía un poco de esta regla: 2 menos en todo caso).
Un patrón de equivalencia
decimal-binario a la hora de calcular máscaras de subred es el siguiente:

En cualquier caso, y una
vez realizada la partición, la primera dirección IP válida de la misma se suele
asignar al router que unirá las diferentes subredes.
Optimizando
la partición.-
Es tarea del diseñador de
la red o del administrador de la misma el obtener la partición en subredes más
acertada de acuerdo con las necesidades actuales y futuras, con objeto de
optimizar el número de IPs utilizadas, sobre todo en el caso de que la red séa
pública.
Por un lado, se pueden
precisar subredes con unas necesidades de host predeterminadas (p.e. 50 host
por subred, 120, etc.), por otro se debe procurar que el número de IPs
desperdiciadas séa mínimo, y por otro lado se deben limitar al máximo el ancho
de banda absorvido por las peticiones de broadcast.
Por lo tanto, se hace preciso
un cálculo exacto de las diferentes obciones disponibles, buscando que el
rendimiento de la partición séa máximo, dentro de las necesidades exigidas a la
partición. Un resumen de los rendimientos (direcciones ) lo tenñeis en la
siguiente tabla:
De todas formas, el caso
más normal con el que nos encontraremos será una empresa u organización con una
o varias direcciones IP públicas, asignadas por su ISP (Proveedor de Servicios
de Internet), que serán usadas por router/firewall, encargados de dar salida a
Internet a todos los host internos. Trás los routers habrá normalmente uno o
más servidores Proxi, que serán los que se encargarán de gestionar las
peticiones de servicios externos de los host, y trás el tendremos una red
interna, privada, formada por diferentes host, servidores de aplicaciones,
servidores de datos, impresoras, etc.
En estos casos, el
administrador o diseñador de la red interna dispondrá de todo un rango de IPs
disponibles para realizar las particiones, pudiendo usar la clase IP privada
(clase A, B o C) que más le convenga. No obstante, es muy importante también el
cálculo óptimo de la partición, a fin de limitar al máximo los dominios de
colisión y el ancho de banda consumido los broadcast.
Existen para ello direcciones IP
reservadas,
privadas, para usos internos, que se establecieron por convenio. Estas
direcciones no son vistas desde el exterior, no son públicas, y sus rangos son:
- Clase A: 10.0.0.0
- ClaseB: 172.16.0.0 a
172.31.0.0
- Clase C: 192.168.X.0 (con
X variando).