El enrutamiento entre dominios sin clases ( CIDR / ˈs aɪ d ər , ˈs ɪ - / ) es un método para asignar direcciones IP para el enrutamiento IP . El Grupo de trabajo de ingeniería de Internet introdujo CIDR en 1993 para reemplazar la arquitectura de direccionamiento de red con clases anterior en Internet . Su objetivo era frenar el crecimiento de las tablas de enrutamiento en los enrutadores de Internet y ayudar a frenar el rápido agotamiento de las direcciones IPv4 . [1] [2]
Las direcciones IP se describen como compuestas por dos grupos de bits : los bits más significativos son el prefijo de red , que identifica una red o subred completa , y el conjunto menos significativo forma el identificador de host , que especifica una interfaz particular de un host en esa red. Esta división se utiliza como base para el enrutamiento del tráfico entre redes IP y para las políticas de asignación de direcciones.
Mientras que el diseño de red con clases para IPv4 dimensionó el prefijo de red como uno o más grupos de 8 bits, lo que dio como resultado bloques de direcciones de clase A, B o C, bajo CIDR el espacio de direcciones se asigna a los proveedores de servicios de Internet y a los usuarios finales en cualquier límite de bits de dirección. En IPv6 , sin embargo, el identificador de interfaz tiene un tamaño fijo de 64 bits por convención, y nunca se asignan subredes más pequeñas a los usuarios finales.
El CIDR se basa en el enmascaramiento de subred de longitud variable ( VLSM ), en el que los prefijos de red tienen una longitud variable (a diferencia del prefijo de longitud fija del diseño de red con clases anterior). El principal beneficio de esto es que otorga un control más preciso de los tamaños de las subredes asignadas a las organizaciones, lo que ralentiza el agotamiento de las direcciones IPv4 debido a la asignación de subredes más grandes de lo necesario. El CIDR dio lugar a una nueva forma de escribir direcciones IP conocida como notación CIDR, en la que una dirección IP va seguida de un sufijo que indica la cantidad de bits del prefijo. Algunos ejemplos de notación CIDR son las direcciones 192.0.2.0 / 24 para IPv4 y 2001:db8:: / 32 para IPv6. Los bloques de direcciones que tienen prefijos contiguos se pueden agregar como superredes , lo que reduce la cantidad de entradas en la tabla de enrutamiento global.
Cada dirección IP consta de un prefijo de red seguido de un identificador de host . En la arquitectura de red con clases de IPv4 , los tres bits más significativos de la dirección IP de 32 bits definían el tamaño del prefijo de red para redes de unidifusión y determinaban la clase de red A, B o C. [3]
La ventaja de este sistema es que se podía determinar el prefijo de red para cualquier dirección IP sin ninguna información adicional. La desventaja es que las redes eran generalmente demasiado grandes o demasiado pequeñas para que las usaran la mayoría de las organizaciones, porque solo había tres tamaños disponibles. El bloque de asignación y enrutamiento más pequeño contenía 2 8 = 256 direcciones, más grande de lo necesario para redes personales o departamentales, pero demasiado pequeño para la mayoría de las empresas. El siguiente bloque más grande contenía 2 16 = 65 536 direcciones, demasiado grande para ser utilizado de manera eficiente incluso por grandes organizaciones. Pero para los usuarios de la red que necesitaban más de 65 536 direcciones, el otro tamaño (2 24 ) proporcionaba demasiadas, más de 16 millones. Esto condujo a ineficiencias en el uso de direcciones, así como ineficiencias en el enrutamiento, porque requería una gran cantidad de redes de clase C asignadas con anuncios de ruta individuales, que estaban dispersas geográficamente con pocas oportunidades para la agregación de rutas .
Una década después de la invención del Sistema de nombres de dominio (DNS), se descubrió que el método de red con clases no era escalable . [4] Esto condujo al desarrollo de subredes y CIDR. Las distinciones de clases que antes eran significativas y se basaban en los bits de dirección más significativos se abandonaron y el nuevo sistema se describió como sin clases , en contraste con el sistema anterior, que se conoció como con clases . Los protocolos de enrutamiento se revisaron para transportar no solo direcciones IP, sino también sus máscaras de subred. La implementación de CIDR requirió que cada host y enrutador en Internet se reprogramara en pequeñas formas, lo que no es poca cosa en un momento en que Internet estaba entrando en un período de rápido crecimiento. En 1993, el Grupo de trabajo de ingeniería de Internet publicó un nuevo conjunto de estándares, RFC 1518 y RFC 1519, para definir este nuevo principio para asignar bloques de direcciones IP y enrutar paquetes IPv4. Una versión actualizada, RFC 4632, se publicó en 2006. [5]
Después de un período de experimentación con varias alternativas, el enrutamiento entre dominios sin clases se basó en el enmascaramiento de subred de longitud variable (VLSM), que permite dividir cada red en subredes de varios tamaños de potencias de dos, de modo que cada subred pueda dimensionarse adecuadamente para las necesidades locales. Las máscaras de subred de longitud variable se mencionaron como una alternativa en RFC 950. [6] Las técnicas para agrupar direcciones para operaciones comunes se basaron en el concepto de direccionamiento en clúster, propuesto por primera vez por Carl-Herbert Rokitansky. [7] [8]
La notación CIDR es una representación compacta de una dirección IP y su máscara de red asociada. La notación fue inventada por Phil Karn en la década de 1980. [9] [10] La notación CIDR especifica una dirección IP, un carácter de barra ('/') y un número decimal. El número decimal es el recuento de bits 1 consecutivos iniciales (de izquierda a derecha) en la máscara de red. Cada bit 1 denota un bit del rango de direcciones que debe permanecer idéntico a la dirección IP dada. La dirección IP en notación CIDR siempre se representa de acuerdo con los estándares para IPv4 o IPv6.
La dirección puede indicar una dirección de interfaz específica (incluido un identificador de host, como 10.0.0.1 / 8 ), o puede ser la dirección inicial de una red completa (utilizando un identificador de host de 0, como en 10.0.0.0 / 8 o su equivalente 10 / 8 ). La notación CIDR se puede utilizar incluso sin ninguna dirección IP, por ejemplo, al hacer referencia a un / 24 como una descripción genérica de una red IPv4 que tiene un prefijo de 24 bits y números de host de 8 bits.
Por ejemplo:
En IPv4, la notación CIDR se empezó a utilizar ampliamente solo después de la implementación del método, que se documentó utilizando la especificación de máscara de subred decimal con puntos después de la barra, por ejemplo, 192.24.12.0 / 255.255.252.0 . [2] Describir el ancho del prefijo de red como un solo número ( 192.24.12.0 / 22 ) era más fácil de conceptualizar y calcular para los administradores de red. Se incorporó gradualmente a documentos de estándares posteriores [11] [12] y a interfaces de configuración de red.
La cantidad de direcciones de una red se puede calcular como 2 longitud de dirección − longitud de prefijo , donde la longitud de dirección es 128 para IPv6 y 32 para IPv4. Por ejemplo, en IPv4, la longitud de prefijo / 29 da: 2 32−29 = 2 3 = 8 direcciones.
Una máscara de subred es una máscara de bits que codifica la longitud del prefijo asociado con una dirección o red IPv4 en notación de cuatro puntos: 32 bits, comenzando con una cantidad de 1 bits igual a la longitud del prefijo, terminando con 0 bits y codificada en formato decimal de cuatro partes con puntos: 255.255.255.0 . Una máscara de subred codifica la misma información que una longitud de prefijo pero es anterior a la llegada de CIDR. En la notación CIDR, los bits del prefijo siempre son contiguos. Las máscaras de subred fueron permitidas por RFC 950 [6] para especificar bits no contiguos hasta RFC 4632 [5] : la Sección 5.1 declaró que la máscara debe dejarse contigua. Dada esta restricción, una máscara de subred y la notación CIDR cumplen exactamente la misma función.
CIDR es principalmente un estándar basado en prefijos y en bits para la representación de direcciones IP y sus propiedades de enrutamiento. Facilita el enrutamiento al permitir que los bloques de direcciones se agrupen en entradas individuales de la tabla de enrutamiento. Estos grupos, comúnmente llamados bloques CIDR, comparten una secuencia inicial de bits en la representación binaria de sus direcciones IP. Los bloques CIDR de IPv4 se identifican utilizando una sintaxis similar a la de las direcciones IPv4: una dirección decimal con punto, seguida de una barra y luego un número del 0 al 32, es decir, abcd / n . La parte decimal con punto es la dirección IPv4. El número que sigue a la barra es la longitud del prefijo, la cantidad de bits iniciales compartidos, contando desde el bit más significativo de la dirección. Cuando se enfatiza solo el tamaño de una red, generalmente se omite la parte de la dirección de la notación. Por lo tanto, un bloque /20 es un bloque CIDR con un prefijo de 20 bits no especificado.
Una dirección IP es parte de un bloque CIDR y se dice que coincide con el prefijo CIDR si los n bits iniciales de la dirección y el prefijo CIDR son iguales. Una dirección IPv4 tiene 32 bits, por lo que un prefijo CIDR de n bits deja 32 − n bits sin coincidir, lo que significa que 2 direcciones IPv4 de 32 − n coinciden con un prefijo CIDR de n bits determinado . Los prefijos CIDR más cortos coinciden con más direcciones, mientras que los prefijos más largos coinciden con menos. En el caso de bloques CIDR superpuestos, una dirección puede coincidir con varios prefijos CIDR de diferentes longitudes.
El CIDR también se utiliza para direcciones IPv6 y la sintaxis semántica es idéntica. La longitud del prefijo puede variar de 0 a 128, debido a la mayor cantidad de bits en la dirección. Sin embargo, por convención, una subred en redes de capa MAC de difusión siempre tiene identificadores de host de 64 bits. [13] Los prefijos más grandes (/127) solo se utilizan en algunos enlaces punto a punto entre enrutadores, por razones de seguridad y políticas. [14]
La Autoridad de Asignación de Números de Internet (IANA) emite a los registros de Internet regionales (RIR) bloques CIDR grandes con prefijos cortos. Sin embargo, un / 8 (con más de dieciséis millones de direcciones) es el bloque más grande que asignará la IANA. Por ejemplo, 62.0.0.0 / 8 es administrado por RIPE NCC , el RIR europeo. Los RIR, cada uno responsable de una única área geográfica grande, como Europa o América del Norte, subdividen estos bloques y asignan subredes a los registros de Internet locales (LIR). Se puede repetir una subdivisión similar varias veces en niveles inferiores de delegación. Las redes de usuarios finales reciben subredes dimensionadas de acuerdo con su necesidad proyectada a corto plazo. Las recomendaciones de la IETF alientan a las redes atendidas por un único ISP a obtener espacio de direcciones IP directamente de su ISP. Por otro lado, las redes atendidas por varios ISP pueden obtener espacio de direcciones independiente del proveedor directamente del RIR apropiado.
Por ejemplo, a finales de los años 1990, la dirección IP 208.130.29.33 (que luego fue reasignada) fue utilizada por www.freesoft.org. Un análisis de esta dirección identificó tres prefijos CIDR. 208.128.0.0 / 11 , un gran bloque CIDR que contiene más de 2 millones de direcciones, había sido asignado por ARIN (el RIR norteamericano) a MCI . Automation Research Systems (ARS), un VAR de Virginia , alquiló una conexión a Internet de MCI y se le asignó el bloque 208.130.28.0 / 22 , capaz de direccionar poco más de 1000 dispositivos. ARS utilizó un bloque / 24 para sus servidores de acceso público, de los cuales 208.130.29.33 era uno. Todos estos prefijos CIDR se utilizarían en diferentes ubicaciones de la red. Fuera de la red de MCI, el prefijo 208.128.0.0/11 se utilizaría para dirigir a MCI el tráfico destinado no sólo a 208.130.29.33 , sino también a cualquiera de los aproximadamente dos millones de direcciones IP con los mismos 11 bits iniciales. Dentro de la red de MCI, 208.130.28.0/22 se haría visible , dirigiendo el tráfico a la línea alquilada que da servicio a ARS. Sólo dentro de la red corporativa de ARS se habría utilizado el prefijo 208.130.29.0/24 .
En el uso común, la primera dirección en una subred, todos los ceros binarios en el identificador de host, se reserva para hacer referencia a la red en sí, mientras que la última dirección, todos los unos binarios en el identificador de host, se utiliza como una dirección de difusión para la red; esto reduce la cantidad de direcciones disponibles para los hosts en 2. Como resultado, una red / 31 , con un dígito binario en el identificador de host, sería inutilizable, ya que dicha subred no proporcionaría direcciones de host disponibles después de esta reducción. RFC 3021 crea una excepción a las reglas de "host todos unos" y "host todos ceros" para hacer que las redes / 31 sean utilizables para enlaces punto a punto. Las direcciones / 32 (red de un solo host) deben ser accedidas por reglas de enrutamiento explícitas, ya que no hay espacio en dicha red para una puerta de enlace.
En subredes enrutadas mayores que / 31 o / 32 , la cantidad de direcciones de host disponibles generalmente se reduce en dos, es decir, la dirección más grande, que se reserva como dirección de difusión, y la dirección más pequeña, que identifica a la red en sí. [15] [16]
El gran tamaño de las direcciones de IPv6 permitió la suma de rutas a nivel mundial y garantizó suficientes grupos de direcciones en cada sitio. El tamaño de subred estándar para las redes IPv6 es un bloque / 64 , que es necesario para el funcionamiento de la autoconfiguración de direcciones sin estado . [17] Al principio, el IETF recomendó en RFC 3177 como mejor práctica que todos los sitios finales recibieran una asignación de direcciones / 48 , [18] pero las críticas y la reevaluación de las necesidades y prácticas reales han llevado a recomendaciones de asignación más flexibles en RFC 6177 [19] sugiriendo una asignación significativamente menor para algunos sitios, como un bloque / 56 para redes residenciales.
Esta referencia de subredes IPv6 enumera los tamaños de las subredes IPv6 . Los diferentes tipos de enlaces de red pueden requerir diferentes tamaños de subred. [20] La máscara de subred separa los bits del prefijo del identificador de red de los bits del identificador de interfaz. Seleccionar un tamaño de prefijo más pequeño da como resultado una menor cantidad de redes cubiertas, pero con más direcciones dentro de cada red. [21]
2001:0db8:0123:4567:89ab:cdef:1234:5678|||| |||| |||| |||| |||| |||| |||| |||||||| |||| |||| |||| |||| |||| |||| |||| |||128 Puntos finales únicos y bucle invertido||||| |||| |||| |||| |||| |||| |||| |||127 Enlaces punto a punto (entre enrutadores)|||| |||| |||| |||| |||| |||| |||| ||124|||| |||| |||| |||| |||| |||| |||| |120|||| |||| |||| |||| |||| |||| |||| 116|||| |||| |||| |||| |||| |||| |||112|||| |||| |||| |||| |||| |||| ||108|||| |||| |||| |||| |||| |||| |104|||| |||| |||| |||| |||| |||| 100|||| |||| |||| |||| |||| |||96||||| |||| |||| |||| |||| ||92|||| |||| |||| |||| |||| |88||||| |||| |||| |||| |||| 84|||| |||| |||| |||| |||80||||| |||| |||| |||| ||76|||| |||| |||| |||| |72|||| |||| |||| |||| 68|||| |||| |||| |||64 LAN única; tamaño de prefijo predeterminado para SLAAC |||| |||| |||| ||60 Algunas implementaciones de 6rd (muy limitadas) (/60 = 16 bloques /64)|||| |||| |||| |56 Asignación mínima de sitios finales; [19] p. ej. red doméstica (/56 = 256 /64 bloques)|||| |||| |||| 52 /52 bloque = 4096 /64 bloques|||| |||| |||48 Asignación típica para sitios más grandes (/48 = 65536 /64 bloques)|||| |||| ||44|||| |||| |40|||| |||| 36 posibles asignaciones extrapequeñas de registros locales de Internet (LIR) futuros|||| |||32 Asignaciones mínimas de LIR|||| ||28 Asignaciones medias LIR|||| |24 grandes asignaciones de LIR|||| Asignaciones extra grandes de 20 LIR|||16||12 asignaciones de registros regionales de Internet (RIR) de la IANA [22]|84
Topológicamente, el conjunto de subredes descritas por CIDR representa una cobertura del espacio de direcciones correspondiente. El intervalo descrito por la notación corresponde numéricamente a direcciones de la forma (para IPv4) , donde tiene los bits inferiores establecidos en 0. (Para IPv6, sustituya 128.) Para un fijo , el conjunto de todas las subredes constituye una partición , es decir, una cobertura de conjuntos no superpuestos. El aumento produce subparticiones cada vez más finas. Por lo tanto, dos subredes y son disjuntas o una es una subred de la otra.
CIDR proporciona una agregación de prefijos de enrutamiento de grano fino . Por ejemplo, si los primeros 20 bits de sus prefijos de red coinciden, se pueden agregar dieciséis redes contiguas / 24 y anunciarlas a una red más grande como una única entrada de la tabla de enrutamiento / 20. Esto reduce la cantidad de rutas que se deben anunciar.
/24 es ciertamente más claro que 255.255.255.0. Me parece recordar que fue Phil Karn quien a principios de los 80 sugirió que expresar las máscaras de subred como la cantidad de bits desde el extremo superior de la palabra de dirección era eficiente, ya que las máscaras de subred siempre eran una serie de unos seguidos de ceros sin intercalar, lo que se incorporó (o inventó de forma independiente) aproximadamente una década después como notación abcd/n de CIDR en RFC1519.
En realidad, Brian tiene razón. Phil estaba muy adelantado a su tiempo, pero no recuerdo que hablara de ello hasta finales de los 80.
Las redes IP también son etiquetas léxicamente jerárquicas que utilizan la notación de enrutamiento entre dominios sin clases (CIDR), pero su jerarquía no se determina fácilmente con una simple manipulación de texto; por ejemplo, 198.41.0.0/22 es parte de 198.41.0.0/16, que es parte de 198.40.0.0/15.