NS2中的TDMA的实现和分析

NS2中的TDMA的实现和分析  

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

NS2中的TDMA的实现和分析 - syc_china - 玉汝于成六翼天使 的博客其中前导的数据结构为: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的类图如下:

NS2中的TDMA的实现和分析 - syc_china - 玉汝于成六翼天使 的博客

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

NS2中的TDMA的实现和分析 - syc_china - 玉汝于成六翼天使 的博客4.  设置前导中数据的函数makePreamble过程:

NS2中的TDMA的实现和分析 - syc_china - 玉汝于成六翼天使 的博客

5.   发送函数流程图:

NS2中的TDMA的实现和分析 - syc_china - 玉汝于成六翼天使 的博客

6.   接收函数流程图:

NS2中的TDMA的实现和分析 - syc_china - 玉汝于成六翼天使 的博客

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

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

Tdma的时帧结构为:

NS2中的TDMA的实现和分析 - syc_china - 玉汝于成六翼天使 的博客

输出的结果显示:

<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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值