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)的更多相关文章

  1. 一起来Fit TDMA over WiFi(1)

    1 概述 WiFI TDMA领域,2009年Sam  Leffler在<TDMA for Long Distance Wireless Networks>首次系统提出了TDMA技术方案,并 ...

  2. 一起来Fit TDMA over WiFi(2)

    3 收发流程分析与改进 收发流程分析涉及到具体代码,属于SDK驱动内容,不能完全公开,仅供参考,本系列文档中涉及到具体功能或代码时,请在自己的驱动代码中查找. QCA驱动从9.5开始,将原来的htc的 ...

  3. TDMA over WiFi

    0 引言 TDMA可以修正WiFi中DCF机制中连接速率不同终端间信道占用时间片公平性缺陷,从而提升整体WiFi网络的性能.著名的UBNT的网桥就用其独创的TDMA技术为其赢得了市场.以前是不同的公司 ...

  4. 【转】WiFi基础知识

    http://blog.csdn.net/myarrow/article/details/7930131 1. IE802.11简介 标准号 IEEE 802.11b IEEE 802.11a IEE ...

  5. 【转】家庭wifi覆盖指导

    网址:家庭wifi覆盖指导 私以为,目前民用 wifi 路由器市场已经完全走上了邪路.天线越来越大,发射功率越做越高.都敢冒着法律的风险使用大大超过 100mW 的发射功率了.且不论巨大的发射功率可能 ...

  6. WiFi基本知识

    转自:http://blog.csdn.net/myarrow/article/details/7930131 1. IE802.11简介 标准号 IEEE 802.11b IEEE 802.11a ...

  7. Wifi长距离传输

    本人从事Linux驱动开发.现在要实现两端之间wifi长距离(1km左右)传输视频数据(全向天线)的功能.目前用的平台是Atheros AR9342.我在网上查到一些资料是关于禁用802.11的CSM ...

  8. WiFi基本知识【转】

    转自:http://blog.csdn.net/myarrow/article/details/7930131 1. IE802.11简介 标准号 IEEE 802.11b IEEE 802.11a ...

  9. 深度点评五种常见WiFi搭建方案

    总结十年无线搭建经验,针对企业常见的五种办公室无线网络方案做个简要分析,各种方案有何优劣,又适用于那种类型的企业. 方案一:仅路由器或AP覆盖 简述:使用路由器或AP覆盖多个无线盲区,多个AP的部署实 ...

随机推荐

  1. codevs 3342 绿色通道

    codevs 3342 绿色通道 http://codevs.cn/problem/3342/ 难度等级:黄金 题目描述 Description <思远高考绿色通道>(Green Pass ...

  2. hp MSA50 5盘RAID5重建为4盘RAID5怎么恢复数据

    [用户单位] XX省电视台[数据恢复故障描述] 一台HP 服务器,挂接一台HP MSA50磁盘阵列,内接5块1TB硬盘,原先结构为RAID5. 使用一段时间后,其中一块硬盘掉线,因RAID5支持一块硬 ...

  3. Filter 和 interceptor 的区别

    1. 拦截器 interceptor ● 特点:interceptor 依赖于web框架,在Spring<MV中就是依赖于springMVC框架.在实现上是基于Java的反射机制,属于面向切面编 ...

  4. nyoj 鸡兔同笼

    鸡兔同笼 时间限制:3000 ms  |  内存限制:65535 KB 难度:1   描述 已知鸡和兔的总数量为n,总腿数为m.输入n和m,依次输出鸡和兔的数目,如果无解,则输出"No an ...

  5. 微信号的openid的深入理解

    header('Location:https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$this->appid.'&r ...

  6. 使用HTML5视频事件示例

    <!DOCTYPE html > <html > <head> <title>Video events example</title> &l ...

  7. python入门(1)python的前景

    python入门(1)python的前景 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于 ...

  8. 新手解决jsp页面<%@报错的方法

    昨天菇凉我很崩溃的重装电脑系统(嗯,没错,第一次自己装系统,我可能是一个假的计算机系学生!),但这没难倒天生聪慧的我,都是小case~.这都不是重点,重点来了,当我火速配置好java的开发环境jdk, ...

  9. CodeForces 1B-字符串,进制转换与数学

    一个萌新的成长之路 Background 同学们都回家了,只有我和wjh还有邢神在机房敲代码,吃random口味的方便面-- Description Translated by @PC_DOS fro ...

  10. 如何在pycharm中使用配置好的virtualenv环境

    1.手动建立: 第一步 建立虚拟环境 Windows cmd: pip install virtualenv 创建虚拟环境目录 env 激活虚拟环境 C:\Python27\Scripts\env\S ...