802.11 LAN 如何避免无线介质中的数据包冲突?

网络工程 无线的 IEEE-802.11
2022-02-02 17:59:53

假设我们有一个路由器(支持 802.11 协议标准)和一些配置为与该路由器通信的设备。我了解了设备/节点如何使用 CSMA/CA 传输数据,以及其他机制(例如 RTS/CTS 和 NAV)来帮助防止无线介质中的冲突。

但是,由于它是一种无线媒体,因此每个数据包都将到达所有其他周围的设备。因此,如果我的笔记本电脑是这些设计之一,那么它会拦截通过通道浮动的每个数据包吗?还是设备到设备的通信会通过不同的频率发生,从而使其他设备无法接收这些信号?

如果所有设备都使用相同的频率,那么这些波也有可能相互叠加并导致数据包失真。它将如何克服这个问题?

4个回答

物理载波感应几乎是避免冲突的唯一方法。电台在传输任何信号之前“监听”(感知信道中的能量)。这称为畅通信道评估 (CCA)。当 CCA 失败时,即在并发和现有传输期间进行传输时(例如在隐藏/暴露节点的情况下),就会发生冲突。CCA 阈值是一个重要的指标,可以在设备中进行微调,以调整可以容忍干扰的程度。换言之,即使发生冲突,信号干扰加噪声比也可能足以以较低的数据速率运行。

正如您所提到的,物理载波侦听的过程通过虚拟载波侦听 (NAV) 得以简化。使用 NAV 计数器,站点知道在其他站点之间将发生传输的持续时间,并且可以“退避”而不会引入冲突的机会。

有大量关于 MIMO 通信的文献,其中利用空间域在同一频率上同时传输并发传输。这本身就是一个很大的话题,而且范围太广,无法在这里讨论。

Wi-Fi/802.11 使用 CSMA/CA 来尽可能避免冲突。RTS/CTS 是一种可选的附加方法。

请注意,并非所有帧都可以到达所有站点,除非它们靠得很近。两个相距足够远的站都可以与中间的 WAP 通信,但它们彼此听不到(隐藏站问题)——这就是为什么让 WAP 与 RTS/CTS 协调传输可能是有益的。

通常,每个 Wi-Fi 信道(捆绑)是半双工介质,一次只能传输一个站点,多个同时传输尝试会导致冲突。然而,使用波束成形 - MU/MIMO - WAP 可能能够同时向不同的站点发送多个空间分离的波束。

在隐藏节点问题中无法检测到冲突这是因为节点 A 和 C 超出了彼此的范围(因此在传输时无法检测到冲突)。因此,带有冲突检测的载波侦听多路访问 (CSMA/CD) 不起作用,并且会发生冲突。接入点接收到的数据由于冲突而损坏。为了克服隐藏节点问题,除了带有冲突避免的载波侦听多路访问 (CSMA/CA) 方案之外,还实施了 RTS/CTS 握手 (IEEE 802.11 RTS/CTS)。

一个相关的问题,称为暴露节点问题,发生在以下所述情况下:

假设 B 正在向 A 发送数据(如上图所示)。节点 C 知道此通信,因为它听到 B 的传输。C 仅仅因为它可以听到 B 的传输就断定它不能传输给任何人是错误的。例如,假设 C 想要向节点 D 传输。这不是问题,因为 C 向 D 的传输不会干扰 A 从 B 接收的能力。

我们通过一种称为多路访问和避免碰撞 (MACA) 的算法来解决这些问题。发送方和接收方在传输数据之前相互交换帧。这会通知所有附近的节点传输即将开始。发送方将请求发送 (RTS) 帧发送到接收方。然后,接收方将清除发送 (CTS) 帧回复给发送方。任何接收到 CTS 帧的节点都知道它离接收者很近,因此不能发送帧。任何接收到 RTS 帧但没有接收到 CTS 帧的节点都知道没有靠近接收器来干扰它,所以它可以自由传输数据

数据包冲突是不可能的,因为节点 A 和 C 超出了彼此的范围(因此在传输时无法检测到冲突)。因此,带有冲突检测的载波侦听多路访问 (CSMA/CD) 不起作用,并且会发生冲突。接入点接收到的数据因冲突而损坏