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アドレスは可能です!何が起こっているのか手がかりはありますか?
リンク上のすべてのノードにマルチキャストする正しいアドレスは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
引数にインターフェイスを含めることを忘れないでください:
ping6 ff02::1
は機能しません。
ping6 ff02::1%en0
は機能するはずですが、この場合はインターフェース名によって異なりますen0
。
使用する
ping6 -I eth0 ff02::1
ここで、eth0は、リンクローカルが通信しているインターフェイス名です。を使用して、マシンで使用可能なすべてのインターフェイスを取得できます
ifconfig
ff02 :: 1は [〜#〜] iana [〜#〜] によって割り当てられた既知のマルチキャストアドレスです