一起来Fit TDMA over WiFi(3)
4 TDMA调度者
TDMA调度者为Fit-TDMA的决策功能体,属于新开发功能模块,分调度员和被调度者2种角色,其中前者运行在AP等汇聚设备上,后者运行在CPE等接入类设备上;后者必须与前者配合才能工作,而前者可以无需后者独立运行。
TDMA调度者适宜作为UMAC模块的的一个子功能,LMAC层通过sc的函数指针调用TDMA功能。这样实现可以简化难度、提高能效,同时也不破坏现有的驱动架构。
4.1 状态机
TDMA调度功能需要保存各终端或自己的当前状态,不同状态侦听不同的事件,可以执行不同的行为,因此,需要引入FSM机制。具体的,AP侧的FSM描述如下:
一共有3种状态:等待、活动和下线状态。等待状态的终端,可以别调度到活动状态,从而允许将报文发送到该终端;同时,活动状态的终端在不同事件后,可变更为等待状态或下线状态。处于下线状态的终端,不会被调度。下线状态主要用于LMAC层直接丢弃报文、以及TDMA调度模块无需频繁删除和生产终端节点。
CPE端的状态机描述如下:
同样地,CPE侧也包含3种状态:等待、活动和下线状态。显然地,只有处于活动状态,CPE才能向AP发送数据报文;在转换为离线状态后,LMAC层可以将预期发送次数超过阈值的数据报文丢弃掉,也可以将全部数据报文都直接丢弃。
4.2 核心数据结构
TDMA调度员和被调度者的核心数据结构是不区分的,具体描述如下:
TDMA的核心就是发送调度,因此调度相关的逻辑结构是最核心的数据结构。在Fit TDMA中,调度链共有5级,其中1级为基础数据级,STA的信息均包含在此链上,为了提高增删效率,采用双向链结构;第2级到第5级链的节点均包含了指向基数数据的指针,采用单向链结构,因为针对此类链的变更操作不是特别频繁。调度时,针对每个调度链,均是从头调度到尾,然后在从更高一级的链头开始调度;在L5链调度完毕后,再转Sta链头。这样可实现:所有节点均能被调度到,且发送速率更快的节点,可以获得更多的调度机会。Hash表主要用于查找,查找功能用得非常多,而链表的查找效率低,所以增加HASH表来提升查找速率。LMAC在ath_txq_schedule中需要查询报文目的节点的状态、在数据报文发送成功后更新该节点的发送速率等,均用到了查询。
关于定时器,AP端和CPE端是不同的,AP端只有一个主定时时间间隔,就是为所有的终端一次调度,均分配4ms时间片,超过此时间片后,定时操作函数会立即调度下一个终端;而CPE的定时时间间隔至少有2个,长时间和短时间。长时间用于等待状态,因为无法预知活动令牌指示何时到达、或者就是活动令牌指示会未收到但又收到了AP的数据报文,所以,在等待状态下,还需要定时来触发检测工作;短时间周期主要用于活动态,它的主要作用就是向AP发送返回令牌,同时让自己进入等待状态。
5 Fit TDMA效果
在开放环境下,基于QCA9342 HT20模式,每终端跑4条流,启用Fit TDMA功能后,ping 包时延会由1ms增加到5ms左右,单台CPE或网卡的吞吐量依旧是93Mbps左右,上下行差距不到1M;2台终端时,吞吐量与1台终端相同;10台终端时,总吞吐量降低到90Mpbs;20台终端时,总吞吐量降低到88Mbps;32台终端时,总吞吐量降低到84Mbps左右。而如果关闭Fit TDMA功能后,32台终端的总吞吐量不超过75Mbps。因此,启用Fit TDMA在多用户场景下确实有明显地效果。
进一步地,人工造异常,在10台终端模式下,让其中的2台终端摘去天线,并用金属板盖住,但同时又保证它能有1-2M的流量。此时,其它8台终端的流量还能各自维持在8.5M左右,不会越跑越慢;而一旦关闭Fit TDMA,则整体吞吐量会越来越慢,低速终端拖慢全局流量效果非常明显。
6 其它
在ath_txq_schedule以及HASH查询中,每增加一条printk打印,ping包时延会增加2-3ms,故在调试完毕后,请立即关闭此类打印;ah_txq_schedule是带锁运行的,不要在类函数中调用其他带锁运行的函数,除非你能确认不会死锁;最好不要在现有发送流程中再次增加需要调度的报文。
CPE在启用Fit TDMA后,未收到AP的活动令牌通知消息时,是不能向AP发送数据报文的。故最好遵循:1)AP侧将新节点插入到活动调度指针的后边,这样保证它会被立即调度,从而能加快DHCP过程;2)CPE侧在确认对端AP是支持Fit TDMA后,才是能TDMA。
在安全性上,为了防止恶意第3方,AP的Fit TDMA支持信元应与AP和CPE的MAC地址相关,CPE在收到该信元后,基于AP和CPE的MAC地址,利用同样的算法,确认信元真实可靠,才能开启Fit TDMA。
一起来Fit TDMA over WiFi(3)的更多相关文章
- 一起来Fit TDMA over WiFi(1)
1 概述 WiFI TDMA领域,2009年Sam Leffler在<TDMA for Long Distance Wireless Networks>首次系统提出了TDMA技术方案,并 ...
- 一起来Fit TDMA over WiFi(2)
3 收发流程分析与改进 收发流程分析涉及到具体代码,属于SDK驱动内容,不能完全公开,仅供参考,本系列文档中涉及到具体功能或代码时,请在自己的驱动代码中查找. QCA驱动从9.5开始,将原来的htc的 ...
- TDMA over WiFi
0 引言 TDMA可以修正WiFi中DCF机制中连接速率不同终端间信道占用时间片公平性缺陷,从而提升整体WiFi网络的性能.著名的UBNT的网桥就用其独创的TDMA技术为其赢得了市场.以前是不同的公司 ...
- 【转】WiFi基础知识
http://blog.csdn.net/myarrow/article/details/7930131 1. IE802.11简介 标准号 IEEE 802.11b IEEE 802.11a IEE ...
- 【转】家庭wifi覆盖指导
网址:家庭wifi覆盖指导 私以为,目前民用 wifi 路由器市场已经完全走上了邪路.天线越来越大,发射功率越做越高.都敢冒着法律的风险使用大大超过 100mW 的发射功率了.且不论巨大的发射功率可能 ...
- WiFi基本知识
转自:http://blog.csdn.net/myarrow/article/details/7930131 1. IE802.11简介 标准号 IEEE 802.11b IEEE 802.11a ...
- Wifi长距离传输
本人从事Linux驱动开发.现在要实现两端之间wifi长距离(1km左右)传输视频数据(全向天线)的功能.目前用的平台是Atheros AR9342.我在网上查到一些资料是关于禁用802.11的CSM ...
- WiFi基本知识【转】
转自:http://blog.csdn.net/myarrow/article/details/7930131 1. IE802.11简介 标准号 IEEE 802.11b IEEE 802.11a ...
- 深度点评五种常见WiFi搭建方案
总结十年无线搭建经验,针对企业常见的五种办公室无线网络方案做个简要分析,各种方案有何优劣,又适用于那种类型的企业. 方案一:仅路由器或AP覆盖 简述:使用路由器或AP覆盖多个无线盲区,多个AP的部署实 ...
随机推荐
- Mysql数据库的触发程序
/** **创建表 */ CREATE TABLE test1(a1 INT); CREATE TABLE test2(a2 INT); CREATE TABLE test3(a3 INT NOT N ...
- 清华集训2015 V
#164. [清华集训2015]V http://uoj.ac/problem/164 统计 描述 提交 自定义测试 Picks博士观察完金星凌日后,设计了一个复杂的电阻器.为了简化题目,题目中的常数 ...
- 一次“峰回路转”的troubleshooting经历
某天,用户现场人员找到我,说应用的某个功能一点就报错,在数据库上直接跑功能对应的SQL也报错,SQL大致如下: 后来向他们要了alert.log和trace files,通过分析,确定为用户数据库版本 ...
- python random 模块的用法
Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...
- 以太坊挖矿源码:clique算法
上文我们总结了以太坊最主要的共识算法:ethash算法,本文将重点分析以太坊的另一个共识算法:clique. 关键字:clique,共识算法,puppeth,以太坊地址原理,区块校验,认证结点,POA ...
- hadoop2.6.0实践:A03 例子验证
[hadoop@LexiaofeiN1 ~]$ hdfs dfs -ls /output/grep[hadoop@LexiaofeiN1 ~]$ hdfs dfs -rm -R /output/gre ...
- mysql解压缩版本的安装、初始化等
https://dev.mysql.com/doc/refman/5.7/en/windows-install-archive.html 启动或者暂停mysql服务: https://dev.mysq ...
- Downloader Middleware
downloader middleware作用:改写请求,如加入代理,加入头部等:处理异常等. # downloadMiddleware举例, 加代理 # 这里的类如果已经重新设置名称,记得在sett ...
- window下编辑了脚本文件linux报如下错误
首先vi :set ff 查看文件类型 接着 下载dos2unix root用户下yum -y install dos2unix 然后 dos2unix 文件.sh 转换格式 接着在正常启动即可
- lsdyna进阶教程-弹性球撞击刚性平板
在lsdyna基础教程中,我们做了一个关于刚性球撞击弹性平板的粒子,现在我们考虑另外一个问题,如果用弹性球撞击刚性地面该怎么做呢?是不是要从头开始建模,操作步骤是不是一样呢?其实很简单,将球和地面的材 ...