具体讲讲 l_length(legacy length) 和 length[i] 的作用和区别.
先给出总结,这两个field都是来形容packet data size, 区别在于运用的地方不同:
在802.11n以前,只有一个length, 它既定义packet data size, 也被接收端用于计算packet占据信道的时长(channel duration)
到了802.11n/ac/ax, 因为packet frame整体结构改变了,比如需要支持multi-user, 提供data size的功能变为length[i]负责(i代表user index)。 但为了兼容旧协议,原本的length变为l_length作为legacy parameter被保留,仅用于接收端拿来计算channel duration。
而区别在于,这里的channel duration和data size之间的关系变得更复杂,比如,它不再由单个user 所接受的data size决定,而是由最长的那个data size决定。因此l_length需要在发送端,通过包括MPDU data length在内的多个parameters共同计算得出。
再讲一下两个parameter的具体的信息
先讲l_length - 存在于 L-SIG field 的sub-field. (12bits )
无论是802.11a, 还是之后的802.11n/ac/ax, 这个 l_length的主要目的都是一样的:
结合Rate field,用于计算该frame在空中的存在时间(Air Duration/Time on Air). 这个duration被接收端stations拿来判断需要defer transmission多久。
再来看一下l_length在不同802.11版本中的细节变化:
在802.11a中,l_length(也就是length) indicated the number of octets in the PSDU.
Nsym: The number of OFDM symbols
Ndbps: The number of data bits per OFDM symbol.
length的用处主要有两个 (with rate field)
1. decoding the data part of the packet
2. Clear Channel Assessment (CCA) mechanism 拿来预测 packet duration.
在802.11n/ac/ax,由于新的技术内容,比如long/short guard interval, number of spatial stream, 以及extra preamble的出现,l_length value的计算方式变得更为复杂。