链路范围IPv6组播数据突然无法在MacBook Pro上可路由? [英] Link-scope IPv6 Multicast packets suddenly not routable on a MacBook Pro?

查看:317
本文介绍了链路范围IPv6组播数据突然无法在MacBook Pro上可路由?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是一个稍微模糊的问题,但我很为难,我想也许有人在那里可能有更多的线索上的问题。

This is a slightly obscure question, but I'm stumped and I thought maybe somebody out there might have more of a clue on the issue.

我的同事已经成功运行了他的MacBook Pro几个月使用IPv6组播一个内部的应用程序,但今天在Mac决定停止路由组播报文。特别是,程序打印这个错误:

My co-worker has been successfully running an in-house application that uses IPv6 multicasting on his MacBook Pro for several months, but today the Mac decided to stop routing the multicast packets. In particular, the program prints this error:

SendDataUDP(FF02 ::珠:半寸:契税:饲料@ 4)故障的网络接口[名称= [EN0]说明= [] IP = [FE80 :: 222:41ff:FE21:dfd4 @ 4] =子网掩码[FFFF:FFFF:FFFF:FFFF ::]广播= [:](错误= 65 /没有到主机的路由)

SendDataUDP(ff02::bead:cede:deed:feed@4) failed on Network interface [Name=[en0] Description=[] IP=[fe80::222:41ff:fe21:dfd4@4] Netmask=[ffff:ffff:ffff:ffff::] Broadcast=[::]] (errno=65/No route to host).

...其中pretty以及描述出了什么问题......它试图SENDTO()一个UDP包,显示的IP地址,并发送(),并将errno = EHOSTUNREACH失败。

... which pretty well describes what went wrong... it tried to sendto() a UDP packet to the IP address shown, and send() failed with errno=EHOSTUNREACH.

我不明白的是,有什么可能会造成一个IPv6链路范围的组播地址是不可达?如果我的链路范围的组播的理解是正确的,包只有去了当地的以太网端口(EN0在这种情况下,这是和工作的那台机器上)。

What I don't understand is, what could possibly cause an IPv6 link-scope multicast address to be "unreachable"? If my understanding of link-scope multicast is correct, the packet only has to go out the local ethernet port (en0 in this case, which is up and working on that machine).

有一些方面多播我失踪,或者他的机器只是borked?他说,他没有任何改变,只是神秘地停止了工作。

Is there some aspect to multicasting that I'm missing, or is his machine just borked? He says he didn't change anything, it just mysteriously stopped working.

推荐答案

这可能有助于看的内核源。 (尤其是出口IPv6报文的出口路径,ip6_output.c)当你在里面,你也可以看看的套接字调用导致它,等等。

It might help to look at the kernel source. (In particular, the egress IPv6 packet egress path, ip6_output.c) While you're in there, you could also take a look at the socket calls leading up to it, etc.

有关组播,假设你做它 ip6_output(),它看起来像唯一可能的方式得到这个错误是由不指定接口上发送。 (这是奇怪,因为您的错误信息明确提到接口)

For multicast, assuming you're making it to ip6_output(), it looks like the only possible way to get this error is by not specifying the interface to send on. (which is odd since your error message explicitly mentions the interface)

是否有可能,当它以前并不在这款MacBook无线接口已启用,现在链路本地多播的概念是模糊的?你是否显式指定接口时,可以使用socket?在地址的末尾@ 4看起来很奇怪我。 (那是一个接口索引?)的约定,通常是使用为一个接口范围-ID,但作为在previous答案,它的评论指出,这是没有得到普遍支持。

Is it possible that the wireless interface on this MacBook has been enabled when it wasn't before, and now the idea of a "link-local" multicast is ambiguous? Are you explicitly specifying the interface when you use the socket? The @4 at the end of the address looks odd to me. (Is that an interface index?) The convention is usually to use % for an interface scope-id, but as noted in the previous answer and its comments, it's not universally supported.

这篇关于链路范围IPv6组播数据突然无法在MacBook Pro上可路由?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆