802.11 MAC 基础
1. MAC所面临的挑战
射频链路品质
802.11采用肯定确认机制。所有传送出去的帧都必须得到响应,只要有任何一个环节失败,该帧即被视为漏失。 -------原子操作
隐藏节点的问题
无线收发器通常只有半双工工作模式,即无法同时收发数据。
使用RTS和CTS信号来清空传送区域。
RTS帧具有两个目的:预约无线链路的使用权,要求接收到该帧的其他工作站保持沉默。
通常只用在高用量的环境下以及传输竞争比较显著的场合。
2.MAC访问模式与时机
载波侦听(Carrier sensing) 用来判断媒介是否处于可用状态。
802.11具有2种载波侦听功能:物理载波侦听与虚拟载波侦听。只要其中之一处于忙碌状态,MAC就会将此状态告知较高层协议。
虚拟载波侦听:由网络分配矢量(Network Allocation Vector简称 NAV)所提供。802.11帧通常会包含一个Duration字段,用来预定一段媒介使用时间。其他工作站会将NAV的值倒数至零。只要NAV不为零,就代表媒介处于忙碌状态。
SIFS:短帧间间隔,用于高优先级的传输场合,例如RTS/CTS以及肯定确认帧。
PIFS:PCF帧间间隔,PIFS主要被PCF使用在无竞争操作中,有时被误称为优先级帧间间隔。
DIFS:DCF帧间间隔,DIFS是竞争式服务中最短的媒介闲置时间。
EIFS:扩展帧间间隔,只有在帧传输出现错误时才会用到EIFS。
3.帧的分段与重组
当干扰存在时,分段分包有助于提升可靠性。利用帧的分段,无线局域网工作站可以让干扰只影响较小的片段,而非较大的帧。降低可能被干扰的数据量,帧分段可以提高整体的有效吞吐量。
当上层的分包大小超过网络管理人员所设定的分段阈值时,就会进行帧的分段。每个帧片段都有相同的帧符号以及一个递增的帧片段编号以便于重组。
帧控制信息用来指示是否还有其他帧片段待收。
4. 帧格式
字段的传输顺序由左至右,最高有效位将会最后出现。
Frame Control字段
2个字节长度。
Protocol字段: 有两位构成,用以显示该帧所使用的MAC版本。目前只有一个,为0.
Type与Subtype字段:用来指定帧类型。
Type | subtype | 帧类型 |
00(管理帧) | 0000 | Association request |
0001 | Association response | |
0010 | Reassociation request | |
0011 | Reassociation response | |
0100 | Probe request | |
0101 | Probe response | |
1000 | Beacon | |
1001 | ATIM(通知传输指示消息) | |
1010 | Disassociation | |
1011 | Authentication | |
1100 | Deauthentication | |
01(控制帧) | 1010 | Power Save(PS)-Poll |
1011 | RTS | |
1100 | CTS | |
1101 | ACK | |
1110 | CF-End | |
1111 | CF-End + CF-ACK | |
10(数据帧) | 0000 | Data |
0001 | Data + CF-ACK | |
0010 | Data + CF-Poll | |
0011 | Data + CF-ACK + CF-Poll | |
0100 | Null data | |
0101 | CF-ACK | |
0110 | CF-Poll | |
0111 | Data + CF-ACK + CF-Poll | |
1000 | Qos Data | |
1001 | Qos Data + CF-ACK | |
1010 | Qos Data + CF-Poll | |
1011 | Qos Data + CF-ACK + CF-Poll | |
1100 | Qos Null | |
1101 | Qos CF-ACK | |
1110 | Qos CF-Poll | |
1111 | Qos CF-ACK + CF-Poll |
To DS 与From DS位:
To DS=0 | To DS=1 | |
From DS=0 | 所有管理帧与控制帧。IBSS里的数据帧 | 基础结构型网络里无线工作站所传送的数据帧 |
From DS=1 | 基础结构型网络里无线工作站所收到的数据帧 | 无线桥接器上的数据帧 |
Duration/ID字段
Duration/ID字段紧跟在Frame Control字段之后。此字段有很多功用,有三种可能的形式:
第一种:代表当前所进行的传送预计使用媒介多少微秒。
第二种:值为32768,被解读为NAV。它让没收到Beacon帧的任何工作站都得以公告无竞争周期。
第三种:休眠中的工作站必须定期醒来。为确保不遗漏任何帧,从休眠状态醒来的工作站必须送出一个PS-Poll帧,以便从接入点取得之前缓存的任何帧。
Address字段
Address 1代表接收端、Address 2代表发送端、Address 3字段被接收端拿来过滤地址。在基础结构网络里,第三个地址字段会被接收端用来判断该帧是否属于其所关联的网络。
单播(unicast): 第一位为0,该地址代表单一工作站
组播(multicast): 第一位为1,该地址代表一组实体工作站
广播(broadcast):所有位为1,会传送给所有连接至无线媒介的工作站
目的地地址——最后的接收端
来源地址——代表传送的来源,每个帧只能来自单一工作站,因此Individual/Group位必然为0
接收端地址——代表负责处理该帧的工作站。如果是无线工作站,接收端地址即为目的地地址。如果帧的目的地是与接入点相连的Ethernet节点,接收端即为接入点的无线接口,而目的地址可能是连接至Ethernet的一部路由器。
发送端地址——代表将帧传送至无线媒介的无线接口。发送端地址通常只用于无线桥接。
基本服务集标识符(BSSID)——接入点无线接口所使用的MAC地址。
大部分的数据帧会用到3个字段:来源、目的地以及BSSID。
3.3.11 顺序控制位
由 4 个 bit 的 fragment number(片段编号)位以及 12 个 bit 的 sequence number(顺序编号)位所组成
3.3.12 帧主体( Frame Boby)
亦称为数据位,负责在工作站间传送上层数据( payload)。在最初制定的规格中, 802.11 帧最多可以传送 2304 个 bit 组的上层数据。 802.2 LLC 标头具有 8 个 bit 组,最多可以传送2296 个 bit 组的网络协议数据。防止分段必须在协议层加以处理。在 IP 网络中, Path MTU Discovery(路径最大传输单位查询; RFC1191 )将可避免大于 1500 个 bit 组的帧传递。
802.11与其他链路层技术不同之处:
1. 在 802.11 帧中并无任何上层协议的标记可供区别。
2. 802.11 通常不会将帧填补至最小长度。
3.3.13 帧检验序列( FCS)
和以太网一样, 802.11 帧也是以帧检验序列( frame check sequence,简称 FCS)作为结束。 FCS 通常被视为循环冗余码( cyclic redundancy check,简称 CRC),因为底层的数学运算相同。 FCS 让工作站得以检查所收到的帧的完整性。 FCS 的计算范围涵盖 MAC 标头里所有位以及帧主体。
和以太网一样, 802.11 帧也是以帧检验序列( frame check sequence,简称 FCS)作为结束。 FCS 通常被视为循环冗余码( cyclic redundancy check,简称 CRC),因为底层的数学运算相同。 FCS 让工作站得以检查所收到的帧的完整性。 FCS 的计算范围涵盖 MAC 标头里所有位以及帧主体。
3.4 802.11 对上层协议的封装
3.5 竞争式数据服务
原子交换程序——数据的交换过程必须视为单一整体。
举例而言,单点传播数据必须得到应答以确保数据传送无误。虽然整个数据的交换过程包含两个帧,但数据交换本身只算第一过程。只要有一方失误,整个过程就必须重新来过。
802.11 定义了两组截然不同的基本交换程序。其一为 DCF,用于竞争服务,详见本章。第二种交换方式为 PCF,用于免竞争服务(contention-free service)。
DCF 说使用的帧交换方式在 802.11 MAC 中占有决定性的地位。
3.5.1 广播与组播数据或管理帧
- 广播数据帧会在 Address1 位中填入广播地址
- 组播数据帧会在 Address1 位中填入组播地址
- 广播管理帧会在 Address1 位中填入广播地址( Beacon、 Probe Request 以及 IBSS ATIM 帧)
3.5.2 单点传播帧
单点传播帧必须得到应答以确保可靠性
3.5.2.1 单一帧(最后一个片段)及其正面应答
两部工作站之间的传输可靠性建立在简单的正面应答上。单点传播数据帧必须得到正面应答,否则该帧即会被认定已经丢失。
此帧会利用 NAV 为本身、应答及 SIFS 预定介质使用权。设定较长的 NAV,是为了替整个交换程序锁住虚拟载波,以保证接收端可以传送应答。因为此交换程序是以 ACK 做为结束,所以没有必要再锁住虚拟载波,因此该 ACK 中 NAV 会被设定为 0。
两部工作站之间的传输可靠性建立在简单的正面应答上。单点传播数据帧必须得到正面应答,否则该帧即会被认定已经丢失。
此帧会利用 NAV 为本身、应答及 SIFS 预定介质使用权。设定较长的 NAV,是为了替整个交换程序锁住虚拟载波,以保证接收端可以传送应答。因为此交换程序是以 ACK 做为结束,所以没有必要再锁住虚拟载波,因此该 ACK 中 NAV 会被设定为 0。
3.5.2.2 帧分段
包括 IP 在内,一些较上层的网络协议或多或少都会用到帧分段。在网络层进行分段的缺点是,接收端必须加以重组;如果帧在传输过程中遗失,整个封包就必须重传。在链路层使用分段机制可以提升速度,亦即以较小的 MTU 在转运点( hop)间传送数据。此外, 802.11 可以利用帧分段来避免干涉。无线点播干扰通常会以瞬间而高能量的尖波形式出现,而且经常与 AC 电源线同步。将帧加以分段,可保护大部分帧不遭受损害。基本分段机制如图 3-16 所示。
包括 IP 在内,一些较上层的网络协议或多或少都会用到帧分段。在网络层进行分段的缺点是,接收端必须加以重组;如果帧在传输过程中遗失,整个封包就必须重传。在链路层使用分段机制可以提升速度,亦即以较小的 MTU 在转运点( hop)间传送数据。此外, 802.11 可以利用帧分段来避免干涉。无线点播干扰通常会以瞬间而高能量的尖波形式出现,而且经常与 AC 电源线同步。将帧加以分段,可保护大部分帧不遭受损害。基本分段机制如图 3-16 所示。
帧分段是由 MAC 的 fragmentation threshold(切割门限)参数所控制。大部分的网卡驱动程序都允许使用者设定此参数。 任何超过分段门限的帧都会被加以分段, 分段方式因实际情况而异。调高分段门限意味着帧的传输负担较小,不过帧丢掉和损害的成本较高,因为将会有较多的数据必须丢弃与重传。调低分段门限意味着传输负担较重,不过在面临较恶劣的环境时,这种做法可以提供较佳的稳定性。
3.5.2.3 RTS/CTS
RTS/CTS 交换的做法和帧分段一开始没有什么两样, 只是 RTS 帧并未携带任何数据。 RTS/CTS 中的 NAV 可让 CTS 完成工作,而 CTS 则可用来为数据帧保留使用权。
RTS/CTS 交换的做法和帧分段一开始没有什么两样, 只是 RTS 帧并未携带任何数据。 RTS/CTS 中的 NAV 可让 CTS 完成工作,而 CTS 则可用来为数据帧保留使用权。
和帧分段一样,RTS/CTS 是由启动程序中的门限值来控制的。 超过该门限的帧由 RTS/CTS 先行清空介质, 而较小的帧则直接传送。
3.5.3.1 立即应答
基站可以对 PS-Poll(省电模式-轮询)帧立即作出应答。经过一段 SIFS(短帧间隔)时间,基站即可传送帧。 PS-Poll 帧的 Duration/ID 位中包含了 Association ID(连接识别码),因此基站可以判断有哪些帧是为该工作站所暂存的。
如果暂存的帧过大,则必须进行分段。
3.5.3.2 延迟应答
除了立即应答,基站可以先回复一个简单应答。这种做法称为延迟应答( deferred response),因为基站虽然回应了访问暂存帧的要求,但未并立即采取实际的发送行动。使用延迟应答的优点之一,在于基站方面的软件较易实现,因为应答信息可以通过芯片组立即传送,至于数据则可以先予以暂存,然后依正常过程传输。
除了立即应答,基站可以先回复一个简单应答。这种做法称为延迟应答( deferred response),因为基站虽然回应了访问暂存帧的要求,但未并立即采取实际的发送行动。使用延迟应答的优点之一,在于基站方面的软件较易实现,因为应答信息可以通过芯片组立即传送,至于数据则可以先予以暂存,然后依正常过程传输。
3.5.4 多种速率支持( Multirate Support)
能够以不同速度工作的网络技术必须具备一种机制,可以协调出一种收发端彼此均可接受的数据率。工作站必须能够适应随时变动的环境,必要时更改传输速率。
能够以不同速度工作的网络技术必须具备一种机制,可以协调出一种收发端彼此均可接受的数据率。工作站必须能够适应随时变动的环境,必要时更改传输速率。
- 每部工作站均保有一份速率清单,其中记录工作站与所连接 BSS 均支持的所有速率。(所谓 BSS,通常相当于一部基站,不过较新的产品可以让使用者依虚拟基站自订速率。)高于速率组合的传输速率是不允许用来传送帧的。
- 每个 BSS 必须负责维护一组基本速率, 即打算加入此 BSS 的工作站所必须支持的速率清单。任何传送至群组接收地址的帧必须以基本速率传送,确保所有工作站均可正确解读。
- 用来起始帧交换的控制帧,如 RTS 与 CTS,必须以基本速率组合中的一种速率进行传输。这一规则可以确保必须以 CTS 回应 RTS 帧的工作站,能够以相同速率工作。
- 发送给特定工作站的帧,会在 Address 1 位记载单点传播目的地址。单点传播帧( Unicast frame)可以使用目的端支持的任一速率传送。至于数据速率的选择方式,802.11 标准并未加以规范。
- ACK 或 CTS 之类的应答帧必须以基本速率组合所包含的速率传送, 但不能高于这次传输所使用的起始帧。应答帧必须使用与起始帧相同的调制方式( DSSS、 CCK或 OFDM)。
3.7.4.1 选速与降速
速率选择主要在决定一张网卡该在何时升速以提高链路质量。 速率选择如何实现,留给芯片厂商自行决定。
改变速率,可以通过信号质量(信噪比), 或者间接观察有多少帧需要重传。 当信号质量变差,芯片就会以降速来适应。
间接测量,则是监测瞬间或平均漏失多少帧,然后予以适度补偿。
3.6 帧的处理与桥接
无线基站的核心,其实就是桥接器,负责在无线与有线介质之间转换帧。
3.6 帧的处理与桥接
无线基站的核心,其实就是桥接器,负责在无线与有线介质之间转换帧。
3.6.1 无线媒介至有限媒介
1. 当接入点收到一个帧时,首先会检测该帧基本的完整性。
2-1. 传送至接入点的帧会将接入点的MAC地址作为802.11 MAC标头的Address 1字段。
2-2.802.11 MAC 接着监测且移出重复的帧。
3. 一旦基站判定需要进一步处理该帧,就必须予以解密,因为该帧会受到链路层安全算法的保护。
4. 成功解密之后,基站即检视该帧是否为帧片段,需要进一步重组。完整性保护( integrity protection)针对重组后完整帧,而不是个别的帧片段。
5.如果经过步骤 2-1 的 BSSID 检验,判定基站必须桥送该帧,较复杂的 802.11 MAC 标头就会被转换为较简单的以太网 MAC 标头。
5.如果经过步骤 2-1 的 BSSID 检验,判定基站必须桥送该帧,较复杂的 802.11 MAC 标头就会被转换为较简单的以太网 MAC 标头。
5-1.记录在 802.11 MAC 标头之 Address 3 位里的目的地址,会被复制到以太网的目的地址。
5-2. 记录在 802.11 MAC 标头之 Address 2 位里的源地址,会被复制到以太网的源地址。
5-3. 从 802.11 Data 位里的 SNAP 标头,将(Type)类型代码复制到以太网帧里的 Type 位。如果该以太网帧亦使用 SNAP,就复制整个 SNAP 标头。
5-4.顺序信息主要供帧片段重组之用,不过当帧被桥送之后即予以丢弃。
5-5.如果有标准的服务质量处理程序,即在此进行无线与有线的 Qos 对应。不过到目前为止,用来表示服务质量的形式,通常就是在有线帧中使用 802.1p优先性等级 bit,或者其他的控制形式。
6.重新计算帧检验码。以太网与 802.11 使用相同的算法来计算 FCS,不过 802.11 帧多出一些位,同时为 FCS 所保护。
7.所产生的新帧交付以太网界面传送。
3.6.2 有线介质至无线介质( Wired Medium to Wireless Medium)
1. 验证以太网 FCS 后,基站首先会检视是否需要进一步处理所接收到的帧,亦即检视该帧的目的地址是否属于目前与基站连接的工作站。2. 将 SNAP 标头附加于以太网帧的数据之前。上层封包是以 SNAP 标头进行封装,而其Type 位是自以太网帧里的类型代码复制而来。如果该以太网帧亦使用 SNAP,则复制整个 SNAP 标头。
3.对帧的传送进行排程。 802.11 包含复杂的省电过程,将帧置于传送序列之前,基站可能会将帧暂存于缓存区。省电过程将于第 8 章祥述。
4.一旦帧被置于序列待传,就会被赋予一个顺序编号。如有必要,所产生的数据可以用完整性检验值加以保护。如果帧需要分段,则会根据事先设定好的分段门限进行分段。分段帧时,将会在 Sequence Control 位指定片段编号。
5.如果帧需要保护,则对帧(或每个帧片段)的本体加密。
6. 802.11 MAC 标头是根据以太网 MAC 标头产生。
6-1. 将以太网 的目的地址复制到 802.11 MAC 标头的 Address 1 位。
6-2. 将 BSSID 置于 MAC 标头的 Address 2,以做为无线介质上之帧的发送者。
6-3. 将帧的源地址复制到 MAC 标头的 Address 3 位。
6-4. 将其他位填入 802.11 MAC 标头。也就是把预计传送时间填入 Duration 位,并把适当的旗标填入 Frame Control 位。
7. 重新计算帧检验码。以太网与 802.11 使用相同的算法来计算 FCS,不过 802.11 帧多出一些位,同时为 FCS 所保护。
8.所产生的新帧交付 802.11 界面传送。
8.所产生的新帧交付 802.11 界面传送。