web-dev-qa-db-ja.com

ネットワーク上のすべてのノードのIPv6マルチキャストアドレス

3つのノード(VM)を持つ基本的なネットワークがあります。

1つのノードがイベントを公開し、他のノードがそれをリッスンし、受信時に何かを出力します。以前は1対1で動作していましたが(ノードが他のノードに個別にイベントを提供するため)、マルチキャストを実装したいと考えています。

簡単な実験として、ネットワーク上で基本的な「ブロードキャスト」を実行したいのですが、正しいIPv6アドレスを特定できませんでした。 IPv4ブロードキャストアドレスを使用すると、両方のノードが何かを出力し、ノード1のアドレスは次のようになります。したがって、ノード1のアドレスは次のとおりです。 64スコープ:リンク

ノード2:inet addr:192.168.56.102 Bcast:192.168.56.255 Mask:255.255.255.0 inet6 addr:fe80 :: a00:27ff:fe56:a2f7/64スコープ:リンク

ノード3:inet addr:192.168.56.103 Bcast:192.168.56.255 Mask:255.255.255.0 inet6 addr:fe80 :: a00:27ff:fe82:ae4a/64 Scope:Link

したがって、IPv6にはブロードキャストがなく、代わりにマルチキャストを使用します。これらのマルチキャストアドレスは常にffで始まります。次に、フラグがあります。これは、割り当てられたmlcの場合はデフォルトで0、一時的な場合は1です。そしてスコープ。基本的なブロードキャストと同等のことをしたいので、すべてのノードに到達するff01 :: 1と、すべてのルーターのff01 :: 2を試しました。しかし、それはうまくいきません。私はff02、ff05、ff0eも試しました。私はここで何かを誤解しています、ノード1がイベントを公開するときにノード2とノード3に到達するための正しいマルチキャスト/ブロードキャストipv6アドレスは何ですか?

編集:

いくつかの実験の結果、inet6アドレスにpingすることさえできないことがわかりましたが、ipv4アドレスは可能です!何が起こっているのか手がかりはありますか?

7
Sven

リンク上のすべてのノードにマルチキャストする正しいアドレスはff02::1%<interface>です。インターフェイスIDを忘れた可能性があります リンクスコープのアドレスに必要

例えば:

# ping6 ff02::1%br0
PING ff02::1%br0(ff02::1) 56 data bytes
64 bytes from fe80::6e62:6dff:fed1:dfad: icmp_seq=1 ttl=64 time=0.052 ms
64 bytes from fe80::5054:ff:fede:b69c: icmp_seq=1 ttl=64 time=0.455 ms (DUP!)
64 bytes from fe80::5054:ff:fe90:de19: icmp_seq=1 ttl=64 time=0.650 ms (DUP!)
64 bytes from fe80::6e62:6dff:fed1:dfad: icmp_seq=2 ttl=64 time=0.046 ms
64 bytes from fe80::5054:ff:fe90:de19: icmp_seq=2 ttl=64 time=0.203 ms (DUP!)
64 bytes from fe80::5054:ff:fede:b69c: icmp_seq=2 ttl=64 time=0.241 ms (DUP!)
64 bytes from fe80::6e62:6dff:fed1:dfad: icmp_seq=3 ttl=64 time=0.064 ms
64 bytes from fe80::5054:ff:fe90:de19: icmp_seq=3 ttl=64 time=0.237 ms (DUP!)
64 bytes from fe80::5054:ff:fede:b69c: icmp_seq=3 ttl=64 time=0.254 ms (DUP!)
^C
--- ff02::1%br0 ping statistics ---
3 packets transmitted, 3 received, +6 duplicates, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.046/0.244/0.650/0.189 ms

ff01::/16のアドレスは、interface-ローカルマルチキャスト用です。これは、ローカルホストへのマルチキャストにのみ役立ちます。

参照: RFC 4291

9
Michael Hampton

引数にインターフェイスを含めることを忘れないでください:

ping6 ff02::1は機能しません。

ping6 ff02::1%en0は機能するはずですが、この場合はインターフェース名によって異なりますen0

0
Tom

使用する

ping6 -I eth0 ff02::1 

ここで、eth0は、リンクローカルが通信しているインターフェイス名です。を使用して、マシンで使用可能なすべてのインターフェイスを取得できます

ifconfig

ff02 :: 1は [〜#〜] iana [〜#〜] によって割り当てられた既知のマルチキャストアドレスです

0
MSS