Pregunta

Esta es una pregunta un poco oscura, pero estoy perplejo y pensé que tal vez alguien por ahí podría tener más de una pista sobre el tema.

Mi compañero de trabajo ha estado funcionando con éxito una aplicación interna que utiliza la multidifusión IPv6 en su MacBook Pro durante varios meses, pero hoy el Mac decidió dejar de enrutamiento de los paquetes de multidifusión. En particular, el programa imprime este error:

SendDataUDP (FF02 :: grano: cede: escritura: alimentación @ 4) falló en la interfaz de Red [Name = [en0] Descripción = [] IP = [fe80 :: 222: 41ff: FE21: dfd4 @ 4] Máscara de red = . [ffff: ffff: ffff: ffff ::] Broadcast = [::]] (errno = 65 / No ruta al host)

..., que describe bastante bien lo que salió mal ... se trató de sendto () un paquete UDP a la dirección IP que se muestra, y enviar () falló con errno = EHOSTUNREACH.

Lo que no entiendo es, ¿qué podría causar un vínculo de alcance dirección multicast IPv6 sea "inalcanzable"? Si mi comprensión de multidifusión vínculo de alcance es correcta, el paquete sólo se tiene que salir del puerto local Ethernet (en0 en este caso, lo que está en marcha y trabajando en esa máquina).

¿Hay algún aspecto de multidifusión que me falta, o es sólo borked su máquina? Dice que no ha cambiado nada, sólo misteriosamente dejó de funcionar.

¿Fue útil?

Solución

Podría ayudar a mirar el fuente del núcleo. (En particular, el camino de salida de salida de paquetes IPv6, ip6_output.c) Mientras estás ahí, se podría también echar un vistazo a las llamadas de socket que conducen a ella, etc.

Para multidifusión, asumiendo que usted está haciendo a ip6_output(), parece que la única manera posible para obtener este error si no especifica la interfaz para enviar sucesivamente. (Que es extraño, ya que su mensaje de error menciona explícitamente la interfaz)

¿Es posible que la interfaz inalámbrica en este MacBook se ha habilitado cuando no lo era antes, y ahora la idea de una multidifusión "de enlace local" es ambiguo? ¿Está especificar explícitamente la interfaz cuando se utiliza la toma? El @ 4 al final de la dirección se ve extraño para mí. (¿Es que un índice de interfaz?) La convención es por lo general a utilizar % para una interfaz de alcance-id, pero como se ha señalado en la respuesta anterior y sus comentarios, no es universalmente compatible.

Otros consejos

Para probar si en0 sigue siendo capaz de transmitir las solicitudes de multidifusión de enlace local, intente

ping6 ff02::1%en0

Este contactos todos los hosts, por lo que debe obtener un montón de respuestas (por diversión, trate de añadir -w).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top