0、随机访问MAC的协议
数据链路层动态随机分配信道时对随机访问MAC协议:ALOHA,CSMA,CSMA/CD,CSMA/CA
ALOHA,CSMA,CSMA/CD的区别仅在于是否对信道进行监听和是否有碰撞检测:
1、ALOHA:不监听,无碰撞检测;
2、CSMA:有监听,无碰撞检测;
3、CSMA/CD:有监听,有碰撞检测。
4、CSMA/CA:有监听,尽量避免冲突。
监听(CS):发送时先判断其他站点是否正在发送数据,监听到有数据正在发送就不发了,根据不同策略等待一段时间(即CSMA的三种退避算法)后再进行发送。但由于通道的传播延迟,仍然可能出现发送端发送完毕,数据帧正在传输中,接收端未接受到的情况,这种情况不会被监听到,此时发送数据依然有可能发生碰撞。
碰撞检测(CD):在无碰撞检测的情况下,发送方不知道信道上是否发生了碰撞。就算信道上发生了数据帧的碰撞,被破坏掉的帧依旧会持续发送到接收方,然后接受方提供反馈之后发送方才能发现产生了碰撞,浪费了时间。有碰撞检测即发生碰撞就立刻从碰撞点返回消息,发送方收到消息后立刻停止发送,等待一段时间后再重传,提高了信道利用率。碰撞检测需要对信道持续监听。
冲突避免(CA):发送包的同时不能检测到信道上有无冲突,只能尽量“避免”。
0.1 CSMA vs ALOHA
Aloha是一种简单的通信方案,最初由夏威夷大学开发,用于卫星通信。在Aloha方法中,通信网络中的每个源在每次有帧要发送时发送数据。如果帧成功到达目的地,则传输下一帧。如果目的地没有接收到帧,则会再次发送该帧。CSMA(Carrier Sense Multiple Access)是一种媒体访问控制(MAC)协议,其中节点只有在验证没有其他通信量之后才能在共享传输媒体上传输数据。
0.2 ALOHA协议
如前所述,Aloha是一个简单的通信协议,网络中的每个源只要有一个帧要发送,就发送数据。如果帧传输成功,则将发送下一帧。如果传输失败,源将再次发送相同的帧。半双工无线链路或两个无线广播系统都能很好地工作。但是,当网络变得更复杂时,例如具有多个源和目的地的以太网使用一个公共数据路径时,就会出现由于数据帧冲突而导致的问题。当通信量增大时,碰撞问题变得更严重。这会降低网络的效率,因为帧碰撞会导致两个帧中的数据丢失。时隙Aloha是对原始Aloha协议的改进,其中引入了离散时隙来提高最大吞吐量,同时减少冲突。这是通过只允许信源在时隙开始时传输来实现的。
时隙ALOHA(S-ALOHA)
时隙ALOHA(S-ALOHA)算法原理:
时隙ALOHA算法把时间分成多个离散的时隙,每个时隙长度等于或稍大于一个帧,标签只能在每个时隙的开始处发送数据。这样标签要么成功发送,要么完全碰撞,避免了纯ALOHA算法中的部分碰撞冲突,碰撞周期减半,提高了信道利用率。时隙ALOHA算法需要读写器对其识别区域内的标签校准时间。时隙ALOHA算法是随机询问驱动的TDMA防冲撞算法,因为标签仅仅在确定的时隙中传输数据,所以该算法的冲撞发生频率仅仅是纯ALOHA算法的一半,但其系统的数据吞吐性能却会增加一倍。
时隙 ALOHA 算法的基本工作流程如下:
1)读写器先发送 Query 指令规定帧长(时隙的个数)。
2)标签在帧长范围内随机地选择一个时隙响应读写器的指令并返回信息包,仅有一个标签返回信息包的时隙称为成功时隙,没有标签返回信息包的时隙称为空时隙,有 2 个或更多个标签返回信息包的时隙称为碰撞时隙,发生碰撞的标签会在下一帧继续尝试。
3)算法先根据前一帧的反馈(即观测值:碰撞时隙数量,空时隙数量和成功时隙数量,采用一定的标签估算方法来估算场区内的标签数量 n,并且据此选择一个合适的帧长度。
4)读写器以
为下一轮识别的帧长,直到读写器工作场区内的标签被全部识别完毕。
matlab代码:
clear;close all;clc;
prS = 0;
n = 1000;
for jumlahUser = 1:20
for peluangTx = 1:20
jumlahSukses=0;
jumlahTx = 0;
for perc = 1:n
hasilRandom = randi(100, 1, jumlahUser);
paketDiTx = sum(hasilRandom <= peluangTx);
if paketDiTx == 1
jumlahSukses = jumlahSukses + 1;
end
jumlahTx = jumlahTx + paketDiTx;
end
prS(jumlahUser, peluangTx) = jumlahSukses/jumlahTx;
end
end
surf(prS)
xlabel('信道空闲的时间')
ylabel('发送数据的时')
zlabel('信道利用率')
title('Slotted ALOH 图形 A')
运行结果:
总结:
时隙ALOHA算法(简称SA)是 (RFID)系统中常用的防碰撞算法。1972年,Roberts提出了时隙Aloha,它是对纯的一种改进,其基本思想是把时间分成若干个相同的时间片,所有用户在时间片开始时刻同步接入网络信道,若发生冲突,则必须等到下一个时间片开始时刻再发送。该方法避免用户发送数据的随意性,减少了数据冲突,提高了信道的利用率,并且其吞吐量可以增加到纯Aloha的一倍。
原文链接:https://blog.csdn.net/weixin_44196785/article/details/117257740
0.3 CSMA协议
CSMA协议是一种概率MAC协议,其中节点在共享信道(如电气总线)上传输之前验证信道是否空闲。在发送之前,发送器尝试检测通道中是否有来自另一个站的信号。如果检测到信号,则发射器等待持续传输完成,然后再开始传输。这是协议的“载波感知”部分。“多址”定义多个站点在信道上发送和接收信号,并且由单个节点发送的信号通常由使用该信道的所有其他站点接收。载波感知多址碰撞检测(CSMA/CD)和载波感知多址避碰(CSMA/CA)是CSMA协议的两种改进。CSMA/CD通过在检测到碰撞时立即停止传输,从而提高CSMA的性能,CSMA/CA通过在信道被检测到繁忙时将传输延迟一个随机间隔来改善CSMA的性能。
1、ALOHA
分为纯ALOHA协议和时隙ALOHA两种,无监听,直接发,检测到碰撞后等待一段随机时间后再重传。
1.1 纯ALOHA
工作原理:站点只要产生帧,就立即发送到信道上;规定时间内若收到应答,表示发送成功,否则重发。
重发策略:等待一段随机的时间,然后重发;如再次冲突,则再等待一段随机的时间,直到重发成功为止
优点:简单易行
缺点:极容易冲突
竞争系统:多个用户以某种可能导致冲突的方式共享公用信道的系统
1.2 时隙ALOHA(S-ALOHA)
基本思想:把信道时间分成离散的时间槽,槽长为一个帧所需的发送时间。每个站点只能在时槽开始时才允许发送。其他过程与纯ALOHA协议相同。
可以避免冲撞到发送了一半的帧,但依然有可能多个帧同时在在一个时间槽开始时进行发送,然后再在信道中产生碰撞。比纯ALOHA的信道利用率提升一倍。
2、CSMA
载波监听多路访问CSMA的技术,也称做先听后说LBT(Listen Before Talk)。要传输数据的站点首先对媒体上有无载波进行监听,以确定是否有别的站点在传输数据。假如媒体空闲,该站点便可传输数据;否则,该站点将避让一段时间后再做尝试。这就需要有一种退避算法来决定避让的时间,常用的退避算法有非坚持、1-坚持、P-坚持三种。
2.1 非坚持算法
算法规则为:
⑴假如媒本是空闲的,则可以立即发送。
⑵假如媒体是忙的,则等待一个随机时间后,再次监听进行发送。采用随机的重发延迟时间可以减少冲突发生的可能性。
优点:减少冲突
缺点是:即使有几个站点都有数据要发送,但有可能大家可能等待时延都比较长,致使媒体仍可能处于空闲状态,使用率降低。
2.2 1-坚持算法
算法规则:
⑴假如媒体空闲的,则可以立即发送。
⑵假如媒体是忙的,则继续监听,直至检测到媒体是空闲,立即发送。
优点是:只要媒体空闲,站点就立即可发送,避免了白白浪费空闲时间,减少媒体空闲时间;
其缺点是:假若有两个或两个以上的站点有数据要发送,那么检测到媒体是空闲时候这些站点会同时发送数据,一定会产生冲突。
2.3 P-坚持算法
算法规则:
⑴监听总线,假如媒体是空闲的,则以P的直接发送,而以(1-P)的概率延迟一个时间单位再次监听进行发送。一个时间单位通常等于最大传播时延的2倍。
P-坚持算法是一种既能像非坚持算法那样减少冲突,又能像1-坚持算法那样减少媒体空闲时间的折中方案,P取1时就是1-坚持,P取0时就是非坚持。系统忙的时候可以选择P小一些,闲的时候选择P大一些。
CSMA的三种算法是监听时的退避算法,与碰撞时的不同,发生碰撞时都是等待一段随机时间再重传(个人理解)。
3、载波监听多路访问/冲突检测(CSMA/CD)
由于CSMA在产生碰撞后会依然传送被破坏掉的帧,这样会白白浪费信道容量,一种改进方法是增加碰撞检测。
CSMA/CD比CSMA增加了碰撞检测,在传输时间继续监听媒体,一旦检测到冲突,就立即停止发送,并向总线上发一串短的阻塞报文(Jam),通知总线上各站冲突己发生,停止发送数据,可以提高总线的利用率,这就称作载波监听多路访问/冲突检测协议,简写为CSMA/CD。
CSMA/CD的代价是用于检测冲突所花费的时间。对于基带总线而言,最坏情况下用于检测一个冲突的时间等于任意两个站之间传播时延的两倍(即快要发送到终点时发生碰撞再折回,花了两倍时间)。
3.1 二进制指数回退算法
二进制指数回退算法是CSMA/CD检测到碰撞后需要重传时的回退算法,独有的,与前面不一样:
是从离散的整数集合[0,1,2,……,(2k-1)]中随机的取出一个数r,等待的时延为r倍的基本退避时间,k为碰撞的次数,最大取10,基本退避时间为2倍的传播时延(即争用期)。
当冲突次数超过16次后,发送失败,认为网络过于拥挤,无法发送,丢弃传输的帧,发送错误报告。
3.2 最小帧长
如果帧长过小,信道上就可能存在多个数据帧,当发生冲撞时收到返回时不知道究竟是哪个发生了冲撞,所以规定了最小帧长。
最小帧长等于:2倍的传播时延*传播速率
这样可以在发现碰撞时保证信道上只发出了一条数据。为什么取2倍的传播时延2t,是因为如果发生碰撞,碰撞反馈信息会最晚在2t时间内返回。收到反馈消息后最多只需要判断2t时间内发出的是哪一条帧进行重发就可以了。
换个说法:现在正在发送一条帧,还没从发送端发完时收到了一条碰撞反馈,此时从前找2t个时间内只可能存在一个数据帧,就知道是哪个帧出现了问题。假如帧长过短的话,2t时间内可能存在好多帧,就不知道是哪个出现问题了。
10MB/S以太网以51.2us为争用期,一秒可发送512bit数据,即64Byte,所以一般选择64B作为最小帧长。
4、CSMA/CA 协议
CSMA/CD适用于小规模有线以太网,在大规模无线局域网中由于碰撞过多并不适用,由此可以采用避免碰撞的CA协议。
CSMA/CA(Carrier Sense Multiple Access with Collision Avoid,即带有冲突避免的载波侦听多路访问)是一种数据传输是避免各站点之间数据传输冲突的算法,其特点是发送包的同时不能检测到信道上有无冲突,只能尽量“避免”。
利用此协议时,先向信道发送一个RTS帧,承载地址、大概传输时间等信息,接收方会相应一个CTS帧,与发送方预约信道,此时信道就只允许这两方之间进行数据传输,避免了冲突。接收方收到数据后进行CRC循环冗余检验,没有问题返回ACK确认帧,有问题重传。
CA协议无法完全避免冲突,只是预约好信道后不会产生冲突。因为发送RST帧时也有可能与其他的RST帧产生冲突,不过控制消息要比数据短的多,冲突后等待随机重发,二次冲突的概率也小很多。
5、CSMA/CA机制
CSMA/CA机制带冲突检测的载波监听多路访问,冲突避免机制.
网络拓扑
若node1和node2同时给GW发送数据,那么在GW处会产生冲突,从而两者都无法正确接收,最终传输失败.
DIFS与SIFS: 帧间间隙. 分布式帧间间隙, 短帧间间隙. 发一帧之前都需要等待一个相应的帧间间隙.比如发送数据至少等待DIFS,发送ACK需要等待SIFS
Slot time:时隙,一个时间片段.节点竞争接入信道前需要经过相应的随机回退backoff过程,backoff过程由多个时隙组成
Contention window:竞争窗口用来让节点选择随机回退计数值backoff counter范围
Backoff:每个节点在竞争接入信道时,首先在竞争窗口中选择一个随机数为急诊的随机回退计数值,同时每个时隙,节点监听信道是否空闲,或空闲那么进行一次倒数,计数值减一,或信道忙,则不进行相应倒数,当随机回退计数值到0时,节点可以发送数据.
时序图
- 当node1与node2相继存在数据,需要在竞争信道进行发送时,其首先需要"等待"DIFS时间,或DIFS时间内,信道保持空闲状态,那么久可以进行backoff过程
- 若node1与node2进入backoff过程时,其首先需要从竞争窗口选择一个随机数,默认初始竞争窗口为31,即随机回退计数值的范围[0,31],在上图node1选择了8,而node2选择了2.
- 在backoff过程中,每经过一个slot time, 节点会监听一次信道,若信道空闲,则相应的回退计数器的值减1,经过3个slot time后,STA 1的随机倒数计数器从8减到了5,而STA 2从2减到了0.
- 当节点计数器倒数到0时,节点竞争获取信道,从而可以发送数据.node2获取系信道发送PACKET A到GW.在GW收到数据后,会采用CRC机制对数据进行校验,若校验通过,GW会在SIFS后反馈ACK确认帧
- 当node2发送完数据后,等待了SIFS时间后,GW会向node2发送ACK确认帧,当node2接收到ACK后,数据传输完成.
- 当这次传输完成后,node2需要再等待DIFS时间后,重新进入backoff过程.node2需要选择新的随机数计数器,如图,node1此时计数器继续递减,从而有公平机会发送数据.
BEB机制
截断二进制回退算法, 在CSMA/CA的机制中,还是存在发生冲突的可能,为了避免再次冲突,引入了BEB机制.
如果node1和node2不小心选择了同样的随机数计数器,同时递减到0,那么还是会有冲突.节点需要对竞争窗口(CW)采用BEB机制.
在竞争初期,CW大小是[0,31].如果节点数量增多情况下我们需要扩大竞争窗口,即发生一次冲突CW从[0,31]变为[0,63].一共允许回退6次,第七次不倍增窗口,再次尝试重启,如果再次失败就丢包.
6、其他
随机控制访问协议优点是负载轻的时候效率高,负载重的时候冲突开销大,其他协议还有:
同为动态分配信道协议的轮询访问协议,优点是动态划分,没有冲突,缺点是有轮询开销或令牌开销、等待延迟、单点故障。
还有基于多路复用技术的静态信道划分协议,有FDM,TDM,WDM,CDM,优点是没有冲突,负载时都得到利用效率高,缺点是负载低时无法利用全部带宽效率低。
贴个总结图,来源见水印:
————————————————
原文链接:
https://www.tl80.cn/article/17323
https://blog.csdn.net/qq_41547603/article/details/105476967
https://www.cnblogs.com/nicephil/p/10802872.html