WiFi时间同步.docx
《WiFi时间同步.docx》由会员分享,可在线阅读,更多相关《WiFi时间同步.docx(13页珍藏版)》请在冰豆网上搜索。
WiFi时间同步
Wi-fi同步
一、同步的意义
1.1什么是同步
时钟同步的目的是维护一个全局一致的物理或逻辑时钟,时钟同步广义上称为时间同步,狭义上称为频率同步。
时间同步:
指在对比时刻求得标准时钟与本地时钟的频率和相位偏移,并通过修正使本地时钟与参考时钟保持同步。
频率同步:
指信号之间的频率或相位保持某种严格的特定关系,通信网络中频率同步用来保证所有的设备以相同的速率运行。
频率同步一般采用锁相环技术,频率调节具有连续性和周期性;而时间同步可以是非连续性的调控。
1.2WiFi同步的意义
数字通信网中传递的信号是对源信息,比如模拟的语音信息,进行采样编码后得到的PCM(pulseCodeModulation)离散脉冲。
如果两数字交换设备之间的时钟频率不一致产生采样时刻的偏差,或者由于数字比特流在传输中因码间干扰和各种噪声干扰的叠加产生相位偏移和频率偏移,接收端就会出现码元的丢失或重复,导致传输的比特流中出现滑码的现象。
Wifi作为无线接入技术承载3G基站业务时,由于3G基站业务,例如一些基于WLAN的宽带数据应用,流媒体、网络游戏等均需要优于50ppb的频率同步,其中有些制式,如CDMA2000、TS-SCDMA,WiMAX等还有高精度的时间同步需求,所以要求WIFI能够对时间和频率信号进行高精度稳定地传送,因此研究WIFI时间同步有其必要性和迫切性。
二、802.11链路时钟同步层
2.1概述
根据WiFi的机制,在BSS中利用TSF来保证STAs同步于一个时钟。
2.2AP与AC的同步
AP与AC的时间同步是基于的CAPWAP协议,该协议主要包括了AP自动发现AC,AC对AP进行安全认证,AP从AC获取软件映像,AP从AC获得初始和动态配置等。
2.2.1CAPWAP协议
CAPWAP协议由Discovery阶段开始。
WTPs发送DiscoveryRequest消息,诱发任何收到该消息的AC用DiscoveryResponse消息响应。
根据收到的DiscoveryResponse消息,WTP用与其建立安全的DTLS会话来选择一个AC。
一旦WTP和AC完成DTLS会话建立,开始配置交换其间两个设备对采用的版本达成一致。
在这个交换中,WTP可以接收配置设置。
然后,WTP开始运行。
当WTP和AC完成版本和配置交换并启动WTP后,CAPWAP协议用于封装在WTP和AC间发送的无线数据帧。
如果被封装的无线用户数据(Data)帧或协议控制(Management)帧的长度引起最终的CAPWAP协议分组超过WTP和AC间支持的MTU,CAPWAP协议将分段第2层帧。
为了重建原始封装的净荷,分段的CAPWAP分组被重组。
2.2.2AC的timestamp传递
ACTimestamp消息要素由AC发送,用于同步WTP时钟。
除非另有规定由AC发送给WTP的任何配置信息可以保存到非易失性存储器中,数据信息要素格式使用下图所示的TLV格式
Value...
消息要素用于携带控制消息中需要的信息。
每个消息要素由TypeValue字段标识,如上面定义。
在消息要素的长度字段指出消息要素的总长度。
16位Type字段标识Value字段携带的信息,Length(16位)指出Value字段的字节数。
0值保留并且不能使用。
字段值其余部分分配如下:
用途类型值
CAPWAPProtocolMessageElements1-1023
IEEE802.11MessageElements1024–2047
保留将来使用2048–3071
EPCGlobalMessageElements3072–4095
保留将来使用4096–65535
16位Type字段标识Value字段携带的信息,Length(16位)指出Value字段的字节数。
0值保留并且不能使用。
AC时间戳要素的格式如下图所示。
ACtimestamp消息格式
Type:
ACTimestamp为6
Length:
4
Timestamp:
AC的目前时间,让所有WTPs采用NTR(NetworkTimeProtocal)[RFC1305]中定义的格式,实现时间同步。
仅NTP时间的最高有效32位包括在这个字段中。
NTR的时间戳由一个64位的无符号定点数组成,前32位表示整数部分,后32位表示分数部分。
NTR的相关信息将会在下一节介绍。
2.3NTR协议中的时间同步
NTP(NetworkTimeProtocol)以GPS时间代码传送的时间消息为参考标准,采用了Client/Server结构,具有相当高的灵活性,可以适应各种互联网环境。
NTP除了可以估算封包在网络上的往返延迟外,还可独立地估算计算机时钟偏差,从而实现在网络上的高精准度计算机校时,它是设计用来在Internet上使不同的机器能维持相同时间的一种通讯协定。
在大多数的地方,NTP可以提供1-50ms的可信赖性的同步时间源和网络工作路径。
2.3.1NTP的通信模式
NTP以客户机和服务器方式进行通信。
每次通信共计两个包。
客户机发送一个请求数据包,服务器接收后回送一个应答数据包。
两个数据包都带有时间戳。
NTP根据这两个数据包代的时间戳确定时间误差,并通过一系列算法来消除网络传输的不确定性的影响。
在数据包的传送方式上,有客户机和服务器一对一的点对点方式,还有多个客户机对一个服务器的广播/多播方式。
两者工作方法基本相同。
处于两种方式下的客户机在初始时和服务器进行如同点对点的简短信息交换,据此对往返延时进行量化判断。
此后广播/多播客户机只接收广播/多播消息的状态,并根据第一次信息交换的判断值修正时间在广播/多播方式下一个服务器可以为大量的客户机提供时间,但精度较低。
NTP要求的资源开销和通信带宽很小。
NTP采用UDP协议,端口号设定为123。
UDP占用很小的网络带宽,在众多客户机和少许服务器通信时有利于避免拥塞。
NTP数据包的净长度在V3下为64个字节,V4下为72个字节;在IP层分别为76和84个字节。
如果通信方式是广播模式,服务器以固定的间隔向客户机广播发送一个数据包;如果是服务器/客户机方式,则通信间隔将在指定的范围内变化(一般是64秒到1024秒),同步情况越好,间隔就越长。
2.3.2NTP的同步实现
在单播及广播方式下,单播服务器回答及广播所有的字段;但是,在SNTP下,各字段中,只有传送时间戳在非零情况下才有明确的意思.这个字段的整数部分包含服务器此刻的时间,其格式与UDP/TIME协议相同[POS83].这个字段的fraction部分通常是有效的,SNTP的精确度证明可以精确到秒。
如果传送用时间戳字段是全0,则该消息将被忽略。
在单播方式下,一种简单的计算可以用来计算与服务器有关的往返传播延迟d及本地时钟补偿t,通常对在数十毫秒内。
为此,客户端在请求包中将本地时钟时间按NTP的格式写入源时间戳。
当收到答复时,客户端将目的时间戳作为到达时间,并根据它的本地时钟,将其转变成NTP格式。
下述表格总结4个时间戳。
用时间戳名字ID产生
原始时间戳T1时间请求由客户端送
收到时间戳T2时间请求在服务器收到
传送时间戳T3时间答复通过服务器送
目的地时间戳T4时间答复在客户端收到
往返传播延迟d和本地时钟补偿t定义为:
D=(T4-T1)-(T2-T3)
T=((T2-T1)+(T3-T4))/2。
下述表格是SNTP客户端操作的总结。
在表格里显示有两种推荐的错误检查方式。
在全部NTP版本里,如果Li字段为3;或者阶层字段不在第1-15范围里;或者传送用时间戳是0,服务器决不同步或者不予同步成过去24小时内有效的时间源。
在客户端的判断中,保留字段值也可能被检查。
是否相信传送用时间戳取决于对这些字段中的一个或多个字段的有效性判断。
字段名请求回答
Li0闰秒指示器;如果是3(非同步),则放弃该消息
VN1(参见正文)忽略
方式3(客户端)忽略
阶层0忽略
轮询0忽略
精度0忽略
根延迟0忽略
根差量0忽略
参考标识符0忽略
参考时间戳0忽略
原始用时间戳0忽略(参见正文)
收到用时间戳0忽略(参见正文)
传送的时间戳0时间;如果是0(非同步),则忽略该消息
Authenticator.(不使用)忽略
2.4STA与AP保持同步
BSS中,AP控制TSF的计时器。
(系统中存在)多个AP的情况下,AP需要同时、独立的初始化TSF计时器,这样能最小化同步(误差/系统)
AP需要周期性发送含有TSF值的Beaconframes,用来同步同一个BSS下的其他STA。
STA需要接收来自AP的Beaconframes,并将接收到的frames中的时间戳设置成本地的TSF计时器的值(还需要考虑延迟)。
同步分为主动同步和被动同步:
TSFforanIBSS(被动同步)
IBSS中TSF的实现是由一个分布式算法完成的(BSS中的所有成员都会参与,每个STA都需要根据这个算法来传送Beaconframes)。
若STA接收到的TSF值迟于本地TSF计时器的值,则更新时间。
TSFforanMBSS(主动同步)
根据MBSS的主动同步方法,themeshSTA需要初始化它的TSF计时器,并周期性的传送内含TSF计时器值的Beaconframes来对外宣称自己的本地时间。
2.5获得同步信息,扫描
2.3.1Beacon的间隔
Beaconframes的间隔主要由dot11BeaconPeriod参数决定。
STA在发送Beaconframe时需要设置Beaconframe的时间戳(其值等于theSTA的TSF的计时器的值)thedatasymbol包含的时间戳的第一个bit是被传送给PHY的延迟加上thetransmittingSTA’s本身PHY到MAC-PHY交界面的delays(延迟来自于本地MAC-PHY和WM的的交界面)。
虽然由于CSMA的退避机制,Beaconframe的发送可能会延迟,但是随后的Beaconframe被安排在没有延迟的beacon间隔内发送,如上图。
(不管是否繁忙,每个beaconinterval内都会发送一个beacon帧)。
2.3.2Beaconreception
AP:
A、CF参数集:
再没考虑到BSSID的时候,STAs可以使用接收到的CFParameterSetelement(无竞争参数集的元素)来更新它们的NAV.(详细描述见9.4.3.3)
B、非CF参数集:
只有当STA(containedintheAPoftheBSS)正在使用的BSSIDfield=MACaddress,在一个基础网络中的STAs才能使用不在CFParameterSet中的元素。
Non-Ap:
基础网络中的支持多路BSSIDcapability的Non-APSTAs,只有non-AP的STA的BSSIDfield=MACaddress或者theBSSIDfieldisequaltooneofthenontransmittedBSSIDs,STA才能使用接收到的Beaconframes的其他信息。
一旦STA接收到有效地FCS(帧效验序列),BSSID,SSID的beaconframe,STA就需要根据以下算法跟新它的TSD计时器:
接收到的时间戳的值需要加上STA的总的延迟——本地PHY传输的时间加上MAC/PHY交界面接收到时间戳第一个比特的延迟。
基本架构下,STA的TSF计时器更新为调整后的时间戳的值,TSF的精确度误差不能超过0.01%。
2.3.3分为主动扫描和被动扫描
被动扫描不超过MaxChannelTime参数规定的间隙
主动扫描包含请求探针帧的产生,和随后接收探针响应帧的处理
当dot11RadioMeasurementActivatedistrue且ProbeRequestframe包含的DSSS参数集的当前信道值与dot11CurrentChannelNumber.不同,STA接收到探测请求帧后不作出响应
当proberequest中的SSID相符,或者STA的SSID包含在SSID列表中,STAs接收到Proberequestframe后需要作出响应。
(以下做出具体说明)
STAs在以下情况下接收到ProbeRequest需要作出响应:
A、proberequest中的Address1是广播地址或者与STA的MAC地址相同;
B、对meshSTA来说,proberequest中的MeshID是thewildcardMeshID(通配符ID)或者与STA的meshID相符;
C、如果STA不是meshSTA只要
1)proberequest中是wildcardSSID,或者SSID与STA的SSID相符合,亦或STA的SSID包含在SSIDListelement,且
2)proberequest中的Address3field是wildcardBSSIDortheBSSIDoftheSTA.
在BSS,IBSS这两个不管什么时刻都会有至少一个STA处于工作状态。
2.6调整STA计时器时间
在某些频带和域管理中主动扫描是被禁止的。
STA根据MLME-SCAN.requestprimitive的扫描模式参数分为主动扫描和被动扫描。
STA接收到MLME-START.requestprimitive,STA就要确定BSS的BSSID,选择信道同步信息,选择beacon周期,selecttheoperationalrateset,初始化和设置TSFtimer,并开始传送beaconframe。
STA接收到MLME-scan的请求原语,STA使用域管理的信息来处理这个请求,如果主动扫描是非法的就返还一个NOT_SUPPORTED的参数,否则进行主动扫描。
STA接收到MLME-JOIN请求原语,STA采用请求中的BSSID
STA接收到beaconframe,STA就采用其中的信道同步信息,MLME会发出MLME-JOIN确认原语来确认同步操作成功。
2.7BSS同步的终止
BSS可以在随意时刻终止。
STA一接收到MLME-STOPrequestprimitive,STA就停止传送Beacon和ProbeResponseframes,并解除所有关联STA的验证。
三、802.11的时间测量过程
WiFi时钟同步包括两个过程:
一是测量出链路延迟和时钟偏差,二是通过补偿算法使丛时钟同步上主时钟。
802.11链路的时间同步是在MLME层产生和回收用于时间测量的帧,并在该层记录同步帧发送和接收的时间,然后通过服务原语吧时间戳传递给媒介无关层。
802.11MLME用于测量时间的帧和协议如下图:
测量过程通过一个来回的帧交换完成。
首先当MLME-TIMINGMSMTrequest原语被requester端唤醒,由802.11MLME产生‘request’帧。
当收到单播来的request帧,responder端就发送一个802.11ACK控制帧给requester端。
当这两个帧交换的时候就有四个时间戳被记录下来,分别是:
t1是发送request帧的时间(基于requester端的时间)
t2是收到request帧的时间(基于responder端的时间)
t3是发送ACK控制帧的时间(基于responder端的时间)
t4是收到ACK控制帧的时间(基于requester端的时间)
当requester端初始化时间测量request帧的时候把前一次测量得到的t1和t4以及其他一些端到端的同步信息一起传给responder端。
每个request都携带一对令牌,一个用于标记本次测量过程,另一个由responder端来标记上一次测量。
报文交换完成时,responder端收到的前一次t1和t4需和上次记录的t2、t3构成一组进行处理。
Responder端负责处理这些时间戳组,用来计算从时钟相对主时钟的偏移和两节点间报文的平均传播时间。
由这四个时间戳可以得到式(1.1、1.2)
其中requester为主时钟端,responder为从时钟端,
表示从requester到responder的传输延时,而
表示responder到requester的传输延时,Offset表示主从时钟偏差。
如果requester和responder之间的传播路径对称,即
,则有:
平均链路延迟:
时钟相位偏移:
时钟相位偏移的计算公式假设主到从和从到主的传播时间相等。
为了达到高精度的时钟同步要求,在进行偏移补偿之前,可以进行多次测量取平均值或者采用滤波算法来减小抖动的影响。