Andy McQuatt

I have an application that works fine in XP, which doesn't work in Vista. It has worked without fail on XP for several years now, but will not work at all under Vista.

The part that doesn't work is related to receiving multicast packets. Basically we have two devices. One sends out a multicast and the other receives it. The receiver then sends out a multicast packet in response which the original sender should receive. The receiver is a PC with Vista on it, the sender is running the QNX operating system (although the only relevance of that is that it is not running Vista).

The problem is that initial message from the sender (QNX) to the receiver (Vista) is not received by the receiver - the method "ioctlsocket" with argument "FIONREAD" returns that 0 bytes of data can be read (this is in a loop that ends when ioctlsocket returns > 0 bytes). Further investigation has shown that the if this step is skipped, the response message from the Vista PC is received correctly by the other device.

So, in summary, it appears that Vista cannot receive multicast packets, but can send them.

I have tried changing firewall settings, and even turning the firewall off completely. This makes no difference.

There is a previous post on this forum about the same problem (http://forums.microsoft.com/MSDN/ShowPost.aspx PostID=1092653&SiteID=1). However, the root cause of the problem was not actually found. The last post says "I have found the problem, it can receive unicast packets, but can't receive broadcast packet." This is just a description of the problem rather than the cause or solution to the problem.

What I really want to know is whether or not this is a "feature" of Vista - perhaps to do with increased security - i.e. no matter what I do I'm not going to get it to receive multicast packets. Or whether this is a "bug" in Vista and may be fixed by an update in the future. Or whether there is an alternative way to get Vista to receive multicast packets.

Thanks very much in advance for any help anyone can offer me.



Re: Application Compatibility for Windows Vista Why can't Vista receive multicast, but XP can?

Bruce N. Baker - MSFT

Are you using IPv6

Check out this info

http://msdn2.microsoft.com/en-us/library/ms739172.aspx

Especially this section

http://msdn2.microsoft.com/en-us/library/ms740095.aspx

This link is just for reference: (Winsock)

http://msdn2.microsoft.com/en-us/library/ms741416.aspx






Re: Application Compatibility for Windows Vista Why can't Vista receive multicast, but XP can?

Andy McQuatt

I am using IPv4 rather than IPv6.

Thanks for the links.

From the links, it appears that the difference between XP and Vista, in relation to sockets, is that Vista uses IGMPv3 and XP uses IGMPv2. From what I've read, there is a new set of API calls, etc, that Vista can use, but the same API calls that XP used are still there and should still work on Vista. As our application has to work on both XP and Vista, it would seem that we should continue to use the "old" methods as the new methods wouldn't be supported with XP.

If this is the case, then why does Vista, using IGMPv3, not receive the multicast packets when XP, using IGMPv2 does Do I specifically need to unblock something with IGMPv3 which wasn't blocked with IGMPv2 Why is it not backwardly compatible





Re: Application Compatibility for Windows Vista Why can't Vista receive multicast, but XP can?

Andy McQuatt

Following further investigation and web searching, I came across this document:

http://download.microsoft.com/download/c/2/6/c26893a6-46c7-4b5c-b287-830216597340/TCPIP_Reg.doc

Which gives some information about certain keys that can be added to the registry to alter the TCP/IP configuration. This at first seemed promising, however the only keys I could find in this document that may be relevant to my problem were "IGMPVersion", "IGMPLevel" and "TypeOfInterface". Although the last two of these, according to the document, already default to the values I would want (IGMPLevel = 2 means it can receive multicast packets, TypeOfInterface = 0 means it allows multicast and unicast).

So I experimented with setting IGMPVersion to 3, which means use IGMP version 2 (the default is 4 meaning use IGMP version 3). This made no difference - Vista still wouldn't receive the multicast packet. I also tried setting this to 2 (perhaps there was a mistake in the document) and that also made no difference.

In summary, I still have the problem and don't know what to do to make Vista accept incoming multicast packets. Or even if this is possible with Vista.





Re: Application Compatibility for Windows Vista Why can't Vista receive multicast, but XP can?

Bruce N. Baker - MSFT

Check this out:


Windows Vista cannot obtain an IP address from certain routers or from certain non-Microsoft DHCP servers
http://support.microsoft.com/kb/928233

? You connect a Windows Vista-based computer to a network.
? A router or other device that is configured as a Dynamic Host Configuration Protocol (DHCP) server is configured on the network.
? The router or the other device does not support the DHCP BROADCAST flag.






Re: Application Compatibility for Windows Vista Why can't Vista receive multicast, but XP can?

Andy McQuatt

We're not using a DHCP server. I tried that registry change anyway, but it didn't work.

Perhaps I should give some more details about the application and what it is trying to do...

We manufacture a "box", called a "controller", which is effectively a PC running the QNX operating system. It doesn't have a keyboard or monitor attached. To tell this box what to do we must communicate with it from a separate PC. This PC generally belongs to the company who has bought our controller and will generally be connected to their company's network. To connect to our controller, they must put a separate, second, network card in their PC and connect it to our controller using a separate Ethernet cable (we insist on this mostly for safety reasons - the controller controls large machines). They will give that second network connection its own IP address (not obtained from DHCP). They will choose an IP address which does not conflict with the ones in use on their company's network. Now we need to allow the user to specify what the IP address of the controller should be. This is where the application I'm talking about comes in.

Here's how the process works: The controller is turned on in a special mode (there's a button on the back of it to do this). In this mode when the controller boots it runs a program which repeatedly sends the same multicast packet on multicast sending address 239.231.121.211 until it receives a response on receiving address 239.231.121.212.

After turning on the controller in this special mode, the user will then run another application on the PC which listens on address 239.231.121.211 until it receives a packet and then responds on address 239.231.121.212. It is this application which is failing under Vista, but not XP, to receive the packet from the controller.

If all has gone well and communication has been established between the controller and the PC, the application running on the PC asks the user for an IP address and then sends this to the controller. The application running on the controller configures itself with this new IP address and re-boots itself in normal mode.

I hope that explanation helps to explain the problem a bit more clearly. Something is "blocking" the packet from getting through from the end of the ethernet cable into the application running under Vista. I know that the physical connection is fine (The controller can be set up to run with a default IP address and doing this shows that non-multicast communications are working OK - I can "ping" the controller, for example. Also I have shown that the PC can send multicast messages to the controller which the controller receives) . This must be something that is different in Vista from XP, so something between the network card driver and the API calls the application makes.

I'm hoping not to have to re-design the system just because something has changed in Vista, so in the first instance I'd like to concentrate on getting the existing design to work under Vista, as there seems no reason why it wouldn't.





Re: Application Compatibility for Windows Vista Why can't Vista receive multicast, but XP can?

Bruce N. Baker - MSFT

Hi Andy, Are you a partner I'd like to create an incident on this one if you are.






Re: Application Compatibility for Windows Vista Why can't Vista receive multicast, but XP can?

Andy McQuatt

No I'm not a partner, as far as I am aware. From information I have about my MSDN subscription, my company is a Microsoft Volume Licensing customer and I am an Authorized Contact with a Benefit Access Number assigned specifically to me.

Where do we go from here This appears to be either a bug with Vista or an undocumented "feature". I'd like to know which it is before deciding on which direction to go to solve the problem (wait for a bug fix from Microsoft or work around the new behaviour in some other way). I was really expecting the response to be that this was a known security feature of Vista and to be pointed in the direction of some documentation somewhere which said this.





Re: Application Compatibility for Windows Vista Why can't Vista receive multicast, but XP can?

Bruce N. Baker - MSFT

Becoming a Partner is very easy. The first step is to check with your Boss then sign up via www.innovateonvista.com then I can create an incident for you. If you are developing a lot of software this is definately a good idea anyway. There is no cost to be registered partner, only the higher levels have different cost level associated with them.






Re: Application Compatibility for Windows Vista Why can't Vista receive multicast, but XP can?

Andy McQuatt

I tried to register as a Partner, went right through the registration process, answered all the questions and got the error "We are sorry; an unforeseen error has occurred. Please go to the Microsoft Partner Program Web site and sign-in again. For further assistance, please contact your Regional Service Center.". I tried again and got the same problem...

Ok. I'll keep trying. But in the meantime, is there any way you can find the answer to my question without me being enrolled in the Partner Program What's the benefit of creating an incident as a partner over just posting it here Is a Partner entitled to a higher level of support than a MSDN subscriber





Re: Application Compatibility for Windows Vista Why can't Vista receive multicast, but XP can?

Bruce N. Baker - MSFT

In order to escalate an issue is has to be connected with a case created for a partner or you can go through main support.






Re: Application Compatibility for Windows Vista Why can't Vista receive multicast, but XP can?

Andy McQuatt

Ok. I'm a partner now. Can you please create an incident for this

Please let me know if you need any more information from me and also what I need to do now to see progress on this. Thanks.





Re: Application Compatibility for Windows Vista Why can't Vista receive multicast, but XP can?

Bruce N. Baker - MSFT

Internal reply

"...

Install ethereal on the Vista machine. It will receive the packets. We rewrote the entire IP stack for Vista. It is likely that they are not using the correct library or that the configuration of the security on the Vista machine is such that certain types or ports may be blocked. I doní»t know the extent to which the policies may be applied.

A multicast packetí»s envelope identifies it as such, but we have products that receive multicast such as the media player so it is not with Vista proper.

..."




Re: Application Compatibility for Windows Vista Why can't Vista receive multicast, but XP can?

Frazz

Hi,

We're having exactly the same problem with one of our products that uses UDP multicast on Vista. Is there any update on a workaround for this issue

Best regards,

Frazz

Flux2Fusion Software Ltd





Re: Application Compatibility for Windows Vista Why can't Vista receive multicast, but XP can?

Andy McQuatt

I installed "Wireshark" v0.99.6a (SVN Rev 22276) (which is the new name for "Ethereal", apparently) on the Vista PC and this showed that the UDP multicast packets are indeed getting through to the PC running Vista. I also ran Wireshark on an XP PC and observed identical behaviour - the same source IP address (0.0.0.0), destination IP address (239.231.121.211), source port number (65534) and destination port number (33000). Protocol UDP. However, in XP, my application responded to one of these packets and in Vista it did not.

So, because my application isn't receiving these packets, and it did in XP, this shows that the problem lies between whichever layer of the system that Wireshark is looking at and the layer which my application can access.

Now I need to work out what is blocking this. It doesn't appear to be the Vista firewall as turning this off doesn't make it work. As far as I am aware I haven't changed any other security policies on the PC (Its a fresh installation of Vista Business). However, I can look into this some more.

The question of using the "correct" libraries - the application was built using Visual Studio 6.0 on a PC running XP Pro SP2. It was originally built a few years ago for use on XP, before Vista was available. It is a mixture of VB and a C++ COM DLL. Would you expect there to be problems running an application built with these libraries on a Vista PC