IPv6: diferencias entre "prefijo enrutado" y "prefijo de enlace"?

14

¿Cuáles son las diferencias exactas entre "prefijo enrutado" y "prefijo de enlace" para IPv6?
¿Cómo hacen estas diferencias en un Wirehark-Trace? (si observa un Host con un "prefijo enrutado" asignado o un Host con un "prefijo de enlace" asignado).
¿Cómo estas diferencias en el Protocolo de Descubrimiento de Vecinos? (desde el punto de vista de otro host externo)
¿Trabajan juntos estos dos tipos de prefijos?

Erik
fuente

Respuestas:

19

La manera más fácil de entender la diferencia entre los dos es a través de un ejemplo que muestre la naturaleza jerárquica de los prefijos.

Un ejemplo de jerarquía

A un ISP se le ha asignado un prefijo de un RIR (Registro regional de Internet) que en este ejemplo asumiremos que es 2001:db8::/32. Este prefijo es diferente de los que se transmiten a los clientes en el sentido de que el ISP tendrá que anunciarlo a través de BGP a otros ISP con los que esté vinculado.

El ISP ahora va a asignar prefijos a un cliente. Primero se asignan 2001:db8:0:1::/64al enlace que conecta el enrutador ISP al enrutador CPE (equipo del cliente). Este es un prefijo de enlace porque está asignado a un enlace. Como recomendación general, todos los prefijos de enlaces en IPv6 deben ser /64.

El enrutador ISP enviará anuncios de enrutador anunciando este prefijo y el CPE usará SLAAC para construir una dirección para la interfaz externa que apunte hacia el enrutador ISP dentro del /64. Supongamos que la interfaz externa tiene la dirección IP 2001:db8:0:1:42:ff:fe00:42/64(en esta notación /64se incluye para recordarnos cuál es la longitud del prefijo del enlace, pero también podría haberlo omitido).

Este prefijo de enlace es suficiente para que el enrutador CPE se comunique con el resto del mundo, pero no ayuda al enrutador CPE a admitir clientes en la LAN conectados a su interfaz interna. El enrutador CPE necesita un prefijo para la LAN que se enruta a través de este enrutador CPE, por lo tanto, esto se denomina prefijo enrutado .

El prefijo enrutado se puede configurar de forma estática o mediante DHCPv6. Los detalles exactos de cómo el enrutador CPE negocia una longitud de prefijo con el servidor DHCPv6 proporcionado por el ISP está fuera del alcance de esta respuesta. Una búsqueda de delegación de prefijo puede darle más información sobre esto. Supongamos que el prefijo enrutado termina siendo 2001:db8:1::/48. En el enrutador ISP, se creará una entrada en la tabla de enrutamiento que indica que 2001:db8:1::/48debe enrutarse a través de la puerta de enlace 2001:db8:0:1:42:ff:fe00:42. Esta entrada de la tabla de enrutamiento es la característica definitoria del prefijo enrutado.

El enrutador CPE puede tener múltiples LAN internas, desde /48allí puede asignar un /64prefijo de enlace a cada LAN interna. Si suponemos que una de las LAN ha sido asignada 2001:db8:1:1::/64como su prefijo de enlace, un nodo en este enlace puede obtener la dirección a 2001:db8:1:1::42:ff:fe00:43través de SLAAC. Ese nodo podría ser un enrutador inalámbrico que necesita un prefijo para su interfaz inalámbrica. El CPE podría asignarse 2001:db8:1:100::/60como el prefijo enrutado para el enrutador inalámbrico, y el enrutador inalámbrico podría asignarse 2001:db8:1:100::/64como el prefijo de enlace para la interfaz inalámbrica.

Ahora, en tal configuración, lo que tenemos es una jerarquía de prefijos. Los siguientes están anidados uno debajo del otro:

  • 2001:db8::/32 BGP anunció el prefijo
  • 2001:db8:1::/48 prefijo enrutado
  • 2001:db8:1:100::/60 prefijo enrutado
  • 2001:db8:1:100::/64 prefijo de enlace

¿Cómo se manejan realmente los paquetes?

Cuando el enrutador ISP recibe un paquete para el 2001:db8:0:1::/64cual es un prefijo de enlace, realiza un descubrimiento vecino para encontrar la dirección MAC del host dentro del /64.

De esta forma, el enrutador ISP necesitará una entrada de caché vecina separada para cada dirección IP dentro del prefijo de enlace.

Cuando el enrutador ISP recibe un paquete 2001:db8:1::/48cuyo prefijo enrutado, realiza un descubrimiento vecino para encontrar la dirección MAC de la puerta de enlace 2001:db8:0:1:42:ff:fe00:42.

De esta forma, el enrutador ISP solo necesita una entrada de caché vecina para la puerta de enlace para enrutar los paquetes a cualquier dirección IP dentro del prefijo enrutado. Esta propiedad es crucial para la escalabilidad de internet.

Trabajando alrededor de la falta de prefijo enrutado

Ocasionalmente, los clientes se encuentran atrapados con un ISP que solo proporcionará un prefijo de enlace y ningún prefijo enrutado. En tal situación, es posible que el cliente instale un demonio que responda al descubrimiento de vecinos para todas las direcciones IP dentro de un subrango específico del prefijo de enlace. Esto tendrá un efecto similar a la configuración de ese prefijo como un prefijo enrutado. Pero tiene varios inconvenientes:

  • En general, se supone que los prefijos enrutados son más cortos que /64, pero el demonio que responde a las solicitudes de descubrimiento vecinas solo puede crear un prefijo "enrutado" que es más largo que /64.
  • Aumenta ligeramente la latencia debido a un viaje de ida y vuelta adicional cada vez que una dirección IP no está en el caché vecino en el enrutador ISP.
  • Aumenta la carga en el enrutador ISP debido a la necesidad de un descubrimiento de vecinos mucho más frecuente. Es muy probable que el enrutador ISP pueda reenviar paquetes a un prefijo de destino ya conocido únicamente en hardware, pero el descubrimiento de vecinos se realizará en software.
  • Aumenta el consumo de memoria en el enrutador ISP. Si el ISP asigna un prefijo enrutado a cada cliente, puede salirse con la suya teniendo solo una entrada de caché vecina por cliente. Pero con el demonio de respuesta vecino, esto podría convertirse en miles de entradas por cliente.

La sobrecarga de procesamiento en el enrutador ISP puede ser un problema importante. Algunos enrutadores han sido tan malos en el manejo de una avalancha de paquetes que necesitan descubrimiento vecino que se convirtió en un ataque DoS real, y el uso de prefijos de enlace más largos (en el rango /120- 127) se ha utilizado como solución alternativa para tales ataques DoS.

Incluso si el enrutador no es vulnerable al ataque DoS, la memoria necesaria para las entradas de caché vecinas cuando se usa la solución descrita anteriormente es mucho más costosa para el ISP que las direcciones IP para un prefijo enrutado, por lo que hay pocas razones para que un ISP se niegue a entregar un prefijo enrutado.

Casos especiales alrededor de enlaces punto a punto

En los enlaces punto a punto (como túneles 6in4 y enlaces PPP) no hay necesidad de descubrir vecinos. Solo hay una dirección para enviar un paquete en dicho enlace y no es necesario buscar ninguna dirección de hardware antes de enviar el paquete.

Esto significa que la sobrecarga del descubrimiento de vecinos no es un problema en dicho enlace. Por lo tanto, tener un extremo de un enlace punto a punto usar muchas direcciones no es un problema, siempre y cuando los puntos finales tengan algún acuerdo sobre quién usa qué direcciones. La falta de descubrimiento de vecinos significa que tampoco hay detección de direcciones duplicadas, por lo que si ambos puntos finales intentan usar la misma dirección, no funcionará como se esperaba (a menos que espere que se comporte como una dirección de difusión ilimitada).

Hay una advertencia a tener en cuenta en los enlaces punto a punto. Cada punto final supondrá que todas las direcciones en el enlace que no está asignado se asignan al otro extremo. Esto significa que las direcciones no utilizadas en un enlace punto a punto son propensas a desencadenar un bucle de enrutamiento. Tal bucle de enrutamiento (y varios otros casos de bucles de enrutamiento) pueden evitarse mediante un punto final que nunca envíe un paquete directamente de regreso al nodo desde el que se recibió. Por lo tanto, un paquete recibido de un enlace punto a punto no debe enviarse de regreso a través del mismo enlace punto a punto, siempre que un punto final lo haga correctamente, el bucle de enrutamiento está roto. Como nodo lateral en Ethernet, es válido recibir un paquete y reenviarlo al mismo enlace, pero es una buena idea evitar hacerlo si se reenvía a la misma dirección MAC desde donde se recibió.

Dado que la mayoría de las direcciones en un enlace punto a punto simplemente se reenviarán al otro extremo del enlace sin necesidad de descubrimiento de vecinos, se ve muy similar a un prefijo enrutado. Por ejemplo, si el ISP asignó 2001: db8: 42 :: / 64 a un enlace punto a punto con los puntos finales asignados a las direcciones 2001: db8: 42 :: 1 y 2001: db8: 42 :: 2, entonces los paquetes a la mayoría de las direcciones en 2001: db8: 42 :: / 64 se reenviará desde el ISP al cliente de la misma manera que lo haría si fuera un prefijo enrutado utilizando 2001: db8: 42 :: 2 como puerta de enlace.

Esto significa que cierto hack es posible. En el CPE es posible configurar 2001: db8: 42 :: / 64 como prefijo de enlace en la LAN. Para que el CPE sepa en cuál de los dos enlaces se encuentra un destino determinado, la configuración real en el enlace punto a punto hacia el ISP tendría que cambiarse a 2001: db8: 42 :: / 126. Todo esto funcionará con una excepción menor, los hosts en la LAN no pueden comunicarse con las cuatro direcciones IP en 2001: db8: 42 :: / 126. Dado que probablemente no necesitaban comunicarse con ellos de todos modos, este no es un problema importante. Sin embargo, no se recomienda usar este truco, la configuración adecuada es obtener un prefijo enrutado del ISP.

Otro truco para guardar direcciones es asignar solo direcciones globales para un prefijo enrutado y usar direcciones RFC 4193 para el enlace punto a punto. Sin embargo, este es un truco tonto ya que todavía presenta algunos inconvenientes para resolver un problema inexistente.

También es posible no asignar ningún prefijo a un enlace punto a punto. Siempre que cada punto final tenga otra interfaz en la que sí tenga una dirección global, pueden usar la dirección asignada a la otra interfaz cuando se comuniquen en el enlace punto a punto. No conozco ningún inconveniente de este enfoque, por lo que si encuentra que este enfoque de enlaces punto a punto simplifica la configuración de su red, siéntase libre de usarlo, pero no lo use como medida para guardar direcciones.

Casos de uso para un prefijo enrutado

  • El enrutamiento jerárquico como en mi primer ejemplo es para lo que están diseñados los prefijos enrutados.
  • Los VPN / túneles agregan otra capa a la jerarquía de enrutadores que necesitan prefijos. Aunque son hardware virtual en lugar de hardware real, no son diferentes en términos de direccionamiento y necesitan un prefijo enrutado como lo haría un enlace físico.
  • Asignación de muchas direcciones a un host . Hay casos de uso para asignar muchas direcciones a un solo host. Para algunas direcciones, simplemente se pueden asignar y manejar con el descubrimiento de vecinos para cada una de las entradas de caché, ya que hay direcciones. Pero si se necesitan miles de direcciones, un prefijo enrutado es mejor.

Un ejemplo más detallado del último punto serían los recursores DNS. Como no veo que DNSSEC tenga mucha tracción hasta que hayamos terminado de luchar con IPv4, se necesitan otras medidas contra el envenenamiento de DNS. Se ha realizado un esfuerzo para obtener la mayor cantidad de entropía posible en las consultas. La ID y el número de puerto pueden contener a lo sumo 32 bits de entropía, se pueden retener otros pocos bits en la solicitud si se mezclan mayúsculas y minúsculas en el nombre de dominio a resolver. Rara vez llegará a más de 48 bits en total de esta manera. La asignación de un /64recursor completo al DNS permitiría aumentar la entropía en 64 bits de una vez, lo que es más que todos los demás esfuerzos combinados.

kasperd
fuente
Me hubiera vinculado a un Q / A sobre CIDR si hubiera podido encontrar uno bueno. Definitivamente hay que entender CIDR antes de leer esta respuesta.
kasperd
Para CIDR parece que el artículo de Wikipedia está bien para mí, en mi opinión, un enlace a en.wikipedia.org/wiki/Classless_Inter-Domain_Routing es bueno para una mejor comprensión.
Erik
Tengo algunos problemas con tu respuesta. No cubren el comportamiento observado, ni para mi ISP en casa ni para el proveedor de alojamiento en mi servidor (ambos no usan el descubrimiento de vecinos clásico). <br /> Creo que necesito una descripción más detallada sobre el alcance principal de mi pregunta. ¿Debo actualizar mi pregunta o existir otra forma preferida? Lo siento, soy nuevo en serverfault.com / StackExchange.
Erik
Estoy confundido acerca de la situación que hablas. ¿Se refiere a un ISP (por ejemplo, en una línea DSL) para una conexión a Internet para un hogar privado o se refiere a un proveedor de alojamiento que conecta servidores (con LAN real basada en Ethernet)?
Erik
1
@ 1'OR1-- Si un paquete a cualquier dirección no utilizada dentro de los /48resultados en un paquete de solicitud vecino para la IP de destino, entonces, de hecho, parece que el proveedor configuró el /48como un prefijo de enlace. Configurar un /48como prefijo de enlace no es una configuración recomendada, pero he oído que los proveedores lo hacen de todos modos. Si se trata de un prefijo enrutado, independientemente de la dirección IP dentro del /48paquete al que se haya dirigido, la solicitud de vecino que vería sería para la misma dirección IP cada vez. Y una vez que respondiste a eso, no verías más solicitudes de vecinos.
Kasperd
3

Se utiliza un prefijo de enlace entre su enrutador y su ISP.

El prefijo enrutado se usa dentro de su red.

Si recibe un prefijo enrutado / 64 de su ISP, simplemente debería hacer que su enrutador anuncie ese prefijo en su LAN. Si tiene un prefijo más pequeño que / 64 (¿quizás un / 48?), Debería considerar cómo subredizar ese prefijo de manera lógica, para que lo utilicen todos sus enrutadores en su organización.

En Wireshark, dependiendo de dónde capture los paquetes, es posible que solo vea el prefijo enrutado que se está utilizando (si captura en la LAN) o puede ver los dos prefijos utilizados (si captura en la WAN).

Con respecto al protocolo de descubrimiento de vecinos, también depende del enlace. En el enlace entre el ISP y su enrutador, NDP se utiliza para descubrir la dirección MAC de la interfaz WAN de su enrutador y la dirección MAC del enrutador ascendente de su ISP. En su interfaz LAN, NDP se utiliza para descubrir la dirección MAC de los hosts en su segmento LAN.

Espero que esto ayude.

Scott Nelson
fuente
1
Es If you received a /64 from your ISP, then you would simply have your router advertise that prefix on your LANprobable que la oración sea ​​menos probable que se malinterprete si la hace explícita /64al referirse al prefijo enrutado.
kasperd
2

Un prefijo es un prefijo enrutado si los paquetes a ese prefijo deben pasar por un enrutador para llegar a su destino. Un prefijo es un prefijo de enlace si está en un segmento al que está conectada una interfaz de red local.

Como un paquete viaja a través de Internet, el / 64 al que está dirigido será un prefijo enrutado hasta que llegue al último salto. Entonces será un prefijo de enlace.

Los prefijos enrutados generalmente se agregan. Muchos / 64 se pueden agregar en un solo prefijo más corto para mantener las tablas de enrutamiento más pequeñas. En el límite entre los proveedores de internet, es común imponer una longitud máxima de prefijo de / 48.

Si un prefijo es cualquier cosa desde / 0 a / 63, generalmente puede suponer que es un prefijo enrutado. Si el prefijo es / 64, necesita más información para saber si es un enrutado o un prefijo de enlace.

rfc2460
fuente