CWIX — die Coalition Warrior Interoperability eXercise — findet einmal jährlich in Bydgoszcz unter der Schirmherrschaft des JFC Brunssum statt. Drei Wochen. Hunderte Nationen und Anbieter. Echte Partner-Stacks, eingesteckt in dieselbe Fabric wie Ihre eigene. Es ist der einzige Ort auf der Erde, an dem ein ehrlicher Test der NATO-Interoperabilität im Maßstab stattfindet, und er ist unerbittlich. Code, der zuhause „die Konformität bestanden" hat, scheitert routinemäßig am ersten herstellerübergreifenden Handshake auf dem Boden.

Die Lösung besteht nicht darin, auf Brüssel zu warten. Die Lösung ist ein Koalitions-Test-Harness — ein bewusst konstruierter Prüfstand, der Ihren Interop-Code jedes Mal, wenn Sie einen Commit pushen, gegen simulierte Partner-Stacks ausführt. Dieser Artikel ist ein Engineering-Leitfaden: Was der Harness enthält, welche Werkzeuge hineingehören, und wie man ihn betreibt, damit der erste Tag bei CWIX langweilig statt katastrophal verläuft.

Warum ein Koalitions-Test-Harness

Die Ökonomie ist eindeutig. Ein bei CWIX gefundener Bug kostet etwa zwei Größenordnungen mehr als ein in der CI gefundener Bug. Das Team ist auf Reisen, das Testfenster ist fest, und der Partner-Stack, gegen den Sie erneut testen müssen, ist vielleicht erst nächstes Jahr wieder verfügbar. Schlimmer noch — das Partnervertrauen erodiert schnell: ein Anbieter, dessen Gateway am ersten Tag einen Link-16-J3.2-Surface-Track korrumpiert, wird für den Rest der Übung still umgangen. Das Akkreditierungsergebnis folgt diesem ersten Eindruck.

Das tiefere Problem ist, dass CWIX in der Regel das erste Mal ist, dass ein fremder Stack Ihre Nachrichten überhaupt sieht. Sie haben buchstabengetreu nach ADatP-3 entwickelt. Sie haben ein STANAG-Konformitätswerkzeug ausgeführt. Ihre Nachrichten parsen sauber in Ihrem eigenen Emitter und Ihrem eigenen Konsumenten. Nichts davon beweist, dass Ihr Code mit einer deutschen JCHAT-Instanz, einem französischen SICF-NG-Gateway oder einem US-amerikanischen JREAP-C-Terminal interoperiert, das von einem anderen Anbieter mit einer anderen Interpretation derselben STANAG betrieben wird. Ein Koalitions-Test-Harness verlagert dieses Erstkontakt-Ereignis von Brüssel auf Ihren Laptop. Siehe unseren vollständigen Leitfaden zur NATO-Interoperabilität für das größere Bild.

Test-Pyramide für Interop-Code

Interop-Code verdient eine eigene Testpyramide. Die Form ist vertraut; die Schichten sind spezifisch.

Unit — Nachrichtenstruktur. Reine Tests über den Wire-Format-Parser und -Serialisierer. Round-Trip eines bekannten Byte-Puffers in eine In-Memory-Struktur und zurück. Grenzfelder (bitgepackte Aufzählungen in J-Series, fixe Längen in ADatP-34) verdienen eigene property-basierte Tests mit Hypothesis, jqwik oder fast-check. Die Abdeckung auf dieser Ebene sollte nahezu vollständig sein — diese Tests sind günstig und fangen die stillen Korruptionsbugs, die Menschen in einem Hex-Dump nie entdecken.

Integration — Round-Trip auf einem einzelnen Protokoll. Booten Sie den Protokoll-Stack im Prozess, senden Sie eine generierte Nachricht in Ihren Emitter, routen Sie sie über einen Loopback-Transport und prüfen Sie, dass der Konsument eine äquivalente Struktur rekonstruiert. Hier fangen Sie Endianness-Fehler, Zeitumrechnungsbugs (NATO-Zeit, UTC, GPS-Zeit, Schaltsekunden) und Koordinatensystem-Fehler (WGS-84 vs. MGRS vs. UTM). Verwenden Sie Testcontainers, wenn ein echter Broker (NATS, ActiveMQ, RabbitMQ für NFFI) im Pfad liegt.

System — Multi-Protokoll-Gateway. Die meisten Koalitionssysteme sind Gateways. Ein Track tritt als Link 16 J3.2 ein, verlässt das Gateway als ADatP-34 NFFI und wird in einen CoT/MQTT-Feed für Situationsbewusstseins-Clients gespiegelt. Die Systemschicht verdrahtet die gesamte Pipeline innerhalb eines docker-compose- oder k3d-Clusters, treibt Nachrichten ein und prüft die protokollübergreifenden Invarianten — Track-ID-Stabilität, Positionstreue innerhalb der Toleranz, Klassifizierungserhalt.

CWIX — echte Partner-Stacks. Die Spitze der Pyramide ist unausweichlich: Sie können einen Partner-Stack, den Sie noch nie gesehen haben, nicht vollständig simulieren. Aber die Pyramide hält diese Spitze schmal. Bis Sie in Bydgoszcz landen, sollten fünfundneunzig Prozent der Bugs bereits tot sein.

Nachrichten-Generatoren

Ein Harness lebt und stirbt mit dem Realismus seines generierten Verkehrs. Halb glaubwürdige Generatoren liefern falsches Vertrauen.

Link-16-J-Series-Generatoren. Bauen Sie einen parametrisierten Generator pro J-Series-Nachrichtenfamilie — J2 Überwachung, J3.2 Surface-Track, J7 Information Management, J12 Mission Management. Bit-Genauigkeit zählt: ein falscher Reserved-Field-Default kommt durch Ihren Decoder und scheitert beim Partner. Werkzeuge wie der MIDS-LVT-Simulatorausgang und der von der NSA veröffentlichte J-Series Message Catalog sind die Referenz. Wickeln Sie sie in einen Fuzzer, der deklarierte Klassifizierung, Source TN und Track-Qualität variiert.

ADatP-34-(NFFI)-Emitter. NFFI 1.3 / IP1 / IP2 Nachrichten über SOAP oder REST. Bauen Sie Emitter, die sowohl konforme als auch absichtlich nahe-konforme Payloads produzieren — Parser von Partnern variieren in ihrer Strenge, und Ihr Harness muss die Strenge Ihres Konsumenten ebenfalls aufdecken. Die von der NATO NCIA veröffentlichten NFFI-XSDs sind der Vertrag; validieren Sie jede generierte Nachricht vor dem Senden gegen sie.

CoT- und MQTT-Injection. Cursor-on-Target-XML über TCP oder MQTT ist die Lingua Franca taktischer SA-Clients (ATAK, WinTAK, iTAK). Generieren Sie CoT-Events mit realistischen Stale-Zeiten, geofenced Extents und variierten Detail-Erweiterungen. Mosquitto in einem Container deckt die Broker-Seite ab; für höhere Genauigkeit betreiben Sie TAK Server CE.

MIP4-IES-Nachrichten-Factories. Die MIP4 Information Exchange Specification des Multilateral Interoperability Programme (auf Datenmodell-Ebene früher JC3IEDM) treibt strukturierten C2-Austausch. MIP4-Nachrichten-Factories sind schwerer — RDF-Triple und SPARQL-basierte Assertion — aber unverzichtbar, wenn Ihr Code ein nationales C2-System berührt.

Partner-Stack-Simulatoren

Kein einzelner Simulator deckt das Spektrum ab. Kombinieren Sie sie.

JREAP-C-Terminal-Simulatoren. JREAP (Joint Range Extension Applications Protocol) trägt Link 16 über IP. Mehrere Anbieter liefern JREAP-C-Terminal-Simulatoren; das offene NavyJTIDS-Test-Kit der US Navy und kommerzielle Angebote von ViaSat oder Ultra sind üblich. Genauigkeitslücke: Timing — echte Terminals führen J-Series-Synchronisations-Slotdynamik ein, die reine Software-Simulatoren glätten.

JISR-Lite. Die NATO-Referenzimplementierung für Joint Intelligence, Surveillance and Reconnaissance. Exzellent für STANAG 4609 Motion-Imagery-Metadaten und STANAG 4559 CSD Produkt-Abfrage/-Abruf. Betreiben Sie es in einer VM; richten Sie Ihren Code auf seine Endpunkte. Genauigkeitslücke: Katalogumfang — echte Koalitions-CSDs halten Größenordnungen mehr Produkte als der Referenzdatensatz.

NCI-Server-Referenz-Stacks. Die NCIA veröffentlicht Referenzimplementierungen für mehrere FMN-Spiral-Dienste — Directory, Messaging, Situational Awareness Publish/Subscribe. Sie sind keine zertifizierten Partner-Stacks, legen aber die Wire-Formate und Authentifizierungsabläufe offen, die Sie treffen müssen. Genauigkeitslücke: Zertifikats-Trust-Chains — echte FMN-Knoten enden an PKI-Hierarchien, die Sie ohne Koalitions-CAs nicht perfekt replizieren können.

Simulierte FMN-Knoten. Stellen Sie einen minimalen FMN-Knoten mit den Referenzdiensten der NCIA plus einer lokalen PKI (step-ca oder smallstep) für die Trust-Fabric auf. Konfigurieren Sie FMN Spiral 4 oder Spiral 5 Service-Profile, abhängig von der Übung, auf die Sie sich vorbereiten. Gehen Sie diese Konfiguration mit der Disziplin eines Akkreditierungs-Evidenz-Pakets durch — siehe CWIX-Akkreditierung.

Konformitäts-Testsuiten

NATO-STANAG-Konformitätsberichte sind notwendig und unzureichend. Sie beweisen, dass Ihre Nachrichten den syntaktischen und semantischen Regeln des Standards entsprechen. Sie beweisen nicht, dass ein deutscher Partner Ihre Bedeutung verstehen wird.

Führen Sie die Suiten trotzdem aus. ADatP-3-Nachrichtenkataloge werden mit Validatoren ausgeliefert; STANAG 4774/4778 Vertraulichkeits-Metadaten haben ihre eigenen. NFFI-XSD-Validierung ist nicht verhandelbar. FMN-Compliance-Gates pro Spiral hängen an dokumentierter Evidenz — Ihr Harness sollte diese Evidenz als Build-Artefakt emittieren. Paaren Sie Konformitätsberichte mit NATO-AQAP-2110-Software-Qualitätsevidenz, damit Akkreditierungsprüfer in Bewegung bleiben; siehe unseren AQAP-2110-Leitfaden.

Die Lücke zwischen „besteht den Test" und „interoperiert mit Menschen" schließt sich nur durch Partner-Stack-Probe. Ein J3.2-Surface-Track, der perfekt konform ist, aber einen Track-Number-Bereich verwendet, der mit der Zuteilung eines Partners kollidiert, wird am ersten Tag bei der von Menschen beurteilten Interop scheitern. Dokumentieren Sie Zuteilungsverhandlungen explizit in Ihrer Harness-Konfiguration; behandeln Sie sie als Testdaten.

Kontinuierliche Integration für Interop

Der Harness muss bei jedem Pull Request laufen. Wenn er nur nachts läuft, hat das Team bereits Wochen Drift akzeptiert, wenn CWIX beginnt.

Backen Sie den Harness in einen einzigen CI-Job: GitHub Actions, GitLab CI oder Azure DevOps Pipelines funktionieren alle. Verwenden Sie containerisierte Simulatoren, damit der Job hermetisch ist. Erfassen Sie einen deterministischen Nachrichten-Korpus — eine kuratierte Sammlung von J-Series-, NFFI-, CoT- und MIP4-Nachrichten mit bekannten erwarteten Ergebnissen — und spielen Sie ihn bei jedem Build ab. Snapshot-Regression jeder Wire-Format-Ausgabe: eine Ein-Byte-Änderung in einem Serialisierer ist genau der Bug, der einen Partner kaputtmacht.

Provenienz zählt. Jeder Harness-Lauf sollte ein signiertes Artefakt-Bundle emittieren — Konformitätsberichte, Nachrichten-Korpus-Version, Simulator-Versionen, Ihre SBOM. Verbinden Sie das mit den Lieferketten-Kontrollen, die in SBOM-Durchsetzung in Verteidigungs-Pipelines beschrieben sind.

Kernaussage: Der Harness ist kein separates Projekt. Er ist Teil der Codebasis, mit dem Code versioniert, im Besitz der Ingenieure, die die Interop-Logik schreiben. Ausgelagerte Harnesse veralten; In-House-Harnesse entwickeln sich mit jedem PR und fangen Regressionen an dem Tag, an dem sie landen.

Negativtests

Die meisten Interop-Bugs zeigen sich auf dem Unhappy Path. Der Harness muss ihn bewusst antreiben.

Fehlerhafte Nachrichten. Kürzen Sie Link-16-J-Series-Frames mitten im Feld. Korrumpieren Sie bitgepackte Aufzählungen auf reservierte Werte. Senden Sie NFFI-Payloads mit absichtlich ungültigen XSDs. Ihr Konsument sollte ablehnen, loggen und weiterlaufen — niemals abstürzen, niemals stillschweigend akzeptieren, niemals weitergeben.

Sicherheits-Overlays. Variieren Sie STANAG-4774-Vertraulichkeits-Metadaten: senden Sie eine als NATO SECRET getaggte Nachricht an einen Konsumenten, der nur für NATO RESTRICTED freigegeben ist. Der Konsument muss ablehnen und auditieren, nicht herabstufen. STANAG-4778-Bindungsverletzungen — Signatur-Mismatch auf einer metadatengebundenen Payload — müssen fail-closed ablaufen.

Klassifizierungs-Fehlbehandlung. Domänenübergreifende Fehler sind karriereentscheidend in Koalitionsoperationen. Injizieren Sie Chargen mit gemischter Klassifizierung in Ihr Gateway und prüfen Sie, dass die Regel der höchsten Klassifizierung für die gesamte Charge gilt. Injizieren Sie Nachrichten ohne Klassifizierungs-Metadaten überhaupt — Ihr Code muss ablehnen, niemals defaulten.

Zeit-Skew-Edge-Cases. Uhren driften, GPS-Zeit und UTC divergieren über Schaltsekunden, und Partnersysteme melden manchmal Zeit in Feldern, die nicht zu ihrer Wire-Spec passen. Treiben Sie Ihren Harness mit absichtlich verzerrten Zeitstempeln (positiv und negativ) und prüfen Sie, dass Ihr Code je nach Anforderung klemmt, ablehnt oder loggt — niemals stillschweigend eine Nachricht akzeptiert, die auf das nächste Jahr datiert ist.

CWIX-Vorbereitung

Sechs Wochen vorher startet der Probenzyklus. Frieren Sie den Harness-Umfang ein; keine neuen Features bis nach Brüssel. Stellen Sie ein hauseigenes „Mini-CWIX" auf — ein geschlossenes Event über zwei oder drei Tage, bei dem sich jedes Team im Unternehmen, das das System berührt, gleichzeitig einsteckt. Das Ziel ist nicht, neue Bugs zu finden; das Ziel ist, die Operations- und Reiseteams im Flow auf dem Boden zu trainieren, bevor sie einen echten Partner treffen.

Vier Wochen vorher führen Sie eine Partner-Generalprobe durch. Koordinieren Sie mit einem befreundeten Anbieter oder einer alliierten Einheit für einen eintägigen virtuellen Austausch. Schon eine einzige externe Verbindung legt Annahmen offen, die Ihr Harness eingebacken hat. Erfassen Sie jeden pcap, jedes Log; die Lehren speisen den Korpus des nächsten Jahres.

Zwei Wochen vorher fixieren Sie das Artefakt. Taggen Sie den Build. Brennen Sie das Simulator-Image-Set auf die Laptops, die nach Bydgoszcz reisen. Bereiten Sie jeden Konformitätsbericht, jede SBOM, jedes signierte Evidenz-Bundle in dem Format vor, das die JFC-Brunssum-Akkreditierungsprüfer erwarten.

Auf dem Boden ist die Disziplin: Logging. Erfassen Sie jedes Byte auf jeder Schnittstelle, klassifiziert und unklassifiziert, mit synchronisierten Uhren. Triagieren Sie in Echtzeit, aber lösen Sie nichts destruktiv — der Wert von CWIX sind nicht die Bugs, die Sie während der Übung beheben; es sind die Bugs, die Sie hinterher im Harness beheben, damit sie nie wieder auftreten. Der Lessons-Learned-Zyklus, treu ausgeführt, ist das, was den nächsten sauberen Lauf antreibt — und den danach.