背景:我处在一个嘈杂的环境中,我正在尝试优化我的 WiFi 网络,以便为相当多的用户(繁忙的日子里大约 50-75 个)提供更稳定的连接。有 4 个 AP,我已经调整了信道和发射功率,总体来说,我的覆盖范围相当不错。然而,当我 ping Google 并在建筑物内走动、从一个 AP 漫游到另一个 AP 时,我仍然会遇到大约 10% 的数据包丢失。
在我见过的大多数 WiFi AP 中,默认 RTS 阈值设置为 2347(从我在各个地方读到的内容来看,此设置算作“禁用”),碎片阈值设置为 2346。我的特定品牌的路由器设置为 2346 和 2346。我有几个问题……
2346 这个值是从哪里得出的?这似乎有些随意,但是 Frag.Threshold 的注释表明它需要大于 256 并且为偶数。
RTS 和 Frag. Thresholds 有何关系?它们的值不可能是一致的。
如果修改的话要一起改吗?
首先,尝试将它们降低到什么安全值?
我的首要任务不一定是让每台设备获得峰值带宽,而是为用户提供稳定、一致的带宽/连接。
答案1
最大为 2346802.11 帧大小。将 RTS 和碎片阈值设置为最大值意味着没有数据包会达到阈值。
碎片阈值限制了最大帧大小。这减少了传输帧所需的时间,因此降低了帧损坏的可能性(以更多的数据开销为代价)。RTS 阈值指定发送方必须使用即时消息/紧急消息协议,这主要是为了解决隐藏节点问题。这显然也增加了开销。
不一定——如果您没有隐藏节点问题,那么更改 RTS 阈值不会提高性能。不过,为了使 RTS/CTS 发挥作用,RTS 阈值必须等于或小于碎片阈值。
我将首先设置它们,以便将标准以太网帧分成两个 802.11 帧(1500/2 = 750 字节有效载荷 + 34 字节开销 = 784 字节),并且任何大于标准以太网帧三分之一的帧都使用 RTS(534 字节)。
据我所知,这两种设置都只会影响发射器,即,在 AP 上配置它们只会让 AP 使用它们进行传输,而不会让客户端使用它们进行传输。
答案2
混合 b/g 方案尤其不理想。您可能希望回顾一下之前关于该主题的一些讨论,例如:
此外,当点 A 可以接收点 B 的信号,但点 B 无法接收点 A 的信号时,还会发生另一种性能杀手。ServerFault 上的其他人将此称为“隐藏发射器效应”。有关该现象的更多信息,请参阅以下链接。他们指出:
“...虽然需要水平极化,但由于缺乏廉价的商用水平极化全向天线,可能需要使用垂直极化天线。优质的全向垂直极化天线的成本与抛物面天线大致相同。使用全向天线有助于最大限度地减少“隐藏发射器”效应。“
http://www.arrl.org/using-ieee-802-11b-operating-under-part-97-of-the-fcc-rules
答案3
我不同意“如果没有隐藏节点问题,那么更改 RTS 阈值不会提高性能”的说法。使用 CTR/RTS 总是会降低数据冲突的可能性。由于每次数据冲突都会导致数据损坏,因此需要重新发送数据,因此冲突越少,重新发送的数据就越少,而重新发送的数据越少,可以大大提高您的 WiFi 性能;当然,前提是您的网络中存在大量冲突。
详细解释一下:节点总是需要等待一段时间,并检测信道上是否有可能的传输,然后才能开始自己的传输。只有当它没有检测到任何传输时,它才可以开始自己的传输。如果没有 RTS/CTS,这种传输就直接是数据传输。如果现在两个节点都有相同的想法,并且几乎同时开始数据传输,那么这些传输就会发生冲突。结果是,任何传输都无法完成,因为所有其他节点和 AP 收到的所有数据都会被破坏。
如果使用 RTS/CTS,传输将从节点在感知后发送的 RTS 数据包开始。只有当 RTS 请求得到 CTS 回复时,数据传输才会开始。当然,如果两个节点想要同时传输,它们的 RTS 请求也可能发生冲突,同样会产生完全接收不到 RTS 的负面影响。不同之处在于,整个网络从 RTS 冲突中恢复的速度比从数据冲突中恢复的速度快得多。因此,RTS 冲突对整个网络性能的危害小于数据冲突。
缺点是 RTS/CTS 本身需要一些网络带宽,并且它会引入新的感测时间,在此期间不能进行其他数据传输或 RTS/CTS 传输。更糟糕的是,当然 RTS/CTS 始终必须使用网络支持的最低速度来执行,否则仅支持此速度的节点将看不到它。所以基本上可以说 RTS/CTS 总是降低整个网络的理论吞吐量,但是如果您的网络遭受大量冲突,无论是由于隐藏节点问题(也可能由使用与您的网络相同信道的其他网络的节点引起)还是因为您的 WiFi 拥挤(因为更多节点会增加随机冲突的机会),它实际上可能会增加实际吞吐量。这里的重要因素不是隐藏节点的数量,而是冲突的数量,无论它们是如何引起的。
我读过一项研究(一旦我能再次找到它,我会在这里更新并添加链接),该研究表明,除非您的网络真的很小(可能少于 6 个节点并且只覆盖一小块区域)并且没有与使用相同信道的其他网络隔离,否则使用 RTS/CTS 在实践中几乎总是会产生相当积极的影响。那么为什么要设置阈值呢?如果发送数据所花的时间与 RTS/CTS 握手所花的时间一样多,那么使用 RTS/CTS 的收益就很小,因为网络是否必须从非常小的数据冲突或 RTS 冲突中恢复都没有太大区别。从 RTS 冲突中恢复更好的原因是 RTS 数据包非常小而数据包通常不小。但对于非常小的数据包,RTS/CTS 只会增加开销而没有实际收益。
现在您也知道了碎片阈值如何改善网络性能。一方面,它限制了发送的数据包的大小,如上所述,发生冲突的数据包越小,网络恢复的速度就越快。另一方面,如果发生冲突,则只需要重新发送受其影响的片段,而不是整个数据包。但是,发送的每个片段都有自己的开销,因此发送的片段越多,增加的开销就越多,而开销基本上就是浪费的带宽,这些带宽本来可以用于数据传输。