How to Start CCNA Protocols Projects Using NS3

To start CCNA (Cisco Certified Network Associate) in NS3 that can utilise to replicate several network protocols included within CCNA training, which contains routing protocols and switching protocols. Although NS3 does not directly support Cisco-specific protocols then it have foundational protocols such as RIP (Routing Information Protocol), OSPF (Open Shortest Path First) (replicated with static routing since NS3 does not support built-in OSPF), static routing, and Ethernet switching. We can be replicated diverse CCNA concepts to utilize these protocols.

Below is a stepwise approach to replicate the CCNA protocols and network concepts in NS3.

Steps to Start CCNA Protocols Projects in NS3

  1. Install NS3

Configure NS3 using the below commands (assuming a Linux environment) if NS3 doesn’t install on the system:

# Update system and install dependencies

sudo apt update

sudo apt install -y gcc g++ python3 python3-dev cmake libgsl-dev libsqlite3-dev

# Clone the NS-3 repository

git clone https://gitlab.com/nsnam/ns-3-dev.git ns-3

cd ns-3

# Configure and build NS-3

./ns3 configure –enable-examples –enable-tests

./ns3 build

  1. Create a New Script for CCNA Protocol Simulation
  1. In the NS3’s scratch directory, make a new file like ccna_protocol_simulation.cc.
  2. Configure simple CCNA protocols such as RIP and static routing utilising the below example.

Basic Structure of ccna_protocol_simulation.cc:

#include “ns3/core-module.h”

#include “ns3/network-module.h”

#include “ns3/internet-module.h”

#include “ns3/ipv4-static-routing-helper.h”

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

#include “ns3/applications-module.h”

#include “ns3/rip-helper.h”

using namespace ns3;

NS_LOG_COMPONENT_DEFINE(“CcnaProtocolSimulation”);

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

// Enable logging for debugging

LogComponentEnable(“UdpEchoClientApplication”, LOG_LEVEL_INFO);

LogComponentEnable(“UdpEchoServerApplication”, LOG_LEVEL_INFO);

// Create nodes to represent routers and end devices

NodeContainer routers, endDevices;

routers.Create(3);    // 3 routers for RIP/static routing demonstration

endDevices.Create(3); // 3 end devices connected to routers

// Set up point-to-point links between routers and end devices

PointToPointHelper p2p;

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

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

// Link configuration between Routers and Devices

NetDeviceContainer deviceAR = p2p.Install(endDevices.Get(0), routers.Get(0));

NetDeviceContainer deviceBR = p2p.Install(endDevices.Get(1), routers.Get(1));

NetDeviceContainer deviceCR = p2p.Install(endDevices.Get(2), routers.Get(2));

// Link configuration between Routers

NetDeviceContainer deviceRR1 = p2p.Install(routers.Get(0), routers.Get(1));

NetDeviceContainer deviceRR2 = p2p.Install(routers.Get(1), routers.Get(2));

// Install the Internet stack

InternetStackHelper internet;

internet.Install(routers);

internet.Install(endDevices);

// Assign IP addresses with RIP and static routing

Ipv4AddressHelper ipv4;

// Assign IP addresses to device-router links

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

ipv4.Assign(deviceAR);

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

ipv4.Assign(deviceBR);

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

ipv4.Assign(deviceCR);

// Assign IP addresses to router-router links

ipv4.SetBase(“192.168.1.0”, “255.255.255.0”);

ipv4.Assign(deviceRR1);

ipv4.SetBase(“192.168.2.0”, “255.255.255.0”);

ipv4.Assign(deviceRR2);

// Set up RIP routing protocol on the routers

RipHelper rip;

rip.ExcludeInterface(routers.Get(0), 1); // Example: excluding certain interfaces

rip.ExcludeInterface(routers.Get(2), 1);

// Add RIP routing to the Internet stack on routers

Ipv4ListRoutingHelper list;

list.Add(rip, 0);

internet.SetRoutingHelper(list);

internet.Install(routers);

// Set up a static route on router 1 for a direct path to other networks

Ipv4StaticRoutingHelper staticRoutingHelper;

Ptr<Ipv4StaticRouting> staticRouting = staticRoutingHelper.GetStaticRouting(routers.Get(1)->GetObject<Ipv4>());

staticRouting->AddNetworkRouteTo(Ipv4Address(“10.1.1.0”), Ipv4Mask(“255.255.255.0”), Ipv4Address(“192.168.1.1”), 1);

// Set up UDP Echo server on one end device to test connectivity

UdpEchoServerHelper echoServer(9);

ApplicationContainer serverApps = echoServer.Install(endDevices.Get(2)); // Set device C as server

serverApps.Start(Seconds(1.0));

serverApps.Stop(Seconds(10.0));

// Set up UDP Echo client on another end device to communicate with the server

UdpEchoClientHelper echoClient(Ipv4Address(“10.1.3.1”), 9); // Server IP

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

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

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

ApplicationContainer clientApps = echoClient.Install(endDevices.Get(0)); // Set device A as client

clientApps.Start(Seconds(2.0));

clientApps.Stop(Seconds(10.0));

// Run the simulation

Simulator::Stop(Seconds(10.0));

Simulator::Run();

Simulator::Destroy();

return 0;

}

Explanation of the Code

  • Node Setup:
    • Routers: We make three routers to illustrate the RIP and static routing.
    • End Devices: Three end devices are linked to routers, in diverse subnets to perform like hosts.
  • Links:
    • Router-Device Links: Point-to-point links among the routers and end devices, from each host to their router to replicate the connections.
    • Router-Router Links: Links between routers, for routing protocols to replicate inter-router interaction.
  • IP Addressing:
    • Diverse IP subnets are allocated to each link among routers and devices, along with inter-router links to utilize notation of CIDR.
  • Routing Protocols:
    • RIP: If the main routing protocol on routers then this protocols set up. RIP acquires and distributes routes in the network dynamically.
    • Static Routing: A static route is appended to the middle router like Router 1 attaining certain subnets. It replicates a simple static routing situation.
  • Applications:
    • UDP Echo Server: Configure at one end device (Device C) obtaining packets from other devices.
    • UDP Echo Client: We configure on another end device such as Device A, transmitting packets to the server, to experiment end-to-end connectivity over the network.
  1. Build and Run the Simulation
  1. In the scratch directory, we need to save ccna_protocol_simulation.cc.
  2. Go to terminal then pass through to the NS3 directory, and make the script:

./ns3 build

  1. Run the simulation:

./ns3 run scratch/ccna_protocol_simulation

  1. Analyze the Results

This replication explains a CCNA-like environment including RIP and static routing. We would be observed the packets that are effectively routed over the network among end devices.

We can insert the below code to allow in-depth logs of the RIP routing protocol’s activities,:

LogComponentEnable(“RipRoutingProtocol”, LOG_LEVEL_ALL);

Further Experimentation Ideas

To discover more advanced CCNA protocols, we can deliberate the below mentioned experiments:

  • Add OSPF-Like Behavior: Although NS3 don’t have OSPF, we can be estimated it including static routes within a more complex topology.
  • Introduce Link Failures: We replicate link failures among routers, monitoring the resilience and re-routing capabilities of protocol.
  • Use FlowMonitor for Performance Metrics: We need to calculate the performance metrics such as packet delivery ratio, latency, and routing overhead.
  • Add VLAN Simulation (Using Custom Topology): Though NS3 does not directly support VLAN tagging then we can be replicated VLANs by configuring distinct subnets and links.

In this setup, we comprehensively observed how to simulate the CCNA (Cisco Certified Network Associate) protocol projects using basic protocols through structured method, example coding and further enhancement concepts in NS3 environment. Depends on your needs, we will also deliver more details regarding to this process.

phdprojects.org offers comprehensive guidance on selecting optimal project topics and obtaining simulation results to initiate your CCNA Protocols Projects utilizing the NS3 tool. By working with us, you will gain insights into your project outcomes. We provide project performance evaluations, specializing in RIP (Routing Information Protocol), OSPF (Open Shortest Path First), static routing, and Ethernet switching.