LinuxQuestions.org
Latest LQ Deal: Latest LQ Deals
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Networking > Linux - Wireless Networking
User Name
Password
Linux - Wireless Networking This forum is for the discussion of wireless networking in Linux.

Notices


Reply
  Search this Thread
Old 02-20-2018, 10:39 PM   #1
dajoshi.fet
LQ Newbie
 
Registered: Feb 2018
Posts: 17
Blog Entries: 1

Rep: Reputation: Disabled
Smile awk script for calculating energy for AODV protocol nodes, displays negative values.


I am new to tcl scripting and awk.
I have created 50 nodes with random movement.

Code:
set opt(chan) Channel/WirelessChannel ;
set opt(prop) Propagation/TwoRayGround ;
set opt(netif) Phy/WirelessPhy ;
set opt(mac) Mac/802_11 ;
set opt(ifq) Queue/DropTail/PriQueue ;
set opt(ll) LL ;
set opt(ant) Antenna/OmniAntenna ;
set opt(x) 500;
set opt(y) 500;
set opt(ifqlen) 50 ;
set opt(rp) AODV ;
set opt(nn) 50;
set opt(cp) "/home/dj/ns-allinone-2.35/ns-2.35/indep-utils/cmu-scen-gen/cbrgen_50.tcl";
set opt(sc) "/home/dj/ns-allinone-2.35/ns-2.35/indep-utils/cmu-scen-gen/setdest/setdest_50.tcl";
set opt(stop) 300;

### Setting The Simulator Objects
	
set ns_ [new Simulator]
#create the nam and trace file:
set nf [open aodv.tr w]
$ns_ use-newtrace
$ns_ trace-all $nf
	
set namtrace [open aodv.nam w]
$ns_ namtrace-all-wireless $namtrace $opt(x) $opt(y)
	
set topo [new Topography]
$topo load_flatgrid $opt(x) $opt(y)
create-god $opt(nn)
set chan_1_ [new $opt(chan)]

$ns_ node-config -adhocRouting $opt(rp) \
	-llType $opt(ll) \
	-macType $opt(mac) \
	-ifqType $opt(ifq) \
	-ifqLen $opt(ifqlen) \
	-antType $opt(ant) \
	-propType $opt(prop) \
	-phyType $opt(netif) \
	-topoInstance $topo \
	-agentTrace ON \
	-routerTrace ON \
	-macTrace ON \
	-movementTrace ON \
	-channel $chan_1_
$ns_ node-config -energyModel "EnergyModel" \
		-idlePower 1.0 \
		-rxPower 1.0 \
		-txPower 1.0 \
		-sleepPower 0.001 \
		-transitionPower 0.2 \
		-transitionTime 0.005 \
		-initialEnergy 1000

set node_(0) [$ns_ node]
set node_(1) [$ns_ node]
set node_(2) [$ns_ node]
set node_(3) [$ns_ node]
set node_(4) [$ns_ node]
set node_(5) [$ns_ node]
set node_(6) [$ns_ node]
set node_(7) [$ns_ node]
set node_(8) [$ns_ node]
set node_(9) [$ns_ node]
set node_(10) [$ns_ node]
set node_(11) [$ns_ node]
set node_(12) [$ns_ node]
set node_(13) [$ns_ node]
set node_(14) [$ns_ node]
set node_(15) [$ns_ node]
set node_(16) [$ns_ node]
set node_(17) [$ns_ node]
set node_(18) [$ns_ node]
set node_(19) [$ns_ node]
set node_(20) [$ns_ node]
set node_(21) [$ns_ node]
set node_(22) [$ns_ node]
set node_(23) [$ns_ node]
set node_(24) [$ns_ node]
set node_(25) [$ns_ node]
set node_(26) [$ns_ node]
set node_(27) [$ns_ node]
set node_(28) [$ns_ node]
set node_(29) [$ns_ node]
set node_(30) [$ns_ node]
set node_(31) [$ns_ node]
set node_(32) [$ns_ node]
set node_(33) [$ns_ node]
set node_(34) [$ns_ node]
set node_(35) [$ns_ node]
set node_(36) [$ns_ node]
set node_(37) [$ns_ node]
set node_(38) [$ns_ node]
set node_(39) [$ns_ node]
set node_(40) [$ns_ node]
set node_(41) [$ns_ node]
set node_(42) [$ns_ node]
set node_(43) [$ns_ node]
set node_(44) [$ns_ node]
set node_(45) [$ns_ node]
set node_(46) [$ns_ node]
set node_(47) [$ns_ node]
set node_(48) [$ns_ node]
set node_(49) [$ns_ node]

source $opt(sc) 
source $opt(cp)

proc stop {} {

global ns_ nf namtrace
$ns_ flush-trace
close $nf
close $namtrace
exec nam aodv.nam &
exit 0

}

$ns_ at 25.0 "stop"
$ns_ run

Then I created the awk script, as follows:

Code:
BEGIN {
initialenergy=90
maxenergy=0
n=50
node_id=999
}
{
# Trace line format: energy
event = $1
time = $2 
if (event == "r" || event == "d" || event == "s"|| event== "f") {
node_id = $9
energy = $17
}
if (event== "N") {
node_id = $9
energy = $17
}
# Store remaining energy
finalenergy[node_id] = energy
}

END {
# Compute consumed energy for each node
for (i in finalenergy) {
consumenergy[i] = initialenergy-finalenergy[i]
totalenergy += consumenergy[i]
if(maxenergy < consumenergy[i]){
maxenergy = consumenergy[i]
node_id = i
}
}
###compute average energy
averagenergy=totalenergy/n
####output
for (i=0; i<n; i++) {
print("node",i,consumenergy[i])
}
print("average energy",averagenergy)
print("total energy",totalenergy)

}
Your help would be appreciable. Thank you!
 
Old 02-21-2018, 11:28 AM   #2
knudfl
LQ 5k Club
 
Registered: Jan 2008
Location: Copenhagen DK
Distribution: PCLinuxOS2023 Fedora38 + 50+ other Linux OS, for test only.
Posts: 17,511

Rep: Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641
Welcome to LQ.

Simulation examples, "EnergyModel" : EnergyModel-examples-4.tar.gz
https://drive.google.com/file/d/1U8Y...ew?usp=sharing

Awk and perl scripts, energy analyzes :
Av_res_en.awk
energy.awk
energyleft.txt
Energy-Souvik.awk
energy-tes.awk
energy_wireless.awk
finalnodeandenergy.awk
rd_nd_en.awk
statistics.awk
energshort.pl

All ns2 awk and perl scripts : awk#perl#python__scripts-12.17.tar.gz
https://drive.google.com/file/d/1U8Y...ew?usp=sharing

Top 25 scripts https://drive.google.com/file/d/1xjt...ew?usp=sharing

P.S. : Your simulation code is incomplete, the files cbrgen_50.tcl, setdest_50.tcl are missing.

-
 
1 members found this post helpful.
Old 03-05-2018, 01:25 AM   #3
dajoshi.fet
LQ Newbie
 
Registered: Feb 2018
Posts: 17

Original Poster
Blog Entries: 1

Rep: Reputation: Disabled
Quote:
Originally Posted by knudfl View Post

P.S. : Your simulation code is incomplete, the files cbrgen_50.tcl, setdest_50.tcl are missing.

-
Thank you for replying me back.
I have already added my setdest and cbrgen files, first in the declaration and then where I called them.
Is there any other statement missing? I really tried hard to find an example which could illustrate the same but all I gathered is in the script.
 
Old 03-05-2018, 05:45 AM   #4
knudfl
LQ 5k Club
 
Registered: Jan 2008
Location: Copenhagen DK
Distribution: PCLinuxOS2023 Fedora38 + 50+ other Linux OS, for test only.
Posts: 17,511

Rep: Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641
Re #3.

So what are cbrgen_50.tcl and setdest_50.tcl ?
Impossible to know, when no code.
I.e. all we have is their names, but no files !

Please upload the files to e.g. Dropbox, and post a shared link.

-
 
Old 03-06-2018, 10:02 PM   #5
dajoshi.fet
LQ Newbie
 
Registered: Feb 2018
Posts: 17

Original Poster
Blog Entries: 1

Rep: Reputation: Disabled
https://drive.google.com/drive/folde...e8?usp=sharing

This has all the files that I have created till now.
 
Old 03-07-2018, 04:53 AM   #6
knudfl
LQ 5k Club
 
Registered: Jan 2008
Location: Copenhagen DK
Distribution: PCLinuxOS2023 Fedora38 + 50+ other Linux OS, for test only.
Posts: 17,511

Rep: Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641
Re #1.
Quote:
energy for AODV protocol nodes,displays negative values.
Your file requires a low value of "-initialEnergy": E.g. -initialEnergy 30

... Then you'll get positive energy values ...
Code:
.
.
.
node 45 83.3397
node 46 83.3428
node 47 83.3428
node 48 83.3388
node 49 83.3397
+===========+
average energy 87.0348
total energy 4351.74
As you can see from "EnergyModel-examples-4.tar.gz", only a few files have the setting "1000".
-
Attached Files
File Type: txt dajoshi.fet.tcl.txt (2.9 KB, 112 views)

Last edited by knudfl; 03-07-2018 at 05:13 AM.
 
1 members found this post helpful.
Old 03-07-2018, 11:31 PM   #7
dajoshi.fet
LQ Newbie
 
Registered: Feb 2018
Posts: 17

Original Poster
Blog Entries: 1

Rep: Reputation: Disabled
THANK YOU!
It worked!
Now I am going to try for throughput, delay, and drop.
Are there any points to keep in mind while working on them. and also if you have the new trace file formats, please share.

Thank you ones again!
 
Old 03-08-2018, 05:51 AM   #8
knudfl
LQ 5k Club
 
Registered: Jan 2008
Location: Copenhagen DK
Distribution: PCLinuxOS2023 Fedora38 + 50+ other Linux OS, for test only.
Posts: 17,511

Rep: Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641
Re #7 : new-trace : Simple → one line ...

$ ns use-newtrace

See the examples :
aomdv-estudy.tcl:#$ns_ use-newtrace
estudy.tcl:#$ns_ use-newtrace
wireless-flooding.tcl:$ns use-newtrace

Be aware that some protocols / Mac protocols are using "old trace" by default.

tracefile-doc.tar.gz https://drive.google.com/file/d/0B7S...ew?usp=sharing

-
 
Old 03-09-2018, 12:05 AM   #9
dajoshi.fet
LQ Newbie
 
Registered: Feb 2018
Posts: 17

Original Poster
Blog Entries: 1

Rep: Reputation: Disabled
This is how I calculated throughput and i got this as output.
Code:
awk -f throughput.awk aodv.tr
Average Throughput[kbps] = -1.24		 StartTime=400.00	StopTime=24.90
Attached Files
File Type: txt throughput.txt (744 Bytes, 61 views)
 
Old 03-09-2018, 12:06 AM   #10
dajoshi.fet
LQ Newbie
 
Registered: Feb 2018
Posts: 17

Original Poster
Blog Entries: 1

Rep: Reputation: Disabled
Code:
BEGIN {
recvdSize = 0
startTime = 400
stopTime = 0
}
   
{
event = $1
time = $3 
node_id = $9 
pkt_size = $37
level = $19 
   
# Store start time
if (level == "AGT" && event == "s" && pkt_size > 512) {
if (time < startTime) {
startTime = time        
}
}
   
# Update total received packets' size and store packets arrival time
if (level == "AGT" && event == "r" && pkt_size > 512) {
if (time > stopTime) {
stopTime = time     
}
# Rip off the header
hdr_size = pkt_size % 512
pkt_size -= hdr_size
# Store received packet's size
recvdSize += pkt_size
}
}
   
END {
printf("Average Throughput[kbps] = %.2f\t\t StartTime=%.2f\tStopTime=%.2f\n",(recvdSize/(stopTime-startTime))*(8/1000),startTime,stopTime)
}
This is how I calculated throughput and i got this as output.
Code:
awk -f throughput.awk aodv.tr
Average Throughput[kbps] = -1.24		 StartTime=400.00	StopTime=24.90
 
Old 03-09-2018, 07:47 AM   #11
knudfl
LQ 5k Club
 
Registered: Jan 2008
Location: Copenhagen DK
Distribution: PCLinuxOS2023 Fedora38 + 50+ other Linux OS, for test only.
Posts: 17,511

Rep: Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641
Re #1, #9, #10.

Please be aware that your created files energy.awk, throughput.awk must have new unique file names.

The names energy.awk, throughput.awk already exist.
 
Old 03-09-2018, 09:29 PM   #12
dajoshi.fet
LQ Newbie
 
Registered: Feb 2018
Posts: 17

Original Poster
Blog Entries: 1

Rep: Reputation: Disabled
How do the names matter?

Also, may you please suggest me some ideas on how I can proceed with a project on EE-AODV where I can use the awk files, graphs etc.
It would be a great help.
 
Old 03-10-2018, 11:14 AM   #13
knudfl
LQ 5k Club
 
Registered: Jan 2008
Location: Copenhagen DK
Distribution: PCLinuxOS2023 Fedora38 + 50+ other Linux OS, for test only.
Posts: 17,511

Rep: Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641
Re #12.

File naming : All files must have a unique name to keep track of the files.
"energy.awk, throughput.awk": Several students have already used these names for files with different content.

See awk#perl#python__scripts-12.17.tar.gz
https://drive.google.com/file/d/1D_X...ew?usp=sharing

In real life (as an employee) things must be in a certain order.
I.e. follow the rules. No two items can have the same name / ID-number.
And software has version numbers : energy-da-1.awk, throughput-da-1.awk .
----

ns2 EE-AODV : A couple of hits with Google. No code.

-
 
Old 03-12-2018, 06:47 AM   #14
dajoshi.fet
LQ Newbie
 
Registered: Feb 2018
Posts: 17

Original Poster
Blog Entries: 1

Rep: Reputation: Disabled
I tried to calculate the delay instead I got an error.
Code:
awk -f Try1delay.awk aodv.tr
awk: Try1delay.awk:131: (FILENAME=aodv.tr FNR=55875) fatal: division by zero attempted
https://drive.google.com/file/d/1Zo0...ew?usp=sharing

Also, please take a look at replay #9, where I calculated throughput. Is it okay how I have calculated it?
 
Old 03-12-2018, 07:46 AM   #15
knudfl
LQ 5k Club
 
Registered: Jan 2008
Location: Copenhagen DK
Distribution: PCLinuxOS2023 Fedora38 + 50+ other Linux OS, for test only.
Posts: 17,511

Rep: Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641Reputation: 3641
Re #14. Delay scripts →

all-2.awk
Avg_Del.awk
Avg_Del_Flow.awk
Instnt_Del.awk
Instnt_Del_Flow.awk
-----------
delay_alterado_einar.awk
delay.awk
delay-e2e.awk
delay-link.awk
delay_original.awk
del-ratio.awk
insdelay_tcp-cbr-vbr.awk
measure-delay.awk
thr_drop_delay.awk
.... .... So please use a script which will fit the particular trace.tr: Not every random script will work. Please start with "the good ones". (And not all trace files.tr have usable information.)

"Top 25 scripts" https://drive.google.com/file/d/1t9a...ew?usp=sharing

Overview, scripts https://drive.google.com/file/d/1TEz...ew?usp=sharing

-
 
  


Reply

Tags
energy model, ns2



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
ns2 code to deploy nodes, assign initial energy values and divide into grids reshmaj Linux - Newbie 4 04-15-2017 09:49 AM
To find Residual Energy of nodes in OLSR protocol-NS-2.35 shelja.fet@mriu.edu.in Linux - Newbie 3 07-21-2016 07:43 AM
How do I go about evaluating energy efficiency in aodv and leach protocol. talk_2_tosin Linux - Newbie 12 04-18-2015 06:27 PM
Energy.awk required to compute remaing energy of nodes. Aska123 Linux - Wireless Networking 2 02-02-2014 02:31 AM

LinuxQuestions.org > Forums > Linux Forums > Linux - Networking > Linux - Wireless Networking

All times are GMT -5. The time now is 09:35 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration