# RTPS

Het Real-Time Publish-Subscribe (RTPS) protocol is ontwikkeld door Real-Time Innovations, Inc. als een protocol voor het Data Distribution Service (DDS). Het werd ontwikkeld voor industriële automatisatietoepassingen en werd door IEC aangenomen als deel van de Real-Time Industrial Ethernet Suite (IEC-PAS-62030). Dit protocol wordt momenteel wereldwijd gebruikt in industriële toepassingen.
Het protocol is speciaal ontworpen om de benodigdheden van data-distributiesystemen te ondersteunen. Hierdoor is er een grote gelijkenis tussen RTPS en het Data Distribution Service (DDS).
Het RTPS protocol is ontwikkeld om te werken via multicast netwerken, of via connectionless netwerken zoals UDP/IP.
De belangrijkste mogelijkheden van het RTPS protocol zijn:
* Performantie en eigenschappen van Quality of Service (QoS) om een zo goed mogelijke en betrouwbare publish-subscribe communicatie op te zetten voor realtime toepassingen over standaard IP netwerken;
* Fout-tolerantie om netwerken op te zetten zonder dat er fouten optreden;
* Uitbreidbaarheid om het protocol uit te kunnen breiden of te verbeteren met nieuwe services zonder dat daardoor de terugwaartse compatibiliteit verloren gaat;
* Plug-and-play connectiviteit zodat nieuwe applicaties en services automatisch gevonden worden op het netwerk en zodat applicaties verbinding kunnen maken met het netwerk en deze weer kunnen verbreken zonder dat deze opnieuw ingesteld moeten worden;
* Instelbaarheid om de balans tussen de betrouwbaarheid en de snelheid waarmee de data wordt afgeleverd in te stellen;
* Modulariteit om kleinere apparaten slechts met een deel van het protocol uit te kunnen rusten en deze toch kunnen werken binnen het netwerk;
* Schaalbaarheid om systemen ook werkend te krijgen op grote netwerken;
* Type-safety om te voorkomen dat programmeerfouten in applicaties de werking van de nodes op het netwerk in gedrang kunnen brengen.
Bovenstaande kenmerken maken dat RTPS een uitstekend protocol is om te gebruiken met een DDS wire-protocol.

## Het RTPS Platform Independent Model

Het RTPS protocol kan worden beschreven aan de hand van een Platform Independent Model (PIM).
Het RTPS PIM bevat 4 modules: Structure, Messages, Behavior en Discovery. De structure module beschrijft de verschillende mogelijke communicatie eindpunten. De message module beschrijft de verschillende mogelijke berichten die de eindpunten met elkaar kunnen uitwisselen. De behavior module beschrijft de toegestane interacties (bericht-uitwisselingen) en hoe deze de status van de eindpunten zullen beïnvloeden. De discovery module zal definiëren hoe het geheel automatisch zal worden gevonden op het netwerk, en hoe dit zal moeten worden ingesteld.

### De structure module

Alle RTPS gehelen worden geassocieerd met een RTPS domein. Dit domein stelt een communicatie 'pakket' voor dat een aantal deelnemers (Participants) bevat. Een participant bevat lokale Endpoints. Er zijn 2 soorten endpoints: Readers en Writers. Readers en Writers zijn de modules die met elkaar zullen communiceren door het versturen van RTPS berichten (messages). Writers zullen informatie doorsturen terwijl Readers deze zullen ontvangen en lezen.

### De messages module

De messages module beschrijft de inhoud van de verschillende mogelijke berichten die uitgewisseld kunnen worden tussen RTPS Writes en Readers. Deze berichten bestaan uit een header, gevolgd door een aantal submessages. Elke submessage bestaat uit een aantal submessage elements. Deze structuur is zo gekozen om de inhoud van de submessages en de samenstelling van elke submessage uit te kunnen breiden zonder de terugwaartse compatibiliteit te verliezen.

### De behavior module

De behavior module beschrijft de toegestane sequentie van berichten die uitgewisseld kunnen worden tussen RTPS Writers en Readers. Ook zal deze module de timing van deze berichten beschrijven en hoe berichten de status van de Writer en de Reader zullen beïnvloeden.
In deze module worden de minimale vereisten beschreven die noodzakelijk zijn om het systeem goed te kunnen laten functioneren. Naast deze vereisten zullen er in de praktijk vaak nog extra maatregelen genomen worden om bv de gebruikte bandbreedte en de geheugenvereisten te beperken.

### De discovery module

De discovery module beschrijft het protocol dat toelaat om Participants informatie te laten opvragen over het bestaan en de eigenschappen van alle andere Participants en Eindpoints binnen het domein. Dit laat toe dat elke participant een totaalbeeld kan vormen over alle participants, readers en writers binnen het domein.
* Wireshark, Protocols/rtps - The Wireshark Wiki
* OMG, The Real-time Publish-Subscribe Wire Protocol DDS Interoperability Wire Protocol (DDSI)