Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I'm having issues with multicast traffic in Ubuntu Maverick. It only appears to work when the card is in promisc mode (i.e. if I set it manually, or use a tool such as tcpdump).

Adding multicast route...

user@pc-149:~$ sudo ip route add multicast 224.0.0.0/4 dev eth0
user@pc-149:~$ cat /proc/net/igmp
Idx Device    : Count Querier   Group    Users Timer    Reporter
1   lo        :     1      V3
            010000E0     1 0:00000000       0
2   eth0      :     2      V3
            FB0000E0     1 0:00000000       0
            010000E0     1 0:00000000       0
3   eth1      :     1      V3
            010000E0     1 0:00000000       0

Starting mplayer stream dump...

user@pc-149:~$ mplayer udp://225.0.0.1:9000 -dumpstream -dumpfile /tmp/test.mpg
mplayer: Symbol \`ff_codec_wav_tags' has different size in shared object, consider re-linking
mplayer: Symbol \`ff_codec_bmp_tags' has different size in shared object, consider re-linking
MPlayer 1.0rc4-4.4.5 (C) 2000-2010 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing udp://225.0.0.1:9000.
STREAM_UDP, URL: udp://225.0.0.1:9000
Timeout! No data from host 225.0.0.1
udp_streaming_start failed
No stream found to handle url udp://225.0.0.1:9000


Exiting... (End of file)

It does correctly add to the multicast group (while trying to read the stream)

user@pc-149:~$ cat /proc/net/igmp
Idx Device    : Count Querier   Group    Users Timer    Reporter
1   lo        :     1      V3
            010000E0     1 0:00000000       0
2   eth0      :     3      V3
            010000E1     1 0:00000000       0
            FB0000E0     1 0:00000000       0
            010000E0     1 0:00000000       0
3   eth1      :     1      V3
            010000E0     1 0:00000000       0

But tcpdump sees the traffic

user@pc-149:~$ sudo tcpdump -vv -i eth0 dst 225.0.0.1
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
09:47:40.698483 IP (tos 0x0, ttl 64, id 23281, offset 0, flags [none], proto UDP (17), length 1344)
    ls5.3203 > 225.0.0.1.9000: [udp sum ok] UDP, length 1316
09:47:40.698793 IP (tos 0x0, ttl 64, id 23283, offset 0, flags [none], proto UDP (17), length 1344)
    ls5..3203 > 225.0.0.1.9000: [udp sum ok] UDP, length 1316

The tricky part is, as long as the card is in promisc mode (i.e. while running tcpdump), mplayer can ALSO see the traffic...

I've checked the rp_filter stuff as well...

root@pc-149:~# sysctl -a | grep \\.rp_filter
error: "Invalid argument" reading key "fs.binfmt_misc.register"
error: permission denied on key 'net.ipv4.route.flush'
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.lo.rp_filter = 0
net.ipv4.conf.eth0.rp_filter = 0
net.ipv4.conf.eth1.rp_filter = 0
error: permission denied on key 'net.ipv6.route.flush'

Here is my route info

root@pc-149:~# ip route show
10.10.14.0/24 dev eth0  proto kernel  scope link  src 10.10.14.100  metric 1 
169.254.0.0/16 dev eth0  scope link  metric 1000 
multicast 224.0.0.0/4 dev eth0  scope link 
default via 10.10.14.xxx dev eth0  proto static 

root@pc-149:~# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 5c:26:0a:xx:xx:xx  
      inet addr:10.10.14.xxx  Bcast:10.10.14.255  Mask:255.255.255.0
      inet6 addr: fe80::5e26:aff:xxxx:xxxx/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:155843 errors:0 dropped:0 overruns:0 frame:0
      TX packets:82366 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:189808267 (189.8 MB)  TX bytes:7068802 (7.0 MB)
      Interrupt:20 Memory:e9600000-e9620000 

Update: So, after looking at a different post on here, it appears I can get it to work after using smcroute, but I don't think that is fixing the underlying problem. BTW, simply adding the multicast route works fine on centos 5.5, so there is something fundamentally different in how Ubuntu is doing it

share|improve this question
    
smcroute only works if the packets are being tcpreplay'd from a different system, I can't send+receive with my ubuntu system. –  evil_andy Sep 7 '11 at 15:25
    
I have similar failure. Did you fix it or not ? Do you want talk about it ? –  Massimo Nov 28 '11 at 0:13
    
Unfortunately I solved it by moving to centos6. it also didn't help that the switches where I was doing this didn't seem to really support IGMP. –  evil_andy Dec 23 '11 at 19:28

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.