Endereço multicast IPv6 para todos os nós na rede

5

Eu tenho uma rede básica com 3 nós (VMs).

Um nó publica um evento, os outros nós o escutam e imprimem algo quando são recebidos. Ele costumava trabalhar um-a-um (então o nó dá um evento para o outro nó separadamente), mas eu gostaria de implementar o multicast.

Como uma experiência rápida, quero fazer uma "transmissão" básica na rede, mas não consegui descobrir o endereço IPv6 correto. Usando o endereço de broadcast IPv4 funciona, ambos nós imprimem algo então Então o endereço do nó 1 é: addet inet: 192.168.56.101 Bcast: 192.168.56.255 Máscara: 255.255.255.0 inet6 addr: fe80 :: a00: 27ff: fef7: 30a7 / 64 Escopo: Link

Node 2: addet inet: 192.168.56.102 Bcast: 192.168.56.255 Máscara: 255.255.255.0 inet6 addr: fe80 :: a00: 27ff: fe56: a2f7 / 64 Escopo: Link

Nó 3: inet addr: 192.168.56.103 Bcast: 192.168.56.255 Máscara: 255.255.255.0 inet6 addr: fe80 :: a00: 27ff: fe82: ae4a / 64 Escopo: Link

O IPv6 não tem transmissão e usa multicast. Esses endereços multicast sempre começam com ff. Então você tem o sinalizador, que é 0 por padrão para mlc e 1 para transiente. E então o escopo. Querendo fazer um equivalente básico de transmissão, eu tentei ff01 :: 1 que deve atingir todos os nós e ff01 :: 2 para todos os roteadores. Mas isso não funciona. Eu também tentei ff02, ff05 e ff0e. Eu estou entendendo mal alguma coisa aqui, qual é o endereço ipv6 de multicast / broadcast correto para alcançar o nó 2 e o nó 3 quando o nó 1 publica um evento?

EDITAR:

Depois de algumas experiências, descobri que não posso nem pingar os endereços inet6, mas posso fazer o endereço ipv4! Alguma pista do que está acontecendo?

    
por Sven 16.11.2014 / 08:22

2 respostas

5

O endereço correto para multicast para todos os nós em um link é ff02::1%<interface> . Você provavelmente esqueceu o ID da interface, que é necessária para endereços com escopo de link .

Por exemplo:

# 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

Os endereços em ff01::/16 são para interface - multicast local, que é realmente útil para multicast no host local.

Referências: RFC 4291

    
por 16.11.2014 / 08:47
0

Lembre-se de incluir a interface no argumento:

ping6 ff02::1 não funciona.

ping6 ff02::1%en0 deve funcionar, mas depende do nome da sua interface, neste caso en0 .

    
por 15.08.2017 / 11:09