当前位置:文档之家› WIFI基本数据传输机制理解要点.doc

WIFI基本数据传输机制理解要点.doc

WIFI基本数据传输机制理解要点.doc
WIFI基本数据传输机制理解要点.doc

802.11基本数据传输机制理解

1. 80

2.11网络基本概念

1.1 80

2.11网络元素

Station (STA):

具有802.11无线网卡的设备,包括手机、笔记本电脑等。

Access Point (AP):

实现无线网络与固定网络连接功能的设备,通常也称作“热点”,它主要完成STA与STA之间数据的转发、STA与骨干网之间数据的转发以及必要的管理工作。

本文中将AP和STA通称为Node(节点)。

Wireless Medium (WM):

STA之间以及STA与AP之间传递数据的通道,即无线链路。

无线链路一词相对直观和容易理解,本文中的用无线链路只带WM。

Distribution System (DS):

8023.11中的一个逻辑概念,通常包括两部分:骨干网以及AP的帧分发机制。这里的骨干网指的是连接各AP的固网,通常可以理解为以太网;AP的帧分发机制则完成骨干网与STA、以及STA与STA之间的数据帧转发工作。

1.2 80

2.11组网方式

Independent Basic Service Set (IBSS)

—IBSS中只有STA和WM,没有AP和DS

—IBSS内的通信只能发生在STA直接通信距离内

—IBSS内STA间的通信都是点到点直接通信,没有转发

图1 IBSS网络结构

Infrastructure Basic Service Set (BSS)

—BSS内有STA、AP和WM,但没有DS

—BSS的范围由AP的覆盖范围决定

—BSS内的各STA的通信均由AP中转,不能直接通信

—BSS内STA在通信前必须先与AP进行关联(associate),建立STA-AP的对应绑定关系—STA总是关联的发起方,AP是响应方并决定是否允许STA的加入

—一个STA同一时刻最多只能与一个AP进行关联

—AP的存在使得各STA可以以省电(power-saving: PS) 模式工作

图2 BSS网络结构

Extended Service Set (ESS)

—多个BSS串在一起组成一个ESS,同一ESS内的所有AP使用同一个SSID (Service Set Identifier)

—一个ESS内的各BSS由DS连接起来

图3 ESS网络结构

2. 802.11数据传输的基本问题及解决方案

2.1 数据传输的可靠性

将数据准确无误地送达目的地是任何通信技术的基本要求。802.11中引入多种机制来保证数据传输的可靠性。

2.1.1 ACK机制

接收方成功接收到一个帧后,向发送方回复一个Ack帧进行确认。这里的成功接收意味着MAC帧已经收到且FCS校验结果正确。

图4 引入ACK后的帧交互机制

一般情况下有两种帧要求Ack帧的确认:

?单播帧:单播帧的接收者必须向发送者回复Ack进行确认

?ToDS域为1的多播/广播帧:ToDS为1意味着这个报文需要由AP转发到DS里去,

AP向发送方确认报文已收到并会被转到DS里去。此时其他STA不回复。

多播/广播帧不要求、也不能要求收到该帧的每个节点都ACK回复,因为这样既无必要,AP也无法处理。

发送方收不到Ack帧的可能情况有:

?接收方未接收到帧,所以没有回复Ack

?接收方收帧过程出错,或是对帧的FCS校验失败,没有回复Ack

?接收方成功收到帧,但发送方没有成功收到Ack帧

不管是那种情况,发送方都会认为发送失败并启动重传。

2.1.2 重传机制

802.11中提供一个门限值RTSThreshold,长于或等于该门限值的帧被认为是长帧,而短于该门限值的帧被认为是短帧。

系统为每一个即将传输的帧(impending frame)都相应地配备有一个重发计数器(Retry Counter),长帧则为LRC(Long RC),短帧则为SRC(Short RC)。每重传一次,相应的RC 就加1。系统中对帧的重传次数是有限制的。如果重传次数达到上限但传输依然没有成功,该帧将被丢弃。

此外系统对每一帧的有效时间也是有限制的,也就是说每一帧都应该在一定时间内被成功发出,否则该帧就失效了,系统会将其丢弃。

综上所述,帧的重传不会无限制的重复下去,当发生下述情况之一时,重传终止:

?得到了接收方的Ack,发送成功;

?重传次数达到上限但仍未收到接收方的Ack,发送失败,弃帧;

?当前帧已经过了有效时期但仍未收到接收方的Ack,发送失败,弃帧。

重传意味着对帧的缓冲,意味着对系统内存及其他资源的占用。而帧越长,对系统内存的占用就越多。因此按帧的的长短进行分类,降低长帧的重传上限,有利于提高系统资源的

利用效率。

鉴于发送方没收到Ack的可能原因,重传有可能导致接收方收到重复帧,因此接收方需要相应的重复帧过滤机制。

2.1.3 重复帧过滤机制

802.11网络中的每一个节点,包括STA和AP,都会根据所收到的帧来缓存并更新<对端地址,帧序号,分片序号>组合,对于每一个对端地址,只需要保存最近收到的帧的<地址,帧序号,分片序号>组合。

收帧过程中,如果接收端发现当前帧是一个重传帧(帧中的RetryBit为1),则根据当前帧的发送者地址找到缓存中对应的<对段地址,帧序号,分片序号>。如果当前帧的帧序号小于或等于组合中的帧序号,或者帧序号相同但是分片序号小于或等于组合中的帧序号,接收方会将该帧认为是重复帧而将其丢弃。

如果当前帧中的RetryBit为0,接收端将不会启动重复帧过滤机制。

对重复帧,接收方依然回复ACK帧,以免发送方不断重传。

2.1.4 分片机制

根据帧格式的定义,802.11帧中负载的最大长度为23424字节。对于更长的数据,则需要将其分片成多个帧组成分片序列来完成传输。

802.11的分片序列中,除了最后一片,所有分片大小都应一样,且应该是偶数个字节。整个分片序列共享一个帧序号,帧序号表示各分片在整个序列中的位置。除了最后一片外,所有分片中的MoreFrag域都应设为0以告知接收者还有后续分片。根据帧格式的定义,分片号由4比特的二进制序列表示,说明一帧数据最多只能有16个分片。

接收方先将所收到的分片缓存,收齐所有分片后按照分片号的先后顺序重新组装。如果未能收齐所有分片或者重组失败,接收方将直接丢弃整个分片序列。

在正常情况下,接收者应对每一个收到的分片立即回复ACK,收到ACK后发送方继续发送下一个分片。如果某个分片没有被ACK,发送方将对该分片启动重传机制。显然,任何一个分片的发送失败都会导致整个序列的发送失败。

对大的数据包进行分片处理,可以提高传输的可靠性。

2.2 隐藏节点(hidden node)问题

考虑下图所示的情况:node1和node3都在node2的收发区域内,但node1不在node3的收发区域,因此对于node3相对于node1而言是一个“隐藏节点”。同样,node3也是node1的“隐藏节点”。如果不加任何约束的话,node1和node3很有可能同时向node2发送数据,而node2无法区分并成功接收,因而发生冲突。

图5 隐藏节点问题

802.11中RTS/CTS机制可以很好的解决这个问题。

2.2.1 RTS/CTS机制

引入RTS/CTS机制后,节点之间的数据发送过程如下图所示:

图6 引入RTS/CTS机制后的帧交互

当Node1要向Node2发送数据时,先发送一个RTS (Request To Send) 帧,如果Node2可以接收,则回应一个CTS (CTS) 帧。收到CTS帧后,Node1就可以放心地将数据帧发出并等候Node2的ACK。

RTS帧一方面发出了一个对node2信道资源的预留请求,另一方面,收到该RTS帧的其他node将“沉默”,在RTS帧Duration域中所要求的时间内不发送数据,以确保node1能成功发送完数据并收到ACK帧。同样地,CTS帧一方面响应了node1的预留请求,另一方面,收到该CTS帧的其他node (如Node3) 也将“沉默”,在CTS帧Duration域中要求的时间内不发数据,确保Node2能成功接收完数据帧并回复ACK。

RTS/CTS帧大大降低了数据冲突发生地可能性,不过由于RTS/CTS交互增加了额外的数据交互量,对于一些小数据帧的交互来说,这部分额外的数据量明显降低了链路的有效利用率。因此802.11系统中提供了一个门限值RTSThreshold,大于该门限值的数据帧的交互才使用RTS/CTS机制。而且该门限值也是可以改变的,如果该门限值设为0,那么就意味

着所有的数据帧交互都会采用RTS/CTS机制,而如果该门限值大于802.11帧的最大值,那么就意味着所有的数据帧交互都不采用RTS/CTS机制而是直接发送。

RTS/CTS机制对于单帧的数据交互可以起到很好的保护作用,但何时可以发送RTS帧?当前帧发送完毕之后,其它节点又该如何发起下一次数据交互并且没有数据冲突?简单的RTS/CTS机制并不能解决这个问题。

Hidden Node的问题其实链路/信道复用问题的一种体现。我们需要一种全面的机制来实现对无线链路的互斥访问和公平分配。802.11中该机制是通过协调函数(CF:Coordination Function)来实现的。802.11支持三种协调函数:DCF(Distributed CF)、PCF(Point CF)和HCF(Hybrid CF)。其中DCF是其他两种协调函数的基础,是802.11中最基本的无线链路管理和控制机制。

3. DCF

DCF采用CSMA/CA机制来监测无线链路的忙闲状态,采用随机退避时间(random backoff time)来完成对空闲链路的争夺和分配。

3.1 IFS(InterFrame Spacing)

802.11中的帧间距不仅仅是连续发送的各帧之间用于彼此区分的间隔,还是对不同类型数据帧提供不同服务优先级的重要组成部分,是DCF机制重要的一部分。

802.11中定义了五种帧间距:SIFS(Short IFS)、PIFS(PCF IFS)、DIFS(Data IFS)、EIFS (Extended IFS)和AIFS(Arbitration IFS),其中PIFS和AIFS不在DCF中使用,此处先不讨论。

802.11中的IFS是以时间为单位来表示的,SIFS、DIFS和EIFS的具体值会因PHY层定义的不同而不同,但相对于具体一种PHY而言,它们的值都是固定的。

SIFS时间最短,它只应用在以下几种数据帧之前:

?ACK帧

?回复RTS的CTS帧

?一个分片序列中的各分片

DIFS较SIFS更长,是节点开始竞争之前链路必须连续空闲的最短时间。在最近一次的数据包接收无误的情况下,当节点检测到介质的连续空闲时间达到DIFS时,才能启动退避算法。

如果最近一次的数据包接收发生了错误,节点只能在检测到截止连续空闲时间达到EIFS后才能启动退避算法。EIFS较DIFS要长。

3.2 冲突检测机制

冲突检测机制用于监测无线链路的忙闲状况。理论上,冲突检测机制既可以在物理层实现,也可以在MAC层实现。然而由于天线的半双工特性,物理层冲突检测机制实现难度大且成本高昂。因此一般都采用MAC层提供的虚拟冲突机制(Virtual CS)。

虚拟冲突机制引入NA V(Network Allocation V ector),并通过对NA V的更新与检测来确认链路的忙闲状况。NA V可以看作是一个时钟,它记录的其实是链路上当前的数据交互还要持续的时间。NA V不为0就意味着当前链路上有数据交互在发生。802.11的MAC帧头

中有一个2字节的Duration/ID域,绝大多数的帧(除了用于PCF中的PS-Poll帧外)都在该域中设置当前的数据交互的持续时间。收到MAC帧的各节点根据帧中的Duration域以一定规则更新本节点的NA V值,从而保证当前数据交互的顺利完成。

采用DCF的STA/AP在发送数据帧时,通常会采用RTS/CTS来通知后续数据交互的发生。其他节点根据RTS/CTS帧中的Duration值来更新自己的NA V值。因此,NAV机制其实是通过“预订”链路来保证当前数据交互不被干扰。

3.2.1 NA V的更新

在讨论NA V的更新之前,我们有必要弄清楚一个问题:每个节点上应维护多少个NA V?是应该为网络中其它每一个节点维护一个对应的NA V,还是只需要维护一个NA V?

观察下图所示的情况:四个节点都处在各自的收发范围内,且Node1和Node2正在进行数据通信,而Node3有数据要发往Node4。如果Node3为网络中的其他每一个节点都维护一个对应的NA V,则此时NA V1和NA V2应该显示链路忙,而NA V4应该显示链路空闲,因此给Node4的数据可以直接发送。

图7 每个节点维护一个NAV

这种方式显然不可行。无线传输本质上是广播的,某个节点发出信号/数据可以被其接收范围内的所有其他节点接收到。此时如果允许Node3发送数据,一方面Node3发出的数据对Node1和Node2之间的通信产生干扰(参见Hidden Node问题),另一方面Node1和Node2之间的数据交互对Node4的接收也产生干扰,最后的结果是大家都无法正常通信。

因此每个节点上应该也只能维护一个NA V。这样,当Node1和Node2在通信时,Node3和Node4上的NA V都显示链路正忙,此时它们将所要发送的数据缓存,等到链路空闲的时候再发送。这样才能避免干扰和链路冲突。

当收到一帧数据时,各节点需要根据的帧中的Duration值来更新其NA V,规则如下

?如果数据帧的发送者就是节点本身,则不更新NA V。

?如果数据帧的发送者不是节点本身,则比较Duration域值和当前NA V值。如果当

前NA V值更小,则将NA V值更新为Duration域值

?如果该节点是根据RTS帧中的Duration域值来更新自己的NA V值,那么它会要求

在一定的时间内收到相应的CTS帧或是RTS帧发送端发出的下一帧。否则,它会

将自己的NA V值复位为0。

当某节点收到目的地不是本节点的RTS帧时,它肯定在RTS帧的接收范围之内,但它有可能在CTS发送端的接收范围之外。RTS帧承载着对链路的“预订”请求,只有收到了对端的CTS帧,请求才算得到允许。而收到CTS帧后,RTS发送端会以最快的速度开始发

送数据。所以收到RTS帧的其他节点会在一定的时间要么里收到CTS帧,要么收到后续数据帧,否则就有理由相信本次链路“预订”失败,因而将NA V值归0。

3.2.2 NA V更新举例

3.2.2.1 RTS/CTS/DATA/ACK交互过程中的NA V设置

图8 RTS/CTS/DATA/ACK交互中NAV的设置

?Source端抢占到空闲链路,以一个RTS帧向Destination端发起通信请求并将帧中

Duration域值设定为本次交互所需的时间。

?收到RTS后,Destination端在SIFS后回复CTS帧确认可以接收数据。其它节点根

据RTS帧中的Duration值将NA V更新为:

NAV = 3*SIFS + aCTSTime + aDataTime + aAckTime

这包括了本次数据交互还需要的时间。

?Destination端收到RTS帧,在间隔SIFS后,回复一个CTS帧。

?Source端收到CTS帧,在间隔SIFS后开始发送数据。其他节点根据CTS帧中的

Duration值将NA V值更新为:

NAV = 2*SIFS + aDataTime + aAckTime

?Destination端成功收到数据,在SIFS后回送ACK。整个交互过程中,其他节点上

的NA V值设定显示链路忙。

?不管Source端是否接收到ACK,本次数据交互到此结束。链路空闲DIFS后,各

节点又开始对链路的竞争。

这个过程中有可能出现CTS帧已经发出,但只有Source端没有收到的情况,如下图:

图9 CTS帧丢失

此时其他节点依然按照CTS帧的要求更新了NA V,但Source端由于没有收到CTS帧而不发送数据,这就造成了链路资源的浪费。这是最坏的情况。此时Source端在等待一定时间后可能会比其他节点更早启对对链路的竞争。

3.2.2.2 分片序列发送过程中的NA V设置

图10分片序列发送过程中NAV的设置

这和单一帧的发送的区别在于,每一个分片中的Duration域都指明了下一个分片的传输所需的时间,且后续分片在上一个ACK后的SIFS后立即发送,如果每一分片都发送无误,这个过程一直会持续到所有分片发送完毕。

这个过程中也有可能发生某分片的ACK没有被Source端收到的情况,如下图所示:

图11 分片的ACK帧丢失

此时其它节点中的NA V因分片/ACK中的Duration值更新而显示链路忙。Source端在等待ACK超时后,有可能抢先启动对空闲链路的竞争。

3.3 退避算法

802.11采用退避算法解决空闲链路在各节点之间的分配问题。

当链路空闲时间超过DIFS/EIFS之后,各节点并不马上发起数据传输,而是启动一个退避(backoff)时钟,进入竞争窗口(Contention Window)。在backoff时钟超时之前,节点不进行任何的数据发送,同时监测链路的忙闲状况。

当下列情况之一发生时,竞争窗口关闭:

backoff时钟超时

?backoff时钟未超时,但检测到链路忙(即检测到链路上开始了数据交互,比如收

到RTS帧或是不采用RTS/CTS机制而直接开始发送的数据帧)。

如果backoff时钟未超时之前检测到链路忙,此时节点会暂停backoff时钟的运行(也称作backoff时钟的挂起),设置自己的NA V值并启动NA V时钟,此时节点进入延时等待(defer)阶段。在defer期内,系统会根据3.2.1中的规则对NA V值进行的更新。当NA V 超时时,系统认为链路空闲。当链路连续空闲时间达到DIFS/EIFS时,系统重新继续(resume)backoff时钟的运行并同时监测链路的忙闲状况。

backoff时钟超时意味着当前节点获得了链路的控制权,此时它可以立即开始数据的传输(对长帧要采用RTS/CTS机制,短帧则直接发送)。而其他节点会根据该节点发送的帧暂停自己backoff时钟的运行并对NA V值进行相应地设置和更新。

很显然,各节点上的backoff时长必须不同,它是下述方式产生的一个随机值:

BackoffTime = Random() * aSlotTime

其中,aSlotTime是802.11物理层定义的一个常量,不同的物理层中该常量的具体定值不一样。Random()则是在[0, CW]之间产生的一个随机的整数。

3.3.1 CW的取值

CW在[CWmin, CWmax]区域内按照一定规律变化。CWmin和CWmax是802.11系统中定义的两个常量,分别表示CW值得下限和上限。CW的值总是2的N次方减1,N的值与节点中帧的重传次数有关系。

在2.1.2 重传机制一节中我们提到系统为每一个即将传输的帧(impending frame)都相应地配备有一个重发计数器(Retry Counter),长帧则为LRC(Long RC),短帧则为SRC(Short RC)。除此之外,系统还维护着两个独立的重传计数器,分别是SSRC(STA Short Retry Counter)和SLRC(STA Long Retry Counter),它们分别记录着系统中当前短帧和长帧总的连续重传次数。

SSRC和SRC的区别在于,后者对应于某一短帧,而前者对应于系统中所有短帧。SSRC 和SRC有可能是一样的,也有可能是不一样的。每一次短帧的重传都会引起SRC和SSRC 的递增。当SRC的值达到上限时,其对应的帧被丢弃,该SRC也将丢弃。此时系统启动下一帧的发送,同时启动新的SRC并将SRC的值置为0,而SSRC的值则不会清0,而且会伴随着新帧的重传而继续递增。

当以下情况之一发生时,SSRC会被清0:

?收到以本节点为目的地址的CTS帧

?收到对短帧进行确认的ACK帧

?发送组播/广播报文成功

SLRC和LRC之间也有着类似的区别和联系。当一下情况之一发生时,SLRC会被清0:

?收到以本节点为目的地址的CTS帧

?收到对短帧进行确认的ACK帧

?发送组播/广播报文成功

不难看出,只有发帧成功时SSRC和SLRC才会被清0,也就是说SSRC/SLRC分别记录着截至目前短帧和长帧的连续重发次数。

下图给出了CW的取值和SSRC/SLRC之间的关系:

图12 CW值随重传次数增长而增长

?初始时,CW=CWmin

?每一次数据重传,SSRC/SLRC加1,CW的值上一个“台阶”,即N=N+1

?当达到CWmax之后,CW的值不再随重传次数的增加而增加

?当下述情况之一发生时,CW值被复位为CWmin:

—帧发送成功

—SSRC/SLRC达到上限

从CW的取值规则我们不难发现:

?链路状态越差,帧重传的几率越大,CW的值就可能越大,因此backoff时间值就

有可能越长,节点对链路的竞争能力就越差。

?重传帧发送的优先级较低,因为其backoff时钟可能更长

3.3.2 backoff时钟的挂起

前已述及,如果在backoff时钟超时前链路已被其他节点占用,那么竞争窗口关闭,NA V 值被设置,backoff时钟暂停运行(即被挂起)。下一次竞争窗口开启时,backoff时钟继续运行,如此周而复始直至backoff时钟超时。下图举例说明了这种场景:

图13 backoff时钟的挂起

3.4 DCF总结

采用DCF机制的节点有数据要发送时,首先要根据NAV的值判断当前链路的忙闲状态。如果链路忙,当前的发送操作被挂起,系统进入DEFER期。当链路连续空闲时间达到DIFS/EIFS后,节点启动backoff时钟进入对链路的争夺。backoff时钟超时就意味着链路控制权的获得,此时该节点就可以开始数据发送。

所有帧都只能在链路空闲的时候(NA V为0)发送,但ACK帧例外。当某个节点收到一个帧并被要求要立即回复时,不管链路是否空闲,它都会在SIFS之后立即回复ACK。因为不及时回复ACK会导致帧的重传,对系统和整个网络资源造成消耗,而回复ACK虽然可能对其他数据交互造成影响,但在DCF机制下,这种影响相对要小很多。

3.4.1 NA V和Backoff

二者都可以被看成是时间计数器(或简单称之为时钟),不过NA V的值可能随着链路上的数据传输状况而改变,而backoff的值则在backoff时钟重启的时候确定,在下次超时之前不会更改。

3.4.2 帧交互的“元操作”性

元操作在汇编中是一个常见的概念,它表示着一个不能被打断的操作,也就是该操作要么不执行,要么就执行完毕,其结果只有执行成功和失败,不存在中间状态。802.11中通过NA V机制和IFS机制的设定,尽量保证一次帧交互的元操作性。

在3.2.2.1中所示的单帧交互过程中,一方面通过RTS/CTS交互使得所有可能干扰本次帧交互的节点“噤声”,另一方面由于其他节点都必须在链路连续空闲至少DIFS后才启动链路竞争,而CTS、Data和ACK都以SIFS做间隔,保证交互过程中双方一定能“争”到链路。因此保证了帧交互的元操作性。

同样,在3.2.2.2中所示的分片序列发送过程中,一方面RTS/CTS帧以及每个分片中的Duration域值对其他节点NA V的设置使得所有可能干扰本次发送的节点“噤声”,另一方面此过程中的CTS、ACK以及个分片都以SIFS做间隔,保证交互过程中双方一定能“争”到链路。所以每片的发送都是“元操作”,而且如果所有分片都成功传输,整个分片序列的交互也具有元操作性。

3.4.3 DCF的不足

DCF大大降低了HiddenNode问题和链路冲突问题的发生几率,但并不能彻底解决。

由于backoff时钟的时长是随机产生的,理论上讲有可能两个节点产生的backoff值一样,从而在二者的backoff时钟在同一时刻超时,因而发生链路冲突。

再看下图所示场景:Node3处于两个BSS的交界处,此时AP1正在与Node1通信,而AP2正在与Node2通信,这种场景并不违反DCF机制,但此时在Node2处却确实发生了HiddenNode的问题。

图14 BSS交界处的干扰

尽管如此,DCF机制还是提供了一个很好的链路管理和分配机制,是802.11最基本的协调函数,所有STA/AP都必须支持。PCF和HCF都是基于DCF机制的。

4. PCF

DCF机制解决了链路的冲突,提供了链路的竞争规则,但是网络中的每个节点,包括STA和AP,都是链路争夺的个体。DCF提供的是基于竞争的链路共享机制(Contention-Based Service),因为每次帧交互之前都必须争夺链路,这在一定程度上降低了链路的利用率。

802.11中提供了另外一种无竞争(Contention-Free)的链路共享机制,称为PCF(Point Coordination Function)。PCF 的原理是,首先由AP遵照DCF的原则,网络中所有STA的NA V值设定成同一个数值,从而开辟一段无竞争时段(CFP:Contention-Free Period)。在CFP中,链路完全由AP控制,由AP来控制某个时段哪个STA可以发数据。显然,IBSS 网络中不能提供PCF服务。PCF中,AP也被称为PC(Point Coordinator)。

4.1 CFP的开启、维持和结束

4.1.1 Beacon帧

Beacon帧是802.11中最常见最重要的管理帧之一,它以固定的间隔(Beacon Interval)发送,向网络中传递管理信息。Beacon帧中的具体内容与使用的场合有关,其中与PCF机制相关的主要信息有:CF参数集(CF Parameters Set)。

4.1.1.1 CF参数集信息

图15 CF参数集格式

CFP Count:

表示距离开启下一次CFP还有多少个DTIM间隔,0值则表示CFP由当前Beacon帧开始。DTIM是Beacon帧中可能的内容之一,它以固定的间隔(DTIM Interval)出现在Beacon 帧中。显然,DTIM_Interval = n * Beacon_Interval。

CFP Period:

表示相邻两次CFP的开启时间的间隔,以DTIM_Interval为单位。

CFP MaxDuration:

表示系统允许的一个CFP的最大时间,以1024us为单位。

CFP DurRemaining:

表示从最近一次TBTT(Target Beacon Transmission Time)开始到本次CFP结束之间的时间,以1024us为单位。

TBTT表示Beacon帧按计划应该出现的时间。由于Beacon帧的发送间隔是固定的,因而TBTT应该也是固定的。在一个时间同步的网络中,所有节点的TBTT都应该是一致的。

Beacon帧对网络的同步起着至关重要的作用。然而由于要遵守DCF规定的链路访问规则,而另一方面每帧的长度是不固定的,实际应用中无法保证Beacon帧在每一个TBTT时间都能准时发送。引入一个TBTT量,使得即便未能按时收到Beacon帧,必要的处理也能得以进行,而需要以Beacon帧作参照的各种同步依然也能完成。

4.1.1.2 TIM

图16 TIM信息格式

DTIM Count:

表示在下一个DTIM出现之前还有多少个Beacon帧。

DTIM Period:

表示DTIM Interval的值,以Beacon Interval为单位

Bitmap Control和Partial Virtual Bitmap:

这两个域和PCF机制关系不大,暂不介绍。

4.1.2 CF-Pollable STA

PC通过CF-Poll帧来告诉网络中哪个STA可以发数据,只有收到CF-Poll帧的STA才能发送数据。STA可以选择响应CF-Poll,表示加入PCF机制,也可以选择不响应。响应CF-Poll的STA也被称为CF-Pollable STA。

STA通常会事先将自己的CF-Pollability告知PC。STA加入BSS过程中有一个称为“连接(Association)”的步骤(STA加入BSS的过程会在讨论802.11网络管理及系统管理的相关章节中详细描述)。连接是STA加入BSS过程中的最后一步,用于在STA与该BSS的AP之间建立一种对应关系,使得在DS中进行中转的以该STA为目的地址的帧可以准确地找到相关的AP进行转发。连接由STA发起(Association Request),而AP处理成功后向STA 发送确认。连接建立成功后,每个STA都有一个唯一的AID(AssociationID)。

Association Request信息中有一个CapabilityInfo部分,其中有一个1比特的CF-Pollable 域,表明该STA是否是CF-Pollable的。

4.1.3 CFP的开启和维持

当需要开启一个CFP时,AP在链路连续空闲达到PIFS后发出一个带有CF参数集信息和DTIM信息的Beacon帧。

PIFS是专用于PCF机制中的一个帧间距类型,它长于SIFS,但小于DIFS,三者的关系式:aPIFS = aSIFS + aSlotTime;aDIFS = aSIFS + 2*aSlotTime

STA收到该Beacon帧后,根据CFP Count域值发现PC要开启一个CFP,就将自己的NA V值设为CFP MaxDuration,不管该STA是否是CF-Pollable。此时链路开始完全处于PC 的控制中。

在4.1.1.1中讨论CF参数集信息时,我们已经说过Beacon帧不能按时发送的可能性。当负责开启一个CFP的Beacon帧不能按时发送时,就会造成该CFP延后开始,这种情况称为foreshortened CFP,如下图所示。Foreshortened CFP的结束时间不会相应延后。

图17 CFP的开始

图18 Foreshortened CFP

在CFP内,PC依然会以DTIM Interval为间隔按时发送带有DTIM和CF参数集的Beacon 帧,其中CFP DurRemaining表示出了本次CFP还将持续的时间。此时各STA会根据CFP DurRemaining来重新设置自己的NA V值。

4.1.4 CFP的结束

每一个CFP都有它的最大持续时间,这在Beacon帧中的CFP MaxDuration中已经标明。当时间耗尽时,CFP将自动结束。此时各STA上的NA V逐渐递减至0,重新进入竞争时间。

还有一种情况,就是CFP的时间还没有耗尽,但PC发现已经没有CF的数据需要发送,此时PC会发送出CF-End帧主动提前结束本次CFP。收到CF-End帧后,各STA将自己的NA V值归0,重新进入竞争时间。

4.2 CFP内的数据交互

4.2.1 CFP内专用的帧类型

为提高CFP内数据的传输效率,802.11定义了几种在CFP中专用的数据帧。

CF-Poll:

仅用于通知目的STA开始发送数据。CF-Poll和带有CF-Poll内容的帧只能由PC发出。

Data+CF-ACK:

此帧中包含有数据和对上一次数据的ACK,可以由PC和CF-Pollable STA发出。若是PC发出的,则Data的接收者和CF-ACK的接收者可能是不一样的。

CF-ACK:

仅对收到的帧作ACK,可由PC和CF-Pollable STA发出。对于CF-Pollable STA来说,只有收到了CF-Poll才能发送。

Data+CF-Poll:

只能由PC发送。CF-Poll的对象和Data的目的对象是一样的,用于让STA回送CF-ACK。

CF-Poll+CF-ACK:

只能由PC发送。CF-ACK的对象和CF-Poll的对象不一定是一样的。

Data+CF-Poll+CF-ACK:

Data的目的对象和CF-Poll的对象是一样的,和CF-ACK的对象不一定是一样的。4.2.2 CFP内数据交互原则

CFP内的所有数据交互都由PC集中控制,PC通过CF-Poll帧来通知网内各STA谁可以发数据,谁不可以发数据。即便被poll的STA不是CF-Pollable的,它也应该遵循DCF 的规则,在收到CF-Poll帧间隔SIFS后回复一个ACK。

CFP内,PC与CF-Pollable STA之间的数据交互都以SIFS为间隔,但是如果被poll的STA未能在间隔SIFS后及时回复数据或ACK,PC会在间隔PIFS之后继续向下一个STA 发数据或是发CF-Poll帧。如下图所示。

图18 CFP内的数据交互

响应CF-Poll的STA,每次最多只能发送一帧。遵循ACK机制,PC也要相应地回复一个ACK,如果没有及时收到ACK,STA一样要遵照重传机制准备重传。和DCF机制不同

的是,CFP内的重传也必须在得到PC的CP-Poll之后才能进行。

前已述及,STA在与AP进行关联时会在Association Request中告知AP自己是否是CF-Pollable的,如果是,AP就将该STA挂到自己的Polling List上。在polling list上各CF-Pollable STA以AID的大小升序排列,在CFP中PC通常也是根据STA的AID以升序发送CF-Poll。

4.3 PCF总结

PCF机制是建立在DCF的基础上的,PC通过带有DTIM信息和CP参数集信息的Beacon 帧将网络中所有STA的NA V进行设置,将CFP内链路的控制权集中控制。这样就节省了各节点(包括STA和AP)竞争链路的额外开销。此外,PCF机制中允许将CF-Poll、CF-ACK 和data帧合在一起发送,且CFP内所有正常的数据交互都以SIFS为间隔,这也很好地提高了链路的使用效率。

同时,由于完全控制着链路,PC就有可能根据业务的优先级很方便地调整帧的发送顺序以及各STA的polling顺序,从而实现一定程度上的QoS功能。

相关主题
文本预览
相关文档 最新文档