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

NS3 Wimax Simulation

NS3 Wimax Simulation (Worldwide Interoperability for Microwave Access) is a telecommunications protocol describing fixed and fully mobile Internet access services.We assist Engineering students and Research Scholars in implementing Ns3 Wimax simulation Projects based on their requirement.WiMAX technology is a broadband wireless data communications technology based around the IEE 802.16 standard providing high speed data over a wide area.

WIMAX versions:

  • 16d (802.14-2004).
  • 16e (802.16-2005).

WIMAX QoS:

In order to gain QoS in wimax there are five different QoS classes are defined. There are,

  • Non-real time packet services.
  • Unsolicited grand services.
  • Best effort..
  • Real-time packet services.
  • Extended real time packet services.

 Architecture of WIMAX:

wimax-architecture

Features of WIMAX:

  • Accessibility.
  • Long rang.
  • Mobility.
  • Interfacing.

Sample code for WIMAX:

This is the sample code for wimax.


#include "ns3/test.h"
#include "ns3/simulator.h"
#include "ns3/wimax-helper.h"
#include "ns3/cs-parameters.h"
#include "ns3/ipcs-classifier-record.h"
#include "ns3/service-flow.h"
using namespace ns3;
class Ns3WimaxSfCreationTestCase : public TestCase
{
public:
Ns3WimaxSfCreationTestCase ();
virtual ~Ns3WimaxSfCreationTestCase ();
private:
virtual void DoRun (void);
};
Ns3WimaxSfCreationTestCase::Ns3WimaxSfCreationTestCase ()
: TestCase ("Test the service flow tlv implementation.")
{
}
Ns3WimaxSfCreationTestCase::~Ns3WimaxSfCreationTestCase ()
{
}
void
Ns3WimaxSfCreationTestCase::DoRun (void)
{
int duration = 2;
WimaxHelper::SchedulerType scheduler = WimaxHelper::SCHED_TYPE_SIMPLE;
NodeContainer ssNodes;
NodeContainer bsNodes;
ssNodes.Create (1);
bsNodes.Create (1);
WimaxHelper wimax;
NetDeviceContainer ssDevs, bsDevs;
ssDevs = wimax.Install (ssNodes,
WimaxHelper::DEVICE_TYPE_SUBSCRIBER_STATION,
WimaxHelper::SIMPLE_PHY_TYPE_OFDM,
scheduler);
bsDevs = wimax.Install (bsNodes, WimaxHelper::DEVICE_TYPE_BASE_STATION, WimaxHelper::SIMPLE_PHY_TYPE_OFDM, scheduler);
ssDevs.Get (0)->GetObject<SubscriberStationNetDevice> ()->SetModulationType (WimaxPhy::MODULATION_TYPE_QAM16_12);
bsDevs.Get (0)->GetObject<BaseStationNetDevice> ();
InternetStackHelper stack;
stack.Install (bsNodes);
stack.Install (ssNodes);
Ipv4AddressHelper address;
address.SetBase ("10.1.1.0", "255.255.255.0");
Ipv4InterfaceContainer SSinterfaces = address.Assign (ssDevs);
Ipv4InterfaceContainer BSinterface = address.Assign (bsDevs);
ServiceFlow * DlServiceFlowUgs = new ServiceFlow (ServiceFlow::SF_DIRECTION_DOWN);
IpcsClassifierRecord DlClassifierUgs (Ipv4Address ("0.0.0.0"),
Ipv4Mask ("0.0.0.0"),
Ipv4Address ("0.0.0.0"),
Ipv4Mask ("0.0.0.0"),
3000,
3000,
0,
35000,
17,
1);
CsParameters DlcsParam (CsParameters::ADD, DlClassifierUgs);
DlServiceFlowUgs->SetConvergenceSublayerParam (DlcsParam);
DlServiceFlowUgs->SetCsSpecification (ServiceFlow::IPV4);
DlServiceFlowUgs->SetServiceSchedulingType (ServiceFlow::SF_TYPE_UGS);
DlServiceFlowUgs->SetMaxSustainedTrafficRate (1000000);
DlServiceFlowUgs->SetMinReservedTrafficRate (1000000);
DlServiceFlowUgs->SetMinTolerableTrafficRate (1000000);
DlServiceFlowUgs->SetMaximumLatency (10);
DlServiceFlowUgs->SetMaxTrafficBurst (1000);
DlServiceFlowUgs->SetTrafficPriority (1);
ServiceFlow * UlServiceFlowUgs = new ServiceFlow (ServiceFlow::SF_DIRECTION_UP);
IpcsClassifierRecord UlClassifierUgs (Ipv4Address ("0.0.0.0"),
Ipv4Mask ("0.0.0.0"),
Ipv4Address ("0.0.0.0"),
Ipv4Mask ("0.0.0.0"),
0,
35000,
3000,
3000,
17,
1);
CsParameters UlcsParam (CsParameters::ADD, UlClassifierUgs);
UlServiceFlowUgs->SetConvergenceSublayerParam (UlcsParam);
UlServiceFlowUgs->SetCsSpecification (ServiceFlow::IPV4);
UlServiceFlowUgs->SetServiceSchedulingType (ServiceFlow::SF_TYPE_UGS);
UlServiceFlowUgs->SetMaxSustainedTrafficRate (1000000);
UlServiceFlowUgs->SetMinReservedTrafficRate (1000000);
UlServiceFlowUgs->SetMinTolerableTrafficRate (1000000);
UlServiceFlowUgs->SetMaximumLatency (10);
UlServiceFlowUgs->SetMaxTrafficBurst (1000);
UlServiceFlowUgs->SetTrafficPriority (1);
ssDevs.Get (0)->GetObject<SubscriberStationNetDevice> ()->AddServiceFlow (DlServiceFlowUgs);
ssDevs.Get (0)->GetObject<SubscriberStationNetDevice> ()->AddServiceFlow (UlServiceFlowUgs);
Simulator::Stop (Seconds (duration));
Simulator::Run ();
Simulator::Destroy ();
}
class Ns3WimaxServiceFlowTestSuite : public TestSuite
{
public:
Ns3WimaxServiceFlowTestSuite ();
};
Ns3WimaxServiceFlowTestSuite::Ns3WimaxServiceFlowTestSuite ()
: TestSuite ("wimax-service-flow", UNIT)
{
AddTestCase (new Ns3WimaxSfCreationTestCase, TestCase::QUICK);
}
static Ns3WimaxServiceFlowTestSuite ns3WimaxServiceFlowTestSuite;