Skip to content

Sidali-Djeghbal/ipv6-omnet-core

Repository files navigation

This repository contains the OMNeT++ simulation code and configuration files for the Advanced Networks project. the objective is to design, implement, and quantitatively analyze a medium-scale IPv6 network under congestion.

OMNeT++ INET Framework C++ Status


OMNeT++ & omnetpp.ini Overview:

OMNeT++ is a component-based C++ simulation library. However, you do not need to write C++ to build networks. The INET Framework provides pre-compiled C++ modules (Routers, TCP, UDP). Our job is to wire them together using NED, and configure their internal states using INI.

The INI Language Mechanics

The omnetpp.ini file is a powerful pattern-matching engine. When a C++ module initializes, it searches the INI file for its required parameters.

1. Hierarchical Wildcards:

Avoid hardcoding parameters for single nodes unless necessary. Use wildcards to apply settings globally or to classes of nodes.

  • * (Single-level wildcard): Matches one hierarchy level.

    • Example: *.client1.numApps = 1
  • ** (Multi-level wildcard): Matches any depth.

    • Example: **.tcp.typename = "Tcp" (Forces every node in the network with a TCP module to use the standard TCP implementation).

2. Scenarios and Inheritance:

Do not overwrite each other's code. Define a baseline in [General], and create specific simulation runs using [Config].

Ini, TOML

[General]
network = advancednetworks.BasicNetwork
sim-time-limit = 100s

[Config RIP_Testing]
description = "Simulation running RIPng"
**.router*.routingProtocol = "RIPng"

[Config OSPF_Testing]
description = "Simulation running OSPFv3"
**.router*.routingProtocol = "OSPFv3"

When you run the simulation, you select which Config to execute. The Config inherits everything from General.

3. Parameter Studies:

You can run multiple simulations with varying variables dynamically using ${} iterators.

Ini, TOML

**.bottleneck.datarate = ${1Mbps, 5Mbps, 10Mbps}

OMNeT++ will automatically run this configuration three separate times, outputting distinct vector files for each data rate.

Running the Simulation

  • Via IDE: Right-click omnetpp.ini -> Run As -> OMNeT++ Simulation. Select your specific [Config] from the GUI prompt.

  • Headless (For large data extraction): Use the command line utility opp_run with the -u Cmdenv flag to run the simulation quickly without the graphical overhead.


Project Structure

The repository follows standard OMNeT++ workspace conventions:

AdvancedNetworksProject/
│
├── src/                  # Source code and configuration files
│   ├── BasicNetwork.ned  # The core Network Description file (Topology)
├── omnetpp.ini           # The simulation configuration engine
├── Makefile              # Build instructions generated by the IDE
├── .gitignore            # Prevents pushing massive .vec/.sca log files to git
└── README.md             # Project documentation
  • BasicNetwork.ned: This file defines the physical architecture (Nodes, Routers, Links).

  • omnetpp.ini: This is where we define the experiment logic (Protocols, Traffic Rates, IPv6 toggles) without changing the underlying physical topology.

How to Claim Your Sub-Team & Task

To avoid Git merge conflicts, ensure a fair workload distribution, and foster collaboration, we have divided this project into 5 Sub-Teams.

Follow these steps to claim your assignment:

  1. Review Your Domain: Scroll down to the Team Assignments & Descriptions section to find the part you are responsible for. Read carefully to understand the scope of your team's assignment. You will need to coordinate with your sub-team to merge your specific configurations and analytical graphs.
  2. Assign Yourself to an Issue: Go to the Issues tab at the top of this repository. I have already created an issue for each specific domain and task. Find the issue that corresponds to your team's part, look at the right sidebar, and click "Assign yourself".
  3. Branch & Collaborate: Once you are assigned, branch off the main branch and begin your work. Communicate with your sub-team members to ensure your .ned and .ini files do not conflict before merging!

Team Assignments & Descriptions

Mission: Design the core baseline topology and establish dynamic routing.

  • Requirements:
    • Design a medium-scale routed network topology (minimum 6 routers).
    • Implement IPv4 or IPv6 addressing (IPv6 preferred for advanced work).
    • Configure dynamic routing protocols: RIP and OSPF. (BGP is an optional advanced addition).
  • Deliverables: Network topology diagram, formal addressing plan, and routing configuration description.
  • Assignees: @3boudi, @mamouneabdelli, @midouuk

Part II – Transport Protocol Analysis

Mission: Analyze and contrast reliable data transfer against real-time connectionless traffic.

  • Requirements:
    • Implement TCP traffic (bulk data/file transfer) and UDP traffic (real-time streaming simulation).
    • Simulate congestion scenarios and force bottlenecks.
  • Deliverables: Extraction and analysis of OMNeT++ vector data charting Throughput, Packet loss, End-to-end delay, Jitter, and the TCP congestion window evolution.
  • Assignees: @Yehia-Bou-lahia, @abdenourounas

Part III – Quality of Service (QoS) Implementation

Mission: Implement traffic prioritization and queue management during active congestion.

  • Requirements:
    • Implement and compare a Best Effort model, Integrated Services (IntServ), and Differentiated Services (DiffServ).
    • Configure traffic classification, queue management, and scheduling policies (FIFO, Priority Queuing, WFQ). (RSVP is optional advanced work).
  • Deliverables: Analysis of QoS impact on real-time traffic, evaluation of fairness between flows, and latency improvement comparisons.
  • Assignees: @princelycodes, @lokman-abdelmoname

Part IV – Advanced Technologies (Choose One)

Mission: Expand the simulation with state-of-the-art networking concepts.

  • Requirements (Select 1):
    • Option A (IPv6 Advanced Features) - Recommended: Auto-configuration mechanisms, Mobility support, QoS with IPv6.
    • Option B (MPLS): Simulate label switching behavior inspired by Multiprotocol Label Switching.
    • Option C (Mobile Networks): Simulate mobility scenarios inspired by GSM/UMTS and analyze handover effects on TCP/UDP performance.
  • Deliverables: Implementation and analytical report on the chosen advanced technology.
  • Assignees: @sidali-djeghbal

Part V – Data Analytics & Final Deliverables

Mission: Ensure experimental validity, compile global simulation metrics, and integrate the modular work into a cohesive final submission.

  • Requirements:
    • Define and manage global simulation parameters, justifying traffic models and running multiple simulation scenarios.
    • Extract, compile, and analyze overall performance metrics from the OMNeT++ simulations: Throughput (bps), Packet loss ratio, End-to-end delay, Jitter, Routing convergence time, Link utilization, and Queue length evolution.
    • Apply analytical reasoning and networking theory to compare results quantitatively (no purely descriptive reporting).
  • Deliverables: The complete OMNeT++ Project Files (merged NED files, INI configurations, and any custom modules) and the final 15–25 page Technical Report (incorporating the theoretical background, network design, methodology, results, and critical analysis).
  • Assignees: @sidali-djeghbal, @kheabdo, @nerddude9000

References & Documentation

If you are stuck on implementation details, consult the official documentation provided in the project brief:

About

OMNeT++ simulation framework for advanced IPv6 network performance analysis. Models dynamic routing (RIPng/OSPFv3), TCP/UDP transport behaviors, and DiffServ QoS under forced congestion scenarios.

Topics

Resources

Stars

Watchers

Forks

Contributors