目录
802.11 局域网的 MAC 层协议
1 CSMA/CA 协议
无线局域网不能使用 CSMA/CD
无线局域网可以使用 CSMA 协议
802.11 的 MAC 层
分布协调功能 DCF
点协调功能 PCF
CSMA/CA 协议的要点
2 时间间隔 DIFS 的重要性
SIFS
DIFS
3 争用信道的过程
时隙长度的确定
退避算法
争用窗口
退避算法的使用场景
4 对信道进行预约
信道预约
802.11 局域网的 MAC 层协议
必须解决共享信道上的碰撞问题
1 CSMA/CA 协议
无线局域网不能使用 CSMA/CD
·无线局域网不能简单地搬用 CSMA/CD 协议。因为:
1.碰撞检测(CD)要求:一个站点在发送本站数据的同时,还必须不间断地检测信道,但接收到的信号强度往往会远远小于发送信号的强度,在无线局域网的设备中要实现这种功能就花费过大。
2.即使能够实现碰撞检测的功能,并且在发送数据时检测到信道是空闲的时候,在接收端仍然有可能发生碰撞。
无线局域网的特殊问题:
·隐蔽站问题 (hidden station problem):由于无线信号覆盖范围和穿透能力有限,A 和 C 检测不到彼此的无线信号,都以为 B 是空闲的,因而都向 B 发送数据,结果发生碰撞。
必须考虑的特点:
1.无线局域网的适配器无法实现碰撞检测;
2.检测到信道空闲,其实信道可能并不空闲;
3.即使能够在硬件上实现无线局域网的碰撞检测功能,也无法检测出隐蔽站问题带来的碰撞。
无线局域网可以使用 CSMA 协议
·改进:
增加碰撞避免 CA (Collision Avoidance) :尽量减少碰撞发生的概率。
使用 CSMA/CA 的同时,使用停止等待协议:链路层确认,解决碰撞后重传。
802.11 的 MAC 层
·MAC 层通过协调功能来确定在基本服务集 BSS 中的移动站何时可以发送或接收数据。包括两个子层:DCF 和 PCF。
分布协调功能 DCF
·DCF 子层:不采用任何中心控制。每个节点使用 CSMA/CA 机制的分布式接入算法,让各个站通过争用信道来获取发送权。因此 DCF 向上提供争用服务。所有实现都必须有 DCF 功能。
点协调功能 PCF
·PCF 子层:可选。使用集中控制的接入算法,用类似于探询的方法把发送数据权轮流交给各个站,从而避免碰撞。自组网络没有 PCF 子层。 对时间敏感的业务,如分组话音,应使用提供无争用服务的 PCF。
CSMA/CA 协议的要点
2 时间间隔 DIFS 的重要性
·在完成发送后,必须再等待一段很短的时间(继续监听)才能发送下一帧。
·这段时间的通称是帧间间隔 IFS (InterFrame Space)。
·两种常用的帧间间隔:
·分布协调功能帧间间隔 DIFS。
·短 (Short) 帧间间隔 SIFS。
SIFS
·是最短的帧间间隔,用来分隔属于一次对话的各帧。
·一个站应当能够在这段时间内从发送方式切换到接收方式。
·使用 SIFS 的帧类型有:ACK 帧、CTS 帧、由过长的 MAC 帧分片后的数据帧,以及所有回答 AP 探测请求帧和在 PCF 方式中接入点 AP 发送出的任何帧。
DIFS
·比 SIFS 的帧间间隔要长得多。在 DCF 方式中,DIFS 用来发送数据帧和管理帧。
·802.11 标准规定:凡在空闲时间想发送数据的站点,必须等待时间 DIFS 后才能发送。保证了确认帧 ACK 得以优先发送。
·A 监听信道。若信道在时间间隔 DIFS 一直都是空闲的,A 就可以在 t0 时间发送数据帧 DATA。
·B 收到数据帧后,必须进行 CRC 检验。若检验无差错,再从接收状态转为发送状态。经过时间间隔 SIFS 后,向 A 发送确认帧 ACK。
·从 A 发送数据帧 DATA 开始,到收到确认 ACK 为止的这段时间 (DATA + SIFS + ACK) 内,必须不允许任何其他站发送数据,这样才不会发生碰撞。
避免发生碰撞的两种机制
3 争用信道的过程
·在站点 A 和 B 通信的过程中,站点 C 和 D 也要发送数据。但 C 和 D 检测到信道忙,因此必须推迟接入(defer access),以免发生碰撞。
·在等待信道进入空闲状态后,都经过规定的时间间隔 DIFS 再同时发送数据必然产生碰撞。因此,CSMA/CA 规定:所有推迟接入的站都必须在争用期执行统一的退避算法开始公平地争用信道。
·争用期也叫做争用窗口 CW (Contention Window)。争用窗口由许多时隙 (time slot) 组成。例如,争用窗口 CW = 15 即窗口大小是 15 个时隙。
时隙长度的确定
·方法:在下一个时隙开始时,每个站点都能检测出在前一个时隙开始时信道是否忙(这样就可采取适当对策)。
·时隙长短在不同 802.11 标准中可以有不同数值。
·例如:802.11g
·一个时隙时间为 9us;
·SIFS = 10 us;
·DIFS = SIFS + (2 * Slot time) = 28us。
退避算法
·站点在进入争用期时,应在 0 ~ CW 个时隙中随机生成一个退避时隙数,并设置退避计时器 (backoff timer)。
·当几个站同时争用信道时,计时器最先降为零的站首先接入媒体,发送数据帧。这时信道转为忙,而其他正在退避的站则冻结其计时器,保留计时器的数值不变,推迟到下次争用信道时接着倒计时。
·这样的规定对所有的站是公平的。
“推迟接入”和“退避 (backoff)”的区别
·推迟接入:
·发生在信道处于忙的状态,为的是等待争用期的到来,以便执行退避算法来争用信道。
·这时退避计时器处于冻结状态。
·退避:
·是争用期各站点执行的算法,退避计时器进行倒计时。
·这时信道是空闲的,并且总是出现在时间间隔 DIFS 的后面。
争用窗口
·建议值: 15 (最小) ≤ 争用窗口 CW ≤ 1023 (最大)。
·CSMA/CA规定:如果未收到确认帧,则必须重传。但每重传一次,争用窗口的数值就近似加倍。
·假定:选择初始争用窗口 CW = – 1= 15,第 i 次退避就在 +i – 1 个时隙中随机地选择一个,即:
第 1 次重传时,随机退避的时隙数应在 0 ~ 31 之间生成。
第 2 次重传时,随机退避的时隙数应在 0 ~ 63 之间生成。
第 3 次重传时,随机退避的时隙数应在 0 ~ 127 之间生成。
第 4 次重传时,随机退避的时隙数应在 0 ~ 255 之间生成。
第 5 次重传时,随机退避的时隙数应在 0 ~ 511 之间生成。
第 6 次以及 6 次以上重传时,随机退避的时隙数应在 0 ~ 1023 之间生成,争用窗口 CW 不再增大了。
退避算法的使用场景
1.要发送数据时检测到信道忙。
2.已发出的数据帧未收到确认,重传数据帧。
3.接着发送后续的数据帧(为了防止一个站长期垄断发送权)。
·当站点想发送数据,并检测信道连续空闲时间超过 DIFS 时,即可立即发送数据,而不必经过争用期。
4 对信道进行预约
·假设:B 站正好在 A 占用信道时要发送数据。B 检测到信道忙,于是推迟到争用信道时与 A 一起争用信道。但正巧 A 和 B 又生成了同样大小的随机退避时隙数。结果就发生了碰撞,A 和 B 都必须再重传。
·为进一步减少碰撞,还需要再采用一些措施:信道预约。
·隐蔽站问题:A 站或 B 站向接入点 AP 发送数据时, C 站接收不到这些信号。C 站向 AP 发送的信号也传播不到远处的 A 站或 B 站。
·以上措施使得 A 站和接入点 AP(以及 A 站和 B 站)的通信过程中,发生碰撞的概率大大降低,特别是减少了隐蔽站的干扰问题。
信道预约
·使用 RTS 帧和 CTS 帧会使整个网络的通信效率有所下降,多浪费信道的时间 [RTS + SIFS + CTS + SIFS]。
·但与数据帧相比,开销不算大。这两种控制帧都很短,其长度分别为 20 字节和 14 字节。而数据帧最长可达 2346 字节。
·若不使用这种控制帧,一旦发生碰撞而导致数据帧重发,浪费的时间就更多。
信道预约不能完全避免碰撞
·即使使用了 RTS 和 CTS 对信道进行预约,但碰撞也有可能发生。
·例如:有的站可能在时间 t1 或 t2 就发送了数据(这些站可能是没有收到 RTS 帧或 CTS 帧或 NAV),结果必定与 RTS 帧或 CTS 帧发生碰撞。
·A 站若收不到 CTS 帧,就不能发送数据帧,而必须重传 RTS 帧。
·A 站只有正确收到 CTS 帧后才能发送数据帧。
信道预约不是强制的
·信道预约不是强制性规定。各站可以自己决定使用或不使用信道预约。
·只有当数据帧的长度超过某一数值时,使用 RTS 帧和 CTS 帧才比较合适。
·因为无线信道的误码率比有线信道的高得多,所以,无线局域网的 MAC 帧长一般应当短些,以便在出错重传时减小开销。
欢迎一起学习~