802.11b介质访问控制(MAC)将从功能上为用户在不可靠的介质上提供可靠的数据传送,同时它还提供一些有线局域网更有意义的局域网服务。在本章将对MAC作功能性描述。MAC层结构,包括分布式服务(DCF)和中心网控服务(PCF)以及它们在802.11b局域网共存将在9.1中介绍。在9.29.3中将详细介绍这些功能。分段和重组分段将在9.49.5中介绍。多速率支持将在9.6中介绍。允许的帧交换序列在9.7中列出。最后在9.8中介绍一些额外的MSDU排序和丢弃的限制。

6.1 MAC功能及协议结构

802.11b MAC层的第一个功能是为MAC的用户提供可靠的数据传送,通过MAC层帧交换协议,802.11b相对于以前的WLAN而言很大程度上提高了在无线介质上传送数据的可靠性。

802.11b MAC层的第二个功能是公平的控制对公享介质的访问,这个功能是通过两个访问机制来实现的:基本的访问机制,也被称为分布式协调控制(DCF);中心控制访问机制,也称为中心协调控制(PCF)。其逻辑结构如图47所示。

802.11b MAC层的第三个功能是保护数据的传送,因为一个WLAN不拥有特定的物理区域,很多情况下802.11b MAC提供的加密服务称为有线等同加密(WEP),它能对在无线介质上传送的数据加密,从加密功能上讲它能达到有线局域网物理上封闭的固有特性。

6.1.1基本访问机制(CSMA/CA)

802.11b基本的介质访问控制方法是带有二进制指数退避的载波检测多路访问/冲突避免(CSMA/CA),这种访问机制与IEEE 802.3使用的访问机制类似。CSMA/CA是一种先听后说(LBT)的机制,在这种类型的访问机制中,STA在开始一次新的发送前必须监听介质。如果介质上已经有信息在传送,则该STA将不会开始自己的信息发送。这就是这种访问机制的载波检测多路访问部分(CSMA),它是在PHY提供的物理载波检测基础上实现的。但是可能会监听介质的STA已经开始了它的传送,但实际上介质上还有其它信息在传送,这样就会产生冲突。冲突会导致传送的中断,甚至会使得近几次传送的内容都不能正确的接收。

因为一个无线设备既要发同时又要接收是不太可能的,所以IEEE 802.11b使用的是冲突避免而不像IEEE 802.3那样使用冲突检测。并且在一个WLAN中,不是所有的无线设备都能直接的通信,所以802.11b采用了网络分配矢量(NAV)NAV是一个值,这个值标明的是在介质可用前剩余的时间。每个STANAV通过从介质上传送的帧里取出时间长度值保持最新的值。STA也通过检查NAV来决定是否发送,这就有可能NAV表明介质忙,而物理的载波检测表明介质空闲,但STA仍然不发送,所以我们也称NAV是虚拟的载波检测。通过将物理的载波检测和虚拟的载波检测结合起来,MAC也就实现了CSMA/CA的冲突避免部分。

6.1.1分布式协调功能(DCF)

  DCF是最基本的访问控制手段,所有的STA都应该实现DCF,因为在独立服务集和基础服务集网络中STA都以此为基本的访问方式。

STA发送数据前,它应该检测介质上是否有其它的STA在发送数据。如果介质不忙,则STA就可以发送数据。CSMA/CA分布式算法强制规定在连续的两次帧发送之间介质上一定要有一段间隔。将要发送数据的STA一定要在发送数据前确保在它请求的这段时间内介质应该是空闲的。如果介质被检测处于忙状态时,STA会推迟其数据的发送直至当前帧发送完毕。在推迟其发送后,或者在成功发送后想立即再发送时,STA会选择一个随机退避间隔,并且当介质是空闲时就减小随机退避间隔计数器的值。在不同的情况下会有更多的方法来减小冲突,比如在这里,发送STA在检测出介质是空闲的并且在发送数据前完成了随机退避后,会和接收STA交换短的控制帧[RTSCTS]

6.1.2中心网控功能(PCF)

802.11b还提供了一种称为PCF的可选介质访问方式,这种方式只能用在基础服务集中。这种访问方式有一个控制点,该控制点同时是该BSS的访问服务点,它的功能只是决定当前哪个STA有权发送数据。这种方式的本质是通过轮询来完成的,而PC扮演的是主轮询者的角色。而在同一物理空间并且有多个PC工作在相同频道上时,PCF的正确运行还需要更多的协调。在802.11b没有对这些协调规则作规定。

PCF使用一个辅以访问优先级机制的虚拟载波检测机制。PCF将在信标帧中发布信息,通过设置STANAV来获得介质的控制权。另外,在PCF下传送数据前使用的帧间间隙比通过DCF发送数据的帧间间隙要短。短的IFS表明在重叠的BSS中比工作在DCF访问方式下的STA有更高的优先级。

PCF提供的访问优先级可以被用来建立无竞争的访问方法。PC控制所有STA的帧传送以避免在有限的一段时间内有竞争,这段时间称为无竞争期(CFP)

6.1.3 DCFPCF共存

DCFPCF可以以某种方式共存,在该方式下允许二者在同一BSS中并发的工作。当BSS中存在一个PC时,两种访问方式可以交替进行,如CFP后紧跟竞争期(CP)

6.1.4分段/组段概述

把一个MSDU或者MMPDU分成较小的MAC层帧──MPDU的过程称为分段。在信道特征有利于接收短的帧的情况下,分段建立的MPDU的长度比原始的MSDU或者MMPDU的长度要小,这样可以提高可靠性。分段由当前发送者进行。把MPDU组织成一个MSDU或者MMPDU的过程称为组段。组段由当前接收者完成。只有在单播帧的情况下MPDU才被分段,而对于广播或者多播帧是不会被分段而不管它们的长度是否超过了aFragmentationThreshold(分段门限值)

当一个直接的MSDULLC传来或者一个MMPDUMAC层管理实体传来,并且MSDU或者MMPDU的长度超过了aFragmentationThreshold值,则MSDU或者MMPDU将被分段。MSDU或者MMPDU将被分成MPDU。每个分段是一个长度不超过aFragmentationThreshold值的帧。这就可能任何分段都是一个长度小于aFragmentationThreshold值的帧。图48给出了分段的示例。


MSDU或者MMPDU产生的MPDU将被单独传送,并且每个分段都有自己的应答。这就允许每个分段被重传而不是每个MSDU或者MMPDUMSDU或者MMPDU的分段在CP间使用DCF介质访问程序以突发的模式传完,除非由于使用的信道占用被终止。在CFP间,MSDU或者MMPDU的分段将作为独立的帧并在PC介质访问控制程序下发送。

6.1.5数据服务

MAC数据服务将从LLC来的请求转换为MAC状态机使用的输入信号。同时MAC数据服务将MAC状态机的输出信号转换为传给LLC的服务指示。

6.2 DCF

介质访问协议允许STA支持不同数据速率的设置。所有的STA均能在MLME_Join.requestMLME_Start.request原语中的aBasicRateSet参数所规定的基本数据速率下够接收和传送数据。为支持正确的RTS/CTS和虚拟的载波检测机制,所有的STA应能够检测到RTSCTS帧。基于这种原因,RTSCTS帧应在BSS的基本速率设置中的一种速率下传送。

CSMA/CA协议被设计来减少在多STA访问一个介质时冲突的可能性,特别是在冲突最容易发生的点。在介质忙变为闲的瞬间是冲突的高发生点,这是因为多个STA可能已经在等待介质变为可用,这就是需要一个随机退避程序来解决争用冲突的情况。

载波检测包括物理机制载波检测机制和虚拟载波检测机制。

虚拟载波检测机制通过发布对介质的强迫保留使用的信息来实现的。在实际数据帧之前的RTS/CTS是发布这种介质保留信息的一种方式。RTS/CTS帧包含一个Duration/ID域,该域定义了介质被保留用于传输实际的数据帧和返回ACK帧的时间,所有在发起STA或者在目的STA(它将发送CTS)接收范围的STA将得知介质的保留时间,所以,即使STA不能从发起STA处接收到RTS,它也能够知道介质将被用于传送数据帧的时间。

另一种发布介质保留时间信息的方式是通过直接帧的Duration/ID来实现的,该域给出了介质被保留至紧跟的ACK传送完毕,或者在一个段序列的情况下,至紧跟在下一个段之后的ACK传送完毕。

RTS/CTS交换同时也有快速冲突推断和传送路径检测的功能,如果发起RTSSTA没有接收到CTS可以快的重复这一过程,而不是长的数据帧传出后不能收到ACK来重复传数据帧。

RTS/CTS的另一优点在于多BSSs使用同一重叠信道的情况下,介质保留机制可跨BSA工作。RTS/CTS在一个BSS中所有的STA能从AP处接收而不能从其余的STA处接收的情况下也能促进BSS的工作。

RTS/CTS机制不能用于广播和多播的MPDU,因为RTS的多目的地址必然导致多个并发的CTS发送。RTS/CTS机制不需要在每个数据帧传送时使用,因为额外的RTSCTS会导致效率低下,该机制不总是有效的,特别是对于短的数据帧。

RTS/CTS的使用是在dot11RTSThreshold属性的控制之下的,该属性被设置在每个STA的管理信息库中。该机制允许STA被设置为总是使用RTS/CTS,从不使用或者当数据帧超过一定长度后使用RTS/CTS

STA被设置为不发起RTS/CTS机制后,它仍然通过接收到的RTSCTS的保留信息来更新它的虚拟载波检测,同时总是对到该STARTS响应。

介质访问协议允许STA支持不同的数据速率设置。所有的STA应该接收在基本速率设置中的所有数据速率并且能够在一个或多个基本数据速率设置中的速率上传送数据。为了支持正确的RTS/CTS和虚拟载波检测机制正常工作,所有的STA都应能够检测到RTSCTS帧,基于这种原因,所有的RTSCTS都应该被传输在基本速率设置中的某一速率上。

DCF控制下的数据帧应为帧类型为数据和子类型为数据或帧体为空的数据帧,收到数据帧的STA认为该帧体为可能通知LLC的基本内容。

6.2.1载波检测机制

物理载波检测机制和虚拟载波检测机制被用于决定介质的状态,当二者任一报告介质忙,则介质就被认为忙,否则被认为闲。

物理的载波检测机制由PHY提供,9章讲述该信息如何被传给MAC。物理载波检测将在物理层规范中详细介绍。

虚拟检测机制由MAC提供,该机制参考NAV(网络分配向量)实现。NAV包含对介质上将要进行的通信进行预测的信息。NAV从实际数据交换前的RTSCTSMACCP间除PS-Poll控制帧外的所有帧头里的时间长度(duration)域获取这一信息。

载波检测机制包含NAV状态和由物理载波检测信道提供给STA的发送器状态。NAV可以被认为是一个计数器,它以统一的速率减到0,当该计数器为0时,表明介质闲,否则为忙。

6.2.2 MAC层应答

接收某些正确帧(即该帧的FCS是正确的)之后要求返回应答帧,通常为ACK帧,这种技术称为主动应答。

如果源STA没有接收到所希望的ACK帧,该STA则认为出错。但值得注意的是目的STA可能已经正确接收了该帧,而错误可能出现在ACK帧的接收过程中。对于源STA而言,它不能区分错误是出现在帧传输还是在ACK的传输过程中。

6.2.3帧间隙(IFS)

帧与帧之间的时间间隙被称作帧间间隙(IFS)。所有使用载波检测功能的STA只有检测到信道闲的时间大于IFS后,才认为信道是闲的。MAC层定义了四种不同的IFS以提供对无线介质访问的不同优先级,它们以从小到大的顺序列出来:

a)    SIFS 短帧间间隙

b)    PIFS PCF帧间间隙

c)    DIFS DCF帧间间隙

d)    EIFS 扩展帧间间隙

不同的帧间隙与STA的位速率独立,帧间隙值被定义为介质上的时隙,对每个PHY是固定的(即使是支持多速率的PHY)。帧间隙值由定义在PHY的属性决定。


6.2.3.1短帧间隙(SIFS)

SIFS用于ACK帧,CTS帧,段突发传送中的第二个MPDU或者随后的MPDUSTACFPPCF轮询的响应,也可用于在在CFPPC传送任何帧。SIFS是从前一帧的最后一个符号消失时开始计时,到随后帧出现在空中接口上的前导部分的第一个符号时结束的一段时间。

当随后帧传送开始于如9.2.10所定义的TxSIFS的时隙边界时,SIFS就可以获得定时。802.11b实现时不允许在介质上两帧之间的时间间隔误差不超过物理层使用的aSlotTime(时隙值)±10%

SIFS是最短的帧间间隙。当STA已经获得介质的控制权并且需要持续控制以完成帧交换序列,这时会使用SIFS。在帧交换序列中两次传送之间使用最短的间隔可以防止其它正在等待介质的STA试图去使用介质,这也就给完成帧交换序列较高的优先权。

6.2.3.2 PIFS

只有工作在PCF下并且在CFP的开始想获得介质的访问权时PIFS才被这种STA使用。使用PCFSTA如果在TxPIFS时隙边界处检测出介质是空闲的,则该STA就允许进行无竞争通信。

6.2.3.3DIFS

DIFS被工作于DCF下的STA传送数据(MPDUs)和管理帧(MMPDUs)之前使用。如果使用DCFSTA在正确接收到数据帧,并且它在TxDIFS时隙边界处载波检测表明介质闲,而且它的退避时间已经结束,此时可以传送数据。当工作在DCF控制下的STA如果收到了错误的MAC帧,这种错误可能是PHYRX-END. Indication原语中指出,也可能是该帧的FCS值错误,则该STAEIFS内即使检测出介质是空闲的也不能发送数据。STA可以在随后正确接收的无错误帧(使STA再次同步)后传送数据。

6.2.3.4 EIFS

DCF下当PHY表明没有被正确接收到一个完整的并含有正确FCSMAC帧时使用EIFS。在发现错误帧后,当PHY报告介质空闲时就开始EIFS的计时而不管虚拟载波检测结果。EIFS为没有正确接收到帧的STA应答提供足够的时间。在EIFS内接收到正确的帧后使该STA与实际介质的忙/闲状态同步,同时EIFS被终止后恢复正常的介质访问(使用DIFS,在需要时还调用退避程序)

6.2.4随机退避时间

STA想发送数据帧和管理帧时调用载波检测机制来决定介质忙闲状态,如果介质忙,STA将推迟其发送直至介质空闲时间为DIFS (最近一次检测到的帧被正确接收)或者EIFS(最近一次检测到的帧没有被正确接收)。在DIFS或者EIFS后,STA将在发送前产生一个随机退避时间来推迟发送时间,如果其本身退避时间为非零值,则不允许选择随机退避时间。这个过程可以在多个STA同时争用信道时减小冲突的可能性。

Backoff Time = Random() ´ aSlotTime

其中

Random()的值为统一分布在0CW范围内的伪随机整数,而CWPHY特征值aCWminaCWmax之间的数,其关系为aCWmin £ CW £ aCWmax。设计者应该认识到在STA之间产生的随机数的统计独立性。

时隙值为PHY的特征值。

CW的初始值为CWmin,每个STA都保存了短重传计数器SSRC和长重传计数器SLRC,它们的初始值都为0。当与任何MSDU相关的短重传计数器增加时SSRC的值增加,同理SLRC的值增加。当重传计数器增加时,CW选择下一个值直至达到CWmax 。重传是针对被SIFS分开的完整的帧。一旦CW达到aCWmaxCW将保持该值直至它重置。这将促进访问协议在高负载下工作的稳定性。

SLRC达到门限值aLongRetryLimit或者SSRC达到门限值dot11ShortRetryLimit CW的值时,STA会在每成功传送一个MSDU或者MMPDU后被置为Cwmin。当收到作为RTS响应的CTS后,或者收到作为MPDU或者MMPDU响应的ACK后,或者传送了Address1为组地址后的帧后,SSRC将被置为0。当收到作为长度超过dot11RTSThresholdMPDU或者MMPDUACK后,或者传送了Address1为组地址后的帧后,SLRC将被置为0

CW的值为2的整数幂减1,其初始值为PHY确定的aCWmin值,最大值为PHY确定的aCWmax值,如图50所示,CW的初始值为7,然后取24-1=1525-1=31,┄┄,28-1=255

6.2.5 DCF访问程序

CSMA/CA访问方法是DCF的基础,DCFPCF的工作机制有一定的区别。

6.2.5.1基本访问

基本访问被看作是STA用于决定是否可以传送的核心机制。

通常,STA在没有PC的情况下或者在PCF控制下的CP间使用DCF访问控制方法,在STA接收到正确的上一帧后介质闲的时间大于或者等于DIFS,或者当STA上一次收到的帧没有正确的FCS 后介质闲的时间不小于EIFS的情况下就可以发送MPDU。如果在这些情况下,当某个STA不在无竞争期将要发起一系列帧交换,载波检测出介质会处于忙状态,则此STA将随后调用随机退避程序。

基本访问机制在图51中标明。

6.2.5.2退避程序

对于要传送帧的STA而言,当物理的或者虚拟的载波检测发现介质忙时,则该STA调用退避程序。当STA推断出失败的传输后也调用退避程序。

在退避程序开始时,STA9.2.4的公式随机计算一个退避时间来设置退避定时器。只有当介质空闲时间达到DIFS或者在没有正确接收帧的情况下达到EIFS后,如果介质仍然是空闲的,这时才出现退避时隙。

执行退避程序的STA用载波检测机制来决定每个退避时隙间介质是否有活动。如果在某一退避时隙间没有介质活动的报告,则退避程序将其退避计数器减去一个时隙。

如果在退避时隙间介质被报告为忙,退避程序将被挂起,退避定时器对该时隙不计数。当介质空闲的时间达到DIFSEIFS后退避程序被允许重新开始。在退避定时器为0时传输就可以开始了。

退避程序在类型是数据类型的MPDU且该MPDUMore Fragments位为0,或者管理类型,或者子类型为PS-Poll的控制帧传送结束后立即执行,即使当前没有额外的传送在队列中。在成功确认传送的情况下,退避程序在接收到ACK之后开始,在需要ACK的不成功传送情况下,退避程序在ACK定时器结束之后开始。如果传送是成功的,CW的值在随机退避间隙选定之前变为CWminSTA的短重传计数器和长重传计数器按6.2.4所述更新。这就保证了从同一个STA传送的帧总是被至少一个退避间隙分开。

该程序的结果为当多个STA正推迟传送并且进入随机退避,那么选用最小退避时间的STA将赢得竞争。

在独立服务集中,对于非信标帧,或者非ATIM帧传送的退避计数器在TBTTATIM窗口结束前不会减小,对于ATIM的退避时间只在ATIM窗口内减小。在独立服务集中将会为信标帧的传送产生单独的退避间隔。

6.2.5.3修复程序和重传限制

错误修复应该是发起帧交换的STA来完成,很多情况都可能导致传送错误而需要修复。比如在发出RTS后而没有返回CTS,出现这种情况的原因可能是在CTS帧或者RTS帧的传送过程中与某个STA的帧传送发生了冲突,或者是接收到RTSSTA的虚拟载波检测表明介质处于忙状态。

当发起帧交换的STA推断出传送失败后总是通过重传来进行错误修复的,而重传过程一直持续到该帧被成功传送或者重传次数达到门限值。每个STA对每个MSDU或者MMPDU都有一个短重传计数器和一个长重传计数器,当有MSDU或者MMPDU被重传时,其对应的计数器增加1,并且这两个计数器相互独立的被重置。

RTS被发送后,STA应该执行CTS程序。如果RTS传送失败,则相应的MSDU或者MMPDU短重传计数器和该STA的短重传计数器增1,该过程将一直持续到试图传送该MSDU或者MMPDU的次数达到MIB属性dot11ShortRetryLimit(重传计数器)

在传送了一个需要应答的帧后,STA应该执行应答程序。当一个长度不大于MIB属性值dot11RTSThresholdMAC帧传送失败时,则其对应的MSDU或者MMPDU短重传计数器值和该STA的短重传计数器值被增加。当一个长度大于MIB属性值dot11RTSThresholdMAC帧传送失败时,则其对应的MSDU或者MMPDU长重传计数器值和该STA的长重传计数器值被增加。当一个长度不大于MIB属性值dot11RTSThresholdMAC帧传送成功时,则其对应的MSDU或者MMPDU短重传计数器值和该STA的短重传计数器值被重置为初始值。当一个长度大于MIB属性值dot11RTSThresholdMAC帧传送成功时,则其对应的MSDU或者MMPDU长重传计数器值和该STA的长重传计数器值被重置为初始值。没有被成功应答的MSDU或者MMPDU在试图重传时会在这种数据或者管理帧的重传域(Retry field)置为1。对于传送失败帧的重传将持续到该MSDU或者MMPDU对应的短重传计数器达到MIB属性值dot11ShortRetryLimit或者是该MSDU或者MMPDU对应的长重传计数器达到MIB属性值aLongRetryLimit。当以上限制有一个成立,则重传被终止,并且该MSDU或者MMPDU被丢弃。

在扩展服务集中处于节能状态的STA发送一个PS-Poll帧向访问服务点请求数据。当没有从访问服务点处收到作为PS-Poll响应的数据帧或者应答帧时,该STA会在方便的时候发送另一个PS-Poll帧。当访问服务点发送了一个作为PS-Poll响应的数据帧,而又没有收到该数据帧的应答帧时,则访问服务点将会以上一个MSDU的重传作为下一个PS-Poll的响应。这样会导致STA可能收到重复帧,接收到这种重复MSDUSTA将会用普通的帧过滤机制将重复帧过滤出来。如果访问服务点对PS-Poll的响应是一个应答帧,则对传送的数据帧的修复责任由访问服务点承担,因为随后的帧交换序列是由访问服务点发起的。访问服务点将以合法的格式发送一个MSDU到已经发送了PS-Poll帧的STA。如果处于节能状态的STA在传送PS-Poll后成功接收到了MSDU,并且在发送了该MSDU的响应帧后处于睡眠状态,但是访问服务点又没有成功接收到应答帧,则访问服务点会重传该MSDU直到达到相应的重传限制。

6.2.5.4NAV的设置

STA在接收到合法帧后会使用该帧Duration/ID域的信息去更新NAV,但是其条件是新的NAV值要比当前NAV值要大并且该帧不是到该STA的。当NAV被重置时,会产生PHY-CCARESET.request原语。

在图53中示出的是一对STA之间在进行RTS帧和CTS帧的交换,而对于可以收到RTS帧的STANAV的设置情况见第3条曲线的上方长NAV条,而对于只能收到CTS帧的STANAV的设置情况第3条曲线的下方短NAV条。

STA在收到最近一次作为RTS帧结束的PHY-RXEND.indication原语后的(2 ´ aSIFSTime) + (CTS_Time) + (2 ´ aSlotTime)时间内没有收到PHY-RXSTART.indication原语,则该STA可以以此RTS帧中的信息为基础来重置它的NAV。其中“CTS_Time”值是用CTS帧的长度和最近一次用于更新NAVRTS帧的速率计算出来的。

6.2.5.5信道的控制

SIFS用于提供一个高效率的MSDU传送机制。一旦STA争用到信道后,STA将持续传送同一MSDU或者MMPDU的所有分段直至该MSDU或者MMPDU的某一分段被传送而没有收到应答帧,或者是因为该STA不允许再发送帧。在发送中的分段被终止的原因就是上述三种原因的某一种,而当该STA再次获得发送的机会后,它会在被终止的状态下开始它的发送。当STA有多个MSDU等待要发送时,决定哪个MSDU被先的算法不在本标准讨论范围内。

54示出了一个含有多个分段的MSDU使用SIFS传送的实例。

当源STA传送了一个分段后,它将释放信道,然后监听信道来获取ACK

当目的STA完成了应答帧的发送后,在应答帧后的SIFS被保留给源STA继续发送另一个分段。发送应答帧的STA不会在发送完应答后立即传送其它的帧。

在争用到信道后发送多个分段的过程被定义为段的突发传送。

如果源STA没有接收到应答帧,该STA将在执行退避程序和争用过程之后重传失败的或另一合适的MPDU

STA争用到信道后将重传某个MSDU的最近一次没有被应答的一个分段。如果源STA按序发送各个分段,则目的STA将会按序接收各个分段,并且它们被独立应答。这样就有可能目的STA接收到重复的分段,而检测出重复帧并丢弃该帧的任务应由目的STA完成。

STA一个突发传送分段的过程中只有在以下条件下才可以在SIFS后发送帧。

    STA刚收到了需要应答帧的分段,这时它可以在SIFS后发送ACK帧。

    STA接收到刚发出去分段的应答,并且它还有该MSDU的分段要发送,而且它有足够的时间发送分段和接收该分段的应答,则源STA就可以在接收到ACK帧后的SIFS后发送下一个分段。

以下规则也将适用:

    STA已经传送了一个非开始或中间段时,该STA在没有执行退避程序之前不会在该帧的应答帧之后传送。

    当一个MSDU被成功传送或者所有的重传次数达到门限值,而该STA随后的有MSDU要传送,则该STA应该执行退避程序后才可以传送随后的MSDU

    只有没有被确认的段才被重传。

6.2.5.6分段中RTS/CTS的使用

以下描述了在MSDU或者MMPDU的分段中使用RTS/CTS的情况。RTS/CTS帧定义了随后帧和应答帧的时间长度。数据帧和应答帧的Duration/ID域也标明了下一个分段和应答帧的总时间长度。如图55所示。

每一帧都包含了下一次传送所需的时间信息。用于更新NAVRTS中的时间长度信息标明的是介质将一直处于忙状态直到ACK0被传送。而CTS中的时间长度信息也被用来更新NAV,标明的是介质将一直处于忙状态直到ACK0被传送。分段(Fragment) 0ACK 0中的时间长度信息也将用来更新NAV,标明的是介质将一直处于忙状态直到ACK1被传送。这些是通过使用数据和应答帧中的时间长度域完成的。这样会持续到最后一个分段,该分段包含的是一个ACK时间和SIFS时间,而在最后的ACK中的时间长度域的值为0。每个分段和ACK帧起到了虚拟RTS/CTS的作用,因此在由RTS/CTS开始的帧序列交换后,即使传送的帧的长度大于dot11RTSThreshold的值也不需要产生RTS/CTS

ACK被发出而又没有被源STA收到时,这种情况最坏,因为那些收到了上一个分段或者ACK帧的STA将其NAV置为分段或者ACK帧的时间长度域的值(如上图所示),即这些STA会认为介质将一直保留至下一个分段及相应ACK帧传送完毕,而事实上由于源STA没有收到ACK帧,它会放弃对介质的控制,即这些STA不应该等至其NAV标识的时间后才去争用介质,这样就会造成介质利用率降低。同理,如果目的STA没有发出ACK,那些只在目的STA覆盖范围的STA将不会更新它的NAV,这些STANAV值仍然是它上一次收到的帧的时间长度值,同时当它们的NAV达到0时会试图访问介质。而所有在源STA覆盖范围的STA将在其NAV置为源STA发出的分段所标识的时间,但由于源STA没有收到ACK帧,也会放弃对介质的控制,但那些在源STA覆盖范围的STA不应该等至其NAV标识
的时间后才去争用介质,这也将造成介质利用率降低。

6.2.5.7CTS程序

RTS帧中标明的目的STA在接收到RTS帧后,将根据RTS中的时间长度更新的NAV,如果其值表明介质空闲则等待一个SIFS间隙后返回CTS,如果NAV表明介质忙,则该STA不响应该RTS。作为RTS响应的CTS帧的RA域是从RTSTA域复制过来的,而其时间长度域的值为RTS的时间长度域的值减去SIFS和在传送RTS的速率下传送CTS所需的时间。

STA在传送RTS帧后将在收到PHY-TXEND.confirm原语时(RTS帧传送结束)开始等待一个CTSTimeout间隔。如果在CTSTimeout间隔内没有出现PHY-RXSTART.indication原语(即没有收到任何帧),则该STA会推断出RTS的传送是失败的,然后该STA会在CTSTimeout间隔结束后调用退避程序继续争用信道,以再次传送RTS帧。如果在CTSTimeout间隔内出现了PHY-RXSTART.indication原语(帧接收开始),则该STA会等待对应的PHY-RXEND.indication原语(帧接收结束)来决定RTS的传送是否成功。对一个收到的作为RTS的响应的合法CTS帧的接收标明的是一个成功的响应,并且允许帧交换序列可以继续。而对其它任何合法帧的接收标明的是RTS传送的失败。在这种情况下,该STA在收到PHY-RXEND.indication原语后调用退避程序继续争用信道,以再次传送RTS帧。

6.2.6直接MPDU传送程序

只有当定向帧的MPDU的长度超过了属性值dot11RTSThresholdSTA才在帧交换前使用RTS/CTS交换。

属性dot11RTSThresholdMIB的一个管理项目,它的值被MACLME(层管理实体)读和写。如果该值为0则表示所有的MPDU在传送前都使用RTS/CTS,如果dot11RTSThreshold的值大于MSDU的最大长度表明所有的MPDU在传送前都不需要RTS/CTS

当使用RTS/CTS后,异步数据帧将在CTS结束后的SIFS间隙后发送,而不管传送该数据帧时被告知介质的忙闲状态。

当不使用RTS/CTS交换时,异步数据帧将在成功的基本访问程序之后进行传送。不管是否使用RTS/CTS,作为目的STA都应在异步数据帧之后进行应答。


6.2.7广播和多播MPDU传送程序

在没有PCF控制的情况下,当广播或多播帧(ToDS位为空)从一个STA传出时,不管帧的长度,都没有RTS/CTS交换,只使用基本访问程序。另外,目的STA也不会对广播或多播帧进行应答。当从STA传出的广播或多播MPDUToDS被置位时,除了遵守基本访问程序CSMA/CA外,还遵守RTS/CTS交换规则,因为该MPDU是传给访问服务点的。广播或多播帧将被分配到发送该广播或多播帧的STA隶属的基本服务集中,产生该广播或者多播帧的STA可能将以广播或多播帧的形式接收该帧。因此,所有的STA都应该过滤出源地址为自己地址的广播或多播帧。广播或多播MSDU将在扩展服务集中传送。

除了ToDS位被设置位外的所有广播或多播帧在MAC层都不能被修复,因此,这种通信的可靠性被降低。

6.2.8应答程序

访问服务点在成功接收一个需要应答且ToDS被置位的数据帧后,将产生一个应答帧。非访问服务点的STA在成功接收到需应答的单播帧后会产生一个应答,而当收到广播或多播帧后则不产生应答帧。在正确接收了需要应答的帧后的SIFS后立即传送应答帧而不管介质的忙闲状态。

在认为MPDU传送失败以前源STA将在ACKTimeout时间内等待ACK(如图54所示)

如果STA发送了需要应答的MPDU,则该STA会在收到该MPDU结束对应的PHY-TXEND.confirm原语时开始等待应答帧,等待时间为ACKTimeout。如果在ACKTimeout间隔内没有出现PHY-RXSTART.indication原语,则该STA会认为上一次的传送是失败的,而且会在等待时间结束后调用退避程序重新争用信道。如果在STA的等待期间收到了PHY-RXSTART.indication原语,则它会等待相应的PHY-RXEND.indication原语来决定MPDU的传送是否成功。对一个由收到需要应答的MPDUSTA发出的ACK帧的合法确认,将被解释为成功的确认,它将允许帧序列的继续,或者结束帧的传送而不需要重传。在此期间内收到的其它任何帧,而且即使收到的帧是正确的,都会认为MPDU的传送是失败的。在这种情况下,该STA在收到PHY-RXEND.indication原语后调用退避程序同时处理收到的帧。唯一的例外是对于接收到PS-Poll帧的STA发出的合法数据帧也会被认为是PS-Poll帧的应答。


6.2.9重复帧的检测和修复

因为在802.11b协议MAC层中融入了应答机制和重传机制,这就可能导致一个帧被接收超过一次,这些重复帧就应该被目的STAMAC层过滤出来。

重复帧的过滤是通过内置在数据和管理帧的序列控制域(包括帧序列号和段序列号)来实现的。同一个MSDUMPDU有相同的帧序列号,不同的MSDU应该有不同的帧序列号。

序列号是传送的STA产生的递增整数。

每个STA都保留一个高速缓存,它记录了最近接收到帧的第2地址域(发送该帧的STA地址),帧序列号,段序列号。但STA不对广播或多播或ATIM帧做记录。

如果STA收到的帧被标记为重复帧,并且在该STA的高速缓存中有该帧的记录,那么STA会拒绝接收该帧。但仍然可能会由于不正确的记录导致不正确的匹配,也就不正确的拒绝某些帧,这种情况的可能性是很小的,就如在其它局域网中出现FCS错误。

目的STA对于所有成功接收到需要应答的帧都会执行应答程序,即使该帧是滤出的重复帧。

6.2.10 DCF定时关系

    IFS(帧间间隙)被定义为介质上的时间片,相关的属性由特定的物理层提供。

所有引自传送结束的定时是该帧的最后一个编码在介质上传送结束的时刻,而所有引自传送开始的定时是下一帧的第一个编码在介质上传送的时刻。

对于每个物理层而言,aSIFSTimeaSlotTime是固定的,802.11baSIFSTimeaSlotTime分别是10µs20µs

其中aSIFSTime=aRxRFDelay + aRxPLCPDelay + aMACProcessingDelay + aRxTxTurnaroundTime

其中aSlotTime=aCCATime + aRxTxTurnaroundTime + aAirPropagationTime + aMACProcessingDelay

公式中的aRxRFDelayaRxPLCPDelayaMACProcessingDelayaRxTxTurnaroundTimeaCCATimeaRxTxTurnaroundTimeaAirPropagationTimeaMACProcessingDelay是物理层参数。


PIFSDIFS由以下几个公式定义: 

PIFS = aSIFSTime + aSlotTime

DIFS = aSIFSTime + 2 ´ aSlotTime

EIFS源自SIFSDIFS和传送在1 Mbit/s的速率下传送一个ACK帧的时间长度,具体公式为:

EIFS = aSIFSTime + (8 ´ ACKSize) + aPreambleLength + aPLCPHeaderLngth+ DIFS

    其中ACKSize是以字节为单位的长度,而(8 ´ ACKSize)+ aPreambleLength + aPLCPHeaderLngth表示的是在物理层规定的最低速率下传送所需的以微秒为单位的时间长度。

58示出了在介质上测出的SIFSPIFSDIFS的关系和不同的MAC时隙边界。为了能够让MAC层起动的发送器与介质上的IFS定时匹配,802.11b定义了时隙边界。

以下的公式定义了MAC的时隙边界,它们使用的是物理层提供的属性,这些时隙边界用于对实现时的定时变化的补偿。这些时隙边界的参考点是在介质上前一帧的最后一个编码被传送结束的时刻。

TxSIFS = SIFS – aRxTxTurnaroundTime

TxPIFS = TxSIFS + aSlotTime

TxDIFS = TxSIFS + 2 ´ aSlotTime.

这些误差将被定义在PLME(物理层管理实体)的访问服务点,并且它只被用于SIFS定义,这样可以防止误差的累计。

6.3中心网控功能

PCF通过轮询和应答的机制来提供无竞争的帧传输,而PCF是通过PC(中心控制点)来控制的。PC总是驻留在某个AP处,但AP是否为PC的驻留点是可选的。通常PCF是这样工作的,首先是STAPC申请加入轮询列表中,然后PC根据轮询列表轮询这些STA。所有的STA都支持PCF的访问规则,因为这些规则是基于DCF的,并且它们在CFP的开始设置它们的NAV

所有的STA都能在有PC存在的BSS中正确工作,并且如果该STA与某个有中心控制点的基本服务集关联,则它能够接收在PCF控制下的所有帧。对于STA而言是否对来自PC的轮询响应是可选的。能够响应轮询的STA被称为支持被轮询的(CF-Pollable),并且可以请求被活动PC轮询(POLL)。支持被轮询的STAPCCFP间不使用RTS/CTS,当被PC轮询后,支持被轮询的STA可以传送一个MPDU(目的STA为任意的STA,不仅仅是PC),然后使用特定的帧类型将对PC发来帧的应答信息捎带出去。如果STA发出的数据帧没有返回ACK,支持被轮询的STA只有再次被PC轮询后才会重传该帧,或者决定在CP间重传该帧。如果目的STA不支持被轮询,则该STADCF方式下的应答规则返回ACK,并且PC保持对介质的控制。PC可以用无竞争帧仅传送帧到所有的STA(包含不支持被轮询的STA),而从不轮询不支持被轮询的STA

PCCFP间在重传一个没有被应答的帧时可以执行退避程序。PC维持了一个轮询列表,当某一AID再次处于论询列表顶部时,PC就可以重传没有被该AID应答的帧。

PCPCF间经过一个PIFS后可以重传一个没有被应答的帧。

当有多个具有中心控制点的基本服务集在同一物理信道上工作时,则不同的PC传送PCF信息信息时存在潜在的冲突,解决这些的规则在9.3.3.2中介绍。如图47所示,PCF是构建在以CSMA/CA为基础的DCF上的,它是通过利用CSMA/CA这种机制提供的访问优先级来实现的。一个活动的PC被内置于一个AP中,这也就限制了这种结构只能在基础服务集中实现。PCF可以通过在可以作为PCAP中将CFPMaxDuration参数设置为非0值来开始。

DCF下传送的数据帧应该使用数据子类型为简单数据帧或者空数据帧,而PCF下作为轮询响应帧的数据帧应该使用基于以下规则的合适的数据子类型帧。

    Data+CF-PollData+CF-Ack+CF-PollCF-PollCF-Ack+CF-Poll 它们只能被PC发送。

    DataData+CF-Ack,空数据帧和CF-Ack,它们可以被PC或者任何支持被轮询的STA发送。

接收到数据帧子类型为Data, Data+CF-Ack, Data+CF-Poll, 或者 Data+CF-Ack+CF-PollSTA将仅仅认为该帧体为通知LLC的基础。支持被轮询的STA将解释所有的数据帧的子类型位,但仅仅分析子类型为Data, Data+CF-Ack, Data+CF-Poll, 或者 Data+CF-Ack+CF-Poll的帧。

6.3.1 CFP的结构和定时

PCF利用比DIFS短的PIFS来获取并保持对介质的控制,由PC开始一个称为CFP(无竞争期)的工作期,在此期间由PCF控制。之所以把这个期间称作无竞争期的原因是介质的访问由PC控制,而DCF在此期间是禁止对介质的访问控制的。CFP将与由DCF控制帧传送的CP(竞争期)交替出现,如图59所示。每个CFP以一个包含DTIM的信标帧开始,CFP以定义的重复速率出现并且与信标帧间隔同步。

PC以无竞争期重复速率(CFPRate)产生CFP,而CFPRate被定义为一些DTIM间隔。PC通过在CF参数集中设置CFPRate参数来决定CFPRate的值。这些以DTIM间隔为单位的CFPRate值通过信标帧的无竞争域通知该BSS中的其它STA。该值只出现在PC产生的信标帧和探测响应帧中。


CFP的长度由PC决定,其最大值由PC设定的CFP-MaxDuration参数的值决定。无论是CFP的最大长度还是CFP的实际长度都不会限制为整数倍的信标间间隔。当CFP的长度大于一个信标间隙时,PC将在CFP间在合适的时间传送信标帧。在CFP的开始或者中间PC发送的信标帧包含一个非0值的CFPDurRemaining域,该域的值标明了从传送信标帧到CFP结束的时间,而在CPPC传送的信标帧的CFPDurRemaining域的值为0。在图60中的示例表示了这几个参数间的关系,该例中CFP的长度为2DTIM间隔,而每个DTIM间隔为3个信标帧间隙,最大的CFP长度大概为2.5个信标帧间隔。


 PC根据现有的通信情况和论询列表的大小可以在aCFPMaxDuration结束时或者之前结束CFP。因为CFP的开始是由PC通过基本的DCF程序获得对介质的控制的,所以可能由于介质忙使信标帧传送的延迟可能导致CFP长度的变小。在由于DCF通信而导致介质忙的情况下,信标帧应延迟足够的时间以便能够完成当前DCF帧的交换。当信标帧的传输延迟时,在CFP开始时的CFPDurRemaining值应为使CFP结束不晚于TBTT(传送信标帧的时刻)aCFPMaxDuration的时间值。如图61所示。

6.3.2 PCF访问程序

无竞争传送协议是基于受控于PC的轮询机制的。PCCFP开始时获得对介质的控制并且试图用比DCF传输时短的PIFS控制整个CFP。在该BSS中非PCSTACFP开始时将其NAV设为CFPMaxDuration值,这样可以防止由该BSS中的STA(无论是否支持被轮询)大量的非轮询帧的传送。在CFP期间,为了避免单独应答帧产生的额外通信负担,其应答信息可以通过以下帧完成:Data+CF-ACK, CF-ACK, Data+CF-ACK+CF-Poll (该帧只能被PC产生和发送),或者CF-ACK+CF-Poll (该帧只能被PC产生和发送)。在CFP期间不支持被轮询的STA或者从不被轮询的STA的应答使用DCF的应答程序。

6.3.2.1基本访问

在每个正常CFP的开始前,PC将检测介质。如果PC检测出信道空闲时间达到了PIFS时间段,则PC将传送一个包含DTIM元素和CF参数设置元素的信标帧。

在发出初始化CFP的信标帧之后,PC将至少等待一个SIFS间隙,然后传送如下之一的帧:一个数据帧(data frame),一个轮询帧(CF-Poll frame),一个带有轮询信息的数据帧(Data+CF-Poll frame)或者一个结束CFP的控制帧(CF-End frame)。如果在PC处没有轮询和缓冲的通信,则PC将在初始化CFP的信标帧后立即发送CF-End帧。

STAPC处接收到无错的帧后,希望在SIFS后响应。如果目的STA不支持被轮询,则对无错数据帧的响应总是为一个单独的ACK帧。

6.3.2.2 CFP间的NAV处理

CFP间处理NAV的机制是用于方便重叠CFP的操作。如何协调不同基础服务集间的CFP的机制不在本标准之内。

PCSTA在每个开始CFP的发送信标帧的时刻(TBTT)设置其NAVCFPMaxDuration(该值从该PC发出的信标帧中的CF参数获得)值。每个非PCSTA根据无错的信标帧中的CFPDurRemaining值更新自己的NAV,其中这里的信标帧包括其它重叠基本服务集的信标帧。

这样处理可以防止STACFP间控制介质,特别是在CFP跨越多个介质占有间隙,比如FHdwell间隙。这样对NAV的处理也可以减小在CFP间隐藏的STA在检测到介质空闲时间达到DIFS后发送帧的可能性。

当某个STA加入到有PC控制的基本服务集中时,该STA会在发起任何帧传输之前用信标帧或者探测响应帧的CFPDurRemaining值帧更新自己的NAV

PC在每个CFP的结束时发送CF-END或者CF-End+ACK帧,任何一个基本服务集中的STA接收到该帧后会重置其NAV

6.3.3 PCF传送程序

PCF下传送的帧主要包括来自AP/PC和发给AP/PC的帧。在CFP间,这些帧的传送顺序和STA被允许发送帧到PC的时间由PC控制。在图62中描述了一个典型的CFP中的帧的传送。


6.3.3.1PCF下的STA是发送者或者接收者时的PCF传送程序

PC在开始CFP的信标帧和结束CFPCF-END帧间使用SIFS传送帧,而当PC希望其它的STA传送帧但PCSIFS结束后没有收到所希望的帧时,则PC将在上一次传送后的PIFS后发送下一个要发的帧。这样就允许PC在重叠BSS的情况下保持对介质的控制。PC可以传送以下任何一个帧到支持被轮询的STA

    数据帧(Data),当PC没有帧需要应答并且该帧的接收者不被轮询时PC将发送这种帧。

    带有应答信息的数据帧(Data+CF-ACK),当PC开始这次传送前收到了一个来自支持被轮询的STA的需要应答的帧,并且PC将要发送的帧的接收者不被轮询时使用这种帧。

    带有轮询信息的数据帧(Data+CF-Poll),当该帧的接收者将是此CFP间的下一个发送者并且PC没有帧需要应答时使用这种帧。

    同时带有应答信息和轮询信息的数据帧(Data+CF-ACK+CF-Poll),当该帧的接收者是此CFP中的下一个发送者,并且PC收到了一个来自支持被轮询的STA的需要应答的帧时PC会使用这种帧。

    轮询帧(CF-Poll),当PC没有数据发送给该帧的接收者,但是该帧的接收者又是下一个发送者,并且PC没有帧需要应答时使用这种帧。

    带有轮询信息的应答帧(CF-ACK+CF-Poll),当PC没有数据发给该帧的接收者,但该帧的接收者又是下一个发送者,并且PC接收到了一个来自支持被轮询的STA的需要应答的帧时发送这种帧。

    无竞争应答帧(CF-ACK),当PC没有数据帧发给该帧的接收者,或者不轮询该帧的接收者,并且在SIFS前收到了来自支持被轮询的STA的需要应答的帧,而且PC的下一次传送一定是一个管理帧时使用这种帧。

    任何适合于AP发送的管理帧。

PCCFP期间可以向不支持被轮询并且处于非节能状态的STA发送数据和管理帧,这些STASIFS后用DCF的应答程序返回应答帧。PCCFP间可以发送广播或多播帧,因为在初始化CFP的信标帧中包含DTIM域,如果有关联的处于节能状态的STA,缓冲广播或多播帧的将在包含DTIM0的信标帧后被发送。

支持被轮询的STA在接收到任何包含轮询信息的数据帧后的SIFS后将传送一个作为轮询信息响应帧的数据帧。支持被轮询的STA在作为响应轮询帧的传送时忽略而不是重置它们的NAV

不支持被轮询的STACFP间接收到定向帧后应该返回一个应答帧,也不会重置它们的NAV

对于需要MAC层应答的帧,支持被轮询的STA接收到带有轮询信息的任何帧后用Data+CF-ACK来作为应答帧来响应轮询信息。比如在图62中,U1包含前一个D1的应答信息,D2包含前一个U1的应答信息。PC可以使用CF-ACK子类型来响应一个接收到的帧,即使是随同CF-ACK发送的数据帧的目的STA不是应答的目的STA。希望收到应答的支持被轮询的STA在发送帧给PC后的SIFS后解释来自PC的帧,以查看应答信息是否被正确给出。如果不支持被轮询的STA收到需要MAC层应答的帧之后,该STA不会解释CF-Poll通知,并且在SIFS后发送一个单独的应答控制帧来确认收到的帧。

PCF中传送的帧的长度是可变的,它仅受适用于基本服务集的帧或段的长度限制。如果支持被轮询的STA收到由PC发出的CF-Poll或者其它类型帧后的SIFS没有响应,或者不支持被轮询的STA在收到由PC发出的需要应答的帧后没有返回应答帧,则PC会重新开始控制信道,并且在PC的上一次传送之后的PIFS后传送下一帧。

支持被轮询的STA应该总是响应到自己的CF-Poll,当STA被轮询后没有帧发时,其响应为空帧,如果STA被轮询时没有帧要发,但是要确认CF-Poll,其响应为CF-ACK(没有数据)。空响应用于区分无通信和重叠PC的冲突。

当从开始CFP的信标帧到CFPDurRemaining变为0或者PC无帧可发也没有STA轮询,则CFP将结束。任何一种情况CFP的结束都为PC发送的CF-END(无竞争结束帧)标志。如果PC在结束CFP时需要对某个STA应答,则发送CF-End+ACK(带有应答信息的无竞争结束帧)。所有的STA接收到CF-ENDCF-END+ACK将重置其NAV以便它们可以在CP间传送数据。

6.3.3.2重叠的中心网控BSS的处理

因为PCF工作时没有CSMA/CA的竞争窗口和DCF退避程序,所以当多个重叠的中心网控BSS工作在同一个PHY信道时,在相同的CFP速率和信标间隙情况下很容易发生重复的冲突。

为了减小由于CF冲突而引发的重要帧的丢失可能性,当PC发送一个开始CFP信标的时由于介质忙而延迟时应该使用一个DIFS加一个随机的退避延迟(CW1aCWin)来开始一个CFPPCCFP间在重传一个未应答的帧之前可以使用退避程序。

为了进一步减小PC间的冲突,PC要求在CFP间每个aMediumOccupancyLimit TU结束后只有介质闲的时间为DIFS加一随机数个时隙(值为1aCWin)后才可认为介质闲。这就导致了介质的控制权丢失给重叠的BSS或隐藏的STA,因为在BSS中的STA由于NAV的控制而不能发送数据。在FHaMediumOccupancyLimit TU等于dwell时间,其它的PHYaMediumOccupancyLimit TU等于CFPMaxDuration(适用于跳频系统)

6.3.3.3 CFPMaxDuration (CFP最长时间)限制

CFPMaxDuration的值应该被限定在一个范围内以便竞争期(CP)和无竞争期(CFP)能共存。

CFPMaxDuration最小值为两个MaxMPDUTime加上传送信标帧和CF-END帧所需的时间。这就允许AP传送一个数据帧到某个STA同时轮询该STA,该STA响应一个数据帧。

CFPMaxDuration的最大值为BeaconPeriod ´ DTIMPeriod ´ CFPRate- [MaxMPDUTime + (2 ´ aSIFSTime)+ (2 ´ aSlotTime) + (8 ´ ACKSize)]的以微秒为单位的时间长度,其中MaxMPDUTime的值是传送被WEP扩展了的最大长度的MAC帧所需时间,加传送PHY的导言,头,尾以及扩展位的时间的和。这就有足够的时间在CP间传送至少一个数据帧。

6.3.3.4无竞争应用规则

PC可以发送广播或多播帧、直接数据帧和管理帧到任何处于活动状态的STA,也可以发送这些帧到支持被轮询但处于节能模式的STA。在CFP间,支持被轮询的STA在接收到Data+CF-Poll或者Data+CF-ACK+CF-Poll帧后的SIFS后用Data+CF-AckCF-Ack (no data)帧以响应,在接收到CF-Poll(no data)后的SIFS后用简单数据帧或者空数据帧以响应,而收到其它任何数据和管理帧后用ACK控制帧应答。不支持被轮询的STA在接收到数据帧和管理帧后的SIFS后用单独的应答控制帧以确认。这些不支持被轮询的STA的行为与在DCFSTA的行为一样。

当支持被轮询的STA接收到由PC发出的轮询帧(可能是Data+CF-Poll(带轮询信息的数据帧)、带应答信息和轮询信息的数据帧(Data+CF-ACK+CF-Poll)、轮询帧(CF-Poll)、带应答信息的轮询帧(CF-ACK+CF-Poll))后,它可以发送一个数据帧到任何STA,那些到PC或者通过PC转发的的帧应该被PC在收到帧后的SIFS用无竞争应答(可能是带应答信息的数据帧(Data+CF-ACK)、带应答信息和轮询信息的数据帧(Data+CF-ACK+CF-Poll)、应答帧(CF-ACK)、带轮询信息的应答帧(CF-ACK+CF-Poll)、带应答信息的无竞争结束帧(CF-End+ACK))帧确认,那些到不支持被轮询STA的帧应该被该目的STASIFS后用单独的应答控制帧确认。当被轮询的STA没有数据帧或者应答帧要发时,该STA将在SIFS后以空数据帧予以响应。当被轮询的STACFP结束之前或者当前介质占有时间限制没有足够的时间(对DSSS不适用)发送其MPDU和接收应答帧时,该STA将在SIFS后发送一个Null帧或者CF-ACK以响应。支持被轮询的STA将在响应帧中置More Data位来使得PC能够区分出空的STA发送队列和由于没有足够的时间发送一个MPDU

如果当前CFP没有足够的时间使被轮询的STA发送一个包含最短长度MPDU的数据帧的时间时,PC就不会发送一个含轮询的帧。

6.3.4无竞争轮询列表

如果PC支持使用CFP用于与传送普通帧一样的带内帧传送,PC将保持一个轮询列表用于在CFP间选择那些符合条件的STA被轮询。如果PC使用CFP仅仅支持普通帧的传送,PC就没有必要保留一个轮询列表,也不会产生带轮询信息的数据帧,因为这个时候PC仅仅是提供了AP的功能,没有对介质进行控制。PC是否提供无竞争形式的服务通过在信标帧,或者关联响应帧,或者再关联响应帧,或者探测响应帧的能力信息域给出。在非基础服务集中的STA发送的任何帧的该域都被置为0,因为在基础服务集中不可能提供无竞争服务。

轮询列表用于强制轮询支持被轮询的STA而不管PC是否有信息要发送给该STA。轮询列表用于对PC传给支持被轮询STA的带轮询信息的数据帧(Data+CF-Poll)和带轮询信息和应答信息的数据帧(Data+CF-ACK+CF-Poll)的控制。轮询列表是一个逻辑结构且被隐藏在PC内。本标准定义了维护轮询列表的最小服务集,该服务集应该能够保证在多个BSS中由多个PC控制的任意个STA能协同工作。而其它特殊的维护要求不在本标准中阐述。

6.3.4.1轮询列表的处理

如果轮询列表中有STA,则PC就应该在CFP间至少发送一个轮询帧。在每个CFP期间,PC应该按AID号递增的顺序轮询表中的全部或者部分STA

当所有的CF帧被发送完并且列表中的所有STA都被轮询过时而CFP还有剩余的时间,PC将可能给在列表中的任何STA发送一个或多个轮询帧,同时在这种情况下PC也可以发送数据或管理帧到任何STA

为了在CFP期间获得最大的介质使用效率和能在随后反方向的数据帧中顺带获得ACK,所以当CFP还有时间以让PC在发出轮询帧的情况下有时间应答,PC在传送数据帧的时使用带轮询信息的数据帧(Data+CF-Poll)和带轮询信息和应答信息的数据帧(Data+CF-ACK+CF-Poll)

6.3.4.2轮询列表更新程序

STA在其关联和再关联请求帧的能力信息域(Capability Information)中的CF-Pollable子域表明其是否能支持被轮询。如果STA希望改变PC对其有关轮询的能力的记录,则该STA必须执行再关联程序。在关联期间,支持被轮询的STA可以通过将能力信息域的CF-Poll Request位置为“true”,请求PC将其放入轮询列表中。如果支持被轮询的STA希望不被放在轮询列表中,则在关联时将其CF-Pollable域置“false”而CF-Poll Request域置“true”。从不被轮询对通常处于PS模式的支持被轮询的STA非常有用,这样可以允许它们在CFP间接收缓冲信息(因为它们必须在CFP的开始处于苏醒状态接收DTIM),而不需要它们没有信息要发也得处于苏醒状态来接受轮询。

如果某个支持被轮询的STA没有在列表中,而且在它最近的关联中也没有请求被轮询,则它可能被PC动态的置于列表中来处理由它引发的大量帧传送活动。

6.4分段

MAC可能对直接MSDU或者MMPDU分段和重组分段。这种分段和重组分段的机制允许段的重传。

对于所有MPDU分段其长度应该是相同的字节数,除非该分段是最后一个分段,它的长度可能会短一些。MPDU分段的长度应该是偶数个字节,但如果该分段是最后一个分段,则该MPDU分段可以是奇数个字节。所有分段的长度不应该超过属性值aFragmentationThreshold,但如果该分段被WEP处理,则该分段的MPDU被增加了IVICV,这就导致该分段的长度大于aFragmentationThreshold

当数据被传送时,分段的字节数(在被WEP处理前)将由属性值aFragmentationThreshold和刚构建的分段分配的MPDU字节数决定。一旦某个分段被传送了一次,它的帧体内容和长度将在该分段未被成功传送前保持不变。STA应该能够接收任意长度的分段。

如果某个STA的某个分段需要重传,则在该分段隶属的MSDU或者MMPDU的生存周期内此分段的帧体内容和长度保持不变。每个分段将包含一个序列控制域,它由帧序列号和段序列号组成。当某个STA传送一个MSDU或者MMPDU时,则对于MSDU或者MMPDU的所有分段的帧序列号保持不变。每个分段将按其段序列号从低到高的顺序被发送,第一分段的段序列号的值为0,以后每超过传送一个分段后段序列号增1。帧控制域的More Fragments位被置为01来标明该分段是否是该MSDU或者MMPDU的最后一个分段。

STA将为正在发送的MSDU维持一个传送定时器,属性值aMaxTransmitMSDULifetime标明的是一个MSDU允许传送的最长时间。定时器从开始传送该MSDU的第一个分段时开始计时,如果定时器超过了属性值aMaxTransmitMSDULifetime,则该MSDU的余下的所有分段将被源STA丢弃并且不再试图完整的传送该MSDU

6.5 组段

每个分段中包含以下信息以便完整的MSDU或者MMPDU能够由它的组成部分重组。每个分段的头包含以下信息,这些信息被目的STA用来重组MSDU或者MMPDU

    帧类型

    从地址2获取的发送者的地址

    目的STA地址

    序列号控制域:该域允许目的STA检查接收到的分段是否属于同一个MSDU或者MMPDU,以及这些分段在MSDU或者MMPDU中的顺序。对于每个MSDU或者MMPDU的所有分段的其帧序列号是相同的,而每个段的段序列号是按递增顺序产生的。

    更多段指示标志:该位告诉目的STA该分段是否是这个MSDU或者MMPDU的最后一个分段。只有当该分段是此MSDU或者MMPDU的最后一个分段或者是唯一一个分段时该位才被置为0,而其它分段则被置为1

目的STA将按段序列号顺序重组MSDU或者MMPDU。如果这些分段被WEP处理,则该分段在被用于重组MSDU或者MMPDU前将被解密。如果没有收到More Fragments位被置0的分段,目的STA就知道该MSDU或者MMPDU还没有被完整传送。一旦目的STA收到了More Fragments置为0的分段,则该STA就知道该MSDUMMPDU没有其它分段需要接收。

所有STA都应支持并发接收至少3MSDU或者MMPDU。但值得注意的是当STA并发接收多于3个被分段的MSDU或者MMPDU时会增加帧的丢失率。

目的STA将为每个MSDU或者MMPDU维持一个接收定时器,所有STA都应支持并发接收至少3MSDU或者MMPDU,所以每个STA必须支持至少有3个接收定时器。当然STA还可以增加额外的接收定时器以支持并发接收更多的MSDU或者MMPDU。目的STA将丢弃没有接收定时器的MSDU或者MMPDU的所有分段。属性值aMaxReceiveLifetime规定了允许接收一个MSDU的最长时间。MSDU或者MMPDU的接收定时器从开始接收到该MSDU或者MMPDU的第一个分段开始计时。如果接收定时器超过了属性值aMaxReceiveLifetime,则目的STA将丢弃该MSDU或者MMPDU的所有分段。当某个MSDU或者MMPDU的接收定时器超过了aMaxReceiveLifetime后仍然收到了该MSDU或者MMPDU的分段,则目的STA将丢弃该分段同时对该分段进行应答。

为了正确重组一个MSDU或者MMPDU,目的STA将丢弃重复接收到的分段。STA将按9.2.9中所述丢弃重复帧,但是仍然要对重复的分段进行应答。

6.6多速率支持

一些物理层有多速率数据传送的能力,这也就为提高性能而允许动态的速率切换,但如何实现这种速率切换的算法不在本标准中规定,但为了保证多速率物理层的协同存在,本标准仍然定义了需要所有STA都需要遵守的一些规则。

为了使基本服务集中的所有STA都能接收控制帧,所有的控制帧都应该以该基本服务集设定的基本速率集中的某个速率传送。

对于广播或多播帧而言,无论其类型和子类型如何,它们都应该以该基本服务集设定的基本速率集中的某个速率传送。

单播数据帧或管理帧可以在STA所支持的任意速率上传送。源STASTA不会以目的STA不支持的速率传送帧,而这些所支持速率的信息是通过管理帧中的支持速率单元给出的。对于带应答信息的数据帧(Data+CF-ACK)、带应答信息和轮询信息的数据帧(Data+CF-Poll+CF-ACK)和带应答信息的轮询帧(CF-Poll+ CF-ACK)帧的传送速率一定要能被此帧的目的STA和应答接收STA同时支持。

为了能使传送STA能计算出时间长度域的值,响应STA应该以小于或等于前一帧速率的最高的基本速率传送响应帧(CTSACK)。另外,所有的控制响应帧的物理层选项应与收到帧的物理层选项相同。

对于高速/直接序列扩频(HR/DSSS)物理层而言,用于标明帧传送时间的时间长度域的值由PLME-TXTIME.request PLME-TXTIME.confirm原语决定。

6.7 Frame exchange sequences帧交换序列

The allowable frame exchange sequences are summarized in Table 21 and Table 22.


在表21和表22中汇总了所有允许的帧交换序列。

6.8 MSDU传送限制

为了避免对等LLC重组MSDU和不必要的丢弃MSDU,以下限制用于并发处理多个要发的MSDU。将要发送的指的是一个MSDU或者MMPDU将在某一时刻应该发送。STA可以在以下限制下有任意个将要并发发送的MSDU

STA应该保证在某一时刻不能超过一个MSDU或者MMPDU从源STA发到目的STA。更为严格的限制是在某一时刻不能超过一个MSDU或者MMPDU处于将要发送状态。

如果STA实现了严格顺序服务选项,则该STA应保证没有组地址的严格顺序的MSDU。因为组地址的MSDU表明一些对等STA,而这些对等STA可以是不实现严格顺序服务的。

建议STA应该选择一个属性值aMaxMSDUTransmitLifetime,该值应该保证在正常的处理下超过了MSDU的传送时间值而不丢弃该MSDU