Como posso saber se o IP Multicast está ativado

19

Eu tenho scripts que executam testes multicast IP; no entanto, meus scripts estão falhando em uma máquina Linux específica.

Eu sei que posso olhar no CONFIG_IP_MULTICASTarquivo de configuração do kernel para determinar se o kernel foi compilado com isso. No entanto, seria mais fácil sinalizar requisitos ausentes no meu script se eu pudesse ver /procou sysctlobter a resposta.

Existe uma maneira de descobrir se o IP Multicast foi compilado no kernel sem olhar CONFIG_IP_MULTICAST?

Mike Pennington
fonte

Respostas:

18

Parece que a maioria dos kernels (pós v1) suporta multicast por padrão ou CONFIG_IP_MULTICAST habilitado durante a compilação. Para verificar se o kernel compilado e em execução assina algum grupo multicast, eu usaria netstat -g.

Parece que a maioria dos kernels (pós v1) suporta multicast por padrão.

[root@centos module]# grep CONFIG_IP_MULTICAST /usr/src/kernels/2.6.18-274.7.1.el5-i686/.config 
CONFIG_IP_MULTICAST=y
[root@centos module]# netstat -g
IPv6/IPv4 Group Memberships
Interface       RefCnt Group
--------------- ------ ---------------------
lo              1      all-systems.mcast.net
eth0            1      224.0.0.251
eth0            1      all-systems.mcast.net

Vejo que a interface eth0 no meu host considera seu grupo mcast básico 224.0.0.251 inscrito. Como alternativa, se eu efetuar ping no grupo ou na rede e todas as redes de host ativadas para multicast conhecidas forem retornadas para mim, eu diria que o multicast está funcionando no host. Você pode tentar netstat -gou cat /proc/net/igmpver se ele retorna algum grupo no seu host?

Nikhil Mulley
fonte
11
Mas como você determina se o roteador ao qual a caixa está conectada suporta multicast?
Nils
11
Multicast - o remetente envia um único datagrama de seu endereço unicast para o endereço do grupo multicast e os roteadores intermediários cuidam de fazer cópias e enviá-las a todos os receptores que ingressaram no grupo multicast correspondente.
Nikhil Mulley 02/12/19
3
Se sim, o roteador precisa suportar o multicasting. No entanto, para remetentes / receptores, ele funciona no IGMP e para roteadores, seu protocolo Independent Multicast (PIM). Roteador que suporta PIM, geralmente ativado e grupo multicast - 224.0.0.0/4. Tente colocar outro PC escutando em grupo na outra extremidade e envie dados para o grupo multicast e verifique se o receptor na outra extremidade recebe dados.Se, a rede do roteador suporta multicast.Podas ferramentas on-line: imj.ucsb.edu/mcast_detective (windows)
Nikhil Mulley
20

Na sua caixa Linux: ip maddr show dá:

@4Gtest ~]$ ip maddr show
1:      lo
        inet  224.0.0.1
        inet6 ff02::1
2:      p3p1
        link  01:00:5e:00:00:01
        link  33:33:00:00:00:01
        link  33:33:ff:bd:7e:0f
        link  01:00:5e:00:00:fb
        link  01:00:5e:7f:ff:05
        inet  224.127.255.5
        inet  224.0.0.251
        inet  224.0.0.1
        inet6 ff02::1:ffbd:7e0f
        inet6 ff02::1
Alan Beard
fonte
11
Como adicionar um grupo muticast a uma interface?
AR
8
# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:F1:FF:EA  
inet addr:78.46.74.27  Bcast:78.46.74.31  Mask:255.255.255.224
inet6 addr: fe80::20c:29ff:fef1:ffea/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500  Metric:1
RX packets:5339836 errors:0 dropped:0 overruns:0 frame:0
TX packets:5486444 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:820300389 (782.2 MiB)  TX bytes:1929979381 (1.7 GiB)
Base address:0x1400 Memory:e8820000-e8840000

Desativar multicast:

ifconfig eth0 -multicast

resultado:

# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:F1:FF:EA  
inet addr:78.46.74.27  Bcast:78.46.74.31  Mask:255.255.255.224
inet6 addr: fe80::20c:29ff:fef1:ffea/64 Scope:Link
UP BROADCAST MTU:1500  Metric:1
RX packets:5339836 errors:0 dropped:0 overruns:0 frame:0
TX packets:5486444 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:820300389 (782.2 MiB)  TX bytes:1929979381 (1.7 GiB)
Base address:0x1400 Memory:e8820000-e8840000

Nenhum Multicast presente na interface

Ativar multicast:

ifconfig eth0 multicast
companheiro de conta
fonte
8
Deve-se mencionar que ifconfigagora está obsoleto no linux ... devemos usar os iproute2utilitários.
Mike Pennington
7
Já se passaram 2 anos e ainda estamos usandoifconfig
Askar
11
@ oscar, mas isso não significa que é bom fazê-lo, pois ipoutros utilitários do iproute2 estão refletindo mudanças recentes no código de rede do kernel do Linux (ao contrário ifconfig).
pevik 11/11/16
6

Usando o ipcomando, é possível verificar se uma interface é capaz de multicast:

ip link show eth0 | grep MULTICAST

Para ativar ou desativar o multicast, você pode usar:

sudo ip link set dev eth0 multicast [on|off] 
Pierz
fonte