Having problems with MSMQ not sending or listening for Multicast messages?

We've just found a problem with Multicasting on POSReady 2009 which I thought I would share. POSReady is an embedded implementation of Windows XP service pack 3 but the setup of components like MSMQ is different so this blog post may not necessarily be applicable to other Windows platforms.

There were a couple of symptoms found in testing:

  1. Cannot receive multicast messages
    In the application event log, MSMQ generated an event 2160: "The queue cannot listen/bind to the multicast address 234.1.1.1:8001 (Error:273c)."
    0x273C translates to 10044 - WSAESOCKTNOSUPPORT - "The support for the specified socket type does not exist in this address family."
  2. Unable to send multicast messages
    In Computer Management, the outgoing queue would stay in a “waiting to connect” state. 

What made the troubleshooting tricky was that the multicasting driver (RMCAST.SYS) seemed to be installed. At the command prompt, I could execute "NET STOP RMCAST" and "NET START RMCAST" without error. Also, the Message Queuing service had a dependency on RMCAST so if the Multicast driver was down, MSMQ would not have started anyway.

Looking at a normal retail installation of Windows XP wasn't too much help as nothing visibly changes for Multicasting when you install MSMQ. Multicasting is bundled in as part of the Core subcomponent so you couldn't avoid installing it with MSMQ. Also, for normal Windows XP, the Reliable Multicast Protocol did not show up as an item used by the network card in the properties for the Network Connection in Control Panel so its absence in POSReady was no indicator of problems.

Luckily we have some smart support ninjas here who found that, although the RMCAST protocol service was installed, the WinSock configuration was missing. The solution was to manually install the protocol.

  1. Open Control Panel - Network Connections
  2. Right click "Local Area Connection" and select Properties
  3. Click Install...
  4. Select Protocol then click Add...
  5. Browse the POSReady DVD for the \I386\INF folder
  6. Select NETPGM.INF and choose OK 
    (the edit box will just display <drive>:\I386\INF but this is expected)
  7. Select "Reliable Multicast Protocol" then click OK
  8. Stop and Restart Message Queuing Service 

You should end up with this: 

 

Multicasting messages should now start working.

If you see similar errors on a non-embedded platform then give the steps above a try.

[[Edited 16th August, 2009]]

There is now a Knowledgebase article out for this problem:

MSMQ not sending or listening for Multicast messages