【WIFI】802.11AX(WIFI6)无线协商速率计算

2023-11-08

        从2019年末的iphone11系列开始,到后来的三星S10,在手机参数中总会有WIFI6这么一条参数,这里的WIFI6就是802.11的一个比较新的协议规范:802.11AX。

        因为笔者软件出生,对射频了解的不多,基本上也是靠查查找到,学习到了无线速率的计算方法,因为手头上的相关WIFI6的资料有限,网上也查不到比较全的无线速率对照表,所以干脆学习了一下,写了一段代码来计算无线各个参数下的WIFI6协商速率。

        能查到这里来的应该都是对802.11有一定了解的,所以一些细节东西就不展开去讲。

下面要讲的东西基本上是从华为学习过来的,原文链接如下:
https://support.huawei.com/enterprise/zh/doc/EDOC1100102758
公式如下:
*WiFi理论协商速率 =(符号位长×码率×子载波数量×空间流)÷ 传输时间*符号位长:不同调制方式的大小不同,某种调制方式下为一定值码率:不同调制方式的大小不同,某种调制方式下为一定制子载波数量:这里只计算有效子载波数量,即携带有效数据的载波数量空间流:就是我们常说的几发几收,1T1R,2T2R这种东西传输时间:不同协议时间不同,为一定值,注意我们计算时这里的时间要加上GI(帧间间隙)这个值在协议规范也是有一系列固定值的。

讲到这里就要列出来这些变量的主要取值了,首先是不同协议和不同频宽下的有效子载波数量。
有效子载波数量:

 传输时间:

 符号位长,码率以及调制方式:

 

有了以上的东西,再加上空间流即可完成计算,如计算11AX最大理论速率,8T8R:
11ax理论最大速率 =(10bit × 5/6 × (2*980) * 8) ÷ (12.8 + 0.8) = 9607.86Mbps

如果遇到查不到表的情况,并且有时候表不全的时候怎么办呢,笔者抽空写了段代码,可以计算并输出11ax的速率,附上代码:
 

/*
 * =====================================================================================
 *
 *       Filename:  ax_rate.c
 *
 *    Description:  cal 802.11AX wireless rate
 *
 *        Version:  1.0
 *        Created:  2020年03月06日 21时23分14秒
 *       Revision:  none
 *       Compiler:  gcc
 *
 *         Author:  lyx 
 *        Company:  xxx
 *
 * =====================================================================================
 */

#include <stdio.h>

#define TRANS_TIME_AX   12.8	//11ax基本传输耗时
#define BAND_WIDTH_20   20		//20M频宽
#define BAND_WIDTH_40   40		//40M频宽
#define BAND_WIDTH_80   80		//80M频宽
#define BAND_WIDTH_160   160	//160M频宽

float bit_symbol[12] = {1,2,3,4,4,5,5,5,8,8,10,10};   //不同解调方式/mcs对应的符号位长
float mcs_bit_rate[12] = {(float)1/2, (float)1/2, (float)3/4, (float)1/2, (float)3/4,\
    (float)1/2, (float)3/4, (float)5/6, (float)3/4, (float)5/6, (float)3/4, (float)5/6};  //mcs index对应的码率
float num_word_carr[4] = {234, 468, 980, 1960}; //不同频宽的子载波数量20/40/80/160


float cal_rate(int bandwidth, float GI, int mcs_index, float space_flow)
{
    float rate = 0;
    int bandwidth_index = -1;
    switch (bandwidth)
    {
        case BAND_WIDTH_20:
            bandwidth_index = 0;
            break;
        case BAND_WIDTH_40:
            bandwidth_index = 1;
            break;
        case BAND_WIDTH_80:
            bandwidth_index = 2;
            break;
        case BAND_WIDTH_160:
            bandwidth_index = 3;
            break;
        default:
            break;
    }

    rate = ( bit_symbol[mcs_index] * mcs_bit_rate[mcs_index] * num_word_carr[bandwidth_index] * space_flow ) / (TRANS_TIME_AX + GI);

    return rate;
}

int main(int argc, char **argv)
{
//    float rate1 = cal_rate(40,0.8,9,2);
    int mcs_idx = 0, band = 0;
    for (band = BAND_WIDTH_20; band <=BAND_WIDTH_80; band*=2)
    {
        for (mcs_idx = 0; mcs_idx < 12; mcs_idx++)
        {
            printf("%.1f\t", cal_rate(band,3.2,mcs_idx,2));
        }
        printf("\n");
        for (mcs_idx = 0; mcs_idx < 12; mcs_idx++)
        {
            printf("%.1f\t", cal_rate(band,1.6,mcs_idx,2));
        }
        printf("\n");
        for (mcs_idx = 0; mcs_idx < 12; mcs_idx++)
        {
            printf("%.1f\t", cal_rate(band,0.8,mcs_idx,2));
        }
        printf("\n");
    }
    return 0;
}

编译:

 运行:

因为图省事,就没用argv参数,调用全是写死了,只写了20M 40M 80M 和分别对应的GI, 2GI, 4GI 对应的速率。需要修改的自己修改吧,a,b,g,n,ac,ax的计算方式一样,注意GI,调制方式以及空间流合法就好了。 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【WIFI】802.11AX(WIFI6)无线协商速率计算 的相关文章

  • 【无标题】

    大家都知道该赛项的规程和样题向来都是模棱两可 从来不说具体的内容 导致选手在备赛时没有头绪 不知道该怎么训练 到了赛时发现题目和备赛的时候完全不一样 那么本文将以往年信息安全管理与评估赛项经验来解读今年2023年国赛的规程 帮助选手们指明方
  • DSCA190V 57310001-PK

    DSCA190V 57310001 PK DSCA190V 57310001 PK 具有两个可编程继电器功能 并安装在坚固的 XP 外壳中 DSCA190V 57310001 PK 即可使用 只需最少的最终用户校准 DSCA190V 573
  • 【安全】网络安全态势感知

    文章目录 一 态势感知简介 1 概念 2 形象举例 3 应具备的能力 二 为什么要态势感知 为什么网络安全态势感知很重要 三 态势感知系统的功能 四 如何评估态势感知的建设结果 五 什么是态势感知的三个层级 四 业界的态势感知产品 1 安全
  • 使用 C# 配置 Wifi 设置

    如何使用 C 紧凑框架 为 Win Mobile 应用程序配置 Wifi 设置 所以交易是 配置网络 隐藏APP的SSID 使用 TKIP 进行 WPA 身份验证 强制用户和密码 不会提示最终用户进行身份验证 看看智能设备框架 http w
  • 如何使用Python连接WiFi网络? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试用 Python 编写一个脚本 该脚本将使我能够搜索无线网络并连接到它们 有没有为此目的的Python 库 None
  • Wifi 睡眠,即使有锁

    总结 即使获取了wifi锁 当手机使用电池运行时 wifi也会在一段时间后断开 我已将问题简化为带有启动线程的按钮的单个活动 它只是向 PC 上运行的回显服务器发送 100 000 个字符串 每 100 毫秒一个字符串 请参阅下面的代码 我
  • 无法理解 PcapNG 文件中的 802.11 数据帧格式

    I have PcapNG由 Wireshark 创建的文件 我尝试用它来解析python pcapng However I cannot figure out how to reconcile the output I receive f
  • 在未越狱的 iOS 设备上启用/禁用 Wifi

    我的内部应用程序需要这个 我想在 ios 设备上切换 wifi 任何框架都可用 我尝试了以下代码 但它没有为我提供任何帮助 这不会改变我的 wifi 设置 Class BluetoothManager objc getClass Bluet
  • p2p0是android中WIFI DIRECT的无线接口吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 当我打印 Android 设备中的所有接口时 03 10 19 50 15 484 I System out 22415 lo 03 10
  • 启用/禁用 Microsoft 虚拟 WiFi 微型端口

    我禁用了我的Microsoft Virtual WiFi Miniport网络适 配器来自Control Panel Network and Internet Network Connections 只需右键单击微型端口网卡并单击 禁用 它
  • 如何在 Windows 8 中以编程方式检查/切换飞行模式?

    我必须检查 Windows 8 中是否启用了飞行模式 并且可能需要切换其状态 我目前正在开发 C NET 4 0 Windows 窗体应用程序 但此问题的答案不应受此限制 不幸的是 Metro 应用程序没有一种编程方式来更改 Windows
  • 代表移动通信系统中使用的蜂窝网络的六边形网格

    我对 Matlab 比较陌生 我想生成一个六边形网格来表示一个蜂窝网络 其中每个六边形都有特定的行为 我的问题是如何从方形网格变为六角形网格 传输矩阵 这是我到目前为止所拥有的 X Y meshgrid 0 60 figure 1 plot
  • Android:扫描 Wifi 网络 + 可选列表

    我正在尝试创建一个应用程序 让您扫描可用的 wifi 网络 然后将它们显示在可选列表中 为此 我尝试使用以下代码 package android nacho WifiScan import java util List import and
  • Java获取无线网络的SSID等信息

    我正在尝试用 Java 获取无线网络设备的 SSID 我尝试了官方网络教程http java sun com docs books tutorial networking nifs retriving html http java sun
  • iOS:同时使用 WiFi 和移动数据

    Setup 我的项目涉及一个 WiFi 相机 它创建一个 WiFi 热点 为了在相机上流式传输视频预览 浏览媒体 用户需要连接到相机的热点 Problem 用户无法同时使用 3G 4G 上的蜂窝数据 因为 iOS 设备已通过 WiFi 连接
  • 在我的 Android 应用程序中检测 5G NR (SA/NSA)

    我正在尝试检测 5G 网络 我使用电话管理器来获取网络类型 https developer android com reference android telephony TelephonyManager getNetworkType 即使
  • 如何打开实际上已关闭的 Wifi 适配器的无线电?

    我在用着托管无线网络 http managedwifi codeplex com获取我的 Wifi 适配器的无线电状态 如果收音机实际上已关闭 如何将其打开 像这样的东西 WlanClient wlanClient new WlanClie
  • 无论我如何尝试,“netsh wlan startHostednetwork”命令都不起作用

    C Windows system32 gt netsh wlan 显示驱动程序 接口名称 无线网络连接 Driver DW1501 Wireless N WLAN Half Mini Card Vendor Broadcom Provide
  • Android Wifi 通过具有相同 SSID 的 AP 漫游

    我发现 Android 系统在 Wifi 漫游方面表现不佳 我们有一个 Wifi 集中式网络 其中有许多具有单一 SSID 的 AP Adroid 手机无法无缝漫游 即使有其他 AP 具有相同 SSID 信号良好 Android 手机也会尝
  • 获取 Wi-Fi 配置文件信息

    我使用的是 Windows 8 1 它没有工具 带有 GUI 来管理 wifi 网络配置文件 所以我正在写一篇对我有帮助的文章 我做了一些谷歌搜索并发现托管 Wifi API https managedwifi codeplex com 并

随机推荐

  • 外网访问VMware虚拟机

    目的 主机上安装了VMware VMware上安装了Linux虚拟机 我安装的是Centos7 我想让虚拟机向外提供Web服务 本文记录如何让我的主机和外网用户可以访问VM虚拟机上的Web 网络环境 单IP服务器1台 提供固定IP1个 固定
  • java 私有云_基于MOS9.0的OpenStack私有云部署

    本手册中私有云部署操作是在完成Mos9 0源搭建的基础上 如果没有可用的Mos9 0源 fuel 请先完成Mos9 0源的搭建 一 网络环境要求 1 1网络清单 序号 网络名称 用途 1 PXE网络 用于OpenStack集群中其他节点从m
  • [转]QNX与Linux OS比较优劣-QNX与Linux两家未来有望独霸车载电子操作系统

    如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 声明 本文只用于个人学习交流 若不慎造成侵权 请及时联系我 立即予以改正 锋影 email 174176320 qq com 车载电子操作系
  • 密码学与网络安全笔记整理-数据完整性技术

    1 数据完整性 类似于通信中的校验码功能 在密码学领域数据完整性用于验证收到信息的正确性 校验收到的信息是否经过篡改 校验收到的信息是真实的发送者发送而非伪造 发送者通过编码为消息增加一些 冗余 生成一个校验值 并将该校验值附在消息之后 接
  • 基于深度学习的DDN图像去雨算法实战准备指南

    一 DDN图像去雨算法的复现代码下载 1 DDN的图像去雨算法的代码分为tensorflow版本和matlab版本 下载的链接分别如下 1 DDN tensorflow下载 https download csdn net download
  • border-box和content-box最直观的区别和解释

    Chrome浏览器box sizing默认是content box content box就是元素的width和height决定了元素的宽高 这意味着元素的border和padding等不能算在元素的width和height中 paddin
  • python怎么用for循环找出最大值_用for循环语句写一个在输入的十个数字中求最大和最小值的python程序应该怎么写?...

    在输入的十个数字中求最大和最小值的 python 代码 这个需求 在不同时间来看 解题思路不同 所需要的 python 知识点不同 作为萌新的我 为此特意整理了 3 种解法 以及相应的知识点笔记 解法A 不使用列表 min 或 max 只是
  • 笔记:Element UI Dialog弹框 水平垂直居中

    需求 element dialog 默认不是水平居中的 需要改为水平垂直居中 方法一 全局设置 在App vue中添加代码 全局设置 element ui dialog水平垂直居中 el dialog left 50 top 50 tran
  • 超全超详细的安装nvidia显卡驱动教程

    最近想做的事情有点多 感觉卡不够用了 师兄不知道在实验室机房哪个地方找了一个两卡的废旧服务器 开始上手才发现服务器显卡驱动都没装 显卡还是个GTX1060 6G 甜点级别显卡 跑点小东西玩玩 打点小比赛行了 准备工作 安装驱动 1 使用标准
  • udp包最大数据长度是多少

    原文地址 https blog csdn net caoshangpa article details 51530685 每个udp包的最大大小是多少 65507 约等于 64K 为什么最大是65507 因为udp包头有2个byte用于记录
  • 谷粒商城(一)

    谷粒商城 一 1 环境搭建 安装 docker docker 安装 mysql docker 安装 redis 安装配置 git 准备工具 IDEA VsCode 从 gitee 初始化项目 2 创建微服务项目 1 创建项目 2 初始化数据
  • 大疆睿炽Tello EDU无人机python操控之三——使用easyGUI模拟操控界面控制Tello EDU

    使用easyGUI模拟操控界面控制Tello EDU 说到easyGUI这个模块 大家应该都不陌生了 模块名中有个 easy 是的 这代表它用起来很简单 这个模块就是一个能够轻易创建用户界面的工具 所以本篇文章我们将实现使用用户界面来对Te
  • Gateway、Nacos依赖启动问题解决

    今天是2022年开工的第一天 本是摸鱼带薪的一天 最终被一个bug所打扰 这怎么可以呢 新的一年第一个bug记录一下 祝大家 新年快乐 摸摸头 代码样例 报错如下 启动即报错 直接好家伙 下面是排查报错的步骤 相信英语跟我一样不好的同学 翻
  • 全排列算法的c++实现(非递归)

    本文算法出自 梦辽软件 只实现了文中所说的第五种算法 全排列 非递归求顺序 算法 1 建立位置数组 即对位置进行排列 排列成功后转换为元素的排列 2 按如下算法求全排列 设P是1 n 位置编号 的一个全排列 p p1 p2 pn p1 p2
  • Dynamics CRM IFD部署之后遇到的登录问题

    Dynamics CRM IFD部署之后遇到的登录问题 证书问题 共用证书 域控问题 跨域登录 登录后报404 证书问题 共用证书 因为公司只给了一个证书 且UAT环境和生产环境都进行了IFD部署 当在同一个浏览器同时登录UAT和生产环境就
  • COCO数据集annotation内容

    本文转载自 http blog csdn net qq 30401249 article details 72636414 找了很多coco数据集的资料 感觉里面的东西有些还是不清楚 顺便就转载下 instances train2014 j
  • 2020年度全球人工智能十大事件

    当前 新一代人工智能技术在全球蓬勃兴起 迅猛发展 与大数据 区块链 5G等新技术相互融合 相互因应 为经济社会发展尤其是数字经济发展注入新动能 正在深刻改变社会生产生活方式 与此同时 如何在新技术变革浪潮中始终立于主动 实现人工智能等前沿科
  • 机器学习基础篇-数据清洗

    Capture 1 在机器学习的工作流中 数据清洗环节尤为重要 接下来首先让我们看一下数据预处理的流程图 总的来说 主要包含下面三大块 收集数据 标注数据 提升数据质量 Capture 2 NO 1 Data Errors 所谓数据错误 就
  • 【2023】Nacos下载与安装配置(2.2.3版本示例)

    目录 1 Nacos概述 2 下载地址和版本 2 修改配置文件 2 1 配置鉴定密钥 自定义密钥 2 2 配置数据库 3 启动 4 项目注册 4 1 配置yml文件 4 2 在启动类上加入注解 4 3 使用 bat文件启动 需要学习naco
  • 【WIFI】802.11AX(WIFI6)无线协商速率计算

    从2019年末的iphone11系列开始 到后来的三星S10 在手机参数中总会有WIFI6这么一条参数 这里的WIFI6就是802 11的一个比较新的协议规范 802 11AX 因为笔者软件出生 对射频了解的不多 基本上也是靠查查找到 学习