Updated: June 25, 2007
Applies To: Windows Server 2008
Message Queuing provides a mechanism to send and receive IP multicast traffic using the Pragmatic General Multicast (PGM) driver, which is installed and configured as part of the Multicasting Support feature of Message Queuing. Messages can be sent to a single destination IP address and then received and processed by multiple IP hosts. A host listens for a specific IP multicast address and receives all packets sent to it. The set of hosts listening on a specific IP multicast address is called the host group.
Using this method, a single copy of the message is sent on the network, and this message can then be received and processed by numerous destination applications. This method is especially useful if the same message has to be delivered to large numbers of receiving applications.
The sender specifies a target IP multicast address. An IP multicast address property is attached to a queue, and subsequently every message sent to that multicast address is inserted into the queue by Message Queuing. Applications continue to read messages from the queue using standard Message Queuing features. The Message Queuing service on a specific host listens to all multicast addresses to which its local queues are bound, routes incoming messages to the appropriate queues, duplicates messages that are sent to multiple queues, and dynamically starts and stops listening to a multicast address as local queues become bound and unbound.
Be aware of the security implications of multicasting. Messages cannot be encrypted, and messages could be read or used by unauthorized persons. Ensure that the address specified is used only for Message Queuing multicasting.
The following are some of the specific features of IP multicast messaging:
Only one copy of the message is sent, and it is received and processed only by computers, or hosts, that are listening for it.
Hosts can join and leave the host group dynamically at any time.
There are no limitations on the size of a host group.
A host can send messages to an IP multicast address without belonging to the corresponding host group.
Transactional sending is not supported.
A multicast address and a port number in the IP_Address:PortNumber syntax can be associated with any public or private queue. For public queues, this information is stored in Active Directory Domain Services. For a private queue, this information is stored on the computer where messages sent to the queue are stored. Thus, in workgroup mode, multicast addresses can be associated only with private queues, and in domain mode, a Windows Server 2003 or later family domain controller must be available to associate multicast addresses with public queues.
IP multicast addresses must be in the class D range from 126.96.36.199 to 188.8.131.52, which corresponds to setting the first four high-order bits equal to 1110. However, only certain ranges of addresses in this range are available for sending multicast messages. For the latest list of reserved multicast addresses, see the link to Internet Assigned Number Authority (IANA) Internet Multicast Addresses at http://go.microsoft.com/fwlink/?LinkId=94475.
For information about how to specify or view the multicast address and port number for a specific queue, see Specify or View Queue Multicast Addresses and Ports.
No additional security mechanisms are provided for multicast messaging. Security is achieved through authorization and authentication based on the mechanisms for one-to-one messaging. Each target queue is protected by authentication based on sender and access based on sender and receiver. Encryption and decryption are not supported.
On a computer with multiple network interface cards, a problem will arise when the computer tries to send multicast messages by means of these multiple network interface cards. In effect, Message Queuing will randomly choose a network interface card for sending multicast messages. If the private network interface card is chosen, multicast recipients will not receive the message. To work around this issue, you can specify the source IP address to be used for sending multicast messages. To do this, create the String value HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters\MulticastBindIP, in the usual IP address format. After setting the registry, restart the Message Queuing service for the changes to take effect.
|Incorrectly editing the registry may severely damage your system. It is recommended that you back up any valuable data on the computer before making changes to the registry.|
For multicast messaging on a cluster node the IP address is derived using the following procedure:
On a virtual server, the virtual server's IP address defined for the IP address resource is used.
Else if the cluster node has only one IP address, that is used.
Else if an IP address is specified in the registry, that is used. If the IP address specified cannot be found on the node, an event will be issued and the registry entry ignored.
To specify an IP address, create the string value HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters\MulticastBindIP, in the usual IP address format. After editing the registry, restart the Message Queuing service for the changes to take effect.
Caution Incorrectly editing the registry may severely damage your system. It is recommended that you back up any valuable data on the computer before making changes to the registry.
Else if a node has multiple IP addresses, the cluster API is used to make two lists; first a list of all private (not static) IP addresses, and second a list of all the node's IP addresses. These two lists are then compared, to select an address that is in the second list but not the first. An informational event is issued with the IP address chosen. If the only IP addresses available are those in the first list, one of those is used, and an event issued.