zoukankan      html  css  js  c++  java
  • 从状态转移看:载波侦听多路访问/冲突避免(CSMA/CA)

    CSMA/CA是写入IEEE802.11的无线网络MAC层标准协议,相信看到这篇文章的读者都知道它是用来做什么的。但许多短文对这个协议的解释都有所缺乏,因此本文用状态转换图的形式详细说明协议的工作流程。(好吧其实是作者看到一个状态图有感而发,见参考资料)

    请看下面的状态转换图:

    其中,CS=1(0)意味着载波被占用(可用),Q=1表示队列中有(无)待发送的帧(frame)。感兴趣的读者可以自行推断上述状态代表什么。

    好了,首先说明,CS=1还是CS=0是怎么判断呢?有时是通过侦听载波,有时是通过RTS/CTS机制,虽然图中并未说明。下面沿着状态图简述CSMA/CA工作流程:

      (初始状态为I, 节点有待发的帧,于是开始侦听载波)

      I:idle,发送方侦听到信道忙,则转到D,否则转到T。

      D:defer,若信道忙,等待一段时间后,若信道空闲,转到B。

      T:transmit,若信道可用,等待一个DCF之后发送一个RTS。若收到的CTS中包含自己的地址,说明预约信道成功,开始传输数据帧。传输过程中遇到出错,则转到B,进入退避过程;遇到信道被占用时转到D。

      B:backoff,即CSMA/CA的退避机制,用于处理传输出错的情况。出错一般只由两种情况导致,即冲突(collision)和信道噪声(carrier noise)。退避时,从{1, 3, 7, 15, ... 2^m-1}中选择一个时间进行延时。

       

        退避过程:DCF在退避状态下有一个竞争窗口机制,如果一次传输成功了,发送端需要将竞争窗口置为最小值(802.11中规定contention window最小为31)。对于重传的节点,每一次传输失败都将contention window的大小成倍放大,即第一次重传时窗口大小为63,第二次是127,直到达到重传次数上限,则作丢包处理。竞争窗口越小,越有利于竞争。

        另附MAC层中自私行为的实现:

      1,增大CCA threshold。

              CCA (空闲信道评估,Clear Channel Assessment)用于监测信道是否空闲。节点监测信道中的RSSI并于阈值进行比较,若超出阈值则认为信道忙,否则信道可用。自私节点通过增大这一阈值,使得自身对于信道是否可用不敏感,因此在信道忙的时候仍然发包,导致其他节点的传输收到干扰。这种行为属于暴力自私行为,因为在干扰下自私节点自身的包也会丢失。

      2,减小backoff time,即选择小甚至最小的CW。

              通过选择最小的CW,自私节点在传输出错的时候总是先于冲突节点发包,从而导致不公平性。篡改backoff time的自私行为是最难以解决的问题之一。

    参考资料:Utpal Paul, Passive Measurement of Interference in WiFi Networks with Application in Misbehavior Detection[J], TMC, 2013.

     

  • 相关阅读:
    Redis基础知识补充及持久化、备份介绍
    Redis基础认识及常用命令使用
    Docker实战(7):Docker无日志(无*-json.log文件)
    Linux实战(11):Centos安装Jenkins
    Linux实战(13):Centos8 同步时间
    Docker实战(6): 导出docker镜像离线包
    Linux实战(13):Centos8安装FFmpeg
    Linux实战(12):解决Centos7 docker 无法自动补全
    Linux实战(11):Centos后期添加网卡配置
    Linux实战(11):配置PPPOE拨号
  • 原文地址:https://www.cnblogs.com/zhchngzng/p/3376626.html
Copyright © 2011-2022 走看看