# Classless Inter-Domain Routing

Classless Inter-Domain Routing o CIDR (en español «enrutamiento entre dominios sin clases») se introdujo en 1993 por IETF y representa la última mejora en el modo de interpretar las direcciones IP. Su introducción permitió una mayor flexibilidad al dividir rangos de direcciones IP en redes separadas. De esta manera permitió:
* Un uso más eficiente de las cada vez más escasas direcciones IPv4.
* Un mayor uso de la jerarquía de direcciones (agregación de prefijos de red), disminuyendo la sobrecarga de los enrutadores principales de Internet para realizar el encaminamiento.

## Introducción

CIDR reemplaza la sintaxis previa para nombrar direcciones IP, las clases de redes. En vez de asignar bloques de direcciones en los límites de los octetos, que implicaban prefijos «naturales» de 8, 16 y 24 bits, CIDR usa la técnica VLSM (variable length subnet mask, en español «máscara de subred de longitud variable»), para hacer posible la asignación de prefijos de longitud arbitraria.
CIDR engloba:
* La técnica VLSM para especificar prefijos de red de longitud variable. Una dirección CIDR se escribe con un sufijo que indica el número de bits de longitud de prefijo, p.ej. 192.168.0.0/16 que indica que la máscara de red tiene 16 bits (es decir, los primeros 16 bits de la máscara son 1 y el resto 0). Esto permite un uso más eficiente del cada vez más escaso espacio de direcciones IPv4
* La agregación de múltiples prefijos contiguos en superredes, reduciendo el número de entradas en las tablas de ruta globales.

## Bloques CIDR

CIDR es un estándar de red para la interpretación de direcciones IP. CIDR facilita el encaminamiento al permitir agrupar bloques de direcciones en una sola entrada de la tabla de rutas. Estos grupos, llamados comúnmente Bloques CIDR, comparten una misma secuencia inicial de bits en la representación binaria de sus direcciones IP.
Los bloques CIDR IPv4 se identifican usando una sintaxis similar a la de las direcciones IPv4: cuatro números decimales separados por puntos, seguidos de una barra de división y un número de 0 a 32; A.B.C.D/N.
Los primeros cuatro números decimales se interpretan como una dirección IPv4, y el número tras la barra es la longitud de prefijo, contando desde la izquierda, y representa el número de bits comunes a todas las direcciones incluidas en el bloque CIDR.
Decimos que una dirección IP está incluida en un bloque CIDR, y que encaja con el prefijo CIDR, si los N bits iniciales de la dirección y el prefijo son iguales. Por tanto, para entender CIDR es necesario visualizar la dirección IP en binario. Dado que la longitud de una dirección IPv4 es fija, de 32 bits, un prefijo CIDR de N-bits deja $32-N$ bits sin encajar, y hay $2^{(32-N)}$ combinaciones posibles con los bits restantes. Esto quiere decir que $2^{(32-N)}$ direcciones IPv4 encajan en un prefijo CIDR de N-bits.
Nótese que los prefijos CIDR cortos (números cercanos a 0) permiten encajar un mayor número de direcciones IP, mientras que prefijos CIDR largos (números cercanos a 32) permiten encajar menos direcciones IP.
Una dirección IP puede encajar en varios prefijos CIDR de longitudes diferentes.
CIDR también se usa con direcciones IPv6, en las que la longitud del prefijo varía desde 0 a 128, debido a la mayor longitud de bit en las direcciones, con respecto a IPv4. En el caso de IPv6 se usa una sintaxis similar a la comentada: el prefijo se escribe como una dirección IPv6, seguida de una barra y el número de bits significativos.

## Asignación de bloques CIDR

* El bloque 208.128.0.0/11, un bloque CIDR largo que contenía más de dos millones de direcciones, había sido asignado por ARIN, (el RIR Norteamericano) a MCI aa.
* Automation Research Systems, una empresa intermediaria del estado de Virginia, alquiló de MCI una conexión a Internet, y recibió el bloque 208.130.28.0/22, capaz de admitir 1024 direcciones IP ($32-22=10$; $2^{10}=1.024$)
* ARS utilizó un bloque 208.130.29.0/24 para sus servidores públicos, uno de los cuales era 208.130.29.33.
Todos estos prefijos CIDR se utilizaron en diferentes enrutadores para realizar el encaminamiento. Fuera de la red de MCI, el prefijo 208.128.0.0/11 se usó para encaminar hacia MCI el tráfico dirigido no solo a 208.130.29.33, sino también a cualquiera de los cerca de dos millones de direcciones IP con el mismo prefijo CIDR (los mismos 11 bits iniciales). En el interior de la red de MCI, 208.130.28.0/22 dirigiría el tráfico a la línea alquilada por ARS. El prefijo 208.130.29.0/24 se usaría solo dentro de la red corporativa de ARS.

## CIDR y máscaras de subred

Una máscara de subred es una máscara que codifica la longitud del prefijo de una forma similar a una dirección IP - 32 bits, comenzando desde la izquierda, ponemos a 1 tantos bits como marque la longitud del prefijo, y el resto de bits a cero, separando los 32 bits en cuatro grupos de ocho bits.
CIDR usa máscaras de subred de longitud variable (VLSM) para asignar direcciones IP a subredes de acuerdo a las necesidades de cada subred. De esta forma, la división red/host puede ocurrir en cualquier bit de los 32 que componen la dirección IP. Este proceso puede ser recursivo, dividiendo una parte del espacio de direcciones en porciones cada vez menores, usando máscaras que cubren un mayor número de bits.
Las direcciones de red CIDR/VLSM se usan a lo largo y ancho de la Internet pública, y en muchas grandes redes privadas. El usuario normal no ve este uso puesto en práctica, al estar en una red en la que se usarán, por lo general, direcciones de red privadas recogidas en el RFC 1918.

## Agregación de prefijos

Otro beneficio de CIDR es la posibilidad de agregar prefijos de encaminamiento, un proceso conocido como «supernetting». Por ejemplo, dieciséis redes /24 contiguas pueden ser agregadas y publicadas en los enrutadores de Internet como una sola ruta /20 si los primeros 20 bits de sus respectivas redes coinciden. Dos redes /20 contiguas pueden ser agregadas en una /19, etcétera.
Esto permite una reducción significativa del número de rutas que los enrutadores en Internet tienen que conocer —y una reducción de memoria, recursos y demás— y previene una «explosión de tablas de encaminamiento», que podría sobrecargar a los routers e impedir la expansión de Internet en el futuro.
CIDR IPv4 :
| CIDR | N.º de redes por clase | Hosts* | Máscara |
| /32 | 1/256 C | 1 | 255.255.255.255 |
| /31 | 1/128 C | 2 | 255.255.255.254 |
| /30 | 1/64 C | 4 | 255.255.255.252 |
| /29 | 1/32 C | 8 | 255.255.255.248 |
| /28 | 1/16 C | 16 | 255.255.255.240 |
| /27 | 1/8 C | 32 | 255.255.255.224 |
| /26 | 1/4 C | 64 | 255.255.255.192 |
| /25 | 1/2 C | 128 | 255.255.255.128 |
| /24 | 1 C | 256 | 255.255.255.0 |
| /23 | 2 C | 512 | 255.255.254.0 |
| /22 | 4 C | 1 024 | 255.255.252.0 |
| /21 | 8 C | 2 048 | 255.255.248.0 |
| /20 | 16 C | 4 096 | 255.255.240.0 |
| /19 | 32 C | 8 192 | 255.255.224.0 |
| /18 | 64 C | 16 384 | 255.255.192.0 |
| /17 | 128 C | 32 768 | 255.255.128.0 |
| /16 | 256 C, 1 B | 65 536 | 255.255.0.0 |
| /15 | 512 C, 2 B | 131 072 | 255.254.0.0 |
| /14 | 1 024 C, 4 B | 262 144 | 255.252.0.0 |
| /13 | 2 048 C, 8 B | 524 288 | 255.248.0.0 |
| /12 | 4 096 C, 16 B | 1 048 576 | 255.240.0.0 |
| /11 | 8 192 C, 32 B | 2 097 152 | 255.224.0.0 |
| /10 | 16 384 C, 64 B | 4 194 304 | 255.192.0.0 |
| /9 | 32 768 C, 128B | 8 388 608 | 255.128.0.0 |
| /8 | 65 536 C, 256B, 1 A | 16 777 216 | 255.0.0.0 |
| /7 | 131 072 C, 512B, 2 A | 33 554 432 | 254.0.0.0 |
| /6 | 262 144 C, 1 024 B, 4 A | 67 108 864 | 252.0.0.0 |
| /5 | 524 288 C, 2 048 B, 8 A | 134 217 728 | 248.0.0.0 |
| /4 | 1 048 576 C, 4 096 B, 16 A | 268 435 456 | 240.0.0.0 |
| /3 | 2 097 152 C, 8 192 B, 32 A | 536 870 912 | 224.0.0.0 |
| /2 | 4 194 304 C, 16 384 B, 64 A | 1 073 741 824 | 192.0.0.0 |
| /1 | 8 388 608 C, 32 768 B, 128 A | 2 147 483 648 | 128.0.0.0 |
| /0 | 16 777 216 C, 65 536 B, 256 A | 4 294 967 296 | 0.0.0.0 |
(*) En la práctica hay que restar 2 a este número. La dirección menor o más baja del bloque, todos los bits de host a 0, se usa para identificar a la propia red —toda la red— y la dirección mayor o más alta, todos los bits de host a 1, se usa como dirección de broadcast. Por tanto, en un bloque CIDR /24 podríamos disponer de $2^{8}-2=254$ direcciones IP para asignar a dispositivos.

## Antecedentes históricos

Originalmente, las direcciones IP se separaban en dos partes: la dirección de red (que identificaba una red o subred), y la dirección de host (que identificaba la conexión o interfaz de una máquina específica de la red). Esta división se usaba para controlar la forma en que se encaminaba el tráfico entre redes basadas en TCP/IP.
El espacio de direcciones IP se dividía en cinco clases principales de redes (A, B, C, D y E), donde cada clase tenía asignado un tamaño fijo de dirección de red. La clase, y por extensión la longitud de la dirección de red y de la dirección de host, se podían determinar comprobando los bits más significativos (a la izquierda) de la dirección IP:
* 0 para las redes de Clase A
* 10 para las redes de Clase B
* 110 para las redes de Clase C
* 1110 para las redes de Clase D (usadas para transmisiones multicast)
* 1111 para las redes de Clase E (usadas para investigación y experimentación)
Sin una forma de especificar la longitud de prefijo, o la máscara de red, los algoritmos de encaminamiento en los enrutadores tenían que usar forzosamente la clase de la dirección IP para determinar el tamaño de los prefijos que se usarían en las tablas de rutas. Esto no representaba un gran problema en la Internet original, donde solo había unas decenas/cientos de ordenadores, y los routers podían almacenar en memoria todas las rutas necesarias para alcanzarlos.
A medida que la red TCP/IP experimental se expandió en los años 80 para formar Internet, el número de ordenadores con dirección IP pública creció exponencialmente, forzando a los enrutadores a incrementar la memoria necesaria para almacenar las tablas de rutas, y los recursos necesarios para mantener y actualizar esas tablas. La necesidad de un esquema de direcciones más flexible se hacía cada vez más patente.
Esta situación condujo al desarrollo sucesivo de las subredes y CIDR. Dado que se ignora la antigua distinción entre clases de direcciones, el nuevo sistema se denominó encaminamiento sin clases (classless routing). Esta denominación conllevó que el sistema original fuera denominado encaminamiento con clases (classful routing).
VLSM parte del mismo concepto que CIDR. El término VLSM se usa generalmente cuando se habla de redes privadas, mientras que CIDR se usa cuando se habla de Internet (red pública).