How to Start Fully Connected Topology Projects Using OMNeT++

To start a Fully Connected Topology project using OMNeT++ that encompasses to configure a network in which every single node is linked to all other node within the network. This kind of topology is frequently utilised for replicating scenarios in which all nodes can interact with each other directly like within peer-to-peer networks, distributed systems, or particular kinds of ad hoc networks.

Below is a simple guide to start a Fully Connected Topology project in OMNeT++:

Steps to Start Fully Connected Topology in OMNeT++

Step 1: Install OMNeT++ and INET Framework

Make sure we have installed OMNeT++ and the INET Framework on the system before making a Fully Connected Topology:

  1. Install OMNeT++:
    • We shall download and install the OMNeT++ environment based on the OS like Windows, Linux, macOS.
  2. Install INET Framework:
    • We can download the INET Framework using INET GitHub repository.
    • Adhere to the provided installation guidance for incorporating INET framework including OMNeT++.

Step 2: Create a New OMNeT++ Project

  1. Go to OMNeT++ IDE.
  2. Make a New OMNeT++ Project:
    • By navigating File → New → OMNeT++ Project.
    • Name it to the project as FullyConnectedTopology and select a position for saving the project.

Step 3: Define the Fully Connected Topology

A Fully Connected Topology specifies that all nodes are associated to every other node in the network. In OMNeT++, it is created to utilise.ned files.

Example: Fully Connected Topology with 4 Nodes

Below is an instance of a simple fully connected topology including 4 nodes:

  1. Make a .ned file as FullyConnected.ned for making the network topology:

network FullyConnected

{

parameters:

int numNodes = 4;  // Number of nodes in the network

submodules:

nodes[par(numNodes): Node];  // Array of nodes

connections:

// Create full mesh connectivity between nodes

for i = 0..numNodes-2 {

for j = i+1..numNodes-1 {

nodes[i].ethg++ <–> EtherInterface <–> nodes[j].ethg++;

}

}

}

Explanation:

  • nodes: Nodes’ array to denote every devices within the network.
  • connections: A nested loop is utilised for associating each node in the network to all other node. This makes the fully connected or complete graph.

Every single node is connected to all other node to utilise Ethernet interfaces. The EtherInterface permits interaction among the nodes.

Step 4: Define the Node Module

Next, we will need to describe the each node behavior. It can be done by making a module for each node, which replicates simple interaction to utilise an Ethernet host within OMNeT++.

  1. Make a .ned file such as Node.ned for the node module:

module Node

{

parameters:

@display(“i=block/server”);

submodules:

ethg: EtherHost;  // Ethernet host (network interface)

connections:

ethg++ <–> EtherInterface <–> ethg++;  // Ethernet communication interface

}

Explanation:

  • EtherHost: It denotes a basic host node, which contains an Ethernet interface for interaction.
  • EtherInterface: Offers the interaction interface to transmit and inherit packets.

Step 5: Configure Simulation Parameters

When the topology and nodes are described then we set the simulation metrics using omnetpp.ini file.

  1. Create or edit omnetpp.ini:

network = FullyConnected   # Name of the network model

# Simulation settings

sim-time-limit = 100s        # Total simulation time

*.numNodes = 4              # Number of nodes in the network

# Packet generation configuration for each node

*.nodes[*].app.packetRate = 100pkts/s   # Example packet rate for the nodes

Explanation:

  • network: It denotes the network model using in the .ned file.
  • sim-time-limit: Defines the total time for the simulation.
  • numNodes: Specifies the volume of nodes within the fully connected network.
  • packetRate: Describe the packet generation rate for every node.

Step 6: Build and Run the Simulation

  1. Build the Project:
    • Right-click on the project and then click Build Project for compiling the .ned files and other essential modules.
  2. Run the Simulation:
    • When build process is finish then we need to select Run to execute the simulation in OMNeT++.
  3. Visualize the Simulation:
    • OMNeT++ environment offers a GUI, which permits to envision the network and monitor how packets are sent among the nodes. It supports to know the fully connected network behavior.

Step 7: Enhance the Fully Connected Topology

After executing the simple simulation then we can improve the topology by means of integrating diverse aspects or changing the simulation.

  1. Traffic Patterns:
  • We will need to execute various kinds of traffic like TCP or UDP flows, among the nodes for replicating real-world applications such as file transfer or real-time interaction.
  1. Routing Protocols:
  • Even though fully connected network doesn’t need complex routing protocols so we can even integrate the routing protocols like OSPF, AODV, or RIP for more advanced use cases like replicating network changes or optimization mechanisms.
  1. Fault Tolerance:
  • Launch link failures or node failures to learn the fully connected topology robustness. We can be replicated redundancy or resilience by means of managing these failures within the simulation.
  1. Mobility:
  • For dynamic topologies, integrate mobility models such as Random Walk or Gauss-Markov in which nodes could transfer and the connectivity of the network can modify.
  1. Security Simulation:
  • Mimic security attacks like Man-in-the-Middle (MITM) or DoS to monitor how a fully connected network manages the threats or breaches within simulation security.

Step 8: Analyze the Results

When simulation is running then we can be utilised OMNeT++’s built-in analysis tools for estimating key performance indicators (KPIs) such as:

  • Throughput: The total volume of data that are effectively sent through the network.
  • Latency: Measure the duration for packets to move from one node to another node.
  • Packet Loss: Compute the rate of packets that are dropped in the course of transmission.
  • Network Behavior: Monitor how traffic floods within a fully connected network that support to know about the congestion, collisions, and potential blockages.

Also, we can be utilised Wireshark for packet-level inspection, as packet capture is allowed within simulation.

Conclusion

In OMNeT++, making a Fully Connected Topology:

  1. Create the topology to utilise a nested loop making connections among each pair of nodes in a .ned file.
  2. Make a node module, which utilises EtherHost and EtherInterface for replicating simple node interaction.
  3. Set the simulation metrics such as volume of nodes, packet generation rate, and simulation time using omnetpp.ini file.
  4. Execute the simulation for envisioning the fully connected network within OMNeT++.
  5. Improve the topology by means of integrating the traffic patterns, routing protocols, fault tolerance, mobility, or security replications.
  6. Examine the results to utilise OMNeT++’s tools for estimating the performance parameters such as throughput, latency, and packet loss for analysis.

In this method, you can effectively replicate a fully connected network and test with diverse sets up and optimizations for various use cases using OMNeT++ environment. We can ready to extend this project further, as required.