我正在使用一个基于UDP和802.11的客户端服务器项目作为链接和物理层。在那里,客户端试图探测无线信道中的一些数据包,以测量信道状况。此函数用于在我的客户端应用程序中设置传输速度和估计丢包率。为了实现这一功能,我们需要测量IEEE 802.11中发生的重传次数(拓扑是客户端--ap--服务器:其中-是一个无线信道)。在传输层,不会有任何重传,因为使用的是UDP,但如果无线信道是坏的(没有从接收者MAC确认),IEEE802.11 will网卡将重新发送。到目前为止,我可以在linux中从~/proc/net/wireless访问RSSI,这给出了接收信号强度的概念,而不是关于无线信道条件的概念。可以根据重传的次数来估计无线信道的状况。我应该如何测量IEEE 802.11层中的重传数,例如,对于来自应用程序的一个数据包,IEEE 802.11层中有多少次重传(来自一个客户端)?
或者有什么方法来阻止IEEE802.11的重传功能?
发布于 2018-10-26 20:21:53
它需要测量在IEEE 802.11中发生的再传输的数量.
您没有指定UDP通信量的方向。如果它主要是从一个服务器到另一个客户机,那么客户端将无法准确地度量这个统计数据。只有美联社才有机会捕捉到这些信息。
为什么?因为客户端将对它理解/接收的第一个802.11帧进行ACK,所以它将不知道AP之前尝试发送该帧多少次。它无法理解/接受先前的那些尝试。
如果它是从客户端到服务器,您可以编写/使用一个专门的驱动程序,它可以给出这些统计信息,但这也可能取决于硬件。当然,当任何环境条件发生变化时,结果都可能发生变化。
比如说,对于来自应用程序的200个数据包,IEEE 802.11层中有多少次重传?
如果不以某种方式进行实际测量,就无法说出这一点,但一些企业无线系统可以提供重传/重试统计数据(至少从AP到客户端是如此)。
当传输802.11帧而不接收ACK时,它被重传一定次数。一旦达到重传的阈值,数据速率就向下调整以重试。
现在,不同的供应商应用这些标准的方式略有不同,试图优化无线通信量,从而使他们的产品优于竞争对手。这些优化通常只为公司内部的人所知。其中一些不同之处可能是(不要把它当作一个完整的列表):
这就引出了其他的环境因素,这与你试图确定多少次传输的答案有关。射频环境中的噪声有多大,它是否会波动?有多少其他设备试图在同一个频道上进行通信?诸若此类。
让任何人告诉你你会有多少次重传是完全不可能的。它需要测量。
或者有什么方法来阻止IEEE802.11的重传功能?
从没见过,我怀疑你会看到。正如我上面所阐述的,重传过程是如何以最好的数据速率传送帧的过程的一部分。有些供应商允许对流程中不同地点发生多少次重传的细节进行“调整”,但是完全消除它们通常是一个非常糟糕的想法。
最好的方法是将重传的次数减少到最小的阈值。例如,找到一个允许对诸如重传次数等设置进行“调整”的供应商。然后将客户端配置为只支持一小部分数据速率或单个固定数据速率(这也必须是WLAN支持的唯一基本/基本/必需的数据速率)。您必须选择一个较慢的数据速率,以便在任何情况下都能可靠地传递帧。
https://networkengineering.stackexchange.com/questions/54268
复制相似问题