gpt4 book ai didi

c - 无线网络上带有多播套接字的 UDP

转载 作者:太空狗 更新时间:2023-10-29 15:40:40 26 4
gpt4 key购买 nike

我用多播套接字编写了一个简单的 udp 服务器客户端应用程序。服务器每 6 毫秒向三个客户端发送数据包。包大小为 1200 字节。这是每秒 166,66 个数据包。每当其中一个客户端检测到丢失的数据包时,它将通过单播向服务器发送一个 NACK 数据包.

第一次测试:服务器和三个客户端通过以太网连接到路由器 TP-Link TL-WDR4300 (dd-wrt),一切正常。

第二次测试:只有服务器通过以太网连接到路由器,其他客户端通过无线 2.4 GHz 和固定信道连接。两个问题来了对于无线:第一个问题是数据包丢失,客户端只收到 50% 的数据包。丢失以突发形式出现,例如收到 400 个数据包,200 丢失等。 第二个问题 是当客户端将 NACK 数据包发送回服务器时,我可以在 wireshark 上看到但我的应用程序无法接收它们。这很奇怪,因为代码与客户端通过以太网连接时的代码相同。那么,有什么想法吗?我会很感激

服务器代码:

while (1) {

FD_ZERO(&readfds);
FD_SET(sd, &readfds);

tv.tv_sec = 0;
tv.tv_usec = 0;

rv = select(sd + 1, &readfds, NULL, NULL, &tv);

while (rv == 1) {

nack_processing(sd);
rv = select(sd + 1, &readfds, NULL, NULL, &tv);


}
}
return 0;

}

我还进行了更新以减少流量:数据包大小:800 字节数据包之间的到达时间间隔:10 毫秒= 每秒 100 个数据包 = 0.076 MB/s

我测量了服务器端和客户端的流量:服务器 ~ 10 MB/s客户端 ~ 5 MB/s

一切都很好

最佳答案

请注意,您正在比较两种不同的界面/媒体。一种是有线接口(interface),另一种是无线接口(interface)。

无线网络中的数据包丢失:

这可能是由多种原因造成的。然而,第一个直接检查点应该是 SNR、RSSI 和工作频率/同信道干扰。 wifi 分析仪几乎可以带您接近解决方案。

无线路由器位置 - 检查无线路由器是否位于需要覆盖区域内的中心位置。确保通过覆盖区域的适当重叠来避免覆盖漏洞。确保避开中间的建筑物以减少干扰。另外,请注意距离和用户的数据速率之间存在关系。距离用户越近,由于减少了路径损耗(因为这反过来增加了 SN​​R),数据速率就越高。

天线类型 - 各向同性天线提供球形覆盖区域。偶极天线以 donut 的形式提供覆盖区域。还有各种定向天线。当心全向天线在大蜂窝尺寸的情况下会导致隐藏节点问题。具有聚焦波束的天线可能会有所帮助。多扇区定向天线可以提供高容量、范围。天线的类型、位置和天线增益决定了 radio 传输范围和覆盖范围。

通信信道/工作频率 - 在同一 radio 覆盖区域内以相同频率工作的其他 AP 的存在可能会造成干扰。在这种情况下,如果附近只有 802.11 设备,则应相应更改工作信道和信道间隔以减少干扰。

功率级别 - 较高的功率级别可以增加范围,但如果附近有 AP,则可能会导致干扰。对于更高的容量,AP 可能靠得很近,在这种情况下,低功率水平是首选以减少干扰。

其他设备 - 微波炉、蓝牙、无绳电话等非 802.11 设备也可能引入干扰。在这种情况下,最好移除这些设备或将其屏蔽以避免干扰。

突发数据包丢失似乎也表明堆栈无法处理突发流量,其流量整形策略可能只是简单地丢弃此类突发数据包。仔细检查是否产生了这种流量突发。

NACK 未到达服务器:同样,这可能是由于传输媒体相关问题导致 NACK 在空中丢失。如果 NACK 已到达主机但未到达服务器应用程序/未处理,则可能是由于服务器的体系结构或堆栈相关的操作系统配置。

分析丢包场景的典型步骤

  1. 检查防火墙设置、操作系统配置、路由器配置和网络硬件能力/配置(吞吐能力、运行模式)、中间节点配置/能力(MTU、路由/转发表)
  2. 在无线路径上,检查 AP 的位置、工作范围(频率)、信道分离、SNR、RSSI、天线类型/增益、覆盖盲区、与 AP 的距离、覆盖范围内是否存在其他 802.11 设备和非 802.11 设备地区。
  3. 检查各个节点和接口(interface)的所有输入输出点的数据包统计
  4. 检查应用程序/协议(protocol)层中所有输入和输出点的数据包统计信息
  5. 通过吞吐量、数据包大小、运行持续时间、不同应用程序、不同有效负载大小、不同 pkts 数量、功率级别、AP 位置、信道等各种组合,反复测试以确定丢包模式...一种确定问题区域的方法。

关于c - 无线网络上带有多播套接字的 UDP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26562942/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com