Block Ack机制
BA机制
BA机制是在802.11n中出现的,中文叫做块确认机制,其通过将多个“acknowledgment”汇总到一个帧中来提高信道效率。
分类
- immediate BA 立即应答:适用于高带宽,低时延业务;
- delayed BA 延迟应答:适用于时延可容忍业务。
流程(安装、Data/Block Ack、拆除)
- BA机制通过ADDBA request和ADDBA response这两个帧交换来启动。启动之后,Qos数据可以从发端向接收端发送;
- BA这个block发送的时刻是TXOP(poll TXOP或者通过EDCA机制赢得TXOP),即在接收端获得资源后,发送这个Block Ack;
安装
- Tx STA(发起方)首先通过discovering来检查其延迟块确认和立即块确认功能位(Capability Information 域中的Delayed Block Ack和Immediate Block Ack能力比特)来检查预期的接收方STA是否能够参与BlockAck机制;
- 如果接收端STA具有BA机制能力,发端STA便发送一个ADDBA Request帧,此帧会指示这个Block Ack是为哪种TID流量安装的;
- 接收端STA有选择权,可以接受也可以不接受;注意:无论接收方STA是否“接受BA机制的建立”,接收端STA都要向发端STA回复ADDBA Response帧,“接受与否”这个消息是包含在ADDBA Response帧中的;如果接受,收、发端之间就建立了块应答机制(BA机制)。
- ADDBA request中的Block Ack Policy和Buffer Size域是发端给接收端的建议,接收方可采纳,也可不采纳。当接收端STA接受了BA机制的建立,就应该为BA分配缓存。
数据传输&应答
块确认机制建立之后,应该有以下操作:
- 发起端以SIFS间隔发送QoS数据帧块;
- 块内总的“帧数量”(块:帧聚合)不超过ADDBA response帧中的Buffer Size域的值;
- 每一个帧中的Qos control field内的Ack Policy subfield应设置为Block Ack。
需要注意的点:
- 由于此种“帧聚合”方式发送的帧的长度比较大,所以一般都会使用“RTS/CTS”保护机制;
- 发起端可以将帧块分散在几个TXOP中发送;
- 具有不同TID的帧序列可在同一TXOP中;
- 同一TXOP中可有不同TID的MSDU交织;
- 同一TXOP中可有不同RA的MSDU交织;
- 在多TXOP内传输的属于同一TID的帧可以合起来使用一个BlockAck帧作为应答。
立即应答BA:
- 如果使用立即应答策略,接收端应用Block Ack响应BlockAckReq帧;
- 如接收端发送Block Ack帧,发起端应更新记录并重传Block Ack帧中未应答的帧;
- 重传既可在单独块中,也可在另一块中。
延迟应答BA
- 如果使用延迟应答策略,接收端应用Ack响应BlockAckReq帧;(即,接收端先用Ack帧回复发端,告知其已经收到了BlockReq帧);
- 接收端应在随后获得的TXOP中发送Block Ack帧;一旦Block Ack帧中的内容准备好,接收端就应该在最早的TXOP中以最高优先级AC发送Block Ack帧。
BA拆除
主动方式
当发送方没有数据可发送,且最后的Block Ack交换已经完成,发送方应该通过向其接收方发送DELBA帧指示结束使用Block Ack机制。接收方不需回应管理响应帧。DELBA接收方释放所有为Block Ack传输分配的资源。
自动拆除
如果在Block Ack超时值的持续时间内,没有从对等方接收到BlockAck,BlockAckReq或QoS数据帧(根据Block Ack策略发送),则可能会自动拆除已建立的Block Ack机制。
The Block Ack Timeout Value field (2 byte) is used in the ADDBA Request and Response frames to indicate the timeout value for Block Ack.
Block Ack机制相关推荐
- mysql jstorm_jstorm进阶-ack机制及KafkaSpout
安装部署使用 ack机制 ack机制原理 这里不讲什么是ack机制,可以参考官网的文档Ack 机制 我们只要知道它是使用异或xor的原理即可: A xor A = 0 A xor B xor B xo ...
- ack strom 保证只有一次_Storm容错机制(一):ACK机制
前言 好久没有写文章了,然后一连就写了三篇, 前两篇文章 Storm入门(一):编程模型 Storm入门(二):架构模型和集群部署 都是一些比较简单的入门教程,这一篇我们来聊一聊稍微高级点的话题, 关 ...
- 【转】ActiveMQ消息传送机制以及ACK机制详解
2019独角兽企业重金招聘Python工程师标准>>> 本文转载自 http://shift-alt-ctrl.iteye.com/blog/2020182 AcitveMQ是作为一 ...
- Apache Storm 实时流处理系统ACK机制以及源码分析
1.ACK机制简介 Storm的可靠性是指Storm会告知用户每一个消息单元是否在一个指定的时间(timeout)内被完全处理.完全处理的意思是该MessageId绑定的源Tuple以及由该源Tupl ...
- 用redis实现消息队列(实时消费+ack机制)【转】
用redis实现消息队列(实时消费+ack机制) java queue 消息队列 redis 消息队列 首先做简单的引入. MQ主要是用来: 解耦应用. 异步化消息 流量削峰填谷 目前使用的较多的有A ...
- ack是什么,如何使用Ack机制,如何关闭Ack机制,基本实现,STORM的消息容错机制,Ack机制
1.ack是什么 ack 机制是storm整个技术体系中非常闪亮的一个创新点. 通过Ack机制,spout发送出去的每一条消息,都可以确定是被成功处理或失败处理, 从而可以让开发者采取动作.比如在Me ...
- RabbitMQ的消息确认ACK机制
1.什么是消息确认ACK. 答:如果在处理消息的过程中,消费者的服务器在处理消息的时候出现异常,那么可能这条正在处理的消息就没有完成消息消费,数据就会丢失.为了确保数据不会丢失,RabbitMQ支持消 ...
- ActiveMQ消息传送机制以及ACK机制详解
2019独角兽企业重金招聘Python工程师标准>>> AcitveMQ是作为一种消息存储和分发组件,涉及到client与broker端数据交互的方方面面,它不仅要担保消息的存储安全 ...
- kafkaspot在ack机制下如何保证内存不溢
storm框架中的kafkaspout类实现的是BaseRichSpout,它里面已经重写了fail和ack方法,所以我们的bolt必须实现ack机制,就可以保证消息的重新发送:如果不实现ack机制, ...
最新文章
- ButterKnife 8.4.0 @BindView 失败,nullpointerexception
- idea断点_IDEA Debug 无法进入断点的解决方法
- gdb调试多进程和多线程命令
- day20 django
- Android 2.3 r1 中文 API (57) —— ScaleGestureDetector
- 想要拥有自己的jar包吗?------超级简单的打jar包教程~~~
- Git删除本地/本地远程/远程服务器分支
- js中for循环的优化写法
- Android应用程序版本号管理(官方文档中文版) 2011-08-07 22:03:36
- 计算机网络原理实验实验一:使用网络协议分析仪Wireshark
- 【数据结构】AOE网——关键路径
- 权力的游戏——读《原则2 :应对变化中的世界秩序》(中)
- 国科大学习资料--人工智能原理与算法-2021年期末考试题解析(学长整理)
- 连接到linux桌面,widows 远程连接到linux 桌面!
- 新浪微博PC端模拟登陆
- MALTAB中 imshow函数出错
- mac更改管理员密码
- vpa函数python_关于取MATLAB的有效位数问题,以及vpa函数
- JAVA程序之矩形、三角形、平行四边形、菱形
- Android NDK开发配置NDK