媒体接入控制层提供了众多功能,其中寻址与信道接入控制使得同一网络上的多个站点之间相互通信成为可能。802.11MAC支持对无线媒体的共享接入,这是通过一种被称为带碰撞避免的载波侦听多址(CSMA/CA)的技术来实现的。
无线传输媒体进行传输时发射机不可能检测到碰撞,因此802.11信道接入协议试图避免碰撞,一旦信道变成“空闲”,站点开始等待一个随机时段,在此期间继续进行媒体侦听,如果直到等待时段结束时信道仍未“空闲”,则站点开始传输。
无线媒体与有线介质差异很大:
- 无线媒体上很容易产生传输错误
- 在无线媒体上,不是每一个站点都能“听到”其他所有站点(隐蔽节点问题)
- 距离和其他环境因素对信道所能支持的数据速率影响很大
- 站点通常是移动的,因此需要能让它们在改变位置时与不同的WLAN关联与去关联的管理机制
下图是一个分层模型,每一个实体(PHY和MAC)向它的直接上一层中的实体提供服务。用户数据通过服务数据单元(SDU)在层间传送。通过MAC SDU(MSDU),MAC层从逻辑链路控制(LLC)层接收数据以及向LLC发送数据。PHY层则通过PHY SDU(PSDU)从MAC层接收以及向MAC层发送数据。
通过扫描,也就是被动地寻找“信标”传输或者利用“试探请求”/“试探响应”交换来主动探测AP的存在,站点就能知道一个BSS的存在。
站点在BSS中的成员身份是动态的。在一个由多个基础BSS组成的ESS中,站点可以通过“重关联”在ESS中从一个BSS迁移到另一个BSS。
基础BSS中的AP定期广播“信标”帧,带有管制信息、能力信息以及用来管理BSS的信息。“信标”时段定义了目标信标传输时间(TBTT)的固定时间表,在媒体空闲的前提下,“信标”帧本身则在TBTT时刻或者尽量靠近TBTT的时刻发送。
扫描是值站点发现一个BSS以及与该BSS相关联的属性的过程,一般分为被动扫描与主动扫描。
被动扫描
被动扫描与所有监管字段兼容、只接收不发送。
进行被动扫描时,站点搜寻“信标”传输,并且可能在信道之间转换以找到这些传输,一旦站点通过AP的“信标”传输发现了AP并获得了AP的管制信息,其就可以通过"试探请求"/“试探响应”交换从AP探测到额外的信息。
主动扫描
如果站点所运行的管制字段允许,就可以使用主动扫描。
在主动扫描中,站点在其搜寻BSS的每一个信道上发送“试探请求”帧,具有以下寻址信息:
- SSID(服务标识符)
- BSSID(BSS标识符)
- DA(目的地址)
认证指的是两个希望通信的站点建立起互相可以接受的身份的流程。802.11支持两种链路级别的认证方法:开放系统认证与共享密钥认证。前者中任何站点都可以被接受成为一个BSS的成员。后者中,站点依靠有线等价加密(WEP)协议来表示其拥有一个共享的加密密钥。
站点必须先于AP关联,然后才被允许通过AP发送数据。关联在站点和AP间建立起一中映射关系,以允许DS(分布系统)内的消息可以抵达站点所关联的AP,并最终抵达站点本身。在任何给定时刻,一个站点只能与一个AP关联。
重关联由站点发起,对站点的移动性提供支持,从而使站点可以在同一个ESS中从与一个AP相关联转移到另一个。这个过程把点前AP与站点的映射关系通知给DS
去关联可以由站点或AP发起,以结束一个已有的关联。一般站点在离开网络时,要主动执行去关联操作,然而,由于在失去通信的情况下这样可能不可行,于是AP在站点联系不上的情况下,可以无需消息交换而通过一钟超时机制来实现站点的去关联。
802.11MAC中所使用的特定CSMA/CA机制被称为分布式协调功能(DCF),当一个站点打算发送时,它首先通过对媒体进行一个固定时长的帧听来进行一个信道可用评估(CCA),这个固定时长被称为DCF帧间距(DIFS)。如果媒体状态为空闲,则站点认为其可以拥有媒体并且开始一个帧交换。如果媒体状态繁忙,则站点等待介质变为空闲状态,后延DIFS时长,并进一步等待一个随机的回退时段,如果媒体在DIFS后延以及回退时段期间保持空闲状态,则站点认为其可以拥有媒体并且开始一个帧交换。
随机回退时段提供了碰撞防止功能,当网络负载量较大时,多个在媒体繁忙时积累了需要发送的分组的站点可能在等待媒体变为空闲。由于按概率分布各站点选择的回退间隔各不相同,不太可能发生由于多个站点在同一时刻发起传输而造成碰撞的情况。
一旦站点取得了对媒体的接入,其通过在帧序列间维护一个被称为短帧间隔(SIFS)的最小间隔来保持对媒体的控制。
CSMA/CA的基础在于载波侦听。DCF同时通过物理和虚拟的载波侦听功能来判断媒体状态。物理载波侦听功能位于PHY中,其通过能量检测与带帧长后延的前导码检测来判断媒体是否繁忙。虚拟载波侦听功能位于MAC中,使用在MAC头的“时长”字段中所承载的预定信息,该信息声明了对媒体的独占接入。虚拟载波侦听功能被称为网络分配向量(NAV)。只有在物理和虚拟侦听机制都给出同样结果的情况下,媒体才判断为空闲。
为了进一步降低碰撞概率,同时作为一种强健性更高的碰撞检测机制,发起通信的站点可以使用可靠调制的RTS和CTS帧来开始一个短控制帧交换序列。
SIFS
SIFS用来隔开一个要求响应的帧以及与之相应的响应帧,例如数据帧与ACK响应。
SISF也被用来在连续数据突发中隔开各帧。SISF的值一般为16μs。
时隙长度
其他IFS的定时为SIFS加上整数倍的时隙长度。值为9μs。
PIFS
PCF帧间距(PIFS)后延提供了仅次于SIFS的接入优先级,并被用以取得对媒体的优先接入。
PIFS = aSIFSTIme + aSlotTime
AP用PIFS后延来取得对媒体的接入以发送一个“信标”,开始一个无竞争周期,或者在当在一个无竞争周期内没有收到期望的响应帧时重新获得对介质的接入。
DIFS
DCF帧间距(DIFS)由在DCF下运行的站点用来传输数据帧与管理帧。
DIFS = aSIFSTime + 2 aSlotTime
如果判断在DIFS时长内媒体状态为空闲,或者其在正确收到一个帧后,判断在DIFS加上剩余的回退时长内媒体保持空闲的状态,那么站点可以进行传输
随机回退时长
当媒体从繁忙转为空闲时,可能会有多个站点准备好了发送数据。为了把碰撞减小到最少,想要发起传输的站点选择一个随机回退计数,然后把该数目的时隙长度后延。
随机回退计数从区间[0,CW]中选取一个伪随机整数,CW为竞争窗口,取值一般为2的幂次方减1。
随机回退过程
如下图,在多个站点进行后延时,选择最小的回退计数站点(STA3)进行数据传输。剩下的站点将其退后挂起,并且在媒体重新变为空闲后继续DIFS。选择次小的回退计数的站点(STA4)赢得竞争。之后选择最长回退计数的站点(STA2)获得媒体,由于STA1一开始就进行了数据传输,所以它很可能选择一个比STA2还大的回退计数。
无线媒体上的传输容易发生错误,ACK帧能够告诉发送站点是否收到了其发送的数据。但并不是所有的数据帧都可以用这种方式确认,比如广播与多播帧就无法用这种方式确认。
分片用来把大的MSDU分开,增加MSDU被正确接收的几率,减少重传造成的系统开销。
如果发送一个1500字节的MSDU会占用大量的空中传输时间,并且若在传输过程中出现了一个比特错误将导致整个帧被重传。
在发送分片时有一个定时器,如果在这个定时器时间内没有发送完所有的分片,那么剩下的分片都会被丢弃。同理接收端也维护一个定时器,在定时器时间结束后分片还没有接收完就会把所有的分片都丢弃。
由于使用了重传,一个已经被正确收到的帧可能被再次收到,比如当发送daunt由于未能正确解调一个ACK响应而重传了一帧。
数据帧中包含一个“重试”比特以及一个包含序列号与分片号的“序列控制”字段。任何重传帧的“重试”比特都被设置为1.
接收站点会记录与之通信的站点发送的最后一个MSDU或关联帧的序列号分片号。相当于维护一个格式为<发送地址,序列号,分片号>的缓存表。当站点接收到一个“重试”比特为1的MPDU时,与缓存表中条目相匹配,如果有相同的就舍弃这个重复帧。
基本数据/ACK帧交换具有固定的系统开销,包括开销竞争周期、与发送该帧本身相关的系统开销、接收端的射频转换时长(SIFS)以及ACK帧的传输时间。
系统开销基本是固定的,但发送数据帧的时间不固定。
分布式的信道接入机制强调的是公平性,如果所有的站点都使用同样的分组大小,不管各自的PHY数据速率如何,其吞吐率都将是一样的。
有些情况下,物理载波侦听有可能无法探测到所有站点的传输。如下如图所示,在STA1与AP间有数据传送,从STA1发出的传输可以被AP与STA2检测到,而一个远端节点STA3可以检测到从AP发出的传输,而检测不到STA1的,所以对于STA1,STA3就是一个隐藏节点。
NAV是一种克服隐藏节点问题的机制,提供一种虚拟载波监听机制来增强物理载波监听。每个MAC帧都承载有一个“时长”字段,用以更新其他所有站点的NAV。
所有帧都承载有“时长”字段,可以用其设置邻近站点的NAV,如果要最有效地设置邻近站点的NAV,应该使用被强健调制的控制帧,例如RTS/CTS交换,而非数据帧。因为RTS帧比数据帧所占的空中传输时间少,不像单独传输数据帧那样容易发生碰撞,即使发生碰撞造成的RTS帧丢失也能很快的被检测到。
要保护一个站点的传输不受隐藏节点影响,可以使用RTS/CTS交换序列。RTS帧的“时长”字段承载了一个NAV设定值,这个设定值包括CTS响应时间加上下一个帧交换所需要的时间。CTS响应中的“时长”字段则被设置为RTS中的“时长”字段减去SIFS以及CTS响应自身的时长。
另一个保护站点不受隐藏节点影响的机制是扩展帧间距(EIFS),当一个帧被检测到却没有被正确接收(MAC层判断帧检验序列FCS无效),站点可以使用EIFS而非DIFS来延时。
EIFS = aSIFSTime + ACKTxTime + DIFS
EDCA是802.11e修订中引进的对基本DCF的一个扩展,用以支持带优先级的服务质量(QoS)。EDCA定制了4种接入类型。
在EDCA下,外向通信被逻辑排序成4个队列,每个队列对应一个AC,在每个非空的队列上按AC的接入参数进行一个EDCA接入功能实例来竞争接入。
与DCF类似,当媒体变为空闲状态后首先后延一个固定时长,称为仲载帧间距(AIFS),然后后延一个随机回退时段。
TXOP指的是站点可以传输特定通信类别的有界时段。在EDCA下,站点通过信道接入过程获得TXOP,然后才可以继续传输数据帧、控制帧与管理帧以及接收响应帧。前提条件是这些帧序列的时长不超过为该AC所设置的TXOP上限。TXOP上限为零意味着在再次竞争信道接入前,只能传输一个MSDU或管理帧。
TXOP强调的是资源公平性,而非吞吐量公平性,因为所以需要发送相同类别通信的站点在接入网络时,平均而言,得到的传输时间相同。
对于一个特定AC的AIFS:
AIFS[AC] = aSIFSTime + AIFSN(AC) x aSlotTime
EDCA的接入参数由“信标”以及“试探响应”帧中的“EDCA参数集”信息元素给出。BSS上的站点使用最新接收到的参数集。随着时间变化,AP可能调整这些参数。
块确认协议允许使用单个块确认帧来确认所传输的一整块数据帧,而不是对每单个数据帧都发送一个ACK帧,从而提高了效率。
块确认机制是面向会话的,站点必须为要进行块数据传输的每一个通信标识符(TID)在其与接收端之间建立一个块确认会话。一个特定的块确认对话由条目<发送地址,接收地址,TID>标识。
立即块确认
块确认请求帧(BAR)会要求立即得到一个BA帧回应。也就是说当BA收到BAR后SIFS的时间内返回(同一个TXOP)。
延时块确认
BAR在一个TXOP内发送,BA在另一个TXOP内返回。因此立即块确认与其相比,延迟更短,性能也有所提高。
图(a)是使用立即块确认协议的块数据帧交换序列。
STA1向STA2传输数据,经过一个竞争周期,STA1获得了一个TXOP。在传输数据之前,STA1进行了一个短帧交换(作为一种碰撞检测机制,同时为了设置邻近站点的NAV)。然后STA1开始发送一段连续的数据,每段数据间的间隔为SIFS,知道TXOP结束。图(b)没有使用RTS/CTS交换,而是和STA2进行数据/ACK交换来进行碰撞检测。数据/ACK交换在发射机附近所提供的保护比较受限,但是对比RTS/CTS更为有效(不进行信息传送)。
图(b)没有使用RTS/CTS交换,而是和STA2进行数据/ACK交换来进行碰撞检测。数据/ACK交换在发射机附近所提供的保护比较受限,但是对比RTS/CTS更为有效(不进行信息传送)。