一起来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的部署实 ...
随机推荐
- TOTP算法 基于时间的一次性密码
/** Copyright (c) 2011 IETF Trust and the persons identified as authors of the code. All rights rese ...
- C#系统服务安装
转载 http://blog.csdn.net/vvhesj/article/details/8349615 1.1创建WindowsService项目 导入需要的引用比如System.configu ...
- JAVA_SE基础——37.main方法的详解
主函数 大家都会写吧. 大家一直都不知道为何这样设计,这样设计有什么好处呢? 白话解释: main函数的修饰符是public: 公共的 为何不用private 等等的修饰符 而规定只用public呢? ...
- Python之旅.第三章.函数3.26
一.函数: 1.为什么要有函数?什么是函数? 1.组织结构不清晰,可读性差 2.代码冗余 3.管理维护的难度极大,扩展性 具备某一个功能的工具就是程序的中函数 事先准备工具的过程---->函数的 ...
- wamp的mysql设置用户名和密码
wamp下修改mysql root用户的登录密码 感谢作者:http://www.3lian.com/edu/2014/02-25/131010.html 1.安装好wam ...
- js常用API方法
String对象常用的API:API指应用程序编程接口,实际上就是一些提前预设好的方法. charAt() 方法可返回指定位置的字符. stringObject.charAt(index) index ...
- ssh框架-Struts2(二)
上篇文章我们了解了怎么配置struts.xml文件,以及前端控制器配置怎么配置,,Action进阶,Result结果配置,Struts2中的Servlet的API的访问,以及怎么获得请求参数.今天我们 ...
- SpringCloud的应用发布(四)vmvare+linux,防火墙和selinux
一.vmvare网络配置为nat模式 二.vmvare的网络设置为桥接bridge模式 1.linux 网卡的ip获取方式dhcp 三.关闭linux的防火墙和selinux 1.临时关闭防火墙 sy ...
- GIT入门笔记(3)- git中的一些概念和原理
一.git管理过程中所处的4个阶段: 工作目录(workspace) 暂存区(index) 本地仓库(local repository) 远程仓库(remote repository) 二.工作目录+ ...
- bootstrap表格 之多选数据的获取
使用表格的时候经常会用到多选的功能,比较常用,下面写一个小Dome记录一下 如下:单击批量删除按钮之后,需要获取选中行数据,传值到后台进行处理 一.获取选择行的数据 btnplDel是按钮id:tab ...