How to Begin Implement Network Velocity of Node in NS3

To implement and examine the velocity of a node in ns-3, follow these steps. Velocity tracking has includes for setting the pattern action in nodes and tracking the replication.

Steps to Begin Implement Network Velocity of Node in NS3

  1. Understand Node Velocity in ns-3

Velocity is described as rate of change in a node’s position over time, characterised the vector (x,y,zx, y, zx,y,z) through a magnitude specifying a speed of meters per second (m/s). The ns-3’s mobility models are handled a node actions are contains the velocity.

  1. Set Up Your Environment

Enable the tool ns3 is installed and operational. Use MobilityHelper for allocate the mobility models and setting the node velocity.

  1. Create the Network Topology

Example: Create Nodes

NodeContainer nodes;

nodes.Create(5); // Create 5 nodes

  1. Assign Mobility Models

Use MobilityHelper to express the action of nodes.

Constant Velocity Mobility

This model changes the nodes at a static velocity:

MobilityHelper mobility;

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

mobility.Install(nodes);

for (uint32_t i = 0; i < nodes.GetN(); ++i) {

Ptr<ConstantVelocityMobilityModel> mob = nodes.Get(i)->GetObject<ConstantVelocityMobilityModel>();

mob->SetVelocity(Vector(10.0, 0.0, 0.0)); // Set velocity: 10 m/s along the X-axis

}

Random Waypoint Mobility

This pattern are replicate the random movement in a described area:

mobility.SetPositionAllocator(“ns3::RandomRectanglePositionAllocator”,

“X”, StringValue(“ns3::UniformRandomVariable[Min=0.0|Max=100.0]”),

“Y”, StringValue(“ns3::UniformRandomVariable[Min=0.0|Max=100.0]”));

 

mobility.SetMobilityModel(“ns3::RandomWaypointMobilityModel”,

“Speed”, StringValue(“ns3::UniformRandomVariable[Min=1.0|Max=5.0]”), // Speed: 1-5 m/s

“Pause”, StringValue(“ns3::ConstantRandomVariable[Constant=2.0]”),    // Pause: 2 seconds

“PositionAllocator”, PointerValue(mobility.GetPositionAllocator()));

mobility.Install(nodes);

  1. Track Node Velocity

Log Velocity Periodically

Use a callback or during the replication for periodic allocate to record the node velocity:

void LogVelocity(Ptr<Node> node) {

Ptr<MobilityModel> mob = node->GetObject<MobilityModel>();

Vector velocity = mob->GetVelocity();

std::cout << “Node ” << node->GetId()

<< ” Velocity: (” << velocity.x << ” m/s, ” << velocity.y << ” m/s, ” << velocity.z << ” m/s)”

<< ” at time ” << Simulator::Now().GetSeconds() << “s\n”;

}

for (uint32_t i = 0; i < nodes.GetN(); ++i) {

Simulator::Schedule(Seconds(1.0), &LogVelocity, nodes.Get(i)); // Log every 1 second

}

Calculate Speed

We can estimate the speed such as magnitude of the velocity vector:

double speed = std::sqrt(velocity.x * velocity.x + velocity.y * velocity.y + velocity.z * velocity.z);

std::cout << “Speed: ” << speed << ” m/s\n”;

  1. Generate Traffic

Install applications for replicate the network congestion.

Example: UDP Traffic

UdpEchoServerHelper echoServer(9);

ApplicationContainer serverApps = echoServer.Install(nodes.Get(0)); // Node 0 as the server

serverApps.Start(Seconds(1.0));

serverApps.Stop(Seconds(10.0));

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

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

echoClient.SetAttribute(“Interval”, TimeValue(Seconds(0.01))); // 10ms interval

echoClient.SetAttribute(“PacketSize”, UintegerValue(1024));    // 1KB packets

ApplicationContainer clientApps = echoClient.Install(nodes.Get(1)); // Node 1 as the client

clientApps.Start(Seconds(2.0));

clientApps.Stop(Seconds(10.0));

  1. Enable Tracing

ASCII and PCAP Tracing

Log completes the actions for mobility and congestion:

AsciiTraceHelper ascii;

mobility.EnableAsciiAll(ascii.CreateFileStream(“node_velocity.tr”));

XML Animation

Use to envision the node movement and velocity NetAnim:

AnimationInterface anim(“node_velocity.xml”);

  1. Experiment with Parameters
  • Velocity Magnitude: Validate through various velocity methods for instance pedestrian vs. vehicular speeds.
  • Mobility Models: Testing by designs such as RandomWalk2d, GaussMarkov, or custom mobility model.
  • Pause Time: Detect the impact of node pause duration on network performance.
  1. Run the Simulation

It process for the replication and study the outcomes:

Simulator::Run();

Simulator::Destroy();

  1. Visualize and Analyze
  • Distribute the velocity logs designed for envision in MATLAB or Excel.
  • Use to visually follow on node trajectories and speeds NetAnim.

From the entire page, we had collected the most essential information that will very helpful to compute the velocity of a node in ns3 tool. Further queries on the subject of this project will be addressed in another document.