LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Software (https://www.linuxquestions.org/questions/linux-software-2/)
-   -   running leach on ns2.34 (https://www.linuxquestions.org/questions/linux-software-2/running-leach-on-ns2-34-a-860250/)

Stanley33 02-02-2011 11:15 AM

running leach on ns2.34
 
I am trying to run leach ns2.27 on ns2.34, can any one give me a clue of how to do it am currently using ubuntu 10.4
thank you

Snark1994 02-02-2011 11:24 AM

What do you mean "how to run"? I was under the impression LEACH was a wireless protocol... Can you explain exactly what you're trying to do, where you've looked for information and at what point in the process you've got stuck? Thankyou :)

knudfl 02-02-2011 11:33 AM

Welcome to LQ. .. .. :) ..

You can have as many versions of ns-allinone-2.x installed, as you want.

Installing ns-allinone-2.27 on Ubuntu, post #3 here
http://www.linuxquestions.org/questi...10-a-782356/#3

More info : LQ Search , Tag = leach
Or LQ Search , keyword = leach

..

Stanley33 02-03-2011 11:11 AM

leach simulation
 
I want to run a simulation on leach (protocol )so I downloaded an ns2.27 package of it, currently I have ns2.34 installed
I am having problem compiling it

is there any modification that needs to be made
or
I would not mind if I can get a link where I can download a package that can run on ns2.34

knudfl 02-03-2011 11:32 AM

NS-allinone-2.27 :
Quote:

I am having problem compiling it
Did you follow all the mentioned 27 steps ?
You will have to read everything , post #3 here
http://www.linuxquestions.org/questi...10-a-782356/#3

EDIT : New package ns-234-leach.tar.gz + instructions here
http://www.linuxquestions.org/questi...34-a-870368/#5
( LEACH for ns-2.34 : posts 68 - 78 - 88 , etc., here
http://www.linuxquestions.org/questi...379/page5.html )

..

deepa_2111 04-05-2011 11:26 AM

hey !

I have just added LEACH to Ns 2.35. HAd to make a couple of changes, but it has passed all the validation tests.
Now, while trying to run LEACH, am stuck at ::

couldn't read file "/usr/local/ns-allinone-2.35-RC4
/ns-2.35/mit/rca
/ns-ranode.tcl": no such file or directory
while executing
"source.orig {/usr/local/ns-allinone-2.35-RC4
/ns-2.35/mit/rca
/ns-ranode.tcl}"
("uplevel" body line 1)
invoked from within
"uplevel source.orig[list $fileName]"
invoked from within
"if [$instance_ is_http_url $fileName] {
set buffer [$instance_ read_url $fileName]
uplevel eval $buffer
} else {
uplevel source.orig[list $fileName]
..."
(procedure "source" line 8)
invoked from within
"source $env(RCA_LIBRARY)/ns-ranode.tcl"
(file "mit/uAMPS/sims/uamps.tcl" line 9)
invoked from within
"source.orig mit/uAMPS/sims/uamps.tcl"
("uplevel" body line 1)
invoked from within
"uplevel source.orig[list $fileName]"
invoked from within
"if [$instance_ is_http_url $fileName] {
set buffer [$instance_ read_url $fileName]
uplevel eval $buffer
} else {
uplevel source.orig[list $fileName]
..."
(procedure "source" line 8)
invoked from within
"source mit/uAMPS/sims/uamps.tcl"
(file "tcl/mobility/leach.tcl" line 18)
invoked from within
"source.orig tcl/mobility/leach.tcl"
("uplevel" body line 1)
invoked from within
"uplevel source.orig[list $fileName]"
invoked from within
"if [$instance_ is_http_url $fileName] {
set buffer [$instance_ read_url $fileName]
uplevel eval $buffer
} else {
uplevel source.orig[list $fileName]
..."
(procedure "source" line 8)
invoked from within
"source tcl/mobility/$opt(rp).tcl"
(file "tcl/ex/wireless_leach.tcl" line 187)

I know this is from uamps.tcl. I know the file is there, and the env variables are set. Have seen this question on a couple of forums, but not able to figure out how to fiz this. Please help !

knudfl 04-05-2011 01:36 PM

Post #6 @deepa_2111 : Welcome to LQ. .. .. :) ..

Please edit post #6 to use code tags:
[/code] at code end, and [code] at code text start.
http://www.linuxquestions.org/questi....php?do=bbcode

Why ns-allinone-2.35-RC4, when RC7 is available ?
http://www.isi.edu/nsnam/dist/release/

And /usr/local/ is not a very convenient location for ns-allinone-2.xx.
Default is /home/<user-name>/ns2/ns-allinone-2.xx/.

It is not quite clear, what you are doing. "run LEACH" : What do you mean ?
Please specify the used command.
(Most things are probably described here, posts # 68...# 140 .... ..
http://www.linuxquestions.org/questi...79/page10.html )

LEACH for ns-2.34 : The latest files and install instructions are here
http://www.linuxquestions.org/questi...34-a-870368/#5
..

deepa_2111 04-05-2011 02:57 PM

Hey ..

Thanks a lot ...

I've got it running. Regarding ns-allinone-2.35-RC4, it is coz I'm running it on cygwin, and I think this is the most stable version.
I was trying to run the leach_test file, and i had the issues i mentioned above. I fixed it by manually typing the path to remove any extra spaces.

I am going to analyse my results now.

Thanks for the "code" suggestions.

deepa_2111 04-07-2011 10:00 AM

Hello,

I was analysing the results, and I come across this discrepancy (which I see mentioned on a couple of forum posts as well).

If I start with 2J energy per node, with 100 nodes, the maximum energy that can be expended in the network is 200J.
But, leach.out shows me::

Code:

At 548.60000000005618:
                Total Energy = 373.70924811232476
                Total Data = 56353
                Total Alive = 4

Simulation complete

This is impossible. How can the network expend 373.7J of energy.

Further, the document "Porting and Verifying AROS to NS in Linux/UNIX" (by Francisco José Mosqueira Sáez) (http://www.idt.mdh.se/utbildning/exj...les/TR0509.pdf) mentions this issue on page 33, with an explanation::

Quote:

The problem was in the medium, implemented by a class that is not modified by the MIT code.
That is the reason why it was so difficult to find the problem. In ns2.1b5,
there is already
implemented a wireless channel. But this channel behaves like a normal cable connected to every
node. This channel also simulated a more accurate wireless propagation delay than a normal cable.
When a packet arrives to a node, the network interface of the receiving node decides if the power of
transmission was enough to allow the reception of the packet.
In ns2.31,
the channel propagates the signal to every node listening to the channel within a
radius of propagation. To calculate this radius, propagation equations are used based on the
transmitted power of the wireless interface.
How do I go about fixing this ?? Help !!

MayTamer 04-24-2011 02:08 AM

Quote:

Originally Posted by deepa_2111 (Post 4317071)
Hello,

I was analysing the results, and I come across this discrepancy (which I see mentioned on a couple of forum posts as well).

If I start with 2J energy per node, with 100 nodes, the maximum energy that can be expended in the network is 200J.
But, leach.out shows me::

Code:

At 548.60000000005618:
                Total Energy = 373.70924811232476
                Total Data = 56353
                Total Alive = 4

Simulation complete

This is impossible. How can the network expend 373.7J of energy.

Further, the document "Porting and Verifying AROS to NS in Linux/UNIX" (by Francisco José Mosqueira Sáez) (http://www.idt.mdh.se/utbildning/exj...les/TR0509.pdf) mentions this issue on page 33, with an explanation::



How do I go about fixing this ?? Help !!

The total energy and other statistics are calculated through the tcl file "/mit/uAMPS/stats.tcl". the reason for this unreasonable value is that the expended energy of the node is added to the total energy even when the node is dead, while it should be zero. you can check the individual expended energies by reviewing the output file "leach.energy", so you need to check the status of the current node if it's still alive. otherwise the expended value should be zero.

MayTamer 04-25-2011 12:06 AM

Quote:

Originally Posted by MayTamer (Post 4334166)
The total energy and other statistics are calculated through the tcl file "/mit/uAMPS/stats.tcl". the reason for this unreasonable value is that the expended energy of the node is added to the total energy even when the node is dead, while it should be zero. you can check the individual expended energies by reviewing the output file "leach.energy", so you need to check the status of the current node if it's still alive. otherwise the expended value should be zero.

I've wrote this simple awk file https://docs.google.com/uc?id=0BzLWx...download&hl=en to calculate the actual cumulative expanded energy by all nodes over time, it's for Leach-C. to be executed for Leach just comment or delete the first 'if condition'. download it into "/mit/leach_sims" and run the command:
wsn@ubuntu:/opt/ns-allinone-2.34/ns-2.34/mit/leach_sims$ awk -f TotEn.awk leach-c.energy // for Leach-C
wsn@ubuntu:/opt/ns-allinone-2.34/ns-2.34/mit/leach_sims$ awk -f TotEn.awk leach.energy // for Leach

knudfl 04-25-2011 02:33 AM

Post # 11 : Thank you.

But the link isn't working. Shared settings in 'Google Docs':

<awk file> → Actions > Share > Sharing Settings > Change >
> Anyone with a link >>> Save ( > Close ).

deepa_2111 04-25-2011 11:18 PM

Hello ,

Thanks for ur replies. I modified the code as well ::

In \mac\Wireless-Phy.cc:
Code:

if (energy_)
          {
                if(alive_ != 0) // Deepa
                {
                        if (energy_->remove(pktEnergy(Pt_, PXcvr_, ch->size())) != 0)
                        {
                                  printf("alive = 0\n");
                                  alive_ = 0;
                        }
                } // Deepa
          }

i.e., add the <code> if(alive_ != 0) </code> wherever the remove energy function is called,

and in mit\rca\energy.cc :
Code:

int EnergyResource::remove(double amount)
{
  double new_level = energy_level_ - amount;

  if(new_level >= 0 )
  {
          energy_level_ = new_level;
          expended_ += amount;
  } // Deepa

check if the new_level is greater or equal to 0. if it is not, energy cant be removed

deepa_2111 04-25-2011 11:20 PM

Have you noticed that LEACH-C performs worse than LEACH though actually it is supposed to give better performance ? In a previous post, I see someone has mentioned this same observation ... not sure if it has been rectified though.

MayTamer 04-26-2011 12:18 AM

Quote:

Originally Posted by deepa_2111 (Post 4336330)
Have you noticed that LEACH-C performs worse than LEACH though actually it is supposed to give better performance ? In a previous post, I see someone has mentioned this same observation ... not sure if it has been rectified though.

I'm sorry to miss the shared settings. Well, for Homogeneous wireless network (i.e. eq_energy=1), Leach-C performance should be worse because it's a centralised protocol and will consume more energy during the set-up phase than Leach. but for Heterogeneous network (eq_energy=0) Leach-C should came up with a better performance than Leach. However, I've run both protocols for Heterogeneous network and to my surprise, Leach still outperforms Leach-C. I've checked the file ns_leach.tcl, which is called for both protocols, and found that when eq_energy=0 then the calculated threshold of Leach would differ from the conventional one, taking into consideration the proportional current energy of the node to the total energy. hence enhancing the clusterheads election. i'm still confused about this point because Leach is local/distributed clustering algorithm so how the nodes would calculate the total energy without exchanging messages ??? However, if you force Leach to use it's conventional threshold for Heterogeneous then it'll perform worse.


All times are GMT -5. The time now is 05:53 AM.