前言
灵活组播服务(Flexible multicast service, FMS)在802.11v提出,用于帮助设备节能的一种技术。在WNM中,FMS的实现是可选的。
本文基于《802.11-2020》对FMS的功能、帧结构、流程等方面进行简要介绍,旨在了解基本的原理。
缩写
Acronyms | Definition |
---|---|
FMS | Flexible multicast service |
BUs | bufferable units |
DTIM | delivery traffic indication map |
WNM | Wireless Multimedia |
TCLAS | traffic classification .The specification of certain parameter values to identify a PDU or a MSDU. The classification process is performed above the MAC SAP, within the MLME, or within the MAC, based on the type of classification. |
SAP | service access point |
MLME | MAC sublayer management entity |
简介
常规的Power save下,STA需要下每个DTIM醒来接收组播业务。FMS则使non-AP STA能够为多组Rx组播流请求一个备用(alternate)的DTIM。在这种机制下:
- STA可以在备用的DTIM而非每个常规DTIM醒来接收相应的组播流,从而获得更长的Sleep时间,达到省电的目的;
- STA能够为组播业务建立高于最小可用数据速率的数据速率和delivery interval。
帧格式
FMS能力
STA在Extended Capabilities->FMS指示了是否支持FMS。
dot11FMSActivated | Extended Capabilities->FMS |
---|---|
1 | Supported(1) |
0 | Not Supported(0) |
WNM action FMS type
FMS request和FMS response是一种管理帧中的WNM action帧,通过帧结构中的Category=WNM指示。
并在WNM action字段中指明子类型为FMS Request和FMS Response。
FMS Request
FMS Request帧non-AP STA发送给AP,以请求指定的FMS并为一组组寻址流建议delivery interval。FMS Request也由non-AP STA发送,请求对先前的FMS请求进行修改。FMS Request的动作字段格式如图9-928所示。
non-AP STA可以发送FMS Request,用以请求FMS并为一组组播流建议delivery interval。
non-AP STA也可以发送FMS Request,用以修改前一次的FMS 请求。
Category和WNM Action见上文。
FMS Request Element
字段 | 说明 |
---|---|
Element ID | FMS Request的Element ID=87 |
Length | 后续长度指示 |
FMS Token | FMS Token 为一组FMS流的标志。如果是新的FMS req,FMS Token=0;否则FMS Token=AP在FMS Response中分配的值 |
FMS Request Subelements | 其中的Subelement ID指示不同的类型。Subelement ID=1则为FMS subelement;Subelement ID=221则为Vendor Specific subelement;Subelement ID=其他值为预留。其中Vendor Specific subelement是运营商自定义元素,本文不展开 |
FMS subelement
字段 | 说明 |
---|---|
Subelement ID | Subelement ID=1指示该字段为FMS subelement |
Length | 后续字段长度 |
Delivery Interval | 指示STA请求的传输流周期,单位DTIM。默认值=1。如果为0表示STA不再使用TCLAS elements标识的FMS流。 |
Max Delivery Interval | 指示STA支持的最大传输流周期,单位DTIM。Max Delivery Interval=0表示STA愿意接受AP支持的任一最大delivery interval。 |
Rate Identification | 指示STA接收组播帧的请求的接收速率,详见《802.11-2020》9.4.1.32。如果STA并不请求特定的接收速率,则该字段为0。 |
FMS ID | FMSID由接入点(AP)分配给FMS成功请求之后的特定组寻址流的标识符。如果这是一个新的FMS request,FMSID=reserved。否则,FMSID设置为AP在FMS响应元素中分配的值。 |
TCLAS Elements | TCLAS Elements字段包含一个或多个TCLAS元素,用于指定传输流过滤器。TCLAS Elements数量有限,需满足FMS request elements<=255octets。 |
TCLAS Processing Element(opional) | 可选字段,定义如何处理多个TCLAS元素。 |
Vendor Specific element
运营商自定义元素,本文不展开。
FMS Response
FMS Response提供有关组播帧传送的信息。
FMS Response element
字段 | 说明 |
---|---|
Element ID | FMS Response的Element ID=88 |
Length | 后续长度指示 |
FMS Token | FMS Token是一组FMS流的标识,这组FMS流共享计数器,计数器由AP维护FMS Counter ID来标识。 |
FMS Response Subelements | 其中的Subelement ID指示不同的类型。Subelement ID=1则为FMS Status subelement;Subelement ID=2则为TCLAS Status subelement;Subelement ID=221则为Vendor Specific subelement;Subelement ID=其他值为预留。其中Vendor Specific subelement是运营商自定义元素,本文不展开 |
FMS Status subelement
字段 | 说明 |
---|---|
Subelement ID | Subelement ID=1指示该字段为FMS subelement |
Length | 后续字段长度 |
Element Status | 指示对于STA请求的Delivery Interval的响应状态。详见下图 |
Delivery Interval | 定义与该FMSID对应的流的帧的连续传输之间的DTIM周期的最小整数。 |
Max Delivery Interval | 定义了AP用于对应于FMSID的流的最大delivery interval。Max Delivery Interval =0表示对于FMSID标识的流,AP没有最大delivery interval。 |
FMSID | FMSID由接入点(AP)分配给FMS成功请求之后的特定组寻址流的标识符。 |
FMS Counter | 包含FMS Counter ID、Current Count两个字段。FMS Counter ID表示AP为特定FMS流分配的计数器标识。FMS Status subelement-> FMS Counter –>Current Count目前为预留 |
Rate Identification | 指示用于组播传输的数据速率。如果Rate Identification =0,表示未指定组播速率。 |
Multicast Address | 包含与此FMS response相关的组播传输的MAC地址。 |
其中Element Status各个值的含义如下:
Element Status | Description |
---|---|
0 | Accept |
1 | Deny, due to request format error or ambiguous classifier. |
2 | Deny, due to lack of resources on the AP. |
3 | Deny, due to requested classifier(s) matching 2 or more existing streams on different intervals. |
4 | Deny, by policy, requested stream or filter is not permitted to participate in the service. |
5 | Deny, reason unspecified. |
6 | Alternate proposed, due to existing stream with different delivery interval. |
7 | Alternate proposed, due to policy limits on the AP. |
8 | Alternate proposed, because the AP changed the delivery interval. |
9 | Multicast rate changes not allowed. |
10 | Terminate, due to an AP policy change. |
11 | Terminate, due to lack of resources of the AP. |
12 | Terminate, due to other FMS stream with higher priority. |
13 | Alternate proposed, because the AP changed the maximum delivery interval. |
14 | Alternate proposed, because the AP is unable to provide requested TCLAS-based classifiers. |
15–255 | Reserved |
TCLAS Status subelement
字段 | 说明 |
---|---|
Subelement ID | Subelement ID=2指示该字段为TCLAS Status subelement |
Length | 后续字段长度 |
FMSID | FMSID由接入点(AP)分配给FMS成功请求之后的特定组寻址流的标识符。 |
TCLAS Elements | TCLAS Elements字段包含一个或多个TCLAS元素,用于指定传输流过滤器。TCLAS Elements数量有限,需满足FMS request elements<=255octets。 |
TCLAS Processing Element | 可选字段,定义如何处理多个TCLAS元素。 |
Vendor Specific element
运营商自定义元素,本文不展开。
FMS Descriptor element
Beacon->FMS Descriptor定义了AP缓存的组播BUs(group addressed BUs)的信息。
字段 | 说明 |
---|---|
Element ID | FMS Descriptor的Element ID=86 |
Length | 后续长度指示 |
Number of FMS Counters | 定义FMS Descriptor->FMS Counters中包含的FMS Counter字段的个数 |
FMS Counters | 在组播BUs分配了特定delivery interval后,STA基于FMS Counters对应的组播FMS流何时发送。FMS Counters包含0~多个FMS Counter字段。每个FMS Counter字段包含FMS Counter ID、Current Count两个子字段。FMS Counter ID表示AP为特定FMS流分配的计数器标识;Current Count指示了下一个DTIM Beacon之前还有多少个DTIM beacon(包括当前的)。当AP接收到1~多个FMS流,则至少要包含1个FMS Counter字段。最多允许有8个FMS计数器。 |
FMSIDs | 包含0~多个FMSID。每个FMSID由AP分配,长1octet。包含FMSID说明AP已经和缓存了组播BUs,并且在DTIM Beacon后可立即传输。 |
FMS流程
基本流程
dot11FMSActivated=True时,AP要在Beacon中携带FMS Descriptor,FMS Descriptor指示了FMS组播BUs(bufferable units)。如果AP没有缓存的Bus,则FMS Descriptor-> Length=1。AP应为一个nontransmitted BSSID在Beacon-> Multiple BSSID element->corresponding Nontransmitted BSSID Profile中包含FMS Descriptor。
AP支持任意数量的FMS流,且支持1~8种不同的FMS流delivery interval,对应8个FMS计数器。不同的FMSID可以拥有相同的delivery interval,因此会共享同一个FMS计数器。换而言之,一个FMS计数器对应唯一的delivery interval,而可能对应多个FMS流。
每次DTIM Beacon,FMS counter - -(实际应该是子字段Current Count - -)。
FMS counter减到0时,AP缓存对应FMS流的BUs将会在下一个DTIM Beacon之后发送。
发送完对应FMS流的BUs,AP将重置对应FMS counter为对应FMS流的delivery interval。
不使用FMS的non-AP STA则需要在每个DTIM间隔唤醒以接收组播BUs。
支持FMS功能的STA,不论是哪种流,都应支持delivery interval=1。
STA通过发送FMS Request帧或Reassociation Request帧来请求启用FMS模式。携带1到多个FMS Request elements,其中每个FMS Request element携带1~多个FMS subelements。每个FMS subelement标识一个FMS流、及请求该流的delivery interval和maximum delivery interval。
AP响应FMS Response,其中FMS Response element按顺序与请求里的FMS Request element一一对应;每个FMS Response element包含1个FMS Status subelement,及0~多个其他的subelements(例如TCLAS Status subelement、Vendor Specific subelement)。
如果AP接受请求的FMS subelement和对应的delivery interval,则相应FMS Status subelement中的Element Status应设置为Accept,并且FMSID分配为非0值。
如果请求的FMS subelement中的FMS流匹配到已经使用的delivery interval,则AP将该FMS流分配对应的FMS Counter ID(对应delivery interval)。
AP可以重新调度由FMSID标识的FMS流,以使该FMS流的传输时间与STA在相同的delivery interval已经接收的其它FMS流的传输时间一致。为此,AP有以下两个选项:
- 使用FMS流通知STA。即AP应在出现两个连续Beacon帧的Current Count字段上保持非0值且不变。
- 当前Current Count=0时,将一个未经请求的FMS Response发送到原始FMS Response帧中包含的组播地址,该组地址带有更新的delivery interval。AP将此FMS Response作为一个组播,并在合适的DTIM(所有STA都醒着接收)发送。
AP可以发送一个未经请求的FMS Response以终止FMS的使用,其中对应FMSID的delivery interval设置为0,Element Status设置为10~12(“Terminate”类型),并以任何理由恢复FMSID对应的任何FMS流的默认(non-FMS)传输规则。
如果STA请求了非0值的delivery interval,并且指定了max delivery interval,则AP不得修改大于non-AP STA指定的max delivery interval的流的delivery interval。
AP递交同一FMSID的缓存MSDU时,顺序按照MSDU在MAC Data SAP接收到的顺序。
如果AP拒绝该FMS请求,需要在FMS Status subelement中设置为1~5即deny,及相应的原因。
如果AP从FMS请求指定的值中选择一个备用delivery interval或备用max delivery interval,需要在FMS Status subelement中设置为6~8即Alternate proposed,及相应的原因。
为了终止某个FMS流(标识为FMSID)的使用,non-AP STA应发送FMS Request帧,其中对应该FMSID的delivery interval=0。
AP应对格式错误的FMS Request或Reassociation Request作出响应,其中FMS Response frame 或Reassociation Response拒绝所有FMS Request element,并指明FMS Status code=1(拒绝,原因:请求格式错误或分类器不明确)。
FMS 响应流程
支持FMS的non-AP STA在接收到FMS Response(其中的Addr1==STA MAC或者AP组播)时,基于FMS Response->FMS Status subelement-> Element Status会有不同的处理。
STA接收到的FMS Response->FMS Status subelement-> Element Status | AP/STA处理 |
---|---|
Accept(0) | 如果STA在FMS Request请求了非0值的delivery interval,则之后STA与AP将以新的delivery interval交互指定FMS流的传输。STA在收到FMS Response的下一DTIM Beacon醒来以同步对应FMS流的FMS Current Count;一旦同步上,STA无需在每个DTIM醒来接收组播缓存数据 |
Deny(1~5) | AP不采用STA请求的delivery interval,而是在每个DTIM传输对应的FMS流 |
Alternate proposed (6~8,13) | AP不采纳STA 在FMS Request里申请的delivery interval 和maximum delivery interval;AP在FMS Status subelement中提出自己期望使用的delivery interval 和maximum delivery interval(基于STA发的另一个FMS Request中指定的delivery interval 和maximum delivery interval);STA可以发送一个新的FMS Request,包含AP建议的delivery interval 和maximum delivery interval,如果AP接收此请求,将以新的值进行交互 |
Alternate proposed(14) | AP不采纳STA 在FMS Request里申请的delivery interval 和maximum delivery interval;AP将修改TCLAS Status subelement-> TCLAS element或TCLAS Processing element中的部分字段并返回给STA作为指示。STA如果接收到修改TCLAS element,其中Classifier Mask=0和 Classifier Parameter=0,STA认为表示AP未提供建议值。 |
Terminate(10~12) | AP终止指定FMSID对应的流的FMS传输,而采用DTIM间隔传输;STA在每个DTIM醒来接收组播缓存数据。 |
FMS组播速率选择
支持FMS的STA在FMS Request会推荐较高组播速率。AP可向STA发送FMS响应帧以改变STA的多播速率。
AP选速时,速率不得高于现有STA和请求STA提供的最低速率值。
AP调度时TXVECTOR参数,包括FORMAT、NON_HT_MODULATION、PREAMBLE_TYPE、MCS、CH_BANDWIDTH、 STBC、FEC_CODING、GI_TYPE需要兼容现有STA和请求STA的能力。
AP可向STA发送FMS Response以改变STA的组播速率。
当AP向STA发送FMS Response->Element Status=“Multicast rate changes not allowed”,则表示AP不允许组播速率的修改。那么STA就不应再请求改变组播速率。
总结
FMS机制使得STA能够为指定组播流请求一个备用的DTIM,以及对应的组播发送速率,以此减少STA醒来接收组播数据的时间,达到省电的目的。
参考资料
[1] 《802.11-2020》