天道酬勤,学无止境

reliable-multicast

实现UDP组播可靠的方法(Methods for implementing UDP multicast reliable)

问题 我正在准备我的大学考试,去年的一个问题是“如何使 UDP 多播可靠”(如 tcp,丢失数据包的重传) 我想过这样的事情: 服务器使用 UDP 发送多播每个客户端发送接收该数据包的确认(使用 TCP) 如果服务器意识到不是每个人都收到数据包,它会向特定的客户端重新发送多播或单播。 问题是可能有一个客户端通常会丢失数据包并强制服务器重新发送。 好吗 ? 回答1 每个客户端发送接收该数据包的确认(使用 TCP) 为每个数据包发送一个 ACK​​,并使用 TCP 来这样做,不能扩展到大量接收者。 使用基于 NACK 的方案更有效。 从服务器发送的每个数据包都应该有一个与之关联的序列号。 当客户收到它们时,他们会跟踪丢失了哪些序列号。 如果数据包丢失,则可以通过 UDP 将 NACK 消息发送回服务器。 此 NACK 可以格式化为序列号列表或已接收/未接收序列号的位图。 如果服务器意识到不是每个人都收到数据包,它会向特定的客户端重新发送多播或单播。 当服务器收到 NACK 时,它不应立即重新发送丢失的数据包,而是等待一段时间,通常是 GRTT(组往返时间 - 接收器组中最大的往返时间)的倍数。 这使它有时间积累来自其他接收器的 NACK。 然后服务器可以多播丢失的数据包,以便任何丢失它们的客户端都可以接收它们。 如果此方案用于文件传输而不是流数据,则服务器可以交替发送文件数据。

2021-09-21 23:18:03    分类:技术分享    tcp   udp   multicast   reliable-multicast

实现UDP组播可靠的方法(Methods for implementing UDP multicast reliable)

问题 我正在准备我的大学考试,去年的一个问题是“如何使 UDP 多播可靠”(如 tcp,丢失数据包的重传) 我想过这样的事情: 服务器使用 UDP 发送多播每个客户端发送接收该数据包的确认(使用 TCP) 如果服务器意识到不是每个人都收到数据包,它会向特定的客户端重新发送多播或单播。 问题是可能有一个客户端通常会丢失数据包并强制服务器重新发送。 好吗 ? 回答1 每个客户端发送接收该数据包的确认(使用 TCP) 为每个数据包发送一个 ACK​​,并使用 TCP 来这样做,不能扩展到大量接收者。 使用基于 NACK 的方案更有效。 从服务器发送的每个数据包都应该有一个与之关联的序列号。 当客户收到它们时,他们会跟踪丢失了哪些序列号。 如果数据包丢失,则可以通过 UDP 将 NACK 消息发送回服务器。 此 NACK 可以格式化为序列号列表或已接收/未接收序列号的位图。 如果服务器意识到不是每个人都收到数据包,它会向特定的客户端重新发送多播或单播。 当服务器收到 NACK 时,它不应立即重新发送丢失的数据包,而是等待一段时间,通常是 GRTT(组往返时间 - 接收器组中最大的往返时间)的倍数。 这使它有时间积累来自其他接收器的 NACK。 然后服务器可以多播丢失的数据包,以便任何丢失它们的客户端都可以接收它们。 如果此方案用于文件传输而不是流数据,则服务器可以交替发送文件数据。

2021-09-21 23:15:07    分类:技术分享    tcp   udp   multicast   reliable-multicast

Methods for implementing UDP multicast reliable

I am preparing for my university exam and one of the question last year was " how to make UDP multicast reliable " ( like tcp, retransmission of lost packets ) I thought about something like this : Server send multicast using UDP Every client send acknowledgement of receiving that packets ( using TCP ) If server realize that not everyone receive packets , it resends multicast or unicast to particular client The problem are that there might be one client who usually lost packets and force server to resend. Is it good ?

2021-07-12 23:18:45    分类:问答    tcp   udp   multicast   reliable-multicast

本地网络上的可靠组播(Reliable Multicast over local network)

问题 我正在使用 C++ 和 Qt 实现消息传递系统。 经过深思熟虑,我确定多播或多播风格的技术最能解决我的问题。 但是,我了解到 UDP 的不可靠性并认为这是不可接受的。 我的要求如下: 消息将以二进制序列化形式发送。 从网络上的任何给定节点,我必须能够向其他节点发送消息。 消息传递必须投保。 我听说 OpenPGM 和 NORM 作为 UDP 的替代品。 如果有人有这方面的经验,可以分享一下吗? 我也愿意在应用程序层中自己实现“可靠”多播的可能性,但如果有一个库已经实现了这一点,我不希望这样做。 我使用的是 C++ 和 Qt,因此不接受 .NET 或基于 Java 的解决方案,除非它们是开源的并且我可以将它们移植到 C++。 非常感谢你。 编辑 20120816T1853 MDT:另一个问题:是否必须在硬件/IP 级别实施 PGM 或 NORM? 或者它们可以覆盖在现有协议之上吗? 回答1 我们已经在 UDP 上实现了我们自己的可靠多播协议,称为 RSP,因为我们需要一些跨平台的东西,当时在 Linux 和 Windows 之间找不到好的解决方案。 Windows PGM 实现会断开离开发送窗口的慢速客户端,而我们的实现会像 TCP 一样限制发送器。 Afaik OpenPGM 可以配置为执行相同的操作。 回答2 http://cs.itd.nrl.navy.mil/work

2021-07-10 05:54:43    分类:技术分享    c++   network-programming   multicast   reliable-multicast

Reliable Multicast over local network

I am implementing a messaging system using C++ and Qt. After much thought, I have determined that multicasting or a multicast-style technique will work best to solve my problem. However, I have learned about UDP's unreliability and believe it to be unacceptable. My requirements are as follows: Messages are to be sent in a binary serialized form. From any given node on the network, I must be able to send messages to the other nodes. Message delivery must be insured. I have heard of OpenPGM and NORM as alternatives for UDP. If anyone has experience with either of these, could you please share? I

2021-06-03 08:43:47    分类:问答    c++   network-programming   multicast   reliable-multicast