MSMQ 多播 (PGM) 绑定到错误的网络接口
有没有人有幸使用 MulticastBindIP 注册表设置将 MSMQ 多播 (PGM) 绑定到特定网络接口?
MSMQ 多播 (PGM) 似乎始终绑定到 ipconfig 列出的第一个接口。就我而言,我安装了 VMware,因此我有两个虚拟网络接口(VMnet8 和 VMnet1)以及网卡。让 MSMQ 将 PGM 数据包发送到 VMware 虚拟接口没有用。
我尝试使用 MulticastBindIP注册表设置(当然,更改后重新启动MSMQ),但这似乎没有任何区别。例如,我的“本地连接”的IP地址是172.18.224.245,所以我设置了以下注册表项值:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters]
"MulticastBindIP"=dword:ac12e0f5
DWORD首先存储最高有效字节。但是,使用wireshark,我可以看到 PGM 数据包没有发送到此接口(但仍然发送到 ipconfig 列出的第一个接口)。
该文档可能是错误的,所以我还尝试了各种变体,例如:首先使用最低有效字节,甚至使用(点分隔的 IPv4 样式)字符串值。似乎没有什么区别。让 MSMQ 多播绑定到正确接口的唯一方法是禁用所有虚拟接口。这不是一个可行的解决方案。
Has anyone had any luck getting MSMQ multicast (PGM) to bind to a specific network interface using the MulticastBindIP registry setting?
MSMQ Multicast (PGM) always seems to bind to the first interface listed by ipconfig. In my case, I have VMware installed, so I have two virtual network interfaces (VMnet8 and VMnet1) as well as my network card. It isn't useful to have MSMQ send PGM packets to the VMware virtual interfaces.
I have attempted to use the MulticastBindIP registry setting (of course, restarting MSMQ after the change), but this does not seem to make any difference. For example, the IP address of my "Local Area Connection" is 172.18.224.245, so I set the following registry key value:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters]
"MulticastBindIP"=dword:ac12e0f5
The DWORD is stored with most significant bytes first. However, using wireshark, I can see that the PGM packets are not getting sent to this interface (but still sent to the first interface listed by ipconfig).
The documentation could be wrong, so I also tried variations such as: least significant bytes first and even using a (dot-delimited IPv4-style) string value. Nothing seems to make any difference. The only way I can get MSMQ multicast to bind to the correct interface is to disable all virtual interfaces. This isn't a workable solution.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果有人感兴趣,“MulticastBindIP 是为 Windows 2003 Server 引入的,并且没有向后移植到 Windows XP”。感谢约翰·布雷克韦尔的帮助。请参阅此Microsoft 新闻组讨论了解更多详细信息。
我在 Windows XP 上找到的唯一解决方案是禁用除“本地连接”之外的所有接口。当您重新启动 MSMQ Windows 服务时,它将绑定到正确的网络接口(因为它是唯一可用的)。我怀疑在运行 WinXP 的计算机中拥有多个网卡并不常见,但使用 VMware 或 VirtualBox 虚拟接口通过 MSMQ 绑定暴露此问题是很常见的。
仅供参考,对于支持 MulticastBindIP 注册表设置的最新操作系统,对于该值是 DWORD 还是 REG_SZ 存在一些争议。
If anyone is interested, "MulticastBindIP was introduced for Windows 2003 Server and not back-ported to Windows XP". Thanks to John Breakwell's help. See this Microsoft newsgroup discussion for more details.
The only solution I've found on Windows XP is to disable all interfaces except the "Local Area Connection". When you re-start the MSMQ windows service it will bind to the correct network interface (because it's the only one available). I suspect it's not that common to have multiple network cards in a machine running WinXP, but it is common to have VMware or VirtualBox virtual interfaces that expose this issue with MSMQ binding.
FYI, For more recent operating systems, where the MulticastBindIP registry setting is supported, there is some debate on whether the value is a DWORD or REG_SZ.