UDP单播比广播更可靠吗?

时间:2016-11-22 08:47:17

标签: network-programming udp broadcast multicast unicast

我们有一个目前支持单播和广播的网络引擎 - 到目前为止我们一直在使用单播,但我正在探索广播功能以减少网络流量。

我的测试似乎表明单播远比播放更可靠< - 这不是我期望看到的东西(我没有强大的网络背景)。

例如,通过一个简单的测试场景,数据包通过千兆位以太网LAN从主机发送到客户端 - 我可以每秒单播15,000个1000字节数据包而不会丢失数据包。如果我切换到广播,我只能管理大约1200个1000字节的数据包,然后才会遇到+/- 20%的数据包丢失。

这是预期的吗?在阅读有关单播和广播之间差异的信息时,我还没有找到这个具体问题的明确答案。

如果这确实是预期的,那么多播会更像是单播而不是广播吗?(&#39;可靠性&#39;)

测试详情

我已经启动了一个允许操作各种设置的应用程序(发送速率,数据包大小,每次迭代发送的数据包数量等)。我在本地运行了这个应用程序的几个实例,然后在网络上的其他PC上运行了一些实例(我在PC和另一台PC上只运行了一个实例)。

每个数据包包含发送它的应用实例的名称,整数ID(每次应用发送数据包时递增)和有效负载(通常为0,500,1000或1400字节大)。

当收到数据包时,会检查ID字段,并确定它是否是预期的ID(我跟踪我希望从每个应用实例接收的下一个ID)。比我预期的晚的ID表示数据包已经丢失或者无序到达,比我预期的ID更早的ID表示数据包已经无序到达。 / p>

可以修改发送速率,默认情况下我使用20ms延迟。每次发送的数据包数量也可以修改 - 例如,我可以指定我想每20ms发送50个数据包(每个数据包都有一个唯一的ID)。

1 个答案:

答案 0 :(得分:0)

当您向网络发送UDP广播时,必须复制数据包并将其发送到网络上的每个节点,从而为网络设备创建大量工作。如果您的LAN由大量以前不是单播的设备组成,那么进行完整广播可以创建更多的网络活动并为网络设备工作。

但是,如果您的网络完全由希望参与的节点组成,我希望广播选项更可靠,因为网络设备从源接收的数据较少,并且能够运行优化的发送广播的程序如果数据包是单独单播的,则分组到相同数量的主机。

在进行网络测试时,使用受控环境非常重要,您可以在其中了解所涉及的变量,并了解不同类型的扩展如何影响您的性能。