2009-08-12 8 views
4

これはやや不明瞭な質問ですが、私は困惑しており、そこにいる誰かがこの問題についてより多くの手がかりを持つかもしれないと考えました。リンクスコープのIPv6マルチキャストパケットが突然MacBook Proでルーティングできないのですか?

私の同僚は、MacBook ProでIPv6マルチキャストを数ヶ月使用している社内アプリケーションを正常に実行していましたが、今日、Macはマルチキャストパケットのルーティングをやめることにしました。特に、プログラムはこのエラーを出力します:

SendDataUDP(ff02 :: bead:cede:deed:feed @ 4)ネットワークインターフェイス[Name = [en0] Description = [] IP = [fe80 :: 222: 41ff:fe21:dfd4 @ 4] Netmask = [ffff:ffff:ffff:ffff ::]ブロードキャスト= [::]](errno = 65 /ホストへのルートなし)。

...何が間違っているかをよく説明しています...示されたIPアドレスにUDPパケットを送信しようとしましたが、send()はerrno = EHOSTUNREACHで失敗しました。

私が理解できないことは、IPv6リンクスコープのマルチキャストアドレスが「到達不能」になる可能性があることです。リンクスコープのマルチキャストについて私が理解している場合、パケットはローカルのイーサネットポート(この場合はen0)から出て、そのマシン上で動作していなければなりません。

マルチキャストにはいくつかの側面がありますか?私は行方不明か、彼のマシンはボルケーですか?彼は何も変えていないと言います。それは不思議なことに仕事を止めました。

+0

Hmm。最小限のコードサンプルを投稿できますか?私は私のMacでそれをテストし、私はここでそれを再現/デバッグできるかどうかを見てみましょう。 –

答えて

2

kernel sourceをご覧ください。 (特に、出力IPv6パケット出口パス、ip6_output.c)あなたがそこにいる間に、それまでのソケット呼び出しを見ることもできます。

マルチキャストの場合、 ip6_output()にすると、このエラーを出す唯一の方法は、送信するインターフェイスを指定しないことによると思われます。

このMacBookのワイヤレスインターフェイスが以前になくても有効になっている可能性があります。現在、「リンクローカル」マルチキャストのアイデアがありますあいまいですか?ソケットを使用するときにインターフェイスを明示的に指定していますか?アドレスの末尾の@ 4は私にとって奇妙に見えます。 (これはインターフェイスインデックスですか?)通常、インターフェイススコープIDには%を使用しますが、前の回答とそのコメントに記載されているように、普遍的にはサポートされていません。

+2

MacOS/Xでは、少なくともここで問題を見つけ出しました。少なくとも、sendto()呼び出しの宛先アドレスにインタフェースインデックスを入れるだけでは不十分です。 OSは、使用する独自のインタフェースインデックスを選択したり、時にはそれを無視したり、問題を引き起こしたりすることがあります。回避策は、sendto()アドレス引数でインタフェースインデックスを指定するのではなく、(またはそれに加えて)必要に応じてsetsockopt(fd、IPPROTO_IPV6、IPV6_MULTICAST_IF、&myIdx、sizeof(myIdx))をソケットに呼び出すことです。それがバグか "フィーチャー"なのか分かりません。 –

2

、EN0はまだリンクローカルマルチキャスト要求を送信することが可能であるかどうかをテストするために、すべてのホストこの連絡先

ping6 ff02::1%en0 

を試してみてください、あなたは(楽しみのために、-wを追加してみてください)応答の多くを取得する必要があります。

+1

面白い、それはうまくいかなかった、私は '-I'オプションを使ってping6にイーサネットアドレスを指定しなければならなかった。 のJDK-MBP:〜jeffk $にping6 FF02 :: 1%EN0 にping6:UDPは接続しないで: のJDK-MBPをホストへのルートを:〜jeffk $にping6 -I en0のFF02 :: 1 にping6(56 = fe80 :: 21f:f3ff:fed8:3680%en0、fic02 :: 1 fe80 :: 21f:f3ffからの16バイト:fed8:3680%en0、icmp_seq = 0 hlim = 64時間= 0.131 ms – jdkoftinoff

関連する問題