Fedora Networking :: Unable To Receive Multicast Data
Jun 13, 2010
I have just set up an FC 13 box for a small network application. At the core, the application is supposed to receive some data over a multicast on my local network. However, for some reason, I am not being able to receive any multicast data on this machine. Other machines, on the same network (connected on the same layer 2 switch) are receiving the multicast just fine. I have tried the following things:
1. ensure that I am joining the multicast on the correct interface: the machine has only one ethernet card. Also, after starting my application, I use netstat -g to check for group membership. The multicast subscription shows up fine.
2. ensure there is no error in the program: the program works fine on my person linux machine
3. ensure that the multicast is actually available: it is available on all other local machines. I also wrote my own small broadcaster. data from this broadcaster (running on the same box) is available to other machines but not to my own listener program.
4. no firewall/filtering settings on the layer2 switch
5. TTL setting on the broadcast: have tried changing it from 1 through 5 with no effect. Note that even if the broadcast is coming from the same machine, my machine does not pick it up while other machines on the network do so.
I suspect this has to do with some settings on the network card itself. Below is the output of /sbin/ifconfig on the card:
eth0 Link encap:Ethernet HWaddr 00:08:A1:67:BBA
inet addr:192.200.20.32 Bcast:192.200.20.255 Mask:255.255.255.0
inet6 addr: fe80::208:a1ff:fe67:bbca/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
I'm trying to receive data that is being broadcast on address 224.0.1.1, 224.0.1.2, 224.0.1.3, 224.0.1.4. ports are 1201, 1202, 1203, 1204 respectively. I can see the data using wireshark but can not get my program to receive the data. all firewalls are shutdown. iptables is not running, i've set net.ipv4_icmp_ignore_broadcasts = 0 and still no luck.
For the last couple of days, I've been unsuccesfully trying to receive multicast packets on Ubuntu Server 11.04, and seen some strange things along the way. The program i use to test this, is basically http://www.scribd.com/doc/38224328/mcreceive-c.Now the network has been configured to forward me the multicast packets, regardless of the joins. So tcpdump shows me:
Code: 15:16:11.308952 IP 10.164.130.2.61417 > 224.16.17.23.47806: UDP, length 1400 ...
I've got an application that compiles in Windows and Linux and is using UDP multicast to communicate. I'm running it on a Windows machine, a Linux machine and a small board (Gumstix) that is running Linux as well. The Windows and Linux machines have no problems sending/receiving packets with each other. The Gumstix and Linux machines have no problems sending/receiving packets with each other. The Gumstix can also send/receive packets with two instances of the application both running on the Gumstix.
But when running on the Gumstix I can send udp multicast packets to Windows, but cannot receive them. (It works if I do point to point with a known IP port#, but not multicast.) I can run tcpdump on the Gumstix and see the packets, but they are not being received on my socket. Here's what tcpdump (running on the Gumstix) outputs when sending the same packet from different sources. Notice the IP header ID and flags (don't fragment) are different when coming from Windows.
WINDOWS to Gumstix -7:-45:-2.015784 IP (tos 0x0, ttl 15, id 35331, offset 0, flags [none], proto: UDP (17), length: 444) 172.30.42.3.1165 > 239.255.183.180.47028: UDP, length 416
LINUX to GUMSTIX -7:-43:-38.451991 IP (tos 0x0, ttl 15, id 0, offset 0, flags [DF], proto: UDP (17), length: 444) 172.30.42.13.32771 > 239.255.183.180.47028: UDP, length 416
GUMSTIX to GUMSTIX -7:-33:-10.955608 IP (tos 0x0, ttl 15, id 0, offset 0, flags [DF], proto: UDP (17), length: 444) 172.30.42.110.1025 > 239.255.183.180.47028: UDP, length 416
I've tried everything I can think of to get this to work but am not getting anywhere. Also I'm pretty inexperienced when it comes to Linux. Anything I could try to be able to receive udp multicast packets from Windows?
I have a Dell laptop with a bcm4312 wireless card. Every once in a while though, the laptop is unable to send or receive any data for 30 seconds. The connection is not dropped, and nothing shows up in any system logs. Both the wl and b43 drivers have this problem, but it works fine under vista.
is anyone familiar with MRTG? i have it up and running just fine, but i have a bunch of interfaces showing up with no data and i want to weed those out. how to specify which interfaces i want to receive and display data from?
I am trying to port some MS Visual Studio C++ code to Linux/wxWidgets. The code is socket-based and very similar between Windows and Linux. In Linux the socket, bind, and setsocketopt all return with no error. See:
Code: BOOL CAV15Input::SetupSocket(BOOL Out) { if(pU->PrDebug) { sprintf(_send,"CAV15Input::SetupSocket for port %d",pSonar->dPort); pU->OutMsg(_send,1,0); } pSonar->UDP_Sock=0; pSonar->UDPError=0; pSonar->UDP_Sock=socket(AF_INET,SOCK_DGRAM,0); if(pSonar->UDP_Sock<0 ) { pU->OutMsg("socket failed on SetupSocket",11,0); pSonar->UDP_Sock=0; pSonar->UDPError|=4; return FALSE; } // the AF_INET address family, which contains IP addresses, local.sin_family=AF_INET; local.sin_addr.s_addr=inet_addr(pSonar->IP_Add_PC); local.sin_port=htons(pSonar->dPort); // from Dave Goffe: //> int t = 1; //> //>setsockopt(fd,SOL_SOCKET,SO_REUSEADDR,&t,sizeof(t)); int t=1; if(setsockopt(pSonar->UDP_Sock, SOL_SOCKET, SO_REUSEADDR, (char *)&t,sizeof(t)) <0) { CloseSock(); pU->OutMsg("set SO_REUSEADDR failed in SetupSocket",11,0); pSonar->UDPError|=4; return FALSE; } if(bind(pSonar->UDP_Sock,(sockaddr *)&local,sizeof(local))) { CloseSock(); pU->OutMsg("bind failed in SetupSocket",11,0); pSonar->UDPError|=8; return FALSE; } if(pU->PrDebug) { sprintf(_send,"socket setup & bind OK for port %d",pSonar->dPort); pU->OutMsg(_send,1,0); } // Join multicast group if(pSonar->datatype) // for element data mreq.imr_multiaddr.s_addr=inet_addr(pSonar->IP_Add_ELD); else // for beam data mreq.imr_multiaddr.s_addr=inet_addr(pSonar->IP_Add_HRB); mreq.imr_interface.s_addr=inet_addr(pSonar->IP_Add_PC); if(setsockopt(pSonar->UDP_Sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&mreq,sizeof(mreq)) <0) { CloseSock(); pU->OutMsg("join multicast failed in SetupSocket",11,0); pSonar->UDPError|=16; return FALSE; } if(pU->PrDebug) { if(pSonar->datatype) // for element data sprintf(_send,"join multicast OK on %s",pSonar->IP_Add_ELD); else // for beam data sprintf(_send,"join multicast OK on %s",pSonar->IP_Add_HRB); pU->OutMsg(_send,1,0); } jMCast=1; return TRUE; }
But then when I try recv(pSonar->UDP_Sock,&pUDP->u_dg_cM.cM[8],reedlen,0); it blocks as if there is no data. (In Windows this works fine.) Is there something else in Linux and/or wxWidgets that I'm missing that could prevent UDP datagrams from being received? Is there some way in Linux to monitor incoming UDP traffic?
I am doing work on serial port. I want to send/receive data to/from Microcontrolar through serial port. But I don't know how to initialize, receive and send data to Serial port. i am new in fedora so i hav'nt any deep concept of fedora.can anyone send me C code , which communicate through serial port in fedora (or atleast help me). I am using Fedora 11.
in my php page they ask the user to enter some input example like year. i want that input to be transfer into my .sh file and will show its output. how to make .sh file receive data from php and php sent data to .sh file
I have several multicast data feeds that I'm trying to connect to using a minimal server install of Ubuntu as a VM on a VMWare ESXi server.I have another VM on the same server running Solaris that can connect with no issues to the incoming multicast stream.
This is not a linux specific question more of a general network issue with the hope that someone may have already done this under linux.My problem:I have a red hat linux machine transmitting IP multicast packets onto an ethernet gigabit network (cisco switch).Wireshark (running on a different red hat linux box confirms packets on network.
If I have set up 2 network interfaces on a box, if I started sending multicast traffic, it will go out through both interfaces? Or is there a way to control through which interface it will go out?
I have 4 interfaces, dvb0_0 - dvb0_3. Each one has a multicast stream coming in on it. The program I am using to decode these streams only accepts one interface though. How can I "combine" so that the program, listening on 1 ip can get all 4 streams? they are on groups 224.0.1.1-4
In the ipv4 code i was using "ip_mc_join_group()" to join the multicast group. but i cannot find a similar function for ipv6 i have found one ipv6_sock_mc_join() but this function is not available for use with my module as it is not exported.
have a doubt about the multicast address.I have read that IP and ethernet multicast address have the same last 23 bits. While an ethernet multicast address always starts with 01:00:5E. Changing the last 23 bits of the IP address into hexadecimal form and "adding" them to the first 24 bits we find the ethernet address but what about the missing bit??? For istance I have: 230.11.111.10 = 11100110.00001011.01101111.00001010 So converting the last 23 bits I have b:6f:a The final ethernet address will be 01:00:5E:b:6f:a . And what about the missing bit?
We have a high speed udp multicast connection. There are about 37 multicast groups and average incoming rate via the connection is about 20000 pkt/sec and peak 40000+ pkt/sec. Each packet is about 100-300 bytes. And there are 6 busiest multicast groups generating 80% of the traffic. No significant outgoing traffic via that interface. The problem is that, if our heavy-weight application create 37 sockets for all the groups, the packet loss become quite frequent. but if we create the 6 sockets for the busiest groups, the packet loss drops to 1/10 of the original level. We can confirm that the lost packets DO arrive in our box because a light-weight recorder on another box on the same ethernet segment can see the lost packets when listening to the same groups. If we start another heavy-weight application for the rest groups (31 groups ) on the same box, the packet loss just come back to the original level.
The packet loss happens not only to the heavy-weight application but also the light-weight recorder running on the same system. that is, the loss is system wide. The socket kernel buffer are all 4MB max and did not observe system buffer overflow. It seems the number of sockets listening to the same multicast group have the most negative impact on packet loss. And the higher traffic have a far less impact on packet loss than the number of sockets. It also seems that there is some limit in the kernel that when socket number are reduced under, the packet loss can significantly ease. How can I further diagnose the problem? Our system is RHEL 5.3 32bit i386, Xeon 2.9GHZ 16 Processors, 32GB memory. Two broadcom giga netowrk card and 6 Intel GIGA NIC, and only one interface card has so much traffic.
I am trying to run some benchmark tests for multicast. What I want to do is have one system send multicast packets and another receive it on all it's interfaces (eth0-eth3). Whenever I run receiver on more than one interface I get echo effect (if I receive on x interfaces then I get same packet x number of times). Is this how it is supposed to behave? It does not make any difference whether I use loop-back or not. I have set SO_REUSEADDR to yes. I run separate instance of receiver on each interface. I am doing this on RHEL5 systems.
i have an isolated LAN (no connection to outside) with 3 fedora boxes. Suppose one of the boxes has an IP device connected to the serial port. We use SLIP and slattach to configure it and we can ping the device from every fedora boxes. Is it possible to bring the external device (192.168.1.9) to the set of LAN devices that receive LAN broadcasts?
It runs slattach and uses 192.168.1.9 to address serial connected ip device. I set up this scenario and the external device is ping(ed) with success but if I build a socket udp program that sends a broadcast to the LAN all the fedora boxes receive it except the external serial device. Why.
How can I find out list of multicast addresses and port in use?"netstat -ng" only gives list of multicast addresses that have been joined, it does not give port number.I have several hundred servers running application that listens to several multicast addresses on different ports. I want to write an audit script and get the list of multicast address and port numbers.
I have a PC connected by ethernet to a Galil motion controller card.I recently installed Centos 5.The Galil software for communicating with the card is reporting that it can't join a multicast socket group.The software used to work with another version of Linux.
I've just set up an LTSP server, with all its clients on a separate subnet to my main network - the main network is 192.168.1.x, and the LTSP clients are all 192.168.2.x. My LTSP server has 2 NICs, one on each network, and is merrily forwarding normal IP traffic from the clients to the rest of the network. I have a client/server application that has a server on one machine, and clients locate and attach to it using multicast protocols. The server is on the main network, and any other machines on the network can locate and talk to the server quite happily. The LTSP clients, however, cannot - I assume because the multicast communications aren't being forwarded by the LTSP server. How I can get this working?
I have a server that sits between two LANs, and I wish to enable multicast routing from one LAN to the other. I have multicast routing enabled in the kernel but didn't know how to enable it. Tried to add mc_forwarding in /etc/sysctrl but doesn't work.
When I have my IPTV inserted in the computer I am either having problems connecting to the internet or recieve the multicast streams from the iptv. I do get a valid ip on both the WAN and IPTV, but I am having problems getting them both to work at the same time.
I have a project to run simultaneously up to 8 video streams, from a pool of about 100 multicast cameras, and display them on 4 monitors. The PC I am using is a brand-new dual CPU 4-core Intel Xeon E5620 2.40GHz, Intel S5520SCR motherboard, 8GB memory and nvidia Quadro NVS 450 graphics. It's running Fedora 14 64-bit and outputs on 2x2 LCD monitors using Xinerama. So far, so good.
Playing a single video stream from any camera works fine. The problem is that, when I open a 2nd media player window with the purpose of playing other camera, all those two video windows play a single stream. It doesn't matter which camera stream I opened first, as soon as I open a 2nd stream, both windows show the same stream (either the first, or the second, at what seems to be a random choice). Further, a 3rd or a 4th video window will also play the same stream. In other words, one stream sort of "contaminates" all the other streaming windows to play that particular stream only. The problem remains the same even when the following changes are applied:
- graphics driver: nvidia or nouveau; - video player: vlc or mplayer; - number of active monitors: 4, 2 or 1.
I am really puzzled because, on the same computer, Windows XP SP3 32-bit runs beautiful. I can smoothly play up to 12 video streams and some computer applications, simultaneously. I cannot believe that an obsolete OS such as Windows XP can outperform by a long shot Fedora 14 64-bit in video streaming projects. Just doesn't make sense.
Note: I have also tested Windows 7 64-bit, it also runs multiple video streams in parallel without any problems, but Win 7 has issues that XP is free of (such as graphics output glitching every few seconds).
It's been awhile since I posted anything which is a good sign my install has been working well and I have been able to handle most everything. However, I'm not able to handle this issue. I recently installed F11 and everything went well. But, when trying to see my other computers on the local network, I cannot. I receive this error message: Unable to mount location Failed to receive shared list from server. I understand the message as it is obvious, but do not know how to fix it.
I am trying to install a Red Hat cluster on my servers. In order to configure an heart bit between the servers I must give a valid multicast address. I wanted to know if there is a way to validate a multicast address before using it. For example if it is already in use i don't want to use it.
I read a little about it and there is a Perl module called IO::Socket::Multicast: [URL] There is a tool called mcasttrest.pl: [URL] Oracle use it to test multicast. But I am not sure what will do the trick in Red Hat cluster.
I want to create an encrypted directory using the cfs package. So far I've only been able to create the top directory. When I want to attach an encrypted directory using
Code: cattach directory1 directory2
get the following message in command line:
Code: RPC: unable to receive
When i look into my /crypt directory, nothing was added there. I have no idea what could be the problem. I use Ubuntu 10.04 LTS.
I can't seem to track down. In Evolution, I am unable to receive mail. I tried every configuration method I know and still no success. I'm even tried using a hotmail and verizon account settings with no luck.