# Distributed Interactive Simulation

Distributed Interactive Simulation (DIS) bezeichnet einen im IEEE 1278 definierten Datenaustauschstandard zur Steuerung von Simulationssystemen.

## Vorgeschichte

In den 1985er Jahren wurde mit dem SIMNET Projekt der DARPA ein Ausbildungssimulator-System erstellt, in der Simulatorkabinen (human-in-the-loop) mittels Computern und eines Netzwerkprotokolls in einer virtuellen Landschaft interagieren konnten. Dieses Protokoll war Basis der weiteren Entwicklung des DIS zu einem IEEE Standard in den 1990er Jahren durch die University of Central Florida, Institut für Simulation und Training (IST), unter Beteiligung interessierter Firmen/Organisationen. Der erste Standard wurde 1993 als „IEEE 1278-1993 - Standard for Distributed Interactive Simulation - Application protocols“ veröffentlicht. Um die Weiterentwicklung kümmert sich die Simulation Interoperability Standards Organisation (SISO) in einer Product Development Group (DIS PDG). Innerhalb der NATO gilt DIS ab 1995 als Standard für die Kompatibilität im Bereich Modellierung und Ausbildungssimulation. Von 1998 bis 2001 wurde DIS von HLA als alleiniger Standard abgelöst, kann seitdem aber wieder parallel benutzt werden.
In Deutschland wurden Anfang der 1990er Jahre die ersten Ausbildungssimulatoren mit dem SIMNET und später nach dem DIS Standard in Betrieb genommen (Ausbildungsgerät Gefechtssimulator Panzertruppe Kampfpanzer Leopard 2).

## Grundlagen

DIS wird in professionellen zivilen und militärischen Simulationen zur Optimierung der Ausbildung genutzt (z. B. in Verkehrsleitzentralen, Radarzentren). Mittels DIS vernetzte Simulationssysteme können in Echtzeit simulierte Lageinformationen, z. B. zur synchronen Steuerung von Radarsimulatoren, austauschen und versetzen so die Nutzer der damit vernetzten Systeme in die Lage, in ihrem jeweiligen Simulator eine identische Umweltdarstellung wahrzunehmen.
Ein DIS-Simulationsobjekt wird als „Entity“ bezeichnet. Jede Entity muss einen eindeutigen (unique) Bezeichner tragen (Entity-Id).

## Datenaustausch

Die Kommunikation über DIS erfolgt Paket-orientiert mit UDP-Paketen (Multicast oder Broadcast), TCP nur für die sog. reliability Simulation Management Familie. Die eigentlichen Daten sind dabei binär codiert, der Standard spezifiziert das binäre Layout auf dem Netzwerk. Die Bytereihenfolge ist dabei in „network order“.
Der aktuell gültige IEEE Std 1278.1 von 2012 definiert 72 unterschiedliche PDU, organisiert in 13 Familien
* Entity information/interaction family - Entity State, Collision, Collision-Elastic, Entity State Update, Attribute
* Warfare family - Fire, Detonation, Directed Energy Fire, Entity Damage Status
* Logistics family - Service Request, Resupply Offer, Resupply Received, Resupply Cancel, Repair Complete, Repair Response
* Simulation management family - Start/Resume, Stop/Freeze, Acknowledge
* Distributed emission regeneration family - Designator, Electromagnetic Emission, IFF/ATC/NAVAIDS, Underwater Acoustic, Supplemental Emission/Entity State (SEES)
* Radio communications family - Transmitter, Signal, Receiver, Intercom Signal, Intercom Control
* Entity management family
* Minefield family
* Synthetic environment family
* Simulation management with reliability family
* Live entity family
* Non-real time family
* Information Operations family - Information Operations Action, Information Operations Report
Die über ein Wide Area Network (WAN) oder Local Area Network (LAN) verbundenen Simulationsteilnehmer versenden und empfangen typisch mindestens folgende Informationsblöcke (Protocol Data Unit, PDU):
* Entity State – übermittelt die Position, Orientierung, Geschwindigkeit und Beschleunigung sowie die Sensorsignatur eines Simulationszieles (z. B. Stärke des Radarechos), außerdem Typeigenschaften des zugrundeliegenden Simulationsmodells,
* Collision – ermöglicht die Schaden-Evaluierung, wenn zwei simulierte Objekte (z. B. Fzg,. Schiffe oder Flugzeuge) zusammengestoßen sind.
* Firing – Startpunkt und Einschlag zur Simulation von Munition, Flugkörpern und Raketen.
* Environment – Daten zur Simulation des Umwelthintergrundes, z. B. Sonnenstand, Landechos, Wolken und Regen (Clutter).
Ein PDU enthält im Header immer die folgenden Bestandteile:
* Protokoll Version (z. B. DISv7)
* Exercise ID (Übungs Nr.)
* PDU-Typ (z. B. Entity, Firing, Service Request etc.)
* Protokoll Familie (z. B. Entity Interaction, Warfare, Logistics etc.)
* Timestamp (Zeitangabe)
* PDU Länge
* PDU Status

## Vorteile

* Einfacher Aufbau einer Simulation
* Keine Management-Funktionalitäten die benutzt werden müssen
* Ein-Ausstieg einzelner Simulatoren während einer laufenden Übung möglich
* PDUs einfach mit Netzwerkmonitor wie Wireshark interpretierbar
* Überwiegende Anzahl von benötigten Informationen für eine Simulation schon definiert.

## Nachteile

* Bei Implementierung einer DIS-Simulation muss viel Netzwerk-Code selbst programmiert werden (es gibt aber kommerzielle Bibliotheken)
* evtl. Routing-Schwierigkeiten zwischen Subnetzen (da Broadcasts), die aber durch einen sogenannten Forwarder kompensiert werden können

## Nachfolger HLA

DIS ist entwickelt worden für verteilte, echtzeitnahe Simulatoren (human-in-the loop) und hat sich dort bewährt. Eine konzeptionelle Weiterentwicklung, auch zur Einbindung anderer Simulationsarten (Live-virtual, and constructive mit unterschiedliches Zeitmanagement, unterschiedliche Simulationsgüte etc.) ist die High Level Architecture (HLA) entstanden, welche im IEEE 1516 spezifiziert ist.

## Unterschied von DIS und HLA

Der fundamentale Unterschied zwischen HLA und DIS ist, dass HLA spezifiziert wurde, um auch "constructive large scale", "Live-Virtual" und Simulationen mit unterschiedlicher Simulationsgüte und Zeitmanagement zu behandeln, während DIS für vernetzte, Plattform-gebundene, echtzeitnahe Simulation entstanden ist.
DIS
* Der Standard spezifiziert das Layout der Daten auf dem Netzwerk (PDUs, bis auf bit-Ebene)
* Stützt sich auf verbreitete Netzwerkmechanismen (TCP/UDP, broadcast)
* Keine zentrale Server-Instanz, jede Instanz bzw. Entity berechnet sein eigenes Bild der virtuellen Welt
* Jedes Entity hat sich mindestens in einem Intervall, z. B. 5 Sekunden, mit einer Entity PDU auf dem Netz zu melden (heartbeat). Sonst wird es von den anderen Teilnehmern als nicht mehr anwesend vermerkt (und beispielsweise aus den Sichtsystemen entfernt).
* Simulationssysteme (Entity) können einem Simulationsnetzwerk jederzeit beitreten oder verlassen
HLA
* Benutzt ein zentrales Management, das sog. Run Time Infrastructure (RTI), welches Daten von allen teilnehmenden Anwendungen/Simulatoren empfängt und diese an vorher spezifizierte Anwendungen weiterleitet. Im Kontext von HLA sind die Anwendungen Federates und die Gesamtzahl der Anwendungen ist eine Federation.
* Alle Federates müssen sich über die RTI an- und abmelden
* Bestandteil der HLA Spezifikation ist nicht das Definieren des Daten Layout (wie bei DIS), sondern ein Set von User-Interfaces (API) definiert die Funktionalität, welches die Anwendung benutzt. Die RTI implementiert die API.
* HLA Federates publizieren Daten gemäß dem FOM (Federation Object Model), welches die Bedeutung der Daten festlegt. Dies erlaubt Anwendungen das Erstellen von neuen FOMs (Objekte und Interaktionen). Bei DIS geht das Erstellen/Ändern von PDUs über die DIS-PSG bei der SISO.
* HLA beinhaltet einige neue Features wie z. B. Date Distribution Management (DDM). Damit können Anwendungen der RTI mitteilen, dass sie nur an bestimmten Daten Typen interessiert sind.
* Unterstützt subscription services, Anwendungen melden der RTI, dass sie nur an bestimmten Objekten oder Interaktionen interessiert sind (z. B. alles über Schiffe).

## Interoperabilität von DIS und HLA

Real-time Platform Reference Federation Object Model (RPR FOM) ist eine Initiative der SISO um in vernetzten Simulationsumgebungen eine Rückwärtskompatibilität mit DIS Simulatoren zu unterstützen. Die föderationsweit bekannten Objekte mit Attributen entsprechen möglichst denen in den DIS PDUs.
HLA/DIS Gateway. Bibliotheken als Übersetzer konvertieren DIS Protokolle in HLA RTI Service Aufrufe und andersherum, oft auf Basis der RPR-FOM
SISO Enumeration. Sowohl das RPR FOM als auch DIS verwenden die von der SISO gepflegten Enumerationsdatentypen (SISO-REF-010).

## Standards

DIS ist definiert als IEEE Standard 1278:
* IEEE 1278-1993 - Standard for Distributed Interactive Simulation - Application protocols
* IEEE 1278.1-1995 - Standard for Distributed Interactive Simulation - Application protocols
* IEEE 1278.1-1995 - Standard for Distributed Interactive Simulation - Application protocols (Corrections)
* IEEE 1278.1A-1998 - Standard for Distributed Interactive Simulation - Application protocols Errata (May 1998)
* IEEE 1278.1-2012 - Standard for Distributed Interactive Simulation - Application protocols
* IEEE-1278.2-1995 - Standard for Distributed Interactive Simulation - Communication Services and Profiles
* IEEE 1278.3-1996 - Recommended Practice for Distributed Interactive Simulation - Exercise Management and Feedback
* IEEE 1278.4-1997 - Recommended Practice for Distributed Interactive - Verification Validation & Accreditation
* IEEE P1278.5-XXXX - Fidelity Description Requirements (never published)
Die Simulation Interoperability Standards Organisation (SISO) kümmert sich um die Weiterentwicklung des Standards in einer Product Development Group (DIS PDG).