¿Cómo funciona la división en subredes IPv6 y en qué se diferencia de la división en subredes IPv4?

116

Esta es una pregunta canónica sobre subredes IPv6.

Relacionado:

Sé mucho sobre las subredes IPv4 , y mientras me preparo para (implementar | trabajar) una red IPv6, necesito saber cuánto de este conocimiento es transferible y lo que aún necesito aprender. A primera vista, IPv6 parece ser mucho más complejo que IPv4. Entonces me gustaría saber:

  • IPv6 es de 128 bits, entonces, ¿por qué / 64 es la subred recomendada más pequeña para hosts? Relacionado con esto:
    • ¿Por qué se recomienda usar / 127 para enlaces punto a punto entre enrutadores, y por qué se recomendó en el pasado? ¿Debo cambiar los enlaces de enrutador existentes para usar / 127?
    • ¿Por qué se aprovisionarían las máquinas virtuales con menos de un / 64 de direcciones?
    • ¿Hay otras situaciones en las que usaría una subred más pequeña que / 64?
  • ¿Puedo asignar directamente desde subredes IPv4 a subredes IPv6? Por ejemplo, ¿un IPv4 / 24 corresponde directamente a un IPv6 / 56 o / 120?
  • Mis interfaces tienen varias direcciones IPv6. ¿La subred debe ser la misma para todos?
  • ¿Por qué a veces veo un% en lugar de un / en una dirección IPv6 y qué significa?
  • ¿Estoy desperdiciando demasiadas subredes? ¿No vamos a salir corriendo de nuevo?
  • ¿En qué otras formas principales es la división en subredes IPv6 diferente de la división en subredes IPv4?
Michael Hampton
fuente

Respuestas:

138

Lo primero que debe mencionarse sobre las subredes IPv6 es que se requiere un modo de pensamiento diferente . En IPv4, generalmente piensa en cuántas direcciones tiene disponibles y cómo puede asignar suficientes de ellas a cada usuario final. En IPv6, generalmente piensa en cuántas (/ 64) subredes tiene disponibles y cómo puede asignarlas a los usuarios finales. Casi nunca se preocupa por cuántas direcciones IP se utilizarán en una subred determinada. Excepto en algunos casos especiales, como enlaces punto a punto, cada subred simplemente tiene muchas más direcciones disponibles de las que necesitará, por lo que, en cambio, solo se preocupa por asignar subredes, no hosts dentro de ellas.

Las subredes IPv6 suelen ser / 64 porque eso es necesario para que SLAAC (configuración automática de direcciones sin estado) funcione. Incluso cuando SLAAC no está en uso, puede haber otras razones para usar / 64. Por ejemplo, puede haber algunos dispositivos de usuario final que solo asuman / 64, o bien el enrutamiento de subredes más largo que / 64 podría ser ineficiente en algunos enrutadores porque el implementador del enrutador ha optimizado el caso de / 64 o rutas más cortas para guardar tabla de enrutamiento de memoria.

¿Por qué se recomienda usar / 127 para enlaces punto a punto?

Para el caso específico de enlaces punto a punto, se recomienda / 127 en lugar de / 64 para evitar una vulnerabilidad en la que las direcciones de paquetes a cualquiera de los miles de millones de direcciones no utilizadas en la subred provocan solicitudes de solución de vecinos y entradas de tabla no deseadas que podría ahogar un enrutador. Dichos paquetes de direcciones incorrectas pueden ser maliciosos o accidentales. Pero incluso si realmente configura un enlace punto a punto como / 127, algunas personas abogan por asignar un / 64 completo de todos modos solo para ser coherente.

¿Por qué se aprovisionarían las máquinas virtuales con subredes más pequeñas que / 64?

No sé específicamente por qué las máquinas virtuales se aprovisionarían con subredes más pequeñas que / 64. ¿Quizás porque un proveedor de hosting supuso que un servidor era como un usuario final y requería solo una subred (/ 64), sin anticipar que el servidor sería en realidad una colección de máquinas virtuales que requieren una topología de enrutamiento interno? También se podría hacer simplemente para hacer que el plan de direccionamiento sea más fácil de memorizar: el host obtiene PREFIX::/64, luego cada VM llega a PREFIX:0:NNNN::/96donde NNNN es único para la VM y la VM puede asignar PREFIX:0:NNNN:XXXX:YYYYlo que quiera.

¿Puedo asignar directamente desde subredes IPv4 a subredes IPv6? Por ejemplo, ¿un IPv4 / 24 corresponde directamente a un IPv6 / 56 o / 120?

Desde una perspectiva de bajo nivel de cómo funciona el direccionamiento y el enrutamiento, la longitud del prefijo tiene el mismo significado en IPv6 e IPv4. En ese nivel, puede hacer una analogía como "un IPv4 / 16 usa la mitad de los bits para la dirección de red y la mitad de los bits para la dirección del host, que es como un / 64 en IPv6". Pero esta comparación no es realmente adecuada. Han surgido convenciones fuertes en IPv6 que hacen que las divisiones de tamaños de red se parezcan más al viejo mundo de las redes con clase en IPv4. Sin duda, IPv6 no reintrodujo el direccionamiento con clase en el que los pocos bits más significativos de la dirección fuerzan una máscara de red particular, pero lo que tiene IPv6 es ciertos tamaños de red estándar [de facto / convencionalmente]:

  • / 64 : el tamaño básico de una única subred: LAN, WAN, bloque de direcciones para hosts virtuales web, etc. Nunca se espera que las subredes "normales" sean más pequeñas (prefijo más largo) que / 64. Nunca se espera que las subredes sean más grandes (prefijo más corto) que / 64 ya que el valor de / 64 de las direcciones de host es mucho más de lo que podemos imaginar que necesitamos.
  • / 56 : un bloque de 256 subredes básicas. A pesar de que las políticas actuales permiten a los ISP entregar bloques tan grandes como / 48 a cada usuario final y todavía consideran que su utilización de direcciones está bien justificada, algunos ISP pueden (y ya lo hacen) elegir asignar un / 56 a clientes de grado de consumo como un compromiso entre asignaciones de muchas subredes para ellos y abordar la economía.
  • / 48 : un bloque de subredes básicas 65536 y el tamaño de bloque recomendado que debe recibir cada sitio final del cliente ISP.
  • / 32 : el tamaño de bloque predeterminado que recibirán la mayoría de los ISP cada vez que soliciten más direcciones de un registro de direcciones regional.

Dentro de las redes de proveedores de servicios y empresas, se pueden ver muchas más longitudes de prefijos que estas 4. Al observar las tablas de enrutamiento de los enrutadores dentro de estas redes, IPv4 e IPv6 tienen mucho en común, incluida la mayor parte del enrutamiento: las rutas para prefijos más largos anulan las rutas de cobertura para prefijos más cortos, por lo que es posible agregar (acortar) y perforar hacia abajo (hacer más largas) rutas. Al igual que en IPv4, las rutas se pueden agregar o resumir en bloques más grandes con prefijos más cortos para minimizar el tamaño de las tablas de enrutamiento.

Una cuestión diferente de mapeo entre IPv4 e IPv6 sería cómo armonizar las asignaciones de IPv4 e IPv6 en máquinas de doble pila para que los planes de direccionamiento puedan entenderse fácilmente. Además, existen convenciones de uso común para hacer esto: incrustar el "número de subred" IPv4 en una parte del prefijo IPv6, ya sea con BCD (por ejemplo, se 10.0.234.0/24convierte 2001:db8:abcd:234::/64) o binario (se 10.0.234.0/24convierte 2001:db8:abcd:ea::/64).

Mis interfaces tienen varias direcciones IPv6. ¿La subred debe ser la misma para todos?

¡Absolutamente no! Se espera que los hosts IPv6 puedan tener múltiples hosts al tener varias direcciones IP simultáneamente que provienen de diferentes subredes, al igual que IPv4. Si se configuran automáticamente con SLAAC, entonces las diferentes subredes podrían provenir de anuncios de enrutadores de diferentes enrutadores.

¿Por qué a veces veo un% en lugar de un / en una dirección IPv6 y qué significa?

No verías uno en lugar del otro. Tienen diferentes significados. Una barra oblicua indica un prefijo (subred), lo que significa un bloque de direcciones que comienzan con los mismos nbits. Una dirección sin barra es una dirección de host. Puede pensar que dicha dirección tiene un "/ 128" implícito al final, lo que significa que todos los 128 bits están especificados.

El signo de porcentaje acompaña a una dirección de enlace local. En IPv6, cada interfaz tiene una dirección de enlace local además de cualquier otra dirección IP que pueda tener. Pero la cuestión es que las direcciones locales de enlace siempre están, sin excepción, en el fe80::/10bloque. Pero si intentamos hablar con un compañero usando una dirección local de enlace y el host local tiene múltiples interfaces, ¿cómo vamos a saber qué interfaz usar para hablar con este compañero? Normalmente, la tabla de enrutamiento nos dice qué interfaz usar para un prefijo particular, pero aquí nos dirá qué fe80::/10se puede acceder a través de cada interfaz.

La respuesta es que debemos decirle qué interfaz usar usando la sintaxis address%interface. Por ejemplo, fe80::1234:5678:8765:4321%eth0.

¿Estoy desperdiciando demasiadas subredes? ¿No vamos a salir corriendo de nuevo?

Nadie lo sabe. ¿Quién puede decir el futuro?

Pero considera esto. En IPv6, el número de subredes disponibles es el cuadrado del número de direcciones individuales disponibles en IPv4. Eso es realmente bastante. ¡No, quiero decir realmente mucho!

Pero aún así: estamos entregando automáticamente un / 32 a cualquier ISP que lo solicite, estamos entregando un / 48 a cada cliente de ISP. Quizás estamos exagerando y, después de todo, desperdiciaremos IPv6. Sin embargo, hay una disposición para esto: Sólo una octava parte del espacio de IPv6 ha sido puesto a disposición para su uso hasta el momento: 2000::/3. La idea es que si hacemos un desastre horrible del primer octavo y tenemos que revisar drásticamente las políticas liberales de asignación, podremos intentarlo 7 veces más antes de tener problemas.

Y finalmente: IPv6 no tiene que durar para siempre. Quizás tenga una vida útil más larga que IPv4 (una vida útil impresionante y ya no ha terminado), pero como todas las tecnologías, algún día dejará de importar. Solo necesitamos hacerlo hasta entonces.

Celada
fuente
13
Muy buena explicación! Especialmente sobre la mentalidad diferente. Si observa los números, verá que hay 536,870,912 / 32 (ISP pequeños) en 2000 :: / 3. Con una población mundial de 7 mil millones, es decir, un ISP por cada 13 personas, y cada uno de estos ISP puede tener 65.536 clientes con un / 48 cada uno. No hay que preocuparse por el desperdicio de direcciones todavía :-)
Sander Steffann
Sí, esta es una muy buena explicación.
Fergus
2
Buena explicación sobre los detalles específicos de 2000 :: / 3.
Koos van den Hout
55
Buena explicación +1 en el comentario final. Espero que todos ya hayan visto esto: xkcd.com/865
Nico
@SanderSteffann Y si llega a ser un problema, sería bastante razonable que los ISP asignen nuevos / 64s a usuarios residenciales en lugar de / 48s., Y que los ISP pequeños soliciten bloques de, digamos, 4096 de esos a la vez (/ 52 bloques ) El esquema actual está diseñado para dejar espacio para la expansión en cada capa.
immibis
45

IPv6 es de 128 bits, entonces, ¿por qué / 64 es la subred recomendada más pequeña para hosts?

En primer lugar, un poco de arte ASCII de los RFC para establecer la terminología:

|         n bits         |   m bits  |       128-n-m bits         |
+------------------------+-----------+----------------------------+
| global routing prefix  | subnet ID |       interface ID         |
+------------------------+-----------+----------------------------+

El prefijo de enrutamiento global generalmente identifica la red general a la que pertenece la dirección. Suele ser de 48 bits. La ID de interfaz identifica una interfaz de red dada. Suele ser de 64 bits. Los 16 bits restantes son su ID de subred.

OK, adelante con la explicación:

De acuerdo con RFC 4291 - Arquitectura de direccionamiento de la versión 6 de IP :

Todas las direcciones de unidifusión global que no sean las que comienzan con binary 000 tienen un campo de ID de interfaz de 64 bits.

Y RFC 5375 - Consideraciones de asignación de dirección de unidifusión IPv6 :

Una parte importante de un plan de direccionamiento IPv4 es decidir la longitud de cada prefijo de subred. A diferencia de IPv4, la arquitectura de direccionamiento de IPv6 [RFC4291] especifica que todas las subredes que utilizan direcciones y ULA globalmente únicas siempre tienen la misma longitud de prefijo de 64 bits.

Ignorando la excepción del prefijo 000, la ID de interfaz siempre es exactamente de 64 bits. Esta es otra forma de decir que todas las redes locales de transmisión son siempre de 64 bits . Si tiene una dirección IPv6, su máscara de red siempre es de 64 bits. Nunca más, nunca menos. Si se le asignó un espacio de direcciones más grande que ese (máscara de red más corta que 64 bits), entonces se supone que estará dividiendo ese espacio de direcciones en redes de 64 bits y manejando el enrutamiento usted mismo. Si le dieron una red más pequeña que esa (máscara de red más larga), entonces alguien la fastidió.

Entonces, ¿por qué 64 bits exactamente?

Como regla general, las direcciones IPv6 se configuran automáticamente en lugar de asignarse. El enrutador anunciará qué prefijo de red está disponible (prefijo de enrutamiento + ID de subred: primeros 64 bits), y su computadora completará los últimos 64 bits utilizando su propio identificador único. ¿Cómo aparece su computadora con un identificador único? Hay algunas posibilidades, la más común es usar la dirección MAC de su interfaz. Divide el MAC por la mitad (mitad del proveedor / mitad de serie), voltea el bit local universal en el lado del proveedor y vuelve a unirlos FF:FEen el medio. Así se 00:30:48:01:23:45convierte 0230:48ff:fe01:2345. Ahora coloque el prefijo de red de 64 bits anunciado en el lado izquierdo de eso, y tiene su dirección IP.

El punto importante aquí es que si sigue este esquema, no ocurrirán colisiones de direcciones IP. Dado que cada dispositivo en una red de transmisión dada NECESITA una dirección MAC única para funcionar, vincular la ID de la interfaz a la dirección MAC significa que mientras el tráfico de transmisión no colisione, tampoco lo harán las direcciones IPv6. El uso de 64 bits (en lugar de solo los 48 dedicados a las direcciones MAC) proporciona un poco de margen de maniobra más allá de las direcciones proporcionadas por este esquema (hay varios otros).

¿Hay otras situaciones en las que usaría una subred más pequeña que / 64?

No. No, a menos que estés roto. Bueno, es posible que tenga una justificación basada en los requisitos locales para configurar el enrutamiento manual con su red existente. Pero tenga en cuenta que al hacerlo, probablemente esté haciendo un desastre:

Desde RFC 5375 - Consideraciones de asignación de dirección de unidifusión IPv6 :

El uso de una longitud de prefijo de subred que no sea / 64 interrumpirá muchas funciones de IPv6, incluyendo Descubrimiento de vecinos (ND), Descubrimiento de vecinos seguros (ENVIAR) [RFC3971], extensiones de privacidad [RFC4941], partes de IPv6 móvil [RFC4866], Protocolo independiente Multicast - Modo disperso (PIM-SM) con Embedded-RP [RFC3956], y Site Multihoming por IPv6 Intermediation (SHIM6) [SHIM6], entre otros. Varias otras características actualmente en desarrollo, o propuestas, también se basan en prefijos de subred / 64.

....

Sin embargo, algunos administradores de red han usado prefijos más largos que / 64 para enlaces que conectan enrutadores, generalmente solo dos enrutadores en un enlace punto a punto. En los enlaces donde todas las direcciones se asignan mediante configuración manual, y todos los nodos en el enlace son enrutadores (no hosts finales) que son conocidos por la red, los administradores no necesitan ninguna de las características de IPv6 que dependen de prefijos de subred / 64, esto puede trabajar. No se recomienda usar prefijos de subred más largos que / 64 para uso general, y usarlos para enlaces que contienen hosts finales sería una idea especialmente mala, ya que es difícil predecir qué características de IPv6 usarán los hosts en el futuro.

¿Por qué se recomienda usar / 127 para enlaces punto a punto entre enrutadores, y por qué se recomendó en el pasado?

Es posible que desee pasar por alto RFC 3627 - El uso de la longitud del prefijo / 127 entre los enrutadores se considera perjudicial . Luego eche un vistazo al RFC 6164 subsiguiente : uso de prefijos IPv6 de 127 bits en enlaces entre enrutadores .

La objeción al uso de prefijos más largos que / 64 en los enrutadores tiene que ver con la configuración automática del enrutador que puede fallar en circunstancias excepcionales. La objeción al uso de prefijos más cortos que / 127 (solo para 2 hosts) tiene que ver con una serie de posibles problemas de denegación de servicio relacionados con los paquetes que se envían a las direcciones no enrutadas. Dado que los problemas de denegación de servicio en el mundo real son peores que las fallas teóricas de configuración automática, / 127 es el nuevo favorito.

¿Debo cambiar los enlaces de enrutador existentes para usar / 127?

Si controlas un enrutador IPv6, te recomiendo leer los dos RFC (¡son cortos!) Y decidir por ti mismo.

¿Puedo asignar directamente desde subredes IPv4 a subredes IPv6?

Por ejemplo, ¿un IPv4 / 24 corresponde directamente a un IPv6 / 56 o / 120?

Actualmente, si. ¿Recuerdas ese prefijo 000 que intencionalmente ignoramos antes? Bueno, aquí hay un uso para ello:

En los sistemas de doble pila (con las pilas IPv4 e IPv6 activas), puede representar IPv4 utilizando la mecánica de IPv6. Lo llaman " direcciones IPv6 asignadas a IPv4 ". El patrón es todo ceros, seguido de FFFF, seguido de la dirección IPv4 de 32 bits.

Por lo tanto, 192.168.100.21se convierte en ::FFFF:C0A8:6415- o más simplemente: ::FFFF:192.168.100.21. Dado que ese bit de la derecha representa una dirección IPv4, se escribe tradicionalmente usando forma decimal con puntos.

Como se trata de una dirección IPv4 real, todavía utiliza encabezados IPv4, etc., lo que significa que debe haber una pila de IPv4, deben establecerse rutas de IPv4 y todo eso. La ventaja es que puede representar las direcciones IPv4 e IPv6 utilizando una sola estructura de direcciones, lo que puede simplificar el desarrollo de aplicaciones. No hace una gran diferencia en lo que respecta a la red.

tylerl
fuente
20
  1. IPv6 es de 128 bits, entonces, ¿por qué / 64 es la subred recomendada más pequeña para hosts?

    Este tamaño de prefijo se recomendó originalmente en un RFC anterior; desde entonces ha habido una revisión de esta política en la que se considera el problema de los ataques de descubrimiento de vecinos y el uso de / 126 es una mitigación válida; sin embargo, si está configurando enlaces PtP con el Con el único propósito de enrutar el tráfico, una opción alternativa es simplemente quedarse con un / 64 y cortafuegos en esa subred. Mejor aún, ubíquese un grupo del que extraerá / 64 subredes, y tenga ese grupo completo como un destino en la lista negra en su borde (y en cualquier otro lugar del que pueda surgir hostilidad)

  2. ¿Por qué se recomienda usar / 127 para enlaces punto a punto entre enrutadores, y por qué se recomendó en el pasado? ¿Debo cambiar los enlaces de enrutador existentes para usar / 127?

    / 127 no se recomienda entre enrutadores y nunca lo fue: la dirección Anycast de todos los enrutadores es la dirección de todos los ceros de la subred; esto significa que / 127 técnicamente solo es válido entre dos máquinas donde una de ellas NO actúa como enrutador. / 126 por supuesto está bien.

    Sin embargo, en cualquier caso, no recomendaría cambiar los enlaces existentes / 64 a menos que su equipo sea vulnerable a un ataque de inundación de caché de Discovery de Vecino, e incluso en este caso, primero determine si realmente va a usar ese / 64 para la conectividad a Internet , si la respuesta es no, solo cortafuegos.

  3. ¿Por qué se aprovisionarían las máquinas virtuales con subredes más pequeñas que / 64?

    Esto rompe SLAAC y RA, a menos que realmente, realmente sabe lo que está haciendo, es poco probable que usted tiene una buena razón para hacer esto - tal vez su aguas arriba sólo le dio una sola / 64 pero si ese es el caso, tiene que ir volver a ellos y pedir más, si quieren cobrarle por ello, comience a buscar un nuevo proveedor y quizás también les envíe algunos correos electrónicos sarcásticos que se vinculen con los RFC relevantes.

  4. ¿Hay otras situaciones en las que usaría una subred más pequeña que / 64?

    ¿Honestamente? Probablemente no. Si pienso en una razón legítima en la que una subred más pequeña es preferible para fines distintos a la prevención de ataques NDP, editaré esta sección.

    Por el contrario, no son situaciones en las que usted no desea utilizar subredes menores a un / 64 - sobre todo en cualquier lugar que se ejecuta un entorno con equipos de reenvío de hardware (piensa en los routers de marca e interruptores L3) - algunos serán incapaces de hacer el enrutamiento de hardware de prefijos más largo que / 64, otros tienen que dividir la operación en múltiples comparaciones, por lo tanto, al menos debe hacer todo lo posible para asegurarse de que / 64 sea el prefijo más largo en su red troncal (OSPF / ISIS / EIGRP / etc.).

  5. ¿Puedo asignar directamente desde subredes IPv4 a subredes IPv6? Por ejemplo, ¿un IPv4 / 24 corresponde directamente a un IPv6 / 56 o / 120?

    Oficialmente, :: ffff: xxxx es el formato para una dirección IPv4 asignada a IPv6; por supuesto, también hay una serie de mecanismos de transición, a saber, 6to4 y su relativo, 6rd, que asignan una dirección IPv4 a una IPv6 global para los fines de proporcionar acceso IPv6 a través de IPv4 creando un prefijo IPv6 que se deriva de la dirección IPv4 que se transfiere.

  6. Mis interfaces tienen varias direcciones IPv6. ¿La subred debe ser la misma para todos?

    No, el uso de diferentes direcciones y tamaños de subred en la misma interfaz no debería ser un problema. Si es así, la implementación tiene errores. Por supuesto, una mejor pregunta es ¿por qué estarías haciendo esto?

  7. ¿Por qué a veces veo un% en lugar de un / en una dirección IPv6 y qué significa?

    Este es un delimitador, generalmente aplicado a direcciones locales de enlace (fe80 :: / 12) - dado que la misma dirección local de enlace puede existir legítimamente en múltiples interfaces, el delimitador% se usa para permitir especificar a qué interfaz se refiere. Linux generalmente hace que la especificación de la interfaz sea obligatoria cuando se realizan operaciones que involucran un enlace local. Windows Vista / 2008 y posteriores son un poco más inteligentes y no se quejarán a menos que un enlace local no sea único.

  8. ¿Estoy desperdiciando demasiadas subredes? ¿No vamos a salir corriendo de nuevo?

    No. Este es un caballo muerto que ha sido azotado WAAAAAAAAAY demasiadas veces, el actual Internet Global IPv6 es 2000 :: / 3, hay varios prefijos más que IANA podría comenzar a usar si, de alguna manera, cada RIR en el planeta lograra agotar su abordar las existencias. Entonces, no, no nos quedaremos sin espacio, e incluso si lo hacemos, se requiere un movimiento rápido de un bolígrafo para que aparezca un nuevo prefijo, no un cambio técnico. Lo único que realmente destaca esta pregunta es la incapacidad de la mente humana para comprender completamente cuán ridículamente vasto es el espacio de direcciones.

  9. ¿En qué otras formas principales es la división en subredes IPv6 diferente de la división en subredes IPv4?

    Además de no preocuparse por la cantidad de espacio que está utilizando, recuerde que no hay una dirección de difusión y que la dirección de "subred cero" ahora es la dirección de difusión ilimitada de todos los enrutadores (que es básicamente una dirección que existe implícitamente en todos los nodos configurados para reenviar paquetes IPv6) - esto tiene un efecto secundario útil de permitirle usar esa dirección de todos los ceros como su ruta predeterminada en una red (no, no causará la duplicación de paquetes, es CUALQUIER transmisión, no MULTIcast) - tenga en cuenta aunque el host puede cambiar entre enrutadores cada pocos segundos, por lo que esto no es apropiado para una configuración de firewall con estado si el seguimiento de la conexión no se sincroniza entre ellos.

    Aparte de esto, la otra gran diferencia es que IPv6 se preocupa por las direcciones duplicadas y los vecinos muertos (NUD); por lo tanto, a diferencia de IPv4, un host se negará a usar una dirección si puede determinar que otro nodo en el enlace ya lo está utilizando. . NUD, por otro lado, es útil si está configurando rutas estáticas: en realidad puede definir múltiples rutas separadas para un prefijo con diferentes métricas y funcionarán, a diferencia de IPv4, donde se usará la ruta de métrica más baja, independientemente de si la siguiente -hop está vivo o muerto (aunque esto puede no ser cierto para algunas implementaciones de IPv4 que usan ARP para validar rutas como Cisco y otros proveedores importantes de enrutadores)

    TLDR; IPv6 detecta direcciones duplicadas y vecinos inalcanzables. La dirección de todo cero es todos los enrutadores de difusión ilimitada y no existe tal cosa como difusión, todos es una dirección normal.

Olipro
fuente
3
En respuesta a la respuesta 2) ... tools.ietf.org/html/rfc6164 tools.ietf.org/html/rfc6547
cpt_fink
3

Para aquellos que se preguntan de dónde proviene el requisito / 64 para SLAAC, aquí hay algunas referencias adicionales:

Desde la configuración automática de direcciones sin estado IPv6 (RFC 4862) :

Si la suma de la longitud del prefijo y la longitud del identificador de interfaz no es igual a 128 bits, la opción de información de prefijo DEBE ignorarse. [...]

Es responsabilidad del administrador del sistema asegurarse de que la longitud de los prefijos contenidos en los anuncios de enrutador sean consistentes con la longitud de los identificadores de interfaz para ese tipo de enlace.

Y de la arquitectura de direccionamiento IP versión 6 (RFC 4291) :

Para todas las direcciones de unidifusión, excepto aquellas que comienzan con el valor binario 000, se requiere que las ID de interfaz tengan 64 bits de longitud y se construyan en formato EUI-64 modificado.

Por lo tanto, debido a que la ID de la interfaz debe tener 64 bits de largo y la suma de la longitud del prefijo y la longitud de la ID de la interfaz debe ser de 128, la única longitud posible del prefijo cuando se usa SLAAC es de 64 bits.

Sander Steffann
fuente
2

IPv6 es de 128 bits, entonces, ¿por qué / 64 es la subred recomendada más pequeña para hosts?

Porque a los proponentes de IPv6 les gustó la idea de la configuración automática sin estado.

Si opta por cualquier otro tamaño de subred, la configuración automática sin estado se interrumpirá. Algunas otras cosas menores también pueden romperse, lea rfc7421 para obtener más detalles.

Personalmente, creo que la autoconfiguración sin estado es una idea tonta de todos modos. Conduce a direcciones ilegibles y básicamente no le da ningún control sobre el direccionamiento más allá de asignar el bloque a la subred.

Por supuesto, lo que pasa con las convenciones es que si las sigues y las cosas salen mal, puedes señalar la convención, si te niegas a seguirlas y las cosas salen mal, será tu culpa.

¿Por qué se recomienda usar / 127 para enlaces punto a punto entre enrutadores,

El uso de subredes con un pequeño número de direcciones disponibles evita los ataques de agotamiento de descubrimiento de vecinos.

Por supuesto, este razonamiento no solo se aplica a enlaces punto a punto. Supongo que era políticamente posible hacer esta recomendación para enlaces de enrutador punto a punto, pero políticamente no es posible hacerlo para otros enlaces.

¿Por qué se aprovisionarían las máquinas virtuales con menos de un / 64 de direcciones?

Necesitamos hacer una distinción aquí. Hay dos formas en que un proveedor de alojamiento puede asignar direcciones a una máquina (ya sea física o virtual).

Pueden asignarles direcciones "en enlace" donde se espera que la máquina responda a las solicitudes de descubrimiento vecinas. Algunos proveedores de hosting optaron por dar a cada máquina un / 64 que tiene ventajas en la movilidad de direcciones, otros le dan a cada VLAN un / 64 y luego le dan a los equipos individuales subbloques de aquello que usa menos direcciones y puede significar que el tráfico local permanece local en lugar de pasando a un enrutador.

O pueden tratar la máquina como un enrutador y asignarle un bloque enrutado. En este caso, necesitaría suficientes direcciones para abordar todas sus subredes internas. Si sigue la convención "todas las subredes deben ser / 64", eso significaría asignarle al menos un / 64 y posiblemente más. Esto tiene sentido para máquinas que tienen "redes dentro de la máquina", por ejemplo, un host contenedor.

¿Puedo asignar directamente desde subredes IPv4 a subredes IPv6? Por ejemplo, ¿un IPv4 / 24 corresponde directamente a un IPv6 / 56 o / 120?

Cualquier mapeo de este tipo es un asunto de política local.

Mis interfaces tienen varias direcciones IPv6. ¿La subred debe ser la misma para todos?

No

¿Por qué a veces veo un% en lugar de un / en una dirección IPv6 y qué significa?

% es un identificador de interfaz. Se utiliza junto con direcciones locales de enlace. Es necesario ya que una máquina puede tener múltiples interfaces y las redes conectadas a esas interfaces pueden tener direcciones locales de enlace superpuestas.

¿Estoy desperdiciando demasiadas subredes? ¿No vamos a salir corriendo de nuevo?

No me preocuparía demasiado por eso.

Incluso con la extraña decisión de los diseñadores de IPv6 de usar un espacio de direcciones de 128 bits y luego desechar casi la mitad en la configuración automática sin estado, IPv6 todavía tiene mucho más espacio que IPv4.

Y si hubiera un crujido, tomaría poco más que un golpe de bolígrafo para revertir esa extraña decisión.

Una preocupación mucho mayor con la escalabilidad de IPv6 es el tamaño de la tabla de enrutamiento. IPv6 NAT se desaconseja encarecidamente. La ejecución de una red grande en direcciones asignadas por el proveedor conlleva un riesgo significativo de bloqueo del proveedor.

Por lo tanto, creo que a medida que aumente la penetración de IPv6 en las redes corporativas, veremos una explosión en las solicitudes de espacio IPv6 independiente del proveedor.

Peter Green
fuente