Ns3 Projects for B.E/B.Tech M.E/M.Tech PhD Scholars.  Phone-Number:9790238391   E-mail: ns3simulation@gmail.com

How To Implement Mobile Cloud Computing in NS3

To Implement Mobile Cloud Computing (MCC) in ns-3 can be done by setting up mobile nodes (user devices), a cloud server, and the communication links which simulates a mobile network where mobile devices can offload computation tasks to a cloud server.

Prerequisites

  • ns-3 installed on your system.
  • Basic understanding of ns-3 and C++ programming.

Steps to Implement Mobile Cloud Computing in ns-3

  1. This can be done by setting up mobile nodes (user devices), a cloud server, and the communication links between them Install ns-3: Ensure you have ns-3 installed. You can download it from the official website and follow the installation instructions.

wget https://www.nsnam.org/release/ns-allinone-3.xx.tar.bz2

tar -xjf ns-allinone-3.xx.tar.bz2

cd ns-allinone-3.xx

./build.py –enable-examples –enable-tests

Include Necessary Headers: Include the required headers for the network modules, mobility, and internet.

#include “ns3/core-module.h”

#include “ns3/network-module.h”

#include “ns3/mobility-module.h”

#include “ns3/internet-module.h”

#include “ns3/point-to-point-module.h”

#include “ns3/applications-module.h”

#include “ns3/wifi-module.h”

Create Network Topology: Create nodes for mobile devices and the cloud server. Set up communication links between them using WiFi for mobile devices and a point-to-point link for the cloud server.

NodeContainer mobileNodes;

mobileNodes.Create(3);

NodeContainer cloudServerNode;

cloudServerNode.Create(1);

NodeContainer apNode;

apNode.Create(1);

Set Up WiFi Communication: Configure WiFi communication for the mobile devices and access point.

WifiHelper wifi;

wifi.SetRemoteStationManager(“ns3::AarfWifiManager”);

YansWifiChannelHelper wifiChannel = YansWifiChannelHelper::Default();

YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default();

wifiPhy.SetChannel(wifiChannel.Create());

WifiMacHelper wifiMac;

wifiMac.SetType(“ns3::StaWifiMac”, “Ssid”, SsidValue(Ssid(“ns-3-ssid”)),

                “ActiveProbing”, BooleanValue(false));

NetDeviceContainer mobileDevices;

mobileDevices = wifi.Install(wifiPhy, wifiMac, mobileNodes);

wifiMac.SetType(“ns3::ApWifiMac”, “Ssid”, SsidValue(Ssid(“ns-3-ssid”)));

NetDeviceContainer apDevice;

apDevice = wifi.Install(wifiPhy, wifiMac, apNode);

Set Up Point-to-Point Link: Configure a point-to-point link between the access point and the cloud server.

PointToPointHelper pointToPoint;

pointToPoint.SetDeviceAttribute(“DataRate”, StringValue(“10Gbps”));

pointToPoint.SetChannelAttribute(“Delay”, StringValue(“2ms”));

NetDeviceContainer p2pDevices;

p2pDevices = pointToPoint.Install(apNode.Get(0), cloudServerNode.Get(0));

Install Internet Stack: Install the internet stack on all nodes.

InternetStackHelper stack;

stack.Install(mobileNodes);

stack.Install(cloudServerNode);

stack.Install(apNode);

Assign IP Addresses: Assign IP addresses to the devices.

Ipv4AddressHelper address;

address.SetBase(“10.1.1.0”, “255.255.255.0”);

Ipv4InterfaceContainer mobileInterfaces;

mobileInterfaces = address.Assign(mobileDevices);

address.SetBase(“10.1.2.0”, “255.255.255.0”);

Ipv4InterfaceContainer apInterface;

apInterface = address.Assign(apDevice);

address.SetBase(“10.1.3.0”, “255.255.255.0”);

Ipv4InterfaceContainer cloudInterface;

cloudInterface = address.Assign(p2pDevices);

Set Up Mobility Model: Configure the mobility model for the mobile devices to simulate movement.

MobilityHelper mobility;

mobility.SetPositionAllocator(“ns3::GridPositionAllocator”,

                              “MinX”, DoubleValue(0.0),

                              “MinY”, DoubleValue(0.0),

                              “DeltaX”, DoubleValue(5.0),

                              “DeltaY”, DoubleValue(10.0),

                              “GridWidth”, UintegerValue(3),

                              “LayoutType”, StringValue(“RowFirst”));

mobility.SetMobilityModel(“ns3::RandomWalk2dMobilityModel”,

                          “Bounds”, RectangleValue(Rectangle(-50, 50, -50, 50)));

mobility.Install(mobileNodes);

mobility.SetMobilityModel(“ns3::ConstantPositionMobilityModel”);

mobility.Install(apNode);

mobility.Install(cloudServerNode);

Create Applications: Create and install applications on the mobile devices to simulate offloading tasks to the cloud server.

uint16_t port = 9;

OnOffHelper onoff(“ns3::UdpSocketFactory”, Address(InetSocketAddress(cloudInterface.GetAddress(1), port)));

onoff.SetConstantRate(DataRate(“500kb/s”));

ApplicationContainer app = onoff.Install(mobileNodes.Get(0));

app.Start(Seconds(1.0));

app.Stop(Seconds(10.0));

PacketSinkHelper sink(“ns3::UdpSocketFactory”, Address(InetSocketAddress(Ipv4Address::GetAny(), port)));

app = sink.Install(cloudServerNode.Get(0));

app.Start(Seconds(0.0));

app.Stop(Seconds(10.0));

Run the Simulation: Finally, run the simulation and clean up.

Simulator::Stop(Seconds(10.0));

Simulator::Run();

Simulator::Destroy();

Example Complete Script

Below is an example complete script:

#include “ns3/core-module.h”

#include “ns3/network-module.h”

#include “ns3/mobility-module.h”

#include “ns3/internet-module.h”

#include “ns3/point-to-point-module.h”

#include “ns3/applications-module.h”

#include “ns3/wifi-module.h”

using namespace ns3;

int main(int argc, char *argv[])

{

    NodeContainer mobileNodes;

    mobileNodes.Create(3);

    NodeContainer cloudServerNode;

    cloudServerNode.Create(1);

    NodeContainer apNode;

    apNode.Create(1);

    WifiHelper wifi;

    wifi.SetRemoteStationManager(“ns3::AarfWifiManager”);

    YansWifiChannelHelper wifiChannel = YansWifiChannelHelper::Default();

    YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default();

    wifiPhy.SetChannel(wifiChannel.Create());

    WifiMacHelper wifiMac;

    wifiMac.SetType(“ns3::StaWifiMac”, “Ssid”, SsidValue(Ssid(“ns-3-ssid”)),

                    “ActiveProbing”, BooleanValue(false));

    NetDeviceContainer mobileDevices;

    mobileDevices = wifi.Install(wifiPhy, wifiMac, mobileNodes);

    wifiMac.SetType(“ns3::ApWifiMac”, “Ssid”, SsidValue(Ssid(“ns-3-ssid”)));

    NetDeviceContainer apDevice;

    apDevice = wifi.Install(wifiPhy, wifiMac, apNode);

    PointToPointHelper pointToPoint;

    pointToPoint.SetDeviceAttribute(“DataRate”, StringValue(“10Gbps”));

    pointToPoint.SetChannelAttribute(“Delay”, StringValue(“2ms”));

    NetDeviceContainer p2pDevices;

    p2pDevices = pointToPoint.Install(apNode.Get(0), cloudServerNode.Get(0));

 

    InternetStackHelper stack;

    stack.Install(mobileNodes);

    stack.Install(cloudServerNode);

    stack.Install(apNode);

    Ipv4AddressHelper address;

    address.SetBase(“10.1.1.0”, “255.255.255.0”);

    Ipv4InterfaceContainer mobileInterfaces;

    mobileInterfaces = address.Assign(mobileDevices);

    address.SetBase(“10.1.2.0”, “255.255.255.0”);

    Ipv4InterfaceContainer apInterface;

    apInterface = address.Assign(apDevice);

    address.SetBase(“10.1.3.0”, “255.255.255.0”);

    Ipv4InterfaceContainer cloudInterface;

    cloudInterface = address.Assign(p2pDevices);

    MobilityHelper mobility;

    mobility.SetPositionAllocator(“ns3::GridPositionAllocator”,

                                  “MinX”, DoubleValue(0.0),

                                  “MinY”, DoubleValue(0.0),

                                  “DeltaX”, DoubleValue(5.0),

                                  “DeltaY”, DoubleValue(10.0),

                                  “GridWidth”, UintegerValue(3),

                                  “LayoutType”, StringValue(“RowFirst”));

 

    mobility.SetMobilityModel(“ns3::RandomWalk2dMobilityModel”,

                              “Bounds”, RectangleValue(Rectangle(-50, 50, -50, 50)));

    mobility.Install(mobileNodes);

    mobility.SetMobilityModel(“ns3::ConstantPositionMobilityModel”);

    mobility.Install(apNode);

    mobility.Install(cloudServerNode);

    uint16_t port = 9;

    OnOffHelper onoff(“ns3::UdpSocketFactory”, Address(InetSocketAddress(cloudInterface.GetAddress(1), port)));

    onoff.SetConstantRate(DataRate(“500kb/s”));

    ApplicationContainer app = onoff.Install(mobileNodes.Get(0));

    app.Start(Seconds(1.0));

    app.Stop(Seconds(10.0));

    PacketSinkHelper sink(“ns3::UdpSocketFactory”, Address(InetSocketAddress(Ipv4Address::GetAny(), port)));

    app = sink.Install(cloudServerNode.Get(0));

    app.Start(Seconds(0.0));

    app.Stop(Seconds(10.0));

    Simulator::Stop(Seconds(10.0));

    Simulator::Run();

    Simulator::Destroy();

 

    return 0;

}

Running the Script

Compile and run the script using the following commands:

./waf configure –enable-examples

./waf build

./waf –run <script-name>

Finally, we all know how to implement the Mobile Cloud Computing in ns-3 get best results by following the above steps .