WIFI基本大数据的传输机制理解.docx
《WIFI基本大数据的传输机制理解.docx》由会员分享,可在线阅读,更多相关《WIFI基本大数据的传输机制理解.docx(19页珍藏版)》请在三一办公上搜索。
1、802.11基本数据传输机制理解1. 802.11网络基本概念1.1 802.11网络元素Station (STA):具有802.11无线网卡的设备,包括手机、笔记本电脑等。Access Point (AP):实现无线网络与固定网络连接功能的设备,通常也称作“热点”,它主要完成STA与 STA之间数据的转发、STA与骨干网之间数据的转发以及必要的管理工作。本文中将AP和STA通称为Node (节点)。Wireless Medium (WM):STA之间以及STA与AP之间传递数据的通道,即无线链路。无线链路一词相对直观和容易理解,本文中的用无线链路只带WM。Distribution Syste
2、m (DS):8023.11中的一个逻辑概念,通常包括两部分:骨干网以及AP的帧分发机制。这里的 骨干网指的是连接各AP的固网,通常可以理解为以太网;AP的帧分发机制则完成骨干网 与STA、以及STA与STA之间的数据帧转发工作。1.2 802.11组网方式Independent Basic Service Set (IBSS)IBSS中只有STA和 WM,没有AP和DSIBSS内的通信只能发生在STA直接通信距离内IBSS内STA间的通信都是点到点直接通信,没有转发图1 IBSS网络结构Infrastructure Basic Service Set (BSS)BSS内有STA、AP和 WM
3、,但没有DSBSS的范围由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由
4、DS连接起来图3 ESS网络结构2. 802.11数据传输的基本问题及解决方案2.1数据传输的可靠性将数据准确无误地送达目的地是任何通信技术的基本要求。802.11中引入多种机制来保 证数据传输的可靠性。2.1.1 ACK 机制接收方成功接收到一个帧后,向发送方回复一个Ack帧进行确认。这里的成功接收意 味着MAC帧已经收到且FCS校验结果正确。一般情况下有两种帧要求Ack帧的确认: 单播帧:单播帧的接收者必须向发送者回复Ack进行确认 ToDS域为1的多播/广播帧:ToDS为1意味着这个报文需要由AP转发到DS里去, AP向发送方确认报文已收到并会被转到DS里去。此时其他STA不回复。多播/
5、广播帧不要求、也不能要求收到该帧的每个节点都ACK回复,因为这样既无必要, AP也无法处理。发送方收不到Ack帧的可能情况有: 接收方未接收到帧,所以没有回复Ack 接收方收帧过程出错,或是对帧的FCS校验失败,没有回复Ack 接收方成功收到帧,但发送方没有成功收到Ack帧不管是那种情况,发送方都会认为发送失败并启动重传。2.1.2重传机制802.11中提供一个门限值RTSThreshold,长于或等于该门限值的帧被认为是长帧,而短 于该门限值的帧被认为是短帧。系统为每一个即将传输的帧(impending frame)都相应地配备有一个重发计数器(Retry Counter),长帧则为LRC(
6、Long RC),短帧则为SRC(Short RC)。每重传一次,相应的RC 就加1。系统中对帧的重传次数是有限制的。如果重传次数达到上限但传输依然没有成功, 该帧将被丢弃。此外系统对每一帧的有效时间也是有限制的,也就是说每一帧都应该在一定时间内被成 功发出,否则该帧就失效了,系统会将其丢弃。综上所述,帧的重传不会无限制的重复下去,当发生下述情况之一时,重传终止: 得到了接收方的Ack,发送成功; 重传次数达到上限但仍未收到接收方的Ack,发送失败,弃帧; 当前帧已经过了有效时期但仍未收到接收方的Ack,发送失败,弃帧。重传意味着对帧的缓冲,意味着对系统内存及其他资源的占用。而帧越长,对系统内
7、存 的占用就越多。因此按帧的的长短进行分类,降低长帧的重传上限,有利于提高系统资源的 利用效率。鉴于发送方没收到Ack的可能原因,重传有可能导致接收方收到重复帧,因此接收方 需要相应的重复帧过滤机制。2.1.3重复帧过滤机制802.11网络中的每一个节点,包括STA和AP,都会根据所收到的帧来缓存并更新对 端地址,帧序号,分片序号组合,对于每一个对端地址,只需要保存最近收到的帧的地 址,帧序号,分片序号组合。收帧过程中,如果接收端发现当前帧是一个重传帧(帧中的RetryBit为1),则根据当 前帧的发送者地址找到缓存中对应的对段地址,帧序号,分片序号。如果当前帧的帧序 号小于或等于组合中的帧序
8、号,或者帧序号相同但是分片序号小于或等于组合中的帧序号, 接收方会将该帧认为是重复帧而将其丢弃。如果当前帧中的RetryBit为0,接收端将不会启动重复帧过滤机制。对重复帧,接收方依然回复ACK帧,以免发送方不断重传。2.1.4分片机制根据帧格式的定义,802.11帧中负载的最大长度为23424字节。对于更长的数据,则需 要将其分片成多个帧组成分片序列来完成传输。802.11的分片序列中,除了最后一片,所有分片大小都应一样,且应该是偶数个字节。 整个分片序列共享一个帧序号,帧序号表示各分片在整个序列中的位置。除了最后一片外, 所有分片中的MoreFrag域都应设为0以告知接收者还有后续分片。根
9、据帧格式的定义,分 片号由4比特的二进制序列表示,说明一帧数据最多只能有16个分片。接收方先将所收到的分片缓存,收齐所有分片后按照分片号的先后顺序重新组装。如果 未能收齐所有分片或者重组失败,接收方将直接丢弃整个分片序列。在正常情况下,接收者应对每一个收到的分片立即回复ACK,收到ACK后发送方继续 发送下一个分片。如果某个分片没有被ACK,发送方将对该分片启动重传机制。显然,任 何一个分片的发送失败都会导致整个序列的发送失败。对大的数据包进行分片处理,可以提高传输的可靠性。2.2隐藏节点(hidden node)问题考虑下图所示的情况:node1和node3都在node2的收发区域内,但no
10、de1不在node3 的收发区域,因此对于node3相对于node1而言是一个“隐藏节点”。同样,node3也是node1 的“隐藏节点”。如果不加任何约束的话,node1和node3很有可能同时向node2发送数据, 而node2无法区分并成功接收,因而发生冲突。图5隐藏节点问题802.11中RTS/CTS机制可以很好的解决这个问题。2.2.1 RTS/CTS 机制引入RTS/CTS机制后,节点之间的数据发送过程如下图所示:图6引入RTS/CTS机制后的帧交互当Nodel要向Node2发送数据时,先发送一个RTS (Request To Send)帧,如果Node2 可以接收,则回应一个CT
11、S (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/C
12、TS交互增加了额外的 数据交互量,对于一些小数据帧的交互来说,这部分额外的数据量明显降低了链路的有效利 用率。因此802.11系统中提供了一个门限值RTSThreshold,大于该门限值的数据帧的交互 才使用RTS/CTS机制。而且该门限值也是可以改变的,如果该门限值设为0,那么就意味着所有的数据帧交互都会采用RTS/CTS机制,而如果该门限值大于802.11帧的最大值,那 么就意味着所有的数据帧交互都不采用RTS/CTS机制而是直接发送。RTS/CTS机制对于单帧的数据交互可以起到很好的保护作用,但何时可以发送RTS帧? 当前帧发送完毕之后,其它节点又该如何发起下一次数据交互并且没有数据冲突
13、?简单的 RTS/CTS机制并不能解决这个问题。Hidden Node的问题其实链路/信道复用问题的一种体现。我们需要一种全面的机制来实 现对无线链路的互斥访问和公平分配。802.11中该机制是通过协调函数(CF: Coordination Function)来实现的。802.11 支持三种协调函数:DCF(Distributed CF) PCF(Point CF) 和HCF(Hybrid CF)。其中DCF是其他两种协调函数的基础,是802.11中最基本的无线链 路管理和控制机制。3. DCFDCF采用CSMA/CA机制来监测无线链路的忙闲状态,采用随机退避时间(random backoff
14、 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
15、的具体值会因PHY层 定义的不同而不同,但相对于具体一种PHY而言,它们的值都是固定的。SIFS时间最短,它只应用在以下几种数据帧之前: ACK 帧 回复RTS的CTS帧 一个分片序列中的各分片DIFS较SIFS更长,是节点开始竞争之前链路必须连续空闲的最短时间。在最近一次的 数据包接收无误的情况下,当节点检测到介质的连续空闲时间达到DIFS时,才能启动退避 算法。如果最近一次的数据包接收发生了错误,节点只能在检测到截止连续空闲时间达到 EIFS后才能启动退避算法。EIFS较DIFS要长。3.2冲突检测机制冲突检测机制用于监测无线链路的忙闲状况。理论上,冲突检测机制既可以在物理层实 现,也可以
16、在MAC层实现。然而由于天线的半双工特性,物理层冲突检测机制实现难度大 且成本高昂。因此一般都采用MAC层提供的虚拟冲突机制(Virtual CS)。虚拟冲突机制引入NAV (Network Allocation Vector),并通过对NAV的更新与检测来 确认链路的忙闲状况。NAV可以看作是一个时钟,它记录的其实是链路上当前的数据交互 还要持续的时间。NAV不为0就意味着当前链路上有数据交互在发生。802.11的MAC帧头 精彩文档中有一个2字节的Duration/ID域,绝大多数的帧(除了用于PCF中的PS-Poll帧外)都在 该域中设置当前的数据交互的持续时间。收到MAC帧的各节点根据
17、帧中的Duration域以一 定规则更新本节点的NAV值,从而保证当前数据交互的顺利完成。采用DCF的STA/AP在发送数据帧时,通常会采用RTS/CTS来通知后续数据交互的发 生。其他节点根据RTS/CTS帧中的Duration值来更新自己的NAV值。因此,NAV机制其 实是通过“预订”链路来保证当前数据交互不被干扰。3.2.1 NAV的更新在讨论NAV的更新之前,我们有必要弄清楚一个问题:每个节点上应维护多少个NAV? 是应该为网络中其它每一个节点维护一个对应的NAV,还是只需要维护一个NAV?观察下图所示的情况:四个节点都处在各自的收发范围内,且Node1和Node2正在进 行数据通信,
18、而Node3有数据要发往Node4。如果Node3为网络中的其他每一个节点都维 护一个对应的NAV,则此时NAV1和NAV2应该显示链路忙,而NAV4应该显示链路空闲, 因此给Node4的数据可以直接发送。收范围内的所有其他节点接收到。此时如果允许Node3发送数据,一方面Node3发出的数据对Node1和Node2之间的通信产生干扰(参见Hidden Node问题),另一方面Node1和 Node2之间的数据交互对Node4的接收也产生干扰,最后的结果是大家都无法正常通信。因此每个节点上应该也只能维护一个NAV。这样,当Node1和Node2在通信时,Node3 和Node4上的NAV都显示
19、链路正忙,此时它们将所要发送的数据缓存,等到链路空闲的时 候再发送。这样才能避免干扰和链路冲突。当收到一帧数据时,各节点需要根据的帧中的Duration值来更新其NAV,规则如下 如果数据帧的发送者就是节点本身,则不更新NAV。 如果数据帧的发送者不是节点本身,则比较Duration域值和当前NAV值。如果当 前NAV值更小,则将NAV值更新为Duration域值 如果该节点是根据RTS帧中的Duration域值来更新自己的NAV值,那么它会要求 在一定的时间内收到相应的CTS帧或是RTS帧发送端发出的下一帧。否则,它会 将自己的NAV值复位为0。当某节点收到目的地不是本节点的RTS帧时,它肯
20、定在RTS帧的接收范围之内,但它 有可能在CTS发送端的接收范围之外。RTS帧承载着对链路的“预订”请求,只有收到了 对端的CTS帧,请求才算得到允许。而收到CTS帧后,RTS发送端会以最快的速度开始发送数据。所以收到RTS帧的其他节点会在一定的时间要么里收到CTS帧,要么收到后续数 据帧,否则就有理由相信本次链路“预订”失败,因而将NAV值归0。3.2.2 NAV更新举例3.2.2.1 RTS/CTS/DATA/ACK交互过程中的 NAV 设置Duration域值设定为本次交互所需的时间。 收到RTS后,Destination端在SIFS后回复CTS帧确认可以接收数据。其它节点根 据RTS帧
21、中的Duration值将NAV更新为:NAV = 3*SIFS + aCTSTime + aDataTime + aAckTime这包括了本次数据交互还需要的时间。 Destination端收到RTS帧,在间隔SIFS后,回复一个CTS帧。 Source端收到CTS帧,在间隔SIFS后开始发送数据。其他节点根据CTS帧中的 Duration值将NAV值更新为:NAV = 2*SIFS + aDataTime + aAckTime Destination端成功收到数据,在SIFS后回送ACK。整个交互过程中,其他节点上 的NAV值设定显示链路忙。 不管Source端是否接收到ACK,本次数据交互
22、到此结束。链路空闲DIFS后,各 节点又开始对链路的竞争。这个过程中有可能出现CTS帧已经发出,但只有Source端没有收到的情况,如下图:DestinationSIF3XOther%;r / / /Cdnierrtion Window ::i NAV (RTS)精彩文档NAV (CTS)1FDefer AccessBackoff After DaFer图9 CTS帧丢失此时其他节点依然按照CTS帧的要求更新了 NAVIN Source端由于没有收到CTS帧 而不发送数据,这就造成了链路资源的浪费。这是最坏的情况。此时Source端在等待一定 时间后可能会比其他节点更早启对对链路的竞争。3.2
23、.2.2分片序列发送过程中的NAV设置图10分片序列发送过程中NAV的设置这和单一帧的发送的区别在于,每一个分片中的Duration域都指明了下一个分片的传 输所需的时间,且后续分片在上一个ACK后的SIFS后立即发送,如果每一分片都发送无 误,这个过程一直会持续到所有分片发送完毕。这个过程中也有可能发生某分片的ACK没有被Source端收到的情况,如下图所示:此时其它节点中的NAV因分片/ACK中的Duration值更新而显示链路忙。Source端在 等待ACK超时后,有可能抢先启动对空闲链路的竞争。3.3退避算法802.11采用退避算法解决空闲链路在各节点之间的分配问题。当链路空闲时间超过
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- WIFI 基本 数据 传输 机制 理解
链接地址:https://www.31ppt.com/p-4926148.html