2013-08-21 60 views
0

我正在开发一个网络支持的框架(最初用于Android系统),其中包括了三种基本服务信号强度的影响:主机发现网络通信的QoS监控建立在WiFi网络速度

对于最后一项服务,我尝试实现一种方法,该方法返回单个主机可以定期发送到另一个主机的最大邮件数(MPS)。

根据要发送的对象的大小和网络速度,我可以很容易地通过可以通过网络发送的理想MPS 进行粗略估计。当我尝试在方程中包含信号强度(SS)时出现问题。

protected int getMPS(NetworkApplicationData message, Context context) { 
    int messageSizeBits = MemoryUtils.sizeOf(message) * 8; 
    int networkSpeedMbps = getNetworkSpeed(context); 
    float signalStrength = getNetworkSignalStrength(context); 
    // FIXME: what about signalStrength? 
    return networkSpeedMbps * 1024 * 1024/messageSizeBits; 
} 

所以这里的基本问题是:是否有任何预先建立的研究关于信号强度对无线网络速度的影响?

做了一些测试,我注意到,根据信号强度,建立的网络速度发生变化。例如,对于“标准化”的100%SS,Android API返回54Mbps的网络速度值;和40%的SS,API返回7Mbps的网络速度值。我应该仅仅依靠Android API返回的网络速度值吗?在这种情况下,我将主要得到高估的MPS。

无论如何,我需要知道哪些是解决此问题的正确方法,并将计算基于正式研究。

+0

您应该指定您的目标通信技术。从你的价值看,它似乎是Wi-Fi?版本811a/g? –

+0

@Luis它的确适用于当前移动设备中使用的WiFi网络(a/b/g/n)。感谢您的反馈。 –

回答

1

这是一个在EE和CS中深入研究的主题。 WiFi网络吞吐量主要取决于两个因素:信噪比(SNR)值和网络拥塞。前者是物理层(PHY)问题,后者是MAC层问题。在两层测量的数据速率是完全不同的。在PHY中,数据速率由SS(或更准确地说,信噪比)确定。根据香农的信息理论,更高的SS意味着更高的数据速率。 PHY的数据速率假定单个WiFi设备连续传输而不存在任何争用。但在现实世界中并非如此。 54Mbps是高SS的典型PHY数据速率。

在MAC中,数据速率是通过PHY数据速率乘以WiFi设备在CSMA协议下赢得竞争的时间百分比得到的。即使只有一对WiFi设备,在MAC层测量的数据速率(几乎与在应用层测量的数据速率相同)大约是PHY数据速率的一半。

回到你的问题,在一个清晰的WiFi网络中,将从Android API返回的网络速度除以一半来估算实际数据速率。在繁忙的网络中,您的实际数据速率只能通过在线测量得出,而且它始终在变化。

+0

感谢您的详细解释!我会尝试应用您的方法并检查结果,以便将此答案设置为已接受。 –