4

【优质信源】计划09 — 浅谈无线局域网下的单用户MAC层接入协议(基于CSMA/CA框架)

 3 years ago
source link: https://zhuanlan.zhihu.com/p/144762815
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

【优质信源】计划09 — 浅谈无线局域网下的单用户MAC层接入协议(基于CSMA/CA框架)

Wi-Fi话题下的优秀回答者

我们先大体总结下目前802.11协议这一块的科研现状,也就是Wi-Fi科研这一块,其实大致两种思路,1)顺着标准来,优化或者重新设计802.11的PHY或者MAC,2)开辟新战场,利用Wi-Fi技术本身做别的功能,比如说CSI感知,CTC通信,Backscatter无源传感器通信等等。目前我们看到的大部分基于802.11协议的无线局域网感觉上无疑是以上两种思路。

第一种思路其实科研做的比较多,而且时间比较久,也就是顺着802.11协议的主框架,做修改或者优化。第二种思路主要是随着现在SDR发展速率比较快,而且价格相对便宜一多,大大方便了原型验证,所以好做了很多。

本文我们主要关注在802.11网络,也就是无线局域网下的单用户MAC层接入协议。

Remark:其实我一般都偏重写标准的解读,而很少谈科研的内容。一方面是自己的科研实际上和标准的gap比较大,标准更多是专利,成本,硬件难度和稳定性,技术创新综合博弈的结果,而我做的科研实际上偏重于技术创新一方面,实际被应用基本上没什么可能,另外一方面在于,围绕802.11的协议优化实际上比较有局限性,也就是脱离了802.11协议,其不具备很强的泛化能力,不像物理层编码技术之类,可以多个无线通信协议中都可以应用。所以我大致就罗列下目前看到过的一些研究思路,做一个简单的讲解,可以当做一些启发。

单用户MAC层接入协议

我们目前的802.11场景主要分成两种传输场景:

  • 传统的单用户传输。
  • 基于MU-MIMO或者OFDMA的多用户传输,科研里面还多了一个SIC。

概括而言,多用户传输相对于单用户传输实际上是多了一个user-selection的过程,在通信问题里面往往呈现是一个最优化问题。而单用户传输关注点的在于如何最快的竞争到信道,并且避免冲突。因为所有用户起码会满足一种公平性,所以大家都有抢占的信道发送数据的可能,所以关注整个竞争过程更多一些,而少关注一些节点间的搭配传输和参数优化。

单用户MAC最典型的代表-CSMA/CA

以上图为例,单用户传输的场景,简单而言就是STA1和STA2如何竞争,然后避免两个节点同时传输所造成的冲突。这种场景的最典型代表就是CSMA协议(Carrier Sense Multiple Access)

CSMA:“节点在每一次发送之前先监听信道是否是空闲的,如果信道不是空闲的话,那么就不发送数据,等待一会再进行尝试。只有确保是空闲的情况下,才可以发送数据,从而避免打断其他节点正在进行的传输过程"。

其中CSMA还分成三种机制,1-persistentes CSMA0-persistentes CSMAp-persistentes CSMA。我们这里展开说明下p-persistentes CSMA:

p-persistentes CSMA:“节点需要持续监听信道,一旦发现信道空闲后,节点以p的概率立刻发送数据,以1-p的概率不发送数据。若节点该时刻不发送数据,那么等待一段时间后,再次进行监听,并以p概率再次发送”。

CSMA/CA的思路实际上是延续了p-persistentes CSMA,其用back-off过程代替了p概率。

back-off:“节点首先需要从一个范围([0,CW])中选择一个随机数,该随机数称为back-off counter。在发送数据之前,节点需要逐个时隙(Slot)监听信道,如果该信道空闲,那么back-off counter会减1。如果该信道忙,则意味着可能有别的节点正在传输,从而要接收数据,当接收结束后,节点继续进行逐个时隙的监听。当节点的back-off counter逐次递减直到0之后,其才可以进行数据传输)

所以back-off实际上是一种p-persistentes CSMA的实现,而其在时域slot上执行的这种back-off的机制,从而让我们更多的称之为“时域竞争”

Remark:这里简化说明了下CSMA/CA的过程,细节点的可以参考-802.11协议精读2:DCF与CSMA/CA

无线局域网下的单用户MAC的优化

我们主要讨论无线局域网下的单用户MAC的优化,这里其实也可以分成两个门类:

  • 基于CSMA/CA机制做优化
  • 更替“时域竞争”的竞争模式

前者实际上还是在802.11的框架内,也就是不动CSMA/CA的机制,那么能够优化的参数实际上就是包含了CW值,Back-off counter值等一系列参数,同时也包含了slot之类的时间参数,这一系列的优化足以有很多研究内容。

后者实际上是从CSMA/CA竞争的本质,也就是时域竞争入手,希望能够引入一些更有效率的竞争模式,通常后者的研究需要搭配上更新的PHY技术,所以跨层设计居多。

本文我们主要还是探讨前者,也就是还在CSMA/CA框架内做优化。

基于CSMA/CA的单用户MAC的优化(基于CSMA/CA框架)

这里的目标实际上是做CSMA/CA的优化,那么维度实际上有很多。目的只有一个,就是提升吞吐量。那么维度很多,其实就是影响吞吐量的参数有很多。所以略微要对802.11的吞吐量模型有所了解。典型的802.11吞吐量模型就是bianchi模型(细节参考:802.11协议精读13:协议理论性能(Bianchi模型)),最后的吞吐量式子可以写成下面这样:

这里吞吐量(归一化吞吐量)被定义为传输真实数据(Data)的时间占总传输时间(Overhead + Data)的比例(在一个标准的slot内),具体写成参数的式子如下:

其中Ptr和Ps两个概率如下,里面的 [公式] 是发送概率:

其他还有一些是时间参数 [公式],Ts,TC,E[P]之类 , [公式] 是协议固定值,E[p]实际上是平均的数据包长度,Ts和Tc如下。

我们首先将吞吐量的式子放在上面,我们这里的优化实际上是偏重于纯MAC层的设计优化,所以优化的思路一般都是通过设计机制,而不是直接求数学优化,我们大致举一举例子:

1. 直接优化时隙,上面的式子中我们看到有 [公式] (也就是slot时隙),SIFS,DIFS之类的时隙参数,直接优化这一系列参数就可以缩短协议的时隙开销,直观而言,就是优化了back-off的单位时隙。这个研究的典型代表就是wifi-nano[1],其是基于802.11a的STF结构进行了优化,把时间从slot的几us,缩减到了1us内。

2. 直接优化控制帧,上面式子中ACK就是一个典型的控制帧,其余在802.11协议面还有RTS/CTS这样类型的控制帧,所以控制帧时间优化同时能够提升效率,那么典型的研究就是802.11ec[2],其实际上是一个PN序列代替了帧结构,从而物理层上相关到了该PN序列就识别到哪种控制帧,PN序列相比帧结构更短,所以能够优化时间,在RTS/CTS相关的场景中更有意义。

上面两个是直接进行的参数优化,我们关注吞吐量公式的分母和分子,分子实际上是真实数据传输的时间,分母是三部分,空闲slot开销,传输整个PPDU时间,也就是物理层整个帧,以及冲突所造成的时间。从这一块而言,可以下述优化:

3. 增大payload数据传输的比重,实际上就是增加单次竞争传输的数据量,比较简单粗暴。这一快实际上协议已经做了很多内容,包含TXOP发送机制以及帧聚合[3]

4. 优化竞争窗口CW以及回退次数m等参数(基于活跃节点数目优化参数),我们在上面可以看到分母影响的主要是ptr和ps两个参数,这两个参数展开实际上都是关联到 [公式] 的。 [公式] 的具体展开如下:

实际上关联到参数包含了活跃节点数目n竞争窗口CW回退次数m。在802.11标准中,CW值和回退次数限制m,都是标准给定的,如果节点比较多的情况下,那么造成冲突后,会通过BEB算法,增加CW竞争窗口降低冲突概率后,重新进行发送。如果节点数较少的情况下,即使当前信道空闲,传输不会发生冲突,但是还需要等待多个slot倒数,直到back-off counter到0才可以发送,所以存在浪费。

所以思路就变成了 - 如何感知当前节点数目n,然后进行CW优化

4.1 可以通过wifi探针,获知当前周边的节点数目,从而带入优化。

上述的方法由于很多设备目前是启用了随机MAC,所以简单的WiFi探针会失效,所以更进一步的方法就是:

4.2 基于CSI这种物理指纹做wifi探针,识别周边的节点数目,从而优化MAC层参数。

实际情况下,随便可以得知周边的节点数目,但是不一定很多节点是有内容要发送的,有很多节点是“非活跃”的,也就是网络是工作在非饱和状态下,最好的情况是根据当前“活跃”的节点数目做优化,那么问题就转变为,如何得知活跃的节点数目:

4.3 通过一些PHY/MAC参数反推(比如基于空闲时隙数目),比如idle-sense[4],其是通过监听在竞争过程中,空闲的idle时隙数目,也就是仅仅回退,没有发送的slot间隙数目,来推断当前的网络环境,从而进一步对CW之类的参数优化。这里是举个例子,还要比如用卡尔曼滤波的来估计活跃节点数目的设计也有,目的都是相同的。

4.4 AP直接获取节点缓存情况,这个是802.11ax中引入的特性了,实际上也是从移动通信里面来的。由于802.11ax中引入了BSRP过程,AP可以获取节点的缓存情况,从而可以对全局参数进行一个优化。

5. 优化竞争窗口CW以及回退次数m等参数(基于修改CW和BEB机制优化)。5和4实际上很接近,但是方法的偏重点不同,802.11的当前CW参数调节实际上是基于BEB算法的。

BEB机制指的是:“如果发送者没有成功接收到ACK反馈,那么其会认为当前传输造成了冲突,从而要增大CW值(即CW*2),从而减少冲突概率。只有成功传输或者丢包时,才会将CW重置回CWmin”。

那么实际上优化思路是从修改CW值的选择,也就是改进BEB机制,或者用新的冲突解决方法,或者直接控制CW值的选择方法。具体如下:

5.1 改进BEB的机制。实际上BEB的机制是最简化的机制,甚至比TCP的AIMD还直接。标准工的CW增加是按照2倍递增,然后减少策略是成功传输后重置。因此,很多研究借鉴TCP的AIMD,加性增,乘性减的思路来优化这一块,比如MILD,MIMD,MIMLD等等,这一系列的研究都是很早期的了,所以就不多加探讨了。

5.2 解析冲突。传统802.11中,冲突发生以后是调节CW值,然后重传,直到传输成功。还有一种新的方式就是在传输的时候,给每一个节点对应的帧做一个PN序列标记,让AP可以识别到哪些人冲突了。然后AP就以轮询的方式,代替节点的主动竞争,逐个轮询冲突节点,把冲突解析掉。这个方式的代表就是Semi-backoff[5]

5.3 Backoff-counter保持上一轮数值,实现无冲突。这种方法实际上有一些凑运气,但是如果成功的话,并且参数合理的话,确实能够实现一个无冲突的传输。在802.11中,冲突的本质实际上是两个及两个以上节点选择了相同的back-off counter,所以如果大家选择的back-off都不一样,那么只要保持这个状态,重复传输,那么就意味着不会有冲突发生了。一个典型的设计就是CSMA/ECA[6]。不过这个实际上有一些碰运气,不一定网络每次收敛的参数一样,很有可能出现虽然无冲突,但是back-off的时间周期很长。

上述实际上是优化BEB和CW选择机制。

6. 优化传输速率从而优化E[P]时间。这点实际上是和5.1类似的,当冲突发生后,不仅仅会影响CW参数的选择,还会影响传输速率的适配。这一块由于标准是将权限下放给厂家,所以不好明确说对什么进行了优化。主要还是两种思路:

6.1 类似5.1,采用类似优化AIMD的机制,优化速率调节机制。跟5.1一样实际上是一个速率适配,所以还是一个如何调节的问题。

6.2 基于CSI调节速率。其实802.11这一块比移动通信要简单点,移动通信是要求速率和功率两个都优化,顺序是先调速率,然后TPC控制功率。而802.11直接控制速率即可。在802.11ac协议引入NDP过程测量CSI以后,协议设计了一种Fast link adaption,实际上就是移动通信中,将CSI和CQI挂钩,然后CQI直接对应到MCS的思路。

7 识别冲突和SNR差导致的传输错误。在标准的802.11中,传输错误是通过ACK Timeout造成的。而造成错误的原因一般而言包含了冲突,和传输错误这两种。按照目前的协议而言,节点是无法识别当前的错误到底是冲突产生的,还是错误产生的,所以在发生错误以后,CW窗口和物理层传输速率,两者都要进行调整。那么如何识别冲突和物理层错误,有一篇文章提出了一种post-CCA[7]机制,由于无线传输时,不同节点的数据包大小是不同的。所以如果冲突节点在传输完当下这个冲突的数据包后,其如果还检测信道是CCA,那么就意味着是冲突发生了,如果传输完成后,信道会出现idle,但是还是ACK Timeout,那么就是传输错误造成的。这种在传输结束后继续检测CCA的方式就是post-CCA了。

8. 控制CW实现吞吐量的分配最优化。根据一开始bianchi的吞吐量式子, 当节点数n,时隙的参数,数据包大小,回退次数m之类全部固定的情况下,实际上吞吐量是直接和CW值关联的。那么意味着控制CW,就可以控制吞吐量。这里我们从全局的角度换到每一个节点的角度,也就是通过控制每一个节点的CW值选取,可以控制其单个的吞吐量。进而可以做吞吐量优化,比如按比例分配,固定分配一部分,然后剩余的按照某种规则分配(其实是让固定流量的QoS得以保障)等等,这也包含诸多研究。

9. 基于机器学习修改CW之类的配置参数,这里实际上是目前机器学习带动起来的一个坑,本文目前还不怎么打算扩展,我目前做的一些研究也比较偏重于这个方向了。其实802.11的环境配机器学习还是挺适合的,因为很多东西其实都是未知,且机制上不可知的,比如没有通信的专用控制信道可以定期反馈信息。所以本身优化就是有些盲调的感觉,比较黑盒。所以配上适合解决黑盒问题的机器学习方法也是可以的。

本文给出了一些关于基于无线局域网,也就是802.11协议框架下的一些科研做过的优化思路,可以做一个简单参考。另外还存在的一种思路就是更替掉802.11当下的CSMA/CA机制,也就是更替掉“时域竞争”,引入更多的资源平面做竞争,从而提升MAC层的效率,之后可以再进行补充探讨。

  1. ^WiFi-Nano: Reclaiming WiFi Efficiency Through 800 ns Slots
  2. ^802.11ec: collision avoidance without control messages
  3. ^Cambridge.Next Generation Wireless LANs.802.11n and 802.11ac
  4. ^Idle Sense: An Optimal Access Method for High Throughput and Fairness in Rate Diverse Wireless LANs
  5. ^Semi-Distributed Backoff: Collision-Aware Migration from Random to Deterministic Backoff
  6. ^Future Evolution of CSMA Protocols for the IEEE 802.11 Standard
  7. ^Post-CCA and Reinforcement Learning based Bandwidth Adaptation in 802.11ac Networks

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK