To calculate energy efficiency networking in ns3, we need to measure the energy consumed by network devices for successfully delivering data. Here is a complete on calculating energy efficiency in ns3.
Steps for calculating energy efficiency
- Set up the simulation :
- To simulate the network, create a network topology with nodes, protocols and links configured.
- Install energy models :
- To simulate energy consumption, set up energy models on the nodes.
- Install applications :
- To generate and receive traffic, set up application.
- Trace energy consumption :
- To monitor energy levels of the nodes, use ns3 tracing capabilities.
- Calculate energy efficiency :
- Calculate the ratio of data successfully delivered to the energy consumed.
Example for simple energy efficiency
Below is an example to demonstrate the process:
- set up the simulation
Create a simple network topology by using a point-to-point link between two nodes.
#include “ns3/core-module.h”
#include “ns3/network-module.h”
#include “ns3/internet-module.h”
#include “ns3/point-to-point-module.h”
#include “ns3/applications-module.h”
#include “ns3/energy-module.h”
#include “ns3/simple-device-energy-model.h”
#include “ns3/simple-energy-source.h”
using namespace ns3;
NS_LOG_COMPONENT_DEFINE (“EnergyEfficiencyExample”);
int main (int argc, char *argv[])
{
// Create two nodes
NodeContainer nodes;
nodes.Create (2);
// Set up the point-to-point link
PointToPointHelper pointToPoint;
pointToPoint.SetDeviceAttribute (“DataRate”, StringValue (“5Mbps”));
pointToPoint.SetChannelAttribute (“Delay”, StringValue (“2ms”));
// Install link devices on nodes
NetDeviceContainer devices;
devices = pointToPoint.Install (nodes);
// Install the internet stack
InternetStackHelper stack;
stack.Install (nodes);
// Assign IP addresses
Ipv4AddressHelper address;
address.SetBase (“10.1.1.0”, “255.255.255.0”);
Ipv4InterfaceContainer interfaces = address.Assign (devices);
// Set up energy source and device energy model
BasicEnergySourceHelper basicSourceHelper;
basicSourceHelper.Set (“BasicEnergySourceInitialEnergyJ”, DoubleValue (100)); // Initial energy in Joules
EnergySourceContainer sources = basicSourceHelper.Install (nodes);
WifiRadioEnergyModelHelper radioEnergyHelper;
DeviceEnergyModelContainer deviceModels = radioEnergyHelper.Install (devices, sources);
// Set up the UDP echo server on Node 1
uint16_t port = 9; // well-known echo port number
UdpEchoServerHelper echoServer (port);
ApplicationContainer serverApps = echoServer.Install (nodes.Get (1));
serverApps.Start (Seconds (1.0));
serverApps.Stop (Seconds (10.0));
// Set up the UDP echo client on Node 0
UdpEchoClientHelper echoClient (interfaces.GetAddress (1), port);
echoClient.SetAttribute (“MaxPackets”, UintegerValue (100));
echoClient.SetAttribute (“Interval”, TimeValue (Seconds (0.1))); // 10 packets per second
echoClient.SetAttribute (“PacketSize”, UintegerValue (1024));
ApplicationContainer clientApps = echoClient.Install (nodes.Get (0));
clientApps.Start (Seconds (2.0));
clientApps.Stop (Seconds (10.0));
// Enable tracing
AsciiTraceHelper ascii;
pointToPoint.EnableAsciiAll (ascii.CreateFileStream (“energy-efficiency.tr”));
// Run the simulation
Simulator::Run ();
// Calculate energy efficiency
double totalEnergyConsumed = 0.0;
for (EnergySourceContainer::Iterator iter = sources.Begin (); iter != sources.End (); ++iter)
{
Ptr<EnergySource> source = *iter;
double initialEnergy = source->GetInitialEnergy ();
double remainingEnergy = source->GetRemainingEnergy ();
totalEnergyConsumed += (initialEnergy – remainingEnergy);
}
// Get the total data delivered
uint64_t totalDataDelivered = echoClient.GetTotalData () * 8; // Convert bytes to bits
double energyEfficiency = totalDataDelivered / totalEnergyConsumed; // bits per Joule
std::cout << “Total Energy Consumed: ” << totalEnergyConsumed << ” Joules” << std::endl;
std::cout << “Total Data Delivered: ” << totalDataDelivered << ” bits” << std::endl;
std::cout << “Energy Efficiency: ” << energyEfficiency << ” bits/Joule” << std::endl;
Simulator::Destroy ();
return 0;
}
- Install energy models
To simulate the energy consumption of the nodes, the BasicEnergySource and WifiRadioEnergyModel are used.
- Install applications
In the above example, on one node a UDP echo server is installed. and on another node, a UDP echo client is installed. The client sends 1000 packets, each 1024 bytes in size, at an interval of 0.01 seconds.
- Trace Energy Consumption
By monitoring the EnergySource, energy consumption of each node is tracked.
- Calculate Energy Efficiency
By dividing the total data delivered by the total energy consumed, energy efficiency is calculated.
- Simulation setup :
Two nodes are created. Those nodes are connected using a point-to-point link.
- Install Energy Models:
To simulate energy consumption, attach energy sources and device energy models to the nodes.
- Application setup :
On one node, a UDP echo server is installed. and On another node, a UDP echo client is installed. Configure the client to send a specified number of packets at a specified interval.
- Trace Energy Consumption:
Monitor the energy levels of the nodes throughout the simulation.
- Calculating Energy Efficiency:
Define energy efficiency as the ratio of total data delivered to the total energy consumed. Use the collected energy consumption data to calculate this ratio.
So we went through the guide on calculating energy efficiency networking in ns3 by measuring the energy consumed by network devices for successfully delivering data. Also, we offer more topics related to energy efficiency networking.
We provide you with advice regarding the performance of the simulation for your project and continue following the performance analysis. For optimal outcomes, we also provide complete information on Calculation Energy Efficiency Networking for ns3tool.Contact ns3simulation.com.