NS2中的TDMA的实现和分析

1.  NS2中的Tdma时帧结构如下图:

其中前导的数据结构为:static int *tdma_preamble_;

tdma_preamble_ = new int[max_slot_num_]; //max_slot_num_为节点总数

tdma_preamble_[slot_num_] = ETHER_ADDR(MAC_TDMA(pktTx_)->dh_da);

//前导中存储的是目标节点的Mac地址(4个字节),slot_num_表示当时隙号。

在前导时隙这段时间,完成的主要工作就是设置tdma_preamble_[0]到

tdma_preamble_[ max_slot_num_ - 1]的值,代表从0到max_slot_num_-1个数据时隙各个时隙中要发送数据的目标节点地址。

2. 整个Tdma的类图如下:

3.  Tdma执行过程和关键的时隙控制函数如下图:

4.  设置前导中数据的函数makePreamble过程:

5.   发送函数流程图:

6.   接收函数流程图:

7.   一个例子分析,场景:三个节点,相互可见,单信道下节点0和1几乎同时在0.020001秒即20毫秒的时候给2发送数据,2只接收不发送,仿真在1秒时结束。

Mac层采用NS2自带的Tdma协议,则:

Tdma的时帧结构为:

输出的结果显示:

<0>, 0.000000, make the new preamble now.

<0>, 0.000000, write NO_PKT to slot 0 in preamble

<1>, 0.000000, make the new preamble now.

<1>, 0.000000, write NO_PKT to slot 1 in preamble

<2>, 0.000000, make the new preamble now.

<2>, 0.000000, write NO_PKT to slot 2 in preamble

<0>, 0.006000, time to send.

<1>, 0.006000, preamble[0]=-2, nothing to do now.

<2>, 0.006000, preamble[0]=-2, nothing to do now.

<0>, 0.012000, preamble[1]=-2, nothing to do now.

<1>, 0.012000, time to send.

<2>, 0.012000, preamble[1]=-2, nothing to do now.

<0>, 0.018000, preamble[2]=-2, nothing to do now.

<1>, 0.018000, preamble[2]=-2, nothing to do now.

<2>, 0.018000, time to send.

<0>, 0.024000, make the new preamble now.

<0>, 0.024000, write -1 to slot 0 in preamble

<1>, 0.024000, make the new preamble now.

<1>, 0.024000, write -1 to slot 1 in preamble

<2>, 0.024000, make the new preamble now.

<2>, 0.024000, write NO_PKT to slot 2 in preamble

<0>, 0.030000, time to send.

<1>, 0.030000, preamble[0]=-1, I am supposed to receive now.

<2>, 0.030000, preamble[0]=-1, I am supposed to receive now.

<0>, 0.036000, preamble[1]=-1, I am supposed to receive now.

<1>, 0.036000, time to send.

<2>, 0.036000, preamble[1]=-1, I am supposed to receive now.

<0>, 0.042000, preamble[2]=-2, nothing to do now.

<1>, 0.042000, preamble[2]=-2, nothing to do now.

<2>, 0.042000, time to send.

.......

转自 http://blog.163.com/syc_china/blog/static/58408933200994101117652/

NS2中的TDMA的实现和分析相关推荐

  1. NS2中数据包Packet的分析 (转帖)

    1. NS2中数据包packet类结构图: packet类中的access函数如下: inline unsigned char* access(int off) const {      if (of ...

  2. 理解NS2中的OTcl/tclCL

    题记 真正触动我写这篇短文的原因是试图理解NS2的基本原理. 在"the NS2 manual"中, 解释了为什么采用了两种语言来建构整个系统, 然后在第三章描述了tclcl的六个 ...

  3. NS2中Trace部分的一点认识

    NS2中Trace部分的一点认识 NS2追踪部分的源码主要涉及以下几个文件: ns-2.34/trace/basetrace[.cc][.h] ns-2.34/trace/trace[.cc][.h] ...

  4. Hhadoop-2.7.0中HDFS写文件源码分析(二):客户端实现(1)

    一.综述 HDFS写文件是整个Hadoop中最为复杂的流程之一,它涉及到HDFS中NameNode.DataNode.DFSClient等众多角色的分工与合作. 首先上一段代码,客户端是如何写文件的: ...

  5. Android 中View的绘制机制源代码分析 三

    到眼下为止,measure过程已经解说完了,今天開始我们就来学习layout过程.只是在学习layout过程之前.大家有没有发现我换了编辑器,哈哈.最终下定决心从Html编辑器切换为markdown编 ...

  6. Android中对Log日志文件的分析

    Android中对Log日志文件的分析 如何分析和研究Log文件 ,如何看日志信息 Log 在android中的地位非常重要,要是作为一个android程序员不能过分析log这关,算是android没 ...

  7. 浅谈软件性能测试中关键指标的监控与分析(转)

    浅谈软件性能测试中关键指标的监控与分析 一.软件性能测试需要监控哪些关键指标? 软件性能测试的目的主要有以下三点: Ø  评价系统当前性能,判断系统是否满足预期的性能需求. Ø  寻找软件系统可能存在 ...

  8. js自动触发onclick_每日一题JS中最基本的this情况分析

    关注"前端学苑" ,坚持每天进步一点点 「~this情况分析 ~」 每日一题,希望让爱学习.思考的前端技术伙伴在一起学习.复盘.成长. 基础知识要夯实,原理源码要深入,深度广度要扩 ...

  9. Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析

    原文地址: http://blog.csdn.net/luoshengyang/article/details/6629298 在前面一篇文章浅谈Android系统进程间通信(IPC)机制Binder ...

最新文章

  1. 转:SLAM算法解析:抓住视觉SLAM难点,了解技术发展大趋势
  2. 你们需要的数据集,都给准备好了!
  3. 974. Subarray Sums Divisible by K
  4. LeetCode 269. 火星词典(拓扑排序)
  5. Leetcode--283. 移动零
  6. 一个曾经的愤青梦--弥衡
  7. R7-9 红色警报 (25 分)
  8. 获取网关_阿里二面问了这道题:如何设计一个微服务网关系统
  9. MyEclipse10 中设置Jquery提醒,亲测可用
  10. c/s架构nginx+php-fpm通信原理
  11. 关于URL编码/javascript/js url 编码/url的三个js编码函数
  12. 【C#】1.2 控制台应用程序学习要点
  13. python语言用什么编译器_如何修改python语言pycharm工具的默认编译器
  14. 卫星通信(SATCOM)设备的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  15. 无源微波器件--耦合线定向耦合器
  16. 总结:服务网格(Service Mesh)
  17. (六十五)Android O StartService的 anr timeout 流程分析
  18. CSS弹性盒子布局flex
  19. 定制材料 GPTMS修饰的纳米二氧化硅(GPTMS-SiO2)/C18键合纳米金修饰二氧化硅颗粒/二氧化硅修饰咪唑型离子液体
  20. unsupported_grant_type

热门文章

  1. 中国移动对大数据分析需求猛增 成转型必备工具
  2. PHP接收GET和POST请求
  3. CentOS下Samba服务器配置
  4. 魅族android os是什么,魅族Flyme OS--博IOS和Android之所长
  5. upyun又拍云存储文件迁移到七牛云上的实例
  6. 【Project】项目管理软件学习笔记
  7. 《动物精神》之启示一
  8. 你好,C++(26)如何与函数内部进行数据交换?5.1.3 函数参数的传递
  9. matlab 陷波器,自己编的matlab陷波器的程序和大家分享
  10. 每个中国人心里都隐藏着三个人