概述
- PCF(点协调功能)是一个在DCF之上实现的替代接入方式,由中央轮询主机(点协调者)的轮询组成,属于节点(站点)间信道无竞争方法;
- PCF通过集中式控制,由点协调器轮询所有站点来决应当前哪一个站点有权发送数据;
- 点协调者在发布轮询时使用PIFS,由于PIFS小于DIFS,所以点协调者能够优先获得媒体访问权
- IEEE802 .11允许PCF和DCF机制共存。
- 为了实现两种协议共存的方法则是通过引入超帧(SuperFrame)的概念
超帧
- 超帧是一个逻辑概念而非实际的帧,它表示一段时间内媒体上的业务;
- 超帧中包含两部分无竞争期(ContentionFreePeriod,CFP)和竞争期(ContentionPeriod,CP)。
- CFP采用PCF机制控制BSS内帧的传输;
- CP使用DCF控制BSS内帧的传输;
- 两者交替控制媒体,从而达到DCF和PCF共存的目的。
超帧工作流程
(1)超帧中的CFP是以信标(Beacon)开始,信标结束后为PCF机制开始。
- CFP的时间长度由PC(中央轮询主机)决定;
- 所有BSS中的主机(除PC外)在CFP的开始时刻设置NAV;
- 在NAV期间(即CFP期间)阻止未被轮询的主机占有媒质,有效地防止碰撞。
(2)CFP开始时,PC(中央轮询主机)检测媒质:
- 若媒体空闲时间达到PIFS,则发送一个信标帧。
(3) 等待一个SIFS后,PC(中央轮询主机)可以传输如下数据帧:
- DATA,CF-POLL,DATA+CF-POLL,CF-END, CP-POLL用于轮询,CP-END用于宣告CFP的结束;
- 在CFP轻负载的情况下,PC(中央轮询主机)可以缩短CFP,并通过CF-End或CF-End+Ack控制帧把剩余的带宽提供给基于竞争的DCF。
(4)在DCF期间,节点间可以竞争信道:
- 若信道空闲时,会等待一个帧间间隔(比如DIFS),帧间间隔越小,节点占据信道,优先发送报文的几率越高;
- 若一个帧间间隔内,信道仍然空闲,启动随机退避机制,开启随机退避定时器,避免同一时间节点报文发送碰撞;
- 若随机退避定时器倒数为0时,节点立即发送数据帧,数据帧中duration字段记录节点占用信道的时间,其他站点收到报文(广播)之后,更新NAV,NAV为0前,不允许发送任何报文;
- 若节点发送过程中未监听到其他站点的报文,即没有遇到其他节点的报文碰撞,否则终止报文发送,重新监听信道,等信道空闲时再尝试发送报文。
CFP工作原理
(1)在每个CFP的标称(Beacon)时间开始时刻,PC将侦听媒介(信道)。
(2)当PC检测出信道空闲,并且持续空闲时间达到PIFS后,PC发送一个包含CF参数集信息的信标(Beacon)帧。
- 信标帧中duration字段中记录PC占用信道的时间
- 信标帧中address等字段记录目的站点
(3)发出初始化CFP的信标帧之后,PC至少等待一个SIFS, 然后根据情况发送数据帧或轮询帧。
(4)BSS中的STA从PC接收到正确的帧后,此时如果站点存在数据要发送,STA等待短帧帧间间隔SIFS后,可以发送数据应答帧。
(5)PC在每个CFP结束时发送CF-End帧或CF-End+ACK 帧。
- 任何一个接收到CF-End/ CF-End+ACK的STA复位其NAV(NAV置为0),以便顺利进入CP内;
- CF可以提前结束,但是站点NAV只更新比自己大的duration字段数据,为了提高信道利用率,任何一个接收到CF-End/ CF-End+ACK的STA复位其NAV(NAV置为0)
CFP工作实例
- PC轮询获取站点数据(单向):CF-Poll一> STA Data一>CF-ACK工作流程
- (1)AP(PC)发送Beacon报文,利用其中的duration字段,将所有节点设置成NAV状态;
- (2)间隔SIFS后信道仍然空闲,AP本地没有发往节点STA1的缓存数据,故AP直接发送CF-Poll轮询报文,让节点STA1有数据时,上报数据;
- (3)节点STA1收到CF-Poll轮询报文后,知道可以上报数据,当间隔SIFS后信道仍然空闲,节点STA1发送DATA给AP;
- (4)AP收到节点STA1发送的DATA后,会产生一个应答报文,间隔SIFS后信道仍然空闲,AP反馈CF-ACK给节点,从而结束一次传输轮询。
- PC轮询发送/获取站点数据(双向):CF DATA+CF-Poll一>STA Data+CF-ACK一>CF-ACK工作流程
- (1)AP(PC)发送Beacon报文,利用其中的duration字段,将所有节点设置成NAV状态;
- (2)间隔SIFS后信道仍然空闲,AP本地有发往节点STA1的缓存数据,故AP发送DATA以及CF-Poll轮询报文,让节点STA1有数据时,上报数据;
- (3)节点STA1收到DATA后,需要确认数据,发送应答报文(ACK);收到CF-Poll轮询报文后,知道可以上报数据,当间隔SIFS后信道仍然空闲,节点STA1发送DATA+CF-ACK给AP(确认自身收到数据+反馈自身数据);
- (4)AP收到节点STA1发送的DATA后,会产生一个应答报文,间隔SIFS后信道仍然空闲,AP反馈CF-ACK给节点,从而结束一次传输轮询。
- PC轮询获取多个站点数据(双向):CF-Poll一>STA Data一>CF-Poll+CF-ACK一> CF Data工作流程
- (1)AP(PC)发送Beacon报文,利用其中的duration字段,将所有节点设置成NAV状态;
- (2)间隔SIFS后信道仍然空闲,AP本地没有发往节点STA1的缓存数据,故AP直接发送CF-Poll轮询报文,让节点STA1有数据时,上报数据;
- (3)节点STA1收到CF-Poll轮询报文后,知道可以上报数据,当间隔SIFS后信道仍然空闲,节点STA1发送DATA给AP;
- (4)AP收到节点STA1发送的DATA后,会产生一个应答报文,间隔SIFS后信道仍然空闲,AP反馈CF-Poll+CF-ACK给所有节点(STA1、STA2等),继续数据交互;(ACK用于确认当前节点STA1的发送的数据,CF-Poll是用来请求下一个节点STA2发送数据)
- (5)节点STA1收到CF-ACK报文后,明白与AP的会话结束;节点STA2收到CF-Poll轮询报文后,知道可以上报数据,当间隔SIFS后信道仍然空闲,节点STA2发送DATA给AP;
- (6)重复步骤(4)