OMNeT++
# OMNeT++

OMNeT++ (Objective Modular Network Testbed in C++) ist ein Simulations-Framework, mit dem Rechnernetze und Netzwerkprotokolle simuliert und Leistungsanalysen durchgeführt werden können. Für private und akademische Nutzung ist das Framework kostenfrei unter einer Open-Source-Lizenz erhältlich. Für die kommerzielle Nutzung bieten die Entwickler mit OMNEST eine erweiterte Version von OMNeT++ an. Neben einer grafischen Benutzerführung wird eine Eclipse-basierte Entwicklungsumgebung für die Programmierung zur Verfügung gestellt.

Obwohl OMNeT++ selbst in C++ programmiert wurde, besteht die Möglichkeit, andere Programmiersprachen wie Java und C# zur Entwicklung eigener Module zu verwenden. Diese können in Verbindung mit bereits fertigen Standard-Modulen simuliert werden, um deren Zusammenarbeit zu prüfen. Bei einem Modul kann es sich beispielsweise um ein Netzwerk-Protokoll wie IP oder um eine Hardware-Komponente wie einen Switch handeln. Die Simulation der Module erfolgt nach dem Prinzip der ereignisorientierten Simulation.

Verbreitete Anwendungsfälle bestehen darin, neuartige Echtzeit-Ethernet-Netzwerke im Umfeld der Automatisierungstechnik oder im Umfeld von Multimedia-Streaming zu simulieren, bevor sie in Hardware produziert werden.

## Unterstützte Plattformen

Das Framework ist lauffähig unter Linux und anderen Unix-basierten Systemen, macOS (Version 10.10 und höher) sowie unter Windows 7 und Windows 10.

## Erweiterungen

Durch den modularen Aufbau von OMNeT++ lässt es sich leicht durch Frameworks erweitern. Diese ergänzen den Funktionsumfang um weitere Simulationsmodelle und Protokolle. Eines der am Häufigsten verwendeten Frameworks ist INET welches OMNeT++ um diverse Simulationsmodelle aus dem Bereich des Internets erweitert. Diese lassen sich in folgende Kategorien einteilen:

### Anwendungsschicht

    Anwendungen wie z. B. HTTP, FTP oder DHCP

### Transportschicht

    Hauptsächlich SCTP, TCP und UDP

### Vermittlungsschicht

    Protokolle wie IPv4, IPv6 und ICMP

### Routingprotokolle

    Routingprotokolle wie z. B. BGP, RIP und Link-State. Es werden auch diverse Protokolle aus dem Bereich der Ad-hoc-Netze (MANET) unterstützt.

### Netzzugang

    Unterstützung für drahtgebundene (z. B. Ethernet, STP, PPP) sowie drahtlose Standards (z. B. WLAN, IEEE 802.15.4, LTE) für den Netzzugang.

### Bewegungsmodelle

    Modelle, die die Bewegung der Objekte in der Simulation bestimmen

INET ist auf GitHub verfügbar. Die jeweiligen Module sind unter der LGPL oder der GPL verfügbar.

