图解通信原理与案例分析-35:以太网MAC层的通信原理--MAC帧格式与调度策略:载波侦听与冲突检测CSMA/CD、载波侦听与冲突避免(信道空闲保证)CSMA/CA、流控

以太网协议已经是非常成熟的通信技术,本文旨在在汇总以太网MAC层的协议,以便于与其他通信技术的MAC层作为比较,如4G LTE, 5G NR,特别是LTE在非授权频谱上的通信LAA LBT, 就是借鉴了无线以太网MAC层的协议规范。


目录

第1章 以太网概述

1.1 以太网概述

1.2 以太网协议族

1.3 以太网协议栈

第2章 以太网帧结构

第3章 MAC与PHY层的接口

3.1  MII接口

3.2 RMII接口(Reduced MII)

3.3 SMII接口

3.4 GMII接口(Gbits MII):

3.5 RGMII接口(Reduced GMII):

3.6 SGMII接口:

第4章 有线以太网的调度策略:载波侦听多路访问/冲突检测CSMA/CD

4.1 载波侦听与延时监听算法

4.2  尽最大可能投递

4.3 冲突检测与冲突处理算法

第5章 无线以太网MAC层调度策略:载波侦听多路访问/冲突避免: CSMA/CA

5.1 载波侦听与信道空闲保证

5.2 延时发送

5.4 信道探测

5.4 接收应答

第6章 CSMA/CD与CSMA/CA区别

6.1 适用的场景不同

6.2 应对冲突风险的策略不同

第7章 载波侦听CSMA的类型

7.1 坚持型CSMA

7.2 非坚持型CSMA

7.3 P坚持型CSMA

第8章 常见的退避类型

8.1 根据延时窗口的大小划分

8.2 根据延时时间与冲突次数的关系划分


第1章 以太网概述

1.1 以太网概述

以太网工作原理

以太网是现实世界中最普遍的一种计算机网络。

(1)根据网络的架构,以太网分为

  • 第一类是总线型以太网

总线型以太网是以太网的原始形式,运行速度从3~10 Mbps不等;

以太网

  • 第二类是交换式以太网,

以太网结构

使用了一种称为交换机的设备连接不同的计算机。交换式以太网正是广泛应用的以太网,可运行在100、1000和10000Mbps那样的高速率,分别以快速以太网、千兆以太网和万兆以太网的形式呈现。

(2)根据传输介质形态,以太网分为:

  • 有线以太网

路由器和交换机与连接的电缆订购ip traffic **注意:浅景深

  • 无线以太网

1.2 以太网协议族

1.3 以太网协议栈

物理层:主要解决如何通过电路信号、无拆差错的传输二进制比特流,通常有物理层层芯片PHY实现的。

详见:《图解通信原理与案例分析-8:以太网通信案例及其物理层工作原理深入剖析--物理层编码》

https://blog.csdn.net/HiWangWenBing/article/details/108109404

MAC层:负责MAC层帧的调度,包括载波侦听、冲突检测,即以公平的方式,按照统一的规则,何时发送物理层的帧。通常MAC层芯片实现的。以太网帧是以Package为调度单元。

LLC层:主要负责在网络负载比较重的情况下的流控。

第2章 以太网帧结构

以太帧结构(格式)

上图中每个字段的含义如下表所示:

字段 含义
前同步码 用来使接收端的适配器在接收 MAC 帧时能够迅速调整时钟频率,使它和发送端的频率相同。前同步码(时钟同步)为 7 个字节,1 和 0 交替。
帧开始定界符 帧的起始符,为 1 个字节。前 6 位 1 和 0 交替,最后的两个连续的 1 表示告诉接收端适配器:“帧信息要来了,准备接收”。
目的地址 接收帧的网络适配器的物理地址(MAC 地址),为 6 个字节(48 比特)。作用是当网卡接收到一个数据帧时,首先会检查该帧的目的地址,是否与当前适配器的物理地址相同,如果相同,就会进一步处理;如果不同,则直接丢弃。
源地址 发送帧的网络适配器的物理地址(MAC 地址),为 6 个字节(48 比特)。
类型 上层协议的类型。由于上层协议众多,所以在处理数据的时候必须设置该字段,标识数据交付哪个协议处理。例如,字段为 0x0800 时,表示将数据交付给 IP 协议。
数据 也称为效载荷,表示交付给上层的数据。以太网帧数据长度最小为 46 字节,最大为 1500 字节。如果不足 46 字节时,会填充到最小长度。最大值也叫最大传输单元(MTU)。

在 Linux 中,使用 ifconfig 命令可以查看该值,通常为 1500。
帧检验序列 FCS 检测该帧是否出现差错,占 4 个字节(32 比特)。发送方计算帧的循环冗余码校验(CRC)值,把这个值写到帧里。接收方计算机重新计算 CRC,与 FCS 字段的值进行比较。如果两个值不相同,则表示传输过程中发生了数据丢失或改变。这时,就需要重新传输这一帧。

第3章 MAC与PHY层的接口

MII是英文Medium Independent Interface的缩写,翻译成中文是“介质独立接口”,该接口一般应用于以太网硬件平台的MAC层和PHY层之间。

MII接口的类型有很多,常用的有MII、RMII、SMII、SSMII、SSSMII、GMII、RGMII、SGMII、TBI、RTBI、XGMII、XAUI、XLAUI等。下面对它们进行一一介绍。

MAC与PHY之间的接口信号,可以清晰的看到MAC与PHY的职责分工。

比如载波侦听和冲突检测的执行是PHY层芯片,载波侦听和冲突检测的结果却是MAC层。

3.1  MII接口

MII接口一共有16根线。

(1)接收

RXD(Receive Data)[3:0]:数据接收信号,共4根信号线;

RX_DV(Reveive Data Valid): 接收数据有效信号,作用类型于发送通道的TX_EN;

RX_CLK:接收数据参考时钟,100Mbps速率下,时钟频率为25MHz,10Mbps速率下,时钟频率为2.5MHz。RX_CLK也是由PHY侧提供的。

RX_ER(Receive Error): 接收数据错误提示信号,同步于RX_CLK,高电平有效,表示RX_ER有效期内传输的数据无效。对于10Mbps速率下,RX_ER不起作用;

(2)发送

TXD(Receive Data)[3:0]:数据发送信号,共4根信号线;

TX_EN(Transmit Enable): 发送使能信号,只有在TX_EN有效期内传的数据才有效;

TX_CLK:发送参考时钟,100Mbps速率下,时钟频率为25MHz,10Mbps速率下,时钟频率为2.5MHz。注意,TX_CLK时钟的方向是从PHY侧指向MAC侧的,因此此时钟是由PHY提供的。

TX_ER(Transmit Error): 发送数据错误提示信号,同步于TX_CLK,高电平有效,表示TX_ER有效期内传输的数据无效。对于10Mbps速率下,TX_ER不起作用;

(3)载波侦听与冲突检测

CRS:Carrier Sense,载波侦测信号,不需要同步于参考时钟,只要有数据传输,CRS就有效,另外,CRS只有PHY在半双工模式下有效;

COL:Collision Detectd,冲突检测信号,不需要同步于参考时钟,只有PHY在半双工模式下有效。

这表明:载波侦听和冲突检测,都是PHY芯片完成的,并通过这两个信号通知MAC层。

3.2 RMII接口(Reduced MII)

RMII即Reduced MII,是MII的简化板,连线数量由MII的16根减少为8根。

(1)接收

RXD[1:0]:数据接收信号线,数据位宽为2,是MII接口的一半;

RX_ER(Receive Error):数据接收错误提示信号,与MII接口中的该信号线功能一样;
 

(2)发送

TXD[1:0]:数据发送信号线,数据位宽为2,是MII接口的一半;

TX_EN(Transmit Enable):数据发送使能信号,与MII接口中的该信号线功能一样;

(3)载波侦听和冲突检测

  • CLK_REF:是由外部时钟源提供的50MHz参考时钟,与MII接口不同,MII接口中的接收时钟和发送时钟是分开的,而且都是由PHY芯片提供给MAC芯片的。

这里需要注意的是,由于数据接收时钟是由外部晶振提供而不是由载波信号提取的,所以在PHY层芯片内的数据接收部分需要设计一个FIFO,用来协调两个不同的时钟,在发送接收的数据时提供缓冲。

PHY层芯片的发送部分则不需要FIFO,它直接将接收到的数据发送到MAC就可以了。

  • CRS_DV:此信号是由MII接口中的RX_DVCRS两个信号合并而成。

当介质不空闲时,CRS_DV和RE_CLK相异步的方式给出。

当CRS比RX_DV早结束时(即载波消失而队列中还有数据要传输时),就会出现CRS_DV在半位元组的边界以25MHz/2.5MHz的频率在0、1之间的来回切换。因此,MAC能够从 CRS_DV中精确的恢复出RX_DV和CRS。

在100Mbps速率时,TX/RX每个时钟周期采样一个数据;

在10Mbps速率时,TX/RX每隔10个周期采样一个数据,因而TX/RX数据需要在数据线上保留10个周期,相当于一个数据发送10次。

PHY层芯片收到有效的载波信号后,CRS_DV信号变为有效,此时如果FIFO中还没有数据,则它会发送出全0的数据给MAC,然后当FIFO中填入有效的数据帧,数据帧的开头是“101010—”交叉的前导码,当数据中出现“01”的比特时,代表正式数据传输开始,MAC芯片检测到这一变化,从而开始接收数据。

当外部载波信号消失后,CRS_DV会变为无效,但如果FIFO中还有数据要发送时,CRS_DV在下一周期又会变为有效,然后再无效再有效,直到FIFO中数据发送完为止。

在接收过程中如果出现无效的载波信号或者无效的数据编码,则RX_ER会变为有效,表示物理层芯片接收出错。

3.3 SMII接口

SMII即Serial MII,串行MII的意思,跟RMII相比,连线进一步减少到4根;

(1)接收

RXD:接收数据信号,位宽为1;

(2)发送

TXD:发送数据信号,位宽为1;

CLK_REF:所有端口共用的一个参考时钟,频率为125MHz,为什么100Mbps速率要用125MHz时钟?因为在每8位数据中会插入2位控制信号,

(3)载波侦听与冲突检测

SYNC:收发数据同步信号,每10个时钟周期置1次高电平,指示同步。

TXD/RXD以10比特为一组,以SYNC为高电平来指示一组数据的开始(表示检测到载波信号),在SYNC变高后的10个时钟周期内,

TXD上依次输出的数据是:TXD[7:0]、TX_EN、TX_ER,控制信号的含义与MII接口中的相同;

RXD上依次输出的数据是:RXD[7:0]、RX_DV、CRS(载波侦听信息)控制信号的含义与MII接口中的相同;

RXD[7:0]的含义与RX_DV有关,

当RX_DV为有效时(高电平),RXD[7:0]上传输的是物理层接收的数据信息。

当RX_DV为无效时(低电平),RXD[7:0]上传输的是物理层的状态信息。


检测到载波,说明有接收数据,因此载波侦听与接收数据合二为一。

冲突检测逐渐取消了,主要原因是:现代的有线以太网,以及有Hub的共享总线的网络转化成以Switch为中心的点对点网络,不存在冲突。

冲突检测还存在在WIFI无线网络中。

3.4 GMII接口(Gbits MII):

与MII接口相比,GMII的数据宽度由4位变为8位。

GMII接口中的控制信号如TX_ER、TX_EN、RX_ER、RX_DV、CRS和COL的作用同MII接口中的一样。

发送参考时钟GTX_CLK和接收参考时钟RX_CLK的频率均为125MHz(1000Mbps/8=125MHz)。

在这里有一点需要特别说明下,那就是发送参考时钟GTX_CLK,它和MII接口中的TX_CLK是不同的:

MII接口中的TX_CLK是由PHY芯片提供给MAC芯片的,而GMII接口中的GTX_CLK是由MAC芯片提供给PHY芯片的。两者方向不一样。

在实际应用中,绝大多数GMII接口都是兼容MII接口的,所以,一般的GMII接口都有两个发送参考时钟:TX_CLK和GTX_CLK(两者的方向是不一样的,前面已经说过了),在用作MII模式时,使用TX_CLK和8根数据线中的4根。

3.5 RGMII接口(Reduced GMII):

RGMII即Reduced GMII,是RGMII的简化版本,将接口信号线数量从24根减少到14根(COL/CRS端口状态指示信号,这里没有画出),时钟频率仍旧为125MHz,TX/RX数据宽度从8为变为4位,为了保持1000Mbps的传输速率不变,RGMII接口在时钟的上升沿和下降沿都采样数据。在参考时钟的上升沿发送GMII接口中的TXD[3:0]/RXD[3:0],在参考时钟的下降沿发送GMII接口中的TXD[7:4]/RXD[7:4]。RGMI同时也兼容100Mbps和10Mbps两种速率,此时参考时钟速率分别为25MHz和2.5MHz。

TX_EN信号线上传送TX_EN和TX_ER两种信息,在TX_CLK的上升沿发送TX_EN,下降沿发送TX_ER;同样的,RX_DV信号线上也传送RX_DV和RX_ER两种信息,在RX_CLK的上升沿发送RX_DV,下降沿发送RX_ER。

3.6 SGMII接口:

SGMII即Serial GMII,串行GMII,收发各一对差分信号线,时钟频率625MHz,在时钟信号的上升沿和下降沿均采样,参考时钟RX_CLK由PHY提供,是可选的,主要用于MAC侧没有时钟的情况,一般情况下,RX_CLK不使用。收发都可以从数据中恢复出时钟。

在TXD发送的串行数据中,每8比特数据会插入TX_EN/TX_ER 两比特控制信息,同样,在RXD接收数据中,每8比特数据会插入RX_DV/RX_ER 两比特控制信息,所以总的数据速率为1.25Gbps=625Mbps*2.

其实,大多数MAC芯片的SGMII接口都可以配置成SerDes接口(在物理上完全兼容,只需配置寄存器即可),直接外接光模块,而不需要PHY层芯片,此时时钟速率仍旧是625MHz,不过此时跟SGMII接口不同,SGMII接口速率被提高到1.25Gbps是因为插入了控制信息,而SerDes端口速率被提高是因为进行了8B/10B变换,本来8B/10B变换是PHY芯片的工作,在SerDes接口中,因为外面不接PHY芯片,此时8B/10B变换在MAC芯片中完成了。8B/10B变换的主要作用是扰码,让信号中不出现过长的连“0”和连“1”情况,影响时钟信息的提取。

第4章 有线以太网的调度策略:载波侦听多路访问/冲突检测CSMA/CD

英文Carrier Sense Multiple Access with Collision Detection,意思是载波侦听多路访问/冲突检测。

采用该协议要求设备在发送帧的同时要对信道进行侦听,以确定是否会发生信道冲突,若在发送数据过程中检测到冲突,则需要进行冲突处理

基本思想是:

先听后说,边听边说;

一旦冲突,立即停说;

等待时机,然后再说;

注:“听”,即监听、检测之意;“说”,即发送数据之意

整个协议的处理规程如下3步:

(1)载波侦听

(2)尽最大可能投递

(3)冲突检测

4.1 载波侦听与延时监听算法

这种控制方式对任何工作站都没有预约发送时间,工作站的发送是随机的,必须在网络上争用传输介质,故称之为竞争技术。

若同一时刻有多个工作站向传输线路发送信息,则这些信息会在传输线上互相混淆而遭破坏,称为“冲突”。

为尽量避免由于竟争引起的冲突,每个工作站在发送信息之前,都要监听传输线上是否有信息在发送,这就是“载波监听”。

好在现代有线以太网已经摆脱了共享总线的Hub,采用了交换式的网络连接,冲突的可能性得到了根本性的规避。因此冲突检测的意义不是很大了,但在无线以太网领域,这个问题依然存在,并且被总线型的以太网更加严重。

载波侦听主要应用于以太网通讯中,是指网络中的计算机在发送数据之前,会“侦听”线缆,判断是否已经有其他数据传输。

载波侦听是由PHY芯片完成的,但由于以太网数据发送是由MAC层调度的 ,因此载波侦听的结果是MAC层关心

如果信道空闲,直接发送数据,

如果信道忙,则按照一定的退避算法进行延时监听,而不是一直不间断的监听,原因如下:

(1)如果采用时时刻刻监听策略,导致所有终端极大的可能会在同一个时刻检测到网络空闲,同时发送数据,冲突的可能性就会非常大。

(2)随机的延时监听,把终端检测到网络空闲的时机点进行分散,避免同一时刻检测到网络空闲。

(3)随机延时监听,也降低了终端的能耗。

4.2  尽最大可能投递

以太网采用的最基本的调度策略是:尽最大可能投递。即只要有数据,一旦检测到网络空闲,MAC层就调度数据发送。

4.3 冲突检测与冲突处理算法

(1)冲突产生的基本原理:

  •  t--端到端传播时延,2t--往返时延
  • 由于信号在信道上以有限速度传输,所以采用载波监听并不能完全消除冲突,即终端检测到网络空闲,并不代表网络真的空闲!
  • 假设两个站A和B。这两个站相距1km,传播速度=2/3*C=200m/us,因此1km电缆需要 t=5us 的传播时延
  • A向B发出的信息,在5us后才能传送到B。B若在A发送的信息到达B之前发送自己的帧(因为这时载波监听检测不到A所发送的信息),B也立即发送信息的话,则发生冲突
  •  冲突的结果是两个帧都变得无用。A可以检测到自己发送的帧已经和其他站发送的帧产生了冲突。

image:bk0637242-1.jpg

(2)如何检测到冲突?

  • 有线以太网采用曼彻斯特编码(每比特中间有跳变,先高后低代表“1”,反之为“0”)
  • 发送帧时也同时进行接收,
  • 再比较接收到的信号的电压(因为距离会造成信号衰减,因此使用不多)。
  • 电压的过零点是在每一比特的正中央。当发生冲突时,叠加的过零点将改变位置,不在每个比特的中央。

(3)检测到冲突后怎么办?

有线以太网网,并没有采用规避冲突的算法,而是采用的是强化冲突的策略,即发送帧的站一旦发现冲突,立即停止发送数据,还要再继续发送若干比特的人为干扰信号。

这是为什么Why? 

原因:假设冲突点离A很远,离B很近(例如40米,即B发送2bit后冲突,4bit后停发),4bit的叠加数据远距离传到A,可能冲突被A忽略,检测不到,A继续发送。

持续发送的目的,就是告诉网络中的所有终端:有任意一个终端监测到了冲突,刚才发送的数据遭到了破坏,没有检测到冲突的用户,请继续发送数据,以免加剧冲突。

强化冲突的违规码JAM帧的长度介于32-64比特之间,在有线网络线路长度确定的情况下,不会出现因为发送自己太多,网络中有部分终端检测不到的情形。

(4)冲突后的回退算法

既然冲突了,就不能再发送数据,必须采用随机、异步退避算法,避免再次冲突或冲突加剧,退避一段时间后,再检测网络是否空闲,再进行发送数据的尝试。

第5章 无线以太网MAC层调度策略:载波侦听多路访问/冲突避免: CSMA/CA

英文Carrier Sense Multiple Access with Collision Avoidance,意思是载波侦听多路访问/冲突避免。

在单纯的CSMA中,由于通道的传播延迟,当两个站点监听到总线上没有存在信号而发送帧时,仍会发生冲突。由于CSMA算法没有冲突检测功能,即使冲突己发生,仍然要将已破坏的帧发送完,使总线的利用率降低。

一种CSMA的改进方案是CSMA/CD, 使站点在传输时间继续监听媒体,一旦检测到冲突,就立即停止发送,并向总线上发一串短的阻塞报文(Jam),通知总线上各站冲突己发生,这样通道容量不致因白白传送己受损的帧而浪费,可以提高总线的利用率,这就称作载波监听多路访问/冲突检测协议,简写为CSMA/CD,这种协议己广泛应用于以太网和IEEE802.3标准中。

此时,浪费掉的带宽就减少为用检测冲突所花费的延时时间。也就是说,即使数据发送完成了,还需要继续一段时间的冲突检测。这段时间,发送方是不能连续发送数据的,这段时间就是因为冲突检测造成的网络资源浪费的时间。

那么,怎么来估算所需的冲突检测时间呢?

对于基带总线而言,此时用于检测一个冲突的时间等于任意两个站之间最大的传播延迟的两倍,所以对于基带CSMA/CD,要求分组长度应该至少两倍于传播延迟,否则在检测出冲突之前传输已经完成,但实际上分组被冲突所破坏。

基于如下的如下几个因素,无线以太网采用了与有线以太网不完全相同的策略:

(1)交换式以太网,冲突的可能性比较小,而无线以太网,冲突的可能性与总线型以太网一样,可能性非常大。

(2)冲突检测本身,需要延时一段不能发送数据的时间,牺牲网络资源,使得总线的资源无端的浪费,减低总线的利用率。

(3)冲突发生了的重传代价比预防冲突发送付出的代价要大很多,因此需要采用一定预防冲突的算法,来降低或规避冲突,提高总线(频谱)整体的利用率。

基于上述几个原因, 无线以太网采用的策略如下:

(1)主动避免冲突而非被动侦测冲突的方式来解决冲突问题,减低冲突造成的整体的网络资源的浪费,即载波侦听与冲突避免(信道空闲保证)CSMA/CA。

(2)对于随机退让也无法规避的冲突,在发送长队较长的有效用户数据前,采用超短的信道侦测帧进行探测。

(3)对于由于无线信道无法规避的丢包问题,无线以太网MAC层采用确认与重传的机制。

CSMA/CA是从一种叫ALOHA的控制协议演变而来的。

基本过程如下:

(1)载波侦听与信道空闲保证

(2)延时发送

(3)信道探测

(4)接收应答

5.1 载波侦听与信道空闲保证

载波侦听是指监控无线信道是否空闲。

采用做先听后说(LBT)策略,希望传输的站首先对信道进行监听以确定是否有别的站在传输。

如果信道有载波,不空闲,则该站将避让一段时间后再尝试。需要有一种退避算法来决定退让时间。

常用的有三种算法。1、非坚持CSMA;2、1-坚持CSMA;3、P-坚持CSMA。

5.2 延时发送

是监听到信道空闲时,并不是立即发送,而是等待一段时间再发送数据。

是先发送一个很小的信道侦测帧RTS,如果收到最近的接入点返回的CTS,就认为信道是空闲的,然后再发送数据。

5.4 信道探测

通过先发送一些特别小的信道侦测帧来测试信道是否有冲突,避免发送大数据时冲突后的重传的代价。

由于信道侦测帧的格式和长度(非常短的帧长度)都是固定的,因此即使冲突发生了,浪费的网络资源也是有限的,不需要重传遭到破坏的大数据。

这有点类似打仗,先通过一个小分队去探路,只有小分队探测到前面是完全的,大部队才会向前进发。即使前方有埋伏(冲突),牺牲的也只是小分队,而不是大部队。

当然,这里面也是需要牺牲一部分带宽的,就是信道侦测帧的传输时间。

5.4 接收应答

接收端如果正确收到此帧,则经过一段时间间隔后,向发送端发送确认帧ACK。

第6章 CSMA/CD与CSMA/CA区别

CSMA/CD:Carrier Sense Multiple Access with Collision Detection,意思是载波侦听多路访问/冲突检测。

CSMA/CA: Carrier Sense Multiple Access with Collision Avoidance,意思是载波侦听多路访问/冲突避免。

6.1 适用的场景不同

  • CSMA/CD主要适用有线以太网

有线以太网已经从总线型演变成了交换式网络架构,以太网交换机的存在,基本上已经规避了总线以太网天生的固有的冲突。

  • CSMA/CA主要适用无线以太网, LTE LAA(LBT)就借鉴了无线以太网的CSMA/CA机制。

无线以太网本质是一种总线型的网络架构,无线空口资源,就是这个共享的“总线”。

6.2 应对冲突风险的策略不同

(1)CSMA/CD主要着眼点在冲突的侦测与纠错:

当侦测到冲突时,进行相应的处理,要求设备能一边侦测一边发送数据,冲突检测本身也会浪费一段不能发送数据的时间,牺牲网络整体的资源。

(2)CSMA/CA主要着眼点在冲突的避免与预防:

  • 先降低冲突发生的概率

在冲突发生前,通过检测网络空闲与随机延时发送,避免与预防冲突的发生的概率。

  • 于随机延时后,依然存在的可能小概率冲突事件

通过先发送一些特别小的信道侦测帧来测试信道是否有冲突,避免发送大数据时冲突后的重传的代价。

由于信道侦测帧的格式和长度(非常短的帧长度)都是固定的,因此即使冲突发生了,浪费的网络资源也是有限的,不需要重传遭到破坏的大数据。

这有点类似打仗,先通过一个小分队去探路,只有小分队探测到前面是完全的,大部队才会向前进发。即使前方有埋伏(冲突),牺牲的也只是小分队,而不是大部队。

当然,这里面也是需要牺牲一部分带宽的,就是信道侦测帧的传输时间。

第7章 载波侦听CSMA的类型

7.1 坚持型CSMA

当某站要送数据时,先监听信道,若信道忙,就坚持监听,直到信道空闲为止,当空闲时立即发送一帧。

若两个站同时监听到信道空闲,立即发送,必定冲突,即冲突概率为1,故又称之为1-坚持型。

假如有冲突发生,则等待一段时间后再监听信道。

7.2 非坚持型CSMA

当某站监听到信道忙状态时,不再坚持监听,而是随机后延一段时间再来监听。

其缺点是很可能在再次监听之前信道已空闲了,从而产生浪费。

7.3 P坚持型CSMA

这种方式适合于时隙信道,比如无线信道。

当某站准备发送信息时,

它首先监听信道,若空闲,便以概率P传送信息,而以概率(1-P)推迟发送。

如果该站监听到信道为忙,就等到下一个时隙再重复上述过程。

P坚持型CSMA可以算是1-坚持型CSMA和非坚持型CSMA的折衷,这两者算是P-坚持算法的特例,即P分别等于1和0时的情形。

对于P坚持型CSMA,如何选择P值,需要考虑如何避免在重负载情况下系统处于不稳定状态。

假如当介质忙时,有N个站有数据等待发送,则当前的发送完成时,有N*P个站企图发送,如果选择P过大,使N*P>1,则冲突不可避免。

最坏的情况是,随着冲突概率的不断增大,吞吐率会降为0。所以必须选择P值使N*P<1。如果P值选得过于小,则通道利用率会大大降低。

第8章 常见的退避类型

不同退避算法的目的,是降低在一个公平竞争共享资源或信道的系统中冲突的概率,确保无线资源总体利用率的最大化。

算法的目的,确保所有的终端遵循相同的规则,而不是任意而为。

算法或规则本身并不一定是公平性竞争的算法,有可能强者恒强,弱者恒弱型的算法。

8.1 根据延时窗口的大小划分

(1)无时间窗口的固定延时

采用固定的时间延时,这种策略,意义不大,由于采用的固定延时,冲突的双方,相同的时间步调,无法规避再次冲突 。

(2)固定时间窗口随机延时

在一个固定的时间范围内,比如300ms内,生成一个随机数,随机延时。

(3) 可变时间窗口随机延时

时间窗口不再是固定值,随着冲突的增加,时间窗口的值会变大,并在新的时间窗口内生成新的随机数,随机延时。

8.2 根据延时时间与冲突次数的关系划分

(1) 二进制指数后退算法BEB

CSMA/CD采用二进制指数退避算法,又称为二元指数后退算法

退避算法是以冲突时间窗口大小为基准的,每个节点有一个在时间窗口内的冲突计数器C。

退避的时间与冲突次数具有指数关系,冲突次数越多,退避的时间就可能越长,若达到限定的冲突次数,该节点就停止发送数据

遇到重复的冲突时,站点将重复传输,但在每一次冲突之后,随着时延的平均值将加倍。

二进制指数退避算法提供了一个处理重负荷的方法。

尝试传输的重复失败导致更长的退避时间,这将有助于负荷的平滑。

算法优点

两个或多站点同时尝试传输,这将导致冲突,如果没有退避算法,则之后这些站点又立即尝试重传,导致一个新冲突。

算法缺点与不足

两个或多站点同时尝试传输,这将导致冲突,如果冲突后采用固定延时,延时之后,这些站点又尝试重传,还会导致一个新冲突。

(2)线性增值后退算法LIB

与指数回退类似,不同的是回退时间的长度与失败的次数之间呈现的是线性函数。

(3)平均固定延时

 

猜你喜欢

转载自blog.csdn.net/HiWangWenBing/article/details/113037488
今日推荐