有线数据包的分层处理:
应用层 |
传输层 |
网络层 |
链路层 |
无线数据包的分层处理:
Ethernet 有线数据包 |
LLC层 |
MAC层 |
PHY层 |
有线帧到无线帧的过程:
以下讲解一下Ethernet至802.11的传输过程:
1. 验证以太网 FCS 后,接入点首先会检查是否需要进一步处理所接收到的帧,亦即检视该帧的目的地址是否属于目前与接入点连接的工作站。
2. 将 SNAP 标头附加于以太网帧的数据之前。上层封包是以 SNAP 标头进行封装,而其Type 位是自以太网帧里的类型代码复制而来。如果该以太网帧亦使用 SNAP,则复制整个 SNAP 标头。
3. 对帧的传送进行调度。802.11 包含复杂的省电过程,将帧置于传送序列之前,接入点可能会将帧暂存于缓存区。
4. 一旦帧被置于队列待传,就会被赋予一个顺序编号。如有必要,所产生的数据可以用完整性检验值加以保护。如果帧需要分段,则会根据事先设定好的分段门限进行分段。分段帧时,将会在 Sequence Control 位指定片段编号。
5. 如果帧需要保护,则对帧(或每个帧片段)的主体加密。
6. 802.11 MAC 标头是根据以太网 MAC 标头产生。
a. 将以太网 的目的地址复制到 802.11 MAC 标头的 Address 1 位。
b. 将 BSSID 置于 MAC 标头的 Address 2,以做为无线媒介上帧的发送者。
c. 将帧的源地址复制到 MAC 标头的 Address 3 位。
d. 将其他位填入 802.11 MAC 标头。也就是把预计传送时间填入 Duration 位,
并把适当的标记填入 Frame Control 位。
7. 重新计算帧检验码。以太网与 802.11 使用相同的算法来计算 FCS,不过 802.11 帧多出一些位,同时受FCS 保护。
8. 所产生的新帧交付 802.11 接口传送。
无线帧至有线帧在这里就不详细介绍了
依照无线的分层,下面我们分别介绍在LLC、MAC、物理层分别对数据包的处理
LLC层对数据帧的处理:
和所有其他的 802 链路层一样,802.11 可以传输各种不同的网络层协议。和以太网不同的是,802.11 是以 802.2 的逻辑链路控制封装来携带上层协议。图 1 显示了如何以 802.2LLC封装来携带 IP 封包。
传输时,用来封装 LLC 数据的方式有两种。其中一种是 RFC 1042 所描述的方式,另外一种则是 802.1H 所规范的方式。两种标准各自有其别名。RFC 1042 有时候被称为 IETF 封装,而 802.1H 有时候则被称为隧道式封装(tunnel encapsulation).这两种方式极为相似,如图 1所示。此图最上方为以太网帧。在 IP 领域里,Type code 不是代表 IP 的本身的 OX0800(十进制的 2048),就是代表地址解析协议(简称 ARP)的 OX0806(十进制的 2054)。RFC 1042 与 802.1H 均衍生自 802.2 的子网访问协议(sub-network access protocol,简称 SNAP)。MAC 地址会被复制到封装帧(encapsulation frame)的开头,然后插入 SNAP标头。SNAP 标头一开始是目的服务访问点(destination service access point,简称 DSAP)与源服务访问点(source service access point,简称 SSAP)。然后是一个控制位。和高阶数据链路控制 (high-level data link control,简称 HDLC) 及其衍生协议一样
, 此控制位会被设定为 0x03,代表未编号信息(unnumbered information,简称 UI),对应到IP datagram 所谓的尽力传送best-effert delivery)范畴。SNAP 所置入的最后一个位是唯一标识符(organizationally uniqueidentifier,简称 OUI)。起初,IEEE 希望用一个 bit 组的服访问(service access point)来涵盖网络协议编号,不过后来证明这种看法过于乐观。因此,SNAP 只得从原来的以太网帧复制一份类型代码(type code)。802.11H 与 RFC 1042 之间
的唯一差异,在于其使用的 OUI。有些产品可以让使用者在两种封装标准间进行切换,虽然这种功能并不常见。以 Microsoft操作系统而AppleTalk 与 IPX 协议组预设使用 802.1H,其他协议则使用 RFC 1042。目前大部分基站均依循 Microsoft 的做法,不再提供封装方式的切换选项。事实上,由于 Microsoft
所采用的封装方式得到广泛的支持,因此 Wi-Fi 联盟的认证测试计划亦将它包
含在内。
图 1:802.11 里的 IP 封装
问题1:MAC headers为什么是24 or 30?
看上面的数据包,可以看到LLC子层的SNAP,这个包也体现了无线的层级构。那么问题来了:
问题2:我们的路由器LLC中的SNAP采用的哪种封装?
MAC层对数据帧的处理:
MAC层对数据帧的处理过程
提高吞吐量的几种方法:
1.更高的码率
2.更短的防护间隔(SGI)
3.更宽的带宽与更多的子载波(信道绑定)
4.更密集的调制方式
5.更多的空间流(MIMO)
6.帧聚合
上面的前5种方式,都是针对物理层速率的提升。
那么们来介绍一下帧聚合(涉及到MAC层),通过聚合帧减小额外开销来提升吞吐量的方式。
下面我们介绍一下两种帧聚合方式:
802.11n 包括 2 种方式的帧聚合:MSDU 聚合和 MPDU 聚合,这 2 种方式都是将多个帧聚合到一个帧中传输,从而减少了帧头和帧间隙的数量。另外,由于帧数量的减少,也在总体上降低了冲突的几率。 为了引入帧聚合机制, 802.11n 将最大帧长从 4KB 增加到 64KB。
MSDU 聚合(A-MSDU)
802.11 协议栈收集一定数量的上层报文,先将其聚合,再转化为 802.11 MAC 帧,即为MSDU 聚合。MSDU 聚合帧中的每个子帧不具有完整 802.11MAC 帧头,只具有 14 字节的子帧帧头和数据区。
一个MSDU是怎么形成的呢,MSDU就是来自上层的数据包IP packets+SNAP(经过LLC封装),涉及多个MSDU的话要把14 字节的子帧帧头考虑进来
以下是经过 MSDU 聚合后的完整的 802.11 物理层帧。
每个 MSDU 子帧包括子帧帧头、数据区、0~3 字节的填充区。帧头格式包括 DA、SA、Length,SA、DA 即为子帧的源端地址和目的端地址,length 为子帧的长度;数据区域为完整的 MSDU 数据;子帧要求要求 4 字节对齐,不足部分由填充域完成。
由于 MSDU 聚合后无独立的 802.11 MAC 帧头, 要求所聚合帧的 SA 和 DA 所映射的TA 和 RA 是相同的,也即所聚合的帧由同一个无线端和由同一个无线端接收。聚合后,所有的子帧都会采用统一的加密方式,而且经聚合的帧将只能具备一种 QoS 属性,不允许将不同 QoS 属性的帧聚合。
MPDU 聚合(A-MPDU)
由上面的MSDU聚合我们可以看到,MPDU=MSDU+MAC header+FCS=IP packet+8+28
MPDU 帧聚合是更低层次的聚合,802.11 协议栈首先收集一定数量的 802.11 MAC 帧,再将其进行聚合后打上 PHY 标头进行传输。MPDU 聚合帧中的每个子帧均具有完整的802.11 MAC 帧头。参考MSDU,AMPDU聚合之后共用的是物理头,而AMSDU聚合之后共用的是MAC头
Deilmiter字段的作用是便于接收端检测到聚合帧中各个子帧的边缘并将子帧提取出来。在解聚合算法中,接收端依据Delimiter中的Signature子域检测Delimiter的位置,然后根据CRC子域检验Delimiter的正确性。如果正确,则将MPDU提取出来,再进行下一个的检测,直到解聚合完成。
这里的MPDU就是MAC头部+FCS+MSDU
帧聚合的限制
1) 进行聚合的帧必须具备相同的接收端地址,即只有在同一个 AP 和 STA 之间传输的帧才能进行聚合。
2) 在发送端,必须准备一定数量的待发送帧进行聚合,因此会对某些帧带来延迟。
3) 不能将不同 QoS 等级的帧进行聚合。
4) 帧聚合增大了帧的长度,在信道恶劣的情况下,更容易发生错误。
通过帧聚合我们看一下的MSDU、MPDU的关系
名词介绍:
MSDU: MAC Service Data Unit。可以理解为传输的有效数据,MAC帧的data部分。
MPDU: MAC Protocol Data Unit。可以理解为经过MAC协议封装的帧,包括MAC帧头。
PLCP: Physical Layer Convergence Procedure。可以理解为PHY层的编码和封包过程。
PPDU: PLCP Protocol Data Unit。可以理解为PHY层封装的帧,包括PHY帧头和MAC帧。
A-MSDU: Aggregate MSDU。MSDU帧聚合。
A-MPDU: Aggregate MPDU。MPDU 帧聚合。
针对我们博通路由器,讲解一下MPDU所带来的吞吐量的提升
先介绍一下MPDU聚合所带来的MAC帧的改变
传统的帧格式:
MPDU 帧格式变更
802.11n的mac层给802.11的mac层加入了高吞吐量单元。所有新加的802.11n功能都是通过管理帧中的HT单元才得以实现,总体如下
抓包中显示,可见对HT的解析,omnipeek还是可行的
(一)HT Capability Info
不同的软件解析出来顺序可能不同,wireshark更贴近现实,而omnipeek则是顺序相反,不过解析的内容都是一样的
1.L-SIG TXOP保护: Legacy Signal Transmission Opportunity(传统信号域传输机会)。在L-SIG TXOP保护方式下,HT帧的L-SIG域包含一个时间值(此时间值应等于MAC帧头中的MAC持续时间值),要求传统设备直到这个时间结束后再进行正常收发。传统设备因无法接收在L-SIG持续时间范围内开始的PPDU,故在L-SIG TXOP内,传统接收机不会收到任何帧。若11n下支持L-SIG TXOP保护,HT Capability Info中的L-SIG TXOP Protection位应该置1,0代表不支持。
2.设置40MHz的非容忍位:如果BSS中有设备不支持40MHz,我们可以将此位设置为1,表示将阻止任何40MHz信道操作在该BSS,也就是不能使用40MHz
3.对PSMP的支持:多路轮询节能模式(power save multiple poll),置为1表示支持这个模式
4. Maximum A-MSDU Length:最大A-MSDU长度0=3839 bytes, 1 =7935 bytes
5. HT Delayed BlockAck:延时块确认,如果接收机能容纳多个数据块,则意味着接收机可以支持延迟back此时可以设置为1为支持延时块确认
6. RX STBC:STA能够使用STBC(时空分组编码)接收PPDU(表示协议数据单元),STBC在802.11n中是个可选的技术,用以在接收端提高信号强度,要使用STBC需要发射机和接受机同时支持STBC。STBC的出现是为不能用MIMO技术的接受机提供一种提高信号强度的方法
7. TX STBC:STA能够使用STBC传输PPDU
8.40MHz支持SGI短保护间隔):设置为1表示40MHz带宽下支持SGI(Short Guide Interval)用于在11n系统下缩短物理层头部开销,将原有的GI从800ns缩短为400ns,提高吞吐量。
9.40MHz支持SGI:设置为1表示20MHz带宽下支持SGI
10. HT Greenfield(绿地模式):当设置为1时,STA能够接收HT Greenfield PPDU。在该模式中传统设备无法解读HT传输,也就导致无法与传统设备关联。
11. SM Power Save(spatial multiplexing power save)空间复用节能模式,SMPS为支持多个发射机的设备提供了这样一种功能,即在保留一台发射机工作的情况下,暂时关闭其他发射机,从而达到节能的目的,下面提供了设置值与意义
12. Supported Channel Width:支持的信道带宽,0 为 only 20MHz, 1 为both 20MHz & 40MHz support.
13. LDPC Coding Capability,低密度就校验是802.11nMCS速率的可选编码,LDPC是BCC(二进制卷积编码)的一种替代方法,用以将信噪比提高到6dB。发射机和接受机都必须同时支持LDPC,否则至只能用BCC。在噪声较为严重的信道条件下,LDPC可改进通信的性能和可靠性。1为支持LDPC
(二)A-MPDU Parameters 参数字段
1. Minimum MPDU Start Spacing最小MPDU开始间隔:指定在开始传输一个MPDU并开始传输下一个MPDU之间经过的最小时间量。 以下值显示此子字段的编码(在上述捕获中,显示值为6表示8微秒)
0 = no restriction(无限制)
1 = 1/4 μs
2 = 1/2 μs
3 = 1 μs
4 = 2 μs
5 = 4 μs
6 = 8 μs
7 = 16 μs
2. Maximum A-MPDU Length:在关联期间由STA用于定义STA可以接收的最大A-MPDU长度。 该子字段的值是0-3之间的间隔,从以下公式计算的字节长度。
2^13 + Maximum A-MPDU Length Exponent) – 1,
当Maximum A-MPDU Length Exponent 分别为0.1.2.3时0=8191 8K), 1=16383 16K), 2=32767 32K) & 3=65535 64K)
(三)Supported MCS set支持速率集设置
MCS(Modulation and Coding Set,调制编码率) Index规定每种MCS下的物理层速率,11n中由于允许不同的空间流采用不同的调制方式,导致11n中共有77组MCS Index。通常厂商实现都采取了每路空间流相同调制编码的形式,因此77组MCS中只有前32组生效(即MCS0~MCS31)。MCS速率集可以从HT Capability Info中的Supported MCS Set field来读取,每一位代表一个MCS速率的支持情况。如下图所示则表示4路空间流均支持MCS0~31
所以对应的空间流数与MCS关系为下表
Spatial Streams MCS list
1 MCS0~MCS7
2 MCS8~MCS15
3 MCS16~MCS23
4 MCS24~MCS31
(四)HT Extended Capabilities扩展功能
RD Responder:反向协议(reverse direction protocol):反向协议是可选功能,用来为这样一种网络流量模式减少传输时间并增加效率:发射自信号源的传输后面通常跟着一个返回传输;比如,一个TCP SEND后面会跟着一个TCP ACK。RDP允许为原始传输和随后的响应保留介质。这样,响应设备就可以通过使用原始发射机分配的资源来传输响应,而不需要进行仲裁。
PCO(Phased Coexistence)相位共存,是为了在BSS中支持20MHz和40MHz需要的额外的信号和保护机制。
(五)Tx Beamforming Capabilities-TxBF发送波束成形
波束形成是802.11n中的一个可选功能,以改善无线客户端设备的性能。TxBF许需要客户端和AP都支持所用的指定类型的波束形成,有三种类型的波束形成:
1.传统波束形成(Universal):传统波束形成是为传统客户端提供的。传统波束形成是这样一种技术:调整发射信号,使相同信号的多个副本同相到达接收机,从而在接收端产生相长干涉并生成一个合并信号,该信号的强度要几倍与任何信号。但是802.11n标准不对传统波束形成提供协议支持,所以协议中并没有标志是否支持传统波束形成的字段。
2.隐式波束形成(Implicit):该类型只在支持隐式波束形成的设备之间才有作用。它依赖于发射机和接收机之间信道特征的相互作用。他从接受机发出的探测数据包中手机到了信道状态信息。隐式波束形成并不具备提供信道状态信息反馈功能。设备所支持的波束形成类型在这个字段做出了宣告
3.显式波束形成(Explicit):利用显式波束形成,802.11n协议为客户端提供了一种与发射机就信道状态信息(channel state information,CSI)进行通信的方法,该发是的发射机可以根据接收机的信道条件优化波束形成的信号的性能。TxBF用来表示对显性波束形成的支持
(六)ASEL Capabilities Antenna Selection Capability天线选择功能)
天线选择能力用于具有更多天线电路的系统,比无线射频链。 这不是设备的常见配置,因此,这些字段没有广泛使用。具体可以看cisco802.11无线网络部署指南P49有讲到。
通过以上的介绍,这里就有一个问题来了?
问题3:我们通过抓包怎么看路由器是进行MPDU的呢?
通过问题3我们知道了抓包看是否进行MPDU了,按照我们MPDU聚合的方式,我们传送数据的时候,比如说:TCP数据,这时发生了MPDU。
问题4:数据帧发生聚合,数据帧中是否有HT control字段呢?
数据传输会采用:
DATA+ACK基本机制)
谈到MPDU,我们就要介绍一下Block ACK
Block Acknowledgement通过使用一个ACK帧来完成对多个MPDU的应答,以降低这种情况下ACK帧的数量。
如聚合N包,那么久节省了(N-1)SIFS的时间和(N-1)个ACK的时间,同时
多个帧聚合也节省了DIFS时间和退避时间,就会带来吞吐量的提升。
关于BA的知识大家可以参考一下文档
下面是Block的抓包:
这里我们知道BA是多少字节就好了
物理层对数据帧的处理:
物理层物理层被分两个附属层( sublayer):物理层收敛程序( Physical Layer ConvergenceProcedure)简称 PLCP。( Physical Medium Dependent)简称PMD附属层。PLCP的功能在于结合来自 MAC 的帧与空中所传输的无线电波。PLCP同时会为帧加上自己的标头。通常,帧中会包含同步信号〈 preamble)。以协助接收数据的同步作业。不过,每种调制方式所
采用的同步信号均不相同,因此 PLCP会为准备传送的所有帧加上自己的标头。接着由 PMD负责将 PLCP所传来的每个位元,利用天线传送至空中。物理层还包含了频道净空评估( clear channel assessment,简称 CCA)功能。
数据帧主要是在PLCP被处理,在PLCP层有两种对数据帧的封装:
上面是两种封装形式;里面具体字段的含义等请参考无线权威指南第15章或者刘工关于物理层的介绍
我们前面介绍了MPDU聚合,也介绍了PPDU(可以理解为PHY层封装的帧,包括PHY帧头和MAC帧。)
那么我们介绍一下发生MPDU后,PPDU的帧802.11n 定义了 3 种 PHY 层帧格式——Non HT 格式,HT mixed 格式,HT Greenfield 格式。
Non HT格式:根据工作频段,该格式整个帧均符合802.11a格式或802.11g格式。对该格式的支持是强制的。
HT mixed格式:该格式的帧头包括Non HT域和HT域,Non HT域能够被802.11a或802.11g的STA识别,HT域和数据域则无法被其所识别。对该格式的支持是强制的。(采用与a/b/g/n前导码兼容的数据包传输)
HT Greenfield 格式:该格式的帧不包含 Non HT 域,只能被支持 HT 的 PHY 识别,不能兼容 11a 和 11g。对该格式的支持是可选的。(不包含a/b/g/n兼容部分的高吞吐量数据格式)
我们的路由器支持的是HT mixed这种格式,在这种模式下,HT增强功能可以与HT保护机制同时使用,HT保护机制允许与传统电台通信。HT混合模式提供了向下兼容能力,数据帧采用的封装
就是此种形式:
— L-STF: Non-HT Short Training Field(Non-HT 短训练序列)
— L-LTF: Non-HT Long Training Field(Non-HT 长训练序列)
— L-SIG: Non-HT SIGNAL Field(Non-HT 信号域)
— HT-SIG: HT SIGNAL Field(整个信号)
— HT-STF: HT Short Training Field (短训练序列)
— HT-GF-STF: HT greenfield Short Training Field
— HT-LTF1: First HT Long Training Field Data HT-LTF)
— HT-LTFs: Additional HT Long Training Fields Data HT-LTFs and Extension (延长)HT-LTFs)
— Data: The data field includes the PSDU
训练序列
PPDU 的帧头中包含 HT-STF 域和 HT-LTF 域。 HT-STF 域用于接收端进行自动增益控制(AGC)和时钟锁定,HT-LTF 域用于接收端评估信道,该信道包括从发送端 spatial mapper的输入 到接收端 spatial mapper 的输出。
有两类 HT-LTF:Data HT-LTF 和 Extension HT-LTF。DLTF 是 HT 帧中必有的域,用于接收端进行信道评估,以准确地对数据区进行解调,DLTF 的数量可能为 1,2 或 4,取决于发送端的空时流数目; ELTF 适用于发送链路数目大于空时流数目的场合, 以对信道更多分量进行评估,ELTF 的数量可能为 1,2 或 4,取决于额外的发送链路数目。如果 = ,则 HT-LTF 的数目等于 (当 =3 时例外,此时有 4 个 LTF );如果 > ,则 HT-LTF 数目
大于 ,则需要 ELTF 进行额外的评估 。
对于HT mixed格式和HT greenfield格式帧,有两类HT-LTF:Data HT-LTF和Extension HT-LTF。
DLTF是HT帧中必有的域,用于接收端进行信道评估,以准确地对数据区进行解调,DLTF的数量可能为1,2或4,取决于发送端的空时流数目,如下表;ELTF用于探测帧,适用于发送链路数目大于空时流数目的场合,以对信道更多分量进行评估,ELTF的数量可能为1,2或4,取决于额外的发送
链路数目,如下表。
Nsts |
Ndltf |
Ness |
Neltfs |
|
1 |
1 |
0 |
0 |
|
2 |
2 |
1 |
1 |
|
3 |
4 |
2 |
2 |
|
4 |
4 |
3 |
4 |
DLTF 数目与空时流数目关系 ELTF 数目与额外发送链路数目关系
介绍一下HT Mixed格式:
保护机制
对 802.11a/b/g 设备的兼容是 802.11n 草案的强制要求。与 802.11g 标准对 802.11b 标准的兼容一样,802.11n 也提供了一系列保护机制,以保证旧有标准的设备在 802.11n 网络中可以正常运行。802.11n 保护机制采用 HT-mixed 格式的物理层帧, 具备 HT-mixed 帧头和 802.11n 格式的数据域,HT-mixed 帧头包括 non-HT 域和 HT 域,前者可以被旧有标准的设备识别,得知信
道上有帧在传输以及传输将持续的时间;而 HT 域则是用于 11n 数据域接收的帧头。除mixed帧头以外, 11n也采用 CTS-to-self 的方式实现保护, 该方式是沿用了11g标准中的规定,详细参见11g相关白皮书。新加入的STA从AP的Beacon帧或probe response帧中的HT信息域中得知该网络中是否存在非HT的STA,以此决定是否采用保护机制。当 11n 的网络中加入了旧有标准的设备, 一方面 PHY 保护机制 (mixed 帧头和反身 CTS)会增加传输开销,另一方面传输相同的帧,旧有标准设备所耗时间大于 11n 设备,因此大大降低了 11n 网络的性能; 鉴于目前旧有标准设备主要是 11b 和 11g 客户端, 因此可以将 2.4G的 11n 网络和 5G 的 11n 网络重叠覆盖,5G 频段的网络可以充分发挥 11n 的带宽优势
HT帧头的Signal域包含了关键的编码和调制参数,用于解读后面的HT数据区。该Signal域包括2个部分,HT-SIG1和HT-SIG2,格式如下图所示:
各 bit 的意义如下表所示
综合以上过程的详解:我们得出了数据包经过各层是怎么被处理的
下面我总结一下:
有线的数据帧来自应用层的用户数据经过传输层的数据封装,在经过IP层的数据封装,再到以太网的数据封装,到达无线客户端的LLC层,LLC层负责包来自以太网的数据包封装成无线包(注意,我们的MSDU就是在里形成的,MSDU等于IP数据包(不包括MAC包头FCS校验码)加上SNAP包头 ,所以MSDU发生在MAC层),转换成MAC层数据包,MPDU形成在MAC层(MPDU等于MSDU+28,之所以加28而不是加34的原因是只有WDS才用Address4)再到物理层,PPDU发生在物理层,在通过射频芯片通过不同形式的调制和编码发射出去。
需注意:
PPDU长度是有限制的不能大于65535
这一点我们后来要用到
A-MSDU Pad/A-MPDU Pad 是填充字节,聚合的帧的MSDU和MPDU是4的整数倍,只有聚合才使用填充位,否则不使用