-
CSMA
全称是Carrier Sense Multiple Access,载波侦听多路访问。
CSMA协议可细分为时隙的和非时隙的,其中每一种又可分为:
1-persistentes CSMA(1坚持-CSMA)
0-persistentes CSMA(非坚持-CSMA)
p-persistentes CSMA(p坚持-CSMA)
从历史上而言,CSMA实际上是源于aloha协议。为了理清协议的设计思路的脉络关系,我们还是有必要对原始的aloha协议做一个说明。Aloha是为无线工作环境设计的一个协议,其最初的思想为:一个aloha节点仅仅要有数据的话,该节点就能够马上发送。当该节点数据发送完之后。其须要等待接收方反馈的ACK。若成功接收到ACK之后,那么这一次传输成功。假设没有收到ACK的话,那么这一次传输失败。该aloha节点会觉得网络中还存在另外一个aloha节点也在发送数据,所以造成接收方发生了冲突。最后这些冲突的节点会随机选择一个时间进行回退(backoff),以避免下一次冲突。若冲突节点回退完毕。其才能够又一次进行发送。
实际上从初始的aloha协议中。我们就能够看到如今CSMA/CA的影子,网络协议的设计都是符合KISS原则的(Keep It Simple and Stupid),所以实际中我们所应用到的网络协议,其思想都不会是特别复杂。基于aloha协议的思想,CSMA协议对其最大的改进即是引入了LBT机制(Listen Before Talk),在CSMA中的CS(Carrier Sense)即是指Listen监听机制。
在LBT机制下CSMA的思想就是:“CSMA节点在每一次发送之前先监听信道是否是空暇的,假设信道不是空暇的话。那么就不发送数据,等待一会再进行尝试。仅仅有确保是空暇的情况下,才干够发送数据,从而避免打断其它节点正在进行的传输过程"。
详细CSMA的工作机制关联着我们之前所叙述的三种CSMA模式,下面我们分别进行叙述:
1-persistentes CSMA:
节点须要持续监听信道。一旦节点发现信道空暇后,则立马发送数据,避免了媒体利用率。但是若有两个或两个以上的站点有数据发送,冲突就不可避免。
0-persistentes CSMA:
节点不连续监听信道,若该时刻节点监听信道为busy,那么等待一段时间后,再次进行监听。若节点该时刻监听信道为空暇,则立马发送数据,可以减少网络冲突。但若多个站点都有数据要发送,由于都在延时,所以媒体可能处于空闲状态,媒体利用率低。
p-persistentes CSMA:
节点须要持续监听信道,一旦发现信道空暇后,节点以p的概率立马发送数据。以1-p的概率不发送数据。若节点该时刻不发送数据。那么等待一段时间后。再次进行监听,并以p概率再次发送。既能像0-persistentes CSMA那样减少冲突,又能像1-persistentes CSMA 那样减少媒体空闲时间。这种算法的关键在于p值得选择,如果p值过大,冲突就不可避免,而且随着冲突概率的增大,吞吐量就会降低到0;当然若p值选的过小,媒体利用率会非常的低。
-
CSMA/CA简介
无线局域网标准802.11的MAC是在一个共享媒体之上支持多个用户共享资源,由发送者在发送数据前先进行网络的可用性检测。在802.11无线局域网协议中,无线传输信号的性质决定了无线信道接收与发送信号时,无法采用CSMA/CD通过电压变化检测冲突的方法(Near/Far现象),同时无线网络中存在隐蔽站与暴露站的问题,因此设计了CSMA/CA来完成无线局域网下的冲突检测,利用它检测和避免当两个或两个以上的网络设备需要进行数据传送时网络上的冲突。 CSMA/CA利用ACK信号来避免冲突的发生,也就是说,只有当客户端收到网络上返回的ACK信号后才确认送出的数据已经正确到达目的地址。
(1)隐蔽终端问题
当A和C都检测不到信号,认为信道空闲时,同时向终端B发送数据帧,就会导致冲突。
(2)暴露终端问题
当B向A发送数据的时候,终端C也想给D发送数据:但是,终端C检测到信道处于忙状态,则不会向D发送数据,但是,B向A发送数据是不会影响C向D发送数据的。
-
CSMA/CA的工作原理
这种协议实际上就是在发送数据帧之前先对信道进行预约。
CSMA/CA协议中的RTS和CTS帧
在图中,站B、站C、站E在站A 的无线信号覆盖的范围内。而站D不在其内;站A、站E、站D在站B 的无线信号覆盖的范围内,但站C不在其内。
如果站A要向站B发送数据:
1)站A在发送数据帧之前,要先向站B发送一个请求发送帧RTS(Request To Send)。在RTS帧中已说明将要发送的数据帧的长度;
2)站B收到RTS帧后就向站A回应一个允许发送帧CTS(Clear To Send)。在CTS帧中也附上A欲发送的数据帧的长度(从RTS帧中将此数据复制到CTS帧中)。站A收到CTS帧后就可发送其数据帧了。
现在讨论在A和B两个站附近的一些站将做出什么反应:
1)对于站C,站C处于站A的无线传输范围内,但不在站B的无线传输范围内。因此站C能够收听到站A发送的RTS帧,但经过一小段时间后,站C收听不到站B发送的CTS帧。这样,在站A向站B发送数据的同时,站C也可以发送自己的数据而不会干扰站B接收数据(注意:站C收听不到站B的信号表明,站B也收听不到站C的信号)。
2)对于站D,站D收听不到站A发送的RTS帧,但能收听到站B发送的CTS帧。因此,站D在收到站B发送的CTS帧后,应在站B随后接收数据帧的时间内关闭数据发送操作,以避免干扰站B接收自A站发来的数据。
3)对于站E,它能收到RTS帧和CTS帧,因此,站E在站A发送数据帧的整个过程中不能发送数据。
虽然使用RTS和CTS帧会使整个网络的效率有所下降。但这两种控制帧都很短,它们的长度分别为20和14字节。而数据帧则最长可达2346字节,相比之下的开销并不算大。相反,若不使用这种控制帧,则一旦发生冲突而导致数据帧重发,则浪费的时间就更大。虽然如此,但协议还是设有三种情况供用户选择:
● 使用RTS和CTS帧;
● 当数据帧的长度超过某一数值时才使用RTS和CTS帧;
● 不使用RTS和CTS帧。
尽管协议经过了精心设计,但冲突仍然会发生。
例如:站B和站C同时向站A发送RTS帧。这两个RTS帧发生冲突后,使得站A收不到正确的RTS帧因而站A就不会发送后续的CTS帧。这时,站B和站C像以太网发生冲突那样,各自随机地推迟一段时间后重新发送其RTS帧。推迟时间的算法也是使用二进制指数退避。
为了尽量减少冲突,802.11标准设计了独特的MAC子层。
总结:
1)首先检测信道是否有使用,如果检测出信道空闲,则等待一段随机时间后,才送出数据。
2)接收端如果正确收到此帧,则经过一段时间间隔后,向发送端发送确认帧ACK。
3)发送端收到ACK帧,确定数据正确传输,在经历一段时间间隔后,会出现一段空闲时间。
-
CSMA/CA协议的关键技术
(1)帧间间隔
slot time
时隙是指一个时间片段,在CSMA/CA中,节点竞争接入信道之前需要经过相应的随机回退(backoff)过程,其中backoff过程就是由很多个时隙所组成的。
A Slot Time= a CCA Time(CCA时间)+a Rx/Tx turnaround Time(发送接收天线转换时间)+a Air Propagation Time(传播延迟)+a MAC Processing Delay(MAC层处理延迟)
SIFS(最短帧间间隔) Short Interframe Space
在802.11系列无线局域网中SIFS是固定值,SIFS是最小的帧间间隔,因此采用SIFS的节点具有访问无线链路的最高优先级。它等于节点从发送状态切换到接收状态并能正确解码所需要的时间,或者从接收状态转为发送状态所需要的时间,在SIFS过期后可能发送的数据包包括ACK、CTS帧,不同标准中规定的SIFS值不同。
A SIFS Time= a RXRF Delay(射频延迟)+a RXPLCP Delay(物理层头部接收延迟)+a MAC Processing Delay(MAC层处理延迟) + a RxTx Turnaround Time(发送接收天线转换时间)
DIFS, DCF Interframe Space(DIFS)
PCF方式下节点使用的帧间间隔。在DCF(分布协调功能)协议中,节点在开始发送数据之前需要监测信道是否空闲。如果信道已经空闲,则节点仍需等待DIFS段时间才开始发送数据;而如果在DIFS时间段内任一时刻信道被监测为忙,则节点不得不推迟它的数据发送。DIFS和SIFS间的计算关系如下:
PIFS ,PCF Interframe Space
DCF(点协调功能)方式下节点使用的帧间间隔,用于发送数据帧和管理帧。PCF使得AP等待PIFS而不是DIFS时间以访问信道,由于DIFS > PIFS > SIFS,因此AP总比普通节点具有更高的访问信道的优先级。
PIFS = SIFS + Slot time
(2)虚拟载波监听机制
当其他节点通过源终端向目的终端发送的RTS帧以及目的终端对于源终端回应的CTS帧得知在某一时间段,这两个终端将要进行会话,则其他终端节点会停止侦听,进入休眠状态(节省能量),直到会话结束,则又开始侦听。这种机制就称做虚拟载波侦听。
(3)争用窗口
在有众多的终端节点都想发送数据并且信道空闲时:先经过一个DIFS的时长,然后,每一个节点都产生一个随机的争用窗口(计时器),进行倒计时,当先结束计时结束的节点进行数据的发送,其他节点冻结争用窗口,停止计时,并且记住剩余的时间,当该节点的数据发送完成,在经过一个DIFS的时间,其他节点的争用窗口重新启动并且开始计时,依次下去,直到所有的节点发送完毕。若节点在争用窗口计时结束后发送数据与其他节点发生冲突,则发生冲突的节点都随机产生一个争用窗口,继续进行倒计时。
CSMA/CA协议只能用于有明确目标地址的帧,不能用于组播报文和光播报文传输。