我有一个高带宽应用程序,其中服务器将在千兆网络上以 ~300Mb/s 的速率生成数据。除了 UDP 之外,还有其他方法可以通过可靠的传输机制向 1 到 10 个客户端多播吗?
此应用程序非常类似于流视频,因为流的连续性比可靠性更重要。当前的应用程序有点慢,它使用 UDP 结合它自己的错误检查,客户端知道丢弃数据块。
是否有任何硬件选项可以为多个客户端提供可靠的 TCP/IP 流?
是否有任何协议可以隧道传输数据流并支持前向纠错?如果服务器/客户端仍然可以将其视为普通套接字,那就太好了。
只是认为必须有比滚动您自己的 UDP 多播解决方案更好的方法。
请注意,对于我的特定应用程序,服务器和客户端可以位于同一子网上。虽然,我对所有答案/选项感兴趣。
谢谢。
我有一个程序每 50 毫秒发送一个 IPv6 多播数据包(到 ff12::2:0:8afb:382b:c053:85f%en1)。我让它在一个非常简单的单计算机 LAN 上运行(Mac mini <-wifi-> Linksys wifi 路由器 <-cat5-> DSL 调制解调器 <-> Internet)。在我的测试中,没有计算机加入这个多播组(即没有人在监听这些数据包)
我的问题是,当这个程序运行时,Mac 的 WiFi 性能下降了 50% 以上。据推测,问题在于所有这些多播数据包都占用了我的大量 WiFi 带宽并导致拥塞……但我根本不明白为什么要传输这些数据包。我的理解是多播使用生成树算法来确保多播数据包只路由到真正有兴趣接收它们的主机。如果这是真的,并且鉴于我的 LAN 上没有其他计算机加入到这个多播地址,我的 Mac 难道不应该意识到这一点并且实际上不发送任何数据包,除非/直到其他主机加入多播组?或者生成树剔除仅在交换机上实现,而不是由主机本身实现?
我们有一个远程站点,其中 Mac 不响应IGMP 成员资格查询,但 Windows 机器确实响应。因此,大约 10 分钟后,支持 IGMP 的网络交换机会切断发送至 Mac 的多播流。
这是显示问题的 Wireshark 屏幕截图:
第一个数据包是应用程序请求网络开始允许从 239.255.20.1 到 Mac 的 IGMP 数据包。然后您会看到,此后大约每隔 125 秒,配置为 IGMP 查询器 (10.1.254.254) 的网络交换机就会询问我们是否仍然对该流感兴趣。请注意明显缺乏响应。
以下是本地网络上发生的情况,以供比较:
在这里,大约每 95 秒,IGMP 查询器 (172.20.0.2) 就会询问我们是否仍然需要该流,而相关的 Mac (172.20.0.144) 会说:“是的,继续发送它。”
有问题的 Mac 上的防火墙在 GUI 中已关闭,我已在命令行中对其进行了验证:
$ /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate 防火墙已禁用。(状态 = 0) $ /usr/libexec/ApplicationFirewall/socketfilterfw --getblockall 阻止所有禁用! $ /usr/libexec/ApplicationFirewall/socketfilterfw --getstealthmode 隐身模式已禁用 $ /usr/libexec/ApplicationFirewall/socketfilterfw --getappblocked /Applications/mumblemutter.app/... 该应用程序不是防火墙的一部分
应用程序并不重要,因为堆栈在加入组后处理 IGMP 查询。
问题 Mac 运行的是 10.11.5,但我无法相信通过升级到绝对最新版本可以解决该问题,因为这意味着基于 BSD 的操作系统正在 2016 年修复其网络堆栈中的严重错误。有可能,但极其严重低概率。
在阅读产品文档时,我发现他们说产品在多播不可用或不首选的环境中支持 TCP 通信。
为什么公司会阻止多播通信?还是更喜欢 TCP?
参考:http : //www.hazelcast.com/
“Hazelcast 将使用多播进行发现,它还可以配置为仅在多播不可用或不首选的环境中使用 TCP/IP。”
我运行 ICMPv6 协议,并使用wireshark 进行了捕获。在捕获中,我有一些多播侦听器报告消息 v2。有些有源ip,ipv6链接本地地址,但有些有::作为源地址?请您告诉我为什么发送带有 :: 源地址的多播侦听器报告消息 v2?
谢谢!
我在家里玩局域网,我想支持多播。现在所有的交换机都支持组播吗?还是便宜的?
我正在购买一个 5 端口的千兆交换机。它会支持多播吗?