WiFi 发射链路 MCS 自适应机制介绍
链路适配是指发射机选择最优的MCS向特定的接收机发送数据的过程。链路自适应算法的实现有其特殊性,但通常基于测量的数据包错误率(PER)。大多数算法监视PER并调整MCS以跟踪一个最佳的长期平均值,以平衡由于使用更高MCS发送更短数据包而减少的开销和由于更高MCS增加的PER而增加的重传开销。
根据需要确定PER值意味着在一段时间内监视数据包错误,这段时间相对于数据包的持续时间来说很长。例如,要非常粗略地测量10% /,就需要发送器发送10个出错的数据包。正因为如此,基于PER的链路适应缓慢地适应不断变化的信道条件。在许多环境中,信道随着站的移动或环境本身的变化而随时间变化,例如荧光灯泡中50hz或60hz的电离周期,环境中物体的移动,或外部噪声源的变化。这些变化的条件在时间尺度上发生的速度可能比可以测量的速度快。因此,链路自适应算法选择的是长期最优的MCS,而不是瞬时最优的MCS。
如何更紧密地跟踪信道的变化可能提高性能考虑图15.1,而抽象地显示瞬时容量反映不断变化的信道条件,与吞吐量基于MCS选择实现长期10%和吞吐量基于MCS选择实现瞬间10%。当MCS被选择来满足一个长期的,数据包错误主要发生在瞬时容量低于长期平均值的地方。在极端的情况下,所有的数据包错误都发生在糟糕的信道条件下,这些条件将占10%的时间。在一个不那么极端的情况下,短时间的不良通道条件仍然会导致大部分的包丢失。
如果选定的MCS跟踪信道变化,那么当信道条件较差时,通过选择一个更稳健的MCS,可以通过更高的平均吞吐量实现相同的PER。通道条件有利于提高数据速率。由于信道条件差的时间段相对较短,并且在信道条件好的情况下可以发送更多数据,因此总体性能得到了提高。

MCS feedback
实现快速链路适应的一种机制是通过定期提供反馈让接收方参与MCS的选择过程。802.11n和802.11ac修正案为HT控制域添加了MCS反馈域,作为提供这种反馈的手段。接收机不断地监测接收到的传输质量或信道本身的特性,并对利用信道条件的最佳MCS提供建议。发射机采取建议的MCS,并将其与它所拥有的知识(例如发射功率放大器退关)结合起来,得出一个MCS,应该最优地使用链路。
802.11n和802.11ac修正案并没有指定接收端获得MCS建议的技术。一个好的假设是,建议的MCS是在接收方看来能够优化吞吐量的MCS。然而,吞吐量取决于所使用的排序算法和可设想的替代优化点,例如通过瞄准低的PER来优化延迟,以避免重传。很可能一个基于MCS反馈的实际链路自适应算法需要自适应地调整建议的MCS,可能是接收机在其MCS建议的高或低方面一贯出错的因素。
对于各种波束形成形式,发射机可以根据信道状态的知识进行MCS的选择。通过隐式反馈波束形成和基于CSI的显式反馈波束形成,发射机可以直接了解信道状态。通过压缩和非压缩显式波束形成,发射机以每个空间流的信噪比值的形式接收信道的间接信息。因此,发射机可以使用信道状态知识进行MCS选择。在某些情况下,当接收机有干扰时,发射机可以从mcs反馈中受益。
MCS feedback mechanisms
工作站可以通过三种方式接收MCS反馈:
*直接。工作站发送一个请求MCS反馈并收到一个即时响应。这种方法允许请求者接收并应用反馈TXOP相同。
*延迟。一个工作站发送一个请求MCS反馈和延迟响应发生,当响应器在随后的TXOP中传输响应时应答器。
*主动。工作站接收MCS反馈,而不受任何要求的影响反馈。
MCS反馈机制在“ HT控制”字段中受支持,当封装在“控制包装器”帧中时,该字段可能存在于QoS数据帧中,也可能存在于诸如ACK和BA之类的控制帧中。
有了802.11ac修订版,HT控制字段现在有两个变体:802.11n中引入了HT变体HT控制字段,而802.11ac中引入了VHT变体HT控制字段。 这两个变量的区别在于字段中第一位的设置。 两种变体都支持上面概述的用于MCS反馈的机制,而VHT变体提供更多细节以适应更宽的信道操作,更大数量的空间流以及关于为其提供MCS反馈的PPDU类型的更多细节。
MCS feedback using the HT variant HT Control field
为了请求反馈,站点将HT变量HT控制字段中的MRQ(MCS请求)字段设置为1,并为MSI(MCS请求序列标识符)选择一个介于0到6之间的值。 在延迟响应的情况下,MSI用于将响应与请求相关联,并且所选值取决于实现。 在MCS反馈响应中,响应者将MSFI(MCS反馈序列标识符)设置为相应MCS请求中的MSI值。 当响应者提供未经请求的MCS反馈时,MFSI值将设置为7。
如果HT变体HT控制字段包含在一个聚合中的多个MPDU中,则MRQ和MSI字段将设置为相同的值,并有效地充当单个请求。 HT变量HT Control字段应包括在所有帧中,以构成一个集合以提高鲁棒性。
MCS请求应在交错的探测PPDU中发送,或者应在NDP通告字段设置为1的情况下发送,并随后进行NDP传输。 探测PPDU或NDP中HT-LTF的数量由要探测的空间尺寸的总数确定,包括除PPDU数据部分使用的尺寸之外的任何额外空间尺寸。
收到MCS请求后,响应者应计算MCS估算值。 响应者可以选择使用以下任何MFB(MCS反馈)和MFSI组合发送响应帧:
* MFB = 127,MFSI =7。没有提供有关立即进行中的请求或任何其他未决请求的信息。
* MFB = 127,MFSI在0到6的范围内。响应者无法提供反馈。
* MFB的范围是0到126,MFSI的范围是0到6。响应者正在为先前收到的请求提供反馈,而MSI等于MFSI。
* MFB的范围是0到126,MFSI =7。响应者正在提供未经请求的反馈。
硬件限制可能会限制响应者可以处理的未完成的MCS请求的数量。 当来自不同请求者或来自同一请求者但具有不同MSI值的新MCS请求到达时,响应者可以选择忽略该请求或放弃当前请求并开始对新请求进行计算。 如果响应者放弃未决的MCS估计计算,则应返回MFB设置为127且MFSI设置为与MCS请求中的相应MSI相同的值的响应。
响应者受到它可以提出的MCS建议的限制。 它不能提出包含比请求者支持的特殊流更多的特殊流的MCS建议。 除非请求者在“支持的MCS设置”字段的“ Tx不等调制支持”位中指出它能够进行不等调制,否则它也不应提出MCS建议进行不等调制。
MCS feedback using the VHT variant HT Control field
站点通过在VHT功能元素中设置VHT链路适应能力字段来指示其使用VHT变体HT控制字段对链路适应的支持。 可能有三种支持级别:无支持,仅支持未经请求的反馈或支持未经请求和已请求的反馈。
为了征求反馈,站点将VHT变量HT控制字段中的MRQ字段设置为1。响应站点收到反馈请求后,将计算SNR值和建议的MCS以及空间流的数量。 响应站计算基于承载请求的PPDU,除非请求由VHT NDP通告帧承载,在这种情况下,计算基于帧之后的VHT NDP。
对反馈请求的响应在VHT变体HT控制字段中进行,并且可以是立即的(在携带确认的控制包装帧中),也可以是延迟的(在随后的QoS数据帧中)。响应包括来自请求的MSI值。 响应者无法提供响应,可以通过将MCS,N_STS设置为全1来发送空响应。
工作站也可以提供未经请求的反馈,在这种情况下,VHT变量HT控制字段中的Unsolicited字段设置为1。使用未经请求的反馈,在PPDU上提供使用VHT变量HT Control字段443的附加15.4 MCS反馈, 计算SNR,MCS和N_STS。 如果MU PPDU,编码类型,是否使用STBC,是否对PPDU进行波束成形(基于VHT-SIG-A PHY标头中BEAMFORMED位的设置),则该附加信息包括组ID;以及 PPDU的信道带宽。
相关文章:
WiFi 发射链路 MCS 自适应机制介绍
链路适配是指发射机选择最优的MCS向特定的接收机发送数据的过程。链路自适应算法的实现有其特殊性,但通常基于测量的数据包错误率(PER)。大多数算法监视PER并调整MCS以跟踪一个最佳的长期平均值,以平衡由于使用更高MCS发送更短数据包而减少的开销和由于更…...
【Linux常用命令】-文件写入相关
一、rm命令,文件删除 1.相关参数 -f(–force):强制删除文件或目录,无需确认。 -r(–recursive):递归地删除目录及其内容。 -i(–interactive):交…...
枚举的第一行
2023年11月26日 问题: 好奇enum的所声明的枚举类的第一行是什么 从java技术卷1中第五章5.6中,了解是枚举类的实例 验证 错误信息: 解释: 此时只有有参构造 在这个枚举类里不能使用空,大概意思是说不能使用空参创建实例 校验 在原有的基础上创建一个无参构造 结果:不再报错,第…...
LeetCode.707设计链表(链表相关操作一篇就够了)
LeetCode.707设计链表 1.问题描述2.解题思路3.代码 1.问题描述 你可以选择使用单链表或者双链表,设计并实现自己的链表。 单链表中的节点应该具备两个属性:val 和 next 。val 是当前节点的值,next 是指向下一个节点的指针/引用。 如果是双…...
图论——二部图及其算法
什么是二部图 二部图的判定 例子1 任选一个节点染成红色 红色的邻居染成蓝色 蓝色邻居染成红色 例子2 这个不是二部图 无权二部图的最大匹配...
实现简单的操作服务器和客户端(下)
一、说明 描述:本教程介绍如何使用 simple_action_client 库创建斐波那契操作客户端。此示例程序创建一个操作客户端并将目标发送到操作服务器。 内容 代码代码解释编译运行操作客户端连接服务器和客户端...
第二十章 解读PASCAL VOC2012与MS COCO数据集(工具)
PASCAL VOC2012数据集 Pascal VOC2012官网地址:http://host.robots.ox.ac.uk/pascal/VOC/voc2012/ 官方发表关于介绍数据集的文章 《The PASCALVisual Object Classes Challenge: A Retrospective》:http://host.robots.ox.ac.uk/pascal/VOC/pubs/everi…...
FreeRTOS列表和列表项
目录 列表和列表项 关于列表的一些操作 初始化列表 初始化列表项 列表插入列表项 列表项末尾插入 重点 pxIndex指向的是什么 xItemValue存的是什么 vListInsertEnd()的插入位置 List的头尾在哪里? 通用链表的三种实现方式 方法一 方法二 方法三 总结 Fre…...
【go语言实现一个webSocket的一个demo】
go语言实现一个webSocket的一个demo 前端代码 <html lang"zh-CN"><head></head><body> <script type"text/javascript">// header(Access-Control-Allow-Origin:*);var sock null;var wsuri "ws://127.0.0.1:9999&…...
es6字符串模板之标签化模板
es6字符串模板 我们经常搞前端开发工作的都会用到。它可以保留字符串换行格式,还能接受变量。这个给前端的字符串拼接带来了非常大的方便。但是还有一种用法可能是我们平时还是没有怎么用到的。 styled-components 在项目中熟悉使用react的童鞋可能会用过styled-…...
opencv入门1.1:从视频或摄像头读取图像
cv::VideoCapture是 OpenCV 中用于从视频文件或摄像头捕获图像帧的类。它提供了各种方法和函数,用于读取和处理视频数据。 以下是对 cv::VideoCapture类的详细解释和说明: 1. 打开视频源 为了使用 cv::VideoCapture,我们首先需要打开一个视…...
【数据中台】开源项目(1)-LarkMidTable
LarkMidTable 是一站式开源的数据中台,实现中台的 基础建设,数据治理,数据开发,监控告警,数据服务,数据的可视化,实现高效赋能数据前台并提供数据服务的产品。 系统演示地址 : www.l…...
VUE简易购物车程序
目录 效果预览图 完整代码 效果预览图 完整代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>…...
如何清除redis缓存?
首先进入redis安装目录 当前目录下执行CMD命令(shift 右键 -> 选择 ‘在此处打开Powershell窗口’ ) 执行 redis-cli.exe -h 127.0.0.1 -p 6379flushall...
接收网络包的过程——从硬件网卡解析到IP层
当一些网络包到来触发了中断,内核处理完这些网络包之后,我们可以先进入主动轮询 poll 网卡的方式,主动去接收到来的网络包。如果一直有,就一直处理,等处理告一段落,就返回干其他的事情。当再有下一批网络包…...
正则化与正则剪枝
写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除! 文章目录 引言正则化为什么会过拟合拉格朗日与正则化梯度衰减与正则化 应用解决过拟合网络剪枝 …...
Element-Plus 图标自动导入
🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🌺 仓库主页: Gitee 💫 Github 💫 GitCode 💖 欢迎点赞…...
关于DCDC电源中的PWM与PFM
在开关电源DCDC中,我们经常会听到PWM模式与PFM模式。 关于,这两种模式,小编在之前的文章中,做过简单的描述。今天就来针对性的就这两种模式展开讲讲。 PWM:脉冲宽度调制,即频率不变,不断调整脉…...
S25FL系列FLASH读写的FPGA实现
文章目录 实现思路具体实现子模块实现top模块 测试Something 实现思路 建议读者先对 S25FL-S 系列 FLASH 进行了解,我之前的博文中有详细介绍。 笔者的芯片具体型号为 S25FL256SAGNFI00,存储容量 256Mb,增强高性能 EHPLC,4KB 与 6…...
一次【自定义编辑器功能脚本】【调用时内存爆仓】事故排查
一 、事故描述 我有一个需求:在工程文件中找得到所有的图片(Texture 2D),然后把WebGL发布打包时的图片压缩规则进行修改。 项目中有图片2千多张,其中2k分辨率的图片上百张,当我右键进行批量处理的时候&…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
