CIDR: el classles inter-domain routing en detalle
Pese a su amplitud, también en Internet se sufre de falta de espacio. El sistema de las direcciones IP tal como lo usamos en la actualidad (IPv4) hace tiempo que se ha agotado y todas las posibles direcciones, que suman nada más y nada menos que 4.294.967.296, ya están asignadas. Esto obligó, ya hace algunas décadas, a buscar una solución.
Con el CIDR, siglas de classles inter-domain routing (enrutamiento entre dominios sin clases, en castellano), se logró ampliar el marco de direcciones, pero lo que en un principio se concibió como una solución temporal, ya lleva activo más de veinte años. Y dado que la adopción completa de IPv6 aún se va a hacer esperar, parece claro suponer que el CIDR mantendrá su posición en los próximos años, motivo suficiente para desentrañar las claves del classles inter-domain routing. Descubre, a continuación, qué es el CIDR y cuál es su mecánica de funcionamiento.
- Domina el mercado con nuestra oferta 3x1 en dominios
- Tu dominio protegido con SSL Wildcard gratis
- 1 cuenta de correo electrónico por contrato
¿Para qué se desarrolló el CIDR?
Ya en 1993 se vio claro que Internet crecía a mayor velocidad de lo que se había previsto. En aquel momento la solución pasó por abandonar las clases de red en que se dividía el espacio de direcciones IP en sus orígenes. Cuando se querían conectar a Internet, las empresas o los usuarios privados debían escoger direcciones IP de la clase adecuada. Cada clase disponía de un número diferente de octetos (como se denomina a los bloques de cifras de las direcciones IP) para identificar a las redes. Los octetos restantes determinaban cuántos hosts (direcciones, dominios) podían alojarse en la red.
Clase A | Clase B | Clase C | Clase D | Clase E |
0.0.0.0 - 127.255.255.255 | 128.0.0.0 - 191.255.255.255 | 192.0.0.0 - 223.255.255.255 | 224.0.0.0 - 239.255.255.255 | 240.0.0.0 - 255.255.255.255 |
Así, una red de la clase A podía alojar a más de 16 millones de hosts, pero solo disponía de 128 (0-127) redes libres, porque solamente el primer octeto estaba destinado a las redes (los tres restantes determinaban el número de hosts). En la clase B, en cambio, había más de 16 000 redes disponibles, pero cada red podía contener un máximo de 65 534 hosts (los dos primeros octetos se reservaban para las redes y los otros dos para los hosts). Y las redes en la clase C solo tenían un octeto disponible para direcciones, pudiendo alojar, por tanto, solo a 254 hosts (1-254, ya que 0 y 255 siempre están reservados, como explicaremos más adelante). Las clases D y E estaban reservadas para otros propósitos y no estaban disponibles para empresas o usuarios privados.
Esta clasificación ha demostrado ser poco práctica y muy inflexible. Para muchas empresas, una red con solo 254 participantes es demasiado pequeña, y solo las grandes redes necesitan miles de hosts. Esto condujo a un mal uso de las redes, ya que muchas empresas se vieron obligadas a bloquear direcciones que no utilizaban. Con el propósito de responder mejor a las necesidades de los internautas, se pensó en flexibilizar las dimensiones de las redes, reducir las tablas de enrutamiento y decelerar la merma de direcciones IP libres.
Las tablas de enrutamiento se encuentran en los routers y les ayudan a encontrar la ruta a la dirección correcta. Desde el origen a su destino, los paquetes de datos recorren muchos nodos. Para que el router, también llamado enrutador, pueda encontrar la mejor ruta, en las tablas de enrutamiento se va registrando información sobre las rutas realizadas, de modo que, si para cada posible destino se ha de agregar una ruta, con el tiempo el tamaño del archivo va creciendo de forma exponencial. Como las direcciones en formato CIDR se agrupan en bloques, desaparece la necesidad de guardar tanta información en las tablas de enrutamiento: en una ruta se agrupan varias direcciones.
¿Cómo funciona el CIDR?
El CIDR se basa en el concepto de las máscaras de subred. Una máscara se superpone a una dirección IP creando así una red secundaria supeditada a Internet. Esta máscara de subred señala al router qué porción de la dirección IP se reserva a los hosts (a cada integrante de la red) y qué parte identifica a la red.
Pero, si en lugar de añadir una máscara de subred, se integra en la dirección IP una especificación o un sufijo con CIDR, no solo se gana visualmente: además de subredes (subnetting), el CIDR también permite crear superredes (supernetting). Esto quiere decir que las redes pueden tanto subdividirse como agruparse.
El supernetting podría interesar, por ejemplo, a empresas con varias filiales que quieren mantener todos los ordenadores en la misma red, porque con esta técnica, también conocida como route aggregation (agrupación de rutas) podrían agrupar varias redes en una sola ruta. Con ello los paquetes de datos solo se enviarían a un destino, sin importar dónde estuviera situado el host físicamente.
Un elemento central del CIDR es la VSLM: la variable length subnet mask (máscara de subred de longitud variable) permite que también puedan implementarse redes con longitudes variables y no solo según las categorías establecidas de las clases de redes.
La notación CIDR
Antes podía deducirse de una dirección IP a qué clase pertenecía. Las redes de la clase C, por ejemplo, ocupaban el espacio de direcciones de 192.0.0.0 a 223.255.255.255. La máscara de subred (como 255.255.255.0, p. ej.) se superpone a la dirección IP y determina cuántos hosts puede alojar. En el formato CIDR esta información ya está integrada en la misma dirección IP como sufijo, aunque el principio de base sigue siendo el mismo: este sufijo indica qué posiciones (o bits) de la dirección IP identifican a la red (Network ID) y automáticamente qué bits constituyen el área del host ID. Para entenderlo, observemos una máscara de subred en formato binario:
255.255.255.0 ≙ 11111111 11111111 11111111 00000000
En la notación CIDR, esta máscara de subred (de clase C) equivaldría al sufijo /24, ya que los primeros 24 bits (en negrita) identifican la porción de la red de la dirección IP (en la clase C los tres primeros octetos identifican a la red). Pero la notación CIDR no solo admite bloques de unos o ceros: gracias a la VLSM también es posible crear subredes más flexibles. La máscara /25 equivale en formato binario a 11111111 11111111 11111111 1000000, por ejemplo, y en formato decimal a 255.255.255.128.
También con CIDR y VLSM los bits de las máscaras de subred se agregan siempre de izquierda a derecha y cada octeto solo puede incluir ceros o unos, si bien no de forma aleatoria (00110000 10101000 no sería posible).
Qué son los bloques CIDR
Una dirección IPv4 se compone de 32 bits, lo que se ve mucho más claro si se calcula el equivalente binario desde la notación decimal:
201.105.7.34 equivale a 11001001 01101001 00000111 00100010.
La notación binaria de una dirección IP, que es el lenguaje con el que operan los ordenadores, está formada por 32 posiciones que solo pueden ocuparse con unos o ceros, esto es, 32 bits. Por eso en la notación CIDR los sufijos posibles también abarcan del 0 al 32.
En la creación de subredes se trata de lograr puntos en común. 201.105.7.34/24 y 201.105.7.1/24 están, así, en la misma red. El sufijo indica que los primeros 24 bits se emplean para identificar a la red, de modo que, si pertenecen a la misma red, estos han de ser iguales. Los bits restantes están reservados para determinar los hosts. El número de bits que en formato CIDR se encuentra tras la barra señala el número de posiciones (de izquierda a derecha) o bits que pertenecen a la parte de la red de la dirección IP. La tabla a continuación muestra a qué máscaras de subred equivale la notación CIDR y cuántas direcciones (o dominios) libres ofrece cada una.
Sufijo CIDR | Máscara de subred (decimal) | Máscara de subred (binario) | Direcciones libres | |
/0 | 0.0.0.0 | 00000000.00000000.00000000.00000000 | 4.294.967.296 | 232 |
/1 | 128.0.0.0 | 10000000.00000000.00000000.00000000 | 2.147.483.648 | 231 |
/2 | 192.0.0.0 | 11000000.00000000.00000000.00000000 | 1.073.741.824 | 230 |
/3 | 224.0.0.0 | 11100000.00000000.00000000.00000000 | 536.870.912 | 229 |
/4 | 240.0.0.0 | 11110000.00000000.00000000.00000000 | 268.435.456 | 228 |
/5 | 248.0.0.0 | 11111000.00000000.00000000.00000000 | 134.217.728 | 227 |
/6 | 252.0.0.0 | 11111100.00000000.00000000.00000000 | 67.108.864 | 226 |
/7 | 254.0.0.0 | 11111110.00000000.00000000.00000000 | 33.554.432 | 225 |
/8 | 255.0.0.0 | 11111111.00000000.00000000.00000000 | 16.777.216 | 224 |
/9 | 255.128.0.0 | 11111111.10000000.00000000.00000000 | 8.388.608 | 223 |
/10 | 255.192.0.0 | 11111111.11000000.00000000.00000000 | 4.194.304 | 222 |
/11 | 255.224.0.0 | 11111111.11100000.00000000.00000000 | 2.097.152 | 221 |
/12 | 255.240.0.0 | 11111111.11110000.00000000.00000000 | 1.048.576 | 220 |
/13 | 255.248.0.0 | 11111111.11111000.00000000.00000000 | 524.288 | 219 |
/14 | 255.252.0.0 | 11111111.11111100.00000000.00000000 | 262.144 | 218 |
/15 | 255.254.0.0 | 11111111.11111110.00000000.00000000 | 131.072 | 217 |
/16 | 255.255.0.0 | 11111111.11111111.00000000.00000000 | 65.536 | 216 |
/17 | 255.255.128.0 | 11111111.11111111.10000000.00000000 | 32.768 | 215 |
/18 | 255.255.192.0 | 11111111.11111111.11000000.00000000 | 16.384 | 214 |
/19 | 255.255.224.0 | 11111111.11111111.11100000.00000000 | 8.192 | 213 |
/20 | 255.255.240.0 | 11111111.11111111.11110000.00000000 | 4.096 | 212 |
/21 | 255.255.248.0 | 11111111.11111111.11111000.00000000 | 2.048 | 211 |
/22 | 255.255.252.0 | 11111111.11111111.11111100.00000000 | 1.024 | 210 |
/23 | 255.255.254.0 | 11111111.11111111.11111110.00000000 | 512 | 29 |
/24 | 255.255.255.0 | 11111111.11111111.11111111.00000000 | 256 | 28 |
/25 | 255.255.255.128 | 11111111.11111111.11111111.10000000 | 128 | 27 |
/26 | 255.255.255.192 | 11111111.11111111.11111111.11000000 | 64 | 26 |
/27 | 255.255.255.224 | 11111111.11111111.11111111.11100000 | 32 | 25 |
/28 | 255.255.255.240 | 11111111.11111111.11111111.11110000 | 16 | 24 |
/29 | 255.255.255.248 | 11111111.11111111.11111111.11111000 | 8 | 23 |
/30 | 255.255.255.252 | 11111111.11111111.11111111.11111100 | 4 | 22 |
/31 | 255.255.255.254 | 11111111.11111111.11111111.11111110 | 2 | 21 |
/32 | 255.255.255.255 | 11111111.11111111.11111111.11111111 | 1 | 20 |
No todas las redes pueden alojar hosts. Las redes con el sufijo /31 solo tienen 2 direcciones libres y estas se utilizan como dirección de la red (solo ceros en la parte del host) y como dirección de difusión o broadcast (solo unos en la parte del host), que se utiliza para la comunicación con todos los integrantes de la red. Estas dos direcciones (la primera y la última) están siempre ocupadas en todas las redes, lo que hace que algunas redes, como la mencionada /31, no puedan alojar hosts. Por eso, al observar la tabla CIDR, se han de restar mentalmente dos direcciones del total de las disponibles. La excepción es la red /32, porque solo puede ofrecer una dirección libre, de modo que no permite alojar direcciones de red y difusión.
La red /0 abarca el espacio de direcciones en su totalidad. Solo una gran red podría contener este espacio de direcciones con todas las posibles direcciones IP (menos dos) como hosts –no se podría hablar aquí de una subred en sentido estricto. Las redes entre la /1 y la /7 tampoco se emplean para subredes aisladas. Como el posible número de hosts es demasiado alto, estas redes se subdividen en otras subredes.
El cálculo del CIDR con ejemplos
Utilizando ejemplos es mucho más fácil explicar el principio que sustenta al CIDR. En los siguientes apartados aclaramos su mecánica en el subnetting y el supernetting.
Subnetting
A la hora de construir subredes (sobre todo flexibles), no basta con añadir simplemente el mismo sufijo a la dirección IP. Es importante entender qué ocurre cuando lo pasamos a lenguaje binario.
192.168.200.5/30 y 192.168.200.9/30 no pertenecen a la misma red. ¿Por qué? Si representamos estas direcciones y sus respectivas máscaras de subred en formato binario lo veremos más claro. Si al cotejar ambos valores utilizando la conjunción lógica ∧ (y) resulta un 1 en la misma posición, el octeto se adopta en la dirección de red. Las combinaciones 0 ∧ 0 y 0 ∧ 1 dan cero.
Dirección IP | 192 | 168 | 200 | 5 |
11000000 | 10101000 | 11001000 | 00000101 | |
/30 | 11111111 | 11111111 | 11111111 | 11111100 |
Net ID | 11000000 | 10101000 | 11001000 | 00000100 |
192 | 168 | 200 | 4 |
Dirección IP | 192 | 168 | 200 | 9 |
11000000 | 10101000 | 11001000 | 0001001 | |
/30 | 11111111 | 11111111 | 11111111 | 11111100 |
Net ID | 11000000 | 10101000 | 11011100 | 0001000 |
192 | 168 | 200 | 8 |
Como se ve, estas dos direcciones no pertenecen a la misma red. Si la segunda dirección hubiera sido 192.168.200.6/30 sí lo hubiera hecho.
Para averiguar qué direcciones IP hay disponibles en una subred, se ha de calcular el área. Tomemos el ejemplo de una empresa que ha de alojar 2 000 hosts en una red. Por la tabla CIDR sabemos que necesitamos una red /21. Si se prefiere realizar el cálculo, hay que utilizar un logaritmo: x=log2(2000). Como el resultado (≈10,666) no es un número natural, se redondea a 11. Podremos formar una subred con 211: 2 048. Recordemos que de aquí hay que restar las direcciones para difusión y para la red.
Si observas la tabla con atención, podrás ver que las potencias de 2 decrecen o, lo que es lo mismo, aumentan desde abajo (/32) hasta arriba (/0). Podría restarse 32-11 = 21 para obtener el sufijo de subred (/21) que se necesita.
En nuestro ejemplo, el número asignado por el proveedor reza 210.105.44.170. Convertimos esta información en formato binario y aplicamos la máscara que hemos calculado.
Dirección IP | 210 | 105 | 44 | 170 |
11010010 | 01101001 | 00101100 | 10101010 | |
/21 | 11111111 | 11111111 | 11111000 | 00000000 |
Net ID | 11010010 | 01101001 | 00101000 | 00000000 |
210 | 105 | 40 | 0 |
La primera dirección (reservada como dirección de la red) reza entonces 210.105.40.0/21. Entre esta y la de difusión hay 2 046 direcciones IP libres. La última dirección IP (dominio de difusión) sería 210.105.47.255/21. ¿Por qué? 2048 (el número máximo de direcciones en una subred) dividido entre 256 (el número de posibilidades en un octeto) da 8. Esto quiere decir que los 8 valores del 40 al 47 en el tercer octeto y todos los valores del 0 al 255 en el cuarto están libres.
Si quieres ahorrarte el cálculo, en Internet hay algunas calculadoras online con las que averiguarás fácilmente el rango para tus direcciones host. Con todo, en la mayoría de los casos tendrás que indicar tú mismo el tamaño de la subred, aunque este se encuentra en la tabla.
Supernetting
Supongamos que una empresa tiene tres filiales, de modo que opera tres redes con sus respectivos routers. En este caso, tendría sentido hacer con ellas una superred. Las tres redes tienen las direcciones 192.168.43.0, 192.168.44.0 y 192.168.45.0 (en este contexto, las posibles máscaras de subred al lado de las direcciones IP no son relevantes). Las traducimos a formato binario y tomamos solo las posiciones comunes a las tres direcciones y de izquierda a derecha. A partir de la primera diferencia todas las posiciones siguientes se ocupan con ceros.
IP 1 | 192 | 168 | 43 | 0 |
11000000 | 10101000 | 00101011 | 00000000 | |
IP 2 | 192 | 168 | 44 | 0 |
11000000 | 10101000 | 00101100 | 00000000 | |
IP 3 | 192 | 168 | 45 | 0 |
11000000 | 10101000 | 00101101 | 00000000 | |
Supernet | 192 | 168 | 40 | 0 |
11000000 | 10101000 | 00101000 | 00000000 |
La dirección de red de la superred es, de acuerdo con la tabla, 192.168.40.0. Para calcular la máscara de subred que pertenece a esta red, se cuentan los bits que han sido necesarios para conformar la nueva dirección IP, en nuestro ejemplo, 21 bits: 192.168.40.0/21.