Fedora14+NS-2.34+Leach

11 篇文章 3 订阅

首先在Linux上安装NS2-2.34,下载mit.tar.gz包

直接在2.34中安装leach的话,会把原来的相关文件给覆盖,这样2.34上以前添加的的协议将不能运行,所以这种方法行不通。为了解决这个问题,既不让其覆盖我们2.34上的文件,又要leach协议能够运行,那么这种方法就比较复杂了,需要的人工劳动多了一点。最主要的是细心。

1、leach文件修改

首先,在/ns-allinone-2.34/ns-2.34下新建一个leach文件夹,在/ns-allinone-2.34/ns-2.34/leach目录下解压mit.tar.gz文件,用 gunzip mit.tar.gz和 tar –zxvf mit.tar命令解压。将解压出来的文件A(比如leach/apps/app.cc)一一对应 /ns-allinone-2.34/ns-2.34目录下的文件B(ns-2.34/apps/app.cc)进行修改,将A中与B内容不同的地方,添加进B去,切记,不是完全复制,是添加进去,而B中多出来的内容,不要删掉。NS-2.34中没有的文件,直接添加到NS-2.34里。/leach中tcl/ex目录下的wireless.tcl文件和/ns-2.34中tcl/ex下的wireless.tcl同名,可以修改ns-2.34中tcl/ex目录下的wireless.tcl文件名为wireless1.tcl,再把leach中的wireless.tcl拷贝到ns-2.34中的tcl/ex下。

值得注意的是:leach协议新添加进去的代码都是以#ifdef MIT_uAMPS开始,#endif为结束的。因此可以快速查找、修改。

需要额外修改的地方:

(1)将common/packet.h里添加的

#ifdef MIT_uAMPS 

PT_RCA,

#endif

修改为:

#ifdef MIT_uAMPS

static const packet_t PT_RCA = 62;

#endif

同理,将最后一个包的值改为63,即

static packet_t PT_NTYPE = 63。

(2)将mac/wireless-phy.h文件中,添加进去的

#ifdef MIT_uAMPS 

EnergyResource *energy_; // Energy resourceint alive_; // 0 = dead, 1 = alive

//endif

//ifdef MIT_uAMPS_temp

do le Efriss_amp_; // Xmit amp energy (J/bit/m^2)

do le Etwo_ray_amp_; // Xmit amp energy (J/bit/m^4)

do le EXcvr_;  // Xcvr energy (J/bit)

do le Pfriss_amp_;  // Friss base transmission power (W/m^2)

do le Ptwo_ray_amp_; // Two-ray base transmission power (W/m^4)

do le PXcvr_; // Xcvr Power (W)int sleep_; // 0 = awake, 1 = asleep

int ss_; // amount of spreading

do le time_finish_rcv_;

 do le dist_; // approx. distance to transmitter

private:

do le pktEnergy(do le pt, do le pxcvr, int nbytes);

#endif中的private注释掉,即为

:#ifdef MIT_uAMPS

EnergyResource *energy_; // Energy resourceint alive_; // 0 = dead, 1 = alive

//endif

//ifdef MIT_uAMPS

_tempdo le Efriss_amp_; // Xmit amp energy (J/bit/m^2)

do le Etwo_ray_amp_; // Xmit amp energy (J/bit/m^4)

do le EXcvr_;  // Xcvr energy (J/bit)

do le Pfriss_amp_;  // Friss base transmission power (W/m^2)

do le Ptwo_ray_amp_; // Two-ray base transmission power (W/m^4)

do le PXcvr_; // Xcvr Power (W)int sleep_; // 0 = awake, 1 = asleep

int ss_; // amount of spreading

do le time_finish_rcv_;

 do le dist_; // approx. distance to transmitter

//private:

do le pktEnergy(do le pt, do le pxcvr, int nbytes);

#endif

(3)将mac/wireless-phy.h文件中的第150行,本来注释掉的

// MobileNode * node_; 

取消注释。

(4)将mac/wireless-phy.cc文件中,int WirelessPhy::command(int argc, const char*const* argv)中的

node_ = (Node *)obj;

修改为

node_ = (MobileNode *)obj;

大约在添加好的2.34文件里的238行。

(5)由于第(4)步的修改影响到了其他文件,所以我还需要将mac/wireless-phyExt.cc里的第133行,在int WirelessPhyExt::command(int argc, const char*const* argv)函数里

node_ = (Node*)obj; 

同样改为

node_ = (MobileNode *)obj;


2、修改Makefile文件

按照下面三步来进行:

(1)将DMIT_uAMPS添加到DEFINE行的最后,即为

DEFINE = -DTCP_DELAY_BIND_ALL ...... -Drng_test -DMIT_uAMPS

(2)将I./mit/rca I./mit/uAMPS 添加到 INCL?列的后面,即为

INCL?S =......

-I./diffusion3/lib/main -I./diffusion3/lib \

-I./diffusion3/lib/nr -I./diffusion3/ns \

-I./diffusion3/filter_core -I./asim/ -I./qs \

-I./mit/rca -I./mit/uAMPS \

......

(3)将代码

mit/rca/energy.o mit/rca/rcagent.o \

mit/rca/rca-ll.o mit/rca/resource.o \

mac/mac-sensor-timers.o mac/mac-sensor.o mit/uAMPS/bsagent.o \

添加到代码gaf/gaf.o 之前

3、make

进入到/ns-allinone-2.34/ns-2.34目录下,输入make clean,如果出错,一般是Makefile中多加了一个空格或回车之类的,如果没有出错,输入make。Linux中make比较快,其中可能出现的错误如下:

"mac/wireless-phy.cc:320:error:min undeclared

......"

解决办法:根据错误提示把wireless-phy.cc文件的第320行和321行的min改为MIN即可。

"proxytrace2any.cc:113:error:IsLittleEndian undeclared

......"

解决办法:

修改ns-allinone-2.34\ns-2.34\indep-utils\webtrace-conv\dec\my-endian.h文件

#ifndef _ENDIAN_H_

#define _ENDIAN_H_

改为

#ifndef _MY_ENDIAN_H_

#define _MY_ENDIAN_H_

或者将该文件的第一行和最后一行注释掉即可。

若出现
/common/ptypes2tcl > gen/ptypes.cc
Segmentation fault
make: *** [gen/ptypes.cc] Error 139
原因在于你的Common/Packet.h的协议包头常量不连续,一方面要检查这个文件,另一方面也要检查Makefile中是否将该协议添加进去了,我就是Makefile中-DMit_uAMPS漏掉了D,导致PT_RCA无法编译到,造成常量值不连续,还是要仔细啊
4、test

(1)修改test文件打开test文件,将里面的代码改为:

#!/bin/bashcd tcl/ex

ns wireless-demo-csci694.tcl

sleep 2

cd ../../  

./leach_test

(2)修改leach_test文件

用gedit打开leach_test文件

在ns tcl/ex/wireless1.tcl \前增加以下语句(第37行)

RCA_LIBRARY=mit/rca

export RCA_LIBRARY

uAMPS_LIBRARY=mit/uAMPS

export uAMPS_LIBRARY

(3)修改.bashrc文件,添加环境变量

用gedit打开~/.bashrc文件在最后一行加入

export RCA_LIBRARY=~/ns-allinone-2.34/ns-2.34/mit/rca

export uAMPS_LIBRARY=~/ns-allinone-2.34/ns-2.34/mit/uAMPS

(4)测试

回到ns-allinone-2.34/ns-2.34下

./test
./test出现一系列warning:

解决办法:

打开\ns-allinone-2.34\ns-2.34\tcl\lib\ns_default.tcl文件(最好不要修改这个文件)第692行加入7个初始值如下:

Phy/WirelessPhy set alive_ 1

Phy/WirelessPhy set Efriss_amp_ 100 * 1e-12

Phy/WirelessPhy set Etwo_ray_amp_ 0.013 * 1e-12

Phy/WirelessPhy set EXcvr_ 50 * 1e-9Phy/Wireless

Phy set sleep_ 0

Phy/WirelessPhy set ss_ 1

Phy/WirelessPhy set dist_ 0

具体的初始值应该对照~\ns-allinone-2.34\ns-2.34\mac\wireless-phy.cc输入(第95行,第97-99行,第104-105行,第107行)

(5)运行leach

在ns-allinone-2.34/ns-2.34下

./leach_test
5、验证仿真结束后在leach_sims文件夹下并没有我们之前熟悉的tr文件和nam 文件,如何验证是否仿真正确?其实leach协议的仿真运行过程在leach.err和leach.out文件都有详细的记录。leach.err文件记录的是仿真过程的错误信息和提示;leach.out文件记录了数据的收发、簇的变化以及节点能量消耗等信息。所以只要在leach.err文件里看到如下信息:

INITIALIZE THE LIST 

xListHeadchannel.cc:sendUp - Calc highestAntennaZ_ and distCST_highestAntennaZ_ = 1.5, distCST_ = 222.8SORTING 

LISTS ...DONE!

而leach.out文件里如下记录的话(只贴出文件开头部分),则说明leach协议运行正确。

num_nodes is set 101

Creating sensor nodes...0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3738 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 7172 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 (100 == BS)*** NOTE: no connection pattern specified.Loading scenario file...

Node 0: (65.745973803916002,92.581722416254564)Node 1: (21.008649990432268,92.380389195112684)Node 2: (37.201202259027028,40.606367467253641)Node 3: (71.218022131928251,61.297971318148988)Node 4: (35.003944130150579,11.288995440718249)Node 5: (34.146372151629237,98.076752432657756)Node 6: (75.978135678906995,64.526355389750734)Node 7: (94.45503554048716,5.7823289678349754)Node 8: (83.602962402441989,14.98909784247591)Node 9: (21.767438492629417,45.338745622587737)Node 10: (8.2976788321033492,59.088131160982016)Node 11: (94.220422624713009,62.643053551503947)Node 12: (41.80104012684945,50.081411958710021)Node 13: (18.290790039250062,13.30818967582108)Node 14: (70.743881524886874,92.416788773805266)Node 15: (48.968921345178465,20.661048414493468)Node 16: (50.240702391714187,95.485097540302704)Node 17: (18.034359867700545,3.486296443029445)Node 18: (94.184317995879951,55.832556754272687)Node 19: (77.781369061107455,71.469810032970187)Node 20: (93.097224129874832,85.045950806255433)Node 21: (67.295200735002382,30.438753185066748)Node 22: (84.124781416787201,85.201271942444734)Node 23: (77.777536668711122,7.0587910278974055)Node 24: (37.10080587170124,53.244285682795699)Node 25: (76.709470747369096,56.074851032381346)Node 26: (50.021301233219582,8.0098267216281158)Node 27: (21.157710403743067,97.638755709695985)Node 28: (14.567212860364101,31.146544139434834)Node 29: (79.967351481303268,11.276346264070062)Node 30: (21.551660225517892,18.753410279170335)Node 31: (88.566562015827074,38.207800005659372)Node 32: (58.494695116996155,20.340831354419155)Node 33: (68.352573722765115,1.7065585133184484)Node 34: (82.128933343165059,40.982698575119812)Node 35: (96.214952038701142,84.698914449987427)Node 36: (34.655160938694685,49.28989664152725)Node 37: (15.292854148565258,26.999674936290681)Node 38: (83.536654237442022,0.54776868808445001)Node 39: (6.3483406353501328,96.561058329679554)Node 40: (1.7073469244443564,95.37975913629856)Node 41: (47.611803769884546,11.585960449458081)Node 42: (25.23727404197551,62.864823482402052)Node 43: (69.088268731296182,66.532566895025113)Node 44: (12.85180468710689,0.28137620551575732)Node 45: (29.089886103332923,13.7157387164029)Node 46: (20.420606583552718,9.134849770523072)Node 47: (29.42009318127301,63.506097655513372)Node 48: (46.98329621319813,48.259455220894637)Node 49: (96.663897576119709,30.126561843849046)Node 50: (37.124909570964476,58.355159199962003)Node 51: (75.160673761349486,25.443907000796827)Node 52: (35.744962392256113,65.582926648474725)Node 53: (52.248180914785806,35.176634804893581)Node 54: (13.701165846409818,75.494380609828227)Node 55: (34.054909382972362,60.861999616428278)Node 56: (7.6275533100718409,96.288482377439962)Node 57: (20.523317633440399,35.399465232807891)Node 58: (58.812167802272441,56.104252792943385)Node 59: (44.176690999500771,77.645628609529524)Node 60: (90.080040362700842,75.238375912997114)Node 61: (31.383969742517902,70.379462498416885)Node 62: (67.626210892398944,93.726468548982623)Node 63: (60.756902750933961,41.264534947119898)Node 64: (33.038856244198442,84.056896243270913)Node 65: (44.255160654082502,96.485113164635891)Node 66: (25.296958035462051,65.973702010686381)Node 67: (20.00969360582982,2.9204331817666223)Node 68: (83.720485951621313,90.207388899385649)Node 69: (15.585231974527813,40.993795888961202)Node 70: (82.727505770850698,1.1894906876559792)Node 71: (91.769987434041681,78.17880393852424)Node 72: (51.15779477691175,9.0568155558113084)Node 73: (17.899046520655531,29.27487265750527)Node 74: (22.784754691079613,43.372092975011142)Node 75: (54.766631012208123,62.767422181911492)Node 76: (32.064611386537841,9.9235735414193815)Node 77: (85.500510635553155,7.082251742054825)Node 78: (31.405028715452659,24.317620612828815)Node 79: (6.2496398139044826,37.69635229264216)Node 80: (62.592982436806423,0.25581540551773058)Node 81: (99.489520536497949,20.371656920933937)Node 82: (86.437870136666049,61.283386946322118)Node 83: (89.884406835718266,87.225687916961363)Node 84: (2.1368203694637962,13.539949578018836)Node 85: (65.932557762569076,28.498315498464887)Node 86: (71.188582699368055,66.509428278780277)Node 87: (23.961081460100171,13.896099903572399)Node 88: (51.751079341280779,80.390488906013999)Node 89: (22.947043377415763,70.958044226727466)Node 90: (91.849318608571465,11.497854260493934)Node 91: (44.436556121537727,45.198734684474182)Node 92: (55.133841957493615,34.481779595130021)Node 93: (35.269655350255618,77.097471746195794)Node 94: (77.207638312693518,28.777121439938025)Node 95: (57.080041038375363,44.249731974792546)Node 96: (5.2453003382521217,57.762785003410087)Node 97: (19.127552313323857,76.771730034040161)Node 98: (2.466682112993059,57.526273074339272)Node 99: (44.071560420129238,10.71598111219517)Max Distance for this Simulation is 139.0Load complete...Starting Simulation...THRESH = 0.0500000000000000030: *******************************************THRESH = 0.0500000000000000031: *******************************************THRESH = 0.0500000000000000032: *******************************************THRESH = 0.0500000000000000033: *******************************************THRESH = 0.050000000000000003

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值