Wi-Fi数据帧类别

news2025/1/15 8:39:43

网络中传送的业务数据对服务质量(QualityofService,QoS)有不同的要求,例如语音业务需要实时被传送,它对时延的大小很敏感。当W-Fi MAC层在同时传输语音业务和普通业务的数据时,语音业务就需要被高优先级发送。

MAC数据帧定义传输类别(Traffc Identifer,TID)字段,用于指示业务优先级。包含TID的MAC数据帧被称为QoS数据帧(QoS data)。不包含TID的MAC数据帧,则称为非OoS数据帧(Non-OoS data)。如下图所示:

MAC层把数据业务分为8个类型,用TID0~7来表示不同业务类型的优先等级。MAC层按照优先级由高到低的次序传输不同的数据业务。

同时,从无线信道接入的角度,802.11定义了4种无线接入类别(AccessCategory,AC),包括背景流业务(AC Background,AC_BK)、尽量传输业务(AC Best Effort,AC_BE)、视频业务(AC Video,AC_VI)和语音业务(AC Voice,AC_VO),其中AC_VO优先级最高,其次是AC_VI,然后是AC_BE和AC_BK,MAC层标准规定了高优先级数据优先访问无线信道资源。业务数据的优先级与无线接入类型的映射关系如下表所示。

上层用户数据优先级

Wi-Fi PHY层优先级

说明

1(背景流,background,BK)

1(AC_BK)

背景流级别

1(默认等级)

1(AC_BK)

上层用户数据没有指示优先级时,采用该默认级别

0(尽量传输,Bestefort,BE)

2(AC_BE)

尽量传输级别

3(普通,Excellent Effort)

2(AC_BE)

尽量传输级别

4(负载控制,Controlled Load)

3(AC_VI)

视频流级别

5(视频流,video,VI)

3(AC_VI)

视频流级别

6(语音业务,voice,VO)

4(AC_VO)

语音业务级别

7(网络控制,network control)

4(AC_VO)

语音业务级别

注:数字越大代表优先级越高。

根据MAC数据帧包含TID的情况,下表列出了相应的数据帧分类。

帧类型

用途

Data

不包含TID信息的数据帧。如果收发双方有一方不支持优先级,例如,旧的 802.11b/g设备,则需要使用该类型收发数据

Null

不包含数据部分的Data帧,它一般作为查询使用,例如,AP发送Null查询每个STA的缓存状态。STA也可以主动向AP发送Null来获取AP上的缓存数据

QoS Data

包含TID信息的数据帧。收发双方都需要支持优先级数据报文。例如,802.11n及以后定义的设备需要使用QoS Data收发数据

QoS Null

不包含数据部分的QoS Data帧。功能等同于上面Null类型的数据帧


FAQ

问题一:应用层如何改变Wi-Fi QoS的优先级?

在应用层改变Wi-Fi的QoS(服务质量)优先级,可以通过操作数据包的DSCP(Differentiated Services Code Point)或者802.11e/WMM(Wi-Fi Multimedia)标记来实现。这些机制允许应用根据数据流的重要性为其分配不同的传输优先级,确保实时性需求高的流量(如语音、视频)得到优先传输。

1. 通过DSCP改变QoS优先级

DSCP是网络层的QoS标记机制,通过在IP包头的TOS(Type of Service)字段设置不同的DSCP值,路由器和交换机可以根据该值为不同的数据流提供差异化的服务。

修改DSCP值的步骤:

应用层可以在发送数据时为其分配特定的DSCP值。例如,在Linux上使用setsockopt可以修改socket的DSCP值。

int dscp_value = 46; // 例如 EF(Expedited Forwarding)优先级,用于实时应用

setsockopt(socket_fd, IPPROTO_IP, IP_TOS, &dscp_value, sizeof(dscp_value));

这样设置后,所有通过这个socket发送的IP数据包的TOS字段将包含所设置的DSCP值,网络设备会根据DSCP值优先处理这些数据包。

常见DSCP类别:

  • 46 (EF): Expedited Forwarding,通常用于语音应用
  • 34 (AF41): Assured Forwarding,通常用于视频流
  • 0 (BE): Best Effort,默认优先级,适用于大多数普通数据

2. 通过WMM改变Wi-Fi层QoS

WMM是802.11e标准的子集,允许通过无线网络上的数据包排队机制为不同的数据流分配不同的优先级。WMM定义了四个访问类别(Access Categories, AC),每个类别都有不同的优先级:

  • AC_VO (Voice): 语音,高优先级
  • AC_VI (Video): 视频,次高优先级
  • AC_BE (Best Effort): 普通数据,默认优先级
  • AC_BK (Background): 背景数据,最低优先级

修改 WMM 优先级:

应用层可以通过设置802.1p或TID(Traffic Identifier)值来控制WMM的优先级。不同的应用可以通过设置socket选项或使用特定库来改变数据包的优先级。

例如,使用setsockopt设置WMM参数:

int tos_value = 0xD0; // 对应 WMM AC_VO(语音优先)

setsockopt(socket_fd, SOL_SOCKET, SO_PRIORITY, &tos_value, sizeof(tos_value));

3. 应用层工具操作 QoS

一些应用层工具也可以用于修改QoS设置,控制数据包的优先级。例如:

tc工具(Linux 下的流量控制工具):

通过tc可以为特定的数据流(如IP地址、端口)分配QoS优先级。你可以定义过滤器,限制不同流量的带宽或优先级。

# 设置带有高优先级(如 EF 类别)的流量

sudo tc qdisc add dev wlan0 root handle 1: htb default 12

sudo tc class add dev wlan0 parent 1: classid 1:1 htb rate 1gbit

sudo tc filter add dev wlan0 protocol ip parent 1:0 prio 1 u32 match ip tos 0x2c 0xff flowid 1:1

问题二:iperf的数据如何设置QoS类别?

在iperf中,数据流的DSCP(Differentiated Services Code Point)值可以通过修改IP标头中的TOS(Type of Service)字段来设置。这样可以将流量打上不同的QoS标记,让路由器或交换机对数据包进行差异化处理。iperf3设置DSCP(TOS):

在iperf3中,你可以使用--tos参数设置DSCP值。例如:

iperf3 -c --tos 0xB8

DSCP与WMM AC的典型映射关系:

不同的网络设备、无线设备可能会略有不同的映射规则,但通常可以通过DSCP的值将流量映射到WMM的4类访问类别。以下是典型的DSCP和WMM AC的对应关系:

WMM Access Category (AC)

DSCP 代码点范围

常用 DSCP

说明

AC_VO (语音)

DSCP 48 - 63

46 (EF)

用于语音流量(低延迟、实时性需求)

AC_VI (视频)

DSCP 32 - 47

34 (AF41), 40

用于视频流量(次于语音的实时性需求)

AC_BE (最佳努力)

DSCP 0 - 31

0 (BE), 10

默认的流量类别,通常是一般数据传输

AC_BK (后台)

DSCP 1 - 7

8 (AF11)

后台数据(对延迟不敏感)

具体DSCP值的解释:

  • EF (Expedited Forwarding, DSCP 46): 主要用于语音和实时流量,低延迟、高优先级,通常映射到 AC_VO。
  • AF (Assured Forwarding): 根据优先级被划分为不同的子类,典型的是:
    • AF41 (DSCP 34): 高优先级视频流量,通常映射到AC_VI。
    • AF31 (DSCP 26): 中等优先级流量,通常映射到AC_BE。
    • AF11 (DSCP 10): 低优先级流量,可能映射到AC_BK。
  • BE (Best Effort, DSCP 0): 通常用于没有明确 QoS 要求的流量,默认映射到 AC_BE。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2214967.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

当下的时代?

我这两天刚接触一个人,错误之皇,每做一件小事的时候他都像救命稻草一样抓着,有一天我一看,嚯,好家伙,他抱着的是已经让我仰望的参天大树了! 这个时代需要我们从无限思维的视角和做法去努力;它不取决于我们现在有多少,而取决于我们未来的成长幅度是多少&a…

动态规划算法专题(七):两个数组的dp问题

目录 1、最长公共子序列 1.1 算法原理 1.2 算法代码 2、不相交的线 2.1 算法原理 2.2 算法代码 3、不同的子序列 3.1 算法原理 3.2 算法代码 4、通配符匹配(hard ★★★) 4.1 算法原理 4.2 算法代码 5、正则表达式匹配(hard ★…

Vue-admin-box后台管理框架

文章目录 1、项目概述2、技术栈3、 特色功能4、基础模板5、 项目演示6、 源码地址7、 演示地址8、小结Vue-Admin-Box,一款精心打造的Vue.js后台管理模板,旨在为开发者提供高效、美观且易于扩展的后台解决方案。它集成了现代Web开发的最佳实践,包括响应式设计、模块化开发、丰…

服务器数据恢复—服务器宕机导致挂载的V7000存储文件系统损坏的数据恢复案例

服务器存储数据恢复环境: 一台挂载在Windows server服务器上的v7000存储。存储空间划分了一个分区,采用NTFS文件系统,存放oracle数据库。 服务器存储故障: 服务器在运行过程中宕机,于是管理员重启服务器。服务器进入系…

针对珠宝,手表等配饰的高保真虚拟试穿解决方案IDM-VTON

今天给大家介绍一种针对配饰的高保真虚拟试穿解决方案IDM-VTON,该方案旨在填补当前虚拟试穿技术在高端配饰(如珠宝和手表)领域的空白。现有的虚拟试穿模型主要集中在服装上,IDM-VTON结合了2D虚拟试穿技术与其他计算机视觉模型&…

N1安装grafana

apt-get install -y adduser libfontconfig1 musl wget https://dl.grafana.com/enterprise/release/grafana-enterprise_10.0.10_arm64.debdpkg -i grafana-enterprise_10.0.10_arm64.debsystemctl daemon-reload systemctl enable grafana.service --now ip:3000 默认密码…

[Linux] 层层深入理解文件系统——(3)磁盘组织存储的文件

标题:[Linux] 层层深入理解文件系统——(3)磁盘组织组织存储的文件 个人主页水墨不写bug 目录 一、磁盘中的文件 1)磁盘的物理结构 2)磁盘的CHS寻址法 3)磁盘的空间管理 二、磁盘如何组织存储文件 三…

止步阿里一面。。。

时间过的真快,转眼间国庆已经过去一周了,又到了新的一周,继续分享最新的面经。 今天分享的是粉丝在阿里巴巴的一面,考察了数据库、redis、kafka、ES和项目,数据库和redis不用多说,项目必用面试必考&#x…

【隐私计算篇】替换半同态使用全同态加速计算联邦机器学习算法的实证分析

1. 背景介绍 联邦学习(Federated Learning,FL)是隐私计算中常见的一种技术范式,其本质是一种面向可信数据流通的分布式机器学习框架,允许多个参与方在不共享其本地数据的前提下,协同训练机器学习模型。与传…

Python | Leetcode Python题解之第479题最大回文数乘积

题目: 题解: class Solution:def largestPalindrome(self, n: int) -> int:if n 1:return 9upper 10 ** n - 1for left in range(upper, upper // 10, -1): # 枚举回文数的左半部分p, x left, leftwhile x:p p * 10 x % 10 # 翻转左半部分到其…

【C语言刷力扣】1748.唯一元素的和

题目: 法一 解题思路: 由于 nums.length 小于100,新建数组 num[101],用来遍历存放 nums[i]出现的次数。 int sumOfUnique(int* nums, int numsSize) {int result 0;int num[101] {0}; // memset(num, 0, sizof(num));for (int…

写一个菜谱网站,数据库应该怎么设计?AI回答我动手!

大部分问题使用chatglm4-9b进行回答,总体效果不错,大家可以来试试。关于如何使用ChatGLM4-9b模型,可以参考:在启智AI平台实践ChatGLM4-9B聊天机器人MindSpore-CSDN博客 设计数据库 问题 写一个菜谱网站,数据库应该怎…

mongodb-7.0.14分片副本集超详细部署

mongodb介绍: 是最常用的nosql数据库,在数据库排名中已经上升到了前六。这篇文章介绍如何搭建高可用的mongodb(分片副本)集群。 环境准备 系统系统 BC 21.10 三台服务器:192.168.123.247/248/249 安装包&#xff1a…

STM32L010F4 最小系统设计

画一个 STM32L010F4 的测试板子...... by 矜辰所致前言 最近需要用到一个新的 MCU: STM32L010F4 ,上次测试的 VL53L0X 需要移植到这个芯片上,网上一搜 STM32L010F4,都是介绍资料,没有最小系统,使用说明等。…

element plus的el-select分页

摘要&#xff1a; el-select的数据比较多的时候&#xff0c;必须要分页&#xff0c;处理方案有全部数据回来&#xff0c;或者添加搜索功能&#xff0c;但是就有个问题就是编辑的时候回显问题&#xff0c;必须要保证select的数据有对应的id与name匹配回显&#xff01; <el-fo…

Pytest基于fixture的参数化及解决乱码问题

我们知道&#xff0c;Pytest是Python技术栈下进行自动化测试的主流测试框架。支持灵活的测试发现、执行策略&#xff0c;强大的Fixture夹具和丰富的插件支持。 除了通过pytest的parametrize标签进行参数化外&#xff0c;我们通过fixture的param参数也可以比较方便地实现参数化…

Android从上帝视角来看PackageManagerService

戳蓝字“牛晓伟”关注我哦&#xff01; 用心坚持输出易读、有趣、有深度、高质量、体系化的技术文章&#xff0c;技术文章也可以有温度。 前言 阅读该篇之前&#xff0c;建议先阅读下面的系列文章&#xff1a; Android深入理解包管理–PackageManagerService和它的“小伙伴…

SPI

Flash-W25Q64 -- 这一章的重点是重点是知道标准SPI通信&#xff0c;地址会算&#xff0c;FLASH时序要会看 目录 Flash-W25Q64 回顾 FLASH SPI简介 单片机&#xff08;32&#xff09;上的SPI W25Q64 模块之间应该怎么通信呢&#xff1f;-- 看时序图 代码编写 更改代码…

Vue Data UI——Vue 3 数据可视化组件库

文章目录 1、Vue Data UI2、核心特点2.1.Vue 3 的深度集成2.2 丰富的可视化组件2.3 灵活的定制性2.4 易于集成2.5 文件导出功能2.6 多主题支持3、如何在项目中使用 Vue Data UI?3.1 安装 Vue Data UI3.2 全局注册组件3.3 局部引入组件3.4 使用通用组件3.5 TypeScript 集成4、总…

城市交通系统优化策略:透视拥堵之困,探索流畅之道

在快速城市化的今天&#xff0c;交通拥堵已成为众多大中型城市的“城市病”&#xff0c;严重影响居民生活质量、经济运行效率及环境质量。本文旨在深度剖析城市交通拥堵的根源&#xff0c;并提出一系列行之有效的优化策略&#xff0c;旨在构建更加顺畅、高效、绿色的城市交通系…