平台gpsr协议仿真步骤

来源:互联网 发布:java rest api是什么 编辑:程序博客网 时间:2024/05/29 12:20

First: bak

1.save (MANET-aodv simple scenario)project as :MANET_my_test --> op_models/project/

2.save (manet_station_adv) as -- manet_station_adv_my_test--> op_models/node model/

3.save (ip_dispatch) as -- ip_dispatch_my_test--> op_models/process model/

  save (manet_mgr) as -- manet_mgr_my_test--> op_models/process model/

  save (aodv_rte) as --gpsr_rte_my_test--> op_models/process model/

4.open op_models/project/MANET_my_test :

  1)choose new node model asmanet_station_adv_my_test (attribute-edit);

  2) open ip module : choose new process modelas ip_dispatch_my_test;

    open ip_dispatch_my_test : declare child process formanet_mgr_my_test

    open manet_mgr_my_test: declare child process forgpsr_rte_my_test

5. 修改gpsr_rte_my_test: 修改文件,将其中的aodv文件另存为gpsr文件。

   1)5个aodv .ex.c--> gpsr .ex.c:替换内容aodv->gpsr;Aodv->Gpsr;AODV->GPSR; 

   2)3个aodv .h--> gpsr.h :替换内容如上

   complication externalfiles.

   3)declare external files--> gpsr 5项

   4) copy gpsr.pk.m tomanet

   5)HB,FB,DB and SV

     init/Enter and  wait/Exit

   complication process model.( still some errors 平台gpsr协议仿真步骤)

6. 修改manet_mgr_my_test:在所有用到aodv的地方加上gpsr的项。

   HB(1),FB(2)。 complication.(still some errors平台gpsr协议仿真步骤

 

7. 将在ip_dispatch_my_test:

  1)原先调用manet_mgr的进程转到调用manet_mgr_my_test。

     FB:3处manet_mgr->manet_mgr_my_test. 

         用到 aodv 的地方加上 gpsr(serveral 看不懂的)

  2)ip_rte_support.h&&ip_rte_support.ex.c :编译下这个外部文件。

    (加了serveral 看不懂的东西,下次注意,似乎是和路由表更新相关)

  3)ip_rte_v4.h ,ip_higher_layer_proto_reg_sup.h, ip_cmn_rte_table.h。

  改完这些,把三个进程模型都编译一遍:过啦 平台gpsr协议仿真步骤~~

 

8.现在呢,具体里面的东西都改好了。现在就是要看看仿真的时候还缺啥了。我们另存为的工程场景是aodv的。看到里面选择的观察参数也是aodv的。因此呢,现在我们要改成观察gpsr的数据:包括globalstatistics && node statistics。

  1)首先呢,我们给gpsr的local statistic 和 globalstatistics 改一下组group名字:GPSR。编译!~

  2)然后,我们在 manet_station_adv_my_test这个节点模型里:修改node statistics:加上gpsr的数据。

    唔,这个时候为神马在仿真场景里,global里面已经出现了GPSR,而node里面还是木有那一项呢?

    嘿嘿,原来。只要编译一遍整个工程,下一次就会出现这个tab啦~~~

 

9. 当然,还有一个也需要加的tab:就是仿真时选择路由协议时,我们是在节点的attribute的AD-HOC RoutingParameters里选的。怎么加上GPSR这个选项呢?

  要到manet_mgr_my_test这个进程模型里-model attribute-protocol-edit:照着aodv抄,需要点耐心……挺多项的。—— 咋还是木有呢?平台gpsr协议仿真步骤

  恩,好像发现我的manet_mgr和manet_mgr_my_test里面的量有点冲突啊,所以为了简单了事,,就直接进ip_dispatch_my_test的declarechild process里直接把manet_mgr去掉吧。回头编译一下,果然,就出现gpsr啦~~~平台gpsr协议仿真步骤

 

运行报错:

  (1)然后又发现,运行会报错,哪里的问题呢?看下错误信息,就知道了。在具体的每个协议进程里,有Manet_mgr.AODVParameter这样的,所以,要进每一个协议进程,把manet_mgr改成 manet_mgr_my_test.

 (2)HelloInterval的错。莫名其妙。一晚上过去重新开一次,就不报这个错了。

  这里呢,我们先选择协议选项为AODV,仿真一遍。看到结果和预期的一样,路由表更新过,应用层数据也正常地收发了。


10. 恩,现在呢,现有的工程里完成的功能是,有更新邻居表的机制,就差引入gpsr路由协议啦。开始把调好的代码往里嵌吧。

1)首先把数据结构往gpsr.h里加。

2)把函数声明往gpsr_ptypes.h里加。

3)把函数体往gpsr_support.ex.c里加。(把return改成FRET,把FIN和FOUT加上,然后编译。)

4)改sv,hb和fb。

5)把新的gpsr.pk.m拷过去。


  编译完成后,就可以开始仿真看看结果了。这时我们选择路由选项为GPSR。

11. 平台gpsr协议仿真步骤犯了一些2的错误,每次调试进去认真看看参数,还是能力范围内好改的。改过之后,就能正常运行了~~~~在仿真里使用op_sim_message()会让仿真速度很慢,不过点少一点的话,可以比较直观地看出来包的转发次序,大都是对嗒~~~

12. 开始构造地图把,然后跑一遍长一点的路径~~~

   这里遇到了问题:为嘛有些包到某个点就停了?调试进去看的时候,发现是由于ttl减到0了,所以包被丢弃了。但是这个问题就比较大了,因为始终没有找到在源端发送的时候,到底包在哪个函数里被初始化上ttl的,所以只能在协议那层里面强行修改掉发送时的ttl了。这样ttl由自己定,就随意多了~


13. 漫长啊,,,一个月半的时间,终于把这个协议跑通啦~~咩哈哈平台gpsr协议仿真步骤


一些小经验:

1: 调试,观察步骤。F9, F10,F11. ctrl+F10.

2: 观察变量值op_sv_ptr->变量(sv里的变量),或者直接变量

3:改大ttl值——ip_rte_support.h

4:standard function stack imbalance。—— 一般指FIN和FOUT不匹配。

5:ip和char*的地址转换:ip_address_print (char*,InetT_Address.address.ipv4_addr);

6:double和string的转换:sprintf(char*,"%lf",double)