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分辨率的图片上百张,当我右键进行批量处理的时候&…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter
java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用(Math::max) 2 函数接口…...
JS红宝书笔记 - 3.3 变量
要定义变量,可以使用var操作符,后跟变量名 ES实现变量初始化,因此可以同时定义变量并设置它的值 使用var操作符定义的变量会成为包含它的函数的局部变量。 在函数内定义变量时省略var操作符,可以创建一个全局变量 如果需要定义…...
Django RBAC项目后端实战 - 03 DRF权限控制实现
项目背景 在上一篇文章中,我们完成了JWT认证系统的集成。本篇文章将实现基于Redis的RBAC权限控制系统,为系统提供细粒度的权限控制。 开发目标 实现基于Redis的权限缓存机制开发DRF权限控制类实现权限管理API配置权限白名单 前置配置 在开始开发权限…...