How to Start Hierarchical Star Topology Projects using NS3

Starting a Hierarchical Star Topology Project in NS-3

To create a Hierarchical Star Topology has contains the different star networks connected in a hierarchical structure, in which every star is connected to an upper-layer hub such as switch, router, or server. These topologies are generally utilized in large-scale networks such as campus or enterprise systems.

Steps to Start Hierarchical Star Topology Projects using NS3

Step 1: Set Up NS-3

  1. Install NS-3:
    • Download NS-3.
    • Build NS-3:

./waf configure

./waf build

  1. Verify Installation: Test NS-3 with a basic example:

./waf –run scratch/my_first

Step 2: Understand Hierarchical Star Topology

  • Characteristics:
    • The Minimum level includes the multiple star networks.
    • Every star is linked in an upper-layer hub.
    • Effective for handling the large-scale networks.
  • Example:
    • Lower layer: Each Four nodes are connected with three stars.
    • Upper layer: A central hub is linked over all lower-layer hubs.

Step 3: Plan the Topology

  1. Define the structure:
    • Number of stars is the lower layer such as 3 stars.
    • Per star nodes such as 4 nodes each.
    • Upper layer: A central hub.
  2. Set simulation goals:
    • Calculate the throughput, delay, and fault tolerance.
    • Replicate the transmission with various stars.

Step 4: Set Up the Hierarchical Star Topology

  1. Create Nodes: Describe the nodes for the stars and central hub.

NodeContainer lowerHubs, upperHub, stars;

uint32_t numStars = 3;

uint32_t nodesPerStar = 4;

// Create lower-layer hubs

lowerHubs.Create(numStars);

// Create nodes for the stars

stars.Create(numStars * nodesPerStar);

// Create the central hub

upperHub.Create(1);

  1. Set Up Star Networks: Connect nodes in each star to their respective lower-layer hub.

PointToPointHelper p2pStar;

p2pStar.SetDeviceAttribute(“DataRate”, StringValue(“1Gbps”));

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

NetDeviceContainer starDevices;

for (uint32_t i = 0; i < numStars; ++i) {

for (uint32_t j = 0; j < nodesPerStar; ++j) {

uint32_t nodeIndex = i * nodesPerStar + j;

NetDeviceContainer link = p2pStar.Install(lowerHubs.Get(i), stars.Get(nodeIndex));

starDevices.Add(link);

}

}

  1. Connect Lower Hubs to the Upper Hub: utilized a point-to-point connection for simplicity.

PointToPointHelper p2pHierarchy;

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

p2pHierarchy.SetChannelAttribute(“Delay”, StringValue(“1ms”));

NetDeviceContainer hierarchyDevices;

for (uint32_t i = 0; i < numStars; ++i) {

NetDeviceContainer link = p2pHierarchy.Install(lowerHubs.Get(i), upperHub.Get(0));

hierarchyDevices.Add(link);

}

  1. Install Internet Stack: Enhance the Internet stack to all nodes.

InternetStackHelper stack;

stack.Install(lowerHubs);

stack.Install(upperHub);

stack.Install(stars);

Ipv4AddressHelper address;

// Assign IP addresses to star devices

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

Ipv4InterfaceContainer starInterfaces = address.Assign(starDevices);

 

// Assign IP addresses to hierarchy devices

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

Ipv4InterfaceContainer hierarchyInterfaces = address.Assign(hierarchyDevices);

Step 5: Simulate Traffic

  1. Set Up Applications: State the congestion among nodes in various stars.
    • UDP Echo Example:

UdpEchoServerHelper echoServer(9); // Port 9

ApplicationContainer serverApp = echoServer.Install(stars.Get(0)); // Server on Node 0 of Star 1

serverApp.Start(Seconds(1.0));

serverApp.Stop(Seconds(10.0));

UdpEchoClientHelper echoClient(starInterfaces.GetAddress(0), 9); // Server’s IP

echoClient.SetAttribute(“MaxPackets”, UintegerValue(10));

echoClient.SetAttribute(“Interval”, TimeValue(Seconds(1.0)));

echoClient.SetAttribute(“PacketSize”, UintegerValue(1024));

ApplicationContainer clientApp = echoClient.Install(stars.Get(nodesPerStar)); // Client on Node 0 of Star 2

clientApp.Start(Seconds(2.0));

clientApp.Stop(Seconds(10.0));

  1. Use Flow Monitor: Calculate the throughput, delay, and packet loss.

FlowMonitorHelper flowmon;

Ptr<FlowMonitor> monitor = flowmon.InstallAll();

monitor->SerializeToXmlFile(“hierarchical_star_flowmon.xml”, true, true);

Step 6: Run and Analyze

  1. Run the Simulation:

Simulator::Run();

Simulator::Destroy();

  1. Enable Packet Capture: Save .pcap files for traffic analysis.

p2pHierarchy.EnablePcapAll(“hierarchical_star_topology”);

  1. Analyze Results: Utilized the Flow Monitor and packet traces to evaluate performance.

Example: Minimal NS-3 Script for Hierarchical Star Topology

#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/flow-monitor-module.h”

using namespace ns3;

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

uint32_t numStars = 3;

uint32_t nodesPerStar = 4;

// Create hubs and nodes

NodeContainer lowerHubs, upperHub, stars;

lowerHubs.Create(numStars);

stars.Create(numStars * nodesPerStar);

upperHub.Create(1);

// Configure point-to-point links for stars

PointToPointHelper p2pStar;

p2pStar.SetDeviceAttribute(“DataRate”, StringValue(“1Gbps”));

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

NetDeviceContainer starDevices;

for (uint32_t i = 0; i < numStars; ++i) {

for (uint32_t j = 0; j < nodesPerStar; ++j) {

uint32_t nodeIndex = i * nodesPerStar + j;

NetDeviceContainer link = p2pStar.Install(lowerHubs.Get(i), stars.Get(nodeIndex));

starDevices.Add(link);

}

}

// Configure point-to-point links for the hierarchy

PointToPointHelper p2pHierarchy;

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

p2pHierarchy.SetChannelAttribute(“Delay”, StringValue(“1ms”));

NetDeviceContainer hierarchyDevices;

for (uint32_t i = 0; i < numStars; ++i) {

NetDeviceContainer link = p2pHierarchy.Install(lowerHubs.Get(i), upperHub.Get(0));

hierarchyDevices.Add(link);

}

// Install Internet stack

InternetStackHelper stack;

stack.Install(lowerHubs);

stack.Install(upperHub);

stack.Install(stars);

 

Ipv4AddressHelper address;

// Assign IP addresses

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

Ipv4InterfaceContainer starInterfaces = address.Assign(starDevices);

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

Ipv4InterfaceContainer hierarchyInterfaces = address.Assign(hierarchyDevices);

// Set up UDP echo server and client

UdpEchoServerHelper echoServer(9);

ApplicationContainer serverApp = echoServer.Install(stars.Get(0));

serverApp.Start(Seconds(1.0));

serverApp.Stop(Seconds(10.0));

UdpEchoClientHelper echoClient(starInterfaces.GetAddress(0), 9);

echoClient.SetAttribute(“MaxPackets”, UintegerValue(10));

echoClient.SetAttribute(“Interval”, TimeValue(Seconds(1.0)));

echoClient.SetAttribute(“PacketSize”, UintegerValue(1024));

ApplicationContainer clientApp = echoClient.Install(stars.Get(nodesPerStar));

clientApp.Start(Seconds(2.0));

clientApp.Stop(Seconds(10.0));

// Enable Flow Monitor

FlowMonitorHelper flowmon;

Ptr<FlowMonitor> monitor = flowmon.InstallAll();

monitor->SerializeToXmlFile(“hierarchical_star_flow

 

By mentioning this detailed process, we held the concept on how to simulate the Hierarchical Star Topology in the NS3 and the approaches we can use to evaluate it. We also provide some sample techniques with examples and snippets to help you. If you need to get knowledge more about this process let me know!

Our team  provide you comprehensive, step-by-step guidance for your research endeavors, ensuring you can depend on us for innovative and relevant topics. At phdprojects.org, we are committed to assisting you in initiating Hierarchical Star Topology Projects using NS3, offering personalized support whenever you need it. Our focus spans from Lower Hubs to the Upper Hub, tailored to meet your specific research requirements.