隐藏终端和暴露终端

序言


隐藏终端和暴露终端都是由于CSMA/CA中所采用的LBT机制所引起。隐藏终端是由于监听到的信道空闲而不是真的空闲,故引发冲突。而暴露终端是由于监听到的信道忙而不是真的忙,故其可以传输而不传输。

隐藏终端问题

图示
隐藏终端问题可以简单定义为:节点之间无法互相监听对方。但当其不可以同时传输时,其同时传输,从而导致冲突发生。隐藏终端在单个AP(或者单个Receiver)时就有可能发生。

我们基于以上拓扑讨论基本的隐藏终端问题,在该拓扑中,STA 1与STA 2为两个节点,这两个节点都是关联在AP身上。图中蓝色虚线代表STA 1的发送范围,绿色虚线代表STA 2的发送范围。

由于图中STA 1与STA 2发送范围无法互相覆盖,即无法通过物理载波监听的方法,探测对方是否有发送数据。从而STA 1与STA 2可能会误以为信道空闲,从而同时发送,继而造成冲突。
这里写图片描述
如上图所述,根据DCF中CSMA/CA的工作机制,STA 1与STA 2在等待DIFS之后,分别选取一个随机数进行Backoff。STA 2由于随机数选择较少,从而首先倒数至0,并发送数据。当STA 2发送数据后,由于STA 1监听不到STA 2已经占用信道,其依旧误以为信道是空闲的,从而继续进行backoff。当STA 1的随机回退计数值倒数至0时,STA 1也会发送数据。

由于STA 1与STA 2的同时发送,即AP接收时存在重叠区域,即也是发生了冲突,最终这一轮传输失败。当这一轮传输失败之后,STA 1与STA 2采用BEB算法重新选择随机数进行回退,但后续过程中两者依旧无法互相监听,所以很容易再次出现同时传输的现象。在隐藏终端的情况下,网络是近似瘫痪的,换言之,STA 1与STA 2的吞吐量都趋近于0。

PS:除了RTS/CTS模式是在协议层面解决隐藏终端问题,实际情况下还有很多解决隐藏终端的问题,比如增加客户端功率,消除中间的障碍物,将造成隐藏终端问题的节点或者AP移动个位置之类的,实在不行的话,那么控制下原始AP的功率,再添加入一个新的接入点也行,不过最后个方法需要小心一些,因为搞不好会引起下面所述的暴露终端问题。

暴露终端问题

暴露终端问题可以简单定义为:节点之间能够互相监听对方。但其可以同时传输时,其不传输,从而造成浪费。暴露终端在多个AP(或者多个Receiver)时才有可能发生。
这里写图片描述
暴露终端问题可以简单定义为:节点之间能够互相监听对方。但其可以同时传输时,其不传输,从而造成浪费。暴露终端在多个AP(或者多个Receiver)时才有可能发生。
我们基于以上拓扑讨论基本的隐藏终端问题,在该拓扑中,STA 1与STA 2为两个节点,其中STA 1关联在AP1上,STA 2关联在AP2上。图中蓝色虚线代表STA 1的发送范围,绿色虚线代表STA 2的发送范围。

图中AP1处于STA 1的覆盖范围内,而不再STA 2的覆盖范围内。AP2处于STA 2的覆盖范围,而不在STA 1的覆盖范围内。换言之,AP1只能接受到STA 1的数据,AP2也只能接收到STA 2的数据。当STA 1与STA 2同时发送时,接受节点AP1或者AP2处均不会发生冲突,故其是可以同时传输的。但是由于这样的拓扑特殊性以及DCF中CSMA/CA的工作机制,造成STA 1与STA 2无法同时传输,该问题则是暴露终端问题。

在CSMA/CA中,接入是遵守LBT(Listen Before Talk)机制的。我们在DCF的介绍中所述,每一个节点在接入信道之前需要进行backoff。在该过程内,若信道空闲,则每经过1个slot,随机倒数计数器进行一次倒数。若信道非空闲,则节点不会对随机倒数计数器进行倒数,并对其进行悬挂。只有当其倒数至0时,才可以发起传输。其中信道空闲与否是通过载波监听机制进行判断的,而在DCF中,存在物理载波监听和虚拟载波监听两种模式,这两种监听方式都有可能引起暴露终端问题,以下我们分两种情况进行讨论。

物理载波监听引起的暴露终端

这里写图片描述
如上图所示,由于STA 1与STA 2可以互相监听。由于STA 2选择了较小的随机数进行倒数,从而其最先倒数至0,并进行发送。当STA 2首先发送数据包给STA 2后,STA 1监听信道为忙状态,从而无法发送信息。故根据拓扑而言,STA 1是可以传数据给AP1的,但是由于监听STA 2正在传输,导致信道忙,故STA1悬挂随机倒数计数器,无法继续倒数,从而无法传输。

这里实际上我们还可以更深入了解一下,实际上STA1为什么需要在别人传输的时候,悬挂自己的随机倒数计数器。在CSMA/CD中,实际上是没有悬挂过程的,只有在CSMA/CA中才存在。在CSMA/CD中,若信道忙,节点就不停的去监听信道,一旦发现空闲就传输。而在CSMA/CA中,节点在中间实际上不是监听信道,而是接收数据。其主要原因在于,STA 1在检测到STA 2正在传输造成信道忙时,其立刻开始接收该STA 2的数据,因为STA 1不知道该数据是否是发给自己的。只有当完整接收数据,CRC校验通过后,STA 1才可以检查帧MAC头部所对应的目的BSSID地址,看是否是自己的数据包,若不是才可以丢包。换言之,CSMA/CA中,悬挂实际上是为了接收,从而导致的现象是悬挂而已。

虚拟载波监听引起的暴露终端

这里写图片描述
如上图所示,在暴露终端场景中,若STA 2不仅选择了较小的随机数进行优先倒数,并且其发送的数据包是RTS数据包。当STA 1识别到该RTS数据包后,其就会被设置为NAV状态,无法在后面的过程主动竞争信道,进而无法传输。与之前描述用RTS/CTS解决隐藏终端问题时不同,在解决隐藏终端问题中,NAV是由AP所反馈的CTS帧所进行保护。而这里由于STA 1与STA 2能够互相监听,换言之,在暴露终端情况下,STA 1的NAV是被STA 2所发送的RTS帧进行保护的。在STA 1被NAV保护后,其也无法传输,最终导致暴露终端问题。

  • 12
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值