Estou trabalhando em Ubuntu 16.04 xenial
com o x86_64 Linux 4.4.0-83-generic
kernel.
Eu tenho um remetente multicast do udp enviando datagramas do udp para o grupo multicast 226.1.1.1:4096
.
Ifconfig indica que o multicast está ativado:
wlp4s0 Link encap:Ethernet HWaddr cc:b0:da:f6:cb:67
inet addr:192.168.178.29 Bcast:192.168.178.255 Mask:255.255.255.0
inet6 addr: fe80::77ba:cd68:4b4e:33f5/64 Scope:Link
inet6 addr: 2003:8c:2820:c00:2063:e748:b633:bdf0/64 Scope:Global
inet6 addr: 2003:8c:2820:c00:a12e:cdde:cd01:66da/64 Scope:Global
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:5027967 errors:0 dropped:0 overruns:0 frame:0
TX packets:2605226 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7076352870 (7.0 GB) TX bytes:523006066 (523.0 MB)
Wireshark mostra que os datagramas multicast do udp estão sendo enviados e os clientes estão ingressando no grupo multicast (192.168.178.29 é o remetente e 192.168.178.42 é o cliente / receptor).
netstat -ng
mostra que o grupo multicast 226.1.1.1
está "ativo":
IPv6/IPv4 Group Memberships
Interface RefCnt Group
--------------- ------ ---------------------
lo 1 224.0.0.1
enp3s0 1 224.0.0.1
wlp4s0 1 226.1.1.1
wlp4s0 3 224.0.0.251
wlp4s0 1 224.0.0.1
lo 1 ff02::1
lo 1 ff01::1
enp3s0 1 ff02::1
enp3s0 1 ff01::1
wlp4s0 5 ff02::fb
wlp4s0 1 ff02::1:ff01:66da
wlp4s0 1 ff02::1:ff33:bdf0
wlp4s0 1 ff02::1:ff4e:33f5
wlp4s0 1 ff02::1
wlp4s0 1 ff01::1
No entanto, não consigo receber datagramas multicast nas máquinas clientes. Alguém já encontrou esse comportamento antes?
EDITAR:
Este é o tcpdump do pacote enviado do dispositivo android:
Frame 29525: 67 bytes on wire (536 bits), 67 bytes captured (536 bits)
IEEE 802.11 QoS Data, Flags: .......T
Type/Subtype: QoS Data (0x0028)
Frame Control Field: 0x8801
.000 0000 0011 0000 = Duration: 48 microseconds
Receiver address: AvmAudio_3f:23:27 (e0:28:6d:3f:23:27)
Destination address: Espressi_0e:ad:2b (a0:20:a6:0e:ad:2b)
Transmitter address: Motorola_e8:d7:73 (e4:90:7e:e8:d7:73)
Source address: Motorola_e8:d7:73 (e4:90:7e:e8:d7:73)
BSS Id: AvmAudio_3f:23:27 (e0:28:6d:3f:23:27)
STA address: Motorola_e8:d7:73 (e4:90:7e:e8:d7:73)
.... .... .... 0000 = Fragment number: 0
1001 1101 0100 .... = Sequence number: 2516
Qos Control: 0x0000
Logical-Link Control
Internet Protocol Version 4, Src: 192.168.178.23, Dst: 192.168.178.42
0100 .... = Version: 4
.... 0101 = Header Length: 20 bytes (5)
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
0000 00.. = Differentiated Services Codepoint: Default (0)
.... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
Total Length: 33
Identification: 0x0000 (0)
Flags: 0x02 (Don't Fragment)
Fragment offset: 0
Time to live: 64
Protocol: UDP (17)
Header checksum: 0x5539 [validation disabled]
[Header checksum status: Unverified]
Source: 192.168.178.23
Destination: 192.168.178.42
[Source GeoIP: Unknown]
[Destination GeoIP: Unknown]
User Datagram Protocol, Src Port: 5001, Dst Port: 4096
Data (5 bytes)
0000 68 65 6c 6c 69 helli
29526 16.625870 192.168.178.23 192.168.178.42 UDP 67 5001 → 4096 Len=5
E isso é da máquina Linux para o cliente em 192.168.178.42:
16809 9.575857 192.168.178.29 192.168.178.42 UDP 65 43981 → 4096 Len=3
Frame 16809: 65 bytes on wire (520 bits), 65 bytes captured (520 bits)
IEEE 802.11 QoS Data, Flags: .......T
Type/Subtype: QoS Data (0x0028)
Frame Control Field: 0x8801
.000 0000 0010 1100 = Duration: 44 microseconds
Receiver address: AvmAudio_3f:23:27 (e0:28:6d:3f:23:27)
Destination address: Espressi_0e:ad:2b (a0:20:a6:0e:ad:2b)
Transmitter address: LiteonTe_f6:cb:67 (cc:b0:da:f6:cb:67)
Source address: LiteonTe_f6:cb:67 (cc:b0:da:f6:cb:67)
BSS Id: AvmAudio_3f:23:27 (e0:28:6d:3f:23:27)
STA address: LiteonTe_f6:cb:67 (cc:b0:da:f6:cb:67)
.... .... .... 0000 = Fragment number: 0
0100 0111 1111 .... = Sequence number: 1151
Qos Control: 0x0000
Logical-Link Control
Internet Protocol Version 4, Src: 192.168.178.29, Dst: 192.168.178.42
0100 .... = Version: 4
.... 0101 = Header Length: 20 bytes (5)
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
0000 00.. = Differentiated Services Codepoint: Default (0)
.... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
Total Length: 31
Identification: 0xbd2d (48429)
Flags: 0x02 (Don't Fragment)
Fragment offset: 0
Time to live: 64
Protocol: UDP (17)
Header checksum: 0x9807 [validation disabled]
[Header checksum status: Unverified]
Source: 192.168.178.29
Destination: 192.168.178.42
[Source GeoIP: Unknown]
[Destination GeoIP: Unknown]
User Datagram Protocol, Src Port: 43981, Dst Port: 4096
Data (3 bytes)
0000 73 64 0a sd.
Tags networking linux udp ubuntu