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++ 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 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
- Example:
-
**(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).
- Example:
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.
-
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_runwith the-u Cmdenvflag to run the simulation quickly without the graphical overhead.
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.
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:
- 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.
- 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".
- Branch & Collaborate: Once you are assigned, branch off the
mainbranch and begin your work. Communicate with your sub-team members to ensure your.nedand.inifiles do not conflict before merging!
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
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
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
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
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
If you are stuck on implementation details, consult the official documentation provided in the project brief:
-
OMNeT++ Manual: https://doc.omnetpp.org
-
INET Framework Reference: https://inet.omnetpp.org
-
Routing Implementation Guide: OMNeT++ Routing Tutorial
-
Protocol Theory: RFC 793 (TCP), RFC 768 (UDP), RFC 2475 (DiffServ).